[{"data":1,"prerenderedAt":1076},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fapi":3},{"id":4,"title":5,"body":6,"description":1069,"extension":1070,"meta":1071,"navigation":145,"path":1072,"seo":1073,"stem":1074,"__hash__":1075},"docs\u002Fdocs\u002Fv2\u002Fapi\u002Findex.md","axon",{"type":7,"value":8,"toc":1066},"minimark",[9,12,20,769,774,778,784,1021,1045,1062],[10,11,5],"h1",{"id":5},[13,14,15,16,19],"p",{},"The ",[17,18,5],"code",{}," global is available in every script and tool. It is the runtime interface\nbetween your code and the agent loop — send tasks, load prompts, invoke scripts, call\ntools, request input from the TUI.",[21,22,27],"pre",{"className":23,"code":24,"language":25,"meta":26,"style":26},"language-ts shiki shiki-themes dark-plus","interface AxonHandle {\n    \u002F\u002F Send a prompt and await the full result\n    request(prompt: AxonPromptInput): Promise\u003CAxonResult>\n    request(opts: { prompt: AxonPromptInput; thread?: string; policy?: PolicyPatch }): Promise\u003CAxonResult>\n\n    \u002F\u002F Send a prompt and stream entries as they arrive\n    stream(prompt: AxonPromptInput): { stream: AsyncGenerator\u003CAnyThreadEntry> }\n    stream(opts: { prompt: AxonPromptInput; thread?: string; policy?: PolicyPatch }): { stream: AsyncGenerator\u003CAnyThreadEntry> }\n\n    \u002F\u002F Scoped handle for a named thread\n    thread(name: string): ThreadHandle\n\n    \u002F\u002F Load and render a prompt file\n    prompt(name: string, vars?: Record\u003Cstring, unknown>): Promise\u003CAxonRenderedPrompt>\n\n    \u002F\u002F Invoke another script\n    scripts: {\n        request(name: string, args?: Record\u003Cstring, unknown>): Promise\u003CAxonResult>\n        stream(name: string, args?: Record\u003Cstring, unknown>): { stream: AsyncGenerator\u003CAnyThreadEntry> }\n    }\n\n    \u002F\u002F Call installed tool functions by namespace\n    tools: Record\u003Cstring, Record\u003Cstring, (...args: unknown[]) => Promise\u003Cunknown>>>\n\n    \u002F\u002F Request input from a connected TUI host\n    ui: {\n        ask(opts: { message: string; options: string[]; timeout?: number }): Promise\u003C\n            | { selected: string }\n            | { timeout: true }\n            | { unavailable: true }\n        >\n    }\n\n    \u002F\u002F Subscribe to lifecycle events\n    hooks: {\n        on(event: string, handler: (payload: unknown) => void): () => void\n        callHook(event: string, payload?: unknown): Promise\u003Cvoid>\n    }\n\n    \u002F\u002F Query engine capabilities\n    capabilities(): { text: boolean; audio: boolean; image: boolean }\n}\n","ts","",[17,28,29,46,53,88,140,147,153,186,234,239,245,265,270,276,322,327,333,342,383,428,434,439,445,492,497,503,511,557,573,587,601,607,612,617,623,631,677,710,715,720,726,763],{"__ignoreMap":26},[30,31,34,38,42],"span",{"class":32,"line":33},"line",1,[30,35,37],{"class":36},"scz_3","interface",[30,39,41],{"class":40},"sNl3T"," AxonHandle",[30,43,45],{"class":44},"sTNBD"," {\n",[30,47,49],{"class":32,"line":48},2,[30,50,52],{"class":51},"sOLPB","    \u002F\u002F Send a prompt and await the full result\n",[30,54,56,60,63,67,70,73,76,79,82,85],{"class":32,"line":55},3,[30,57,59],{"class":58},"sCudf","    request",[30,61,62],{"class":44},"(",[30,64,66],{"class":65},"s3F5K","prompt",[30,68,69],{"class":44},": ",[30,71,72],{"class":40},"AxonPromptInput",[30,74,75],{"class":44},"): ",[30,77,78],{"class":40},"Promise",[30,80,81],{"class":44},"\u003C",[30,83,84],{"class":40},"AxonResult",[30,86,87],{"class":44},">\n",[30,89,91,93,95,98,101,103,105,107,110,113,116,119,121,124,126,129,132,134,136,138],{"class":32,"line":90},4,[30,92,59],{"class":58},[30,94,62],{"class":44},[30,96,97],{"class":65},"opts",[30,99,100],{"class":44},": { ",[30,102,66],{"class":65},[30,104,69],{"class":44},[30,106,72],{"class":40},[30,108,109],{"class":44},"; ",[30,111,112],{"class":65},"thread",[30,114,115],{"class":44},"?: ",[30,117,118],{"class":40},"string",[30,120,109],{"class":44},[30,122,123],{"class":65},"policy",[30,125,115],{"class":44},[30,127,128],{"class":40},"PolicyPatch",[30,130,131],{"class":44}," }): ",[30,133,78],{"class":40},[30,135,81],{"class":44},[30,137,84],{"class":40},[30,139,87],{"class":44},[30,141,143],{"class":32,"line":142},5,[30,144,146],{"emptyLinePlaceholder":145},true,"\n",[30,148,150],{"class":32,"line":149},6,[30,151,152],{"class":51},"    \u002F\u002F Send a prompt and stream entries as they arrive\n",[30,154,156,159,161,163,165,167,170,173,175,178,180,183],{"class":32,"line":155},7,[30,157,158],{"class":58},"    stream",[30,160,62],{"class":44},[30,162,66],{"class":65},[30,164,69],{"class":44},[30,166,72],{"class":40},[30,168,169],{"class":44},"): { ",[30,171,172],{"class":65},"stream",[30,174,69],{"class":44},[30,176,177],{"class":40},"AsyncGenerator",[30,179,81],{"class":44},[30,181,182],{"class":40},"AnyThreadEntry",[30,184,185],{"class":44},"> }\n",[30,187,189,191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,222,224,226,228,230,232],{"class":32,"line":188},8,[30,190,158],{"class":58},[30,192,62],{"class":44},[30,194,97],{"class":65},[30,196,100],{"class":44},[30,198,66],{"class":65},[30,200,69],{"class":44},[30,202,72],{"class":40},[30,204,109],{"class":44},[30,206,112],{"class":65},[30,208,115],{"class":44},[30,210,118],{"class":40},[30,212,109],{"class":44},[30,214,123],{"class":65},[30,216,115],{"class":44},[30,218,128],{"class":40},[30,220,221],{"class":44}," }): { ",[30,223,172],{"class":65},[30,225,69],{"class":44},[30,227,177],{"class":40},[30,229,81],{"class":44},[30,231,182],{"class":40},[30,233,185],{"class":44},[30,235,237],{"class":32,"line":236},9,[30,238,146],{"emptyLinePlaceholder":145},[30,240,242],{"class":32,"line":241},10,[30,243,244],{"class":51},"    \u002F\u002F Scoped handle for a named thread\n",[30,246,248,251,253,256,258,260,262],{"class":32,"line":247},11,[30,249,250],{"class":58},"    thread",[30,252,62],{"class":44},[30,254,255],{"class":65},"name",[30,257,69],{"class":44},[30,259,118],{"class":40},[30,261,75],{"class":44},[30,263,264],{"class":40},"ThreadHandle\n",[30,266,268],{"class":32,"line":267},12,[30,269,146],{"emptyLinePlaceholder":145},[30,271,273],{"class":32,"line":272},13,[30,274,275],{"class":51},"    \u002F\u002F Load and render a prompt file\n",[30,277,279,282,284,286,288,290,293,296,298,301,303,305,307,310,313,315,317,320],{"class":32,"line":278},14,[30,280,281],{"class":58},"    prompt",[30,283,62],{"class":44},[30,285,255],{"class":65},[30,287,69],{"class":44},[30,289,118],{"class":40},[30,291,292],{"class":44},", ",[30,294,295],{"class":65},"vars",[30,297,115],{"class":44},[30,299,300],{"class":40},"Record",[30,302,81],{"class":44},[30,304,118],{"class":40},[30,306,292],{"class":44},[30,308,309],{"class":40},"unknown",[30,311,312],{"class":44},">): ",[30,314,78],{"class":40},[30,316,81],{"class":44},[30,318,319],{"class":40},"AxonRenderedPrompt",[30,321,87],{"class":44},[30,323,325],{"class":32,"line":324},15,[30,326,146],{"emptyLinePlaceholder":145},[30,328,330],{"class":32,"line":329},16,[30,331,332],{"class":51},"    \u002F\u002F Invoke another script\n",[30,334,336,339],{"class":32,"line":335},17,[30,337,338],{"class":65},"    scripts",[30,340,341],{"class":44},": {\n",[30,343,345,348,350,352,354,356,358,361,363,365,367,369,371,373,375,377,379,381],{"class":32,"line":344},18,[30,346,347],{"class":58},"        request",[30,349,62],{"class":44},[30,351,255],{"class":65},[30,353,69],{"class":44},[30,355,118],{"class":40},[30,357,292],{"class":44},[30,359,360],{"class":65},"args",[30,362,115],{"class":44},[30,364,300],{"class":40},[30,366,81],{"class":44},[30,368,118],{"class":40},[30,370,292],{"class":44},[30,372,309],{"class":40},[30,374,312],{"class":44},[30,376,78],{"class":40},[30,378,81],{"class":44},[30,380,84],{"class":40},[30,382,87],{"class":44},[30,384,386,389,391,393,395,397,399,401,403,405,407,409,411,413,416,418,420,422,424,426],{"class":32,"line":385},19,[30,387,388],{"class":58},"        stream",[30,390,62],{"class":44},[30,392,255],{"class":65},[30,394,69],{"class":44},[30,396,118],{"class":40},[30,398,292],{"class":44},[30,400,360],{"class":65},[30,402,115],{"class":44},[30,404,300],{"class":40},[30,406,81],{"class":44},[30,408,118],{"class":40},[30,410,292],{"class":44},[30,412,309],{"class":40},[30,414,415],{"class":44},">): { ",[30,417,172],{"class":65},[30,419,69],{"class":44},[30,421,177],{"class":40},[30,423,81],{"class":44},[30,425,182],{"class":40},[30,427,185],{"class":44},[30,429,431],{"class":32,"line":430},20,[30,432,433],{"class":44},"    }\n",[30,435,437],{"class":32,"line":436},21,[30,438,146],{"emptyLinePlaceholder":145},[30,440,442],{"class":32,"line":441},22,[30,443,444],{"class":51},"    \u002F\u002F Call installed tool functions by namespace\n",[30,446,448,451,453,455,457,459,461,463,465,467,470,472,474,476,479,482,485,487,489],{"class":32,"line":447},23,[30,449,450],{"class":65},"    tools",[30,452,69],{"class":44},[30,454,300],{"class":40},[30,456,81],{"class":44},[30,458,118],{"class":40},[30,460,292],{"class":44},[30,462,300],{"class":40},[30,464,81],{"class":44},[30,466,118],{"class":40},[30,468,469],{"class":44},", (...",[30,471,360],{"class":65},[30,473,69],{"class":44},[30,475,309],{"class":40},[30,477,478],{"class":44},"[]) ",[30,480,481],{"class":36},"=>",[30,483,484],{"class":40}," Promise",[30,486,81],{"class":44},[30,488,309],{"class":40},[30,490,491],{"class":44},">>>\n",[30,493,495],{"class":32,"line":494},24,[30,496,146],{"emptyLinePlaceholder":145},[30,498,500],{"class":32,"line":499},25,[30,501,502],{"class":51},"    \u002F\u002F Request input from a connected TUI host\n",[30,504,506,509],{"class":32,"line":505},26,[30,507,508],{"class":65},"    ui",[30,510,341],{"class":44},[30,512,514,517,519,521,523,526,528,530,532,535,537,539,542,545,547,550,552,554],{"class":32,"line":513},27,[30,515,516],{"class":58},"        ask",[30,518,62],{"class":44},[30,520,97],{"class":65},[30,522,100],{"class":44},[30,524,525],{"class":65},"message",[30,527,69],{"class":44},[30,529,118],{"class":40},[30,531,109],{"class":44},[30,533,534],{"class":65},"options",[30,536,69],{"class":44},[30,538,118],{"class":40},[30,540,541],{"class":44},"[]; ",[30,543,544],{"class":65},"timeout",[30,546,115],{"class":44},[30,548,549],{"class":40},"number",[30,551,131],{"class":44},[30,553,78],{"class":40},[30,555,556],{"class":44},"\u003C\n",[30,558,560,563,566,568,570],{"class":32,"line":559},28,[30,561,562],{"class":44},"            | { ",[30,564,565],{"class":65},"selected",[30,567,69],{"class":44},[30,569,118],{"class":40},[30,571,572],{"class":44}," }\n",[30,574,576,578,580,582,585],{"class":32,"line":575},29,[30,577,562],{"class":44},[30,579,544],{"class":65},[30,581,69],{"class":44},[30,583,584],{"class":40},"true",[30,586,572],{"class":44},[30,588,590,592,595,597,599],{"class":32,"line":589},30,[30,591,562],{"class":44},[30,593,594],{"class":65},"unavailable",[30,596,69],{"class":44},[30,598,584],{"class":40},[30,600,572],{"class":44},[30,602,604],{"class":32,"line":603},31,[30,605,606],{"class":44},"        >\n",[30,608,610],{"class":32,"line":609},32,[30,611,433],{"class":44},[30,613,615],{"class":32,"line":614},33,[30,616,146],{"emptyLinePlaceholder":145},[30,618,620],{"class":32,"line":619},34,[30,621,622],{"class":51},"    \u002F\u002F Subscribe to lifecycle events\n",[30,624,626,629],{"class":32,"line":625},35,[30,627,628],{"class":65},"    hooks",[30,630,341],{"class":44},[30,632,634,637,639,642,644,646,648,651,654,657,659,661,664,666,669,672,674],{"class":32,"line":633},36,[30,635,636],{"class":58},"        on",[30,638,62],{"class":44},[30,640,641],{"class":65},"event",[30,643,69],{"class":44},[30,645,118],{"class":40},[30,647,292],{"class":44},[30,649,650],{"class":58},"handler",[30,652,653],{"class":44},": (",[30,655,656],{"class":65},"payload",[30,658,69],{"class":44},[30,660,309],{"class":40},[30,662,663],{"class":44},") ",[30,665,481],{"class":36},[30,667,668],{"class":40}," void",[30,670,671],{"class":44},"): () ",[30,673,481],{"class":36},[30,675,676],{"class":40}," void\n",[30,678,680,683,685,687,689,691,693,695,697,699,701,703,705,708],{"class":32,"line":679},37,[30,681,682],{"class":58},"        callHook",[30,684,62],{"class":44},[30,686,641],{"class":65},[30,688,69],{"class":44},[30,690,118],{"class":40},[30,692,292],{"class":44},[30,694,656],{"class":65},[30,696,115],{"class":44},[30,698,309],{"class":40},[30,700,75],{"class":44},[30,702,78],{"class":40},[30,704,81],{"class":44},[30,706,707],{"class":40},"void",[30,709,87],{"class":44},[30,711,713],{"class":32,"line":712},38,[30,714,433],{"class":44},[30,716,718],{"class":32,"line":717},39,[30,719,146],{"emptyLinePlaceholder":145},[30,721,723],{"class":32,"line":722},40,[30,724,725],{"class":51},"    \u002F\u002F Query engine capabilities\n",[30,727,729,732,735,738,740,743,745,748,750,752,754,757,759,761],{"class":32,"line":728},41,[30,730,731],{"class":58},"    capabilities",[30,733,734],{"class":44},"(): { ",[30,736,737],{"class":65},"text",[30,739,69],{"class":44},[30,741,742],{"class":40},"boolean",[30,744,109],{"class":44},[30,746,747],{"class":65},"audio",[30,749,69],{"class":44},[30,751,742],{"class":40},[30,753,109],{"class":44},[30,755,756],{"class":65},"image",[30,758,69],{"class":44},[30,760,742],{"class":40},[30,762,572],{"class":44},[30,764,766],{"class":32,"line":765},42,[30,767,768],{"class":44},"}\n",[13,770,771,773],{},[17,772,5],{}," is always scoped to the running agent instance. There is no cross-agent access.",[775,776,777],"h2",{"id":777},"process",[13,779,780,781,783],{},"Scripts also have direct access to the extended ",[17,782,777],{}," global:",[21,785,787],{"className":23,"code":786,"language":25,"meta":26,"style":26},"interface AgentProcess extends NodeJS.Process {\n    \u002F\u002F Blocking — run a command and await the full result. Never throws.\n    run(\n        command: string,\n        opts?: { cwd?: string; env?: Record\u003Cstring, string>; input?: string }\n    ): Promise\u003C{ ok: boolean; exitCode: number; stdout: string; stderr: string; err?: string }>\n\n    \u002F\u002F Detached — returns a LiveProcHandle immediately\n    spawn(\n        command: string,\n        opts?: { cwd?: string; env?: Record\u003Cstring, string> }\n    ): LiveProcHandle\n\n    \u002F\u002F Blocked — the capsule manages its own lifecycle\n    exit: never\n}\n",[17,788,789,810,815,823,835,879,935,939,944,951,961,991,998,1002,1007,1017],{"__ignoreMap":26},[30,790,791,793,796,799,802,805,808],{"class":32,"line":33},[30,792,37],{"class":36},[30,794,795],{"class":40}," AgentProcess",[30,797,798],{"class":36}," extends",[30,800,801],{"class":40}," NodeJS",[30,803,804],{"class":44},".",[30,806,807],{"class":40},"Process",[30,809,45],{"class":44},[30,811,812],{"class":32,"line":48},[30,813,814],{"class":51},"    \u002F\u002F Blocking — run a command and await the full result. Never throws.\n",[30,816,817,820],{"class":32,"line":55},[30,818,819],{"class":58},"    run",[30,821,822],{"class":44},"(\n",[30,824,825,828,830,832],{"class":32,"line":90},[30,826,827],{"class":65},"        command",[30,829,69],{"class":44},[30,831,118],{"class":40},[30,833,834],{"class":44},",\n",[30,836,837,840,843,846,848,850,852,855,857,859,861,863,865,867,870,873,875,877],{"class":32,"line":142},[30,838,839],{"class":65},"        opts",[30,841,842],{"class":44},"?: { ",[30,844,845],{"class":65},"cwd",[30,847,115],{"class":44},[30,849,118],{"class":40},[30,851,109],{"class":44},[30,853,854],{"class":65},"env",[30,856,115],{"class":44},[30,858,300],{"class":40},[30,860,81],{"class":44},[30,862,118],{"class":40},[30,864,292],{"class":44},[30,866,118],{"class":40},[30,868,869],{"class":44},">; ",[30,871,872],{"class":65},"input",[30,874,115],{"class":44},[30,876,118],{"class":40},[30,878,572],{"class":44},[30,880,881,884,886,889,892,894,896,898,901,903,905,907,910,912,914,916,919,921,923,925,928,930,932],{"class":32,"line":149},[30,882,883],{"class":44},"    ): ",[30,885,78],{"class":40},[30,887,888],{"class":44},"\u003C{ ",[30,890,891],{"class":65},"ok",[30,893,69],{"class":44},[30,895,742],{"class":40},[30,897,109],{"class":44},[30,899,900],{"class":65},"exitCode",[30,902,69],{"class":44},[30,904,549],{"class":40},[30,906,109],{"class":44},[30,908,909],{"class":65},"stdout",[30,911,69],{"class":44},[30,913,118],{"class":40},[30,915,109],{"class":44},[30,917,918],{"class":65},"stderr",[30,920,69],{"class":44},[30,922,118],{"class":40},[30,924,109],{"class":44},[30,926,927],{"class":65},"err",[30,929,115],{"class":44},[30,931,118],{"class":40},[30,933,934],{"class":44}," }>\n",[30,936,937],{"class":32,"line":155},[30,938,146],{"emptyLinePlaceholder":145},[30,940,941],{"class":32,"line":188},[30,942,943],{"class":51},"    \u002F\u002F Detached — returns a LiveProcHandle immediately\n",[30,945,946,949],{"class":32,"line":236},[30,947,948],{"class":58},"    spawn",[30,950,822],{"class":44},[30,952,953,955,957,959],{"class":32,"line":241},[30,954,827],{"class":65},[30,956,69],{"class":44},[30,958,118],{"class":40},[30,960,834],{"class":44},[30,962,963,965,967,969,971,973,975,977,979,981,983,985,987,989],{"class":32,"line":247},[30,964,839],{"class":65},[30,966,842],{"class":44},[30,968,845],{"class":65},[30,970,115],{"class":44},[30,972,118],{"class":40},[30,974,109],{"class":44},[30,976,854],{"class":65},[30,978,115],{"class":44},[30,980,300],{"class":40},[30,982,81],{"class":44},[30,984,118],{"class":40},[30,986,292],{"class":44},[30,988,118],{"class":40},[30,990,185],{"class":44},[30,992,993,995],{"class":32,"line":267},[30,994,883],{"class":44},[30,996,997],{"class":40},"LiveProcHandle\n",[30,999,1000],{"class":32,"line":272},[30,1001,146],{"emptyLinePlaceholder":145},[30,1003,1004],{"class":32,"line":278},[30,1005,1006],{"class":51},"    \u002F\u002F Blocked — the capsule manages its own lifecycle\n",[30,1008,1009,1012,1014],{"class":32,"line":324},[30,1010,1011],{"class":65},"    exit",[30,1013,69],{"class":44},[30,1015,1016],{"class":40},"never\n",[30,1018,1019],{"class":32,"line":329},[30,1020,768],{"class":44},[13,1022,1023,1026,1027,1030,1031,1034,1035,292,1038,292,1041,1044],{},[17,1024,1025],{},"process.env"," contains every key from the agent's ",[17,1028,1029],{},".env"," and ",[17,1032,1033],{},"axon.config.ts"," env\nconfiguration. ",[17,1036,1037],{},"process.cwd()",[17,1039,1040],{},"process.platform",[17,1042,1043],{},"process.pid"," are unchanged.",[13,1046,1047,1048,292,1053,1057,1058,1061],{},"See ",[1049,1050,1052],"a",{"href":1051},"\u002Fdocs\u002Fv2\u002Fapi\u002Fproc\u002Frun","process.run()",[1049,1054,1056],{"href":1055},"\u002Fdocs\u002Fv2\u002Fapi\u002Fproc\u002Fspawn","process.spawn()",",\nand ",[1049,1059,1025],{"href":1060},"\u002Fdocs\u002Fv2\u002Fapi\u002Fproc\u002Fenv"," for the full reference.",[1063,1064,1065],"style",{},"html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}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);}",{"title":26,"searchDepth":48,"depth":48,"links":1067},[1068],{"id":777,"depth":48,"text":777},"The axon global is available in every script and tool. It is the runtime interface\nbetween your code and the agent loop — send tasks, load prompts, invoke scripts, call\ntools, request input from the TUI.","md",{},"\u002Fdocs\u002Fv2\u002Fapi",{"title":5,"description":1069},"docs\u002Fv2\u002Fapi\u002Findex","SWrKh-ChNoUp54B__9w0HQaO1GXSCnBg_DYL3blRDoU",1785671808433]