[{"data":1,"prerenderedAt":324},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fresources":3},{"id":4,"title":5,"body":6,"description":15,"extension":317,"meta":318,"navigation":319,"path":320,"seo":321,"stem":322,"__hash__":323},"docs\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fresources.md","resources",{"type":7,"value":8,"toc":314},"minimark",[9,12,16,135,230,237,242,255,267,279,290,302,310],[10,11,5],"h1",{"id":5},[13,14,15],"p",{},"Caps on what the capsule can consume across a session. All fields are optional.",[17,18,23],"pre",{"className":19,"code":20,"language":21,"meta":22,"style":22},"language-ts shiki shiki-themes dark-plus","type ResourceLimits = {\n    maxMemoryMb?:         number   \u002F\u002F max heap in MB\n    maxCommandTimeMs?:    number   \u002F\u002F max wall-clock ms per command\n    maxFileReadBytes?:    number   \u002F\u002F max cumulative bytes read via fs across the session\n    maxFileWriteBytes?:   number   \u002F\u002F max cumulative bytes written via fs across the session\n    maxNetworkRequests?:  number   \u002F\u002F max outbound fetch() calls across the session\n    escalationTimeoutMs?: number   \u002F\u002F ms to wait for escalation approval — default: 30000\n}\n","ts","",[24,25,26,43,60,74,87,101,115,129],"code",{"__ignoreMap":22},[27,28,31,35,39],"span",{"class":29,"line":30},"line",1,[27,32,34],{"class":33},"scz_3","type",[27,36,38],{"class":37},"sNl3T"," ResourceLimits",[27,40,42],{"class":41},"sTNBD"," = {\n",[27,44,46,50,53,56],{"class":29,"line":45},2,[27,47,49],{"class":48},"s3F5K","    maxMemoryMb",[27,51,52],{"class":41},"?:         ",[27,54,55],{"class":37},"number",[27,57,59],{"class":58},"sOLPB","   \u002F\u002F max heap in MB\n",[27,61,63,66,69,71],{"class":29,"line":62},3,[27,64,65],{"class":48},"    maxCommandTimeMs",[27,67,68],{"class":41},"?:    ",[27,70,55],{"class":37},[27,72,73],{"class":58},"   \u002F\u002F max wall-clock ms per command\n",[27,75,77,80,82,84],{"class":29,"line":76},4,[27,78,79],{"class":48},"    maxFileReadBytes",[27,81,68],{"class":41},[27,83,55],{"class":37},[27,85,86],{"class":58},"   \u002F\u002F max cumulative bytes read via fs across the session\n",[27,88,90,93,96,98],{"class":29,"line":89},5,[27,91,92],{"class":48},"    maxFileWriteBytes",[27,94,95],{"class":41},"?:   ",[27,97,55],{"class":37},[27,99,100],{"class":58},"   \u002F\u002F max cumulative bytes written via fs across the session\n",[27,102,104,107,110,112],{"class":29,"line":103},6,[27,105,106],{"class":48},"    maxNetworkRequests",[27,108,109],{"class":41},"?:  ",[27,111,55],{"class":37},[27,113,114],{"class":58},"   \u002F\u002F max outbound fetch() calls across the session\n",[27,116,118,121,124,126],{"class":29,"line":117},7,[27,119,120],{"class":48},"    escalationTimeoutMs",[27,122,123],{"class":41},"?: ",[27,125,55],{"class":37},[27,127,128],{"class":58},"   \u002F\u002F ms to wait for escalation approval — default: 30000\n",[27,130,132],{"class":29,"line":131},8,[27,133,134],{"class":41},"}\n",[17,136,138],{"className":19,"code":137,"language":21,"meta":22,"style":22},"export default defineAgent({\n    policy: {\n        resources: {\n            maxMemoryMb:         512,\n            maxCommandTimeMs:    30_000,\n            maxFileReadBytes:    10_000_000,\n            maxNetworkRequests:  50,\n        },\n    },\n})\n",[24,139,140,156,164,171,183,193,203,213,218,224],{"__ignoreMap":22},[27,141,142,146,149,153],{"class":29,"line":30},[27,143,145],{"class":144},"sYbnZ","export",[27,147,148],{"class":144}," default",[27,150,152],{"class":151},"sCudf"," defineAgent",[27,154,155],{"class":41},"({\n",[27,157,158,161],{"class":29,"line":45},[27,159,160],{"class":48},"    policy:",[27,162,163],{"class":41}," {\n",[27,165,166,169],{"class":29,"line":62},[27,167,168],{"class":48},"        resources:",[27,170,163],{"class":41},[27,172,173,176,180],{"class":29,"line":76},[27,174,175],{"class":48},"            maxMemoryMb:",[27,177,179],{"class":178},"sDGX8","         512",[27,181,182],{"class":41},",\n",[27,184,185,188,191],{"class":29,"line":89},[27,186,187],{"class":48},"            maxCommandTimeMs:",[27,189,190],{"class":178},"    30_000",[27,192,182],{"class":41},[27,194,195,198,201],{"class":29,"line":103},[27,196,197],{"class":48},"            maxFileReadBytes:",[27,199,200],{"class":178},"    10_000_000",[27,202,182],{"class":41},[27,204,205,208,211],{"class":29,"line":117},[27,206,207],{"class":48},"            maxNetworkRequests:",[27,209,210],{"class":178},"  50",[27,212,182],{"class":41},[27,214,215],{"class":29,"line":131},[27,216,217],{"class":41},"        },\n",[27,219,221],{"class":29,"line":220},9,[27,222,223],{"class":41},"    },\n",[27,225,227],{"class":29,"line":226},10,[27,228,229],{"class":41},"})\n",[13,231,232,233,236],{},"When a limit is exceeded, the runtime emits a ",[24,234,235],{},"capsule:resource:exceeded"," event, the\noperation fails, and the agent is told the limit was hit. Limits are session-scoped —\nthey reset when the capsule restarts.",[238,239,241],"h2",{"id":240},"fields","Fields",[13,243,244,250,251,254],{},[245,246,247],"strong",{},[24,248,249],{},"maxMemoryMb"," — enforced via ",[24,252,253],{},"--max-old-space-size"," at spawn plus a watchdog inside\nthe subprocess. The subprocess is killed if it exceeds this.",[13,256,257,262,263,266],{},[245,258,259],{},[24,260,261],{},"maxCommandTimeMs"," — wall-clock timeout per command. A command that runs longer than\nthis is killed with a ",[24,264,265],{},"resource:exceeded"," error. The agent can catch this and try a\ndifferent approach.",[13,268,269,274,275,278],{},[245,270,271],{},[24,272,273],{},"maxFileReadBytes"," — cumulative across all ",[24,276,277],{},"fs.read"," calls in the session. Useful for\nagents processing user-supplied files where you want to cap total data ingested.",[13,280,281,274,286,289],{},[245,282,283],{},[24,284,285],{},"maxFileWriteBytes",[24,287,288],{},"fs.write"," calls. Caps total data the\nagent can write in a session.",[13,291,292,297,298,301],{},[245,293,294],{},[24,295,296],{},"maxNetworkRequests"," — total outbound ",[24,299,300],{},"fetch()"," calls. Prevents runaway API usage in\nloops.",[13,303,304,309],{},[245,305,306],{},[24,307,308],{},"escalationTimeoutMs"," — how long to wait for a human to approve or deny an escalated\ncall before failing closed. Default is 30 seconds. Applies in all execution contexts —\nif no TUI is attached, the escalation fails closed immediately after this timeout.",[311,312,313],"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 .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}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 .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}",{"title":22,"searchDepth":45,"depth":45,"links":315},[316],{"id":240,"depth":45,"text":241},"md",{},true,"\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fresources",{"title":5,"description":15},"docs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fresources","JfpjWmHsZnkygb9Kg9S0GGRK4QyU4tWh3SFnre9xtyY",1786529563276]