[{"data":1,"prerenderedAt":1577},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fagent\u002Fsrc\u002Fscripts":3},{"id":4,"title":5,"body":6,"description":1569,"extension":1570,"meta":1571,"navigation":181,"path":1573,"seo":1574,"stem":1575,"__hash__":1576},"docs\u002Fdocs\u002Fv2\u002Fagent\u002Fsrc\u002Fscripts\u002Findex.md","scripts\u002F",{"type":7,"value":8,"toc":1559},"minimark",[9,13,22,25,73,78,81,155,159,828,832,841,902,913,917,920,927,972,982,992,1061,1067,1134,1144,1147,1159,1221,1233,1370,1379,1383,1394,1536,1540,1555],[10,11,5],"h1",{"id":12},"scripts",[14,15,16,17,21],"p",{},"Scripts are TypeScript files in ",[18,19,20],"code",{},"src\u002Fscripts\u002F",". They are the primary authoring unit —\nload prompts, call the agent, process results, write files, call tools, spawn processes.\nFull TypeScript, no restrictions.",[14,23,24],{},"The script name is the filename without extension:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-bash shiki shiki-themes dark-plus","scripts\u002Fscout.ts          → \"scout\"\nscripts\u002Fclose-plan.ts     → \"close-plan\"\nscripts\u002Flearn.ts          → \"learn\"\n","bash","",[18,33,34,50,62],{"__ignoreMap":31},[35,36,39,43,47],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"sCudf","scripts\u002Fscout.ts",[35,44,46],{"class":45},"sKc5r","          →",[35,48,49],{"class":45}," \"scout\"\n",[35,51,53,56,59],{"class":37,"line":52},2,[35,54,55],{"class":41},"scripts\u002Fclose-plan.ts",[35,57,58],{"class":45},"     →",[35,60,61],{"class":45}," \"close-plan\"\n",[35,63,65,68,70],{"class":37,"line":64},3,[35,66,67],{"class":41},"scripts\u002Flearn.ts",[35,69,46],{"class":45},[35,71,72],{"class":45}," \"learn\"\n",[74,75,77],"h2",{"id":76},"globals","Globals",[14,79,80],{},"Scripts have three globals injected at runtime — no imports needed:",[82,83,84,97],"table",{},[85,86,87],"thead",{},[88,89,90,94],"tr",{},[91,92,93],"th",{},"Global",[91,95,96],{},"What it is",[98,99,100,135,145],"tbody",{},[88,101,102,108],{},[103,104,105],"td",{},[18,106,107],{},"axon",[103,109,110,111,114,115,114,118,114,121,114,124,114,127,114,129,114,132],{},"Agent API — ",[18,112,113],{},"request",", ",[18,116,117],{},"stream",[18,119,120],{},"thread",[18,122,123],{},"prompt",[18,125,126],{},"tools",[18,128,12],{},[18,130,131],{},"proc",[18,133,134],{},"ui",[88,136,137,142],{},[103,138,139],{},[18,140,141],{},"args",[103,143,144],{},"Arguments passed to this script",[88,146,147,152],{},[103,148,149],{},[18,150,151],{},"defineArgs",[103,153,154],{},"Declare and type the expected args",[74,156,158],{"id":157},"a-complete-script","A complete script",[26,160,164],{"className":161,"code":162,"language":163,"meta":31,"style":31},"language-ts shiki shiki-themes dark-plus","\u002F\u002F src\u002Fscripts\u002Flearn.ts\n\u002F\u002F axon run learn --domain tracing\n\nimport { readFile, writeFile } from \"fs\u002Fpromises\"\nimport { join } from \"path\"\n\nconst { domain } = defineArgs\u003C{ domain: string }>()\n\nconst knowledgeRoot = join(import.meta.dir, \"..\u002F..\u002Fdata\u002Fknowledge\")\n\nconst rulebook = await readFile(\n    join(knowledgeRoot, \"rulebooks\", `${domain}.md`), \"utf-8\"\n)\n\nconst existing = await readFile(\n    join(knowledgeRoot, \"domains\", `${domain}.md`), \"utf-8\"\n).catch(() => null)\n\nconst context = await axon.prompt(\"context\")\nconst task    = await axon.prompt(\"learn\", { domain, rulebook, existing })\n\nconst { stream } = axon.stream({ prompt: [context, task] })\n\nlet output = \"\"\n\nfor await (const entry of stream) {\n    if (entry.type === \"text\") {\n        process.stdout.write(entry.content)\n        output += entry.content\n    }\n}\n\nconst match = output.match(\u002F```knowledge\\n([\\s\\S]*?)```\u002F)\nif (match) {\n    await writeFile(\n        join(knowledgeRoot, \"domains\", `${domain}.md`),\n        match[1].trim(), \"utf-8\"\n    )\n}\n","ts",[18,165,166,172,177,183,212,229,234,267,272,309,314,333,371,376,381,397,427,447,452,478,520,525,562,567,581,586,612,636,663,679,685,691,696,741,753,764,793,817,823],{"__ignoreMap":31},[35,167,168],{"class":37,"line":38},[35,169,171],{"class":170},"sOLPB","\u002F\u002F src\u002Fscripts\u002Flearn.ts\n",[35,173,174],{"class":37,"line":52},[35,175,176],{"class":170},"\u002F\u002F axon run learn --domain tracing\n",[35,178,179],{"class":37,"line":64},[35,180,182],{"emptyLinePlaceholder":181},true,"\n",[35,184,186,190,194,198,200,203,206,209],{"class":37,"line":185},4,[35,187,189],{"class":188},"sYbnZ","import",[35,191,193],{"class":192},"sTNBD"," { ",[35,195,197],{"class":196},"s3F5K","readFile",[35,199,114],{"class":192},[35,201,202],{"class":196},"writeFile",[35,204,205],{"class":192}," } ",[35,207,208],{"class":188},"from",[35,210,211],{"class":45}," \"fs\u002Fpromises\"\n",[35,213,215,217,219,222,224,226],{"class":37,"line":214},5,[35,216,189],{"class":188},[35,218,193],{"class":192},[35,220,221],{"class":196},"join",[35,223,205],{"class":192},[35,225,208],{"class":188},[35,227,228],{"class":45}," \"path\"\n",[35,230,232],{"class":37,"line":231},6,[35,233,182],{"emptyLinePlaceholder":181},[35,235,237,241,243,247,250,252,255,257,260,264],{"class":37,"line":236},7,[35,238,240],{"class":239},"scz_3","const",[35,242,193],{"class":192},[35,244,246],{"class":245},"s9McN","domain",[35,248,249],{"class":192}," } = ",[35,251,151],{"class":41},[35,253,254],{"class":192},"\u003C{ ",[35,256,246],{"class":196},[35,258,259],{"class":192},": ",[35,261,263],{"class":262},"sNl3T","string",[35,265,266],{"class":192}," }>()\n",[35,268,270],{"class":37,"line":269},8,[35,271,182],{"emptyLinePlaceholder":181},[35,273,275,277,280,283,285,288,290,293,296,298,301,303,306],{"class":37,"line":274},9,[35,276,240],{"class":239},[35,278,279],{"class":245}," knowledgeRoot",[35,281,282],{"class":192}," = ",[35,284,221],{"class":41},[35,286,287],{"class":192},"(",[35,289,189],{"class":188},[35,291,292],{"class":192},".",[35,294,295],{"class":196},"meta",[35,297,292],{"class":192},[35,299,300],{"class":196},"dir",[35,302,114],{"class":192},[35,304,305],{"class":45},"\"..\u002F..\u002Fdata\u002Fknowledge\"",[35,307,308],{"class":192},")\n",[35,310,312],{"class":37,"line":311},10,[35,313,182],{"emptyLinePlaceholder":181},[35,315,317,319,322,324,327,330],{"class":37,"line":316},11,[35,318,240],{"class":239},[35,320,321],{"class":245}," rulebook",[35,323,282],{"class":192},[35,325,326],{"class":188},"await",[35,328,329],{"class":41}," readFile",[35,331,332],{"class":192},"(\n",[35,334,336,339,341,344,346,349,351,354,357,359,362,365,368],{"class":37,"line":335},12,[35,337,338],{"class":41},"    join",[35,340,287],{"class":192},[35,342,343],{"class":196},"knowledgeRoot",[35,345,114],{"class":192},[35,347,348],{"class":45},"\"rulebooks\"",[35,350,114],{"class":192},[35,352,353],{"class":45},"`",[35,355,356],{"class":239},"${",[35,358,246],{"class":196},[35,360,361],{"class":239},"}",[35,363,364],{"class":45},".md`",[35,366,367],{"class":192},"), ",[35,369,370],{"class":45},"\"utf-8\"\n",[35,372,374],{"class":37,"line":373},13,[35,375,308],{"class":192},[35,377,379],{"class":37,"line":378},14,[35,380,182],{"emptyLinePlaceholder":181},[35,382,384,386,389,391,393,395],{"class":37,"line":383},15,[35,385,240],{"class":239},[35,387,388],{"class":245}," existing",[35,390,282],{"class":192},[35,392,326],{"class":188},[35,394,329],{"class":41},[35,396,332],{"class":192},[35,398,400,402,404,406,408,411,413,415,417,419,421,423,425],{"class":37,"line":399},16,[35,401,338],{"class":41},[35,403,287],{"class":192},[35,405,343],{"class":196},[35,407,114],{"class":192},[35,409,410],{"class":45},"\"domains\"",[35,412,114],{"class":192},[35,414,353],{"class":45},[35,416,356],{"class":239},[35,418,246],{"class":196},[35,420,361],{"class":239},[35,422,364],{"class":45},[35,424,367],{"class":192},[35,426,370],{"class":45},[35,428,430,433,436,439,442,445],{"class":37,"line":429},17,[35,431,432],{"class":192},").",[35,434,435],{"class":41},"catch",[35,437,438],{"class":192},"(() ",[35,440,441],{"class":239},"=>",[35,443,444],{"class":239}," null",[35,446,308],{"class":192},[35,448,450],{"class":37,"line":449},18,[35,451,182],{"emptyLinePlaceholder":181},[35,453,455,457,460,462,464,467,469,471,473,476],{"class":37,"line":454},19,[35,456,240],{"class":239},[35,458,459],{"class":245}," context",[35,461,282],{"class":192},[35,463,326],{"class":188},[35,465,466],{"class":196}," axon",[35,468,292],{"class":192},[35,470,123],{"class":41},[35,472,287],{"class":192},[35,474,475],{"class":45},"\"context\"",[35,477,308],{"class":192},[35,479,481,483,486,489,491,493,495,497,499,502,505,507,509,512,514,517],{"class":37,"line":480},20,[35,482,240],{"class":239},[35,484,485],{"class":245}," task",[35,487,488],{"class":192},"    = ",[35,490,326],{"class":188},[35,492,466],{"class":196},[35,494,292],{"class":192},[35,496,123],{"class":41},[35,498,287],{"class":192},[35,500,501],{"class":45},"\"learn\"",[35,503,504],{"class":192},", { ",[35,506,246],{"class":196},[35,508,114],{"class":192},[35,510,511],{"class":196},"rulebook",[35,513,114],{"class":192},[35,515,516],{"class":196},"existing",[35,518,519],{"class":192}," })\n",[35,521,523],{"class":37,"line":522},21,[35,524,182],{"emptyLinePlaceholder":181},[35,526,528,530,532,534,536,538,540,542,545,548,551,554,556,559],{"class":37,"line":527},22,[35,529,240],{"class":239},[35,531,193],{"class":192},[35,533,117],{"class":245},[35,535,249],{"class":192},[35,537,107],{"class":196},[35,539,292],{"class":192},[35,541,117],{"class":41},[35,543,544],{"class":192},"({ ",[35,546,547],{"class":196},"prompt:",[35,549,550],{"class":192}," [",[35,552,553],{"class":196},"context",[35,555,114],{"class":192},[35,557,558],{"class":196},"task",[35,560,561],{"class":192},"] })\n",[35,563,565],{"class":37,"line":564},23,[35,566,182],{"emptyLinePlaceholder":181},[35,568,570,573,576,578],{"class":37,"line":569},24,[35,571,572],{"class":239},"let",[35,574,575],{"class":196}," output",[35,577,282],{"class":192},[35,579,580],{"class":45},"\"\"\n",[35,582,584],{"class":37,"line":583},25,[35,585,182],{"emptyLinePlaceholder":181},[35,587,589,592,595,598,600,603,606,609],{"class":37,"line":588},26,[35,590,591],{"class":188},"for",[35,593,594],{"class":188}," await",[35,596,597],{"class":192}," (",[35,599,240],{"class":239},[35,601,602],{"class":245}," entry",[35,604,605],{"class":239}," of",[35,607,608],{"class":196}," stream",[35,610,611],{"class":192},") {\n",[35,613,615,618,620,623,625,628,631,634],{"class":37,"line":614},27,[35,616,617],{"class":188},"    if",[35,619,597],{"class":192},[35,621,622],{"class":196},"entry",[35,624,292],{"class":192},[35,626,627],{"class":196},"type",[35,629,630],{"class":192}," === ",[35,632,633],{"class":45},"\"text\"",[35,635,611],{"class":192},[35,637,639,642,644,647,649,652,654,656,658,661],{"class":37,"line":638},28,[35,640,641],{"class":196},"        process",[35,643,292],{"class":192},[35,645,646],{"class":196},"stdout",[35,648,292],{"class":192},[35,650,651],{"class":41},"write",[35,653,287],{"class":192},[35,655,622],{"class":196},[35,657,292],{"class":192},[35,659,660],{"class":196},"content",[35,662,308],{"class":192},[35,664,666,669,672,674,676],{"class":37,"line":665},29,[35,667,668],{"class":196},"        output",[35,670,671],{"class":192}," += ",[35,673,622],{"class":196},[35,675,292],{"class":192},[35,677,678],{"class":196},"content\n",[35,680,682],{"class":37,"line":681},30,[35,683,684],{"class":192},"    }\n",[35,686,688],{"class":37,"line":687},31,[35,689,690],{"class":192},"}\n",[35,692,694],{"class":37,"line":693},32,[35,695,182],{"emptyLinePlaceholder":181},[35,697,699,701,704,706,709,711,714,716,720,723,726,729,733,736,739],{"class":37,"line":698},33,[35,700,240],{"class":239},[35,702,703],{"class":245}," match",[35,705,282],{"class":192},[35,707,708],{"class":196},"output",[35,710,292],{"class":192},[35,712,713],{"class":41},"match",[35,715,287],{"class":192},[35,717,719],{"class":718},"sxaxS","\u002F```knowledge\\n",[35,721,722],{"class":45},"([",[35,724,725],{"class":718},"\\s\\S",[35,727,728],{"class":45},"]",[35,730,732],{"class":731},"svVle","*?",[35,734,735],{"class":45},")",[35,737,738],{"class":718},"```\u002F",[35,740,308],{"class":192},[35,742,744,747,749,751],{"class":37,"line":743},34,[35,745,746],{"class":188},"if",[35,748,597],{"class":192},[35,750,713],{"class":196},[35,752,611],{"class":192},[35,754,756,759,762],{"class":37,"line":755},35,[35,757,758],{"class":188},"    await",[35,760,761],{"class":41}," writeFile",[35,763,332],{"class":192},[35,765,767,770,772,774,776,778,780,782,784,786,788,790],{"class":37,"line":766},36,[35,768,769],{"class":41},"        join",[35,771,287],{"class":192},[35,773,343],{"class":196},[35,775,114],{"class":192},[35,777,410],{"class":45},[35,779,114],{"class":192},[35,781,353],{"class":45},[35,783,356],{"class":239},[35,785,246],{"class":196},[35,787,361],{"class":239},[35,789,364],{"class":45},[35,791,792],{"class":192},"),\n",[35,794,796,799,802,806,809,812,815],{"class":37,"line":795},37,[35,797,798],{"class":196},"        match",[35,800,801],{"class":192},"[",[35,803,805],{"class":804},"sDGX8","1",[35,807,808],{"class":192},"].",[35,810,811],{"class":41},"trim",[35,813,814],{"class":192},"(), ",[35,816,370],{"class":45},[35,818,820],{"class":37,"line":819},38,[35,821,822],{"class":192},"    )\n",[35,824,826],{"class":37,"line":825},39,[35,827,690],{"class":192},[74,829,831],{"id":830},"declaring-args","Declaring args",[14,833,834,837,838,840],{},[18,835,836],{},"defineArgs\u003C{}>()"," types the ",[18,839,141],{}," object, validates required args before the script\nruns, and drives the TUI palette form for interactive invocation.",[26,842,844],{"className":161,"code":843,"language":163,"meta":31,"style":31},"const { issueId, notify = \"true\" } = defineArgs\u003C{\n    issueId: string   \u002F\u002F required\n    notify?: string   \u002F\u002F optional, defaults to \"true\"\n}>()\n",[18,845,846,872,884,897],{"__ignoreMap":31},[35,847,848,850,852,855,857,860,862,865,867,869],{"class":37,"line":38},[35,849,240],{"class":239},[35,851,193],{"class":192},[35,853,854],{"class":245},"issueId",[35,856,114],{"class":192},[35,858,859],{"class":245},"notify",[35,861,282],{"class":192},[35,863,864],{"class":45},"\"true\"",[35,866,249],{"class":192},[35,868,151],{"class":41},[35,870,871],{"class":192},"\u003C{\n",[35,873,874,877,879,881],{"class":37,"line":52},[35,875,876],{"class":196},"    issueId",[35,878,259],{"class":192},[35,880,263],{"class":262},[35,882,883],{"class":170},"   \u002F\u002F required\n",[35,885,886,889,892,894],{"class":37,"line":64},[35,887,888],{"class":196},"    notify",[35,890,891],{"class":192},"?: ",[35,893,263],{"class":262},[35,895,896],{"class":170},"   \u002F\u002F optional, defaults to \"true\"\n",[35,898,899],{"class":37,"line":185},[35,900,901],{"class":192},"}>()\n",[14,903,904,905,114,907,909,910,292],{},"Without ",[18,906,151],{},[18,908,141],{}," is an untyped ",[18,911,912],{},"Record\u003Cstring, string>",[74,914,916],{"id":915},"invocation","Invocation",[14,918,919],{},"The same script file runs from four places without modification. You don't write a CLI\nentrypoint, a route handler, and a programmatic API separately — you write the script\nonce and the runtime adapts to the context it's called from.",[14,921,922,926],{},[923,924,925],"strong",{},"CLI"," — headlessly, agent boots and exits when done:",[26,928,930],{"className":28,"code":929,"language":30,"meta":31,"style":31},"axon run scout\naxon run learn --domain tracing\naxon run close-plan --issueId bd-yiq\n",[18,931,932,942,957],{"__ignoreMap":31},[35,933,934,936,939],{"class":37,"line":38},[35,935,107],{"class":41},[35,937,938],{"class":45}," run",[35,940,941],{"class":45}," scout\n",[35,943,944,946,948,951,954],{"class":37,"line":52},[35,945,107],{"class":41},[35,947,938],{"class":45},[35,949,950],{"class":45}," learn",[35,952,953],{"class":239}," --domain",[35,955,956],{"class":45}," tracing\n",[35,958,959,961,963,966,969],{"class":37,"line":64},[35,960,107],{"class":41},[35,962,938],{"class":45},[35,964,965],{"class":45}," close-plan",[35,967,968],{"class":239}," --issueId",[35,970,971],{"class":45}," bd-yiq\n",[14,973,974,977,978,981],{},[923,975,976],{},"TUI palette"," — press ",[18,979,980],{},"!",", search for the script name, select it. If the script\ndeclares required args, an inline form appears.",[14,983,984,987,988,991],{},[923,985,986],{},"HTTP route"," — expose via ",[18,989,990],{},"axon.scripts.stream()",":",[26,993,995],{"className":161,"code":994,"language":163,"meta":31,"style":31},"\u002F\u002F server\u002Fapi\u002Fscout.post.ts\nexport default defineEventHandler(() => {\n    const { stream } = axon.scripts.stream(\"scout\")\n    return stream\n})\n",[18,996,997,1002,1020,1048,1056],{"__ignoreMap":31},[35,998,999],{"class":37,"line":38},[35,1000,1001],{"class":170},"\u002F\u002F server\u002Fapi\u002Fscout.post.ts\n",[35,1003,1004,1007,1010,1013,1015,1017],{"class":37,"line":52},[35,1005,1006],{"class":188},"export",[35,1008,1009],{"class":188}," default",[35,1011,1012],{"class":41}," defineEventHandler",[35,1014,438],{"class":192},[35,1016,441],{"class":239},[35,1018,1019],{"class":192}," {\n",[35,1021,1022,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1046],{"class":37,"line":64},[35,1023,1024],{"class":239},"    const",[35,1026,193],{"class":192},[35,1028,117],{"class":245},[35,1030,249],{"class":192},[35,1032,107],{"class":196},[35,1034,292],{"class":192},[35,1036,12],{"class":196},[35,1038,292],{"class":192},[35,1040,117],{"class":41},[35,1042,287],{"class":192},[35,1044,1045],{"class":45},"\"scout\"",[35,1047,308],{"class":192},[35,1049,1050,1053],{"class":37,"line":185},[35,1051,1052],{"class":188},"    return",[35,1054,1055],{"class":196}," stream\n",[35,1057,1058],{"class":37,"line":214},[35,1059,1060],{"class":192},"})\n",[14,1062,1063,1066],{},[923,1064,1065],{},"Programmatic"," — from another script:",[26,1068,1070],{"className":161,"code":1069,"language":163,"meta":31,"style":31},"const result = await axon.scripts.request(\"close-plan\", { issueId: \"bd-yiq\" })\nconst { stream } = axon.scripts.stream(\"scout\")\n",[18,1071,1072,1108],{"__ignoreMap":31},[35,1073,1074,1076,1079,1081,1083,1085,1087,1089,1091,1093,1095,1098,1100,1103,1106],{"class":37,"line":38},[35,1075,240],{"class":239},[35,1077,1078],{"class":245}," result",[35,1080,282],{"class":192},[35,1082,326],{"class":188},[35,1084,466],{"class":196},[35,1086,292],{"class":192},[35,1088,12],{"class":196},[35,1090,292],{"class":192},[35,1092,113],{"class":41},[35,1094,287],{"class":192},[35,1096,1097],{"class":45},"\"close-plan\"",[35,1099,504],{"class":192},[35,1101,1102],{"class":196},"issueId:",[35,1104,1105],{"class":45}," \"bd-yiq\"",[35,1107,519],{"class":192},[35,1109,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132],{"class":37,"line":52},[35,1111,240],{"class":239},[35,1113,193],{"class":192},[35,1115,117],{"class":245},[35,1117,249],{"class":192},[35,1119,107],{"class":196},[35,1121,292],{"class":192},[35,1123,12],{"class":196},[35,1125,292],{"class":192},[35,1127,117],{"class":41},[35,1129,287],{"class":192},[35,1131,1045],{"class":45},[35,1133,308],{"class":192},[74,1135,1137,1140,1141],{"id":1136},"axontools-vs-axonproc",[18,1138,1139],{},"axon.tools"," vs ",[18,1142,1143],{},"axon.proc",[14,1145,1146],{},"Two execution primitives:",[14,1148,1149,1154,1155,1158],{},[923,1150,1151],{},[18,1152,1153],{},"axon.tools.ns.fn(args)"," — call typed tool functions from ",[18,1156,1157],{},"src\u002Ftools\u002F"," or installed\nmodules. Returns the function's return value.",[26,1160,1162],{"className":161,"code":1161,"language":163,"meta":31,"style":31},"const issues = await axon.tools.kanban.list()\nconst task = await axon.tools.kanban.nextTask()\n",[18,1163,1164,1194],{"__ignoreMap":31},[35,1165,1166,1168,1171,1173,1175,1177,1179,1181,1183,1186,1188,1191],{"class":37,"line":38},[35,1167,240],{"class":239},[35,1169,1170],{"class":245}," issues",[35,1172,282],{"class":192},[35,1174,326],{"class":188},[35,1176,466],{"class":196},[35,1178,292],{"class":192},[35,1180,126],{"class":196},[35,1182,292],{"class":192},[35,1184,1185],{"class":196},"kanban",[35,1187,292],{"class":192},[35,1189,1190],{"class":41},"list",[35,1192,1193],{"class":192},"()\n",[35,1195,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1219],{"class":37,"line":52},[35,1197,240],{"class":239},[35,1199,485],{"class":245},[35,1201,282],{"class":192},[35,1203,326],{"class":188},[35,1205,466],{"class":196},[35,1207,292],{"class":192},[35,1209,126],{"class":196},[35,1211,292],{"class":192},[35,1213,1185],{"class":196},[35,1215,292],{"class":192},[35,1217,1218],{"class":41},"nextTask",[35,1220,1193],{"class":192},[14,1222,1223,1228,1229,1232],{},[923,1224,1225],{},[18,1226,1227],{},"axon.proc.spawn(cmd)"," — spawn a shell command. Returns a ",[18,1230,1231],{},"ProcHandle"," for streaming\noutput and checking exit status.",[26,1234,1236],{"className":161,"code":1235,"language":163,"meta":31,"style":31},"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",[18,1237,1238,1265,1269,1294,1324,1328,1332],{"__ignoreMap":31},[35,1239,1240,1242,1245,1247,1249,1251,1253,1255,1258,1260,1263],{"class":37,"line":38},[35,1241,240],{"class":239},[35,1243,1244],{"class":245}," proc",[35,1246,282],{"class":192},[35,1248,107],{"class":196},[35,1250,292],{"class":192},[35,1252,131],{"class":196},[35,1254,292],{"class":192},[35,1256,1257],{"class":41},"spawn",[35,1259,287],{"class":192},[35,1261,1262],{"class":45},"\"git push --set-upstream origin HEAD\"",[35,1264,308],{"class":192},[35,1266,1267],{"class":37,"line":52},[35,1268,182],{"emptyLinePlaceholder":181},[35,1270,1271,1273,1275,1277,1279,1282,1284,1286,1288,1291],{"class":37,"line":64},[35,1272,591],{"class":188},[35,1274,594],{"class":188},[35,1276,597],{"class":192},[35,1278,240],{"class":239},[35,1280,1281],{"class":245}," line",[35,1283,605],{"class":239},[35,1285,1244],{"class":196},[35,1287,292],{"class":192},[35,1289,1290],{"class":41},"watch",[35,1292,1293],{"class":192},"()) {\n",[35,1295,1296,1299,1301,1303,1305,1307,1309,1311,1314,1317,1320,1322],{"class":37,"line":185},[35,1297,1298],{"class":196},"    process",[35,1300,292],{"class":192},[35,1302,646],{"class":196},[35,1304,292],{"class":192},[35,1306,651],{"class":41},[35,1308,287],{"class":192},[35,1310,37],{"class":196},[35,1312,1313],{"class":192}," + ",[35,1315,1316],{"class":45},"\"",[35,1318,1319],{"class":731},"\\n",[35,1321,1316],{"class":45},[35,1323,308],{"class":192},[35,1325,1326],{"class":37,"line":214},[35,1327,690],{"class":192},[35,1329,1330],{"class":37,"line":231},[35,1331,182],{"emptyLinePlaceholder":181},[35,1333,1334,1336,1338,1340,1342,1345,1348,1351,1354,1357,1360,1363,1365,1368],{"class":37,"line":236},[35,1335,746],{"class":188},[35,1337,597],{"class":192},[35,1339,131],{"class":196},[35,1341,292],{"class":192},[35,1343,1344],{"class":196},"exitCode",[35,1346,1347],{"class":192}," !== ",[35,1349,1350],{"class":804},"0",[35,1352,1353],{"class":192},") ",[35,1355,1356],{"class":188},"throw",[35,1358,1359],{"class":239}," new",[35,1361,1362],{"class":41}," Error",[35,1364,287],{"class":192},[35,1366,1367],{"class":45},"`Push failed`",[35,1369,308],{"class":192},[14,1371,1372,1373,1375,1376,1378],{},"Use ",[18,1374,1139],{}," for typed functions. Use ",[18,1377,1143],{}," for shell commands. They are not\ninterchangeable.",[74,1380,1382],{"id":1381},"calling-the-agent","Calling the agent",[14,1384,1385,1386,1389,1390,1393],{},"A script that calls ",[18,1387,1388],{},"axon.request()"," or ",[18,1391,1392],{},"axon.stream()"," invokes the managed agent loop.\nA script that doesn't is pure automation — it calls tools, runs processes, writes files.\nBoth are valid.",[26,1395,1397],{"className":161,"code":1396,"language":163,"meta":31,"style":31},"\u002F\u002F pure automation — no agent loop\nconst issues = await axon.tools.kanban.list()\nawait writeFile(\"report.md\", formatReport(issues), \"utf-8\")\n\n\u002F\u002F agent-backed — loads context, invokes agent, processes output\nconst prompt = await axon.prompt(\"code-review\", { issueId })\nconst { stream } = axon.stream({ prompt })\nfor await (const entry of stream) { ... }\n",[18,1398,1399,1404,1430,1458,1462,1467,1495,1517],{"__ignoreMap":31},[35,1400,1401],{"class":37,"line":38},[35,1402,1403],{"class":170},"\u002F\u002F pure automation — no agent loop\n",[35,1405,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428],{"class":37,"line":52},[35,1407,240],{"class":239},[35,1409,1170],{"class":245},[35,1411,282],{"class":192},[35,1413,326],{"class":188},[35,1415,466],{"class":196},[35,1417,292],{"class":192},[35,1419,126],{"class":196},[35,1421,292],{"class":192},[35,1423,1185],{"class":196},[35,1425,292],{"class":192},[35,1427,1190],{"class":41},[35,1429,1193],{"class":192},[35,1431,1432,1434,1436,1438,1441,1443,1446,1448,1451,1453,1456],{"class":37,"line":64},[35,1433,326],{"class":188},[35,1435,761],{"class":41},[35,1437,287],{"class":192},[35,1439,1440],{"class":45},"\"report.md\"",[35,1442,114],{"class":192},[35,1444,1445],{"class":41},"formatReport",[35,1447,287],{"class":192},[35,1449,1450],{"class":196},"issues",[35,1452,367],{"class":192},[35,1454,1455],{"class":45},"\"utf-8\"",[35,1457,308],{"class":192},[35,1459,1460],{"class":37,"line":185},[35,1461,182],{"emptyLinePlaceholder":181},[35,1463,1464],{"class":37,"line":214},[35,1465,1466],{"class":170},"\u002F\u002F agent-backed — loads context, invokes agent, processes output\n",[35,1468,1469,1471,1474,1476,1478,1480,1482,1484,1486,1489,1491,1493],{"class":37,"line":231},[35,1470,240],{"class":239},[35,1472,1473],{"class":245}," prompt",[35,1475,282],{"class":192},[35,1477,326],{"class":188},[35,1479,466],{"class":196},[35,1481,292],{"class":192},[35,1483,123],{"class":41},[35,1485,287],{"class":192},[35,1487,1488],{"class":45},"\"code-review\"",[35,1490,504],{"class":192},[35,1492,854],{"class":196},[35,1494,519],{"class":192},[35,1496,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515],{"class":37,"line":236},[35,1498,240],{"class":239},[35,1500,193],{"class":192},[35,1502,117],{"class":245},[35,1504,249],{"class":192},[35,1506,107],{"class":196},[35,1508,292],{"class":192},[35,1510,117],{"class":41},[35,1512,544],{"class":192},[35,1514,123],{"class":196},[35,1516,519],{"class":192},[35,1518,1519,1521,1523,1525,1527,1529,1531,1533],{"class":37,"line":269},[35,1520,591],{"class":188},[35,1522,594],{"class":188},[35,1524,597],{"class":192},[35,1526,240],{"class":239},[35,1528,602],{"class":245},[35,1530,605],{"class":239},[35,1532,608],{"class":196},[35,1534,1535],{"class":192},") { ... }\n",[74,1537,1539],{"id":1538},"headless-behaviour","Headless behaviour",[14,1541,1542,1543,1546,1547,1550,1551,1554],{},"When running headlessly via ",[18,1544,1545],{},"axon run",", there is no connected TUI host. ",[18,1548,1549],{},"axon.ui.ask()","\nreturns ",[18,1552,1553],{},"{ unavailable }",". Scripts that depend on user input should handle this case and\nfail closed rather than hanging.",[1556,1557,1558],"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 .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}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 .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}html pre.shiki code .sxaxS, html code.shiki .sxaxS{--shiki-default:#D16969}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":31,"searchDepth":52,"depth":52,"links":1560},[1561,1562,1563,1564,1565,1567,1568],{"id":76,"depth":52,"text":77},{"id":157,"depth":52,"text":158},{"id":830,"depth":52,"text":831},{"id":915,"depth":52,"text":916},{"id":1136,"depth":52,"text":1566},"axon.tools vs axon.proc",{"id":1381,"depth":52,"text":1382},{"id":1538,"depth":52,"text":1539},"Scripts are TypeScript files in src\u002Fscripts\u002F. They are the primary authoring unit —\nload prompts, call the agent, process results, write files, call tools, spawn processes.\nFull TypeScript, no restrictions.","md",{"icon":1572},"vscode-icons:folder-type-script","\u002Fdocs\u002Fv2\u002Fagent\u002Fsrc\u002Fscripts",{"title":5,"description":1569},"docs\u002Fv2\u002Fagent\u002Fsrc\u002Fscripts\u002Findex","7ZZbv__2wWE9PxCLTKeT6GLKy5zSZgK1ylcyFp0KBdY",1785671806114]