[{"data":1,"prerenderedAt":391},["ShallowReactive",2],{"navigation_docs":3,"-about-conventions":124,"-about-conventions-surround":386},[4,28],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"About","\u002Fabout","1.about\u002F1.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Overview",{"title":12,"path":13,"stem":14},"The shape","\u002Fabout\u002Fshape","1.about\u002F2.shape",{"title":16,"path":17,"stem":18},"Surfaces","\u002Fabout\u002Fsurfaces","1.about\u002F3.surfaces",{"title":20,"path":21,"stem":22},"Conventions","\u002Fabout\u002Fconventions","1.about\u002F4.conventions",{"title":24,"path":25,"stem":26},"Security","\u002Fabout\u002Fsecurity","1.about\u002F5.security","i-lucide-book-open",{"title":29,"path":30,"stem":31,"children":32,"icon":123},"Libraries","\u002Flibraries","2.libraries\u002F0.index",[33,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119],{"title":34,"path":30,"stem":31},"All libraries",{"title":36,"path":37,"stem":38},"web","\u002Flibraries\u002Fweb","2.libraries\u002F01.web",{"title":40,"path":41,"stem":42},"archives","\u002Flibraries\u002Farchives","2.libraries\u002F02.archives",{"title":44,"path":45,"stem":46},"registries","\u002Flibraries\u002Fregistries","2.libraries\u002F03.registries",{"title":48,"path":49,"stem":50},"forges","\u002Flibraries\u002Fforges","2.libraries\u002F04.forges",{"title":52,"path":53,"stem":54},"keys","\u002Flibraries\u002Fkeys","2.libraries\u002F05.keys",{"title":56,"path":57,"stem":58},"harnesses","\u002Flibraries\u002Fharnesses","2.libraries\u002F06.harnesses",{"title":60,"path":61,"stem":62},"explorers","\u002Flibraries\u002Fexplorers","2.libraries\u002F07.explorers",{"title":64,"path":65,"stem":66},"chains","\u002Flibraries\u002Fchains","2.libraries\u002F08.chains",{"title":68,"path":69,"stem":70},"ciphers","\u002Flibraries\u002Fciphers","2.libraries\u002F09.ciphers",{"title":72,"path":73,"stem":74},"puzzles","\u002Flibraries\u002Fpuzzles","2.libraries\u002F10.puzzles",{"title":76,"path":77,"stem":78},"browsers","\u002Flibraries\u002Fbrowsers","2.libraries\u002F11.browsers",{"title":80,"path":81,"stem":82},"sessions","\u002Flibraries\u002Fsessions","2.libraries\u002F12.sessions",{"title":84,"path":85,"stem":86},"memory","\u002Flibraries\u002Fmemory","2.libraries\u002F13.memory",{"title":88,"path":89,"stem":90},"urls","\u002Flibraries\u002Furls","2.libraries\u002F14.urls",{"title":92,"path":93,"stem":94},"nodes","\u002Flibraries\u002Fnodes","2.libraries\u002F15.nodes",{"title":96,"path":97,"stem":98},"nfts","\u002Flibraries\u002Fnfts","2.libraries\u002F16.nfts",{"title":100,"path":101,"stem":102},"storages","\u002Flibraries\u002Fstorages","2.libraries\u002F17.storages",{"title":104,"path":105,"stem":106},"maps","\u002Flibraries\u002Fmaps","2.libraries\u002F18.maps",{"title":108,"path":109,"stem":110},"lyrics","\u002Flibraries\u002Flyrics","2.libraries\u002F19.lyrics",{"title":112,"path":113,"stem":114},"books","\u002Flibraries\u002Fbooks","2.libraries\u002F20.books",{"title":116,"path":117,"stem":118},"wiki","\u002Flibraries\u002Fwiki","2.libraries\u002F21.wiki",{"title":120,"path":121,"stem":122},"ox","\u002Flibraries\u002Fox","2.libraries\u002F22.ox","i-lucide-library",{"id":125,"title":20,"body":126,"description":379,"extension":380,"links":381,"meta":382,"navigation":383,"path":21,"seo":384,"stem":22,"__hash__":385},"docs\u002F1.about\u002F4.conventions.md",{"type":127,"value":128,"toc":373},"minimark",[129,133,138,242,246,326,330,338,342,369],[130,131,132],"p",{},"Every repo starts from the same template and keeps the same layout. Moving from one library to the next costs nothing, that's the whole point.",[134,135,137],"h2",{"id":136},"stack","Stack",[139,140,141,154],"table",{},[142,143,144],"thead",{},[145,146,147,151],"tr",{},[148,149,150],"th",{},"Concern",[148,152,153],{},"Choice",[155,156,157,171,183,198,206,214,226,234],"tbody",{},[145,158,159,163],{},[160,161,162],"td",{},"Runtime",[160,164,165,166,170],{},"Node.js 26 for development and release. Each package declares its floor in ",[167,168,169],"code",{},"engines",", right now 22 or 24 and up",[145,172,173,176],{},[160,174,175],{},"Language",[160,177,178,179,182],{},"TypeScript, strict. Newer packages typecheck with native ",[167,180,181],{},"tsc"," 7, the rest are still moving from 5.8 and 6",[145,184,185,188],{},[160,186,187],{},"Modules",[160,189,190,191,194,195],{},"ESM only, exports use ",[167,192,193],{},".mjs"," and ",[167,196,197],{},".d.mts",[145,199,200,203],{},[160,201,202],{},"Build",[160,204,205],{},"obuild",[145,207,208,211],{},[160,209,210],{},"Tests",[160,212,213],{},"vitest",[145,215,216,219],{},[160,217,218],{},"Lint and format",[160,220,221,222,225],{},"oxlint and oxfmt through the shared ",[167,223,224],{},"@agntn\u002Fox"," policy",[145,227,228,231],{},[160,229,230],{},"Release",[160,232,233],{},"changelogen, published from GitHub Actions with npm trusted publishing",[145,235,236,239],{},[160,237,238],{},"Package manager",[160,240,241],{},"pnpm",[134,243,245],{"id":244},"scripts","Scripts",[247,248,253],"pre",{"className":249,"code":250,"language":251,"meta":252,"style":252},"language-bash shiki shiki-themes github-light github-light poimandres","pnpm build        # production build\npnpm test         # run tests once\npnpm lint         # lint and format check\npnpm fmt          # fix lint and format\npnpm typecheck    # type checking\npnpm release      # test, build and release\n","bash","",[167,254,255,271,282,293,304,315],{"__ignoreMap":252},[256,257,260,263,267],"span",{"class":258,"line":259},"line",1,[256,261,241],{"class":262},"sseY5",[256,264,266],{"class":265},"sX7Zv"," build",[256,268,270],{"class":269},"sjhu3","        # production build\n",[256,272,274,276,279],{"class":258,"line":273},2,[256,275,241],{"class":262},[256,277,278],{"class":265}," test",[256,280,281],{"class":269},"         # run tests once\n",[256,283,285,287,290],{"class":258,"line":284},3,[256,286,241],{"class":262},[256,288,289],{"class":265}," lint",[256,291,292],{"class":269},"         # lint and format check\n",[256,294,296,298,301],{"class":258,"line":295},4,[256,297,241],{"class":262},[256,299,300],{"class":265}," fmt",[256,302,303],{"class":269},"          # fix lint and format\n",[256,305,307,309,312],{"class":258,"line":306},5,[256,308,241],{"class":262},[256,310,311],{"class":265}," typecheck",[256,313,314],{"class":269},"    # type checking\n",[256,316,318,320,323],{"class":258,"line":317},6,[256,319,241],{"class":262},[256,321,322],{"class":265}," release",[256,324,325],{"class":269},"      # test, build and release\n",[134,327,329],{"id":328},"layout","Layout",[247,331,336],{"className":332,"code":334,"language":335},[333],"language-text","src\u002F                     source code\ntest\u002F                    tests\npackages\u002Fpi\u002Fextensions\u002F  Pi extension sources shipped with the package\npackages\u002Fomp\u002Fextensions\u002F OMP extension sources shipped with the package\ndocs\u002F                    Docus site, when the library has one\ndist\u002F                    build output\n","text",[167,337,334],{"__ignoreMap":252},[134,339,341],{"id":340},"rules","Rules",[343,344,345,360,363,366],"ul",{},[346,347,348,349,352,353,352,356,359],"li",{},"No ",[167,350,351],{},"as any",", no ",[167,354,355],{},"@ts-ignore",[167,357,358],{},"@ts-expect-error",".",[346,361,362],{},"Provider names, hosts, env vars and capabilities live once, in the adapter. Every list is derived from the registry, never typed out a second time.",[346,364,365],{},"Everything is before 1.0. Pin exact versions and read the changelog before upgrading.",[346,367,368],{},"Docs sites are Docus on Nuxt, deployed to Cloudflare Workers, same typography and layout as this page. Each library gets its own accent colour.",[370,371,372],"style",{},"html pre.shiki code .sseY5, html code.shiki .sseY5{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#91B4D5}html pre.shiki code .sX7Zv, html code.shiki .sX7Zv{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#ADD7FF}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--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":252,"searchDepth":273,"depth":273,"links":374},[375,376,377,378],{"id":136,"depth":273,"text":137},{"id":244,"depth":273,"text":245},{"id":328,"depth":273,"text":329},{"id":340,"depth":273,"text":341},"The stack, scripts and release flow every agntn repo shares.","md",null,{},true,{"title":20,"description":379},"K1O6ZKJF__SFxelyzos2rSpKiA9SoP29yYIOqOwbeZo",[387,389],{"title":16,"path":17,"stem":18,"description":388,"children":-1},"Library, CLI, AI SDK tool, MCP server, Pi extension and OMP extension, all calling the same executors.",{"title":24,"path":25,"stem":26,"description":390,"children":-1},"Provider output is data, credentials stay in the environment, and nothing a provider returns is treated as an instruction.",1789773068618]