[{"data":1,"prerenderedAt":461},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fapi\u002Fproc":3},{"id":4,"title":5,"body":6,"description":454,"extension":455,"meta":456,"navigation":207,"path":457,"seo":458,"stem":459,"__hash__":460},"docs\u002Fdocs\u002Fv2\u002Fapi\u002Fproc.md","process",{"type":7,"value":8,"toc":452},"minimark",[9,12,20,302,320,343,448],[10,11,5],"h1",{"id":5},[13,14,15,16,19],"p",{},"Scripts run inside the capsule subprocess and have direct access to the global ",[17,18,5],"code",{},"\nobject. Axon extends it with two methods for shell execution:",[21,22,27],"pre",{"className":23,"code":24,"language":25,"meta":26,"style":26},"language-ts shiki shiki-themes dark-plus","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. Tracked in AIR \u003Cprocesses>.\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","ts","",[17,28,29,58,65,75,91,142,202,209,215,223,234,266,274,279,285,296],{"__ignoreMap":26},[30,31,34,38,42,45,48,52,55],"span",{"class":32,"line":33},"line",1,[30,35,37],{"class":36},"scz_3","interface",[30,39,41],{"class":40},"sNl3T"," AgentProcess",[30,43,44],{"class":36}," extends",[30,46,47],{"class":40}," NodeJS",[30,49,51],{"class":50},"sTNBD",".",[30,53,54],{"class":40},"Process",[30,56,57],{"class":50}," {\n",[30,59,61],{"class":32,"line":60},2,[30,62,64],{"class":63},"sOLPB","    \u002F\u002F Blocking — run a command and await the full result. Never throws.\n",[30,66,68,72],{"class":32,"line":67},3,[30,69,71],{"class":70},"sCudf","    run",[30,73,74],{"class":50},"(\n",[30,76,78,82,85,88],{"class":32,"line":77},4,[30,79,81],{"class":80},"s3F5K","        command",[30,83,84],{"class":50},": ",[30,86,87],{"class":40},"string",[30,89,90],{"class":50},",\n",[30,92,94,97,100,103,106,108,111,114,116,119,122,124,127,129,132,135,137,139],{"class":32,"line":93},5,[30,95,96],{"class":80},"        opts",[30,98,99],{"class":50},"?: { ",[30,101,102],{"class":80},"cwd",[30,104,105],{"class":50},"?: ",[30,107,87],{"class":40},[30,109,110],{"class":50},"; ",[30,112,113],{"class":80},"env",[30,115,105],{"class":50},[30,117,118],{"class":40},"Record",[30,120,121],{"class":50},"\u003C",[30,123,87],{"class":40},[30,125,126],{"class":50},", ",[30,128,87],{"class":40},[30,130,131],{"class":50},">; ",[30,133,134],{"class":80},"input",[30,136,105],{"class":50},[30,138,87],{"class":40},[30,140,141],{"class":50}," }\n",[30,143,145,148,151,154,157,159,162,164,167,169,172,174,177,179,181,183,186,188,190,192,195,197,199],{"class":32,"line":144},6,[30,146,147],{"class":50},"    ): ",[30,149,150],{"class":40},"Promise",[30,152,153],{"class":50},"\u003C{ ",[30,155,156],{"class":80},"ok",[30,158,84],{"class":50},[30,160,161],{"class":40},"boolean",[30,163,110],{"class":50},[30,165,166],{"class":80},"exitCode",[30,168,84],{"class":50},[30,170,171],{"class":40},"number",[30,173,110],{"class":50},[30,175,176],{"class":80},"stdout",[30,178,84],{"class":50},[30,180,87],{"class":40},[30,182,110],{"class":50},[30,184,185],{"class":80},"stderr",[30,187,84],{"class":50},[30,189,87],{"class":40},[30,191,110],{"class":50},[30,193,194],{"class":80},"err",[30,196,105],{"class":50},[30,198,87],{"class":40},[30,200,201],{"class":50}," }>\n",[30,203,205],{"class":32,"line":204},7,[30,206,208],{"emptyLinePlaceholder":207},true,"\n",[30,210,212],{"class":32,"line":211},8,[30,213,214],{"class":63},"    \u002F\u002F Detached — returns a LiveProcHandle immediately. Tracked in AIR \u003Cprocesses>.\n",[30,216,218,221],{"class":32,"line":217},9,[30,219,220],{"class":70},"    spawn",[30,222,74],{"class":50},[30,224,226,228,230,232],{"class":32,"line":225},10,[30,227,81],{"class":80},[30,229,84],{"class":50},[30,231,87],{"class":40},[30,233,90],{"class":50},[30,235,237,239,241,243,245,247,249,251,253,255,257,259,261,263],{"class":32,"line":236},11,[30,238,96],{"class":80},[30,240,99],{"class":50},[30,242,102],{"class":80},[30,244,105],{"class":50},[30,246,87],{"class":40},[30,248,110],{"class":50},[30,250,113],{"class":80},[30,252,105],{"class":50},[30,254,118],{"class":40},[30,256,121],{"class":50},[30,258,87],{"class":40},[30,260,126],{"class":50},[30,262,87],{"class":40},[30,264,265],{"class":50},"> }\n",[30,267,269,271],{"class":32,"line":268},12,[30,270,147],{"class":50},[30,272,273],{"class":40},"LiveProcHandle\n",[30,275,277],{"class":32,"line":276},13,[30,278,208],{"emptyLinePlaceholder":207},[30,280,282],{"class":32,"line":281},14,[30,283,284],{"class":63},"    \u002F\u002F Blocked — the capsule manages its own lifecycle\n",[30,286,288,291,293],{"class":32,"line":287},15,[30,289,290],{"class":80},"    exit",[30,292,84],{"class":50},[30,294,295],{"class":40},"never\n",[30,297,299],{"class":32,"line":298},16,[30,300,301],{"class":50},"}\n",[13,303,304,305,126,308,126,311,90,314,126,317,51],{},"Everything else is unchanged: ",[17,306,307],{},"process.env",[17,309,310],{},"process.cwd()",[17,312,313],{},"process.platform",[17,315,316],{},"process.pid",[17,318,319],{},"process.argv",[13,321,322,323,326,327,330,331,334,335,338,339,342],{},"Both ",[17,324,325],{},"run"," and ",[17,328,329],{},"spawn"," are gated by the capsule policy. If ",[17,332,333],{},"policy.proc"," is ",[17,336,337],{},"false"," or\nthe command doesn't match an allow list, the call is blocked before execution and a\n",[17,340,341],{},"capsule:proc:denied"," event is emitted.",[21,344,346],{"className":23,"code":345,"language":25,"meta":26,"style":26},"\u002F\u002F blocking\nconst result = await process.run(\"bun test\")\n\n\u002F\u002F detached\nconst server = process.spawn(\"bun dev\")\nawait server.waitFor(\"ready on port\")\nserver.kill()\n",[17,347,348,353,386,390,395,417,435],{"__ignoreMap":26},[30,349,350],{"class":32,"line":33},[30,351,352],{"class":63},"\u002F\u002F blocking\n",[30,354,355,358,362,365,369,372,374,376,379,383],{"class":32,"line":60},[30,356,357],{"class":36},"const",[30,359,361],{"class":360},"s9McN"," result",[30,363,364],{"class":50}," = ",[30,366,368],{"class":367},"sYbnZ","await",[30,370,371],{"class":80}," process",[30,373,51],{"class":50},[30,375,325],{"class":70},[30,377,378],{"class":50},"(",[30,380,382],{"class":381},"sKc5r","\"bun test\"",[30,384,385],{"class":50},")\n",[30,387,388],{"class":32,"line":67},[30,389,208],{"emptyLinePlaceholder":207},[30,391,392],{"class":32,"line":77},[30,393,394],{"class":63},"\u002F\u002F detached\n",[30,396,397,399,402,404,406,408,410,412,415],{"class":32,"line":93},[30,398,357],{"class":36},[30,400,401],{"class":360}," server",[30,403,364],{"class":50},[30,405,5],{"class":80},[30,407,51],{"class":50},[30,409,329],{"class":70},[30,411,378],{"class":50},[30,413,414],{"class":381},"\"bun dev\"",[30,416,385],{"class":50},[30,418,419,421,423,425,428,430,433],{"class":32,"line":144},[30,420,368],{"class":367},[30,422,401],{"class":80},[30,424,51],{"class":50},[30,426,427],{"class":70},"waitFor",[30,429,378],{"class":50},[30,431,432],{"class":381},"\"ready on port\"",[30,434,385],{"class":50},[30,436,437,440,442,445],{"class":32,"line":204},[30,438,439],{"class":80},"server",[30,441,51],{"class":50},[30,443,444],{"class":70},"kill",[30,446,447],{"class":50},"()\n",[449,450,451],"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);}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}",{"title":26,"searchDepth":60,"depth":60,"links":453},[],"Scripts run inside the capsule subprocess and have direct access to the global process\nobject. Axon extends it with two methods for shell execution:","md",{},"\u002Fdocs\u002Fv2\u002Fapi\u002Fproc",{"title":5,"description":454},"docs\u002Fv2\u002Fapi\u002Fproc","sAjYCxBLHG6aM1ZH50WyTu22HDLFgb1Sk_SKCJ1P1ac",1785671808311]