[{"data":1,"prerenderedAt":418},["ShallowReactive",2],{"navigation_docs":3,"-guide-internationalization":168,"-guide-internationalization-surround":413},[4,146],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,14,37,55,59,63,67,71,75,79,83,87,109,134,138,142],{"title":11,"path":12,"stem":13},"What is Agent Zero?","\u002Fguide\u002Fintroduction","1.guide\u002F1.introduction",{"title":15,"icon":16,"path":17,"stem":18,"children":19,"page":36},"API","i-lucide-plug","\u002Fguide\u002Fapi","1.guide\u002F10.api",[20,24,28,32],{"title":21,"path":22,"stem":23},"API overview","\u002Fguide\u002Fapi\u002Foverview","1.guide\u002F10.api\u002F1.overview",{"title":25,"path":26,"stem":27},"Define endpoints","\u002Fguide\u002Fapi\u002Fdefine-endpoints","1.guide\u002F10.api\u002F2.define-endpoints",{"title":29,"path":30,"stem":31},"Use the API from a client","\u002Fguide\u002Fapi\u002Fuse-from-client","1.guide\u002F10.api\u002F3.use-from-client",{"title":33,"path":34,"stem":35},"Protect endpoints","\u002Fguide\u002Fapi\u002Fprotect-endpoints","1.guide\u002F10.api\u002F4.protect-endpoints",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Authentication","i-lucide-lock","\u002Fguide\u002Fauthentication","1.guide\u002F11.authentication",[43,47,51],{"title":44,"path":45,"stem":46},"Authentication overview","\u002Fguide\u002Fauthentication\u002Foverview","1.guide\u002F11.authentication\u002F1.overview",{"title":48,"path":49,"stem":50},"GitHub OAuth","\u002Fguide\u002Fauthentication\u002Foauth","1.guide\u002F11.authentication\u002F2.oauth",{"title":52,"path":53,"stem":54},"Permissions","\u002Fguide\u002Fauthentication\u002Fpermissions","1.guide\u002F11.authentication\u002F3.permissions",{"title":56,"path":57,"stem":58},"Organizations","\u002Fguide\u002Forganizations","1.guide\u002F12.organizations",{"title":60,"path":61,"stem":62},"Frontend","\u002Fguide\u002Ffrontend","1.guide\u002F13.frontend",{"title":64,"path":65,"stem":66},"Mails","\u002Fguide\u002Fmails","1.guide\u002F14.mails",{"title":68,"path":69,"stem":70},"Internationalization","\u002Fguide\u002Finternationalization","1.guide\u002F15.internationalization",{"title":72,"path":73,"stem":74},"Deployment","\u002Fguide\u002Fdeployment","1.guide\u002F16.deployment",{"title":76,"path":77,"stem":78},"Tech stack","\u002Fguide\u002Ftech-stack","1.guide\u002F2.tech-stack",{"title":80,"path":81,"stem":82},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F3.installation",{"title":84,"path":85,"stem":86},"Environment variables","\u002Fguide\u002Fenvironment-variables","1.guide\u002F4.environment-variables",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":36},"Codebase","i-lucide-folder-tree","\u002Fguide\u002Fcodebase","1.guide\u002F5.codebase",[93,97,101,105],{"title":94,"path":95,"stem":96},"Codebase structure","\u002Fguide\u002Fcodebase\u002Fstructure","1.guide\u002F5.codebase\u002F1.structure",{"title":98,"path":99,"stem":100},"Dependencies","\u002Fguide\u002Fcodebase\u002Fdependencies","1.guide\u002F5.codebase\u002F2.dependencies",{"title":102,"path":103,"stem":104},"Formatting and linting","\u002Fguide\u002Fcodebase\u002Fformatting-linting","1.guide\u002F5.codebase\u002F3.formatting-linting",{"title":106,"path":107,"stem":108},"Agent Skills","\u002Fguide\u002Fcodebase\u002Fagent-skills","1.guide\u002F5.codebase\u002F4.agent-skills",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":36},"Architecture","i-lucide-layers","\u002Fguide\u002Farchitecture","1.guide\u002F6.architecture",[115,118,122,126,130],{"title":110,"path":116,"stem":117},"\u002Fguide\u002Farchitecture\u002Foverview","1.guide\u002F6.architecture\u002F1.overview",{"title":119,"path":120,"stem":121},"State machine","\u002Fguide\u002Farchitecture\u002Fstate-machine","1.guide\u002F6.architecture\u002F2.state-machine",{"title":123,"path":124,"stem":125},"Execution boundary","\u002Fguide\u002Farchitecture\u002Fexecution-boundary","1.guide\u002F6.architecture\u002F3.execution-boundary",{"title":127,"path":128,"stem":129},"Issue-to-PR workflow","\u002Fguide\u002Farchitecture\u002Fissue-to-pr","1.guide\u002F6.architecture\u002F4.issue-to-pr",{"title":131,"path":132,"stem":133},"Adding a capability","\u002Fguide\u002Farchitecture\u002Fadding-a-capability","1.guide\u002F6.architecture\u002F5.adding-a-capability",{"title":135,"path":136,"stem":137},"Repository policy","\u002Fguide\u002Fconfiguration","1.guide\u002F7.configuration",{"title":139,"path":140,"stem":141},"Safety model","\u002Fguide\u002Fsafety","1.guide\u002F8.safety",{"title":143,"path":144,"stem":145},"Database","\u002Fguide\u002Fdatabase","1.guide\u002F9.database",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":36},"Reference","i-lucide-book-marked","\u002Freference","2.reference",[152,156,160,164],{"title":153,"path":154,"stem":155},"CLI","\u002Freference\u002Fcli","2.reference\u002F1.cli",{"title":157,"path":158,"stem":159},"Model providers","\u002Freference\u002Fmodel-providers","2.reference\u002F2.model-providers",{"title":161,"path":162,"stem":163},"Source-control providers","\u002Freference\u002Fsource-control-providers","2.reference\u002F3.source-control-providers",{"title":165,"path":166,"stem":167},"Sandbox providers","\u002Freference\u002Fsandbox-providers","2.reference\u002F4.sandbox-providers",{"id":169,"title":68,"body":170,"description":406,"extension":407,"links":408,"meta":409,"navigation":410,"path":69,"seo":411,"stem":70,"__hash__":412},"docs\u002F1.guide\u002F15.internationalization.md",{"type":171,"value":172,"toc":400},"minimark",[173,196,201,280,284,339,345,349,365,369,396],[174,175,176,177,181,182,191,192,195],"p",{},"The dashboard ships English and Italian. Locale policy lives in ",[178,179,180],"code",{},"packages\u002Fi18n","; the dashboard wires it into ",[183,184,188],"a",{"href":185,"rel":186},"https:\u002F\u002Fi18n.nuxtjs.org",[187],"nofollow",[178,189,190],{},"@nuxtjs\u002Fi18n"," with ",[178,193,194],{},"strategy: 'no_prefix'"," (the locale is a user preference, not a URL segment).",[197,198,200],"h2",{"id":199},"where-things-live","Where things live",[202,203,204,217],"table",{},[205,206,207],"thead",{},[208,209,210,214],"tr",{},[211,212,213],"th",{},"Concern",[211,215,216],{},"Location",[218,219,220,243,254,264],"tbody",{},[208,221,222,226],{},[223,224,225],"td",{},"Locale definitions",[223,227,228,231,232,235,236,235,239,242],{},[178,229,230],{},"packages\u002Fi18n\u002Fsrc"," (",[178,233,234],{},"locales",", ",[178,237,238],{},"defaultLocale",[178,240,241],{},"localeCookieName",")",[208,244,245,248],{},[223,246,247],{},"Dictionaries",[223,249,250,253],{},[178,251,252],{},"apps\u002Fdashboard\u002Fi18n\u002Flocales\u002F\u003Clocale>\u002F",", split by scope",[208,255,256,259],{},[223,257,258],{},"Translation tooling",[223,260,261],{},[178,262,263],{},"packages\u002Fi18n\u002Fscripts\u002F",[208,265,266,269],{},[223,267,268],{},"Staleness reporting",[223,270,271,276,277],{},[183,272,275],{"href":273,"rel":274},"https:\u002F\u002Flunaria.dev",[187],"Lunaria"," via ",[178,278,279],{},"lunaria.config.ts",[197,281,283],{"id":282},"commands","Commands",[285,286,291],"pre",{"className":287,"code":288,"language":289,"meta":290,"style":290},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","aube run i18n:report    # per-key translation report\naube run i18n:schema    # verify every locale matches the English schema\naube run i18n:status    # Lunaria staleness report (reads git history)\n","bash","",[178,292,293,313,326],{"__ignoreMap":290},[294,295,298,302,306,309],"span",{"class":296,"line":297},"line",1,[294,299,301],{"class":300},"sBMFI","aube",[294,303,305],{"class":304},"sfazB"," run",[294,307,308],{"class":304}," i18n:report",[294,310,312],{"class":311},"sHwdD","    # per-key translation report\n",[294,314,316,318,320,323],{"class":296,"line":315},2,[294,317,301],{"class":300},[294,319,305],{"class":304},[294,321,322],{"class":304}," i18n:schema",[294,324,325],{"class":311},"    # verify every locale matches the English schema\n",[294,327,329,331,333,336],{"class":296,"line":328},3,[294,330,301],{"class":300},[294,332,305],{"class":304},[294,334,335],{"class":304}," i18n:status",[294,337,338],{"class":311},"    # Lunaria staleness report (reads git history)\n",[174,340,341,344],{},[178,342,343],{},"i18n:status"," shows which translations went stale relative to the English source; it reads git history, so it needs the dictionaries committed. CI runs the schema check, so a key added to English without its translations fails the build.",[197,346,348],{"id":347},"adding-or-changing-messages","Adding or changing messages",[350,351,352,356,359],"ol",{},[353,354,355],"li",{},"Add the key to the English dictionary in the right scope file.",[353,357,358],{},"Add the same key to every other locale (Italian today) — the schema check enforces parity.",[353,360,361,362,364],{},"Use the key from components via the standard ",[178,363,190],{}," composables.",[197,366,368],{"id":367},"adding-a-locale","Adding a locale",[350,370,371,382,389],{},[353,372,373,374,231,376,235,378,381],{},"Declare the locale in ",[178,375,180],{},[178,377,234],{},[178,379,380],{},"LocaleCode",").",[353,383,384,385,388],{},"Create ",[178,386,387],{},"apps\u002Fdashboard\u002Fi18n\u002Flocales\u002F\u003Ccode>\u002F"," with a full set of dictionaries.",[353,390,391,392,395],{},"Run ",[178,393,394],{},"aube run i18n:schema"," until parity is clean, and commit so Lunaria can track staleness.",[397,398,399],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":290,"searchDepth":315,"depth":315,"links":401},[402,403,404,405],{"id":199,"depth":315,"text":200},{"id":282,"depth":315,"text":283},{"id":347,"depth":315,"text":348},{"id":367,"depth":315,"text":368},"The dashboard ships English and Italian. Locale policy lives in packages\u002Fi18n; the dashboard wires it into @nuxtjs\u002Fi18n with strategy: 'no_prefix' (the locale is a user preference, not a URL segment).","md",null,{},true,{"title":68,"description":406},"YGdAjQik_AKwndc_st5HqKTvrdz_2vLFntq56btz62I",[414,416],{"title":64,"path":65,"stem":66,"description":415,"children":-1},"packages\u002Fmail owns transactional email: Maizzle-based templates plus a small provider layer. The dashboard uses it for organization invitations and other auth-driven messages.",{"title":72,"path":73,"stem":74,"description":417,"children":-1},"The dashboard is the single deployable artifact: one Nuxt app serving the UI, the control plane, and authentication from one origin.",1787482152659]