[{"data":1,"prerenderedAt":1322},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fagent\u002Faxon":3},{"id":4,"title":5,"body":6,"description":1315,"extension":1316,"meta":1317,"navigation":96,"path":1318,"seo":1319,"stem":1320,"__hash__":1321},"docs\u002Fdocs\u002Fv2\u002Fagent\u002Faxon.md","axon",{"type":7,"value":8,"toc":1301},"minimark",[9,12,23,30,33,180,186,189,306,312,318,333,426,433,439,451,562,568,571,670,676,683,763,769,776,920,926,929,987,993,996,1107,1113,1119,1126,1222,1229,1297],[10,11,5],"h1",{"id":5},[13,14,15,16,19,20,22],"p",{},"The ",[17,18,5],"code",{}," global is the agent runtime API. Available in scripts and route handlers.\nThere is no cross-agent access — ",[17,21,5],{}," is always scoped to the running agent instance.",[24,25,27],"h2",{"id":26},"axonrequest",[17,28,29],{},"axon.request",[13,31,32],{},"One-shot invocation. Sends a task to the agent loop and awaits the full result.",[34,35,40],"pre",{"className":36,"code":37,"language":38,"meta":39,"style":39},"language-ts shiki shiki-themes dark-plus","\u002F\u002F Shorthand — plain string, uses the execution thread\nconst result = await axon.request(\"hello\")\n\n\u002F\u002F With options\nconst result = await axon.request({\n    prompt,           \u002F\u002F string | AxonRenderedPrompt | (string | AxonRenderedPrompt)[]\n    thread: \"name\",   \u002F\u002F Named thread. Omit to use the execution thread.\n    policy: { ... },  \u002F\u002F Narrowing only. Cannot expand base policy.\n})\n\n\u002F\u002F result: { text: string, entries: AnyThreadEntry[], threadId: string }\n","ts","",[17,41,42,51,91,98,104,124,136,151,163,169,174],{"__ignoreMap":39},[43,44,47],"span",{"class":45,"line":46},"line",1,[43,48,50],{"class":49},"sOLPB","\u002F\u002F Shorthand — plain string, uses the execution thread\n",[43,52,54,58,62,66,70,74,77,81,84,88],{"class":45,"line":53},2,[43,55,57],{"class":56},"scz_3","const",[43,59,61],{"class":60},"s9McN"," result",[43,63,65],{"class":64},"sTNBD"," = ",[43,67,69],{"class":68},"sYbnZ","await",[43,71,73],{"class":72},"s3F5K"," axon",[43,75,76],{"class":64},".",[43,78,80],{"class":79},"sCudf","request",[43,82,83],{"class":64},"(",[43,85,87],{"class":86},"sKc5r","\"hello\"",[43,89,90],{"class":64},")\n",[43,92,94],{"class":45,"line":93},3,[43,95,97],{"emptyLinePlaceholder":96},true,"\n",[43,99,101],{"class":45,"line":100},4,[43,102,103],{"class":49},"\u002F\u002F With options\n",[43,105,107,109,111,113,115,117,119,121],{"class":45,"line":106},5,[43,108,57],{"class":56},[43,110,61],{"class":60},[43,112,65],{"class":64},[43,114,69],{"class":68},[43,116,73],{"class":72},[43,118,76],{"class":64},[43,120,80],{"class":79},[43,122,123],{"class":64},"({\n",[43,125,127,130,133],{"class":45,"line":126},6,[43,128,129],{"class":72},"    prompt",[43,131,132],{"class":64},",           ",[43,134,135],{"class":49},"\u002F\u002F string | AxonRenderedPrompt | (string | AxonRenderedPrompt)[]\n",[43,137,139,142,145,148],{"class":45,"line":138},7,[43,140,141],{"class":72},"    thread:",[43,143,144],{"class":86}," \"name\"",[43,146,147],{"class":64},",   ",[43,149,150],{"class":49},"\u002F\u002F Named thread. Omit to use the execution thread.\n",[43,152,154,157,160],{"class":45,"line":153},8,[43,155,156],{"class":72},"    policy:",[43,158,159],{"class":64}," { ... },  ",[43,161,162],{"class":49},"\u002F\u002F Narrowing only. Cannot expand base policy.\n",[43,164,166],{"class":45,"line":165},9,[43,167,168],{"class":64},"})\n",[43,170,172],{"class":45,"line":171},10,[43,173,97],{"emptyLinePlaceholder":96},[43,175,177],{"class":45,"line":176},11,[43,178,179],{"class":49},"\u002F\u002F result: { text: string, entries: AnyThreadEntry[], threadId: string }\n",[24,181,183],{"id":182},"axonstream",[17,184,185],{},"axon.stream",[13,187,188],{},"Streaming invocation. Returns an async generator that yields entries as the loop produces them.",[34,190,192],{"className":36,"code":191,"language":38,"meta":39,"style":39},"\u002F\u002F Shorthand\nconst { stream } = axon.stream(\"hello\")\n\n\u002F\u002F With options — same shape as axon.request\nconst { stream } = axon.stream({\n    prompt,\n    thread: \"name\",\n    policy: { ... },\n})\n\nfor await (const entry of stream) { ... }\n",[17,193,194,199,224,228,233,251,258,266,273,277,281],{"__ignoreMap":39},[43,195,196],{"class":45,"line":46},[43,197,198],{"class":49},"\u002F\u002F Shorthand\n",[43,200,201,203,206,209,212,214,216,218,220,222],{"class":45,"line":53},[43,202,57],{"class":56},[43,204,205],{"class":64}," { ",[43,207,208],{"class":60},"stream",[43,210,211],{"class":64}," } = ",[43,213,5],{"class":72},[43,215,76],{"class":64},[43,217,208],{"class":79},[43,219,83],{"class":64},[43,221,87],{"class":86},[43,223,90],{"class":64},[43,225,226],{"class":45,"line":93},[43,227,97],{"emptyLinePlaceholder":96},[43,229,230],{"class":45,"line":100},[43,231,232],{"class":49},"\u002F\u002F With options — same shape as axon.request\n",[43,234,235,237,239,241,243,245,247,249],{"class":45,"line":106},[43,236,57],{"class":56},[43,238,205],{"class":64},[43,240,208],{"class":60},[43,242,211],{"class":64},[43,244,5],{"class":72},[43,246,76],{"class":64},[43,248,208],{"class":79},[43,250,123],{"class":64},[43,252,253,255],{"class":45,"line":126},[43,254,129],{"class":72},[43,256,257],{"class":64},",\n",[43,259,260,262,264],{"class":45,"line":138},[43,261,141],{"class":72},[43,263,144],{"class":86},[43,265,257],{"class":64},[43,267,268,270],{"class":45,"line":153},[43,269,156],{"class":72},[43,271,272],{"class":64}," { ... },\n",[43,274,275],{"class":45,"line":165},[43,276,168],{"class":64},[43,278,279],{"class":45,"line":171},[43,280,97],{"emptyLinePlaceholder":96},[43,282,283,286,289,292,294,297,300,303],{"class":45,"line":176},[43,284,285],{"class":68},"for",[43,287,288],{"class":68}," await",[43,290,291],{"class":64}," (",[43,293,57],{"class":56},[43,295,296],{"class":60}," entry",[43,298,299],{"class":56}," of",[43,301,302],{"class":72}," stream",[43,304,305],{"class":64},") { ... }\n",[13,307,308,309,311],{},"Use ",[17,310,185],{}," when forwarding output incrementally — chat surfaces, long-running tasks,\nprogress display.",[24,313,315],{"id":314},"axonthread",[17,316,317],{},"axon.thread",[13,319,320,321,324,325,328,329,332],{},"A handle for repeated calls to the same named thread. Avoids repeating the thread name on\nevery call. ",[17,322,323],{},".request()"," and ",[17,326,327],{},".stream()"," have the same signatures as the top-level calls,\nminus the ",[17,330,331],{},"thread"," field.",[34,334,336],{"className":36,"code":335,"language":38,"meta":39,"style":39},"const research = axon.thread(\"research\")\n\nawait research.request(\"find everything about the eiffel tower\")\nawait research.request(\"now find the history of its construction\")\n\nconst { stream } = research.stream(\"summarise into 3 bullet points\")\n",[17,337,338,360,364,381,398,402],{"__ignoreMap":39},[43,339,340,342,345,347,349,351,353,355,358],{"class":45,"line":46},[43,341,57],{"class":56},[43,343,344],{"class":60}," research",[43,346,65],{"class":64},[43,348,5],{"class":72},[43,350,76],{"class":64},[43,352,331],{"class":79},[43,354,83],{"class":64},[43,356,357],{"class":86},"\"research\"",[43,359,90],{"class":64},[43,361,362],{"class":45,"line":53},[43,363,97],{"emptyLinePlaceholder":96},[43,365,366,368,370,372,374,376,379],{"class":45,"line":93},[43,367,69],{"class":68},[43,369,344],{"class":72},[43,371,76],{"class":64},[43,373,80],{"class":79},[43,375,83],{"class":64},[43,377,378],{"class":86},"\"find everything about the eiffel tower\"",[43,380,90],{"class":64},[43,382,383,385,387,389,391,393,396],{"class":45,"line":100},[43,384,69],{"class":68},[43,386,344],{"class":72},[43,388,76],{"class":64},[43,390,80],{"class":79},[43,392,83],{"class":64},[43,394,395],{"class":86},"\"now find the history of its construction\"",[43,397,90],{"class":64},[43,399,400],{"class":45,"line":106},[43,401,97],{"emptyLinePlaceholder":96},[43,403,404,406,408,410,412,415,417,419,421,424],{"class":45,"line":126},[43,405,57],{"class":56},[43,407,205],{"class":64},[43,409,208],{"class":60},[43,411,211],{"class":64},[43,413,414],{"class":72},"research",[43,416,76],{"class":64},[43,418,208],{"class":79},[43,420,83],{"class":64},[43,422,423],{"class":86},"\"summarise into 3 bullet points\"",[43,425,90],{"class":64},[13,427,428,429,76],{},"For named threads, parallel branches, and persistence across script runs, see ",[430,431,317],"a",{"href":432},"\u002Fdocs\u002Fv2\u002Fapi\u002Fthread",[24,434,436],{"id":435},"axonprompt",[17,437,438],{},"axon.prompt",[13,440,441,442,445,446,448,449,76],{},"Render an authored prompt from ",[17,443,444],{},"src\u002Fprompts\u002F"," or an installed module. Returns a rendered\nprompt object to pass to ",[17,447,29],{}," or ",[17,450,185],{},[34,452,454],{"className":36,"code":453,"language":38,"meta":39,"style":39},"const context = await axon.prompt(\"project-context\")\nconst review  = await axon.prompt(\"code-review\", { issueId: \"bd-42\" })\n\n\u002F\u002F compose multiple prompts — Axon concatenates in order\nconst { stream } = axon.stream({ prompt: [context, review] })\n",[17,455,456,481,516,520,525],{"__ignoreMap":39},[43,457,458,460,463,465,467,469,471,474,476,479],{"class":45,"line":46},[43,459,57],{"class":56},[43,461,462],{"class":60}," context",[43,464,65],{"class":64},[43,466,69],{"class":68},[43,468,73],{"class":72},[43,470,76],{"class":64},[43,472,473],{"class":79},"prompt",[43,475,83],{"class":64},[43,477,478],{"class":86},"\"project-context\"",[43,480,90],{"class":64},[43,482,483,485,488,491,493,495,497,499,501,504,507,510,513],{"class":45,"line":53},[43,484,57],{"class":56},[43,486,487],{"class":60}," review",[43,489,490],{"class":64},"  = ",[43,492,69],{"class":68},[43,494,73],{"class":72},[43,496,76],{"class":64},[43,498,473],{"class":79},[43,500,83],{"class":64},[43,502,503],{"class":86},"\"code-review\"",[43,505,506],{"class":64},", { ",[43,508,509],{"class":72},"issueId:",[43,511,512],{"class":86}," \"bd-42\"",[43,514,515],{"class":64}," })\n",[43,517,518],{"class":45,"line":93},[43,519,97],{"emptyLinePlaceholder":96},[43,521,522],{"class":45,"line":100},[43,523,524],{"class":49},"\u002F\u002F compose multiple prompts — Axon concatenates in order\n",[43,526,527,529,531,533,535,537,539,541,544,547,550,553,556,559],{"class":45,"line":106},[43,528,57],{"class":56},[43,530,205],{"class":64},[43,532,208],{"class":60},[43,534,211],{"class":64},[43,536,5],{"class":72},[43,538,76],{"class":64},[43,540,208],{"class":79},[43,542,543],{"class":64},"({ ",[43,545,546],{"class":72},"prompt:",[43,548,549],{"class":64}," [",[43,551,552],{"class":72},"context",[43,554,555],{"class":64},", ",[43,557,558],{"class":72},"review",[43,560,561],{"class":64},"] })\n",[24,563,565],{"id":564},"axonscripts",[17,566,567],{},"axon.scripts",[13,569,570],{},"Invoke another script from within a script or route.",[34,572,574],{"className":36,"code":573,"language":38,"meta":39,"style":39},"\u002F\u002F collect all entries\nconst result = await axon.scripts.request(\"close-plan\", { issueId: \"bd-yiq\" })\n\n\u002F\u002F stream entries as they arrive\nconst { stream } = axon.scripts.stream(\"scout\")\nfor await (const entry of stream) { ... }\n",[17,575,576,581,616,620,625,652],{"__ignoreMap":39},[43,577,578],{"class":45,"line":46},[43,579,580],{"class":49},"\u002F\u002F collect all entries\n",[43,582,583,585,587,589,591,593,595,598,600,602,604,607,609,611,614],{"class":45,"line":53},[43,584,57],{"class":56},[43,586,61],{"class":60},[43,588,65],{"class":64},[43,590,69],{"class":68},[43,592,73],{"class":72},[43,594,76],{"class":64},[43,596,597],{"class":72},"scripts",[43,599,76],{"class":64},[43,601,80],{"class":79},[43,603,83],{"class":64},[43,605,606],{"class":86},"\"close-plan\"",[43,608,506],{"class":64},[43,610,509],{"class":72},[43,612,613],{"class":86}," \"bd-yiq\"",[43,615,515],{"class":64},[43,617,618],{"class":45,"line":93},[43,619,97],{"emptyLinePlaceholder":96},[43,621,622],{"class":45,"line":100},[43,623,624],{"class":49},"\u002F\u002F stream entries as they arrive\n",[43,626,627,629,631,633,635,637,639,641,643,645,647,650],{"class":45,"line":106},[43,628,57],{"class":56},[43,630,205],{"class":64},[43,632,208],{"class":60},[43,634,211],{"class":64},[43,636,5],{"class":72},[43,638,76],{"class":64},[43,640,597],{"class":72},[43,642,76],{"class":64},[43,644,208],{"class":79},[43,646,83],{"class":64},[43,648,649],{"class":86},"\"scout\"",[43,651,90],{"class":64},[43,653,654,656,658,660,662,664,666,668],{"class":45,"line":126},[43,655,285],{"class":68},[43,657,288],{"class":68},[43,659,291],{"class":64},[43,661,57],{"class":56},[43,663,296],{"class":60},[43,665,299],{"class":56},[43,667,302],{"class":72},[43,669,305],{"class":64},[24,671,673],{"id":672},"axontools",[17,674,675],{},"axon.tools",[13,677,678,679,682],{},"Call installed tool functions by namespace. Typed — ",[17,680,681],{},"axon prepare"," generates declarations.",[34,684,686],{"className":36,"code":685,"language":38,"meta":39,"style":39},"const issues = await axon.tools.kanban.list()\nconst pr = await axon.tools.github.openPr(\"fix: auth\", \"...\", \"feat\u002Fauth\")\n",[17,687,688,719],{"__ignoreMap":39},[43,689,690,692,695,697,699,701,703,706,708,711,713,716],{"class":45,"line":46},[43,691,57],{"class":56},[43,693,694],{"class":60}," issues",[43,696,65],{"class":64},[43,698,69],{"class":68},[43,700,73],{"class":72},[43,702,76],{"class":64},[43,704,705],{"class":72},"tools",[43,707,76],{"class":64},[43,709,710],{"class":72},"kanban",[43,712,76],{"class":64},[43,714,715],{"class":79},"list",[43,717,718],{"class":64},"()\n",[43,720,721,723,726,728,730,732,734,736,738,741,743,746,748,751,753,756,758,761],{"class":45,"line":53},[43,722,57],{"class":56},[43,724,725],{"class":60}," pr",[43,727,65],{"class":64},[43,729,69],{"class":68},[43,731,73],{"class":72},[43,733,76],{"class":64},[43,735,705],{"class":72},[43,737,76],{"class":64},[43,739,740],{"class":72},"github",[43,742,76],{"class":64},[43,744,745],{"class":79},"openPr",[43,747,83],{"class":64},[43,749,750],{"class":86},"\"fix: auth\"",[43,752,555],{"class":64},[43,754,755],{"class":86},"\"...\"",[43,757,555],{"class":64},[43,759,760],{"class":86},"\"feat\u002Fauth\"",[43,762,90],{"class":64},[24,764,766],{"id":765},"axonproc",[17,767,768],{},"axon.proc",[13,770,771,772,775],{},"Spawn shell commands. Returns a ",[17,773,774],{},"ProcHandle"," for streaming output and checking exit status.",[34,777,779],{"className":36,"code":778,"language":38,"meta":39,"style":39},"const proc = axon.proc.spawn(\"git push --set-upstream origin HEAD\")\n\nfor await (const line of proc.watch()) {\n    process.stdout.write(line + \"\\n\")\n}\n\nif (proc.exitCode !== 0) throw new Error(\"Push failed\")\n",[17,780,781,809,813,838,871,876,880],{"__ignoreMap":39},[43,782,783,785,788,790,792,794,797,799,802,804,807],{"class":45,"line":46},[43,784,57],{"class":56},[43,786,787],{"class":60}," proc",[43,789,65],{"class":64},[43,791,5],{"class":72},[43,793,76],{"class":64},[43,795,796],{"class":72},"proc",[43,798,76],{"class":64},[43,800,801],{"class":79},"spawn",[43,803,83],{"class":64},[43,805,806],{"class":86},"\"git push --set-upstream origin HEAD\"",[43,808,90],{"class":64},[43,810,811],{"class":45,"line":53},[43,812,97],{"emptyLinePlaceholder":96},[43,814,815,817,819,821,823,826,828,830,832,835],{"class":45,"line":93},[43,816,285],{"class":68},[43,818,288],{"class":68},[43,820,291],{"class":64},[43,822,57],{"class":56},[43,824,825],{"class":60}," line",[43,827,299],{"class":56},[43,829,787],{"class":72},[43,831,76],{"class":64},[43,833,834],{"class":79},"watch",[43,836,837],{"class":64},"()) {\n",[43,839,840,843,845,848,850,853,855,857,860,863,867,869],{"class":45,"line":100},[43,841,842],{"class":72},"    process",[43,844,76],{"class":64},[43,846,847],{"class":72},"stdout",[43,849,76],{"class":64},[43,851,852],{"class":79},"write",[43,854,83],{"class":64},[43,856,45],{"class":72},[43,858,859],{"class":64}," + ",[43,861,862],{"class":86},"\"",[43,864,866],{"class":865},"svVle","\\n",[43,868,862],{"class":86},[43,870,90],{"class":64},[43,872,873],{"class":45,"line":106},[43,874,875],{"class":64},"}\n",[43,877,878],{"class":45,"line":126},[43,879,97],{"emptyLinePlaceholder":96},[43,881,882,885,887,889,891,894,897,901,904,907,910,913,915,918],{"class":45,"line":138},[43,883,884],{"class":68},"if",[43,886,291],{"class":64},[43,888,796],{"class":72},[43,890,76],{"class":64},[43,892,893],{"class":72},"exitCode",[43,895,896],{"class":64}," !== ",[43,898,900],{"class":899},"sDGX8","0",[43,902,903],{"class":64},") ",[43,905,906],{"class":68},"throw",[43,908,909],{"class":56}," new",[43,911,912],{"class":79}," Error",[43,914,83],{"class":64},[43,916,917],{"class":86},"\"Push failed\"",[43,919,90],{"class":64},[24,921,923],{"id":922},"axoncapabilities",[17,924,925],{},"axon.capabilities",[13,927,928],{},"Query what the current engine supports. Synchronous — the engine declares capabilities\nat boot.",[34,930,932],{"className":36,"code":931,"language":38,"meta":39,"style":39},"const caps = axon.capabilities()\n\u002F\u002F → { text: boolean, audio: boolean, image: boolean }\n\nif (caps.image) {\n    \u002F\u002F include image attachments in the prompt\n}\n",[17,933,934,952,957,961,978,983],{"__ignoreMap":39},[43,935,936,938,941,943,945,947,950],{"class":45,"line":46},[43,937,57],{"class":56},[43,939,940],{"class":60}," caps",[43,942,65],{"class":64},[43,944,5],{"class":72},[43,946,76],{"class":64},[43,948,949],{"class":79},"capabilities",[43,951,718],{"class":64},[43,953,954],{"class":45,"line":53},[43,955,956],{"class":49},"\u002F\u002F → { text: boolean, audio: boolean, image: boolean }\n",[43,958,959],{"class":45,"line":93},[43,960,97],{"emptyLinePlaceholder":96},[43,962,963,965,967,970,972,975],{"class":45,"line":100},[43,964,884],{"class":68},[43,966,291],{"class":64},[43,968,969],{"class":72},"caps",[43,971,76],{"class":64},[43,973,974],{"class":72},"image",[43,976,977],{"class":64},") {\n",[43,979,980],{"class":45,"line":106},[43,981,982],{"class":49},"    \u002F\u002F include image attachments in the prompt\n",[43,984,985],{"class":45,"line":126},[43,986,875],{"class":64},[24,988,990],{"id":989},"axonhooks",[17,991,992],{},"axon.hooks",[13,994,995],{},"Subscribe to lifecycle and module events. Use in server plugins.",[34,997,999],{"className":36,"code":998,"language":38,"meta":39,"style":39},"axon.hooks.hook(\"github:issue.opened\", async ({ number, title }) => {\n    const prompt = await axon.prompt(\"issue-triage\", { number, title })\n    await axon.request({ prompt, thread: \"issue-triage\" })\n})\n",[17,1000,1001,1045,1078,1103],{"__ignoreMap":39},[43,1002,1003,1005,1007,1010,1012,1015,1017,1020,1022,1025,1028,1031,1033,1036,1039,1042],{"class":45,"line":46},[43,1004,5],{"class":72},[43,1006,76],{"class":64},[43,1008,1009],{"class":72},"hooks",[43,1011,76],{"class":64},[43,1013,1014],{"class":79},"hook",[43,1016,83],{"class":64},[43,1018,1019],{"class":86},"\"github:issue.opened\"",[43,1021,555],{"class":64},[43,1023,1024],{"class":56},"async",[43,1026,1027],{"class":64}," ({ ",[43,1029,1030],{"class":72},"number",[43,1032,555],{"class":64},[43,1034,1035],{"class":72},"title",[43,1037,1038],{"class":64}," }) ",[43,1040,1041],{"class":56},"=>",[43,1043,1044],{"class":64}," {\n",[43,1046,1047,1050,1053,1055,1057,1059,1061,1063,1065,1068,1070,1072,1074,1076],{"class":45,"line":53},[43,1048,1049],{"class":56},"    const",[43,1051,1052],{"class":60}," prompt",[43,1054,65],{"class":64},[43,1056,69],{"class":68},[43,1058,73],{"class":72},[43,1060,76],{"class":64},[43,1062,473],{"class":79},[43,1064,83],{"class":64},[43,1066,1067],{"class":86},"\"issue-triage\"",[43,1069,506],{"class":64},[43,1071,1030],{"class":72},[43,1073,555],{"class":64},[43,1075,1035],{"class":72},[43,1077,515],{"class":64},[43,1079,1080,1083,1085,1087,1089,1091,1093,1095,1098,1101],{"class":45,"line":93},[43,1081,1082],{"class":68},"    await",[43,1084,73],{"class":72},[43,1086,76],{"class":64},[43,1088,80],{"class":79},[43,1090,543],{"class":64},[43,1092,473],{"class":72},[43,1094,555],{"class":64},[43,1096,1097],{"class":72},"thread:",[43,1099,1100],{"class":86}," \"issue-triage\"",[43,1102,515],{"class":64},[43,1104,1105],{"class":45,"line":100},[43,1106,168],{"class":64},[13,1108,1109,1110,76],{},"Modules emit named hooks from their routes using ",[17,1111,1112],{},"axon.hooks.callHook(event, payload)",[24,1114,1116],{"id":1115},"axonui",[17,1117,1118],{},"axon.ui",[13,1120,1121,1122,1125],{},"Request input from a connected TUI host. Returns ",[17,1123,1124],{},"{ unavailable }"," when running headlessly.",[34,1127,1129],{"className":36,"code":1128,"language":38,"meta":39,"style":39},"const response = await axon.ui.ask({\n    message: \"Which approach should I take?\",\n    options: [\"refactor\", \"rewrite\", \"leave it\"],\n})\n\nif (\"unavailable\" in response) {\n    \u002F\u002F no connected host — proceed with default or abort\n}\n",[17,1130,1131,1156,1166,1189,1193,1197,1213,1218],{"__ignoreMap":39},[43,1132,1133,1135,1138,1140,1142,1144,1146,1149,1151,1154],{"class":45,"line":46},[43,1134,57],{"class":56},[43,1136,1137],{"class":60}," response",[43,1139,65],{"class":64},[43,1141,69],{"class":68},[43,1143,73],{"class":72},[43,1145,76],{"class":64},[43,1147,1148],{"class":72},"ui",[43,1150,76],{"class":64},[43,1152,1153],{"class":79},"ask",[43,1155,123],{"class":64},[43,1157,1158,1161,1164],{"class":45,"line":53},[43,1159,1160],{"class":72},"    message:",[43,1162,1163],{"class":86}," \"Which approach should I take?\"",[43,1165,257],{"class":64},[43,1167,1168,1171,1173,1176,1178,1181,1183,1186],{"class":45,"line":93},[43,1169,1170],{"class":72},"    options:",[43,1172,549],{"class":64},[43,1174,1175],{"class":86},"\"refactor\"",[43,1177,555],{"class":64},[43,1179,1180],{"class":86},"\"rewrite\"",[43,1182,555],{"class":64},[43,1184,1185],{"class":86},"\"leave it\"",[43,1187,1188],{"class":64},"],\n",[43,1190,1191],{"class":45,"line":100},[43,1192,168],{"class":64},[43,1194,1195],{"class":45,"line":106},[43,1196,97],{"emptyLinePlaceholder":96},[43,1198,1199,1201,1203,1206,1209,1211],{"class":45,"line":126},[43,1200,884],{"class":68},[43,1202,291],{"class":64},[43,1204,1205],{"class":86},"\"unavailable\"",[43,1207,1208],{"class":56}," in",[43,1210,1137],{"class":72},[43,1212,977],{"class":64},[43,1214,1215],{"class":45,"line":138},[43,1216,1217],{"class":49},"    \u002F\u002F no connected host — proceed with default or abort\n",[43,1219,1220],{"class":45,"line":153},[43,1221,875],{"class":64},[24,1223,1225,1226,1228],{"id":1224},"where-axon-is-available","Where ",[17,1227,5],{}," is available",[1230,1231,1232,1245],"table",{},[1233,1234,1235],"thead",{},[1236,1237,1238,1242],"tr",{},[1239,1240,1241],"th",{},"Context",[1239,1243,1244],{},"Available",[1246,1247,1248,1257,1268,1278,1286],"tbody",{},[1236,1249,1250,1254],{},[1251,1252,1253],"td",{},"Script body",[1251,1255,1256],{},"✓",[1236,1258,1259,1266],{},[1251,1260,1261,1262,1265],{},"Route handler (",[17,1263,1264],{},"server\u002Fapi\u002F",")",[1251,1267,1256],{},[1236,1269,1270,1276],{},[1251,1271,1272,1273],{},"Dynamic prompt ",[17,1274,1275],{},"\u003Cscript setup>",[1251,1277,1256],{},[1236,1279,1280,1283],{},[1251,1281,1282],{},"Server plugins and middleware",[1251,1284,1285],{},"Lifecycle setup APIs only",[1236,1287,1288,1294],{},[1251,1289,1290,1293],{},[17,1291,1292],{},"src\u002Ftools\u002F"," functions",[1251,1295,1296],{},"✗ — tools run inside the capsule, not as callers of the runtime",[1298,1299,1300],"style",{},"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 .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 .svVle, html code.shiki .svVle{--shiki-default:#D7BA7D}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}",{"title":39,"searchDepth":53,"depth":53,"links":1302},[1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313],{"id":26,"depth":53,"text":29},{"id":182,"depth":53,"text":185},{"id":314,"depth":53,"text":317},{"id":435,"depth":53,"text":438},{"id":564,"depth":53,"text":567},{"id":672,"depth":53,"text":675},{"id":765,"depth":53,"text":768},{"id":922,"depth":53,"text":925},{"id":989,"depth":53,"text":992},{"id":1115,"depth":53,"text":1118},{"id":1224,"depth":53,"text":1314},"Where axon is available","The axon global is the agent runtime API. Available in scripts and route handlers.\nThere is no cross-agent access — axon is always scoped to the running agent instance.","md",{},"\u002Fdocs\u002Fv2\u002Fagent\u002Faxon",{"title":5,"description":1315},"docs\u002Fv2\u002Fagent\u002Faxon","A-i7dMDENNHSq8PxXjbG8v3tPoqPcW6xol8CZfN59UY",1785671804880]