[{"data":1,"prerenderedAt":70},["ShallowReactive",2],{"docs:core-concepts/flowstate":3},{"title":4,"navTitle":4,"description":5,"api":6,"html":7,"toc":8,"path":59,"tab":60,"group":61,"prev":62,"next":65,"markdownUrl":68,"sourceUrl":69,"lastModified":6},"ThreadState","Unified runtime API for tools, hooks, and endpoints",null,"\u003Ch2 id=\"what-is-threadstate\">\u003Ca class=\"docs-anchor\" href=\"#what-is-threadstate\" aria-label=\"Link to this section\">\u003C/a>What Is ThreadState?\u003C/h2>\n\u003Cp>\u003Ccode>ThreadState\u003C/code> is the runtime interface passed to tools, hooks, and thread endpoints.\u003C/p>\n\u003Cp>It provides:\u003C/p>\n\u003Cul>\n\u003Cli>thread identity\u003C/li>\n\u003Cli>message operations\u003C/li>\n\u003Cli>model/prompt/agent loaders\u003C/li>\n\u003Cli>tool and effect scheduling helpers\u003C/li>\n\u003Cli>filesystem access\u003C/li>\n\u003Cli>sandboxed JavaScript/TypeScript execution through Dynamic Workers\u003C/li>\n\u003Cli>subagent hierarchy and lifecycle surfaces\u003C/li>\n\u003Cli>thread invocation arguments and per-execution scratch context\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"core-surfaces\">\u003Ca class=\"docs-anchor\" href=\"#core-surfaces\" aria-label=\"Link to this section\">\u003C/a>Core Surfaces\u003C/h2>\n\u003Ch3 id=\"identity\">\u003Ca class=\"docs-anchor\" href=\"#identity\" aria-label=\"Link to this section\">\u003C/a>Identity\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>threadId\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>agentId\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>userId\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>createdAt\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"messaging\">\u003Ca class=\"docs-anchor\" href=\"#messaging\" aria-label=\"Link to this section\">\u003C/a>Messaging\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>getMessages()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>getMessage()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>injectMessage()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>updateMessage()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>queueMessage()\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"subagent-hierarchy\">\u003Ca class=\"docs-anchor\" href=\"#subagent-hierarchy\" aria-label=\"Link to this section\">\u003C/a>Subagent Hierarchy\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>getChildThread(referenceId)\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>getParentThread()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>children\u003C/code> (child registry)\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"lifecycle\">\u003Ca class=\"docs-anchor\" href=\"#lifecycle\" aria-label=\"Link to this section\">\u003C/a>Lifecycle\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>terminate()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>terminated\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>status()\u003C/code> (the authoritative run status)\u003C/li>\n\u003Cli>\u003Ccode>stopSession()\u003C/code> (ends a session)\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"arguments-and-context\">\u003Ca class=\"docs-anchor\" href=\"#arguments-and-context\" aria-label=\"Link to this section\">\u003C/a>Arguments and Context\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>arguments\u003C/code>: read-only invocation or creation arguments for the thread\u003C/li>\n\u003Cli>\u003Ccode>context\u003C/code>: mutable scratch data shared only during the current execution\u003C/li>\n\u003C/ul>\n\u003Cp>For subagents, \u003Ccode>subagent_create.arguments\u003C/code> is persisted with the child thread and restored as \u003Ccode>state.arguments\u003C/code> for both child sides on every run. Top-level argument keys are also available to prompt variable interpolation, including included prompts.\u003C/p>\n\u003Cp>Use \u003Ccode>state.context\u003C/code> for derived values that should be shared among tools, hooks, and runtime code during one execution. Do not use it for durable thread state or subagent creation arguments; use \u003Ccode>state.arguments\u003C/code>, \u003Ccode>state.getValue()\u003C/code> / \u003Ccode>state.setValue()\u003C/code>, or files depending on the data.\u003C/p>\n\u003Ch3 id=\"resource-loading\">\u003Ca class=\"docs-anchor\" href=\"#resource-loading\" aria-label=\"Link to this section\">\u003C/a>Resource Loading\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>loadModel()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>loadPrompt()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>loadAgent()\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"environment\">\u003Ca class=\"docs-anchor\" href=\"#environment\" aria-label=\"Link to this section\">\u003C/a>Environment\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>env(propertyName)\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>envType(propertyName)\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>instanceEnv(propertyName)\u003C/code> (optional in the specification)\u003C/li>\n\u003Cli>\u003Ccode>setEnv(propertyName, value, options?)\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Ccode>env()\u003C/code> resolves values in this order: thread environment, agent definition defaults, prompt definition defaults, user-account environment, then runtime-instance environment. \u003Ccode>envType()\u003C/code> returns \u003Ccode>secret\u003C/code> by default; \u003Ccode>text\u003C/code> values may be shown in tool output and errors, while \u003Ccode>secret\u003C/code> values should be redacted. \u003Ccode>setEnv()\u003C/code> writes a thread-scoped env value and propagates it to active descendant threads. Pass \u003Ccode>{ type: 'text' }\u003C/code> or \u003Ccode>{ type: 'secret' }\u003C/code> to choose the display/redaction type; omitting \u003Ccode>type\u003C/code> preserves the existing type or defaults new keys to \u003Ccode>secret\u003C/code>.\u003C/p>\n\u003Cp>\u003Ccode>instanceEnv()\u003C/code> reads only the runtime instance. Use it for trusted service\nconfiguration that thread or user values must not override. Check that the\nmethod exists before you call it on another runtime.\u003C/p>\n\u003Ch3 id=\"utilities\">\u003Ca class=\"docs-anchor\" href=\"#utilities\" aria-label=\"Link to this section\">\u003C/a>Utilities\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Ccode>queueTool()\u003C/code> / \u003Ccode>invokeTool()\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>scheduleEffect()\u003C/code> / \u003Ccode>getScheduledEffects()\u003C/code> / \u003Ccode>removeScheduledEffect()\u003C/code> (see \u003Ca href=\"/docs/core-concepts/effects\">Effects\u003C/a>)\u003C/li>\n\u003Cli>\u003Ccode>runtimeStreams\u003C/code> (see \u003Ca href=\"/docs/core-concepts/runtime-streams\">Runtime streams\u003C/a>)\u003C/li>\n\u003Cli>file APIs (\u003Ccode>readFile\u003C/code>, \u003Ccode>writeFile\u003C/code>, \u003Ccode>readdirFile\u003C/code>, \u003Ccode>findFiles\u003C/code>, etc.)\u003C/li>\n\u003Cli>\u003Ccode>runCode(source, options?)\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"code-execution\">\u003Ca class=\"docs-anchor\" href=\"#code-execution\" aria-label=\"Link to this section\">\u003C/a>Code Execution\u003C/h3>\n\u003Cp>\u003Ccode>runCode()\u003C/code> executes JavaScript or TypeScript in a Cloudflare Dynamic Worker sandbox loaded by stable content ID when possible. The sandbox does not receive thread state, filesystem, network access, timers, or host globals automatically. Bridge exact capabilities through \u003Ccode>options.imports\u003C/code> and \u003Ccode>options.globals\u003C/code>, use \u003Ccode>options.modules\u003C/code> for local relative ES modules, and use \u003Ccode>options.execute\u003C/code> to choose which export to run with which arguments. By default, Standard Agents Builder executes the \u003Ccode>default\u003C/code> export with no args. Sandbox code can call and await a bridged function at the top level of a module as well as inside an exported function.\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"typescript\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">const\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> run\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> =\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> state.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">runCode\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">  `\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">    const text = await readText('/notes.txt');\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">    report({ length: text.length });\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">    export function summarize(limit: number) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">      return text.slice(0, limit);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">  `\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">  {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">    execute\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">fn\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'summarize'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">, \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">args\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\">120\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">] },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">    globals\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">      readText\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> async\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#FFAB70\">path\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\">:\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#79B8FF\"> string\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">) \u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">=>\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">        const\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> data\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> =\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> await\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> state.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">readFile\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">(path);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">        return\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> data \u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\">?\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> new\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\"> TextDecoder\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">().\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">decode\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">(data) \u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> ''\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">      },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">    report\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#FFAB70\">value\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">) \u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">=>\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> console.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">log\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">(value),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">const\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> result\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> =\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> await\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> run;\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>The returned handle is promise-like and supports \u003Ccode>run.terminate(reason)\u003C/code>. Standard Agents Builder uses the \u003Ccode>AGENT_BUILDER_CODE_LOADER\u003C/code> Worker Loader binding; missing configuration returns a \u003Ccode>link_error\u003C/code> result naming that binding.\u003C/p>\n\u003Cp>The memory limit of a sandbox is 134,217,728 bytes (128 MB). Cloudflare fixes this ceiling for each Workers isolate. The Worker Loader accepts limits for CPU time and subrequests only, and the isolate exposes no heap measurement. For these reasons Standard Agents Builder handles \u003Ccode>memoryLimitBytes\u003C/code> as follows:\u003C/p>\n\u003Cul>\n\u003Cli>A value below the ceiling is accepted and has no effect. The 128 MB ceiling applies.\u003C/li>\n\u003Cli>A value above the ceiling is clamped to the ceiling. The run is not rejected.\u003C/li>\n\u003Cli>When \u003Ccode>memoryLimitBytes\u003C/code> is omitted, the ceiling is the default limit.\u003C/li>\n\u003Cli>A value that is not a positive finite number returns \u003Ccode>status: 'link_error'\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>A memory failure that the platform or the engine reports returns \u003Ccode>status: 'memory'\u003C/code>. Its \u003Ccode>error.message\u003C/code> names the effective limit, and it states whether a requested value was clamped or was not applied. \u003Ccode>memoryUsedBytes\u003C/code> is not reported.\u003C/p>\n\u003Ch2 id=\"threadstate-in-tools\">\u003Ca class=\"docs-anchor\" href=\"#threadstate-in-tools\" aria-label=\"Link to this section\">\u003C/a>ThreadState in Tools\u003C/h2>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"typescript\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">import\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">defineTool\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> } \u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">from\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> '@standardagents/spec'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">import\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">z\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> } \u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">from\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'zod'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">export\u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#F97583\"> default\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\"> defineTool\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">  description\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'Inspect subagent status'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">  args\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> z.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">object\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">({ \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">referenceId\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> z.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">string\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">() }),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">  execute\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> async\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#FFAB70\">state\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">, \u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#FFAB70\">args\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">) \u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">=>\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">    const\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> child\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> =\u003C/span>\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\"> await\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> state.\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">getChildThread\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">(args.\u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">referenceId\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">    if\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\">!\u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">child\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">      return\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">status\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'error'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">, \u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">error\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'Child thread not found.'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> };\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A626A4;--shiki-dark:#F97583\">    return\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">      status\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> 'success'\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">      result\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#E1E4E8\">:\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> `Child terminated: \u003C/span>\u003Cspan style=\"--shiki-light:#CA1243;--shiki-dark:#9ECBFF\">${\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">child\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">.\u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">terminated\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> ?\u003C/span>\u003Cspan style=\"--shiki-light:#CA1243;--shiki-dark:#9ECBFF\"> '\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">yes\u003C/span>\u003Cspan style=\"--shiki-light:#CA1243;--shiki-dark:#9ECBFF\">'\u003C/span>\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#F97583\"> :\u003C/span>\u003Cspan style=\"--shiki-light:#CA1243;--shiki-dark:#9ECBFF\"> '\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">no\u003C/span>\u003Cspan style=\"--shiki-light:#CA1243;--shiki-dark:#9ECBFF\">'}\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">`\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">    };\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">});\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Ch2 id=\"queue-semantics\">\u003Ca class=\"docs-anchor\" href=\"#queue-semantics\" aria-label=\"Link to this section\">\u003C/a>Queue Semantics\u003C/h2>\n\u003Cp>\u003Ccode>queueMessage()\u003C/code> is durable and ordered:\u003C/p>\n\u003Cul>\n\u003Cli>active thread: injected before next model step\u003C/li>\n\u003Cli>idle thread: queue triggers execution\u003C/li>\n\u003Cli>queue survives eviction\u003C/li>\n\u003Cli>a message sent through the HTTP API while the thread is active is delivered the same way: it joins the running execution in the order it was sent\u003C/li>\n\u003Cli>message APIs expose \u003Ccode>sendMessage()\u003C/code> and \u003Ccode>queueMessage()\u003C/code> queued entries as pending messages with \u003Ccode>metadata.queued: true\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"cross-thread-attachment-safety\">\u003Ca class=\"docs-anchor\" href=\"#cross-thread-attachment-safety\" aria-label=\"Link to this section\">\u003C/a>Cross-Thread Attachment Safety\u003C/h2>\n\u003Cp>When parent/child communication includes attachments, runtimes copy files across thread filesystems and rewrite attachment paths to destination-local values.\u003C/p>\n\u003Ch2 id=\"notes\">\u003Ca class=\"docs-anchor\" href=\"#notes\" aria-label=\"Link to this section\">\u003C/a>Notes\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ccode>execution\u003C/code> may be \u003Ccode>null\u003C/code> when thread is at rest.\u003C/li>\n\u003Cli>\u003Ccode>arguments\u003C/code> is the place for thread invocation and subagent creation arguments.\u003C/li>\n\u003Cli>\u003Ccode>context\u003C/code> is ephemeral execution scratch state, not durable storage.\u003C/li>\n\u003Cli>\u003Ccode>_notPackableRuntimeContext\u003C/code> is runtime-specific and not portable.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"related\">\u003Ca class=\"docs-anchor\" href=\"#related\" aria-label=\"Link to this section\">\u003C/a>Related\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"/docs/core-concepts/thread\">Thread\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/docs/core-concepts/subagents\">Subagents\u003C/a>\u003C/li>\n\u003C/ul>",[9,13,16,20,23,26,29,32,35,38,41,44,47,50,53,56],{"id":10,"text":11,"depth":12},"what-is-threadstate","What Is ThreadState?",2,{"id":14,"text":15,"depth":12},"core-surfaces","Core Surfaces",{"id":17,"text":18,"depth":19},"identity","Identity",3,{"id":21,"text":22,"depth":19},"messaging","Messaging",{"id":24,"text":25,"depth":19},"subagent-hierarchy","Subagent Hierarchy",{"id":27,"text":28,"depth":19},"lifecycle","Lifecycle",{"id":30,"text":31,"depth":19},"arguments-and-context","Arguments and Context",{"id":33,"text":34,"depth":19},"resource-loading","Resource Loading",{"id":36,"text":37,"depth":19},"environment","Environment",{"id":39,"text":40,"depth":19},"utilities","Utilities",{"id":42,"text":43,"depth":19},"code-execution","Code Execution",{"id":45,"text":46,"depth":12},"threadstate-in-tools","ThreadState in Tools",{"id":48,"text":49,"depth":12},"queue-semantics","Queue Semantics",{"id":51,"text":52,"depth":12},"cross-thread-attachment-safety","Cross-Thread Attachment Safety",{"id":54,"text":55,"depth":12},"notes","Notes",{"id":57,"text":58,"depth":12},"related","Related","core-concepts/flowstate","docs","Core Concepts",{"path":63,"title":64,"navTitle":64},"core-concepts/effects","Effects",{"path":66,"title":67,"navTitle":67},"core-concepts/runtime-streams","Runtime streams","/docs/core-concepts/flowstate.md","https://github.com/standardagents/agentbuilder/blob/main/docs/core-concepts/flowstate.mdx",1794580508796]