feat(code-mode): first-class nodes API (#114877)

* feat(agents): add nodes to code mode

* fix(agents): add code mode nodes discovery hint
This commit is contained in:
Peter Steinberger
2026-07-27 23:03:23 -04:00
committed by GitHub
parent b244adf430
commit ea707382fd
8 changed files with 464 additions and 0 deletions
+3
View File
@@ -144,12 +144,15 @@ function createCodeModeExecDescription(
const swarmGuidance = swarmEnabled
? " Swarm globals `agents.run`, `phase`, and `log` are available; read `agents.d.ts` for types and orchestration idioms."
: "";
const nodesGuidance =
"\n- nodes: paired Gateway nodes; nodes.list(), (await nodes.get(id)).invoke(command, params)\n";
const catalogIndex = catalog ? formatCodeModeCatalogIndex(catalog) : "";
return (
"Run JavaScript or TypeScript in OpenClaw code mode. Use `return` to pass the final value back; otherwise the result is `null`. Quick-index arrows show trusted declared output hints; `-> ?` means never guess result field names. For declared fields, process them in the first exec; do not spend another exec inspecting them. Perform dependent reads, checks, and follow-up calls in order; parallelize independent work only. For an unknown output, including a final dependent call after declared-output calls, return the raw tool value unchanged; do not wrap it in the requested answer shape or guess fields; filter or map it only in a later exec. Nested calls enforce normal tool policy and approvals. `ALL_TOOLS` is the complete compact catalog. Select exact ids directly or with `tools.search(query: string, options?)`; use `tools.describe(id: string)` only when needed. Never invent or transform a tool id. `tools.callValue(id: string, args?)` returns its JSON value directly; `tools.call(id: string, args?)` preserves `{ tool, result }`. Example: `const hit = ALL_TOOLS.find((entry) => entry.description.includes('weather')) ?? (await tools.search('weather'))[0]; return await tools.callValue(hit.id, {});`. Node.js modules and `require`/`import` are NOT available; use enabled catalog tools allowed by policy for shell, file, network, or external actions." +
apiGuidance +
mcpGuidance +
swarmGuidance +
nodesGuidance +
' The `language` field accepts only "javascript" or "typescript"; do not pass "bash", "shell", or other values.' +
" Both `code` and `command` contain JavaScript or TypeScript, never a shell command. " +
"For shell or file operations, call the exact catalog tool from guest JavaScript; do not retry failed shell source." +