[{"data":1,"prerenderedAt":518},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fagent\u002Fmodules":3},{"id":4,"title":5,"body":6,"description":509,"extension":510,"meta":511,"navigation":513,"path":514,"seo":515,"stem":516,"__hash__":517},"docs\u002Fdocs\u002Fv2\u002Fagent\u002Fmodules.md","modules\u002F",{"type":7,"value":8,"toc":502},"minimark",[9,13,23,175,180,205,211,215,218,302,321,412,416,419,459,473,477,480,484,490,498],[10,11,5],"h1",{"id":12},"modules",[14,15,16,19,20,22],"p",{},[17,18,5],"code",{}," contains installed capability packages. Each module contributes tools, prompts,\nscripts, and routes to the agent. Axon loads everything in ",[17,21,5],{}," automatically at\nboot — no imports, no registration.",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-bash shiki shiki-themes dark-plus","modules\u002F\n└── @axon\u002F\n    ├── github\u002F\n    │   ├── server\u002F\n    │   │   └── api\u002F\n    │   ├── src\u002F\n    │   │   ├── prompts\u002F\n    │   │   └── tools\u002F\n    │   ├── module.config.ts\n    │   └── package.json\n    └── linear\u002F\n        ├── src\u002F\n        │   └── tools\u002F\n        └── module.config.ts\n","bash","",[17,31,32,41,51,60,72,86,96,108,120,130,140,149,157,167],{"__ignoreMap":29},[33,34,37],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"sCudf","modules\u002F\n",[33,42,44,47],{"class":35,"line":43},2,[33,45,46],{"class":39},"└──",[33,48,50],{"class":49},"sKc5r"," @axon\u002F\n",[33,52,54,57],{"class":35,"line":53},3,[33,55,56],{"class":39},"    ├──",[33,58,59],{"class":49}," github\u002F\n",[33,61,63,66,69],{"class":35,"line":62},4,[33,64,65],{"class":39},"    │",[33,67,68],{"class":49},"   ├──",[33,70,71],{"class":49}," server\u002F\n",[33,73,75,77,80,83],{"class":35,"line":74},5,[33,76,65],{"class":39},[33,78,79],{"class":49},"   │",[33,81,82],{"class":49},"   └──",[33,84,85],{"class":49}," api\u002F\n",[33,87,89,91,93],{"class":35,"line":88},6,[33,90,65],{"class":39},[33,92,68],{"class":49},[33,94,95],{"class":49}," src\u002F\n",[33,97,99,101,103,105],{"class":35,"line":98},7,[33,100,65],{"class":39},[33,102,79],{"class":49},[33,104,68],{"class":49},[33,106,107],{"class":49}," prompts\u002F\n",[33,109,111,113,115,117],{"class":35,"line":110},8,[33,112,65],{"class":39},[33,114,79],{"class":49},[33,116,82],{"class":49},[33,118,119],{"class":49}," tools\u002F\n",[33,121,123,125,127],{"class":35,"line":122},9,[33,124,65],{"class":39},[33,126,68],{"class":49},[33,128,129],{"class":49}," module.config.ts\n",[33,131,133,135,137],{"class":35,"line":132},10,[33,134,65],{"class":39},[33,136,82],{"class":49},[33,138,139],{"class":49}," package.json\n",[33,141,143,146],{"class":35,"line":142},11,[33,144,145],{"class":39},"    └──",[33,147,148],{"class":49}," linear\u002F\n",[33,150,152,155],{"class":35,"line":151},12,[33,153,154],{"class":39},"        ├──",[33,156,95],{"class":49},[33,158,160,163,165],{"class":35,"line":159},13,[33,161,162],{"class":39},"        │",[33,164,82],{"class":49},[33,166,119],{"class":49},[33,168,170,173],{"class":35,"line":169},14,[33,171,172],{"class":39},"        └──",[33,174,129],{"class":49},[176,177,179],"h2",{"id":178},"installing-modules","Installing modules",[24,181,183],{"className":26,"code":182,"language":28,"meta":29,"style":29},"axon install @axon\u002Fgithub\naxon install @axon\u002Flinear\n",[17,184,185,196],{"__ignoreMap":29},[33,186,187,190,193],{"class":35,"line":36},[33,188,189],{"class":39},"axon",[33,191,192],{"class":49}," install",[33,194,195],{"class":49}," @axon\u002Fgithub\n",[33,197,198,200,202],{"class":35,"line":43},[33,199,189],{"class":39},[33,201,192],{"class":49},[33,203,204],{"class":49}," @axon\u002Flinear\n",[14,206,207,208,210],{},"Modules land in ",[17,209,5],{}," as source on disk. You can read every file, edit them, and\ncommit them to git.",[176,212,214],{"id":213},"what-modules-contribute","What modules contribute",[14,216,217],{},"Each module can add any combination of:",[219,220,221,237],"table",{},[222,223,224],"thead",{},[225,226,227,231,234],"tr",{},[228,229,230],"th",{},"Contribution",[228,232,233],{},"Where",[228,235,236],{},"How it's accessed",[238,239,240,256,271,286],"tbody",{},[225,241,242,246,251],{},[243,244,245],"td",{},"Tools",[243,247,248],{},[17,249,250],{},"src\u002Ftools\u002F",[243,252,253],{},[17,254,255],{},"axon.tools.\u003Cmodule>.*",[225,257,258,261,266],{},[243,259,260],{},"Prompts",[243,262,263],{},[17,264,265],{},"src\u002Fprompts\u002F",[243,267,268],{},[17,269,270],{},"axon.prompt(\"\u003Cmodule>:name\")",[225,272,273,276,281],{},[243,274,275],{},"Scripts",[243,277,278],{},[17,279,280],{},"src\u002Fscripts\u002F",[243,282,283],{},[17,284,285],{},"axon run \u003Cmodule>:name",[225,287,288,291,296],{},[243,289,290],{},"Routes",[243,292,293],{},[17,294,295],{},"server\u002Fapi\u002F",[243,297,298,299],{},"Mounted under ",[17,300,301],{},"\u002Fapi\u002F",[14,303,304,305,308,309,312,313,316,317,320],{},"A module's tools land in a namespace derived from the module name. ",[17,306,307],{},"@axon\u002Fgithub","\ncontributes ",[17,310,311],{},"github.*",". ",[17,314,315],{},"@axon\u002Flinear"," contributes ",[17,318,319],{},"linear.*",". They compose cleanly with\nyour own tools.",[24,322,326],{"className":323,"code":324,"language":325,"meta":29,"style":29},"language-ts shiki shiki-themes dark-plus","\u002F\u002F your tool and a module tool — same API surface\nconst pr = await axon.tools.github.getPr(42)\nconst task = await axon.tools.kanban.nextTask()\n","ts",[17,327,328,334,382],{"__ignoreMap":29},[33,329,330],{"class":35,"line":36},[33,331,333],{"class":332},"sOLPB","\u002F\u002F your tool and a module tool — same API surface\n",[33,335,336,340,344,348,352,356,359,362,364,367,369,372,375,379],{"class":35,"line":43},[33,337,339],{"class":338},"scz_3","const",[33,341,343],{"class":342},"s9McN"," pr",[33,345,347],{"class":346},"sTNBD"," = ",[33,349,351],{"class":350},"sYbnZ","await",[33,353,355],{"class":354},"s3F5K"," axon",[33,357,358],{"class":346},".",[33,360,361],{"class":354},"tools",[33,363,358],{"class":346},[33,365,366],{"class":354},"github",[33,368,358],{"class":346},[33,370,371],{"class":39},"getPr",[33,373,374],{"class":346},"(",[33,376,378],{"class":377},"sDGX8","42",[33,380,381],{"class":346},")\n",[33,383,384,386,389,391,393,395,397,399,401,404,406,409],{"class":35,"line":53},[33,385,339],{"class":338},[33,387,388],{"class":342}," task",[33,390,347],{"class":346},[33,392,351],{"class":350},[33,394,355],{"class":354},[33,396,358],{"class":346},[33,398,361],{"class":354},[33,400,358],{"class":346},[33,402,403],{"class":354},"kanban",[33,405,358],{"class":346},[33,407,408],{"class":39},"nextTask",[33,410,411],{"class":346},"()\n",[176,413,415],{"id":414},"namespacing","Namespacing",[14,417,418],{},"Module contributions are prefixed to prevent collisions:",[24,420,422],{"className":26,"code":421,"language":28,"meta":29,"style":29},"modules\u002F@axon\u002Fgithub\u002Fsrc\u002Ftools\u002Fpulls.ts  → github.*\nmodules\u002F@axon\u002Fgithub\u002Fsrc\u002Fprompts\u002Ftriage.md → \"github:triage\"\nmodules\u002F@axon\u002Fgithub\u002Fsrc\u002Fscripts\u002Fpr-review.ts → \"github:pr-review\"\n",[17,423,424,438,449],{"__ignoreMap":29},[33,425,426,429,432,435],{"class":35,"line":36},[33,427,428],{"class":39},"modules\u002F@axon\u002Fgithub\u002Fsrc\u002Ftools\u002Fpulls.ts",[33,430,431],{"class":49},"  →",[33,433,434],{"class":49}," github.",[33,436,437],{"class":338},"*\n",[33,439,440,443,446],{"class":35,"line":43},[33,441,442],{"class":39},"modules\u002F@axon\u002Fgithub\u002Fsrc\u002Fprompts\u002Ftriage.md",[33,444,445],{"class":49}," →",[33,447,448],{"class":49}," \"github:triage\"\n",[33,450,451,454,456],{"class":35,"line":53},[33,452,453],{"class":39},"modules\u002F@axon\u002Fgithub\u002Fsrc\u002Fscripts\u002Fpr-review.ts",[33,455,445],{"class":49},[33,457,458],{"class":49}," \"github:pr-review\"\n",[14,460,461,462,464,465,468,469,472],{},"Your own tools in ",[17,463,250],{}," are never prefixed — they're addressed directly. Workspace\ntools from ",[17,466,467],{},".agents\u002F"," use the ",[17,470,471],{},"workspace.*"," prefix. Module tools use the module name.",[176,474,476],{"id":475},"modules-run-under-your-policy","Modules run under your policy",[14,478,479],{},"Module tool calls go through the same capsule policy as your own tools. If your base\npolicy doesn't allow network calls to a host that a module tool needs, the call is blocked\n— exactly as if your own tool tried it. Modules contribute capabilities; they don't gain\nauthority.",[176,481,483],{"id":482},"modules-are-source","Modules are source",[14,485,486,487,489],{},"The contents of ",[17,488,5],{}," are ordinary source files. You can read them, modify them, and\nunderstand exactly what an installed module does. If a module ships a webhook route, you\ncan read that route. If it emits hooks, you can see what events it fires.",[14,491,492,493,358],{},"For authoring and publishing your own modules, see ",[494,495,497],"a",{"href":496},"\u002Fdocs\u002Fv2\u002Fmodules\u002Foverview","Modules",[499,500,501],"style",{},"html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}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 pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}",{"title":29,"searchDepth":43,"depth":43,"links":503},[504,505,506,507,508],{"id":178,"depth":43,"text":179},{"id":213,"depth":43,"text":214},{"id":414,"depth":43,"text":415},{"id":475,"depth":43,"text":476},{"id":482,"depth":43,"text":483},"modules\u002F contains installed capability packages. Each module contributes tools, prompts,\nscripts, and routes to the agent. Axon loads everything in modules\u002F automatically at\nboot — no imports, no registration.","md",{"icon":512},"vscode-icons:default-folder",true,"\u002Fdocs\u002Fv2\u002Fagent\u002Fmodules",{"title":5,"description":509},"docs\u002Fv2\u002Fagent\u002Fmodules","KTXAbFzXPvZ6PufXbipAiD9yhazsU-pvdfj7bapNhvc",1785671806074]