[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-labs-just-bash-executor":3,"mdc-tsee6r-key":39,"related-org-vercel-labs-just-bash-executor":9144,"related-repo-vercel-labs-just-bash-executor":9311},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":34,"sourceUrl":37,"mdContent":38},"just-bash-executor","convert remote APIs into bash CLI tools","Convert a GraphQL endpoint, OpenAPI spec, or MCP server into bash CLI commands and a `tools.*` JS API runnable inside `just-bash`'s `js-exec` sandbox. Use when the user wants to expose a remote API to a sandboxed bash agent, build a tool-calling agent on top of just-bash, or generate CLI commands from an existing API spec.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel-labs","Vercel Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel-labs.png",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"GraphQL","graphql","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":20,"slug":21,"type":15},"CLI","cli",{"name":23,"slug":24,"type":15},"API Development","api-development",{"name":26,"slug":27,"type":15},"OpenAPI","openapi",3924,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fjust-bash","2026-07-17T06:08:50.15428",null,217,[],{"repoUrl":29,"stars":28,"forks":32,"topics":35,"description":36},[],"Bash for Agents","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fjust-bash\u002Ftree\u002FHEAD\u002Fpackages\u002Fjust-bash-executor","---\nname: just-bash-executor\ndescription: Convert a GraphQL endpoint, OpenAPI spec, or MCP server into bash CLI commands and a `tools.*` JS API runnable inside `just-bash`'s `js-exec` sandbox. Use when the user wants to expose a remote API to a sandboxed bash agent, build a tool-calling agent on top of just-bash, or generate CLI commands from an existing API spec.\n---\n\n# `@just-bash\u002Fexecutor` — agent guide\n\nThis file is for an AI agent writing code that uses `@just-bash\u002Fexecutor`. It\nmaps each input (an OpenAPI spec, a GraphQL endpoint, an MCP server, or your\nown JS functions) to the exact code to write and the exact surfaces (JS API +\nbash CLI) the user gets back.\n\nRead top to bottom on the first task; jump by section number on later tasks.\n\n## §1. Decide which source kind you have\n\n```text\nHave an OpenAPI spec \u002F Swagger doc?     → §3 OpenAPI\nHave a GraphQL endpoint or SDL?         → §4 GraphQL\nHave an MCP server (URL or stdio)?      → §5 MCP\nDefining tools yourself in code?        → §2 Inline\nMixing several of the above?            → call sources.add() once per source\n                                          inside the same setup(); paths stay\n                                          namespaced by `name`\n```\n\nFor all four, the consuming code is identical (§6, §7) — what changes is the\n`createExecutor` config.\n\n## §2. Inline tools\n\nUse when there's no upstream spec — the user wants to expose specific JS\nfunctions to the sandbox.\n\n```ts\nimport { Bash } from \"just-bash\";\nimport { createExecutor } from \"@just-bash\u002Fexecutor\";\n\nconst executor = await createExecutor({\n  tools: {\n    \"ns.action\": {\n      description: \"What it does\",\n      execute: async (args: { \u002F* shape *\u002F }) => ({ \u002F* JSON-serializable *\u002F }),\n    },\n  },\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n});\n```\n\nConversion (single rule):\n\n```text\nkey in tools: {…}      JS                          bash\n\"ns.action\"      →     await tools.ns.action(args) ns action key=value\n                                                    ns action --key value\n                                                    ns action --json '{\"key\":1}'\n```\n\nThe first dot-segment is the namespace command; the rest is the subcommand\n(kebab-cased, with the original form as an alias when different).\n\n## §3. OpenAPI → tools\n\nAsk the user for: spec source, base endpoint, namespace `name`, and optional\nauth headers.\n\nThe `spec` field accepts three forms:\n\n```ts\nspec: \"https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json\"  \u002F\u002F URL — fetched at setup\nspec: fs.readFileSync(\".\u002Fopenapi.yaml\", \"utf8\")          \u002F\u002F YAML text\nspec: JSON.stringify(specObject)                          \u002F\u002F JSON text\n```\n\nFor authenticated APIs, pass `headers` (and optionally `queryParams`):\n\n```ts\nawait sdk.sources.add({\n  kind: \"openapi\",\n  spec: \"https:\u002F\u002Fapi.github.com\u002Fopenapi.json\",\n  endpoint: \"https:\u002F\u002Fapi.github.com\",\n  name: \"github\",\n  headers: {\n    Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n    Accept: \"application\u002Fvnd.github+json\",\n  },\n});\n```\n\nFull inline example:\n\n```ts\nimport { createExecutor } from \"@just-bash\u002Fexecutor\";\nimport { Bash } from \"just-bash\";\n\n\u002F\u002F `spec` is the raw OpenAPI document as a STRING (JSON or YAML text),\n\u002F\u002F not a parsed object. Read it from disk if you have a file.\nconst PETSTORE_SPEC = JSON.stringify({\n  openapi: \"3.0.0\",\n  info: { title: \"Petstore\", version: \"1.0.0\" },\n  paths: {\n    \"\u002Fpets\": {\n      get: {\n        operationId: \"listPets\",\n        parameters: [\n          { name: \"status\", in: \"query\", schema: { type: \"string\" } },\n        ],\n        responses: { \"200\": { description: \"ok\" } },\n      },\n      post: {\n        operationId: \"createPet\",\n        requestBody: {\n          content: {\n            \"application\u002Fjson\": {\n              schema: {\n                type: \"object\",\n                properties: { name: { type: \"string\" } },\n              },\n            },\n          },\n        },\n        responses: { \"201\": { description: \"ok\" } },\n      },\n    },\n    \"\u002Fpets\u002F{petId}\": {\n      get: {\n        operationId: \"getPetById\",\n        parameters: [\n          { name: \"petId\", in: \"path\", required: true, schema: { type: \"string\" } },\n        ],\n        responses: { \"200\": { description: \"ok\" } },\n      },\n    },\n  },\n});\n\nconst executor = await createExecutor({\n  setup: async (sdk) => {\n    await sdk.sources.add({\n      kind: \"openapi\",\n      spec: PETSTORE_SPEC,\n      endpoint: \"https:\u002F\u002Fpetstore.example.com\",\n      name: \"pets\",            \u002F\u002F becomes the namespace\n    });\n  },\n  onToolApproval: \"allow-all\",\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n});\n```\n\nConversion rules:\n\n- One tool per operation in the spec\n- Tool path: `\u003Cname>.\u003CfirstUrlSegment>.\u003CoperationId>` — the first URL path\n  segment is included as a grouping prefix (camelCase preserved on the operationId)\n- Args object = path params + query params + requestBody fields, flattened\n- Bash subcommand: kebab-case of `\u003CfirstUrlSegment>.\u003CoperationId>`; original\n  camelCase form is kept as an alias\n\nExample (from the spec above — all under `\u002Fpets\u002F*`):\n\n```text\noperationId      → tool path                 JS call                                                  bash\nlistPets         → pets.pets.listPets        await tools.pets.pets.listPets({ status })               pets pets.list-pets --status open\ncreatePet        → pets.pets.createPet       await tools.pets.pets.createPet({ name })                pets pets.create-pet --name Fido\ngetPetById       → pets.pets.getPetById      await tools.pets.pets.getPetById({ petId })              pets pets.get-pet-by-id --pet-id 42\n```\n\n(The double `pets.pets` looks awkward but is deterministic: the first `pets`\nis your `name`, the second is the URL's first path segment.)\n\nPitfalls:\n\n- `spec` must be a **string** (URL, JSON text, or YAML text), not a parsed object\n- Operations missing `operationId` are skipped; if the user's spec lacks them,\n  add them or fall back to inline tools\n- All param locations (path, query, body) flatten into one args object — name\n  collisions across locations are the user's problem to resolve\n- `headers` are sent on every invocation — fine for static tokens, but for\n  per-request auth wire an inline tool that adds the header dynamically\n- The plugin is loaded lazily via `setup`; install `@executor-js\u002Fplugin-openapi`\n  alongside `@executor-js\u002Fsdk` or `createExecutor` will throw\n\n## §4. GraphQL → tools\n\nAsk the user for: endpoint URL, optional introspection JSON, a namespace `name`,\nand optional auth headers.\n\n```ts\nconst executor = await createExecutor({\n  setup: async (sdk) => {\n    await sdk.sources.add({\n      kind: \"graphql\",\n      endpoint: \"https:\u002F\u002Fapi.github.com\u002Fgraphql\",\n      name: \"github\",\n      headers: {\n        Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n      },\n      \u002F\u002F Optional: pre-fetched schema; skips the introspection round-trip and\n      \u002F\u002F lets discovery work offline. Recommended for unstable upstreams.\n      \u002F\u002F introspectionJson: INTROSPECTION_JSON,\n    });\n  },\n  onToolApproval: \"allow-all\",\n});\n```\n\nConversion rules:\n\n- One tool per top-level Query and Mutation field\n- Tool path: `\u003Cname>.query.\u003CfieldName>` for queries and\n  `\u003Cname>.mutation.\u003CfieldName>` for mutations (camelCase preserved)\n- Args object = the field's argument definitions\n- Result is the raw GraphQL response envelope: `{ status, data, errors }`.\n  Scripts must check `errors` and read `data` themselves — there is no\n  auto-unwrap.\n- The plugin auto-generates a shallow selection set. Queries whose return\n  types contain nested object fields will fail server-side validation\n  (\"Field X of type Y must have a selection of subfields\"). For these,\n  wrap the call in an inline tool that posts a hand-written GraphQL query\n  via `fetch` instead of going through the SDK plugin.\n- Subscriptions are not currently exposed as callable tools\n\nExample, from the public Countries schema (all queries):\n\n```text\nQuery field      → tool path                JS call                                                            bash\ncountry(code)    → geo.query.country        await tools.geo.query.country({ code: \"JP\" })                      geo query.country code=JP\ncountries(filter)→ geo.query.countries      await tools.geo.query.countries({ filter: { ... } })               geo query.countries --json '{\"filter\":{...}}'\ncontinent(code)  → geo.query.continent      await tools.geo.query.continent({ code: \"EU\" })                    geo query.continent code=EU\ncontinents       → geo.query.continents     await tools.geo.query.continents({})                               geo query.continents\nlanguage(code)   → geo.query.language       await tools.geo.query.language({ code: \"en\" })                     geo query.language code=en\nlanguages        → geo.query.languages      await tools.geo.query.languages({})                                geo query.languages\n```\n\nReading the response in a script:\n\n```js\nconst r = await tools.geo.query.country({ code: \"JP\" });\nif (r.errors && r.errors.length) {\n  throw new Error(r.errors.map((e) => e.message).join(\"; \"));\n}\nconst country = r.data.country;\nconsole.log(country.name);\n```\n\nPitfalls:\n\n- Required GraphQL args (`String!`, `ID!`) must be passed; the SDK surfaces\n  validation errors as thrown exceptions inside scripts — wrap calls in\n  `try\u002Fcatch` if the agent might call with empty args\n- For complex `filter`\u002Finput-object args, prefer `--json` over `key=value`\n- `headers` apply to introspection AND every tool call — useful for tokens,\n  but don't put per-user identity here\n- Install `@executor-js\u002Fplugin-graphql` alongside `@executor-js\u002Fsdk`\n\n## §5. MCP → tools\n\nAsk the user for: transport (`\"remote\"` or `\"stdio\"`), endpoint URL or\ncommand+args, a namespace `name`.\n\n```ts\nconst executor = await createExecutor({\n  setup: async (sdk) => {\n    \u002F\u002F Remote (SSE \u002F HTTP)\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.example.com\u002Fsse\",\n      name: \"docs\",\n    });\n\n    \u002F\u002F Remote with auth headers\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.context7.com\u002Fmcp\",\n      name: \"context7\",\n      headers: {\n        Authorization: `Bearer ${process.env.CONTEXT7_TOKEN}`,\n      },\n    });\n\n    \u002F\u002F Stdio (local process) — env vars and cwd are passed to the child\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"stdio\",\n      command: \"npx\",\n      args: [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fdata\"],\n      env: { LOG_LEVEL: \"info\" },\n      cwd: \"\u002Fwork\",\n      name: \"fs\",\n    });\n  },\n  onToolApproval: async (req) => {\n    \u002F\u002F MCP servers can do destructive things — gate by tool path\n    if (req.toolPath.endsWith(\".write_file\")) {\n      return { approved: false, reason: \"writes need review\" };\n    }\n    return { approved: true };\n  },\n  onElicitation: async (ctx) => {\n    \u002F\u002F MCP servers may request user input mid-tool (forms, OAuth URLs).\n    \u002F\u002F Decline by default; implement a real handler for interactive flows.\n    return { action: \"decline\" };\n  },\n});\n```\n\nConversion rules:\n\n- One tool per tool advertised by the MCP server's `tools\u002Flist` capability\n- Tool path: `\u003Cname>.\u003Cserver-tool-name>` — server tool names are preserved\n  verbatim (often `snake_case` like `read_file`)\n- Args object = the MCP tool's input schema\n- Subcommand: server tool name → kebab-case; original (snake_case or otherwise)\n  is kept as an alias when different\n\nExample (filesystem-style MCP server with `read_file`, `list_dir`):\n\n```text\nserver tool   → tool path        JS call                                       bash kebab                        bash snake alias\nread_file     → fs.read_file     await tools.fs.read_file({ path: \"\u002Fx.md\" })   fs read-file path=\u002Fx.md           fs read_file path=\u002Fx.md\nlist_dir      → fs.list_dir      await tools.fs.list_dir({ path: \"\u002F\" })        fs list-dir path=\u002F                fs list_dir path=\u002F\n```\n\nPitfalls:\n\n- `transport: \"remote\"` requires `endpoint`; `transport: \"stdio\"` requires\n  `command` + `args`\n- MCP servers with elicitation flows need an `onElicitation` handler other\n  than the default decline-all, otherwise interactive tools will fail\n- Install `@executor-js\u002Fplugin-mcp` alongside `@executor-js\u002Fsdk`\n\n## §5b. Combining multiple sources in one executor\n\nReal agents usually need more than one upstream. Add as many `sources.add()`\ncalls as you want inside the same `setup`; each registers its own namespace and\ntools land in a single unified `tools` proxy \u002F bash command set.\n\n```ts\nconst executor = await createExecutor({\n  setup: async (sdk) => {\n    \u002F\u002F OpenAPI from a URL (no auth)\n    await sdk.sources.add({\n      kind: \"openapi\",\n      spec: \"https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json\",\n      name: \"petstore\",\n    });\n\n    \u002F\u002F GraphQL with bearer auth\n    await sdk.sources.add({\n      kind: \"graphql\",\n      endpoint: \"https:\u002F\u002Fapi.github.com\u002Fgraphql\",\n      name: \"github\",\n      headers: { Authorization: `Bearer ${process.env.GITHUB_TOKEN}` },\n    });\n\n    \u002F\u002F Remote MCP for context lookups\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.example.com\u002Fsse\",\n      name: \"context\",\n    });\n  },\n  \u002F\u002F Inline tools coexist with discovered ones; inline wins on path conflict.\n  tools: {\n    \"util.now\": {\n      description: \"Wall-clock ISO timestamp\",\n      execute: () => ({ ts: new Date().toISOString() }),\n    },\n  },\n  onToolApproval: async (req) => {\n    \u002F\u002F Different policy per source\n    if (req.sourceId === \"github\" && req.toolPath.includes(\"delete\")) {\n      return { approved: false, reason: \"github deletes need review\" };\n    }\n    return { approved: true };\n  },\n});\n```\n\nA js-exec script can then call across all sources in one turn. Remember the\nshape per source kind: GraphQL paths are `\u003Cname>.query.\u003Cfield>`, OpenAPI paths\nare `\u003Cname>.\u003CfirstUrlSegment>.\u003CoperationId>`, MCP paths are\n`\u003Cname>.\u003Cserver-tool-name>`, inline paths are exactly your key.\n\n```js\nconst repos = await tools.github.query.search({ query: \"stars:>10000\", type: \"REPOSITORY\" });\nconst pet   = await tools.petstore.pet.findPetById({ petId: 1 });\nconst ctx   = await tools.context.lookup({ name: \"react\" });\nconst ts    = await tools.util.now();\n\u002F\u002F GraphQL responses are wrapped — unwrap before reading\nconsole.log({\n  repos: repos.data?.search?.repositoryCount ?? null,\n  pet, ctx, ts,\n});\n```\n\nUse distinct `name` values per source — collisions silently overwrite tool\npaths within the namespace.\n\n## §6. Calling generated tools — the rules to internalize\n\nThese two tables are the only things you need to memorize. They apply to all\nfour source kinds — the conversion is uniform.\n\n### JS API (inside `js-exec` scripts)\n\n| Want                      | Write                                          |\n| ------------------------- | ---------------------------------------------- |\n| Call any tool             | `await tools.\u003Cnamespace>.\u003Cname>(args)`         |\n| Pass no args              | `await tools.ns.name()` or `({})`              |\n| Catch tool errors         | `try { ... } catch (e) { e.message }`          |\n| Snake-case server tool    | `await tools.docs[\"read_file\"]({ path })`      |\n| Deeply nested path        | `await tools.a.b.c.d(args)` — works as written |\n\n`undefined` returns reach the script as `undefined`; everything else is\nJSON-serialized and parsed back into a JS value.\n\n### Bash CLI (inside `bash.exec(...)` scripts)\n\n| Want                | Write                                   |\n| ------------------- | --------------------------------------- |\n| key=value           | `ns name a=1 b=2`                       |\n| flags               | `ns name --a 1 --b 2`                   |\n| `--key=value`       | `ns name --a=1`                         |\n| Bool flag           | `ns name --verbose` → `{verbose: true}` |\n| Inline JSON         | `ns name --json '{\"a\":1,\"b\":2}'`        |\n| Piped JSON          | `echo '{\"a\":1}' \\| ns name`             |\n| Compose with jq     | `ns name a=1 \\| jq -r .field`           |\n| Show help           | `ns --help` or `ns name --help`         |\n\nMode precedence when more than one is used: **flags > `--json` > stdin**.\n\nValues are coerced via `JSON.parse` first (`a=2` → number `2`,\n`ok=true` → boolean `true`, `xs=[1,2]` → array), falling back to string when\nparsing fails.\n\nTool errors land on stderr with format `\u003Cnamespace>: \u003Csubcommand>: \u003Cmessage>`\nand exit code 1.\n\n## §7. Skeleton an agent can copy and adapt\n\nSelf-contained — pick a source kind, fill in the spec, run with `tsx`.\n\n```ts\nimport { Bash } from \"just-bash\";\nimport { createExecutor } from \"@just-bash\u002Fexecutor\";\n\nconst executor = await createExecutor({\n  \u002F\u002F Pick ONE of: `tools` (inline) or `setup` (SDK), or both.\n  tools: {\n    \"math.add\": {\n      description: \"Add two numbers\",\n      execute: ({ a, b }: { a: number; b: number }) => ({ sum: a + b }),\n    },\n  },\n  \u002F\u002F setup: async (sdk) => {\n  \u002F\u002F   await sdk.sources.add({ kind: \"openapi\", spec, endpoint, name });\n  \u002F\u002F },\n  onToolApproval: \"allow-all\",\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n  executionLimits: { maxJsTimeoutMs: 30_000 },\n});\n\n\u002F\u002F 1. JS API\nconst r1 = await bash.exec(`js-exec -c '\n  try {\n    const r = await tools.math.add({ a: 2, b: 3 });\n    console.log(\"sum=\" + r.sum);\n  } catch (e) {\n    console.error(\"tool failed:\", e.message);\n  }\n'`);\nprocess.stdout.write(r1.stdout);\nif (r1.stderr) process.stderr.write(r1.stderr);\n\n\u002F\u002F 2. Bash CLI — three input modes, all equivalent\nfor (const cmd of [\n  \"math add a=2 b=3\",\n  \"math add --a 2 --b 3\",\n  `echo '{\"a\":2,\"b\":3}' | math add`,\n]) {\n  const r = await bash.exec(cmd);\n  console.log(`${cmd}  →  ${r.stdout.trim()}  (exit=${r.exitCode})`);\n}\n\n\u002F\u002F 3. Help text\nprocess.stdout.write((await bash.exec(\"math --help\")).stdout);\n```\n\n## §8. Verification before reporting \"done\"\n\nRun these checks in order. Stop at the first failure.\n\n1. **Exec works.** A simple call returns exit 0 with parseable JSON on stdout:\n   ```ts\n   const r = await bash.exec(`\u003Cns> \u003Csubcommand> \u003Cargs>`);\n   JSON.parse(r.stdout);  \u002F\u002F should not throw\n   ```\n2. **Wrong path errors clearly.** `await tools.ns.nope({})` throws with\n   `Unknown tool` in the message — confirms dispatch is wired.\n3. **Help reflects discovery.** `bash.exec(\"\u003Cns> --help\")` lists every tool\n   the user expected. If a tool's missing, the source registration didn't pick\n   it up (most often: missing `operationId` for OpenAPI; subscription field\n   for GraphQL; capability not advertised for MCP).\n4. **Inspect via SDK handle (when `setup` was used):**\n   ```ts\n   \u002F\u002F List everything\n   const all = await executor.sdk!.tools.list();\n   console.log(all.map(t => t.id));\n\n   \u002F\u002F Filter by source\n   const ghOnly = await executor.sdk!.tools.list({ sourceId: \"github\" });\n\n   \u002F\u002F Search descriptions\u002Fnames\n   const writes = await executor.sdk!.tools.list({ query: \"create\" });\n   ```\n5. **Approval gates work.** If you wired `onToolApproval`, deny one path and\n   confirm the call throws inside `js-exec` rather than silently succeeding.\n\n## §9. Anti-patterns\n\n- **Don't pass parsed objects to `kind: \"openapi\"`.** `spec` is a string\n  (JSON or YAML text). Use `JSON.stringify(...)` or `fs.readFileSync(path, \"utf8\")`.\n- **Don't put tool logic inside the `js-exec` script.** `execute` runs on the\n  host; the script just calls it. Putting fetches or DB calls in the script\n  defeats the sandbox.\n- **Don't rely on `await` doing real async work.** Tool calls are synchronous\n  via `Atomics.wait` from the script's perspective; `await` is for portability\n  with other runtimes.\n- **Don't expose host-FS or shell tools without an `onToolApproval` gate.**\n  The default `\"allow-all\"` is fine for read-only or pure-compute tools; for\n  anything destructive, gate by `toolPath`.\n- **Don't reuse a namespace across sources.** Two `sources.add` calls with the\n  same `name` will collide. Use distinct names per source.\n- **Don't skip installing the plugin package.** `@executor-js\u002Fsdk` alone is not\n  enough — each source kind requires its plugin (`@executor-js\u002Fplugin-openapi`,\n  `…-graphql`, `…-mcp`).\n\n## §10. Cross-references\n\n- [`README.md`](.\u002FREADME.md) — conceptual overview, configuration reference\n- [`examples\u002Fexecutor-tools\u002F`](..\u002F..\u002Fexamples\u002Fexecutor-tools\u002F) — runnable\n  end-to-end examples (`inline-tools.ts`, `multi-turn-discovery.ts`)\n- [`@executor-js\u002Fsdk`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@executor-js\u002Fsdk) —\n  upstream SDK whose plugins drive discovery\n",{"data":40,"body":41},{"name":4,"description":6},{"type":42,"children":43},"root",[44,60,73,78,85,97,110,116,121,602,607,616,621,627,640,653,795,816,1103,1108,2715,2720,2761,2773,2782,2809,2814,2898,2904,2916,3269,3273,3353,3358,3367,3372,3727,3731,3818,3824,3850,4987,4991,5044,5062,5071,5075,5146,5152,5180,6194,6221,6689,6701,6707,6712,6727,6849,6867,6880,7054,7072,7123,7136,7142,7154,8316,8322,8327,8873,8879,9068,9074,9138],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"just-bashexecutor-agent-guide",[50,58],{"type":45,"tag":51,"props":52,"children":54},"code",{"className":53},[],[55],{"type":56,"value":57},"text","@just-bash\u002Fexecutor",{"type":56,"value":59}," — agent guide",{"type":45,"tag":61,"props":62,"children":63},"p",{},[64,66,71],{"type":56,"value":65},"This file is for an AI agent writing code that uses ",{"type":45,"tag":51,"props":67,"children":69},{"className":68},[],[70],{"type":56,"value":57},{"type":56,"value":72},". It\nmaps each input (an OpenAPI spec, a GraphQL endpoint, an MCP server, or your\nown JS functions) to the exact code to write and the exact surfaces (JS API +\nbash CLI) the user gets back.",{"type":45,"tag":61,"props":74,"children":75},{},[76],{"type":56,"value":77},"Read top to bottom on the first task; jump by section number on later tasks.",{"type":45,"tag":79,"props":80,"children":82},"h2",{"id":81},"_1-decide-which-source-kind-you-have",[83],{"type":56,"value":84},"§1. Decide which source kind you have",{"type":45,"tag":86,"props":87,"children":92},"pre",{"className":88,"code":90,"language":56,"meta":91},[89],"language-text","Have an OpenAPI spec \u002F Swagger doc?     → §3 OpenAPI\nHave a GraphQL endpoint or SDL?         → §4 GraphQL\nHave an MCP server (URL or stdio)?      → §5 MCP\nDefining tools yourself in code?        → §2 Inline\nMixing several of the above?            → call sources.add() once per source\n                                          inside the same setup(); paths stay\n                                          namespaced by `name`\n","",[93],{"type":45,"tag":51,"props":94,"children":95},{"__ignoreMap":91},[96],{"type":56,"value":90},{"type":45,"tag":61,"props":98,"children":99},{},[100,102,108],{"type":56,"value":101},"For all four, the consuming code is identical (§6, §7) — what changes is the\n",{"type":45,"tag":51,"props":103,"children":105},{"className":104},[],[106],{"type":56,"value":107},"createExecutor",{"type":56,"value":109}," config.",{"type":45,"tag":79,"props":111,"children":113},{"id":112},"_2-inline-tools",[114],{"type":56,"value":115},"§2. Inline tools",{"type":45,"tag":61,"props":117,"children":118},{},[119],{"type":56,"value":120},"Use when there's no upstream spec — the user wants to expose specific JS\nfunctions to the sandbox.",{"type":45,"tag":86,"props":122,"children":126},{"className":123,"code":124,"language":125,"meta":91,"style":91},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Bash } from \"just-bash\";\nimport { createExecutor } from \"@just-bash\u002Fexecutor\";\n\nconst executor = await createExecutor({\n  tools: {\n    \"ns.action\": {\n      description: \"What it does\",\n      execute: async (args: { \u002F* shape *\u002F }) => ({ \u002F* JSON-serializable *\u002F }),\n    },\n  },\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n});\n","ts",[127],{"type":45,"tag":51,"props":128,"children":129},{"__ignoreMap":91},[130,185,226,236,276,296,322,353,433,442,451,468,476,510,542,586],{"type":45,"tag":131,"props":132,"children":135},"span",{"class":133,"line":134},"line",1,[136,142,148,154,159,164,169,175,180],{"type":45,"tag":131,"props":137,"children":139},{"style":138},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[140],{"type":56,"value":141},"import",{"type":45,"tag":131,"props":143,"children":145},{"style":144},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[146],{"type":56,"value":147}," {",{"type":45,"tag":131,"props":149,"children":151},{"style":150},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[152],{"type":56,"value":153}," Bash",{"type":45,"tag":131,"props":155,"children":156},{"style":144},[157],{"type":56,"value":158}," }",{"type":45,"tag":131,"props":160,"children":161},{"style":138},[162],{"type":56,"value":163}," from",{"type":45,"tag":131,"props":165,"children":166},{"style":144},[167],{"type":56,"value":168}," \"",{"type":45,"tag":131,"props":170,"children":172},{"style":171},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[173],{"type":56,"value":174},"just-bash",{"type":45,"tag":131,"props":176,"children":177},{"style":144},[178],{"type":56,"value":179},"\"",{"type":45,"tag":131,"props":181,"children":182},{"style":144},[183],{"type":56,"value":184},";\n",{"type":45,"tag":131,"props":186,"children":188},{"class":133,"line":187},2,[189,193,197,202,206,210,214,218,222],{"type":45,"tag":131,"props":190,"children":191},{"style":138},[192],{"type":56,"value":141},{"type":45,"tag":131,"props":194,"children":195},{"style":144},[196],{"type":56,"value":147},{"type":45,"tag":131,"props":198,"children":199},{"style":150},[200],{"type":56,"value":201}," createExecutor",{"type":45,"tag":131,"props":203,"children":204},{"style":144},[205],{"type":56,"value":158},{"type":45,"tag":131,"props":207,"children":208},{"style":138},[209],{"type":56,"value":163},{"type":45,"tag":131,"props":211,"children":212},{"style":144},[213],{"type":56,"value":168},{"type":45,"tag":131,"props":215,"children":216},{"style":171},[217],{"type":56,"value":57},{"type":45,"tag":131,"props":219,"children":220},{"style":144},[221],{"type":56,"value":179},{"type":45,"tag":131,"props":223,"children":224},{"style":144},[225],{"type":56,"value":184},{"type":45,"tag":131,"props":227,"children":229},{"class":133,"line":228},3,[230],{"type":45,"tag":131,"props":231,"children":233},{"emptyLinePlaceholder":232},true,[234],{"type":56,"value":235},"\n",{"type":45,"tag":131,"props":237,"children":239},{"class":133,"line":238},4,[240,246,251,256,261,266,271],{"type":45,"tag":131,"props":241,"children":243},{"style":242},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[244],{"type":56,"value":245},"const",{"type":45,"tag":131,"props":247,"children":248},{"style":150},[249],{"type":56,"value":250}," executor ",{"type":45,"tag":131,"props":252,"children":253},{"style":144},[254],{"type":56,"value":255},"=",{"type":45,"tag":131,"props":257,"children":258},{"style":138},[259],{"type":56,"value":260}," await",{"type":45,"tag":131,"props":262,"children":264},{"style":263},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[265],{"type":56,"value":201},{"type":45,"tag":131,"props":267,"children":268},{"style":150},[269],{"type":56,"value":270},"(",{"type":45,"tag":131,"props":272,"children":273},{"style":144},[274],{"type":56,"value":275},"{\n",{"type":45,"tag":131,"props":277,"children":279},{"class":133,"line":278},5,[280,286,291],{"type":45,"tag":131,"props":281,"children":283},{"style":282},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[284],{"type":56,"value":285},"  tools",{"type":45,"tag":131,"props":287,"children":288},{"style":144},[289],{"type":56,"value":290},":",{"type":45,"tag":131,"props":292,"children":293},{"style":144},[294],{"type":56,"value":295}," {\n",{"type":45,"tag":131,"props":297,"children":299},{"class":133,"line":298},6,[300,305,310,314,318],{"type":45,"tag":131,"props":301,"children":302},{"style":144},[303],{"type":56,"value":304},"    \"",{"type":45,"tag":131,"props":306,"children":307},{"style":282},[308],{"type":56,"value":309},"ns.action",{"type":45,"tag":131,"props":311,"children":312},{"style":144},[313],{"type":56,"value":179},{"type":45,"tag":131,"props":315,"children":316},{"style":144},[317],{"type":56,"value":290},{"type":45,"tag":131,"props":319,"children":320},{"style":144},[321],{"type":56,"value":295},{"type":45,"tag":131,"props":323,"children":325},{"class":133,"line":324},7,[326,331,335,339,344,348],{"type":45,"tag":131,"props":327,"children":328},{"style":282},[329],{"type":56,"value":330},"      description",{"type":45,"tag":131,"props":332,"children":333},{"style":144},[334],{"type":56,"value":290},{"type":45,"tag":131,"props":336,"children":337},{"style":144},[338],{"type":56,"value":168},{"type":45,"tag":131,"props":340,"children":341},{"style":171},[342],{"type":56,"value":343},"What it does",{"type":45,"tag":131,"props":345,"children":346},{"style":144},[347],{"type":56,"value":179},{"type":45,"tag":131,"props":349,"children":350},{"style":144},[351],{"type":56,"value":352},",\n",{"type":45,"tag":131,"props":354,"children":356},{"class":133,"line":355},8,[357,362,366,371,376,382,386,390,396,401,406,410,415,420,424,429],{"type":45,"tag":131,"props":358,"children":359},{"style":263},[360],{"type":56,"value":361},"      execute",{"type":45,"tag":131,"props":363,"children":364},{"style":144},[365],{"type":56,"value":290},{"type":45,"tag":131,"props":367,"children":368},{"style":242},[369],{"type":56,"value":370}," async",{"type":45,"tag":131,"props":372,"children":373},{"style":144},[374],{"type":56,"value":375}," (",{"type":45,"tag":131,"props":377,"children":379},{"style":378},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[380],{"type":56,"value":381},"args",{"type":45,"tag":131,"props":383,"children":384},{"style":144},[385],{"type":56,"value":290},{"type":45,"tag":131,"props":387,"children":388},{"style":144},[389],{"type":56,"value":147},{"type":45,"tag":131,"props":391,"children":393},{"style":392},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[394],{"type":56,"value":395}," \u002F* shape *\u002F",{"type":45,"tag":131,"props":397,"children":398},{"style":144},[399],{"type":56,"value":400}," })",{"type":45,"tag":131,"props":402,"children":403},{"style":242},[404],{"type":56,"value":405}," =>",{"type":45,"tag":131,"props":407,"children":408},{"style":150},[409],{"type":56,"value":375},{"type":45,"tag":131,"props":411,"children":412},{"style":144},[413],{"type":56,"value":414},"{",{"type":45,"tag":131,"props":416,"children":417},{"style":392},[418],{"type":56,"value":419}," \u002F* JSON-serializable *\u002F",{"type":45,"tag":131,"props":421,"children":422},{"style":144},[423],{"type":56,"value":158},{"type":45,"tag":131,"props":425,"children":426},{"style":150},[427],{"type":56,"value":428},")",{"type":45,"tag":131,"props":430,"children":431},{"style":144},[432],{"type":56,"value":352},{"type":45,"tag":131,"props":434,"children":436},{"class":133,"line":435},9,[437],{"type":45,"tag":131,"props":438,"children":439},{"style":144},[440],{"type":56,"value":441},"    },\n",{"type":45,"tag":131,"props":443,"children":445},{"class":133,"line":444},10,[446],{"type":45,"tag":131,"props":447,"children":448},{"style":144},[449],{"type":56,"value":450},"  },\n",{"type":45,"tag":131,"props":452,"children":454},{"class":133,"line":453},11,[455,460,464],{"type":45,"tag":131,"props":456,"children":457},{"style":144},[458],{"type":56,"value":459},"}",{"type":45,"tag":131,"props":461,"children":462},{"style":150},[463],{"type":56,"value":428},{"type":45,"tag":131,"props":465,"children":466},{"style":144},[467],{"type":56,"value":184},{"type":45,"tag":131,"props":469,"children":471},{"class":133,"line":470},12,[472],{"type":45,"tag":131,"props":473,"children":474},{"emptyLinePlaceholder":232},[475],{"type":56,"value":235},{"type":45,"tag":131,"props":477,"children":479},{"class":133,"line":478},13,[480,484,489,493,498,502,506],{"type":45,"tag":131,"props":481,"children":482},{"style":242},[483],{"type":56,"value":245},{"type":45,"tag":131,"props":485,"children":486},{"style":150},[487],{"type":56,"value":488}," bash ",{"type":45,"tag":131,"props":490,"children":491},{"style":144},[492],{"type":56,"value":255},{"type":45,"tag":131,"props":494,"children":495},{"style":144},[496],{"type":56,"value":497}," new",{"type":45,"tag":131,"props":499,"children":500},{"style":263},[501],{"type":56,"value":153},{"type":45,"tag":131,"props":503,"children":504},{"style":150},[505],{"type":56,"value":270},{"type":45,"tag":131,"props":507,"children":508},{"style":144},[509],{"type":56,"value":275},{"type":45,"tag":131,"props":511,"children":513},{"class":133,"line":512},14,[514,519,523,528,533,538],{"type":45,"tag":131,"props":515,"children":516},{"style":282},[517],{"type":56,"value":518},"  customCommands",{"type":45,"tag":131,"props":520,"children":521},{"style":144},[522],{"type":56,"value":290},{"type":45,"tag":131,"props":524,"children":525},{"style":150},[526],{"type":56,"value":527}," executor",{"type":45,"tag":131,"props":529,"children":530},{"style":144},[531],{"type":56,"value":532},".",{"type":45,"tag":131,"props":534,"children":535},{"style":150},[536],{"type":56,"value":537},"commands",{"type":45,"tag":131,"props":539,"children":540},{"style":144},[541],{"type":56,"value":352},{"type":45,"tag":131,"props":543,"children":545},{"class":133,"line":544},15,[546,551,555,559,564,568,572,576,581],{"type":45,"tag":131,"props":547,"children":548},{"style":282},[549],{"type":56,"value":550},"  javascript",{"type":45,"tag":131,"props":552,"children":553},{"style":144},[554],{"type":56,"value":290},{"type":45,"tag":131,"props":556,"children":557},{"style":144},[558],{"type":56,"value":147},{"type":45,"tag":131,"props":560,"children":561},{"style":282},[562],{"type":56,"value":563}," invokeTool",{"type":45,"tag":131,"props":565,"children":566},{"style":144},[567],{"type":56,"value":290},{"type":45,"tag":131,"props":569,"children":570},{"style":150},[571],{"type":56,"value":527},{"type":45,"tag":131,"props":573,"children":574},{"style":144},[575],{"type":56,"value":532},{"type":45,"tag":131,"props":577,"children":578},{"style":150},[579],{"type":56,"value":580},"invokeTool ",{"type":45,"tag":131,"props":582,"children":583},{"style":144},[584],{"type":56,"value":585},"},\n",{"type":45,"tag":131,"props":587,"children":589},{"class":133,"line":588},16,[590,594,598],{"type":45,"tag":131,"props":591,"children":592},{"style":144},[593],{"type":56,"value":459},{"type":45,"tag":131,"props":595,"children":596},{"style":150},[597],{"type":56,"value":428},{"type":45,"tag":131,"props":599,"children":600},{"style":144},[601],{"type":56,"value":184},{"type":45,"tag":61,"props":603,"children":604},{},[605],{"type":56,"value":606},"Conversion (single rule):",{"type":45,"tag":86,"props":608,"children":611},{"className":609,"code":610,"language":56,"meta":91},[89],"key in tools: {…}      JS                          bash\n\"ns.action\"      →     await tools.ns.action(args) ns action key=value\n                                                    ns action --key value\n                                                    ns action --json '{\"key\":1}'\n",[612],{"type":45,"tag":51,"props":613,"children":614},{"__ignoreMap":91},[615],{"type":56,"value":610},{"type":45,"tag":61,"props":617,"children":618},{},[619],{"type":56,"value":620},"The first dot-segment is the namespace command; the rest is the subcommand\n(kebab-cased, with the original form as an alias when different).",{"type":45,"tag":79,"props":622,"children":624},{"id":623},"_3-openapi-tools",[625],{"type":56,"value":626},"§3. OpenAPI → tools",{"type":45,"tag":61,"props":628,"children":629},{},[630,632,638],{"type":56,"value":631},"Ask the user for: spec source, base endpoint, namespace ",{"type":45,"tag":51,"props":633,"children":635},{"className":634},[],[636],{"type":56,"value":637},"name",{"type":56,"value":639},", and optional\nauth headers.",{"type":45,"tag":61,"props":641,"children":642},{},[643,645,651],{"type":56,"value":644},"The ",{"type":45,"tag":51,"props":646,"children":648},{"className":647},[],[649],{"type":56,"value":650},"spec",{"type":56,"value":652}," field accepts three forms:",{"type":45,"tag":86,"props":654,"children":656},{"className":123,"code":655,"language":125,"meta":91,"style":91},"spec: \"https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json\"  \u002F\u002F URL — fetched at setup\nspec: fs.readFileSync(\".\u002Fopenapi.yaml\", \"utf8\")          \u002F\u002F YAML text\nspec: JSON.stringify(specObject)                          \u002F\u002F JSON text\n",[657],{"type":45,"tag":51,"props":658,"children":659},{"__ignoreMap":91},[660,690,760],{"type":45,"tag":131,"props":661,"children":662},{"class":133,"line":134},[663,668,672,676,681,685],{"type":45,"tag":131,"props":664,"children":666},{"style":665},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[667],{"type":56,"value":650},{"type":45,"tag":131,"props":669,"children":670},{"style":144},[671],{"type":56,"value":290},{"type":45,"tag":131,"props":673,"children":674},{"style":144},[675],{"type":56,"value":168},{"type":45,"tag":131,"props":677,"children":678},{"style":171},[679],{"type":56,"value":680},"https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json",{"type":45,"tag":131,"props":682,"children":683},{"style":144},[684],{"type":56,"value":179},{"type":45,"tag":131,"props":686,"children":687},{"style":392},[688],{"type":56,"value":689},"  \u002F\u002F URL — fetched at setup\n",{"type":45,"tag":131,"props":691,"children":692},{"class":133,"line":187},[693,697,701,706,710,715,719,723,728,732,737,741,746,750,755],{"type":45,"tag":131,"props":694,"children":695},{"style":665},[696],{"type":56,"value":650},{"type":45,"tag":131,"props":698,"children":699},{"style":144},[700],{"type":56,"value":290},{"type":45,"tag":131,"props":702,"children":703},{"style":150},[704],{"type":56,"value":705}," fs",{"type":45,"tag":131,"props":707,"children":708},{"style":144},[709],{"type":56,"value":532},{"type":45,"tag":131,"props":711,"children":712},{"style":263},[713],{"type":56,"value":714},"readFileSync",{"type":45,"tag":131,"props":716,"children":717},{"style":150},[718],{"type":56,"value":270},{"type":45,"tag":131,"props":720,"children":721},{"style":144},[722],{"type":56,"value":179},{"type":45,"tag":131,"props":724,"children":725},{"style":171},[726],{"type":56,"value":727},".\u002Fopenapi.yaml",{"type":45,"tag":131,"props":729,"children":730},{"style":144},[731],{"type":56,"value":179},{"type":45,"tag":131,"props":733,"children":734},{"style":144},[735],{"type":56,"value":736},",",{"type":45,"tag":131,"props":738,"children":739},{"style":144},[740],{"type":56,"value":168},{"type":45,"tag":131,"props":742,"children":743},{"style":171},[744],{"type":56,"value":745},"utf8",{"type":45,"tag":131,"props":747,"children":748},{"style":144},[749],{"type":56,"value":179},{"type":45,"tag":131,"props":751,"children":752},{"style":150},[753],{"type":56,"value":754},")          ",{"type":45,"tag":131,"props":756,"children":757},{"style":392},[758],{"type":56,"value":759},"\u002F\u002F YAML text\n",{"type":45,"tag":131,"props":761,"children":762},{"class":133,"line":228},[763,767,771,776,780,785,790],{"type":45,"tag":131,"props":764,"children":765},{"style":665},[766],{"type":56,"value":650},{"type":45,"tag":131,"props":768,"children":769},{"style":144},[770],{"type":56,"value":290},{"type":45,"tag":131,"props":772,"children":773},{"style":150},[774],{"type":56,"value":775}," JSON",{"type":45,"tag":131,"props":777,"children":778},{"style":144},[779],{"type":56,"value":532},{"type":45,"tag":131,"props":781,"children":782},{"style":263},[783],{"type":56,"value":784},"stringify",{"type":45,"tag":131,"props":786,"children":787},{"style":150},[788],{"type":56,"value":789},"(specObject)                          ",{"type":45,"tag":131,"props":791,"children":792},{"style":392},[793],{"type":56,"value":794},"\u002F\u002F JSON text\n",{"type":45,"tag":61,"props":796,"children":797},{},[798,800,806,808,814],{"type":56,"value":799},"For authenticated APIs, pass ",{"type":45,"tag":51,"props":801,"children":803},{"className":802},[],[804],{"type":56,"value":805},"headers",{"type":56,"value":807}," (and optionally ",{"type":45,"tag":51,"props":809,"children":811},{"className":810},[],[812],{"type":56,"value":813},"queryParams",{"type":56,"value":815},"):",{"type":45,"tag":86,"props":817,"children":819},{"className":123,"code":818,"language":125,"meta":91,"style":91},"await sdk.sources.add({\n  kind: \"openapi\",\n  spec: \"https:\u002F\u002Fapi.github.com\u002Fopenapi.json\",\n  endpoint: \"https:\u002F\u002Fapi.github.com\",\n  name: \"github\",\n  headers: {\n    Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n    Accept: \"application\u002Fvnd.github+json\",\n  },\n});\n",[820],{"type":45,"tag":51,"props":821,"children":822},{"__ignoreMap":91},[823,862,890,919,948,977,993,1052,1081,1088],{"type":45,"tag":131,"props":824,"children":825},{"class":133,"line":134},[826,831,836,840,845,849,854,858],{"type":45,"tag":131,"props":827,"children":828},{"style":138},[829],{"type":56,"value":830},"await",{"type":45,"tag":131,"props":832,"children":833},{"style":150},[834],{"type":56,"value":835}," sdk",{"type":45,"tag":131,"props":837,"children":838},{"style":144},[839],{"type":56,"value":532},{"type":45,"tag":131,"props":841,"children":842},{"style":150},[843],{"type":56,"value":844},"sources",{"type":45,"tag":131,"props":846,"children":847},{"style":144},[848],{"type":56,"value":532},{"type":45,"tag":131,"props":850,"children":851},{"style":263},[852],{"type":56,"value":853},"add",{"type":45,"tag":131,"props":855,"children":856},{"style":150},[857],{"type":56,"value":270},{"type":45,"tag":131,"props":859,"children":860},{"style":144},[861],{"type":56,"value":275},{"type":45,"tag":131,"props":863,"children":864},{"class":133,"line":187},[865,870,874,878,882,886],{"type":45,"tag":131,"props":866,"children":867},{"style":282},[868],{"type":56,"value":869},"  kind",{"type":45,"tag":131,"props":871,"children":872},{"style":144},[873],{"type":56,"value":290},{"type":45,"tag":131,"props":875,"children":876},{"style":144},[877],{"type":56,"value":168},{"type":45,"tag":131,"props":879,"children":880},{"style":171},[881],{"type":56,"value":27},{"type":45,"tag":131,"props":883,"children":884},{"style":144},[885],{"type":56,"value":179},{"type":45,"tag":131,"props":887,"children":888},{"style":144},[889],{"type":56,"value":352},{"type":45,"tag":131,"props":891,"children":892},{"class":133,"line":228},[893,898,902,906,911,915],{"type":45,"tag":131,"props":894,"children":895},{"style":282},[896],{"type":56,"value":897},"  spec",{"type":45,"tag":131,"props":899,"children":900},{"style":144},[901],{"type":56,"value":290},{"type":45,"tag":131,"props":903,"children":904},{"style":144},[905],{"type":56,"value":168},{"type":45,"tag":131,"props":907,"children":908},{"style":171},[909],{"type":56,"value":910},"https:\u002F\u002Fapi.github.com\u002Fopenapi.json",{"type":45,"tag":131,"props":912,"children":913},{"style":144},[914],{"type":56,"value":179},{"type":45,"tag":131,"props":916,"children":917},{"style":144},[918],{"type":56,"value":352},{"type":45,"tag":131,"props":920,"children":921},{"class":133,"line":238},[922,927,931,935,940,944],{"type":45,"tag":131,"props":923,"children":924},{"style":282},[925],{"type":56,"value":926},"  endpoint",{"type":45,"tag":131,"props":928,"children":929},{"style":144},[930],{"type":56,"value":290},{"type":45,"tag":131,"props":932,"children":933},{"style":144},[934],{"type":56,"value":168},{"type":45,"tag":131,"props":936,"children":937},{"style":171},[938],{"type":56,"value":939},"https:\u002F\u002Fapi.github.com",{"type":45,"tag":131,"props":941,"children":942},{"style":144},[943],{"type":56,"value":179},{"type":45,"tag":131,"props":945,"children":946},{"style":144},[947],{"type":56,"value":352},{"type":45,"tag":131,"props":949,"children":950},{"class":133,"line":278},[951,956,960,964,969,973],{"type":45,"tag":131,"props":952,"children":953},{"style":282},[954],{"type":56,"value":955},"  name",{"type":45,"tag":131,"props":957,"children":958},{"style":144},[959],{"type":56,"value":290},{"type":45,"tag":131,"props":961,"children":962},{"style":144},[963],{"type":56,"value":168},{"type":45,"tag":131,"props":965,"children":966},{"style":171},[967],{"type":56,"value":968},"github",{"type":45,"tag":131,"props":970,"children":971},{"style":144},[972],{"type":56,"value":179},{"type":45,"tag":131,"props":974,"children":975},{"style":144},[976],{"type":56,"value":352},{"type":45,"tag":131,"props":978,"children":979},{"class":133,"line":298},[980,985,989],{"type":45,"tag":131,"props":981,"children":982},{"style":282},[983],{"type":56,"value":984},"  headers",{"type":45,"tag":131,"props":986,"children":987},{"style":144},[988],{"type":56,"value":290},{"type":45,"tag":131,"props":990,"children":991},{"style":144},[992],{"type":56,"value":295},{"type":45,"tag":131,"props":994,"children":995},{"class":133,"line":324},[996,1001,1005,1010,1015,1020,1025,1029,1034,1038,1043,1048],{"type":45,"tag":131,"props":997,"children":998},{"style":282},[999],{"type":56,"value":1000},"    Authorization",{"type":45,"tag":131,"props":1002,"children":1003},{"style":144},[1004],{"type":56,"value":290},{"type":45,"tag":131,"props":1006,"children":1007},{"style":144},[1008],{"type":56,"value":1009}," `",{"type":45,"tag":131,"props":1011,"children":1012},{"style":171},[1013],{"type":56,"value":1014},"Bearer ",{"type":45,"tag":131,"props":1016,"children":1017},{"style":144},[1018],{"type":56,"value":1019},"${",{"type":45,"tag":131,"props":1021,"children":1022},{"style":150},[1023],{"type":56,"value":1024},"process",{"type":45,"tag":131,"props":1026,"children":1027},{"style":144},[1028],{"type":56,"value":532},{"type":45,"tag":131,"props":1030,"children":1031},{"style":150},[1032],{"type":56,"value":1033},"env",{"type":45,"tag":131,"props":1035,"children":1036},{"style":144},[1037],{"type":56,"value":532},{"type":45,"tag":131,"props":1039,"children":1040},{"style":150},[1041],{"type":56,"value":1042},"GITHUB_TOKEN",{"type":45,"tag":131,"props":1044,"children":1045},{"style":144},[1046],{"type":56,"value":1047},"}`",{"type":45,"tag":131,"props":1049,"children":1050},{"style":144},[1051],{"type":56,"value":352},{"type":45,"tag":131,"props":1053,"children":1054},{"class":133,"line":355},[1055,1060,1064,1068,1073,1077],{"type":45,"tag":131,"props":1056,"children":1057},{"style":282},[1058],{"type":56,"value":1059},"    Accept",{"type":45,"tag":131,"props":1061,"children":1062},{"style":144},[1063],{"type":56,"value":290},{"type":45,"tag":131,"props":1065,"children":1066},{"style":144},[1067],{"type":56,"value":168},{"type":45,"tag":131,"props":1069,"children":1070},{"style":171},[1071],{"type":56,"value":1072},"application\u002Fvnd.github+json",{"type":45,"tag":131,"props":1074,"children":1075},{"style":144},[1076],{"type":56,"value":179},{"type":45,"tag":131,"props":1078,"children":1079},{"style":144},[1080],{"type":56,"value":352},{"type":45,"tag":131,"props":1082,"children":1083},{"class":133,"line":435},[1084],{"type":45,"tag":131,"props":1085,"children":1086},{"style":144},[1087],{"type":56,"value":450},{"type":45,"tag":131,"props":1089,"children":1090},{"class":133,"line":444},[1091,1095,1099],{"type":45,"tag":131,"props":1092,"children":1093},{"style":144},[1094],{"type":56,"value":459},{"type":45,"tag":131,"props":1096,"children":1097},{"style":150},[1098],{"type":56,"value":428},{"type":45,"tag":131,"props":1100,"children":1101},{"style":144},[1102],{"type":56,"value":184},{"type":45,"tag":61,"props":1104,"children":1105},{},[1106],{"type":56,"value":1107},"Full inline example:",{"type":45,"tag":86,"props":1109,"children":1111},{"className":123,"code":1110,"language":125,"meta":91,"style":91},"import { createExecutor } from \"@just-bash\u002Fexecutor\";\nimport { Bash } from \"just-bash\";\n\n\u002F\u002F `spec` is the raw OpenAPI document as a STRING (JSON or YAML text),\n\u002F\u002F not a parsed object. Read it from disk if you have a file.\nconst PETSTORE_SPEC = JSON.stringify({\n  openapi: \"3.0.0\",\n  info: { title: \"Petstore\", version: \"1.0.0\" },\n  paths: {\n    \"\u002Fpets\": {\n      get: {\n        operationId: \"listPets\",\n        parameters: [\n          { name: \"status\", in: \"query\", schema: { type: \"string\" } },\n        ],\n        responses: { \"200\": { description: \"ok\" } },\n      },\n      post: {\n        operationId: \"createPet\",\n        requestBody: {\n          content: {\n            \"application\u002Fjson\": {\n              schema: {\n                type: \"object\",\n                properties: { name: { type: \"string\" } },\n              },\n            },\n          },\n        },\n        responses: { \"201\": { description: \"ok\" } },\n      },\n    },\n    \"\u002Fpets\u002F{petId}\": {\n      get: {\n        operationId: \"getPetById\",\n        parameters: [\n          { name: \"petId\", in: \"path\", required: true, schema: { type: \"string\" } },\n        ],\n        responses: { \"200\": { description: \"ok\" } },\n      },\n    },\n  },\n});\n\nconst executor = await createExecutor({\n  setup: async (sdk) => {\n    await sdk.sources.add({\n      kind: \"openapi\",\n      spec: PETSTORE_SPEC,\n      endpoint: \"https:\u002F\u002Fpetstore.example.com\",\n      name: \"pets\",            \u002F\u002F becomes the namespace\n    });\n  },\n  onToolApproval: \"allow-all\",\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n});\n",[1112],{"type":45,"tag":51,"props":1113,"children":1114},{"__ignoreMap":91},[1115,1154,1193,1200,1208,1216,1252,1281,1350,1366,1390,1406,1435,1452,1555,1567,1634,1643,1660,1689,1706,1723,1749,1766,1796,1853,1862,1871,1880,1889,1954,1962,1970,1995,2011,2040,2056,2173,2185,2249,2257,2265,2273,2289,2297,2329,2367,2404,2433,2455,2485,2520,2537,2545,2575,2591,2599,2631,2659,2699],{"type":45,"tag":131,"props":1116,"children":1117},{"class":133,"line":134},[1118,1122,1126,1130,1134,1138,1142,1146,1150],{"type":45,"tag":131,"props":1119,"children":1120},{"style":138},[1121],{"type":56,"value":141},{"type":45,"tag":131,"props":1123,"children":1124},{"style":144},[1125],{"type":56,"value":147},{"type":45,"tag":131,"props":1127,"children":1128},{"style":150},[1129],{"type":56,"value":201},{"type":45,"tag":131,"props":1131,"children":1132},{"style":144},[1133],{"type":56,"value":158},{"type":45,"tag":131,"props":1135,"children":1136},{"style":138},[1137],{"type":56,"value":163},{"type":45,"tag":131,"props":1139,"children":1140},{"style":144},[1141],{"type":56,"value":168},{"type":45,"tag":131,"props":1143,"children":1144},{"style":171},[1145],{"type":56,"value":57},{"type":45,"tag":131,"props":1147,"children":1148},{"style":144},[1149],{"type":56,"value":179},{"type":45,"tag":131,"props":1151,"children":1152},{"style":144},[1153],{"type":56,"value":184},{"type":45,"tag":131,"props":1155,"children":1156},{"class":133,"line":187},[1157,1161,1165,1169,1173,1177,1181,1185,1189],{"type":45,"tag":131,"props":1158,"children":1159},{"style":138},[1160],{"type":56,"value":141},{"type":45,"tag":131,"props":1162,"children":1163},{"style":144},[1164],{"type":56,"value":147},{"type":45,"tag":131,"props":1166,"children":1167},{"style":150},[1168],{"type":56,"value":153},{"type":45,"tag":131,"props":1170,"children":1171},{"style":144},[1172],{"type":56,"value":158},{"type":45,"tag":131,"props":1174,"children":1175},{"style":138},[1176],{"type":56,"value":163},{"type":45,"tag":131,"props":1178,"children":1179},{"style":144},[1180],{"type":56,"value":168},{"type":45,"tag":131,"props":1182,"children":1183},{"style":171},[1184],{"type":56,"value":174},{"type":45,"tag":131,"props":1186,"children":1187},{"style":144},[1188],{"type":56,"value":179},{"type":45,"tag":131,"props":1190,"children":1191},{"style":144},[1192],{"type":56,"value":184},{"type":45,"tag":131,"props":1194,"children":1195},{"class":133,"line":228},[1196],{"type":45,"tag":131,"props":1197,"children":1198},{"emptyLinePlaceholder":232},[1199],{"type":56,"value":235},{"type":45,"tag":131,"props":1201,"children":1202},{"class":133,"line":238},[1203],{"type":45,"tag":131,"props":1204,"children":1205},{"style":392},[1206],{"type":56,"value":1207},"\u002F\u002F `spec` is the raw OpenAPI document as a STRING (JSON or YAML text),\n",{"type":45,"tag":131,"props":1209,"children":1210},{"class":133,"line":278},[1211],{"type":45,"tag":131,"props":1212,"children":1213},{"style":392},[1214],{"type":56,"value":1215},"\u002F\u002F not a parsed object. Read it from disk if you have a file.\n",{"type":45,"tag":131,"props":1217,"children":1218},{"class":133,"line":298},[1219,1223,1228,1232,1236,1240,1244,1248],{"type":45,"tag":131,"props":1220,"children":1221},{"style":242},[1222],{"type":56,"value":245},{"type":45,"tag":131,"props":1224,"children":1225},{"style":150},[1226],{"type":56,"value":1227}," PETSTORE_SPEC ",{"type":45,"tag":131,"props":1229,"children":1230},{"style":144},[1231],{"type":56,"value":255},{"type":45,"tag":131,"props":1233,"children":1234},{"style":150},[1235],{"type":56,"value":775},{"type":45,"tag":131,"props":1237,"children":1238},{"style":144},[1239],{"type":56,"value":532},{"type":45,"tag":131,"props":1241,"children":1242},{"style":263},[1243],{"type":56,"value":784},{"type":45,"tag":131,"props":1245,"children":1246},{"style":150},[1247],{"type":56,"value":270},{"type":45,"tag":131,"props":1249,"children":1250},{"style":144},[1251],{"type":56,"value":275},{"type":45,"tag":131,"props":1253,"children":1254},{"class":133,"line":324},[1255,1260,1264,1268,1273,1277],{"type":45,"tag":131,"props":1256,"children":1257},{"style":282},[1258],{"type":56,"value":1259},"  openapi",{"type":45,"tag":131,"props":1261,"children":1262},{"style":144},[1263],{"type":56,"value":290},{"type":45,"tag":131,"props":1265,"children":1266},{"style":144},[1267],{"type":56,"value":168},{"type":45,"tag":131,"props":1269,"children":1270},{"style":171},[1271],{"type":56,"value":1272},"3.0.0",{"type":45,"tag":131,"props":1274,"children":1275},{"style":144},[1276],{"type":56,"value":179},{"type":45,"tag":131,"props":1278,"children":1279},{"style":144},[1280],{"type":56,"value":352},{"type":45,"tag":131,"props":1282,"children":1283},{"class":133,"line":355},[1284,1289,1293,1297,1302,1306,1310,1315,1319,1323,1328,1332,1336,1341,1345],{"type":45,"tag":131,"props":1285,"children":1286},{"style":282},[1287],{"type":56,"value":1288},"  info",{"type":45,"tag":131,"props":1290,"children":1291},{"style":144},[1292],{"type":56,"value":290},{"type":45,"tag":131,"props":1294,"children":1295},{"style":144},[1296],{"type":56,"value":147},{"type":45,"tag":131,"props":1298,"children":1299},{"style":282},[1300],{"type":56,"value":1301}," title",{"type":45,"tag":131,"props":1303,"children":1304},{"style":144},[1305],{"type":56,"value":290},{"type":45,"tag":131,"props":1307,"children":1308},{"style":144},[1309],{"type":56,"value":168},{"type":45,"tag":131,"props":1311,"children":1312},{"style":171},[1313],{"type":56,"value":1314},"Petstore",{"type":45,"tag":131,"props":1316,"children":1317},{"style":144},[1318],{"type":56,"value":179},{"type":45,"tag":131,"props":1320,"children":1321},{"style":144},[1322],{"type":56,"value":736},{"type":45,"tag":131,"props":1324,"children":1325},{"style":282},[1326],{"type":56,"value":1327}," version",{"type":45,"tag":131,"props":1329,"children":1330},{"style":144},[1331],{"type":56,"value":290},{"type":45,"tag":131,"props":1333,"children":1334},{"style":144},[1335],{"type":56,"value":168},{"type":45,"tag":131,"props":1337,"children":1338},{"style":171},[1339],{"type":56,"value":1340},"1.0.0",{"type":45,"tag":131,"props":1342,"children":1343},{"style":144},[1344],{"type":56,"value":179},{"type":45,"tag":131,"props":1346,"children":1347},{"style":144},[1348],{"type":56,"value":1349}," },\n",{"type":45,"tag":131,"props":1351,"children":1352},{"class":133,"line":435},[1353,1358,1362],{"type":45,"tag":131,"props":1354,"children":1355},{"style":282},[1356],{"type":56,"value":1357},"  paths",{"type":45,"tag":131,"props":1359,"children":1360},{"style":144},[1361],{"type":56,"value":290},{"type":45,"tag":131,"props":1363,"children":1364},{"style":144},[1365],{"type":56,"value":295},{"type":45,"tag":131,"props":1367,"children":1368},{"class":133,"line":444},[1369,1373,1378,1382,1386],{"type":45,"tag":131,"props":1370,"children":1371},{"style":144},[1372],{"type":56,"value":304},{"type":45,"tag":131,"props":1374,"children":1375},{"style":282},[1376],{"type":56,"value":1377},"\u002Fpets",{"type":45,"tag":131,"props":1379,"children":1380},{"style":144},[1381],{"type":56,"value":179},{"type":45,"tag":131,"props":1383,"children":1384},{"style":144},[1385],{"type":56,"value":290},{"type":45,"tag":131,"props":1387,"children":1388},{"style":144},[1389],{"type":56,"value":295},{"type":45,"tag":131,"props":1391,"children":1392},{"class":133,"line":453},[1393,1398,1402],{"type":45,"tag":131,"props":1394,"children":1395},{"style":282},[1396],{"type":56,"value":1397},"      get",{"type":45,"tag":131,"props":1399,"children":1400},{"style":144},[1401],{"type":56,"value":290},{"type":45,"tag":131,"props":1403,"children":1404},{"style":144},[1405],{"type":56,"value":295},{"type":45,"tag":131,"props":1407,"children":1408},{"class":133,"line":470},[1409,1414,1418,1422,1427,1431],{"type":45,"tag":131,"props":1410,"children":1411},{"style":282},[1412],{"type":56,"value":1413},"        operationId",{"type":45,"tag":131,"props":1415,"children":1416},{"style":144},[1417],{"type":56,"value":290},{"type":45,"tag":131,"props":1419,"children":1420},{"style":144},[1421],{"type":56,"value":168},{"type":45,"tag":131,"props":1423,"children":1424},{"style":171},[1425],{"type":56,"value":1426},"listPets",{"type":45,"tag":131,"props":1428,"children":1429},{"style":144},[1430],{"type":56,"value":179},{"type":45,"tag":131,"props":1432,"children":1433},{"style":144},[1434],{"type":56,"value":352},{"type":45,"tag":131,"props":1436,"children":1437},{"class":133,"line":478},[1438,1443,1447],{"type":45,"tag":131,"props":1439,"children":1440},{"style":282},[1441],{"type":56,"value":1442},"        parameters",{"type":45,"tag":131,"props":1444,"children":1445},{"style":144},[1446],{"type":56,"value":290},{"type":45,"tag":131,"props":1448,"children":1449},{"style":150},[1450],{"type":56,"value":1451}," [\n",{"type":45,"tag":131,"props":1453,"children":1454},{"class":133,"line":512},[1455,1460,1465,1469,1473,1478,1482,1486,1491,1495,1499,1504,1508,1512,1517,1521,1525,1530,1534,1538,1543,1547,1551],{"type":45,"tag":131,"props":1456,"children":1457},{"style":144},[1458],{"type":56,"value":1459},"          {",{"type":45,"tag":131,"props":1461,"children":1462},{"style":282},[1463],{"type":56,"value":1464}," name",{"type":45,"tag":131,"props":1466,"children":1467},{"style":144},[1468],{"type":56,"value":290},{"type":45,"tag":131,"props":1470,"children":1471},{"style":144},[1472],{"type":56,"value":168},{"type":45,"tag":131,"props":1474,"children":1475},{"style":171},[1476],{"type":56,"value":1477},"status",{"type":45,"tag":131,"props":1479,"children":1480},{"style":144},[1481],{"type":56,"value":179},{"type":45,"tag":131,"props":1483,"children":1484},{"style":144},[1485],{"type":56,"value":736},{"type":45,"tag":131,"props":1487,"children":1488},{"style":282},[1489],{"type":56,"value":1490}," in",{"type":45,"tag":131,"props":1492,"children":1493},{"style":144},[1494],{"type":56,"value":290},{"type":45,"tag":131,"props":1496,"children":1497},{"style":144},[1498],{"type":56,"value":168},{"type":45,"tag":131,"props":1500,"children":1501},{"style":171},[1502],{"type":56,"value":1503},"query",{"type":45,"tag":131,"props":1505,"children":1506},{"style":144},[1507],{"type":56,"value":179},{"type":45,"tag":131,"props":1509,"children":1510},{"style":144},[1511],{"type":56,"value":736},{"type":45,"tag":131,"props":1513,"children":1514},{"style":282},[1515],{"type":56,"value":1516}," schema",{"type":45,"tag":131,"props":1518,"children":1519},{"style":144},[1520],{"type":56,"value":290},{"type":45,"tag":131,"props":1522,"children":1523},{"style":144},[1524],{"type":56,"value":147},{"type":45,"tag":131,"props":1526,"children":1527},{"style":282},[1528],{"type":56,"value":1529}," type",{"type":45,"tag":131,"props":1531,"children":1532},{"style":144},[1533],{"type":56,"value":290},{"type":45,"tag":131,"props":1535,"children":1536},{"style":144},[1537],{"type":56,"value":168},{"type":45,"tag":131,"props":1539,"children":1540},{"style":171},[1541],{"type":56,"value":1542},"string",{"type":45,"tag":131,"props":1544,"children":1545},{"style":144},[1546],{"type":56,"value":179},{"type":45,"tag":131,"props":1548,"children":1549},{"style":144},[1550],{"type":56,"value":158},{"type":45,"tag":131,"props":1552,"children":1553},{"style":144},[1554],{"type":56,"value":1349},{"type":45,"tag":131,"props":1556,"children":1557},{"class":133,"line":544},[1558,1563],{"type":45,"tag":131,"props":1559,"children":1560},{"style":150},[1561],{"type":56,"value":1562},"        ]",{"type":45,"tag":131,"props":1564,"children":1565},{"style":144},[1566],{"type":56,"value":352},{"type":45,"tag":131,"props":1568,"children":1569},{"class":133,"line":588},[1570,1575,1579,1583,1587,1592,1596,1600,1604,1609,1613,1617,1622,1626,1630],{"type":45,"tag":131,"props":1571,"children":1572},{"style":282},[1573],{"type":56,"value":1574},"        responses",{"type":45,"tag":131,"props":1576,"children":1577},{"style":144},[1578],{"type":56,"value":290},{"type":45,"tag":131,"props":1580,"children":1581},{"style":144},[1582],{"type":56,"value":147},{"type":45,"tag":131,"props":1584,"children":1585},{"style":144},[1586],{"type":56,"value":168},{"type":45,"tag":131,"props":1588,"children":1589},{"style":282},[1590],{"type":56,"value":1591},"200",{"type":45,"tag":131,"props":1593,"children":1594},{"style":144},[1595],{"type":56,"value":179},{"type":45,"tag":131,"props":1597,"children":1598},{"style":144},[1599],{"type":56,"value":290},{"type":45,"tag":131,"props":1601,"children":1602},{"style":144},[1603],{"type":56,"value":147},{"type":45,"tag":131,"props":1605,"children":1606},{"style":282},[1607],{"type":56,"value":1608}," description",{"type":45,"tag":131,"props":1610,"children":1611},{"style":144},[1612],{"type":56,"value":290},{"type":45,"tag":131,"props":1614,"children":1615},{"style":144},[1616],{"type":56,"value":168},{"type":45,"tag":131,"props":1618,"children":1619},{"style":171},[1620],{"type":56,"value":1621},"ok",{"type":45,"tag":131,"props":1623,"children":1624},{"style":144},[1625],{"type":56,"value":179},{"type":45,"tag":131,"props":1627,"children":1628},{"style":144},[1629],{"type":56,"value":158},{"type":45,"tag":131,"props":1631,"children":1632},{"style":144},[1633],{"type":56,"value":1349},{"type":45,"tag":131,"props":1635,"children":1637},{"class":133,"line":1636},17,[1638],{"type":45,"tag":131,"props":1639,"children":1640},{"style":144},[1641],{"type":56,"value":1642},"      },\n",{"type":45,"tag":131,"props":1644,"children":1646},{"class":133,"line":1645},18,[1647,1652,1656],{"type":45,"tag":131,"props":1648,"children":1649},{"style":282},[1650],{"type":56,"value":1651},"      post",{"type":45,"tag":131,"props":1653,"children":1654},{"style":144},[1655],{"type":56,"value":290},{"type":45,"tag":131,"props":1657,"children":1658},{"style":144},[1659],{"type":56,"value":295},{"type":45,"tag":131,"props":1661,"children":1663},{"class":133,"line":1662},19,[1664,1668,1672,1676,1681,1685],{"type":45,"tag":131,"props":1665,"children":1666},{"style":282},[1667],{"type":56,"value":1413},{"type":45,"tag":131,"props":1669,"children":1670},{"style":144},[1671],{"type":56,"value":290},{"type":45,"tag":131,"props":1673,"children":1674},{"style":144},[1675],{"type":56,"value":168},{"type":45,"tag":131,"props":1677,"children":1678},{"style":171},[1679],{"type":56,"value":1680},"createPet",{"type":45,"tag":131,"props":1682,"children":1683},{"style":144},[1684],{"type":56,"value":179},{"type":45,"tag":131,"props":1686,"children":1687},{"style":144},[1688],{"type":56,"value":352},{"type":45,"tag":131,"props":1690,"children":1692},{"class":133,"line":1691},20,[1693,1698,1702],{"type":45,"tag":131,"props":1694,"children":1695},{"style":282},[1696],{"type":56,"value":1697},"        requestBody",{"type":45,"tag":131,"props":1699,"children":1700},{"style":144},[1701],{"type":56,"value":290},{"type":45,"tag":131,"props":1703,"children":1704},{"style":144},[1705],{"type":56,"value":295},{"type":45,"tag":131,"props":1707,"children":1709},{"class":133,"line":1708},21,[1710,1715,1719],{"type":45,"tag":131,"props":1711,"children":1712},{"style":282},[1713],{"type":56,"value":1714},"          content",{"type":45,"tag":131,"props":1716,"children":1717},{"style":144},[1718],{"type":56,"value":290},{"type":45,"tag":131,"props":1720,"children":1721},{"style":144},[1722],{"type":56,"value":295},{"type":45,"tag":131,"props":1724,"children":1726},{"class":133,"line":1725},22,[1727,1732,1737,1741,1745],{"type":45,"tag":131,"props":1728,"children":1729},{"style":144},[1730],{"type":56,"value":1731},"            \"",{"type":45,"tag":131,"props":1733,"children":1734},{"style":282},[1735],{"type":56,"value":1736},"application\u002Fjson",{"type":45,"tag":131,"props":1738,"children":1739},{"style":144},[1740],{"type":56,"value":179},{"type":45,"tag":131,"props":1742,"children":1743},{"style":144},[1744],{"type":56,"value":290},{"type":45,"tag":131,"props":1746,"children":1747},{"style":144},[1748],{"type":56,"value":295},{"type":45,"tag":131,"props":1750,"children":1752},{"class":133,"line":1751},23,[1753,1758,1762],{"type":45,"tag":131,"props":1754,"children":1755},{"style":282},[1756],{"type":56,"value":1757},"              schema",{"type":45,"tag":131,"props":1759,"children":1760},{"style":144},[1761],{"type":56,"value":290},{"type":45,"tag":131,"props":1763,"children":1764},{"style":144},[1765],{"type":56,"value":295},{"type":45,"tag":131,"props":1767,"children":1769},{"class":133,"line":1768},24,[1770,1775,1779,1783,1788,1792],{"type":45,"tag":131,"props":1771,"children":1772},{"style":282},[1773],{"type":56,"value":1774},"                type",{"type":45,"tag":131,"props":1776,"children":1777},{"style":144},[1778],{"type":56,"value":290},{"type":45,"tag":131,"props":1780,"children":1781},{"style":144},[1782],{"type":56,"value":168},{"type":45,"tag":131,"props":1784,"children":1785},{"style":171},[1786],{"type":56,"value":1787},"object",{"type":45,"tag":131,"props":1789,"children":1790},{"style":144},[1791],{"type":56,"value":179},{"type":45,"tag":131,"props":1793,"children":1794},{"style":144},[1795],{"type":56,"value":352},{"type":45,"tag":131,"props":1797,"children":1799},{"class":133,"line":1798},25,[1800,1805,1809,1813,1817,1821,1825,1829,1833,1837,1841,1845,1849],{"type":45,"tag":131,"props":1801,"children":1802},{"style":282},[1803],{"type":56,"value":1804},"                properties",{"type":45,"tag":131,"props":1806,"children":1807},{"style":144},[1808],{"type":56,"value":290},{"type":45,"tag":131,"props":1810,"children":1811},{"style":144},[1812],{"type":56,"value":147},{"type":45,"tag":131,"props":1814,"children":1815},{"style":282},[1816],{"type":56,"value":1464},{"type":45,"tag":131,"props":1818,"children":1819},{"style":144},[1820],{"type":56,"value":290},{"type":45,"tag":131,"props":1822,"children":1823},{"style":144},[1824],{"type":56,"value":147},{"type":45,"tag":131,"props":1826,"children":1827},{"style":282},[1828],{"type":56,"value":1529},{"type":45,"tag":131,"props":1830,"children":1831},{"style":144},[1832],{"type":56,"value":290},{"type":45,"tag":131,"props":1834,"children":1835},{"style":144},[1836],{"type":56,"value":168},{"type":45,"tag":131,"props":1838,"children":1839},{"style":171},[1840],{"type":56,"value":1542},{"type":45,"tag":131,"props":1842,"children":1843},{"style":144},[1844],{"type":56,"value":179},{"type":45,"tag":131,"props":1846,"children":1847},{"style":144},[1848],{"type":56,"value":158},{"type":45,"tag":131,"props":1850,"children":1851},{"style":144},[1852],{"type":56,"value":1349},{"type":45,"tag":131,"props":1854,"children":1856},{"class":133,"line":1855},26,[1857],{"type":45,"tag":131,"props":1858,"children":1859},{"style":144},[1860],{"type":56,"value":1861},"              },\n",{"type":45,"tag":131,"props":1863,"children":1865},{"class":133,"line":1864},27,[1866],{"type":45,"tag":131,"props":1867,"children":1868},{"style":144},[1869],{"type":56,"value":1870},"            },\n",{"type":45,"tag":131,"props":1872,"children":1874},{"class":133,"line":1873},28,[1875],{"type":45,"tag":131,"props":1876,"children":1877},{"style":144},[1878],{"type":56,"value":1879},"          },\n",{"type":45,"tag":131,"props":1881,"children":1883},{"class":133,"line":1882},29,[1884],{"type":45,"tag":131,"props":1885,"children":1886},{"style":144},[1887],{"type":56,"value":1888},"        },\n",{"type":45,"tag":131,"props":1890,"children":1892},{"class":133,"line":1891},30,[1893,1897,1901,1905,1909,1914,1918,1922,1926,1930,1934,1938,1942,1946,1950],{"type":45,"tag":131,"props":1894,"children":1895},{"style":282},[1896],{"type":56,"value":1574},{"type":45,"tag":131,"props":1898,"children":1899},{"style":144},[1900],{"type":56,"value":290},{"type":45,"tag":131,"props":1902,"children":1903},{"style":144},[1904],{"type":56,"value":147},{"type":45,"tag":131,"props":1906,"children":1907},{"style":144},[1908],{"type":56,"value":168},{"type":45,"tag":131,"props":1910,"children":1911},{"style":282},[1912],{"type":56,"value":1913},"201",{"type":45,"tag":131,"props":1915,"children":1916},{"style":144},[1917],{"type":56,"value":179},{"type":45,"tag":131,"props":1919,"children":1920},{"style":144},[1921],{"type":56,"value":290},{"type":45,"tag":131,"props":1923,"children":1924},{"style":144},[1925],{"type":56,"value":147},{"type":45,"tag":131,"props":1927,"children":1928},{"style":282},[1929],{"type":56,"value":1608},{"type":45,"tag":131,"props":1931,"children":1932},{"style":144},[1933],{"type":56,"value":290},{"type":45,"tag":131,"props":1935,"children":1936},{"style":144},[1937],{"type":56,"value":168},{"type":45,"tag":131,"props":1939,"children":1940},{"style":171},[1941],{"type":56,"value":1621},{"type":45,"tag":131,"props":1943,"children":1944},{"style":144},[1945],{"type":56,"value":179},{"type":45,"tag":131,"props":1947,"children":1948},{"style":144},[1949],{"type":56,"value":158},{"type":45,"tag":131,"props":1951,"children":1952},{"style":144},[1953],{"type":56,"value":1349},{"type":45,"tag":131,"props":1955,"children":1957},{"class":133,"line":1956},31,[1958],{"type":45,"tag":131,"props":1959,"children":1960},{"style":144},[1961],{"type":56,"value":1642},{"type":45,"tag":131,"props":1963,"children":1965},{"class":133,"line":1964},32,[1966],{"type":45,"tag":131,"props":1967,"children":1968},{"style":144},[1969],{"type":56,"value":441},{"type":45,"tag":131,"props":1971,"children":1973},{"class":133,"line":1972},33,[1974,1978,1983,1987,1991],{"type":45,"tag":131,"props":1975,"children":1976},{"style":144},[1977],{"type":56,"value":304},{"type":45,"tag":131,"props":1979,"children":1980},{"style":282},[1981],{"type":56,"value":1982},"\u002Fpets\u002F{petId}",{"type":45,"tag":131,"props":1984,"children":1985},{"style":144},[1986],{"type":56,"value":179},{"type":45,"tag":131,"props":1988,"children":1989},{"style":144},[1990],{"type":56,"value":290},{"type":45,"tag":131,"props":1992,"children":1993},{"style":144},[1994],{"type":56,"value":295},{"type":45,"tag":131,"props":1996,"children":1998},{"class":133,"line":1997},34,[1999,2003,2007],{"type":45,"tag":131,"props":2000,"children":2001},{"style":282},[2002],{"type":56,"value":1397},{"type":45,"tag":131,"props":2004,"children":2005},{"style":144},[2006],{"type":56,"value":290},{"type":45,"tag":131,"props":2008,"children":2009},{"style":144},[2010],{"type":56,"value":295},{"type":45,"tag":131,"props":2012,"children":2014},{"class":133,"line":2013},35,[2015,2019,2023,2027,2032,2036],{"type":45,"tag":131,"props":2016,"children":2017},{"style":282},[2018],{"type":56,"value":1413},{"type":45,"tag":131,"props":2020,"children":2021},{"style":144},[2022],{"type":56,"value":290},{"type":45,"tag":131,"props":2024,"children":2025},{"style":144},[2026],{"type":56,"value":168},{"type":45,"tag":131,"props":2028,"children":2029},{"style":171},[2030],{"type":56,"value":2031},"getPetById",{"type":45,"tag":131,"props":2033,"children":2034},{"style":144},[2035],{"type":56,"value":179},{"type":45,"tag":131,"props":2037,"children":2038},{"style":144},[2039],{"type":56,"value":352},{"type":45,"tag":131,"props":2041,"children":2043},{"class":133,"line":2042},36,[2044,2048,2052],{"type":45,"tag":131,"props":2045,"children":2046},{"style":282},[2047],{"type":56,"value":1442},{"type":45,"tag":131,"props":2049,"children":2050},{"style":144},[2051],{"type":56,"value":290},{"type":45,"tag":131,"props":2053,"children":2054},{"style":150},[2055],{"type":56,"value":1451},{"type":45,"tag":131,"props":2057,"children":2059},{"class":133,"line":2058},37,[2060,2064,2068,2072,2076,2081,2085,2089,2093,2097,2101,2106,2110,2114,2119,2123,2129,2133,2137,2141,2145,2149,2153,2157,2161,2165,2169],{"type":45,"tag":131,"props":2061,"children":2062},{"style":144},[2063],{"type":56,"value":1459},{"type":45,"tag":131,"props":2065,"children":2066},{"style":282},[2067],{"type":56,"value":1464},{"type":45,"tag":131,"props":2069,"children":2070},{"style":144},[2071],{"type":56,"value":290},{"type":45,"tag":131,"props":2073,"children":2074},{"style":144},[2075],{"type":56,"value":168},{"type":45,"tag":131,"props":2077,"children":2078},{"style":171},[2079],{"type":56,"value":2080},"petId",{"type":45,"tag":131,"props":2082,"children":2083},{"style":144},[2084],{"type":56,"value":179},{"type":45,"tag":131,"props":2086,"children":2087},{"style":144},[2088],{"type":56,"value":736},{"type":45,"tag":131,"props":2090,"children":2091},{"style":282},[2092],{"type":56,"value":1490},{"type":45,"tag":131,"props":2094,"children":2095},{"style":144},[2096],{"type":56,"value":290},{"type":45,"tag":131,"props":2098,"children":2099},{"style":144},[2100],{"type":56,"value":168},{"type":45,"tag":131,"props":2102,"children":2103},{"style":171},[2104],{"type":56,"value":2105},"path",{"type":45,"tag":131,"props":2107,"children":2108},{"style":144},[2109],{"type":56,"value":179},{"type":45,"tag":131,"props":2111,"children":2112},{"style":144},[2113],{"type":56,"value":736},{"type":45,"tag":131,"props":2115,"children":2116},{"style":282},[2117],{"type":56,"value":2118}," required",{"type":45,"tag":131,"props":2120,"children":2121},{"style":144},[2122],{"type":56,"value":290},{"type":45,"tag":131,"props":2124,"children":2126},{"style":2125},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2127],{"type":56,"value":2128}," true",{"type":45,"tag":131,"props":2130,"children":2131},{"style":144},[2132],{"type":56,"value":736},{"type":45,"tag":131,"props":2134,"children":2135},{"style":282},[2136],{"type":56,"value":1516},{"type":45,"tag":131,"props":2138,"children":2139},{"style":144},[2140],{"type":56,"value":290},{"type":45,"tag":131,"props":2142,"children":2143},{"style":144},[2144],{"type":56,"value":147},{"type":45,"tag":131,"props":2146,"children":2147},{"style":282},[2148],{"type":56,"value":1529},{"type":45,"tag":131,"props":2150,"children":2151},{"style":144},[2152],{"type":56,"value":290},{"type":45,"tag":131,"props":2154,"children":2155},{"style":144},[2156],{"type":56,"value":168},{"type":45,"tag":131,"props":2158,"children":2159},{"style":171},[2160],{"type":56,"value":1542},{"type":45,"tag":131,"props":2162,"children":2163},{"style":144},[2164],{"type":56,"value":179},{"type":45,"tag":131,"props":2166,"children":2167},{"style":144},[2168],{"type":56,"value":158},{"type":45,"tag":131,"props":2170,"children":2171},{"style":144},[2172],{"type":56,"value":1349},{"type":45,"tag":131,"props":2174,"children":2176},{"class":133,"line":2175},38,[2177,2181],{"type":45,"tag":131,"props":2178,"children":2179},{"style":150},[2180],{"type":56,"value":1562},{"type":45,"tag":131,"props":2182,"children":2183},{"style":144},[2184],{"type":56,"value":352},{"type":45,"tag":131,"props":2186,"children":2188},{"class":133,"line":2187},39,[2189,2193,2197,2201,2205,2209,2213,2217,2221,2225,2229,2233,2237,2241,2245],{"type":45,"tag":131,"props":2190,"children":2191},{"style":282},[2192],{"type":56,"value":1574},{"type":45,"tag":131,"props":2194,"children":2195},{"style":144},[2196],{"type":56,"value":290},{"type":45,"tag":131,"props":2198,"children":2199},{"style":144},[2200],{"type":56,"value":147},{"type":45,"tag":131,"props":2202,"children":2203},{"style":144},[2204],{"type":56,"value":168},{"type":45,"tag":131,"props":2206,"children":2207},{"style":282},[2208],{"type":56,"value":1591},{"type":45,"tag":131,"props":2210,"children":2211},{"style":144},[2212],{"type":56,"value":179},{"type":45,"tag":131,"props":2214,"children":2215},{"style":144},[2216],{"type":56,"value":290},{"type":45,"tag":131,"props":2218,"children":2219},{"style":144},[2220],{"type":56,"value":147},{"type":45,"tag":131,"props":2222,"children":2223},{"style":282},[2224],{"type":56,"value":1608},{"type":45,"tag":131,"props":2226,"children":2227},{"style":144},[2228],{"type":56,"value":290},{"type":45,"tag":131,"props":2230,"children":2231},{"style":144},[2232],{"type":56,"value":168},{"type":45,"tag":131,"props":2234,"children":2235},{"style":171},[2236],{"type":56,"value":1621},{"type":45,"tag":131,"props":2238,"children":2239},{"style":144},[2240],{"type":56,"value":179},{"type":45,"tag":131,"props":2242,"children":2243},{"style":144},[2244],{"type":56,"value":158},{"type":45,"tag":131,"props":2246,"children":2247},{"style":144},[2248],{"type":56,"value":1349},{"type":45,"tag":131,"props":2250,"children":2252},{"class":133,"line":2251},40,[2253],{"type":45,"tag":131,"props":2254,"children":2255},{"style":144},[2256],{"type":56,"value":1642},{"type":45,"tag":131,"props":2258,"children":2260},{"class":133,"line":2259},41,[2261],{"type":45,"tag":131,"props":2262,"children":2263},{"style":144},[2264],{"type":56,"value":441},{"type":45,"tag":131,"props":2266,"children":2268},{"class":133,"line":2267},42,[2269],{"type":45,"tag":131,"props":2270,"children":2271},{"style":144},[2272],{"type":56,"value":450},{"type":45,"tag":131,"props":2274,"children":2276},{"class":133,"line":2275},43,[2277,2281,2285],{"type":45,"tag":131,"props":2278,"children":2279},{"style":144},[2280],{"type":56,"value":459},{"type":45,"tag":131,"props":2282,"children":2283},{"style":150},[2284],{"type":56,"value":428},{"type":45,"tag":131,"props":2286,"children":2287},{"style":144},[2288],{"type":56,"value":184},{"type":45,"tag":131,"props":2290,"children":2292},{"class":133,"line":2291},44,[2293],{"type":45,"tag":131,"props":2294,"children":2295},{"emptyLinePlaceholder":232},[2296],{"type":56,"value":235},{"type":45,"tag":131,"props":2298,"children":2300},{"class":133,"line":2299},45,[2301,2305,2309,2313,2317,2321,2325],{"type":45,"tag":131,"props":2302,"children":2303},{"style":242},[2304],{"type":56,"value":245},{"type":45,"tag":131,"props":2306,"children":2307},{"style":150},[2308],{"type":56,"value":250},{"type":45,"tag":131,"props":2310,"children":2311},{"style":144},[2312],{"type":56,"value":255},{"type":45,"tag":131,"props":2314,"children":2315},{"style":138},[2316],{"type":56,"value":260},{"type":45,"tag":131,"props":2318,"children":2319},{"style":263},[2320],{"type":56,"value":201},{"type":45,"tag":131,"props":2322,"children":2323},{"style":150},[2324],{"type":56,"value":270},{"type":45,"tag":131,"props":2326,"children":2327},{"style":144},[2328],{"type":56,"value":275},{"type":45,"tag":131,"props":2330,"children":2332},{"class":133,"line":2331},46,[2333,2338,2342,2346,2350,2355,2359,2363],{"type":45,"tag":131,"props":2334,"children":2335},{"style":263},[2336],{"type":56,"value":2337},"  setup",{"type":45,"tag":131,"props":2339,"children":2340},{"style":144},[2341],{"type":56,"value":290},{"type":45,"tag":131,"props":2343,"children":2344},{"style":242},[2345],{"type":56,"value":370},{"type":45,"tag":131,"props":2347,"children":2348},{"style":144},[2349],{"type":56,"value":375},{"type":45,"tag":131,"props":2351,"children":2352},{"style":378},[2353],{"type":56,"value":2354},"sdk",{"type":45,"tag":131,"props":2356,"children":2357},{"style":144},[2358],{"type":56,"value":428},{"type":45,"tag":131,"props":2360,"children":2361},{"style":242},[2362],{"type":56,"value":405},{"type":45,"tag":131,"props":2364,"children":2365},{"style":144},[2366],{"type":56,"value":295},{"type":45,"tag":131,"props":2368,"children":2370},{"class":133,"line":2369},47,[2371,2376,2380,2384,2388,2392,2396,2400],{"type":45,"tag":131,"props":2372,"children":2373},{"style":138},[2374],{"type":56,"value":2375},"    await",{"type":45,"tag":131,"props":2377,"children":2378},{"style":150},[2379],{"type":56,"value":835},{"type":45,"tag":131,"props":2381,"children":2382},{"style":144},[2383],{"type":56,"value":532},{"type":45,"tag":131,"props":2385,"children":2386},{"style":150},[2387],{"type":56,"value":844},{"type":45,"tag":131,"props":2389,"children":2390},{"style":144},[2391],{"type":56,"value":532},{"type":45,"tag":131,"props":2393,"children":2394},{"style":263},[2395],{"type":56,"value":853},{"type":45,"tag":131,"props":2397,"children":2398},{"style":282},[2399],{"type":56,"value":270},{"type":45,"tag":131,"props":2401,"children":2402},{"style":144},[2403],{"type":56,"value":275},{"type":45,"tag":131,"props":2405,"children":2407},{"class":133,"line":2406},48,[2408,2413,2417,2421,2425,2429],{"type":45,"tag":131,"props":2409,"children":2410},{"style":282},[2411],{"type":56,"value":2412},"      kind",{"type":45,"tag":131,"props":2414,"children":2415},{"style":144},[2416],{"type":56,"value":290},{"type":45,"tag":131,"props":2418,"children":2419},{"style":144},[2420],{"type":56,"value":168},{"type":45,"tag":131,"props":2422,"children":2423},{"style":171},[2424],{"type":56,"value":27},{"type":45,"tag":131,"props":2426,"children":2427},{"style":144},[2428],{"type":56,"value":179},{"type":45,"tag":131,"props":2430,"children":2431},{"style":144},[2432],{"type":56,"value":352},{"type":45,"tag":131,"props":2434,"children":2436},{"class":133,"line":2435},49,[2437,2442,2446,2451],{"type":45,"tag":131,"props":2438,"children":2439},{"style":282},[2440],{"type":56,"value":2441},"      spec",{"type":45,"tag":131,"props":2443,"children":2444},{"style":144},[2445],{"type":56,"value":290},{"type":45,"tag":131,"props":2447,"children":2448},{"style":150},[2449],{"type":56,"value":2450}," PETSTORE_SPEC",{"type":45,"tag":131,"props":2452,"children":2453},{"style":144},[2454],{"type":56,"value":352},{"type":45,"tag":131,"props":2456,"children":2458},{"class":133,"line":2457},50,[2459,2464,2468,2472,2477,2481],{"type":45,"tag":131,"props":2460,"children":2461},{"style":282},[2462],{"type":56,"value":2463},"      endpoint",{"type":45,"tag":131,"props":2465,"children":2466},{"style":144},[2467],{"type":56,"value":290},{"type":45,"tag":131,"props":2469,"children":2470},{"style":144},[2471],{"type":56,"value":168},{"type":45,"tag":131,"props":2473,"children":2474},{"style":171},[2475],{"type":56,"value":2476},"https:\u002F\u002Fpetstore.example.com",{"type":45,"tag":131,"props":2478,"children":2479},{"style":144},[2480],{"type":56,"value":179},{"type":45,"tag":131,"props":2482,"children":2483},{"style":144},[2484],{"type":56,"value":352},{"type":45,"tag":131,"props":2486,"children":2488},{"class":133,"line":2487},51,[2489,2494,2498,2502,2507,2511,2515],{"type":45,"tag":131,"props":2490,"children":2491},{"style":282},[2492],{"type":56,"value":2493},"      name",{"type":45,"tag":131,"props":2495,"children":2496},{"style":144},[2497],{"type":56,"value":290},{"type":45,"tag":131,"props":2499,"children":2500},{"style":144},[2501],{"type":56,"value":168},{"type":45,"tag":131,"props":2503,"children":2504},{"style":171},[2505],{"type":56,"value":2506},"pets",{"type":45,"tag":131,"props":2508,"children":2509},{"style":144},[2510],{"type":56,"value":179},{"type":45,"tag":131,"props":2512,"children":2513},{"style":144},[2514],{"type":56,"value":736},{"type":45,"tag":131,"props":2516,"children":2517},{"style":392},[2518],{"type":56,"value":2519},"            \u002F\u002F becomes the namespace\n",{"type":45,"tag":131,"props":2521,"children":2523},{"class":133,"line":2522},52,[2524,2529,2533],{"type":45,"tag":131,"props":2525,"children":2526},{"style":144},[2527],{"type":56,"value":2528},"    }",{"type":45,"tag":131,"props":2530,"children":2531},{"style":282},[2532],{"type":56,"value":428},{"type":45,"tag":131,"props":2534,"children":2535},{"style":144},[2536],{"type":56,"value":184},{"type":45,"tag":131,"props":2538,"children":2540},{"class":133,"line":2539},53,[2541],{"type":45,"tag":131,"props":2542,"children":2543},{"style":144},[2544],{"type":56,"value":450},{"type":45,"tag":131,"props":2546,"children":2548},{"class":133,"line":2547},54,[2549,2554,2558,2562,2567,2571],{"type":45,"tag":131,"props":2550,"children":2551},{"style":282},[2552],{"type":56,"value":2553},"  onToolApproval",{"type":45,"tag":131,"props":2555,"children":2556},{"style":144},[2557],{"type":56,"value":290},{"type":45,"tag":131,"props":2559,"children":2560},{"style":144},[2561],{"type":56,"value":168},{"type":45,"tag":131,"props":2563,"children":2564},{"style":171},[2565],{"type":56,"value":2566},"allow-all",{"type":45,"tag":131,"props":2568,"children":2569},{"style":144},[2570],{"type":56,"value":179},{"type":45,"tag":131,"props":2572,"children":2573},{"style":144},[2574],{"type":56,"value":352},{"type":45,"tag":131,"props":2576,"children":2578},{"class":133,"line":2577},55,[2579,2583,2587],{"type":45,"tag":131,"props":2580,"children":2581},{"style":144},[2582],{"type":56,"value":459},{"type":45,"tag":131,"props":2584,"children":2585},{"style":150},[2586],{"type":56,"value":428},{"type":45,"tag":131,"props":2588,"children":2589},{"style":144},[2590],{"type":56,"value":184},{"type":45,"tag":131,"props":2592,"children":2594},{"class":133,"line":2593},56,[2595],{"type":45,"tag":131,"props":2596,"children":2597},{"emptyLinePlaceholder":232},[2598],{"type":56,"value":235},{"type":45,"tag":131,"props":2600,"children":2602},{"class":133,"line":2601},57,[2603,2607,2611,2615,2619,2623,2627],{"type":45,"tag":131,"props":2604,"children":2605},{"style":242},[2606],{"type":56,"value":245},{"type":45,"tag":131,"props":2608,"children":2609},{"style":150},[2610],{"type":56,"value":488},{"type":45,"tag":131,"props":2612,"children":2613},{"style":144},[2614],{"type":56,"value":255},{"type":45,"tag":131,"props":2616,"children":2617},{"style":144},[2618],{"type":56,"value":497},{"type":45,"tag":131,"props":2620,"children":2621},{"style":263},[2622],{"type":56,"value":153},{"type":45,"tag":131,"props":2624,"children":2625},{"style":150},[2626],{"type":56,"value":270},{"type":45,"tag":131,"props":2628,"children":2629},{"style":144},[2630],{"type":56,"value":275},{"type":45,"tag":131,"props":2632,"children":2634},{"class":133,"line":2633},58,[2635,2639,2643,2647,2651,2655],{"type":45,"tag":131,"props":2636,"children":2637},{"style":282},[2638],{"type":56,"value":518},{"type":45,"tag":131,"props":2640,"children":2641},{"style":144},[2642],{"type":56,"value":290},{"type":45,"tag":131,"props":2644,"children":2645},{"style":150},[2646],{"type":56,"value":527},{"type":45,"tag":131,"props":2648,"children":2649},{"style":144},[2650],{"type":56,"value":532},{"type":45,"tag":131,"props":2652,"children":2653},{"style":150},[2654],{"type":56,"value":537},{"type":45,"tag":131,"props":2656,"children":2657},{"style":144},[2658],{"type":56,"value":352},{"type":45,"tag":131,"props":2660,"children":2662},{"class":133,"line":2661},59,[2663,2667,2671,2675,2679,2683,2687,2691,2695],{"type":45,"tag":131,"props":2664,"children":2665},{"style":282},[2666],{"type":56,"value":550},{"type":45,"tag":131,"props":2668,"children":2669},{"style":144},[2670],{"type":56,"value":290},{"type":45,"tag":131,"props":2672,"children":2673},{"style":144},[2674],{"type":56,"value":147},{"type":45,"tag":131,"props":2676,"children":2677},{"style":282},[2678],{"type":56,"value":563},{"type":45,"tag":131,"props":2680,"children":2681},{"style":144},[2682],{"type":56,"value":290},{"type":45,"tag":131,"props":2684,"children":2685},{"style":150},[2686],{"type":56,"value":527},{"type":45,"tag":131,"props":2688,"children":2689},{"style":144},[2690],{"type":56,"value":532},{"type":45,"tag":131,"props":2692,"children":2693},{"style":150},[2694],{"type":56,"value":580},{"type":45,"tag":131,"props":2696,"children":2697},{"style":144},[2698],{"type":56,"value":585},{"type":45,"tag":131,"props":2700,"children":2702},{"class":133,"line":2701},60,[2703,2707,2711],{"type":45,"tag":131,"props":2704,"children":2705},{"style":144},[2706],{"type":56,"value":459},{"type":45,"tag":131,"props":2708,"children":2709},{"style":150},[2710],{"type":56,"value":428},{"type":45,"tag":131,"props":2712,"children":2713},{"style":144},[2714],{"type":56,"value":184},{"type":45,"tag":61,"props":2716,"children":2717},{},[2718],{"type":56,"value":2719},"Conversion rules:",{"type":45,"tag":2721,"props":2722,"children":2723},"ul",{},[2724,2730,2743,2748],{"type":45,"tag":2725,"props":2726,"children":2727},"li",{},[2728],{"type":56,"value":2729},"One tool per operation in the spec",{"type":45,"tag":2725,"props":2731,"children":2732},{},[2733,2735,2741],{"type":56,"value":2734},"Tool path: ",{"type":45,"tag":51,"props":2736,"children":2738},{"className":2737},[],[2739],{"type":56,"value":2740},"\u003Cname>.\u003CfirstUrlSegment>.\u003CoperationId>",{"type":56,"value":2742}," — the first URL path\nsegment is included as a grouping prefix (camelCase preserved on the operationId)",{"type":45,"tag":2725,"props":2744,"children":2745},{},[2746],{"type":56,"value":2747},"Args object = path params + query params + requestBody fields, flattened",{"type":45,"tag":2725,"props":2749,"children":2750},{},[2751,2753,2759],{"type":56,"value":2752},"Bash subcommand: kebab-case of ",{"type":45,"tag":51,"props":2754,"children":2756},{"className":2755},[],[2757],{"type":56,"value":2758},"\u003CfirstUrlSegment>.\u003CoperationId>",{"type":56,"value":2760},"; original\ncamelCase form is kept as an alias",{"type":45,"tag":61,"props":2762,"children":2763},{},[2764,2766,2772],{"type":56,"value":2765},"Example (from the spec above — all under ",{"type":45,"tag":51,"props":2767,"children":2769},{"className":2768},[],[2770],{"type":56,"value":2771},"\u002Fpets\u002F*",{"type":56,"value":815},{"type":45,"tag":86,"props":2774,"children":2777},{"className":2775,"code":2776,"language":56,"meta":91},[89],"operationId      → tool path                 JS call                                                  bash\nlistPets         → pets.pets.listPets        await tools.pets.pets.listPets({ status })               pets pets.list-pets --status open\ncreatePet        → pets.pets.createPet       await tools.pets.pets.createPet({ name })                pets pets.create-pet --name Fido\ngetPetById       → pets.pets.getPetById      await tools.pets.pets.getPetById({ petId })              pets pets.get-pet-by-id --pet-id 42\n",[2778],{"type":45,"tag":51,"props":2779,"children":2780},{"__ignoreMap":91},[2781],{"type":56,"value":2776},{"type":45,"tag":61,"props":2783,"children":2784},{},[2785,2787,2793,2795,2800,2802,2807],{"type":56,"value":2786},"(The double ",{"type":45,"tag":51,"props":2788,"children":2790},{"className":2789},[],[2791],{"type":56,"value":2792},"pets.pets",{"type":56,"value":2794}," looks awkward but is deterministic: the first ",{"type":45,"tag":51,"props":2796,"children":2798},{"className":2797},[],[2799],{"type":56,"value":2506},{"type":56,"value":2801},"\nis your ",{"type":45,"tag":51,"props":2803,"children":2805},{"className":2804},[],[2806],{"type":56,"value":637},{"type":56,"value":2808},", the second is the URL's first path segment.)",{"type":45,"tag":61,"props":2810,"children":2811},{},[2812],{"type":56,"value":2813},"Pitfalls:",{"type":45,"tag":2721,"props":2815,"children":2816},{},[2817,2834,2847,2852,2862],{"type":45,"tag":2725,"props":2818,"children":2819},{},[2820,2825,2827,2832],{"type":45,"tag":51,"props":2821,"children":2823},{"className":2822},[],[2824],{"type":56,"value":650},{"type":56,"value":2826}," must be a ",{"type":45,"tag":2828,"props":2829,"children":2830},"strong",{},[2831],{"type":56,"value":1542},{"type":56,"value":2833}," (URL, JSON text, or YAML text), not a parsed object",{"type":45,"tag":2725,"props":2835,"children":2836},{},[2837,2839,2845],{"type":56,"value":2838},"Operations missing ",{"type":45,"tag":51,"props":2840,"children":2842},{"className":2841},[],[2843],{"type":56,"value":2844},"operationId",{"type":56,"value":2846}," are skipped; if the user's spec lacks them,\nadd them or fall back to inline tools",{"type":45,"tag":2725,"props":2848,"children":2849},{},[2850],{"type":56,"value":2851},"All param locations (path, query, body) flatten into one args object — name\ncollisions across locations are the user's problem to resolve",{"type":45,"tag":2725,"props":2853,"children":2854},{},[2855,2860],{"type":45,"tag":51,"props":2856,"children":2858},{"className":2857},[],[2859],{"type":56,"value":805},{"type":56,"value":2861}," are sent on every invocation — fine for static tokens, but for\nper-request auth wire an inline tool that adds the header dynamically",{"type":45,"tag":2725,"props":2863,"children":2864},{},[2865,2867,2873,2875,2881,2883,2889,2891,2896],{"type":56,"value":2866},"The plugin is loaded lazily via ",{"type":45,"tag":51,"props":2868,"children":2870},{"className":2869},[],[2871],{"type":56,"value":2872},"setup",{"type":56,"value":2874},"; install ",{"type":45,"tag":51,"props":2876,"children":2878},{"className":2877},[],[2879],{"type":56,"value":2880},"@executor-js\u002Fplugin-openapi",{"type":56,"value":2882},"\nalongside ",{"type":45,"tag":51,"props":2884,"children":2886},{"className":2885},[],[2887],{"type":56,"value":2888},"@executor-js\u002Fsdk",{"type":56,"value":2890}," or ",{"type":45,"tag":51,"props":2892,"children":2894},{"className":2893},[],[2895],{"type":56,"value":107},{"type":56,"value":2897}," will throw",{"type":45,"tag":79,"props":2899,"children":2901},{"id":2900},"_4-graphql-tools",[2902],{"type":56,"value":2903},"§4. GraphQL → tools",{"type":45,"tag":61,"props":2905,"children":2906},{},[2907,2909,2914],{"type":56,"value":2908},"Ask the user for: endpoint URL, optional introspection JSON, a namespace ",{"type":45,"tag":51,"props":2910,"children":2912},{"className":2911},[],[2913],{"type":56,"value":637},{"type":56,"value":2915},",\nand optional auth headers.",{"type":45,"tag":86,"props":2917,"children":2919},{"className":123,"code":2918,"language":125,"meta":91,"style":91},"const executor = await createExecutor({\n  setup: async (sdk) => {\n    await sdk.sources.add({\n      kind: \"graphql\",\n      endpoint: \"https:\u002F\u002Fapi.github.com\u002Fgraphql\",\n      name: \"github\",\n      headers: {\n        Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n      },\n      \u002F\u002F Optional: pre-fetched schema; skips the introspection round-trip and\n      \u002F\u002F lets discovery work offline. Recommended for unstable upstreams.\n      \u002F\u002F introspectionJson: INTROSPECTION_JSON,\n    });\n  },\n  onToolApproval: \"allow-all\",\n});\n",[2920],{"type":45,"tag":51,"props":2921,"children":2922},{"__ignoreMap":91},[2923,2954,2989,3024,3051,3079,3106,3122,3174,3181,3189,3197,3205,3220,3227,3254],{"type":45,"tag":131,"props":2924,"children":2925},{"class":133,"line":134},[2926,2930,2934,2938,2942,2946,2950],{"type":45,"tag":131,"props":2927,"children":2928},{"style":242},[2929],{"type":56,"value":245},{"type":45,"tag":131,"props":2931,"children":2932},{"style":150},[2933],{"type":56,"value":250},{"type":45,"tag":131,"props":2935,"children":2936},{"style":144},[2937],{"type":56,"value":255},{"type":45,"tag":131,"props":2939,"children":2940},{"style":138},[2941],{"type":56,"value":260},{"type":45,"tag":131,"props":2943,"children":2944},{"style":263},[2945],{"type":56,"value":201},{"type":45,"tag":131,"props":2947,"children":2948},{"style":150},[2949],{"type":56,"value":270},{"type":45,"tag":131,"props":2951,"children":2952},{"style":144},[2953],{"type":56,"value":275},{"type":45,"tag":131,"props":2955,"children":2956},{"class":133,"line":187},[2957,2961,2965,2969,2973,2977,2981,2985],{"type":45,"tag":131,"props":2958,"children":2959},{"style":263},[2960],{"type":56,"value":2337},{"type":45,"tag":131,"props":2962,"children":2963},{"style":144},[2964],{"type":56,"value":290},{"type":45,"tag":131,"props":2966,"children":2967},{"style":242},[2968],{"type":56,"value":370},{"type":45,"tag":131,"props":2970,"children":2971},{"style":144},[2972],{"type":56,"value":375},{"type":45,"tag":131,"props":2974,"children":2975},{"style":378},[2976],{"type":56,"value":2354},{"type":45,"tag":131,"props":2978,"children":2979},{"style":144},[2980],{"type":56,"value":428},{"type":45,"tag":131,"props":2982,"children":2983},{"style":242},[2984],{"type":56,"value":405},{"type":45,"tag":131,"props":2986,"children":2987},{"style":144},[2988],{"type":56,"value":295},{"type":45,"tag":131,"props":2990,"children":2991},{"class":133,"line":228},[2992,2996,3000,3004,3008,3012,3016,3020],{"type":45,"tag":131,"props":2993,"children":2994},{"style":138},[2995],{"type":56,"value":2375},{"type":45,"tag":131,"props":2997,"children":2998},{"style":150},[2999],{"type":56,"value":835},{"type":45,"tag":131,"props":3001,"children":3002},{"style":144},[3003],{"type":56,"value":532},{"type":45,"tag":131,"props":3005,"children":3006},{"style":150},[3007],{"type":56,"value":844},{"type":45,"tag":131,"props":3009,"children":3010},{"style":144},[3011],{"type":56,"value":532},{"type":45,"tag":131,"props":3013,"children":3014},{"style":263},[3015],{"type":56,"value":853},{"type":45,"tag":131,"props":3017,"children":3018},{"style":282},[3019],{"type":56,"value":270},{"type":45,"tag":131,"props":3021,"children":3022},{"style":144},[3023],{"type":56,"value":275},{"type":45,"tag":131,"props":3025,"children":3026},{"class":133,"line":238},[3027,3031,3035,3039,3043,3047],{"type":45,"tag":131,"props":3028,"children":3029},{"style":282},[3030],{"type":56,"value":2412},{"type":45,"tag":131,"props":3032,"children":3033},{"style":144},[3034],{"type":56,"value":290},{"type":45,"tag":131,"props":3036,"children":3037},{"style":144},[3038],{"type":56,"value":168},{"type":45,"tag":131,"props":3040,"children":3041},{"style":171},[3042],{"type":56,"value":14},{"type":45,"tag":131,"props":3044,"children":3045},{"style":144},[3046],{"type":56,"value":179},{"type":45,"tag":131,"props":3048,"children":3049},{"style":144},[3050],{"type":56,"value":352},{"type":45,"tag":131,"props":3052,"children":3053},{"class":133,"line":278},[3054,3058,3062,3066,3071,3075],{"type":45,"tag":131,"props":3055,"children":3056},{"style":282},[3057],{"type":56,"value":2463},{"type":45,"tag":131,"props":3059,"children":3060},{"style":144},[3061],{"type":56,"value":290},{"type":45,"tag":131,"props":3063,"children":3064},{"style":144},[3065],{"type":56,"value":168},{"type":45,"tag":131,"props":3067,"children":3068},{"style":171},[3069],{"type":56,"value":3070},"https:\u002F\u002Fapi.github.com\u002Fgraphql",{"type":45,"tag":131,"props":3072,"children":3073},{"style":144},[3074],{"type":56,"value":179},{"type":45,"tag":131,"props":3076,"children":3077},{"style":144},[3078],{"type":56,"value":352},{"type":45,"tag":131,"props":3080,"children":3081},{"class":133,"line":298},[3082,3086,3090,3094,3098,3102],{"type":45,"tag":131,"props":3083,"children":3084},{"style":282},[3085],{"type":56,"value":2493},{"type":45,"tag":131,"props":3087,"children":3088},{"style":144},[3089],{"type":56,"value":290},{"type":45,"tag":131,"props":3091,"children":3092},{"style":144},[3093],{"type":56,"value":168},{"type":45,"tag":131,"props":3095,"children":3096},{"style":171},[3097],{"type":56,"value":968},{"type":45,"tag":131,"props":3099,"children":3100},{"style":144},[3101],{"type":56,"value":179},{"type":45,"tag":131,"props":3103,"children":3104},{"style":144},[3105],{"type":56,"value":352},{"type":45,"tag":131,"props":3107,"children":3108},{"class":133,"line":324},[3109,3114,3118],{"type":45,"tag":131,"props":3110,"children":3111},{"style":282},[3112],{"type":56,"value":3113},"      headers",{"type":45,"tag":131,"props":3115,"children":3116},{"style":144},[3117],{"type":56,"value":290},{"type":45,"tag":131,"props":3119,"children":3120},{"style":144},[3121],{"type":56,"value":295},{"type":45,"tag":131,"props":3123,"children":3124},{"class":133,"line":355},[3125,3130,3134,3138,3142,3146,3150,3154,3158,3162,3166,3170],{"type":45,"tag":131,"props":3126,"children":3127},{"style":282},[3128],{"type":56,"value":3129},"        Authorization",{"type":45,"tag":131,"props":3131,"children":3132},{"style":144},[3133],{"type":56,"value":290},{"type":45,"tag":131,"props":3135,"children":3136},{"style":144},[3137],{"type":56,"value":1009},{"type":45,"tag":131,"props":3139,"children":3140},{"style":171},[3141],{"type":56,"value":1014},{"type":45,"tag":131,"props":3143,"children":3144},{"style":144},[3145],{"type":56,"value":1019},{"type":45,"tag":131,"props":3147,"children":3148},{"style":150},[3149],{"type":56,"value":1024},{"type":45,"tag":131,"props":3151,"children":3152},{"style":144},[3153],{"type":56,"value":532},{"type":45,"tag":131,"props":3155,"children":3156},{"style":150},[3157],{"type":56,"value":1033},{"type":45,"tag":131,"props":3159,"children":3160},{"style":144},[3161],{"type":56,"value":532},{"type":45,"tag":131,"props":3163,"children":3164},{"style":150},[3165],{"type":56,"value":1042},{"type":45,"tag":131,"props":3167,"children":3168},{"style":144},[3169],{"type":56,"value":1047},{"type":45,"tag":131,"props":3171,"children":3172},{"style":144},[3173],{"type":56,"value":352},{"type":45,"tag":131,"props":3175,"children":3176},{"class":133,"line":435},[3177],{"type":45,"tag":131,"props":3178,"children":3179},{"style":144},[3180],{"type":56,"value":1642},{"type":45,"tag":131,"props":3182,"children":3183},{"class":133,"line":444},[3184],{"type":45,"tag":131,"props":3185,"children":3186},{"style":392},[3187],{"type":56,"value":3188},"      \u002F\u002F Optional: pre-fetched schema; skips the introspection round-trip and\n",{"type":45,"tag":131,"props":3190,"children":3191},{"class":133,"line":453},[3192],{"type":45,"tag":131,"props":3193,"children":3194},{"style":392},[3195],{"type":56,"value":3196},"      \u002F\u002F lets discovery work offline. Recommended for unstable upstreams.\n",{"type":45,"tag":131,"props":3198,"children":3199},{"class":133,"line":470},[3200],{"type":45,"tag":131,"props":3201,"children":3202},{"style":392},[3203],{"type":56,"value":3204},"      \u002F\u002F introspectionJson: INTROSPECTION_JSON,\n",{"type":45,"tag":131,"props":3206,"children":3207},{"class":133,"line":478},[3208,3212,3216],{"type":45,"tag":131,"props":3209,"children":3210},{"style":144},[3211],{"type":56,"value":2528},{"type":45,"tag":131,"props":3213,"children":3214},{"style":282},[3215],{"type":56,"value":428},{"type":45,"tag":131,"props":3217,"children":3218},{"style":144},[3219],{"type":56,"value":184},{"type":45,"tag":131,"props":3221,"children":3222},{"class":133,"line":512},[3223],{"type":45,"tag":131,"props":3224,"children":3225},{"style":144},[3226],{"type":56,"value":450},{"type":45,"tag":131,"props":3228,"children":3229},{"class":133,"line":544},[3230,3234,3238,3242,3246,3250],{"type":45,"tag":131,"props":3231,"children":3232},{"style":282},[3233],{"type":56,"value":2553},{"type":45,"tag":131,"props":3235,"children":3236},{"style":144},[3237],{"type":56,"value":290},{"type":45,"tag":131,"props":3239,"children":3240},{"style":144},[3241],{"type":56,"value":168},{"type":45,"tag":131,"props":3243,"children":3244},{"style":171},[3245],{"type":56,"value":2566},{"type":45,"tag":131,"props":3247,"children":3248},{"style":144},[3249],{"type":56,"value":179},{"type":45,"tag":131,"props":3251,"children":3252},{"style":144},[3253],{"type":56,"value":352},{"type":45,"tag":131,"props":3255,"children":3256},{"class":133,"line":588},[3257,3261,3265],{"type":45,"tag":131,"props":3258,"children":3259},{"style":144},[3260],{"type":56,"value":459},{"type":45,"tag":131,"props":3262,"children":3263},{"style":150},[3264],{"type":56,"value":428},{"type":45,"tag":131,"props":3266,"children":3267},{"style":144},[3268],{"type":56,"value":184},{"type":45,"tag":61,"props":3270,"children":3271},{},[3272],{"type":56,"value":2719},{"type":45,"tag":2721,"props":3274,"children":3275},{},[3276,3281,3301,3306,3335,3348],{"type":45,"tag":2725,"props":3277,"children":3278},{},[3279],{"type":56,"value":3280},"One tool per top-level Query and Mutation field",{"type":45,"tag":2725,"props":3282,"children":3283},{},[3284,3285,3291,3293,3299],{"type":56,"value":2734},{"type":45,"tag":51,"props":3286,"children":3288},{"className":3287},[],[3289],{"type":56,"value":3290},"\u003Cname>.query.\u003CfieldName>",{"type":56,"value":3292}," for queries and\n",{"type":45,"tag":51,"props":3294,"children":3296},{"className":3295},[],[3297],{"type":56,"value":3298},"\u003Cname>.mutation.\u003CfieldName>",{"type":56,"value":3300}," for mutations (camelCase preserved)",{"type":45,"tag":2725,"props":3302,"children":3303},{},[3304],{"type":56,"value":3305},"Args object = the field's argument definitions",{"type":45,"tag":2725,"props":3307,"children":3308},{},[3309,3311,3317,3319,3325,3327,3333],{"type":56,"value":3310},"Result is the raw GraphQL response envelope: ",{"type":45,"tag":51,"props":3312,"children":3314},{"className":3313},[],[3315],{"type":56,"value":3316},"{ status, data, errors }",{"type":56,"value":3318},".\nScripts must check ",{"type":45,"tag":51,"props":3320,"children":3322},{"className":3321},[],[3323],{"type":56,"value":3324},"errors",{"type":56,"value":3326}," and read ",{"type":45,"tag":51,"props":3328,"children":3330},{"className":3329},[],[3331],{"type":56,"value":3332},"data",{"type":56,"value":3334}," themselves — there is no\nauto-unwrap.",{"type":45,"tag":2725,"props":3336,"children":3337},{},[3338,3340,3346],{"type":56,"value":3339},"The plugin auto-generates a shallow selection set. Queries whose return\ntypes contain nested object fields will fail server-side validation\n(\"Field X of type Y must have a selection of subfields\"). For these,\nwrap the call in an inline tool that posts a hand-written GraphQL query\nvia ",{"type":45,"tag":51,"props":3341,"children":3343},{"className":3342},[],[3344],{"type":56,"value":3345},"fetch",{"type":56,"value":3347}," instead of going through the SDK plugin.",{"type":45,"tag":2725,"props":3349,"children":3350},{},[3351],{"type":56,"value":3352},"Subscriptions are not currently exposed as callable tools",{"type":45,"tag":61,"props":3354,"children":3355},{},[3356],{"type":56,"value":3357},"Example, from the public Countries schema (all queries):",{"type":45,"tag":86,"props":3359,"children":3362},{"className":3360,"code":3361,"language":56,"meta":91},[89],"Query field      → tool path                JS call                                                            bash\ncountry(code)    → geo.query.country        await tools.geo.query.country({ code: \"JP\" })                      geo query.country code=JP\ncountries(filter)→ geo.query.countries      await tools.geo.query.countries({ filter: { ... } })               geo query.countries --json '{\"filter\":{...}}'\ncontinent(code)  → geo.query.continent      await tools.geo.query.continent({ code: \"EU\" })                    geo query.continent code=EU\ncontinents       → geo.query.continents     await tools.geo.query.continents({})                               geo query.continents\nlanguage(code)   → geo.query.language       await tools.geo.query.language({ code: \"en\" })                     geo query.language code=en\nlanguages        → geo.query.languages      await tools.geo.query.languages({})                                geo query.languages\n",[3363],{"type":45,"tag":51,"props":3364,"children":3365},{"__ignoreMap":91},[3366],{"type":56,"value":3361},{"type":45,"tag":61,"props":3368,"children":3369},{},[3370],{"type":56,"value":3371},"Reading the response in a script:",{"type":45,"tag":86,"props":3373,"children":3377},{"className":3374,"code":3375,"language":3376,"meta":91,"style":91},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const r = await tools.geo.query.country({ code: \"JP\" });\nif (r.errors && r.errors.length) {\n  throw new Error(r.errors.map((e) => e.message).join(\"; \"));\n}\nconst country = r.data.country;\nconsole.log(country.name);\n","js",[3378],{"type":45,"tag":51,"props":3379,"children":3380},{"__ignoreMap":91},[3381,3474,3527,3644,3652,3692],{"type":45,"tag":131,"props":3382,"children":3383},{"class":133,"line":134},[3384,3388,3393,3397,3401,3406,3410,3415,3419,3423,3427,3432,3436,3440,3445,3449,3453,3458,3462,3466,3470],{"type":45,"tag":131,"props":3385,"children":3386},{"style":242},[3387],{"type":56,"value":245},{"type":45,"tag":131,"props":3389,"children":3390},{"style":150},[3391],{"type":56,"value":3392}," r ",{"type":45,"tag":131,"props":3394,"children":3395},{"style":144},[3396],{"type":56,"value":255},{"type":45,"tag":131,"props":3398,"children":3399},{"style":138},[3400],{"type":56,"value":260},{"type":45,"tag":131,"props":3402,"children":3403},{"style":150},[3404],{"type":56,"value":3405}," tools",{"type":45,"tag":131,"props":3407,"children":3408},{"style":144},[3409],{"type":56,"value":532},{"type":45,"tag":131,"props":3411,"children":3412},{"style":150},[3413],{"type":56,"value":3414},"geo",{"type":45,"tag":131,"props":3416,"children":3417},{"style":144},[3418],{"type":56,"value":532},{"type":45,"tag":131,"props":3420,"children":3421},{"style":150},[3422],{"type":56,"value":1503},{"type":45,"tag":131,"props":3424,"children":3425},{"style":144},[3426],{"type":56,"value":532},{"type":45,"tag":131,"props":3428,"children":3429},{"style":263},[3430],{"type":56,"value":3431},"country",{"type":45,"tag":131,"props":3433,"children":3434},{"style":150},[3435],{"type":56,"value":270},{"type":45,"tag":131,"props":3437,"children":3438},{"style":144},[3439],{"type":56,"value":414},{"type":45,"tag":131,"props":3441,"children":3442},{"style":282},[3443],{"type":56,"value":3444}," code",{"type":45,"tag":131,"props":3446,"children":3447},{"style":144},[3448],{"type":56,"value":290},{"type":45,"tag":131,"props":3450,"children":3451},{"style":144},[3452],{"type":56,"value":168},{"type":45,"tag":131,"props":3454,"children":3455},{"style":171},[3456],{"type":56,"value":3457},"JP",{"type":45,"tag":131,"props":3459,"children":3460},{"style":144},[3461],{"type":56,"value":179},{"type":45,"tag":131,"props":3463,"children":3464},{"style":144},[3465],{"type":56,"value":158},{"type":45,"tag":131,"props":3467,"children":3468},{"style":150},[3469],{"type":56,"value":428},{"type":45,"tag":131,"props":3471,"children":3472},{"style":144},[3473],{"type":56,"value":184},{"type":45,"tag":131,"props":3475,"children":3476},{"class":133,"line":187},[3477,3482,3487,3491,3496,3501,3506,3510,3514,3518,3523],{"type":45,"tag":131,"props":3478,"children":3479},{"style":138},[3480],{"type":56,"value":3481},"if",{"type":45,"tag":131,"props":3483,"children":3484},{"style":150},[3485],{"type":56,"value":3486}," (r",{"type":45,"tag":131,"props":3488,"children":3489},{"style":144},[3490],{"type":56,"value":532},{"type":45,"tag":131,"props":3492,"children":3493},{"style":150},[3494],{"type":56,"value":3495},"errors ",{"type":45,"tag":131,"props":3497,"children":3498},{"style":144},[3499],{"type":56,"value":3500},"&&",{"type":45,"tag":131,"props":3502,"children":3503},{"style":150},[3504],{"type":56,"value":3505}," r",{"type":45,"tag":131,"props":3507,"children":3508},{"style":144},[3509],{"type":56,"value":532},{"type":45,"tag":131,"props":3511,"children":3512},{"style":150},[3513],{"type":56,"value":3324},{"type":45,"tag":131,"props":3515,"children":3516},{"style":144},[3517],{"type":56,"value":532},{"type":45,"tag":131,"props":3519,"children":3520},{"style":150},[3521],{"type":56,"value":3522},"length) ",{"type":45,"tag":131,"props":3524,"children":3525},{"style":144},[3526],{"type":56,"value":275},{"type":45,"tag":131,"props":3528,"children":3529},{"class":133,"line":228},[3530,3535,3539,3544,3548,3553,3557,3561,3565,3570,3574,3578,3583,3587,3591,3596,3600,3605,3609,3613,3618,3622,3626,3631,3635,3640],{"type":45,"tag":131,"props":3531,"children":3532},{"style":138},[3533],{"type":56,"value":3534},"  throw",{"type":45,"tag":131,"props":3536,"children":3537},{"style":144},[3538],{"type":56,"value":497},{"type":45,"tag":131,"props":3540,"children":3541},{"style":263},[3542],{"type":56,"value":3543}," Error",{"type":45,"tag":131,"props":3545,"children":3546},{"style":282},[3547],{"type":56,"value":270},{"type":45,"tag":131,"props":3549,"children":3550},{"style":150},[3551],{"type":56,"value":3552},"r",{"type":45,"tag":131,"props":3554,"children":3555},{"style":144},[3556],{"type":56,"value":532},{"type":45,"tag":131,"props":3558,"children":3559},{"style":150},[3560],{"type":56,"value":3324},{"type":45,"tag":131,"props":3562,"children":3563},{"style":144},[3564],{"type":56,"value":532},{"type":45,"tag":131,"props":3566,"children":3567},{"style":263},[3568],{"type":56,"value":3569},"map",{"type":45,"tag":131,"props":3571,"children":3572},{"style":282},[3573],{"type":56,"value":270},{"type":45,"tag":131,"props":3575,"children":3576},{"style":144},[3577],{"type":56,"value":270},{"type":45,"tag":131,"props":3579,"children":3580},{"style":378},[3581],{"type":56,"value":3582},"e",{"type":45,"tag":131,"props":3584,"children":3585},{"style":144},[3586],{"type":56,"value":428},{"type":45,"tag":131,"props":3588,"children":3589},{"style":242},[3590],{"type":56,"value":405},{"type":45,"tag":131,"props":3592,"children":3593},{"style":150},[3594],{"type":56,"value":3595}," e",{"type":45,"tag":131,"props":3597,"children":3598},{"style":144},[3599],{"type":56,"value":532},{"type":45,"tag":131,"props":3601,"children":3602},{"style":150},[3603],{"type":56,"value":3604},"message",{"type":45,"tag":131,"props":3606,"children":3607},{"style":282},[3608],{"type":56,"value":428},{"type":45,"tag":131,"props":3610,"children":3611},{"style":144},[3612],{"type":56,"value":532},{"type":45,"tag":131,"props":3614,"children":3615},{"style":263},[3616],{"type":56,"value":3617},"join",{"type":45,"tag":131,"props":3619,"children":3620},{"style":282},[3621],{"type":56,"value":270},{"type":45,"tag":131,"props":3623,"children":3624},{"style":144},[3625],{"type":56,"value":179},{"type":45,"tag":131,"props":3627,"children":3628},{"style":171},[3629],{"type":56,"value":3630},"; ",{"type":45,"tag":131,"props":3632,"children":3633},{"style":144},[3634],{"type":56,"value":179},{"type":45,"tag":131,"props":3636,"children":3637},{"style":282},[3638],{"type":56,"value":3639},"))",{"type":45,"tag":131,"props":3641,"children":3642},{"style":144},[3643],{"type":56,"value":184},{"type":45,"tag":131,"props":3645,"children":3646},{"class":133,"line":238},[3647],{"type":45,"tag":131,"props":3648,"children":3649},{"style":144},[3650],{"type":56,"value":3651},"}\n",{"type":45,"tag":131,"props":3653,"children":3654},{"class":133,"line":278},[3655,3659,3664,3668,3672,3676,3680,3684,3688],{"type":45,"tag":131,"props":3656,"children":3657},{"style":242},[3658],{"type":56,"value":245},{"type":45,"tag":131,"props":3660,"children":3661},{"style":150},[3662],{"type":56,"value":3663}," country ",{"type":45,"tag":131,"props":3665,"children":3666},{"style":144},[3667],{"type":56,"value":255},{"type":45,"tag":131,"props":3669,"children":3670},{"style":150},[3671],{"type":56,"value":3505},{"type":45,"tag":131,"props":3673,"children":3674},{"style":144},[3675],{"type":56,"value":532},{"type":45,"tag":131,"props":3677,"children":3678},{"style":150},[3679],{"type":56,"value":3332},{"type":45,"tag":131,"props":3681,"children":3682},{"style":144},[3683],{"type":56,"value":532},{"type":45,"tag":131,"props":3685,"children":3686},{"style":150},[3687],{"type":56,"value":3431},{"type":45,"tag":131,"props":3689,"children":3690},{"style":144},[3691],{"type":56,"value":184},{"type":45,"tag":131,"props":3693,"children":3694},{"class":133,"line":298},[3695,3700,3704,3709,3714,3718,3723],{"type":45,"tag":131,"props":3696,"children":3697},{"style":150},[3698],{"type":56,"value":3699},"console",{"type":45,"tag":131,"props":3701,"children":3702},{"style":144},[3703],{"type":56,"value":532},{"type":45,"tag":131,"props":3705,"children":3706},{"style":263},[3707],{"type":56,"value":3708},"log",{"type":45,"tag":131,"props":3710,"children":3711},{"style":150},[3712],{"type":56,"value":3713},"(country",{"type":45,"tag":131,"props":3715,"children":3716},{"style":144},[3717],{"type":56,"value":532},{"type":45,"tag":131,"props":3719,"children":3720},{"style":150},[3721],{"type":56,"value":3722},"name)",{"type":45,"tag":131,"props":3724,"children":3725},{"style":144},[3726],{"type":56,"value":184},{"type":45,"tag":61,"props":3728,"children":3729},{},[3730],{"type":56,"value":2813},{"type":45,"tag":2721,"props":3732,"children":3733},{},[3734,3763,3790,3800],{"type":45,"tag":2725,"props":3735,"children":3736},{},[3737,3739,3745,3747,3753,3755,3761],{"type":56,"value":3738},"Required GraphQL args (",{"type":45,"tag":51,"props":3740,"children":3742},{"className":3741},[],[3743],{"type":56,"value":3744},"String!",{"type":56,"value":3746},", ",{"type":45,"tag":51,"props":3748,"children":3750},{"className":3749},[],[3751],{"type":56,"value":3752},"ID!",{"type":56,"value":3754},") must be passed; the SDK surfaces\nvalidation errors as thrown exceptions inside scripts — wrap calls in\n",{"type":45,"tag":51,"props":3756,"children":3758},{"className":3757},[],[3759],{"type":56,"value":3760},"try\u002Fcatch",{"type":56,"value":3762}," if the agent might call with empty args",{"type":45,"tag":2725,"props":3764,"children":3765},{},[3766,3768,3774,3776,3782,3784],{"type":56,"value":3767},"For complex ",{"type":45,"tag":51,"props":3769,"children":3771},{"className":3770},[],[3772],{"type":56,"value":3773},"filter",{"type":56,"value":3775},"\u002Finput-object args, prefer ",{"type":45,"tag":51,"props":3777,"children":3779},{"className":3778},[],[3780],{"type":56,"value":3781},"--json",{"type":56,"value":3783}," over ",{"type":45,"tag":51,"props":3785,"children":3787},{"className":3786},[],[3788],{"type":56,"value":3789},"key=value",{"type":45,"tag":2725,"props":3791,"children":3792},{},[3793,3798],{"type":45,"tag":51,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":56,"value":805},{"type":56,"value":3799}," apply to introspection AND every tool call — useful for tokens,\nbut don't put per-user identity here",{"type":45,"tag":2725,"props":3801,"children":3802},{},[3803,3805,3811,3813],{"type":56,"value":3804},"Install ",{"type":45,"tag":51,"props":3806,"children":3808},{"className":3807},[],[3809],{"type":56,"value":3810},"@executor-js\u002Fplugin-graphql",{"type":56,"value":3812}," alongside ",{"type":45,"tag":51,"props":3814,"children":3816},{"className":3815},[],[3817],{"type":56,"value":2888},{"type":45,"tag":79,"props":3819,"children":3821},{"id":3820},"_5-mcp-tools",[3822],{"type":56,"value":3823},"§5. MCP → tools",{"type":45,"tag":61,"props":3825,"children":3826},{},[3827,3829,3835,3836,3842,3844,3849],{"type":56,"value":3828},"Ask the user for: transport (",{"type":45,"tag":51,"props":3830,"children":3832},{"className":3831},[],[3833],{"type":56,"value":3834},"\"remote\"",{"type":56,"value":2890},{"type":45,"tag":51,"props":3837,"children":3839},{"className":3838},[],[3840],{"type":56,"value":3841},"\"stdio\"",{"type":56,"value":3843},"), endpoint URL or\ncommand+args, a namespace ",{"type":45,"tag":51,"props":3845,"children":3847},{"className":3846},[],[3848],{"type":56,"value":637},{"type":56,"value":532},{"type":45,"tag":86,"props":3851,"children":3853},{"className":123,"code":3852,"language":125,"meta":91,"style":91},"const executor = await createExecutor({\n  setup: async (sdk) => {\n    \u002F\u002F Remote (SSE \u002F HTTP)\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.example.com\u002Fsse\",\n      name: \"docs\",\n    });\n\n    \u002F\u002F Remote with auth headers\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.context7.com\u002Fmcp\",\n      name: \"context7\",\n      headers: {\n        Authorization: `Bearer ${process.env.CONTEXT7_TOKEN}`,\n      },\n    });\n\n    \u002F\u002F Stdio (local process) — env vars and cwd are passed to the child\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"stdio\",\n      command: \"npx\",\n      args: [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fdata\"],\n      env: { LOG_LEVEL: \"info\" },\n      cwd: \"\u002Fwork\",\n      name: \"fs\",\n    });\n  },\n  onToolApproval: async (req) => {\n    \u002F\u002F MCP servers can do destructive things — gate by tool path\n    if (req.toolPath.endsWith(\".write_file\")) {\n      return { approved: false, reason: \"writes need review\" };\n    }\n    return { approved: true };\n  },\n  onElicitation: async (ctx) => {\n    \u002F\u002F MCP servers may request user input mid-tool (forms, OAuth URLs).\n    \u002F\u002F Decline by default; implement a real handler for interactive flows.\n    return { action: \"decline\" };\n  },\n});\n",[3854],{"type":45,"tag":51,"props":3855,"children":3856},{"__ignoreMap":91},[3857,3888,3923,3931,3966,3994,4023,4051,4079,4094,4101,4109,4144,4171,4198,4226,4254,4269,4321,4328,4343,4350,4358,4393,4420,4448,4477,4550,4592,4621,4649,4664,4671,4707,4715,4775,4832,4840,4868,4875,4912,4920,4928,4965,4972],{"type":45,"tag":131,"props":3858,"children":3859},{"class":133,"line":134},[3860,3864,3868,3872,3876,3880,3884],{"type":45,"tag":131,"props":3861,"children":3862},{"style":242},[3863],{"type":56,"value":245},{"type":45,"tag":131,"props":3865,"children":3866},{"style":150},[3867],{"type":56,"value":250},{"type":45,"tag":131,"props":3869,"children":3870},{"style":144},[3871],{"type":56,"value":255},{"type":45,"tag":131,"props":3873,"children":3874},{"style":138},[3875],{"type":56,"value":260},{"type":45,"tag":131,"props":3877,"children":3878},{"style":263},[3879],{"type":56,"value":201},{"type":45,"tag":131,"props":3881,"children":3882},{"style":150},[3883],{"type":56,"value":270},{"type":45,"tag":131,"props":3885,"children":3886},{"style":144},[3887],{"type":56,"value":275},{"type":45,"tag":131,"props":3889,"children":3890},{"class":133,"line":187},[3891,3895,3899,3903,3907,3911,3915,3919],{"type":45,"tag":131,"props":3892,"children":3893},{"style":263},[3894],{"type":56,"value":2337},{"type":45,"tag":131,"props":3896,"children":3897},{"style":144},[3898],{"type":56,"value":290},{"type":45,"tag":131,"props":3900,"children":3901},{"style":242},[3902],{"type":56,"value":370},{"type":45,"tag":131,"props":3904,"children":3905},{"style":144},[3906],{"type":56,"value":375},{"type":45,"tag":131,"props":3908,"children":3909},{"style":378},[3910],{"type":56,"value":2354},{"type":45,"tag":131,"props":3912,"children":3913},{"style":144},[3914],{"type":56,"value":428},{"type":45,"tag":131,"props":3916,"children":3917},{"style":242},[3918],{"type":56,"value":405},{"type":45,"tag":131,"props":3920,"children":3921},{"style":144},[3922],{"type":56,"value":295},{"type":45,"tag":131,"props":3924,"children":3925},{"class":133,"line":228},[3926],{"type":45,"tag":131,"props":3927,"children":3928},{"style":392},[3929],{"type":56,"value":3930},"    \u002F\u002F Remote (SSE \u002F HTTP)\n",{"type":45,"tag":131,"props":3932,"children":3933},{"class":133,"line":238},[3934,3938,3942,3946,3950,3954,3958,3962],{"type":45,"tag":131,"props":3935,"children":3936},{"style":138},[3937],{"type":56,"value":2375},{"type":45,"tag":131,"props":3939,"children":3940},{"style":150},[3941],{"type":56,"value":835},{"type":45,"tag":131,"props":3943,"children":3944},{"style":144},[3945],{"type":56,"value":532},{"type":45,"tag":131,"props":3947,"children":3948},{"style":150},[3949],{"type":56,"value":844},{"type":45,"tag":131,"props":3951,"children":3952},{"style":144},[3953],{"type":56,"value":532},{"type":45,"tag":131,"props":3955,"children":3956},{"style":263},[3957],{"type":56,"value":853},{"type":45,"tag":131,"props":3959,"children":3960},{"style":282},[3961],{"type":56,"value":270},{"type":45,"tag":131,"props":3963,"children":3964},{"style":144},[3965],{"type":56,"value":275},{"type":45,"tag":131,"props":3967,"children":3968},{"class":133,"line":278},[3969,3973,3977,3981,3986,3990],{"type":45,"tag":131,"props":3970,"children":3971},{"style":282},[3972],{"type":56,"value":2412},{"type":45,"tag":131,"props":3974,"children":3975},{"style":144},[3976],{"type":56,"value":290},{"type":45,"tag":131,"props":3978,"children":3979},{"style":144},[3980],{"type":56,"value":168},{"type":45,"tag":131,"props":3982,"children":3983},{"style":171},[3984],{"type":56,"value":3985},"mcp",{"type":45,"tag":131,"props":3987,"children":3988},{"style":144},[3989],{"type":56,"value":179},{"type":45,"tag":131,"props":3991,"children":3992},{"style":144},[3993],{"type":56,"value":352},{"type":45,"tag":131,"props":3995,"children":3996},{"class":133,"line":298},[3997,4002,4006,4010,4015,4019],{"type":45,"tag":131,"props":3998,"children":3999},{"style":282},[4000],{"type":56,"value":4001},"      transport",{"type":45,"tag":131,"props":4003,"children":4004},{"style":144},[4005],{"type":56,"value":290},{"type":45,"tag":131,"props":4007,"children":4008},{"style":144},[4009],{"type":56,"value":168},{"type":45,"tag":131,"props":4011,"children":4012},{"style":171},[4013],{"type":56,"value":4014},"remote",{"type":45,"tag":131,"props":4016,"children":4017},{"style":144},[4018],{"type":56,"value":179},{"type":45,"tag":131,"props":4020,"children":4021},{"style":144},[4022],{"type":56,"value":352},{"type":45,"tag":131,"props":4024,"children":4025},{"class":133,"line":324},[4026,4030,4034,4038,4043,4047],{"type":45,"tag":131,"props":4027,"children":4028},{"style":282},[4029],{"type":56,"value":2463},{"type":45,"tag":131,"props":4031,"children":4032},{"style":144},[4033],{"type":56,"value":290},{"type":45,"tag":131,"props":4035,"children":4036},{"style":144},[4037],{"type":56,"value":168},{"type":45,"tag":131,"props":4039,"children":4040},{"style":171},[4041],{"type":56,"value":4042},"https:\u002F\u002Fmcp.example.com\u002Fsse",{"type":45,"tag":131,"props":4044,"children":4045},{"style":144},[4046],{"type":56,"value":179},{"type":45,"tag":131,"props":4048,"children":4049},{"style":144},[4050],{"type":56,"value":352},{"type":45,"tag":131,"props":4052,"children":4053},{"class":133,"line":355},[4054,4058,4062,4066,4071,4075],{"type":45,"tag":131,"props":4055,"children":4056},{"style":282},[4057],{"type":56,"value":2493},{"type":45,"tag":131,"props":4059,"children":4060},{"style":144},[4061],{"type":56,"value":290},{"type":45,"tag":131,"props":4063,"children":4064},{"style":144},[4065],{"type":56,"value":168},{"type":45,"tag":131,"props":4067,"children":4068},{"style":171},[4069],{"type":56,"value":4070},"docs",{"type":45,"tag":131,"props":4072,"children":4073},{"style":144},[4074],{"type":56,"value":179},{"type":45,"tag":131,"props":4076,"children":4077},{"style":144},[4078],{"type":56,"value":352},{"type":45,"tag":131,"props":4080,"children":4081},{"class":133,"line":435},[4082,4086,4090],{"type":45,"tag":131,"props":4083,"children":4084},{"style":144},[4085],{"type":56,"value":2528},{"type":45,"tag":131,"props":4087,"children":4088},{"style":282},[4089],{"type":56,"value":428},{"type":45,"tag":131,"props":4091,"children":4092},{"style":144},[4093],{"type":56,"value":184},{"type":45,"tag":131,"props":4095,"children":4096},{"class":133,"line":444},[4097],{"type":45,"tag":131,"props":4098,"children":4099},{"emptyLinePlaceholder":232},[4100],{"type":56,"value":235},{"type":45,"tag":131,"props":4102,"children":4103},{"class":133,"line":453},[4104],{"type":45,"tag":131,"props":4105,"children":4106},{"style":392},[4107],{"type":56,"value":4108},"    \u002F\u002F Remote with auth headers\n",{"type":45,"tag":131,"props":4110,"children":4111},{"class":133,"line":470},[4112,4116,4120,4124,4128,4132,4136,4140],{"type":45,"tag":131,"props":4113,"children":4114},{"style":138},[4115],{"type":56,"value":2375},{"type":45,"tag":131,"props":4117,"children":4118},{"style":150},[4119],{"type":56,"value":835},{"type":45,"tag":131,"props":4121,"children":4122},{"style":144},[4123],{"type":56,"value":532},{"type":45,"tag":131,"props":4125,"children":4126},{"style":150},[4127],{"type":56,"value":844},{"type":45,"tag":131,"props":4129,"children":4130},{"style":144},[4131],{"type":56,"value":532},{"type":45,"tag":131,"props":4133,"children":4134},{"style":263},[4135],{"type":56,"value":853},{"type":45,"tag":131,"props":4137,"children":4138},{"style":282},[4139],{"type":56,"value":270},{"type":45,"tag":131,"props":4141,"children":4142},{"style":144},[4143],{"type":56,"value":275},{"type":45,"tag":131,"props":4145,"children":4146},{"class":133,"line":478},[4147,4151,4155,4159,4163,4167],{"type":45,"tag":131,"props":4148,"children":4149},{"style":282},[4150],{"type":56,"value":2412},{"type":45,"tag":131,"props":4152,"children":4153},{"style":144},[4154],{"type":56,"value":290},{"type":45,"tag":131,"props":4156,"children":4157},{"style":144},[4158],{"type":56,"value":168},{"type":45,"tag":131,"props":4160,"children":4161},{"style":171},[4162],{"type":56,"value":3985},{"type":45,"tag":131,"props":4164,"children":4165},{"style":144},[4166],{"type":56,"value":179},{"type":45,"tag":131,"props":4168,"children":4169},{"style":144},[4170],{"type":56,"value":352},{"type":45,"tag":131,"props":4172,"children":4173},{"class":133,"line":512},[4174,4178,4182,4186,4190,4194],{"type":45,"tag":131,"props":4175,"children":4176},{"style":282},[4177],{"type":56,"value":4001},{"type":45,"tag":131,"props":4179,"children":4180},{"style":144},[4181],{"type":56,"value":290},{"type":45,"tag":131,"props":4183,"children":4184},{"style":144},[4185],{"type":56,"value":168},{"type":45,"tag":131,"props":4187,"children":4188},{"style":171},[4189],{"type":56,"value":4014},{"type":45,"tag":131,"props":4191,"children":4192},{"style":144},[4193],{"type":56,"value":179},{"type":45,"tag":131,"props":4195,"children":4196},{"style":144},[4197],{"type":56,"value":352},{"type":45,"tag":131,"props":4199,"children":4200},{"class":133,"line":544},[4201,4205,4209,4213,4218,4222],{"type":45,"tag":131,"props":4202,"children":4203},{"style":282},[4204],{"type":56,"value":2463},{"type":45,"tag":131,"props":4206,"children":4207},{"style":144},[4208],{"type":56,"value":290},{"type":45,"tag":131,"props":4210,"children":4211},{"style":144},[4212],{"type":56,"value":168},{"type":45,"tag":131,"props":4214,"children":4215},{"style":171},[4216],{"type":56,"value":4217},"https:\u002F\u002Fmcp.context7.com\u002Fmcp",{"type":45,"tag":131,"props":4219,"children":4220},{"style":144},[4221],{"type":56,"value":179},{"type":45,"tag":131,"props":4223,"children":4224},{"style":144},[4225],{"type":56,"value":352},{"type":45,"tag":131,"props":4227,"children":4228},{"class":133,"line":588},[4229,4233,4237,4241,4246,4250],{"type":45,"tag":131,"props":4230,"children":4231},{"style":282},[4232],{"type":56,"value":2493},{"type":45,"tag":131,"props":4234,"children":4235},{"style":144},[4236],{"type":56,"value":290},{"type":45,"tag":131,"props":4238,"children":4239},{"style":144},[4240],{"type":56,"value":168},{"type":45,"tag":131,"props":4242,"children":4243},{"style":171},[4244],{"type":56,"value":4245},"context7",{"type":45,"tag":131,"props":4247,"children":4248},{"style":144},[4249],{"type":56,"value":179},{"type":45,"tag":131,"props":4251,"children":4252},{"style":144},[4253],{"type":56,"value":352},{"type":45,"tag":131,"props":4255,"children":4256},{"class":133,"line":1636},[4257,4261,4265],{"type":45,"tag":131,"props":4258,"children":4259},{"style":282},[4260],{"type":56,"value":3113},{"type":45,"tag":131,"props":4262,"children":4263},{"style":144},[4264],{"type":56,"value":290},{"type":45,"tag":131,"props":4266,"children":4267},{"style":144},[4268],{"type":56,"value":295},{"type":45,"tag":131,"props":4270,"children":4271},{"class":133,"line":1645},[4272,4276,4280,4284,4288,4292,4296,4300,4304,4308,4313,4317],{"type":45,"tag":131,"props":4273,"children":4274},{"style":282},[4275],{"type":56,"value":3129},{"type":45,"tag":131,"props":4277,"children":4278},{"style":144},[4279],{"type":56,"value":290},{"type":45,"tag":131,"props":4281,"children":4282},{"style":144},[4283],{"type":56,"value":1009},{"type":45,"tag":131,"props":4285,"children":4286},{"style":171},[4287],{"type":56,"value":1014},{"type":45,"tag":131,"props":4289,"children":4290},{"style":144},[4291],{"type":56,"value":1019},{"type":45,"tag":131,"props":4293,"children":4294},{"style":150},[4295],{"type":56,"value":1024},{"type":45,"tag":131,"props":4297,"children":4298},{"style":144},[4299],{"type":56,"value":532},{"type":45,"tag":131,"props":4301,"children":4302},{"style":150},[4303],{"type":56,"value":1033},{"type":45,"tag":131,"props":4305,"children":4306},{"style":144},[4307],{"type":56,"value":532},{"type":45,"tag":131,"props":4309,"children":4310},{"style":150},[4311],{"type":56,"value":4312},"CONTEXT7_TOKEN",{"type":45,"tag":131,"props":4314,"children":4315},{"style":144},[4316],{"type":56,"value":1047},{"type":45,"tag":131,"props":4318,"children":4319},{"style":144},[4320],{"type":56,"value":352},{"type":45,"tag":131,"props":4322,"children":4323},{"class":133,"line":1662},[4324],{"type":45,"tag":131,"props":4325,"children":4326},{"style":144},[4327],{"type":56,"value":1642},{"type":45,"tag":131,"props":4329,"children":4330},{"class":133,"line":1691},[4331,4335,4339],{"type":45,"tag":131,"props":4332,"children":4333},{"style":144},[4334],{"type":56,"value":2528},{"type":45,"tag":131,"props":4336,"children":4337},{"style":282},[4338],{"type":56,"value":428},{"type":45,"tag":131,"props":4340,"children":4341},{"style":144},[4342],{"type":56,"value":184},{"type":45,"tag":131,"props":4344,"children":4345},{"class":133,"line":1708},[4346],{"type":45,"tag":131,"props":4347,"children":4348},{"emptyLinePlaceholder":232},[4349],{"type":56,"value":235},{"type":45,"tag":131,"props":4351,"children":4352},{"class":133,"line":1725},[4353],{"type":45,"tag":131,"props":4354,"children":4355},{"style":392},[4356],{"type":56,"value":4357},"    \u002F\u002F Stdio (local process) — env vars and cwd are passed to the child\n",{"type":45,"tag":131,"props":4359,"children":4360},{"class":133,"line":1751},[4361,4365,4369,4373,4377,4381,4385,4389],{"type":45,"tag":131,"props":4362,"children":4363},{"style":138},[4364],{"type":56,"value":2375},{"type":45,"tag":131,"props":4366,"children":4367},{"style":150},[4368],{"type":56,"value":835},{"type":45,"tag":131,"props":4370,"children":4371},{"style":144},[4372],{"type":56,"value":532},{"type":45,"tag":131,"props":4374,"children":4375},{"style":150},[4376],{"type":56,"value":844},{"type":45,"tag":131,"props":4378,"children":4379},{"style":144},[4380],{"type":56,"value":532},{"type":45,"tag":131,"props":4382,"children":4383},{"style":263},[4384],{"type":56,"value":853},{"type":45,"tag":131,"props":4386,"children":4387},{"style":282},[4388],{"type":56,"value":270},{"type":45,"tag":131,"props":4390,"children":4391},{"style":144},[4392],{"type":56,"value":275},{"type":45,"tag":131,"props":4394,"children":4395},{"class":133,"line":1768},[4396,4400,4404,4408,4412,4416],{"type":45,"tag":131,"props":4397,"children":4398},{"style":282},[4399],{"type":56,"value":2412},{"type":45,"tag":131,"props":4401,"children":4402},{"style":144},[4403],{"type":56,"value":290},{"type":45,"tag":131,"props":4405,"children":4406},{"style":144},[4407],{"type":56,"value":168},{"type":45,"tag":131,"props":4409,"children":4410},{"style":171},[4411],{"type":56,"value":3985},{"type":45,"tag":131,"props":4413,"children":4414},{"style":144},[4415],{"type":56,"value":179},{"type":45,"tag":131,"props":4417,"children":4418},{"style":144},[4419],{"type":56,"value":352},{"type":45,"tag":131,"props":4421,"children":4422},{"class":133,"line":1798},[4423,4427,4431,4435,4440,4444],{"type":45,"tag":131,"props":4424,"children":4425},{"style":282},[4426],{"type":56,"value":4001},{"type":45,"tag":131,"props":4428,"children":4429},{"style":144},[4430],{"type":56,"value":290},{"type":45,"tag":131,"props":4432,"children":4433},{"style":144},[4434],{"type":56,"value":168},{"type":45,"tag":131,"props":4436,"children":4437},{"style":171},[4438],{"type":56,"value":4439},"stdio",{"type":45,"tag":131,"props":4441,"children":4442},{"style":144},[4443],{"type":56,"value":179},{"type":45,"tag":131,"props":4445,"children":4446},{"style":144},[4447],{"type":56,"value":352},{"type":45,"tag":131,"props":4449,"children":4450},{"class":133,"line":1855},[4451,4456,4460,4464,4469,4473],{"type":45,"tag":131,"props":4452,"children":4453},{"style":282},[4454],{"type":56,"value":4455},"      command",{"type":45,"tag":131,"props":4457,"children":4458},{"style":144},[4459],{"type":56,"value":290},{"type":45,"tag":131,"props":4461,"children":4462},{"style":144},[4463],{"type":56,"value":168},{"type":45,"tag":131,"props":4465,"children":4466},{"style":171},[4467],{"type":56,"value":4468},"npx",{"type":45,"tag":131,"props":4470,"children":4471},{"style":144},[4472],{"type":56,"value":179},{"type":45,"tag":131,"props":4474,"children":4475},{"style":144},[4476],{"type":56,"value":352},{"type":45,"tag":131,"props":4478,"children":4479},{"class":133,"line":1864},[4480,4485,4489,4494,4498,4503,4507,4511,4515,4520,4524,4528,4532,4537,4541,4546],{"type":45,"tag":131,"props":4481,"children":4482},{"style":282},[4483],{"type":56,"value":4484},"      args",{"type":45,"tag":131,"props":4486,"children":4487},{"style":144},[4488],{"type":56,"value":290},{"type":45,"tag":131,"props":4490,"children":4491},{"style":282},[4492],{"type":56,"value":4493}," [",{"type":45,"tag":131,"props":4495,"children":4496},{"style":144},[4497],{"type":56,"value":179},{"type":45,"tag":131,"props":4499,"children":4500},{"style":171},[4501],{"type":56,"value":4502},"-y",{"type":45,"tag":131,"props":4504,"children":4505},{"style":144},[4506],{"type":56,"value":179},{"type":45,"tag":131,"props":4508,"children":4509},{"style":144},[4510],{"type":56,"value":736},{"type":45,"tag":131,"props":4512,"children":4513},{"style":144},[4514],{"type":56,"value":168},{"type":45,"tag":131,"props":4516,"children":4517},{"style":171},[4518],{"type":56,"value":4519},"@modelcontextprotocol\u002Fserver-filesystem",{"type":45,"tag":131,"props":4521,"children":4522},{"style":144},[4523],{"type":56,"value":179},{"type":45,"tag":131,"props":4525,"children":4526},{"style":144},[4527],{"type":56,"value":736},{"type":45,"tag":131,"props":4529,"children":4530},{"style":144},[4531],{"type":56,"value":168},{"type":45,"tag":131,"props":4533,"children":4534},{"style":171},[4535],{"type":56,"value":4536},"\u002Fdata",{"type":45,"tag":131,"props":4538,"children":4539},{"style":144},[4540],{"type":56,"value":179},{"type":45,"tag":131,"props":4542,"children":4543},{"style":282},[4544],{"type":56,"value":4545},"]",{"type":45,"tag":131,"props":4547,"children":4548},{"style":144},[4549],{"type":56,"value":352},{"type":45,"tag":131,"props":4551,"children":4552},{"class":133,"line":1873},[4553,4558,4562,4566,4571,4575,4579,4584,4588],{"type":45,"tag":131,"props":4554,"children":4555},{"style":282},[4556],{"type":56,"value":4557},"      env",{"type":45,"tag":131,"props":4559,"children":4560},{"style":144},[4561],{"type":56,"value":290},{"type":45,"tag":131,"props":4563,"children":4564},{"style":144},[4565],{"type":56,"value":147},{"type":45,"tag":131,"props":4567,"children":4568},{"style":282},[4569],{"type":56,"value":4570}," LOG_LEVEL",{"type":45,"tag":131,"props":4572,"children":4573},{"style":144},[4574],{"type":56,"value":290},{"type":45,"tag":131,"props":4576,"children":4577},{"style":144},[4578],{"type":56,"value":168},{"type":45,"tag":131,"props":4580,"children":4581},{"style":171},[4582],{"type":56,"value":4583},"info",{"type":45,"tag":131,"props":4585,"children":4586},{"style":144},[4587],{"type":56,"value":179},{"type":45,"tag":131,"props":4589,"children":4590},{"style":144},[4591],{"type":56,"value":1349},{"type":45,"tag":131,"props":4593,"children":4594},{"class":133,"line":1882},[4595,4600,4604,4608,4613,4617],{"type":45,"tag":131,"props":4596,"children":4597},{"style":282},[4598],{"type":56,"value":4599},"      cwd",{"type":45,"tag":131,"props":4601,"children":4602},{"style":144},[4603],{"type":56,"value":290},{"type":45,"tag":131,"props":4605,"children":4606},{"style":144},[4607],{"type":56,"value":168},{"type":45,"tag":131,"props":4609,"children":4610},{"style":171},[4611],{"type":56,"value":4612},"\u002Fwork",{"type":45,"tag":131,"props":4614,"children":4615},{"style":144},[4616],{"type":56,"value":179},{"type":45,"tag":131,"props":4618,"children":4619},{"style":144},[4620],{"type":56,"value":352},{"type":45,"tag":131,"props":4622,"children":4623},{"class":133,"line":1891},[4624,4628,4632,4636,4641,4645],{"type":45,"tag":131,"props":4625,"children":4626},{"style":282},[4627],{"type":56,"value":2493},{"type":45,"tag":131,"props":4629,"children":4630},{"style":144},[4631],{"type":56,"value":290},{"type":45,"tag":131,"props":4633,"children":4634},{"style":144},[4635],{"type":56,"value":168},{"type":45,"tag":131,"props":4637,"children":4638},{"style":171},[4639],{"type":56,"value":4640},"fs",{"type":45,"tag":131,"props":4642,"children":4643},{"style":144},[4644],{"type":56,"value":179},{"type":45,"tag":131,"props":4646,"children":4647},{"style":144},[4648],{"type":56,"value":352},{"type":45,"tag":131,"props":4650,"children":4651},{"class":133,"line":1956},[4652,4656,4660],{"type":45,"tag":131,"props":4653,"children":4654},{"style":144},[4655],{"type":56,"value":2528},{"type":45,"tag":131,"props":4657,"children":4658},{"style":282},[4659],{"type":56,"value":428},{"type":45,"tag":131,"props":4661,"children":4662},{"style":144},[4663],{"type":56,"value":184},{"type":45,"tag":131,"props":4665,"children":4666},{"class":133,"line":1964},[4667],{"type":45,"tag":131,"props":4668,"children":4669},{"style":144},[4670],{"type":56,"value":450},{"type":45,"tag":131,"props":4672,"children":4673},{"class":133,"line":1972},[4674,4678,4682,4686,4690,4695,4699,4703],{"type":45,"tag":131,"props":4675,"children":4676},{"style":263},[4677],{"type":56,"value":2553},{"type":45,"tag":131,"props":4679,"children":4680},{"style":144},[4681],{"type":56,"value":290},{"type":45,"tag":131,"props":4683,"children":4684},{"style":242},[4685],{"type":56,"value":370},{"type":45,"tag":131,"props":4687,"children":4688},{"style":144},[4689],{"type":56,"value":375},{"type":45,"tag":131,"props":4691,"children":4692},{"style":378},[4693],{"type":56,"value":4694},"req",{"type":45,"tag":131,"props":4696,"children":4697},{"style":144},[4698],{"type":56,"value":428},{"type":45,"tag":131,"props":4700,"children":4701},{"style":242},[4702],{"type":56,"value":405},{"type":45,"tag":131,"props":4704,"children":4705},{"style":144},[4706],{"type":56,"value":295},{"type":45,"tag":131,"props":4708,"children":4709},{"class":133,"line":1997},[4710],{"type":45,"tag":131,"props":4711,"children":4712},{"style":392},[4713],{"type":56,"value":4714},"    \u002F\u002F MCP servers can do destructive things — gate by tool path\n",{"type":45,"tag":131,"props":4716,"children":4717},{"class":133,"line":2013},[4718,4723,4727,4731,4735,4740,4744,4749,4753,4757,4762,4766,4771],{"type":45,"tag":131,"props":4719,"children":4720},{"style":138},[4721],{"type":56,"value":4722},"    if",{"type":45,"tag":131,"props":4724,"children":4725},{"style":282},[4726],{"type":56,"value":375},{"type":45,"tag":131,"props":4728,"children":4729},{"style":150},[4730],{"type":56,"value":4694},{"type":45,"tag":131,"props":4732,"children":4733},{"style":144},[4734],{"type":56,"value":532},{"type":45,"tag":131,"props":4736,"children":4737},{"style":150},[4738],{"type":56,"value":4739},"toolPath",{"type":45,"tag":131,"props":4741,"children":4742},{"style":144},[4743],{"type":56,"value":532},{"type":45,"tag":131,"props":4745,"children":4746},{"style":263},[4747],{"type":56,"value":4748},"endsWith",{"type":45,"tag":131,"props":4750,"children":4751},{"style":282},[4752],{"type":56,"value":270},{"type":45,"tag":131,"props":4754,"children":4755},{"style":144},[4756],{"type":56,"value":179},{"type":45,"tag":131,"props":4758,"children":4759},{"style":171},[4760],{"type":56,"value":4761},".write_file",{"type":45,"tag":131,"props":4763,"children":4764},{"style":144},[4765],{"type":56,"value":179},{"type":45,"tag":131,"props":4767,"children":4768},{"style":282},[4769],{"type":56,"value":4770},")) ",{"type":45,"tag":131,"props":4772,"children":4773},{"style":144},[4774],{"type":56,"value":275},{"type":45,"tag":131,"props":4776,"children":4777},{"class":133,"line":2042},[4778,4783,4787,4792,4796,4801,4805,4810,4814,4818,4823,4827],{"type":45,"tag":131,"props":4779,"children":4780},{"style":138},[4781],{"type":56,"value":4782},"      return",{"type":45,"tag":131,"props":4784,"children":4785},{"style":144},[4786],{"type":56,"value":147},{"type":45,"tag":131,"props":4788,"children":4789},{"style":282},[4790],{"type":56,"value":4791}," approved",{"type":45,"tag":131,"props":4793,"children":4794},{"style":144},[4795],{"type":56,"value":290},{"type":45,"tag":131,"props":4797,"children":4798},{"style":2125},[4799],{"type":56,"value":4800}," false",{"type":45,"tag":131,"props":4802,"children":4803},{"style":144},[4804],{"type":56,"value":736},{"type":45,"tag":131,"props":4806,"children":4807},{"style":282},[4808],{"type":56,"value":4809}," reason",{"type":45,"tag":131,"props":4811,"children":4812},{"style":144},[4813],{"type":56,"value":290},{"type":45,"tag":131,"props":4815,"children":4816},{"style":144},[4817],{"type":56,"value":168},{"type":45,"tag":131,"props":4819,"children":4820},{"style":171},[4821],{"type":56,"value":4822},"writes need review",{"type":45,"tag":131,"props":4824,"children":4825},{"style":144},[4826],{"type":56,"value":179},{"type":45,"tag":131,"props":4828,"children":4829},{"style":144},[4830],{"type":56,"value":4831}," };\n",{"type":45,"tag":131,"props":4833,"children":4834},{"class":133,"line":2058},[4835],{"type":45,"tag":131,"props":4836,"children":4837},{"style":144},[4838],{"type":56,"value":4839},"    }\n",{"type":45,"tag":131,"props":4841,"children":4842},{"class":133,"line":2175},[4843,4848,4852,4856,4860,4864],{"type":45,"tag":131,"props":4844,"children":4845},{"style":138},[4846],{"type":56,"value":4847},"    return",{"type":45,"tag":131,"props":4849,"children":4850},{"style":144},[4851],{"type":56,"value":147},{"type":45,"tag":131,"props":4853,"children":4854},{"style":282},[4855],{"type":56,"value":4791},{"type":45,"tag":131,"props":4857,"children":4858},{"style":144},[4859],{"type":56,"value":290},{"type":45,"tag":131,"props":4861,"children":4862},{"style":2125},[4863],{"type":56,"value":2128},{"type":45,"tag":131,"props":4865,"children":4866},{"style":144},[4867],{"type":56,"value":4831},{"type":45,"tag":131,"props":4869,"children":4870},{"class":133,"line":2187},[4871],{"type":45,"tag":131,"props":4872,"children":4873},{"style":144},[4874],{"type":56,"value":450},{"type":45,"tag":131,"props":4876,"children":4877},{"class":133,"line":2251},[4878,4883,4887,4891,4895,4900,4904,4908],{"type":45,"tag":131,"props":4879,"children":4880},{"style":263},[4881],{"type":56,"value":4882},"  onElicitation",{"type":45,"tag":131,"props":4884,"children":4885},{"style":144},[4886],{"type":56,"value":290},{"type":45,"tag":131,"props":4888,"children":4889},{"style":242},[4890],{"type":56,"value":370},{"type":45,"tag":131,"props":4892,"children":4893},{"style":144},[4894],{"type":56,"value":375},{"type":45,"tag":131,"props":4896,"children":4897},{"style":378},[4898],{"type":56,"value":4899},"ctx",{"type":45,"tag":131,"props":4901,"children":4902},{"style":144},[4903],{"type":56,"value":428},{"type":45,"tag":131,"props":4905,"children":4906},{"style":242},[4907],{"type":56,"value":405},{"type":45,"tag":131,"props":4909,"children":4910},{"style":144},[4911],{"type":56,"value":295},{"type":45,"tag":131,"props":4913,"children":4914},{"class":133,"line":2259},[4915],{"type":45,"tag":131,"props":4916,"children":4917},{"style":392},[4918],{"type":56,"value":4919},"    \u002F\u002F MCP servers may request user input mid-tool (forms, OAuth URLs).\n",{"type":45,"tag":131,"props":4921,"children":4922},{"class":133,"line":2267},[4923],{"type":45,"tag":131,"props":4924,"children":4925},{"style":392},[4926],{"type":56,"value":4927},"    \u002F\u002F Decline by default; implement a real handler for interactive flows.\n",{"type":45,"tag":131,"props":4929,"children":4930},{"class":133,"line":2275},[4931,4935,4939,4944,4948,4952,4957,4961],{"type":45,"tag":131,"props":4932,"children":4933},{"style":138},[4934],{"type":56,"value":4847},{"type":45,"tag":131,"props":4936,"children":4937},{"style":144},[4938],{"type":56,"value":147},{"type":45,"tag":131,"props":4940,"children":4941},{"style":282},[4942],{"type":56,"value":4943}," action",{"type":45,"tag":131,"props":4945,"children":4946},{"style":144},[4947],{"type":56,"value":290},{"type":45,"tag":131,"props":4949,"children":4950},{"style":144},[4951],{"type":56,"value":168},{"type":45,"tag":131,"props":4953,"children":4954},{"style":171},[4955],{"type":56,"value":4956},"decline",{"type":45,"tag":131,"props":4958,"children":4959},{"style":144},[4960],{"type":56,"value":179},{"type":45,"tag":131,"props":4962,"children":4963},{"style":144},[4964],{"type":56,"value":4831},{"type":45,"tag":131,"props":4966,"children":4967},{"class":133,"line":2291},[4968],{"type":45,"tag":131,"props":4969,"children":4970},{"style":144},[4971],{"type":56,"value":450},{"type":45,"tag":131,"props":4973,"children":4974},{"class":133,"line":2299},[4975,4979,4983],{"type":45,"tag":131,"props":4976,"children":4977},{"style":144},[4978],{"type":56,"value":459},{"type":45,"tag":131,"props":4980,"children":4981},{"style":150},[4982],{"type":56,"value":428},{"type":45,"tag":131,"props":4984,"children":4985},{"style":144},[4986],{"type":56,"value":184},{"type":45,"tag":61,"props":4988,"children":4989},{},[4990],{"type":56,"value":2719},{"type":45,"tag":2721,"props":4992,"children":4993},{},[4994,5007,5034,5039],{"type":45,"tag":2725,"props":4995,"children":4996},{},[4997,4999,5005],{"type":56,"value":4998},"One tool per tool advertised by the MCP server's ",{"type":45,"tag":51,"props":5000,"children":5002},{"className":5001},[],[5003],{"type":56,"value":5004},"tools\u002Flist",{"type":56,"value":5006}," capability",{"type":45,"tag":2725,"props":5008,"children":5009},{},[5010,5011,5017,5019,5025,5027,5033],{"type":56,"value":2734},{"type":45,"tag":51,"props":5012,"children":5014},{"className":5013},[],[5015],{"type":56,"value":5016},"\u003Cname>.\u003Cserver-tool-name>",{"type":56,"value":5018}," — server tool names are preserved\nverbatim (often ",{"type":45,"tag":51,"props":5020,"children":5022},{"className":5021},[],[5023],{"type":56,"value":5024},"snake_case",{"type":56,"value":5026}," like ",{"type":45,"tag":51,"props":5028,"children":5030},{"className":5029},[],[5031],{"type":56,"value":5032},"read_file",{"type":56,"value":428},{"type":45,"tag":2725,"props":5035,"children":5036},{},[5037],{"type":56,"value":5038},"Args object = the MCP tool's input schema",{"type":45,"tag":2725,"props":5040,"children":5041},{},[5042],{"type":56,"value":5043},"Subcommand: server tool name → kebab-case; original (snake_case or otherwise)\nis kept as an alias when different",{"type":45,"tag":61,"props":5045,"children":5046},{},[5047,5049,5054,5055,5061],{"type":56,"value":5048},"Example (filesystem-style MCP server with ",{"type":45,"tag":51,"props":5050,"children":5052},{"className":5051},[],[5053],{"type":56,"value":5032},{"type":56,"value":3746},{"type":45,"tag":51,"props":5056,"children":5058},{"className":5057},[],[5059],{"type":56,"value":5060},"list_dir",{"type":56,"value":815},{"type":45,"tag":86,"props":5063,"children":5066},{"className":5064,"code":5065,"language":56,"meta":91},[89],"server tool   → tool path        JS call                                       bash kebab                        bash snake alias\nread_file     → fs.read_file     await tools.fs.read_file({ path: \"\u002Fx.md\" })   fs read-file path=\u002Fx.md           fs read_file path=\u002Fx.md\nlist_dir      → fs.list_dir      await tools.fs.list_dir({ path: \"\u002F\" })        fs list-dir path=\u002F                fs list_dir path=\u002F\n",[5067],{"type":45,"tag":51,"props":5068,"children":5069},{"__ignoreMap":91},[5070],{"type":56,"value":5065},{"type":45,"tag":61,"props":5072,"children":5073},{},[5074],{"type":56,"value":2813},{"type":45,"tag":2721,"props":5076,"children":5077},{},[5078,5117,5130],{"type":45,"tag":2725,"props":5079,"children":5080},{},[5081,5087,5089,5095,5096,5102,5104,5110,5112],{"type":45,"tag":51,"props":5082,"children":5084},{"className":5083},[],[5085],{"type":56,"value":5086},"transport: \"remote\"",{"type":56,"value":5088}," requires ",{"type":45,"tag":51,"props":5090,"children":5092},{"className":5091},[],[5093],{"type":56,"value":5094},"endpoint",{"type":56,"value":3630},{"type":45,"tag":51,"props":5097,"children":5099},{"className":5098},[],[5100],{"type":56,"value":5101},"transport: \"stdio\"",{"type":56,"value":5103}," requires\n",{"type":45,"tag":51,"props":5105,"children":5107},{"className":5106},[],[5108],{"type":56,"value":5109},"command",{"type":56,"value":5111}," + ",{"type":45,"tag":51,"props":5113,"children":5115},{"className":5114},[],[5116],{"type":56,"value":381},{"type":45,"tag":2725,"props":5118,"children":5119},{},[5120,5122,5128],{"type":56,"value":5121},"MCP servers with elicitation flows need an ",{"type":45,"tag":51,"props":5123,"children":5125},{"className":5124},[],[5126],{"type":56,"value":5127},"onElicitation",{"type":56,"value":5129}," handler other\nthan the default decline-all, otherwise interactive tools will fail",{"type":45,"tag":2725,"props":5131,"children":5132},{},[5133,5134,5140,5141],{"type":56,"value":3804},{"type":45,"tag":51,"props":5135,"children":5137},{"className":5136},[],[5138],{"type":56,"value":5139},"@executor-js\u002Fplugin-mcp",{"type":56,"value":3812},{"type":45,"tag":51,"props":5142,"children":5144},{"className":5143},[],[5145],{"type":56,"value":2888},{"type":45,"tag":79,"props":5147,"children":5149},{"id":5148},"_5b-combining-multiple-sources-in-one-executor",[5150],{"type":56,"value":5151},"§5b. Combining multiple sources in one executor",{"type":45,"tag":61,"props":5153,"children":5154},{},[5155,5157,5163,5165,5170,5172,5178],{"type":56,"value":5156},"Real agents usually need more than one upstream. Add as many ",{"type":45,"tag":51,"props":5158,"children":5160},{"className":5159},[],[5161],{"type":56,"value":5162},"sources.add()",{"type":56,"value":5164},"\ncalls as you want inside the same ",{"type":45,"tag":51,"props":5166,"children":5168},{"className":5167},[],[5169],{"type":56,"value":2872},{"type":56,"value":5171},"; each registers its own namespace and\ntools land in a single unified ",{"type":45,"tag":51,"props":5173,"children":5175},{"className":5174},[],[5176],{"type":56,"value":5177},"tools",{"type":56,"value":5179}," proxy \u002F bash command set.",{"type":45,"tag":86,"props":5181,"children":5183},{"className":123,"code":5182,"language":125,"meta":91,"style":91},"const executor = await createExecutor({\n  setup: async (sdk) => {\n    \u002F\u002F OpenAPI from a URL (no auth)\n    await sdk.sources.add({\n      kind: \"openapi\",\n      spec: \"https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json\",\n      name: \"petstore\",\n    });\n\n    \u002F\u002F GraphQL with bearer auth\n    await sdk.sources.add({\n      kind: \"graphql\",\n      endpoint: \"https:\u002F\u002Fapi.github.com\u002Fgraphql\",\n      name: \"github\",\n      headers: { Authorization: `Bearer ${process.env.GITHUB_TOKEN}` },\n    });\n\n    \u002F\u002F Remote MCP for context lookups\n    await sdk.sources.add({\n      kind: \"mcp\",\n      transport: \"remote\",\n      endpoint: \"https:\u002F\u002Fmcp.example.com\u002Fsse\",\n      name: \"context\",\n    });\n  },\n  \u002F\u002F Inline tools coexist with discovered ones; inline wins on path conflict.\n  tools: {\n    \"util.now\": {\n      description: \"Wall-clock ISO timestamp\",\n      execute: () => ({ ts: new Date().toISOString() }),\n    },\n  },\n  onToolApproval: async (req) => {\n    \u002F\u002F Different policy per source\n    if (req.sourceId === \"github\" && req.toolPath.includes(\"delete\")) {\n      return { approved: false, reason: \"github deletes need review\" };\n    }\n    return { approved: true };\n  },\n});\n",[5184],{"type":45,"tag":51,"props":5185,"children":5186},{"__ignoreMap":91},[5187,5218,5253,5261,5296,5323,5350,5378,5393,5400,5408,5443,5470,5497,5524,5588,5603,5610,5618,5653,5680,5707,5734,5762,5777,5784,5792,5807,5831,5859,5936,5943,5950,5985,5993,6086,6138,6145,6172,6179],{"type":45,"tag":131,"props":5188,"children":5189},{"class":133,"line":134},[5190,5194,5198,5202,5206,5210,5214],{"type":45,"tag":131,"props":5191,"children":5192},{"style":242},[5193],{"type":56,"value":245},{"type":45,"tag":131,"props":5195,"children":5196},{"style":150},[5197],{"type":56,"value":250},{"type":45,"tag":131,"props":5199,"children":5200},{"style":144},[5201],{"type":56,"value":255},{"type":45,"tag":131,"props":5203,"children":5204},{"style":138},[5205],{"type":56,"value":260},{"type":45,"tag":131,"props":5207,"children":5208},{"style":263},[5209],{"type":56,"value":201},{"type":45,"tag":131,"props":5211,"children":5212},{"style":150},[5213],{"type":56,"value":270},{"type":45,"tag":131,"props":5215,"children":5216},{"style":144},[5217],{"type":56,"value":275},{"type":45,"tag":131,"props":5219,"children":5220},{"class":133,"line":187},[5221,5225,5229,5233,5237,5241,5245,5249],{"type":45,"tag":131,"props":5222,"children":5223},{"style":263},[5224],{"type":56,"value":2337},{"type":45,"tag":131,"props":5226,"children":5227},{"style":144},[5228],{"type":56,"value":290},{"type":45,"tag":131,"props":5230,"children":5231},{"style":242},[5232],{"type":56,"value":370},{"type":45,"tag":131,"props":5234,"children":5235},{"style":144},[5236],{"type":56,"value":375},{"type":45,"tag":131,"props":5238,"children":5239},{"style":378},[5240],{"type":56,"value":2354},{"type":45,"tag":131,"props":5242,"children":5243},{"style":144},[5244],{"type":56,"value":428},{"type":45,"tag":131,"props":5246,"children":5247},{"style":242},[5248],{"type":56,"value":405},{"type":45,"tag":131,"props":5250,"children":5251},{"style":144},[5252],{"type":56,"value":295},{"type":45,"tag":131,"props":5254,"children":5255},{"class":133,"line":228},[5256],{"type":45,"tag":131,"props":5257,"children":5258},{"style":392},[5259],{"type":56,"value":5260},"    \u002F\u002F OpenAPI from a URL (no auth)\n",{"type":45,"tag":131,"props":5262,"children":5263},{"class":133,"line":238},[5264,5268,5272,5276,5280,5284,5288,5292],{"type":45,"tag":131,"props":5265,"children":5266},{"style":138},[5267],{"type":56,"value":2375},{"type":45,"tag":131,"props":5269,"children":5270},{"style":150},[5271],{"type":56,"value":835},{"type":45,"tag":131,"props":5273,"children":5274},{"style":144},[5275],{"type":56,"value":532},{"type":45,"tag":131,"props":5277,"children":5278},{"style":150},[5279],{"type":56,"value":844},{"type":45,"tag":131,"props":5281,"children":5282},{"style":144},[5283],{"type":56,"value":532},{"type":45,"tag":131,"props":5285,"children":5286},{"style":263},[5287],{"type":56,"value":853},{"type":45,"tag":131,"props":5289,"children":5290},{"style":282},[5291],{"type":56,"value":270},{"type":45,"tag":131,"props":5293,"children":5294},{"style":144},[5295],{"type":56,"value":275},{"type":45,"tag":131,"props":5297,"children":5298},{"class":133,"line":278},[5299,5303,5307,5311,5315,5319],{"type":45,"tag":131,"props":5300,"children":5301},{"style":282},[5302],{"type":56,"value":2412},{"type":45,"tag":131,"props":5304,"children":5305},{"style":144},[5306],{"type":56,"value":290},{"type":45,"tag":131,"props":5308,"children":5309},{"style":144},[5310],{"type":56,"value":168},{"type":45,"tag":131,"props":5312,"children":5313},{"style":171},[5314],{"type":56,"value":27},{"type":45,"tag":131,"props":5316,"children":5317},{"style":144},[5318],{"type":56,"value":179},{"type":45,"tag":131,"props":5320,"children":5321},{"style":144},[5322],{"type":56,"value":352},{"type":45,"tag":131,"props":5324,"children":5325},{"class":133,"line":298},[5326,5330,5334,5338,5342,5346],{"type":45,"tag":131,"props":5327,"children":5328},{"style":282},[5329],{"type":56,"value":2441},{"type":45,"tag":131,"props":5331,"children":5332},{"style":144},[5333],{"type":56,"value":290},{"type":45,"tag":131,"props":5335,"children":5336},{"style":144},[5337],{"type":56,"value":168},{"type":45,"tag":131,"props":5339,"children":5340},{"style":171},[5341],{"type":56,"value":680},{"type":45,"tag":131,"props":5343,"children":5344},{"style":144},[5345],{"type":56,"value":179},{"type":45,"tag":131,"props":5347,"children":5348},{"style":144},[5349],{"type":56,"value":352},{"type":45,"tag":131,"props":5351,"children":5352},{"class":133,"line":324},[5353,5357,5361,5365,5370,5374],{"type":45,"tag":131,"props":5354,"children":5355},{"style":282},[5356],{"type":56,"value":2493},{"type":45,"tag":131,"props":5358,"children":5359},{"style":144},[5360],{"type":56,"value":290},{"type":45,"tag":131,"props":5362,"children":5363},{"style":144},[5364],{"type":56,"value":168},{"type":45,"tag":131,"props":5366,"children":5367},{"style":171},[5368],{"type":56,"value":5369},"petstore",{"type":45,"tag":131,"props":5371,"children":5372},{"style":144},[5373],{"type":56,"value":179},{"type":45,"tag":131,"props":5375,"children":5376},{"style":144},[5377],{"type":56,"value":352},{"type":45,"tag":131,"props":5379,"children":5380},{"class":133,"line":355},[5381,5385,5389],{"type":45,"tag":131,"props":5382,"children":5383},{"style":144},[5384],{"type":56,"value":2528},{"type":45,"tag":131,"props":5386,"children":5387},{"style":282},[5388],{"type":56,"value":428},{"type":45,"tag":131,"props":5390,"children":5391},{"style":144},[5392],{"type":56,"value":184},{"type":45,"tag":131,"props":5394,"children":5395},{"class":133,"line":435},[5396],{"type":45,"tag":131,"props":5397,"children":5398},{"emptyLinePlaceholder":232},[5399],{"type":56,"value":235},{"type":45,"tag":131,"props":5401,"children":5402},{"class":133,"line":444},[5403],{"type":45,"tag":131,"props":5404,"children":5405},{"style":392},[5406],{"type":56,"value":5407},"    \u002F\u002F GraphQL with bearer auth\n",{"type":45,"tag":131,"props":5409,"children":5410},{"class":133,"line":453},[5411,5415,5419,5423,5427,5431,5435,5439],{"type":45,"tag":131,"props":5412,"children":5413},{"style":138},[5414],{"type":56,"value":2375},{"type":45,"tag":131,"props":5416,"children":5417},{"style":150},[5418],{"type":56,"value":835},{"type":45,"tag":131,"props":5420,"children":5421},{"style":144},[5422],{"type":56,"value":532},{"type":45,"tag":131,"props":5424,"children":5425},{"style":150},[5426],{"type":56,"value":844},{"type":45,"tag":131,"props":5428,"children":5429},{"style":144},[5430],{"type":56,"value":532},{"type":45,"tag":131,"props":5432,"children":5433},{"style":263},[5434],{"type":56,"value":853},{"type":45,"tag":131,"props":5436,"children":5437},{"style":282},[5438],{"type":56,"value":270},{"type":45,"tag":131,"props":5440,"children":5441},{"style":144},[5442],{"type":56,"value":275},{"type":45,"tag":131,"props":5444,"children":5445},{"class":133,"line":470},[5446,5450,5454,5458,5462,5466],{"type":45,"tag":131,"props":5447,"children":5448},{"style":282},[5449],{"type":56,"value":2412},{"type":45,"tag":131,"props":5451,"children":5452},{"style":144},[5453],{"type":56,"value":290},{"type":45,"tag":131,"props":5455,"children":5456},{"style":144},[5457],{"type":56,"value":168},{"type":45,"tag":131,"props":5459,"children":5460},{"style":171},[5461],{"type":56,"value":14},{"type":45,"tag":131,"props":5463,"children":5464},{"style":144},[5465],{"type":56,"value":179},{"type":45,"tag":131,"props":5467,"children":5468},{"style":144},[5469],{"type":56,"value":352},{"type":45,"tag":131,"props":5471,"children":5472},{"class":133,"line":478},[5473,5477,5481,5485,5489,5493],{"type":45,"tag":131,"props":5474,"children":5475},{"style":282},[5476],{"type":56,"value":2463},{"type":45,"tag":131,"props":5478,"children":5479},{"style":144},[5480],{"type":56,"value":290},{"type":45,"tag":131,"props":5482,"children":5483},{"style":144},[5484],{"type":56,"value":168},{"type":45,"tag":131,"props":5486,"children":5487},{"style":171},[5488],{"type":56,"value":3070},{"type":45,"tag":131,"props":5490,"children":5491},{"style":144},[5492],{"type":56,"value":179},{"type":45,"tag":131,"props":5494,"children":5495},{"style":144},[5496],{"type":56,"value":352},{"type":45,"tag":131,"props":5498,"children":5499},{"class":133,"line":512},[5500,5504,5508,5512,5516,5520],{"type":45,"tag":131,"props":5501,"children":5502},{"style":282},[5503],{"type":56,"value":2493},{"type":45,"tag":131,"props":5505,"children":5506},{"style":144},[5507],{"type":56,"value":290},{"type":45,"tag":131,"props":5509,"children":5510},{"style":144},[5511],{"type":56,"value":168},{"type":45,"tag":131,"props":5513,"children":5514},{"style":171},[5515],{"type":56,"value":968},{"type":45,"tag":131,"props":5517,"children":5518},{"style":144},[5519],{"type":56,"value":179},{"type":45,"tag":131,"props":5521,"children":5522},{"style":144},[5523],{"type":56,"value":352},{"type":45,"tag":131,"props":5525,"children":5526},{"class":133,"line":544},[5527,5531,5535,5539,5544,5548,5552,5556,5560,5564,5568,5572,5576,5580,5584],{"type":45,"tag":131,"props":5528,"children":5529},{"style":282},[5530],{"type":56,"value":3113},{"type":45,"tag":131,"props":5532,"children":5533},{"style":144},[5534],{"type":56,"value":290},{"type":45,"tag":131,"props":5536,"children":5537},{"style":144},[5538],{"type":56,"value":147},{"type":45,"tag":131,"props":5540,"children":5541},{"style":282},[5542],{"type":56,"value":5543}," Authorization",{"type":45,"tag":131,"props":5545,"children":5546},{"style":144},[5547],{"type":56,"value":290},{"type":45,"tag":131,"props":5549,"children":5550},{"style":144},[5551],{"type":56,"value":1009},{"type":45,"tag":131,"props":5553,"children":5554},{"style":171},[5555],{"type":56,"value":1014},{"type":45,"tag":131,"props":5557,"children":5558},{"style":144},[5559],{"type":56,"value":1019},{"type":45,"tag":131,"props":5561,"children":5562},{"style":150},[5563],{"type":56,"value":1024},{"type":45,"tag":131,"props":5565,"children":5566},{"style":144},[5567],{"type":56,"value":532},{"type":45,"tag":131,"props":5569,"children":5570},{"style":150},[5571],{"type":56,"value":1033},{"type":45,"tag":131,"props":5573,"children":5574},{"style":144},[5575],{"type":56,"value":532},{"type":45,"tag":131,"props":5577,"children":5578},{"style":150},[5579],{"type":56,"value":1042},{"type":45,"tag":131,"props":5581,"children":5582},{"style":144},[5583],{"type":56,"value":1047},{"type":45,"tag":131,"props":5585,"children":5586},{"style":144},[5587],{"type":56,"value":1349},{"type":45,"tag":131,"props":5589,"children":5590},{"class":133,"line":588},[5591,5595,5599],{"type":45,"tag":131,"props":5592,"children":5593},{"style":144},[5594],{"type":56,"value":2528},{"type":45,"tag":131,"props":5596,"children":5597},{"style":282},[5598],{"type":56,"value":428},{"type":45,"tag":131,"props":5600,"children":5601},{"style":144},[5602],{"type":56,"value":184},{"type":45,"tag":131,"props":5604,"children":5605},{"class":133,"line":1636},[5606],{"type":45,"tag":131,"props":5607,"children":5608},{"emptyLinePlaceholder":232},[5609],{"type":56,"value":235},{"type":45,"tag":131,"props":5611,"children":5612},{"class":133,"line":1645},[5613],{"type":45,"tag":131,"props":5614,"children":5615},{"style":392},[5616],{"type":56,"value":5617},"    \u002F\u002F Remote MCP for context lookups\n",{"type":45,"tag":131,"props":5619,"children":5620},{"class":133,"line":1662},[5621,5625,5629,5633,5637,5641,5645,5649],{"type":45,"tag":131,"props":5622,"children":5623},{"style":138},[5624],{"type":56,"value":2375},{"type":45,"tag":131,"props":5626,"children":5627},{"style":150},[5628],{"type":56,"value":835},{"type":45,"tag":131,"props":5630,"children":5631},{"style":144},[5632],{"type":56,"value":532},{"type":45,"tag":131,"props":5634,"children":5635},{"style":150},[5636],{"type":56,"value":844},{"type":45,"tag":131,"props":5638,"children":5639},{"style":144},[5640],{"type":56,"value":532},{"type":45,"tag":131,"props":5642,"children":5643},{"style":263},[5644],{"type":56,"value":853},{"type":45,"tag":131,"props":5646,"children":5647},{"style":282},[5648],{"type":56,"value":270},{"type":45,"tag":131,"props":5650,"children":5651},{"style":144},[5652],{"type":56,"value":275},{"type":45,"tag":131,"props":5654,"children":5655},{"class":133,"line":1691},[5656,5660,5664,5668,5672,5676],{"type":45,"tag":131,"props":5657,"children":5658},{"style":282},[5659],{"type":56,"value":2412},{"type":45,"tag":131,"props":5661,"children":5662},{"style":144},[5663],{"type":56,"value":290},{"type":45,"tag":131,"props":5665,"children":5666},{"style":144},[5667],{"type":56,"value":168},{"type":45,"tag":131,"props":5669,"children":5670},{"style":171},[5671],{"type":56,"value":3985},{"type":45,"tag":131,"props":5673,"children":5674},{"style":144},[5675],{"type":56,"value":179},{"type":45,"tag":131,"props":5677,"children":5678},{"style":144},[5679],{"type":56,"value":352},{"type":45,"tag":131,"props":5681,"children":5682},{"class":133,"line":1708},[5683,5687,5691,5695,5699,5703],{"type":45,"tag":131,"props":5684,"children":5685},{"style":282},[5686],{"type":56,"value":4001},{"type":45,"tag":131,"props":5688,"children":5689},{"style":144},[5690],{"type":56,"value":290},{"type":45,"tag":131,"props":5692,"children":5693},{"style":144},[5694],{"type":56,"value":168},{"type":45,"tag":131,"props":5696,"children":5697},{"style":171},[5698],{"type":56,"value":4014},{"type":45,"tag":131,"props":5700,"children":5701},{"style":144},[5702],{"type":56,"value":179},{"type":45,"tag":131,"props":5704,"children":5705},{"style":144},[5706],{"type":56,"value":352},{"type":45,"tag":131,"props":5708,"children":5709},{"class":133,"line":1725},[5710,5714,5718,5722,5726,5730],{"type":45,"tag":131,"props":5711,"children":5712},{"style":282},[5713],{"type":56,"value":2463},{"type":45,"tag":131,"props":5715,"children":5716},{"style":144},[5717],{"type":56,"value":290},{"type":45,"tag":131,"props":5719,"children":5720},{"style":144},[5721],{"type":56,"value":168},{"type":45,"tag":131,"props":5723,"children":5724},{"style":171},[5725],{"type":56,"value":4042},{"type":45,"tag":131,"props":5727,"children":5728},{"style":144},[5729],{"type":56,"value":179},{"type":45,"tag":131,"props":5731,"children":5732},{"style":144},[5733],{"type":56,"value":352},{"type":45,"tag":131,"props":5735,"children":5736},{"class":133,"line":1751},[5737,5741,5745,5749,5754,5758],{"type":45,"tag":131,"props":5738,"children":5739},{"style":282},[5740],{"type":56,"value":2493},{"type":45,"tag":131,"props":5742,"children":5743},{"style":144},[5744],{"type":56,"value":290},{"type":45,"tag":131,"props":5746,"children":5747},{"style":144},[5748],{"type":56,"value":168},{"type":45,"tag":131,"props":5750,"children":5751},{"style":171},[5752],{"type":56,"value":5753},"context",{"type":45,"tag":131,"props":5755,"children":5756},{"style":144},[5757],{"type":56,"value":179},{"type":45,"tag":131,"props":5759,"children":5760},{"style":144},[5761],{"type":56,"value":352},{"type":45,"tag":131,"props":5763,"children":5764},{"class":133,"line":1768},[5765,5769,5773],{"type":45,"tag":131,"props":5766,"children":5767},{"style":144},[5768],{"type":56,"value":2528},{"type":45,"tag":131,"props":5770,"children":5771},{"style":282},[5772],{"type":56,"value":428},{"type":45,"tag":131,"props":5774,"children":5775},{"style":144},[5776],{"type":56,"value":184},{"type":45,"tag":131,"props":5778,"children":5779},{"class":133,"line":1798},[5780],{"type":45,"tag":131,"props":5781,"children":5782},{"style":144},[5783],{"type":56,"value":450},{"type":45,"tag":131,"props":5785,"children":5786},{"class":133,"line":1855},[5787],{"type":45,"tag":131,"props":5788,"children":5789},{"style":392},[5790],{"type":56,"value":5791},"  \u002F\u002F Inline tools coexist with discovered ones; inline wins on path conflict.\n",{"type":45,"tag":131,"props":5793,"children":5794},{"class":133,"line":1864},[5795,5799,5803],{"type":45,"tag":131,"props":5796,"children":5797},{"style":282},[5798],{"type":56,"value":285},{"type":45,"tag":131,"props":5800,"children":5801},{"style":144},[5802],{"type":56,"value":290},{"type":45,"tag":131,"props":5804,"children":5805},{"style":144},[5806],{"type":56,"value":295},{"type":45,"tag":131,"props":5808,"children":5809},{"class":133,"line":1873},[5810,5814,5819,5823,5827],{"type":45,"tag":131,"props":5811,"children":5812},{"style":144},[5813],{"type":56,"value":304},{"type":45,"tag":131,"props":5815,"children":5816},{"style":282},[5817],{"type":56,"value":5818},"util.now",{"type":45,"tag":131,"props":5820,"children":5821},{"style":144},[5822],{"type":56,"value":179},{"type":45,"tag":131,"props":5824,"children":5825},{"style":144},[5826],{"type":56,"value":290},{"type":45,"tag":131,"props":5828,"children":5829},{"style":144},[5830],{"type":56,"value":295},{"type":45,"tag":131,"props":5832,"children":5833},{"class":133,"line":1882},[5834,5838,5842,5846,5851,5855],{"type":45,"tag":131,"props":5835,"children":5836},{"style":282},[5837],{"type":56,"value":330},{"type":45,"tag":131,"props":5839,"children":5840},{"style":144},[5841],{"type":56,"value":290},{"type":45,"tag":131,"props":5843,"children":5844},{"style":144},[5845],{"type":56,"value":168},{"type":45,"tag":131,"props":5847,"children":5848},{"style":171},[5849],{"type":56,"value":5850},"Wall-clock ISO timestamp",{"type":45,"tag":131,"props":5852,"children":5853},{"style":144},[5854],{"type":56,"value":179},{"type":45,"tag":131,"props":5856,"children":5857},{"style":144},[5858],{"type":56,"value":352},{"type":45,"tag":131,"props":5860,"children":5861},{"class":133,"line":1891},[5862,5866,5870,5875,5879,5883,5887,5892,5896,5900,5905,5910,5914,5919,5924,5928,5932],{"type":45,"tag":131,"props":5863,"children":5864},{"style":263},[5865],{"type":56,"value":361},{"type":45,"tag":131,"props":5867,"children":5868},{"style":144},[5869],{"type":56,"value":290},{"type":45,"tag":131,"props":5871,"children":5872},{"style":144},[5873],{"type":56,"value":5874}," ()",{"type":45,"tag":131,"props":5876,"children":5877},{"style":242},[5878],{"type":56,"value":405},{"type":45,"tag":131,"props":5880,"children":5881},{"style":150},[5882],{"type":56,"value":375},{"type":45,"tag":131,"props":5884,"children":5885},{"style":144},[5886],{"type":56,"value":414},{"type":45,"tag":131,"props":5888,"children":5889},{"style":282},[5890],{"type":56,"value":5891}," ts",{"type":45,"tag":131,"props":5893,"children":5894},{"style":144},[5895],{"type":56,"value":290},{"type":45,"tag":131,"props":5897,"children":5898},{"style":144},[5899],{"type":56,"value":497},{"type":45,"tag":131,"props":5901,"children":5902},{"style":263},[5903],{"type":56,"value":5904}," Date",{"type":45,"tag":131,"props":5906,"children":5907},{"style":150},[5908],{"type":56,"value":5909},"()",{"type":45,"tag":131,"props":5911,"children":5912},{"style":144},[5913],{"type":56,"value":532},{"type":45,"tag":131,"props":5915,"children":5916},{"style":263},[5917],{"type":56,"value":5918},"toISOString",{"type":45,"tag":131,"props":5920,"children":5921},{"style":150},[5922],{"type":56,"value":5923},"() ",{"type":45,"tag":131,"props":5925,"children":5926},{"style":144},[5927],{"type":56,"value":459},{"type":45,"tag":131,"props":5929,"children":5930},{"style":150},[5931],{"type":56,"value":428},{"type":45,"tag":131,"props":5933,"children":5934},{"style":144},[5935],{"type":56,"value":352},{"type":45,"tag":131,"props":5937,"children":5938},{"class":133,"line":1956},[5939],{"type":45,"tag":131,"props":5940,"children":5941},{"style":144},[5942],{"type":56,"value":441},{"type":45,"tag":131,"props":5944,"children":5945},{"class":133,"line":1964},[5946],{"type":45,"tag":131,"props":5947,"children":5948},{"style":144},[5949],{"type":56,"value":450},{"type":45,"tag":131,"props":5951,"children":5952},{"class":133,"line":1972},[5953,5957,5961,5965,5969,5973,5977,5981],{"type":45,"tag":131,"props":5954,"children":5955},{"style":263},[5956],{"type":56,"value":2553},{"type":45,"tag":131,"props":5958,"children":5959},{"style":144},[5960],{"type":56,"value":290},{"type":45,"tag":131,"props":5962,"children":5963},{"style":242},[5964],{"type":56,"value":370},{"type":45,"tag":131,"props":5966,"children":5967},{"style":144},[5968],{"type":56,"value":375},{"type":45,"tag":131,"props":5970,"children":5971},{"style":378},[5972],{"type":56,"value":4694},{"type":45,"tag":131,"props":5974,"children":5975},{"style":144},[5976],{"type":56,"value":428},{"type":45,"tag":131,"props":5978,"children":5979},{"style":242},[5980],{"type":56,"value":405},{"type":45,"tag":131,"props":5982,"children":5983},{"style":144},[5984],{"type":56,"value":295},{"type":45,"tag":131,"props":5986,"children":5987},{"class":133,"line":1997},[5988],{"type":45,"tag":131,"props":5989,"children":5990},{"style":392},[5991],{"type":56,"value":5992},"    \u002F\u002F Different policy per source\n",{"type":45,"tag":131,"props":5994,"children":5995},{"class":133,"line":2013},[5996,6000,6004,6008,6012,6017,6022,6026,6030,6034,6039,6044,6048,6052,6056,6061,6065,6069,6074,6078,6082],{"type":45,"tag":131,"props":5997,"children":5998},{"style":138},[5999],{"type":56,"value":4722},{"type":45,"tag":131,"props":6001,"children":6002},{"style":282},[6003],{"type":56,"value":375},{"type":45,"tag":131,"props":6005,"children":6006},{"style":150},[6007],{"type":56,"value":4694},{"type":45,"tag":131,"props":6009,"children":6010},{"style":144},[6011],{"type":56,"value":532},{"type":45,"tag":131,"props":6013,"children":6014},{"style":150},[6015],{"type":56,"value":6016},"sourceId",{"type":45,"tag":131,"props":6018,"children":6019},{"style":144},[6020],{"type":56,"value":6021}," ===",{"type":45,"tag":131,"props":6023,"children":6024},{"style":144},[6025],{"type":56,"value":168},{"type":45,"tag":131,"props":6027,"children":6028},{"style":171},[6029],{"type":56,"value":968},{"type":45,"tag":131,"props":6031,"children":6032},{"style":144},[6033],{"type":56,"value":179},{"type":45,"tag":131,"props":6035,"children":6036},{"style":144},[6037],{"type":56,"value":6038}," &&",{"type":45,"tag":131,"props":6040,"children":6041},{"style":150},[6042],{"type":56,"value":6043}," req",{"type":45,"tag":131,"props":6045,"children":6046},{"style":144},[6047],{"type":56,"value":532},{"type":45,"tag":131,"props":6049,"children":6050},{"style":150},[6051],{"type":56,"value":4739},{"type":45,"tag":131,"props":6053,"children":6054},{"style":144},[6055],{"type":56,"value":532},{"type":45,"tag":131,"props":6057,"children":6058},{"style":263},[6059],{"type":56,"value":6060},"includes",{"type":45,"tag":131,"props":6062,"children":6063},{"style":282},[6064],{"type":56,"value":270},{"type":45,"tag":131,"props":6066,"children":6067},{"style":144},[6068],{"type":56,"value":179},{"type":45,"tag":131,"props":6070,"children":6071},{"style":171},[6072],{"type":56,"value":6073},"delete",{"type":45,"tag":131,"props":6075,"children":6076},{"style":144},[6077],{"type":56,"value":179},{"type":45,"tag":131,"props":6079,"children":6080},{"style":282},[6081],{"type":56,"value":4770},{"type":45,"tag":131,"props":6083,"children":6084},{"style":144},[6085],{"type":56,"value":275},{"type":45,"tag":131,"props":6087,"children":6088},{"class":133,"line":2042},[6089,6093,6097,6101,6105,6109,6113,6117,6121,6125,6130,6134],{"type":45,"tag":131,"props":6090,"children":6091},{"style":138},[6092],{"type":56,"value":4782},{"type":45,"tag":131,"props":6094,"children":6095},{"style":144},[6096],{"type":56,"value":147},{"type":45,"tag":131,"props":6098,"children":6099},{"style":282},[6100],{"type":56,"value":4791},{"type":45,"tag":131,"props":6102,"children":6103},{"style":144},[6104],{"type":56,"value":290},{"type":45,"tag":131,"props":6106,"children":6107},{"style":2125},[6108],{"type":56,"value":4800},{"type":45,"tag":131,"props":6110,"children":6111},{"style":144},[6112],{"type":56,"value":736},{"type":45,"tag":131,"props":6114,"children":6115},{"style":282},[6116],{"type":56,"value":4809},{"type":45,"tag":131,"props":6118,"children":6119},{"style":144},[6120],{"type":56,"value":290},{"type":45,"tag":131,"props":6122,"children":6123},{"style":144},[6124],{"type":56,"value":168},{"type":45,"tag":131,"props":6126,"children":6127},{"style":171},[6128],{"type":56,"value":6129},"github deletes need review",{"type":45,"tag":131,"props":6131,"children":6132},{"style":144},[6133],{"type":56,"value":179},{"type":45,"tag":131,"props":6135,"children":6136},{"style":144},[6137],{"type":56,"value":4831},{"type":45,"tag":131,"props":6139,"children":6140},{"class":133,"line":2058},[6141],{"type":45,"tag":131,"props":6142,"children":6143},{"style":144},[6144],{"type":56,"value":4839},{"type":45,"tag":131,"props":6146,"children":6147},{"class":133,"line":2175},[6148,6152,6156,6160,6164,6168],{"type":45,"tag":131,"props":6149,"children":6150},{"style":138},[6151],{"type":56,"value":4847},{"type":45,"tag":131,"props":6153,"children":6154},{"style":144},[6155],{"type":56,"value":147},{"type":45,"tag":131,"props":6157,"children":6158},{"style":282},[6159],{"type":56,"value":4791},{"type":45,"tag":131,"props":6161,"children":6162},{"style":144},[6163],{"type":56,"value":290},{"type":45,"tag":131,"props":6165,"children":6166},{"style":2125},[6167],{"type":56,"value":2128},{"type":45,"tag":131,"props":6169,"children":6170},{"style":144},[6171],{"type":56,"value":4831},{"type":45,"tag":131,"props":6173,"children":6174},{"class":133,"line":2187},[6175],{"type":45,"tag":131,"props":6176,"children":6177},{"style":144},[6178],{"type":56,"value":450},{"type":45,"tag":131,"props":6180,"children":6181},{"class":133,"line":2251},[6182,6186,6190],{"type":45,"tag":131,"props":6183,"children":6184},{"style":144},[6185],{"type":56,"value":459},{"type":45,"tag":131,"props":6187,"children":6188},{"style":150},[6189],{"type":56,"value":428},{"type":45,"tag":131,"props":6191,"children":6192},{"style":144},[6193],{"type":56,"value":184},{"type":45,"tag":61,"props":6195,"children":6196},{},[6197,6199,6205,6207,6212,6214,6219],{"type":56,"value":6198},"A js-exec script can then call across all sources in one turn. Remember the\nshape per source kind: GraphQL paths are ",{"type":45,"tag":51,"props":6200,"children":6202},{"className":6201},[],[6203],{"type":56,"value":6204},"\u003Cname>.query.\u003Cfield>",{"type":56,"value":6206},", OpenAPI paths\nare ",{"type":45,"tag":51,"props":6208,"children":6210},{"className":6209},[],[6211],{"type":56,"value":2740},{"type":56,"value":6213},", MCP paths are\n",{"type":45,"tag":51,"props":6215,"children":6217},{"className":6216},[],[6218],{"type":56,"value":5016},{"type":56,"value":6220},", inline paths are exactly your key.",{"type":45,"tag":86,"props":6222,"children":6224},{"className":3374,"code":6223,"language":3376,"meta":91,"style":91},"const repos = await tools.github.query.search({ query: \"stars:>10000\", type: \"REPOSITORY\" });\nconst pet   = await tools.petstore.pet.findPetById({ petId: 1 });\nconst ctx   = await tools.context.lookup({ name: \"react\" });\nconst ts    = await tools.util.now();\n\u002F\u002F GraphQL responses are wrapped — unwrap before reading\nconsole.log({\n  repos: repos.data?.search?.repositoryCount ?? null,\n  pet, ctx, ts,\n});\n",[6225],{"type":45,"tag":51,"props":6226,"children":6227},{"__ignoreMap":91},[6228,6344,6429,6511,6561,6569,6592,6645,6674],{"type":45,"tag":131,"props":6229,"children":6230},{"class":133,"line":134},[6231,6235,6240,6244,6248,6252,6256,6260,6264,6268,6272,6277,6281,6285,6290,6294,6298,6303,6307,6311,6315,6319,6323,6328,6332,6336,6340],{"type":45,"tag":131,"props":6232,"children":6233},{"style":242},[6234],{"type":56,"value":245},{"type":45,"tag":131,"props":6236,"children":6237},{"style":150},[6238],{"type":56,"value":6239}," repos ",{"type":45,"tag":131,"props":6241,"children":6242},{"style":144},[6243],{"type":56,"value":255},{"type":45,"tag":131,"props":6245,"children":6246},{"style":138},[6247],{"type":56,"value":260},{"type":45,"tag":131,"props":6249,"children":6250},{"style":150},[6251],{"type":56,"value":3405},{"type":45,"tag":131,"props":6253,"children":6254},{"style":144},[6255],{"type":56,"value":532},{"type":45,"tag":131,"props":6257,"children":6258},{"style":150},[6259],{"type":56,"value":968},{"type":45,"tag":131,"props":6261,"children":6262},{"style":144},[6263],{"type":56,"value":532},{"type":45,"tag":131,"props":6265,"children":6266},{"style":150},[6267],{"type":56,"value":1503},{"type":45,"tag":131,"props":6269,"children":6270},{"style":144},[6271],{"type":56,"value":532},{"type":45,"tag":131,"props":6273,"children":6274},{"style":263},[6275],{"type":56,"value":6276},"search",{"type":45,"tag":131,"props":6278,"children":6279},{"style":150},[6280],{"type":56,"value":270},{"type":45,"tag":131,"props":6282,"children":6283},{"style":144},[6284],{"type":56,"value":414},{"type":45,"tag":131,"props":6286,"children":6287},{"style":282},[6288],{"type":56,"value":6289}," query",{"type":45,"tag":131,"props":6291,"children":6292},{"style":144},[6293],{"type":56,"value":290},{"type":45,"tag":131,"props":6295,"children":6296},{"style":144},[6297],{"type":56,"value":168},{"type":45,"tag":131,"props":6299,"children":6300},{"style":171},[6301],{"type":56,"value":6302},"stars:>10000",{"type":45,"tag":131,"props":6304,"children":6305},{"style":144},[6306],{"type":56,"value":179},{"type":45,"tag":131,"props":6308,"children":6309},{"style":144},[6310],{"type":56,"value":736},{"type":45,"tag":131,"props":6312,"children":6313},{"style":282},[6314],{"type":56,"value":1529},{"type":45,"tag":131,"props":6316,"children":6317},{"style":144},[6318],{"type":56,"value":290},{"type":45,"tag":131,"props":6320,"children":6321},{"style":144},[6322],{"type":56,"value":168},{"type":45,"tag":131,"props":6324,"children":6325},{"style":171},[6326],{"type":56,"value":6327},"REPOSITORY",{"type":45,"tag":131,"props":6329,"children":6330},{"style":144},[6331],{"type":56,"value":179},{"type":45,"tag":131,"props":6333,"children":6334},{"style":144},[6335],{"type":56,"value":158},{"type":45,"tag":131,"props":6337,"children":6338},{"style":150},[6339],{"type":56,"value":428},{"type":45,"tag":131,"props":6341,"children":6342},{"style":144},[6343],{"type":56,"value":184},{"type":45,"tag":131,"props":6345,"children":6346},{"class":133,"line":187},[6347,6351,6356,6360,6364,6368,6372,6376,6380,6385,6389,6394,6398,6402,6407,6411,6417,6421,6425],{"type":45,"tag":131,"props":6348,"children":6349},{"style":242},[6350],{"type":56,"value":245},{"type":45,"tag":131,"props":6352,"children":6353},{"style":150},[6354],{"type":56,"value":6355}," pet   ",{"type":45,"tag":131,"props":6357,"children":6358},{"style":144},[6359],{"type":56,"value":255},{"type":45,"tag":131,"props":6361,"children":6362},{"style":138},[6363],{"type":56,"value":260},{"type":45,"tag":131,"props":6365,"children":6366},{"style":150},[6367],{"type":56,"value":3405},{"type":45,"tag":131,"props":6369,"children":6370},{"style":144},[6371],{"type":56,"value":532},{"type":45,"tag":131,"props":6373,"children":6374},{"style":150},[6375],{"type":56,"value":5369},{"type":45,"tag":131,"props":6377,"children":6378},{"style":144},[6379],{"type":56,"value":532},{"type":45,"tag":131,"props":6381,"children":6382},{"style":150},[6383],{"type":56,"value":6384},"pet",{"type":45,"tag":131,"props":6386,"children":6387},{"style":144},[6388],{"type":56,"value":532},{"type":45,"tag":131,"props":6390,"children":6391},{"style":263},[6392],{"type":56,"value":6393},"findPetById",{"type":45,"tag":131,"props":6395,"children":6396},{"style":150},[6397],{"type":56,"value":270},{"type":45,"tag":131,"props":6399,"children":6400},{"style":144},[6401],{"type":56,"value":414},{"type":45,"tag":131,"props":6403,"children":6404},{"style":282},[6405],{"type":56,"value":6406}," petId",{"type":45,"tag":131,"props":6408,"children":6409},{"style":144},[6410],{"type":56,"value":290},{"type":45,"tag":131,"props":6412,"children":6414},{"style":6413},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[6415],{"type":56,"value":6416}," 1",{"type":45,"tag":131,"props":6418,"children":6419},{"style":144},[6420],{"type":56,"value":158},{"type":45,"tag":131,"props":6422,"children":6423},{"style":150},[6424],{"type":56,"value":428},{"type":45,"tag":131,"props":6426,"children":6427},{"style":144},[6428],{"type":56,"value":184},{"type":45,"tag":131,"props":6430,"children":6431},{"class":133,"line":228},[6432,6436,6441,6445,6449,6453,6457,6461,6465,6470,6474,6478,6482,6486,6490,6495,6499,6503,6507],{"type":45,"tag":131,"props":6433,"children":6434},{"style":242},[6435],{"type":56,"value":245},{"type":45,"tag":131,"props":6437,"children":6438},{"style":150},[6439],{"type":56,"value":6440}," ctx   ",{"type":45,"tag":131,"props":6442,"children":6443},{"style":144},[6444],{"type":56,"value":255},{"type":45,"tag":131,"props":6446,"children":6447},{"style":138},[6448],{"type":56,"value":260},{"type":45,"tag":131,"props":6450,"children":6451},{"style":150},[6452],{"type":56,"value":3405},{"type":45,"tag":131,"props":6454,"children":6455},{"style":144},[6456],{"type":56,"value":532},{"type":45,"tag":131,"props":6458,"children":6459},{"style":150},[6460],{"type":56,"value":5753},{"type":45,"tag":131,"props":6462,"children":6463},{"style":144},[6464],{"type":56,"value":532},{"type":45,"tag":131,"props":6466,"children":6467},{"style":263},[6468],{"type":56,"value":6469},"lookup",{"type":45,"tag":131,"props":6471,"children":6472},{"style":150},[6473],{"type":56,"value":270},{"type":45,"tag":131,"props":6475,"children":6476},{"style":144},[6477],{"type":56,"value":414},{"type":45,"tag":131,"props":6479,"children":6480},{"style":282},[6481],{"type":56,"value":1464},{"type":45,"tag":131,"props":6483,"children":6484},{"style":144},[6485],{"type":56,"value":290},{"type":45,"tag":131,"props":6487,"children":6488},{"style":144},[6489],{"type":56,"value":168},{"type":45,"tag":131,"props":6491,"children":6492},{"style":171},[6493],{"type":56,"value":6494},"react",{"type":45,"tag":131,"props":6496,"children":6497},{"style":144},[6498],{"type":56,"value":179},{"type":45,"tag":131,"props":6500,"children":6501},{"style":144},[6502],{"type":56,"value":158},{"type":45,"tag":131,"props":6504,"children":6505},{"style":150},[6506],{"type":56,"value":428},{"type":45,"tag":131,"props":6508,"children":6509},{"style":144},[6510],{"type":56,"value":184},{"type":45,"tag":131,"props":6512,"children":6513},{"class":133,"line":238},[6514,6518,6523,6527,6531,6535,6539,6544,6548,6553,6557],{"type":45,"tag":131,"props":6515,"children":6516},{"style":242},[6517],{"type":56,"value":245},{"type":45,"tag":131,"props":6519,"children":6520},{"style":150},[6521],{"type":56,"value":6522}," ts    ",{"type":45,"tag":131,"props":6524,"children":6525},{"style":144},[6526],{"type":56,"value":255},{"type":45,"tag":131,"props":6528,"children":6529},{"style":138},[6530],{"type":56,"value":260},{"type":45,"tag":131,"props":6532,"children":6533},{"style":150},[6534],{"type":56,"value":3405},{"type":45,"tag":131,"props":6536,"children":6537},{"style":144},[6538],{"type":56,"value":532},{"type":45,"tag":131,"props":6540,"children":6541},{"style":150},[6542],{"type":56,"value":6543},"util",{"type":45,"tag":131,"props":6545,"children":6546},{"style":144},[6547],{"type":56,"value":532},{"type":45,"tag":131,"props":6549,"children":6550},{"style":263},[6551],{"type":56,"value":6552},"now",{"type":45,"tag":131,"props":6554,"children":6555},{"style":150},[6556],{"type":56,"value":5909},{"type":45,"tag":131,"props":6558,"children":6559},{"style":144},[6560],{"type":56,"value":184},{"type":45,"tag":131,"props":6562,"children":6563},{"class":133,"line":278},[6564],{"type":45,"tag":131,"props":6565,"children":6566},{"style":392},[6567],{"type":56,"value":6568},"\u002F\u002F GraphQL responses are wrapped — unwrap before reading\n",{"type":45,"tag":131,"props":6570,"children":6571},{"class":133,"line":298},[6572,6576,6580,6584,6588],{"type":45,"tag":131,"props":6573,"children":6574},{"style":150},[6575],{"type":56,"value":3699},{"type":45,"tag":131,"props":6577,"children":6578},{"style":144},[6579],{"type":56,"value":532},{"type":45,"tag":131,"props":6581,"children":6582},{"style":263},[6583],{"type":56,"value":3708},{"type":45,"tag":131,"props":6585,"children":6586},{"style":150},[6587],{"type":56,"value":270},{"type":45,"tag":131,"props":6589,"children":6590},{"style":144},[6591],{"type":56,"value":275},{"type":45,"tag":131,"props":6593,"children":6594},{"class":133,"line":324},[6595,6600,6604,6609,6613,6617,6622,6626,6630,6635,6640],{"type":45,"tag":131,"props":6596,"children":6597},{"style":282},[6598],{"type":56,"value":6599},"  repos",{"type":45,"tag":131,"props":6601,"children":6602},{"style":144},[6603],{"type":56,"value":290},{"type":45,"tag":131,"props":6605,"children":6606},{"style":150},[6607],{"type":56,"value":6608}," repos",{"type":45,"tag":131,"props":6610,"children":6611},{"style":144},[6612],{"type":56,"value":532},{"type":45,"tag":131,"props":6614,"children":6615},{"style":150},[6616],{"type":56,"value":3332},{"type":45,"tag":131,"props":6618,"children":6619},{"style":144},[6620],{"type":56,"value":6621},"?.",{"type":45,"tag":131,"props":6623,"children":6624},{"style":150},[6625],{"type":56,"value":6276},{"type":45,"tag":131,"props":6627,"children":6628},{"style":144},[6629],{"type":56,"value":6621},{"type":45,"tag":131,"props":6631,"children":6632},{"style":150},[6633],{"type":56,"value":6634},"repositoryCount ",{"type":45,"tag":131,"props":6636,"children":6637},{"style":144},[6638],{"type":56,"value":6639},"??",{"type":45,"tag":131,"props":6641,"children":6642},{"style":144},[6643],{"type":56,"value":6644}," null,\n",{"type":45,"tag":131,"props":6646,"children":6647},{"class":133,"line":355},[6648,6653,6657,6662,6666,6670],{"type":45,"tag":131,"props":6649,"children":6650},{"style":150},[6651],{"type":56,"value":6652},"  pet",{"type":45,"tag":131,"props":6654,"children":6655},{"style":144},[6656],{"type":56,"value":736},{"type":45,"tag":131,"props":6658,"children":6659},{"style":150},[6660],{"type":56,"value":6661}," ctx",{"type":45,"tag":131,"props":6663,"children":6664},{"style":144},[6665],{"type":56,"value":736},{"type":45,"tag":131,"props":6667,"children":6668},{"style":150},[6669],{"type":56,"value":5891},{"type":45,"tag":131,"props":6671,"children":6672},{"style":144},[6673],{"type":56,"value":352},{"type":45,"tag":131,"props":6675,"children":6676},{"class":133,"line":435},[6677,6681,6685],{"type":45,"tag":131,"props":6678,"children":6679},{"style":144},[6680],{"type":56,"value":459},{"type":45,"tag":131,"props":6682,"children":6683},{"style":150},[6684],{"type":56,"value":428},{"type":45,"tag":131,"props":6686,"children":6687},{"style":144},[6688],{"type":56,"value":184},{"type":45,"tag":61,"props":6690,"children":6691},{},[6692,6694,6699],{"type":56,"value":6693},"Use distinct ",{"type":45,"tag":51,"props":6695,"children":6697},{"className":6696},[],[6698],{"type":56,"value":637},{"type":56,"value":6700}," values per source — collisions silently overwrite tool\npaths within the namespace.",{"type":45,"tag":79,"props":6702,"children":6704},{"id":6703},"_6-calling-generated-tools-the-rules-to-internalize",[6705],{"type":56,"value":6706},"§6. Calling generated tools — the rules to internalize",{"type":45,"tag":61,"props":6708,"children":6709},{},[6710],{"type":56,"value":6711},"These two tables are the only things you need to memorize. They apply to all\nfour source kinds — the conversion is uniform.",{"type":45,"tag":6713,"props":6714,"children":6716},"h3",{"id":6715},"js-api-inside-js-exec-scripts",[6717,6719,6725],{"type":56,"value":6718},"JS API (inside ",{"type":45,"tag":51,"props":6720,"children":6722},{"className":6721},[],[6723],{"type":56,"value":6724},"js-exec",{"type":56,"value":6726}," scripts)",{"type":45,"tag":6728,"props":6729,"children":6730},"table",{},[6731,6750],{"type":45,"tag":6732,"props":6733,"children":6734},"thead",{},[6735],{"type":45,"tag":6736,"props":6737,"children":6738},"tr",{},[6739,6745],{"type":45,"tag":6740,"props":6741,"children":6742},"th",{},[6743],{"type":56,"value":6744},"Want",{"type":45,"tag":6740,"props":6746,"children":6747},{},[6748],{"type":56,"value":6749},"Write",{"type":45,"tag":6751,"props":6752,"children":6753},"tbody",{},[6754,6772,6796,6813,6830],{"type":45,"tag":6736,"props":6755,"children":6756},{},[6757,6763],{"type":45,"tag":6758,"props":6759,"children":6760},"td",{},[6761],{"type":56,"value":6762},"Call any tool",{"type":45,"tag":6758,"props":6764,"children":6765},{},[6766],{"type":45,"tag":51,"props":6767,"children":6769},{"className":6768},[],[6770],{"type":56,"value":6771},"await tools.\u003Cnamespace>.\u003Cname>(args)",{"type":45,"tag":6736,"props":6773,"children":6774},{},[6775,6780],{"type":45,"tag":6758,"props":6776,"children":6777},{},[6778],{"type":56,"value":6779},"Pass no args",{"type":45,"tag":6758,"props":6781,"children":6782},{},[6783,6789,6790],{"type":45,"tag":51,"props":6784,"children":6786},{"className":6785},[],[6787],{"type":56,"value":6788},"await tools.ns.name()",{"type":56,"value":2890},{"type":45,"tag":51,"props":6791,"children":6793},{"className":6792},[],[6794],{"type":56,"value":6795},"({})",{"type":45,"tag":6736,"props":6797,"children":6798},{},[6799,6804],{"type":45,"tag":6758,"props":6800,"children":6801},{},[6802],{"type":56,"value":6803},"Catch tool errors",{"type":45,"tag":6758,"props":6805,"children":6806},{},[6807],{"type":45,"tag":51,"props":6808,"children":6810},{"className":6809},[],[6811],{"type":56,"value":6812},"try { ... } catch (e) { e.message }",{"type":45,"tag":6736,"props":6814,"children":6815},{},[6816,6821],{"type":45,"tag":6758,"props":6817,"children":6818},{},[6819],{"type":56,"value":6820},"Snake-case server tool",{"type":45,"tag":6758,"props":6822,"children":6823},{},[6824],{"type":45,"tag":51,"props":6825,"children":6827},{"className":6826},[],[6828],{"type":56,"value":6829},"await tools.docs[\"read_file\"]({ path })",{"type":45,"tag":6736,"props":6831,"children":6832},{},[6833,6838],{"type":45,"tag":6758,"props":6834,"children":6835},{},[6836],{"type":56,"value":6837},"Deeply nested path",{"type":45,"tag":6758,"props":6839,"children":6840},{},[6841,6847],{"type":45,"tag":51,"props":6842,"children":6844},{"className":6843},[],[6845],{"type":56,"value":6846},"await tools.a.b.c.d(args)",{"type":56,"value":6848}," — works as written",{"type":45,"tag":61,"props":6850,"children":6851},{},[6852,6858,6860,6865],{"type":45,"tag":51,"props":6853,"children":6855},{"className":6854},[],[6856],{"type":56,"value":6857},"undefined",{"type":56,"value":6859}," returns reach the script as ",{"type":45,"tag":51,"props":6861,"children":6863},{"className":6862},[],[6864],{"type":56,"value":6857},{"type":56,"value":6866},"; everything else is\nJSON-serialized and parsed back into a JS value.",{"type":45,"tag":6713,"props":6868,"children":6870},{"id":6869},"bash-cli-inside-bashexec-scripts",[6871,6873,6879],{"type":56,"value":6872},"Bash CLI (inside ",{"type":45,"tag":51,"props":6874,"children":6876},{"className":6875},[],[6877],{"type":56,"value":6878},"bash.exec(...)",{"type":56,"value":6726},{"type":45,"tag":6728,"props":6881,"children":6882},{},[6883,6897],{"type":45,"tag":6732,"props":6884,"children":6885},{},[6886],{"type":45,"tag":6736,"props":6887,"children":6888},{},[6889,6893],{"type":45,"tag":6740,"props":6890,"children":6891},{},[6892],{"type":56,"value":6744},{"type":45,"tag":6740,"props":6894,"children":6895},{},[6896],{"type":56,"value":6749},{"type":45,"tag":6751,"props":6898,"children":6899},{},[6900,6916,6933,6954,6979,6996,7013,7030],{"type":45,"tag":6736,"props":6901,"children":6902},{},[6903,6907],{"type":45,"tag":6758,"props":6904,"children":6905},{},[6906],{"type":56,"value":3789},{"type":45,"tag":6758,"props":6908,"children":6909},{},[6910],{"type":45,"tag":51,"props":6911,"children":6913},{"className":6912},[],[6914],{"type":56,"value":6915},"ns name a=1 b=2",{"type":45,"tag":6736,"props":6917,"children":6918},{},[6919,6924],{"type":45,"tag":6758,"props":6920,"children":6921},{},[6922],{"type":56,"value":6923},"flags",{"type":45,"tag":6758,"props":6925,"children":6926},{},[6927],{"type":45,"tag":51,"props":6928,"children":6930},{"className":6929},[],[6931],{"type":56,"value":6932},"ns name --a 1 --b 2",{"type":45,"tag":6736,"props":6934,"children":6935},{},[6936,6945],{"type":45,"tag":6758,"props":6937,"children":6938},{},[6939],{"type":45,"tag":51,"props":6940,"children":6942},{"className":6941},[],[6943],{"type":56,"value":6944},"--key=value",{"type":45,"tag":6758,"props":6946,"children":6947},{},[6948],{"type":45,"tag":51,"props":6949,"children":6951},{"className":6950},[],[6952],{"type":56,"value":6953},"ns name --a=1",{"type":45,"tag":6736,"props":6955,"children":6956},{},[6957,6962],{"type":45,"tag":6758,"props":6958,"children":6959},{},[6960],{"type":56,"value":6961},"Bool flag",{"type":45,"tag":6758,"props":6963,"children":6964},{},[6965,6971,6973],{"type":45,"tag":51,"props":6966,"children":6968},{"className":6967},[],[6969],{"type":56,"value":6970},"ns name --verbose",{"type":56,"value":6972}," → ",{"type":45,"tag":51,"props":6974,"children":6976},{"className":6975},[],[6977],{"type":56,"value":6978},"{verbose: true}",{"type":45,"tag":6736,"props":6980,"children":6981},{},[6982,6987],{"type":45,"tag":6758,"props":6983,"children":6984},{},[6985],{"type":56,"value":6986},"Inline JSON",{"type":45,"tag":6758,"props":6988,"children":6989},{},[6990],{"type":45,"tag":51,"props":6991,"children":6993},{"className":6992},[],[6994],{"type":56,"value":6995},"ns name --json '{\"a\":1,\"b\":2}'",{"type":45,"tag":6736,"props":6997,"children":6998},{},[6999,7004],{"type":45,"tag":6758,"props":7000,"children":7001},{},[7002],{"type":56,"value":7003},"Piped JSON",{"type":45,"tag":6758,"props":7005,"children":7006},{},[7007],{"type":45,"tag":51,"props":7008,"children":7010},{"className":7009},[],[7011],{"type":56,"value":7012},"echo '{\"a\":1}' | ns name",{"type":45,"tag":6736,"props":7014,"children":7015},{},[7016,7021],{"type":45,"tag":6758,"props":7017,"children":7018},{},[7019],{"type":56,"value":7020},"Compose with jq",{"type":45,"tag":6758,"props":7022,"children":7023},{},[7024],{"type":45,"tag":51,"props":7025,"children":7027},{"className":7026},[],[7028],{"type":56,"value":7029},"ns name a=1 | jq -r .field",{"type":45,"tag":6736,"props":7031,"children":7032},{},[7033,7038],{"type":45,"tag":6758,"props":7034,"children":7035},{},[7036],{"type":56,"value":7037},"Show help",{"type":45,"tag":6758,"props":7039,"children":7040},{},[7041,7047,7048],{"type":45,"tag":51,"props":7042,"children":7044},{"className":7043},[],[7045],{"type":56,"value":7046},"ns --help",{"type":56,"value":2890},{"type":45,"tag":51,"props":7049,"children":7051},{"className":7050},[],[7052],{"type":56,"value":7053},"ns name --help",{"type":45,"tag":61,"props":7055,"children":7056},{},[7057,7059,7071],{"type":56,"value":7058},"Mode precedence when more than one is used: ",{"type":45,"tag":2828,"props":7060,"children":7061},{},[7062,7064,7069],{"type":56,"value":7063},"flags > ",{"type":45,"tag":51,"props":7065,"children":7067},{"className":7066},[],[7068],{"type":56,"value":3781},{"type":56,"value":7070}," > stdin",{"type":56,"value":532},{"type":45,"tag":61,"props":7073,"children":7074},{},[7075,7077,7083,7085,7091,7093,7099,7100,7106,7108,7114,7115,7121],{"type":56,"value":7076},"Values are coerced via ",{"type":45,"tag":51,"props":7078,"children":7080},{"className":7079},[],[7081],{"type":56,"value":7082},"JSON.parse",{"type":56,"value":7084}," first (",{"type":45,"tag":51,"props":7086,"children":7088},{"className":7087},[],[7089],{"type":56,"value":7090},"a=2",{"type":56,"value":7092}," → number ",{"type":45,"tag":51,"props":7094,"children":7096},{"className":7095},[],[7097],{"type":56,"value":7098},"2",{"type":56,"value":352},{"type":45,"tag":51,"props":7101,"children":7103},{"className":7102},[],[7104],{"type":56,"value":7105},"ok=true",{"type":56,"value":7107}," → boolean ",{"type":45,"tag":51,"props":7109,"children":7111},{"className":7110},[],[7112],{"type":56,"value":7113},"true",{"type":56,"value":3746},{"type":45,"tag":51,"props":7116,"children":7118},{"className":7117},[],[7119],{"type":56,"value":7120},"xs=[1,2]",{"type":56,"value":7122}," → array), falling back to string when\nparsing fails.",{"type":45,"tag":61,"props":7124,"children":7125},{},[7126,7128,7134],{"type":56,"value":7127},"Tool errors land on stderr with format ",{"type":45,"tag":51,"props":7129,"children":7131},{"className":7130},[],[7132],{"type":56,"value":7133},"\u003Cnamespace>: \u003Csubcommand>: \u003Cmessage>",{"type":56,"value":7135},"\nand exit code 1.",{"type":45,"tag":79,"props":7137,"children":7139},{"id":7138},"_7-skeleton-an-agent-can-copy-and-adapt",[7140],{"type":56,"value":7141},"§7. Skeleton an agent can copy and adapt",{"type":45,"tag":61,"props":7143,"children":7144},{},[7145,7147,7153],{"type":56,"value":7146},"Self-contained — pick a source kind, fill in the spec, run with ",{"type":45,"tag":51,"props":7148,"children":7150},{"className":7149},[],[7151],{"type":56,"value":7152},"tsx",{"type":56,"value":532},{"type":45,"tag":86,"props":7155,"children":7157},{"className":123,"code":7156,"language":125,"meta":91,"style":91},"import { Bash } from \"just-bash\";\nimport { createExecutor } from \"@just-bash\u002Fexecutor\";\n\nconst executor = await createExecutor({\n  \u002F\u002F Pick ONE of: `tools` (inline) or `setup` (SDK), or both.\n  tools: {\n    \"math.add\": {\n      description: \"Add two numbers\",\n      execute: ({ a, b }: { a: number; b: number }) => ({ sum: a + b }),\n    },\n  },\n  \u002F\u002F setup: async (sdk) => {\n  \u002F\u002F   await sdk.sources.add({ kind: \"openapi\", spec, endpoint, name });\n  \u002F\u002F },\n  onToolApproval: \"allow-all\",\n});\n\nconst bash = new Bash({\n  customCommands: executor.commands,\n  javascript: { invokeTool: executor.invokeTool },\n  executionLimits: { maxJsTimeoutMs: 30_000 },\n});\n\n\u002F\u002F 1. JS API\nconst r1 = await bash.exec(`js-exec -c '\n  try {\n    const r = await tools.math.add({ a: 2, b: 3 });\n    console.log(\"sum=\" + r.sum);\n  } catch (e) {\n    console.error(\"tool failed:\", e.message);\n  }\n'`);\nprocess.stdout.write(r1.stdout);\nif (r1.stderr) process.stderr.write(r1.stderr);\n\n\u002F\u002F 2. Bash CLI — three input modes, all equivalent\nfor (const cmd of [\n  \"math add a=2 b=3\",\n  \"math add --a 2 --b 3\",\n  `echo '{\"a\":2,\"b\":3}' | math add`,\n]) {\n  const r = await bash.exec(cmd);\n  console.log(`${cmd}  →  ${r.stdout.trim()}  (exit=${r.exitCode})`);\n}\n\n\u002F\u002F 3. Help text\nprocess.stdout.write((await bash.exec(\"math --help\")).stdout);\n",[7158],{"type":45,"tag":51,"props":7159,"children":7160},{"__ignoreMap":91},[7161,7200,7239,7246,7277,7285,7300,7324,7352,7473,7480,7487,7495,7503,7511,7538,7553,7560,7591,7618,7657,7691,7706,7713,7721,7769,7777,7785,7793,7801,7809,7817,7837,7880,7935,7942,7950,7980,8001,8021,8042,8054,8104,8217,8224,8231,8239],{"type":45,"tag":131,"props":7162,"children":7163},{"class":133,"line":134},[7164,7168,7172,7176,7180,7184,7188,7192,7196],{"type":45,"tag":131,"props":7165,"children":7166},{"style":138},[7167],{"type":56,"value":141},{"type":45,"tag":131,"props":7169,"children":7170},{"style":144},[7171],{"type":56,"value":147},{"type":45,"tag":131,"props":7173,"children":7174},{"style":150},[7175],{"type":56,"value":153},{"type":45,"tag":131,"props":7177,"children":7178},{"style":144},[7179],{"type":56,"value":158},{"type":45,"tag":131,"props":7181,"children":7182},{"style":138},[7183],{"type":56,"value":163},{"type":45,"tag":131,"props":7185,"children":7186},{"style":144},[7187],{"type":56,"value":168},{"type":45,"tag":131,"props":7189,"children":7190},{"style":171},[7191],{"type":56,"value":174},{"type":45,"tag":131,"props":7193,"children":7194},{"style":144},[7195],{"type":56,"value":179},{"type":45,"tag":131,"props":7197,"children":7198},{"style":144},[7199],{"type":56,"value":184},{"type":45,"tag":131,"props":7201,"children":7202},{"class":133,"line":187},[7203,7207,7211,7215,7219,7223,7227,7231,7235],{"type":45,"tag":131,"props":7204,"children":7205},{"style":138},[7206],{"type":56,"value":141},{"type":45,"tag":131,"props":7208,"children":7209},{"style":144},[7210],{"type":56,"value":147},{"type":45,"tag":131,"props":7212,"children":7213},{"style":150},[7214],{"type":56,"value":201},{"type":45,"tag":131,"props":7216,"children":7217},{"style":144},[7218],{"type":56,"value":158},{"type":45,"tag":131,"props":7220,"children":7221},{"style":138},[7222],{"type":56,"value":163},{"type":45,"tag":131,"props":7224,"children":7225},{"style":144},[7226],{"type":56,"value":168},{"type":45,"tag":131,"props":7228,"children":7229},{"style":171},[7230],{"type":56,"value":57},{"type":45,"tag":131,"props":7232,"children":7233},{"style":144},[7234],{"type":56,"value":179},{"type":45,"tag":131,"props":7236,"children":7237},{"style":144},[7238],{"type":56,"value":184},{"type":45,"tag":131,"props":7240,"children":7241},{"class":133,"line":228},[7242],{"type":45,"tag":131,"props":7243,"children":7244},{"emptyLinePlaceholder":232},[7245],{"type":56,"value":235},{"type":45,"tag":131,"props":7247,"children":7248},{"class":133,"line":238},[7249,7253,7257,7261,7265,7269,7273],{"type":45,"tag":131,"props":7250,"children":7251},{"style":242},[7252],{"type":56,"value":245},{"type":45,"tag":131,"props":7254,"children":7255},{"style":150},[7256],{"type":56,"value":250},{"type":45,"tag":131,"props":7258,"children":7259},{"style":144},[7260],{"type":56,"value":255},{"type":45,"tag":131,"props":7262,"children":7263},{"style":138},[7264],{"type":56,"value":260},{"type":45,"tag":131,"props":7266,"children":7267},{"style":263},[7268],{"type":56,"value":201},{"type":45,"tag":131,"props":7270,"children":7271},{"style":150},[7272],{"type":56,"value":270},{"type":45,"tag":131,"props":7274,"children":7275},{"style":144},[7276],{"type":56,"value":275},{"type":45,"tag":131,"props":7278,"children":7279},{"class":133,"line":278},[7280],{"type":45,"tag":131,"props":7281,"children":7282},{"style":392},[7283],{"type":56,"value":7284},"  \u002F\u002F Pick ONE of: `tools` (inline) or `setup` (SDK), or both.\n",{"type":45,"tag":131,"props":7286,"children":7287},{"class":133,"line":298},[7288,7292,7296],{"type":45,"tag":131,"props":7289,"children":7290},{"style":282},[7291],{"type":56,"value":285},{"type":45,"tag":131,"props":7293,"children":7294},{"style":144},[7295],{"type":56,"value":290},{"type":45,"tag":131,"props":7297,"children":7298},{"style":144},[7299],{"type":56,"value":295},{"type":45,"tag":131,"props":7301,"children":7302},{"class":133,"line":324},[7303,7307,7312,7316,7320],{"type":45,"tag":131,"props":7304,"children":7305},{"style":144},[7306],{"type":56,"value":304},{"type":45,"tag":131,"props":7308,"children":7309},{"style":282},[7310],{"type":56,"value":7311},"math.add",{"type":45,"tag":131,"props":7313,"children":7314},{"style":144},[7315],{"type":56,"value":179},{"type":45,"tag":131,"props":7317,"children":7318},{"style":144},[7319],{"type":56,"value":290},{"type":45,"tag":131,"props":7321,"children":7322},{"style":144},[7323],{"type":56,"value":295},{"type":45,"tag":131,"props":7325,"children":7326},{"class":133,"line":355},[7327,7331,7335,7339,7344,7348],{"type":45,"tag":131,"props":7328,"children":7329},{"style":282},[7330],{"type":56,"value":330},{"type":45,"tag":131,"props":7332,"children":7333},{"style":144},[7334],{"type":56,"value":290},{"type":45,"tag":131,"props":7336,"children":7337},{"style":144},[7338],{"type":56,"value":168},{"type":45,"tag":131,"props":7340,"children":7341},{"style":171},[7342],{"type":56,"value":7343},"Add two numbers",{"type":45,"tag":131,"props":7345,"children":7346},{"style":144},[7347],{"type":56,"value":179},{"type":45,"tag":131,"props":7349,"children":7350},{"style":144},[7351],{"type":56,"value":352},{"type":45,"tag":131,"props":7353,"children":7354},{"class":133,"line":435},[7355,7359,7363,7368,7373,7377,7382,7387,7391,7395,7399,7404,7409,7413,7417,7421,7425,7429,7433,7437,7442,7446,7451,7456,7461,7465,7469],{"type":45,"tag":131,"props":7356,"children":7357},{"style":263},[7358],{"type":56,"value":361},{"type":45,"tag":131,"props":7360,"children":7361},{"style":144},[7362],{"type":56,"value":290},{"type":45,"tag":131,"props":7364,"children":7365},{"style":144},[7366],{"type":56,"value":7367}," ({",{"type":45,"tag":131,"props":7369,"children":7370},{"style":378},[7371],{"type":56,"value":7372}," a",{"type":45,"tag":131,"props":7374,"children":7375},{"style":144},[7376],{"type":56,"value":736},{"type":45,"tag":131,"props":7378,"children":7379},{"style":378},[7380],{"type":56,"value":7381}," b",{"type":45,"tag":131,"props":7383,"children":7384},{"style":144},[7385],{"type":56,"value":7386}," }:",{"type":45,"tag":131,"props":7388,"children":7389},{"style":144},[7390],{"type":56,"value":147},{"type":45,"tag":131,"props":7392,"children":7393},{"style":282},[7394],{"type":56,"value":7372},{"type":45,"tag":131,"props":7396,"children":7397},{"style":144},[7398],{"type":56,"value":290},{"type":45,"tag":131,"props":7400,"children":7401},{"style":665},[7402],{"type":56,"value":7403}," number",{"type":45,"tag":131,"props":7405,"children":7406},{"style":144},[7407],{"type":56,"value":7408},";",{"type":45,"tag":131,"props":7410,"children":7411},{"style":282},[7412],{"type":56,"value":7381},{"type":45,"tag":131,"props":7414,"children":7415},{"style":144},[7416],{"type":56,"value":290},{"type":45,"tag":131,"props":7418,"children":7419},{"style":665},[7420],{"type":56,"value":7403},{"type":45,"tag":131,"props":7422,"children":7423},{"style":144},[7424],{"type":56,"value":400},{"type":45,"tag":131,"props":7426,"children":7427},{"style":242},[7428],{"type":56,"value":405},{"type":45,"tag":131,"props":7430,"children":7431},{"style":150},[7432],{"type":56,"value":375},{"type":45,"tag":131,"props":7434,"children":7435},{"style":144},[7436],{"type":56,"value":414},{"type":45,"tag":131,"props":7438,"children":7439},{"style":282},[7440],{"type":56,"value":7441}," sum",{"type":45,"tag":131,"props":7443,"children":7444},{"style":144},[7445],{"type":56,"value":290},{"type":45,"tag":131,"props":7447,"children":7448},{"style":150},[7449],{"type":56,"value":7450}," a ",{"type":45,"tag":131,"props":7452,"children":7453},{"style":144},[7454],{"type":56,"value":7455},"+",{"type":45,"tag":131,"props":7457,"children":7458},{"style":150},[7459],{"type":56,"value":7460}," b ",{"type":45,"tag":131,"props":7462,"children":7463},{"style":144},[7464],{"type":56,"value":459},{"type":45,"tag":131,"props":7466,"children":7467},{"style":150},[7468],{"type":56,"value":428},{"type":45,"tag":131,"props":7470,"children":7471},{"style":144},[7472],{"type":56,"value":352},{"type":45,"tag":131,"props":7474,"children":7475},{"class":133,"line":444},[7476],{"type":45,"tag":131,"props":7477,"children":7478},{"style":144},[7479],{"type":56,"value":441},{"type":45,"tag":131,"props":7481,"children":7482},{"class":133,"line":453},[7483],{"type":45,"tag":131,"props":7484,"children":7485},{"style":144},[7486],{"type":56,"value":450},{"type":45,"tag":131,"props":7488,"children":7489},{"class":133,"line":470},[7490],{"type":45,"tag":131,"props":7491,"children":7492},{"style":392},[7493],{"type":56,"value":7494},"  \u002F\u002F setup: async (sdk) => {\n",{"type":45,"tag":131,"props":7496,"children":7497},{"class":133,"line":478},[7498],{"type":45,"tag":131,"props":7499,"children":7500},{"style":392},[7501],{"type":56,"value":7502},"  \u002F\u002F   await sdk.sources.add({ kind: \"openapi\", spec, endpoint, name });\n",{"type":45,"tag":131,"props":7504,"children":7505},{"class":133,"line":512},[7506],{"type":45,"tag":131,"props":7507,"children":7508},{"style":392},[7509],{"type":56,"value":7510},"  \u002F\u002F },\n",{"type":45,"tag":131,"props":7512,"children":7513},{"class":133,"line":544},[7514,7518,7522,7526,7530,7534],{"type":45,"tag":131,"props":7515,"children":7516},{"style":282},[7517],{"type":56,"value":2553},{"type":45,"tag":131,"props":7519,"children":7520},{"style":144},[7521],{"type":56,"value":290},{"type":45,"tag":131,"props":7523,"children":7524},{"style":144},[7525],{"type":56,"value":168},{"type":45,"tag":131,"props":7527,"children":7528},{"style":171},[7529],{"type":56,"value":2566},{"type":45,"tag":131,"props":7531,"children":7532},{"style":144},[7533],{"type":56,"value":179},{"type":45,"tag":131,"props":7535,"children":7536},{"style":144},[7537],{"type":56,"value":352},{"type":45,"tag":131,"props":7539,"children":7540},{"class":133,"line":588},[7541,7545,7549],{"type":45,"tag":131,"props":7542,"children":7543},{"style":144},[7544],{"type":56,"value":459},{"type":45,"tag":131,"props":7546,"children":7547},{"style":150},[7548],{"type":56,"value":428},{"type":45,"tag":131,"props":7550,"children":7551},{"style":144},[7552],{"type":56,"value":184},{"type":45,"tag":131,"props":7554,"children":7555},{"class":133,"line":1636},[7556],{"type":45,"tag":131,"props":7557,"children":7558},{"emptyLinePlaceholder":232},[7559],{"type":56,"value":235},{"type":45,"tag":131,"props":7561,"children":7562},{"class":133,"line":1645},[7563,7567,7571,7575,7579,7583,7587],{"type":45,"tag":131,"props":7564,"children":7565},{"style":242},[7566],{"type":56,"value":245},{"type":45,"tag":131,"props":7568,"children":7569},{"style":150},[7570],{"type":56,"value":488},{"type":45,"tag":131,"props":7572,"children":7573},{"style":144},[7574],{"type":56,"value":255},{"type":45,"tag":131,"props":7576,"children":7577},{"style":144},[7578],{"type":56,"value":497},{"type":45,"tag":131,"props":7580,"children":7581},{"style":263},[7582],{"type":56,"value":153},{"type":45,"tag":131,"props":7584,"children":7585},{"style":150},[7586],{"type":56,"value":270},{"type":45,"tag":131,"props":7588,"children":7589},{"style":144},[7590],{"type":56,"value":275},{"type":45,"tag":131,"props":7592,"children":7593},{"class":133,"line":1662},[7594,7598,7602,7606,7610,7614],{"type":45,"tag":131,"props":7595,"children":7596},{"style":282},[7597],{"type":56,"value":518},{"type":45,"tag":131,"props":7599,"children":7600},{"style":144},[7601],{"type":56,"value":290},{"type":45,"tag":131,"props":7603,"children":7604},{"style":150},[7605],{"type":56,"value":527},{"type":45,"tag":131,"props":7607,"children":7608},{"style":144},[7609],{"type":56,"value":532},{"type":45,"tag":131,"props":7611,"children":7612},{"style":150},[7613],{"type":56,"value":537},{"type":45,"tag":131,"props":7615,"children":7616},{"style":144},[7617],{"type":56,"value":352},{"type":45,"tag":131,"props":7619,"children":7620},{"class":133,"line":1691},[7621,7625,7629,7633,7637,7641,7645,7649,7653],{"type":45,"tag":131,"props":7622,"children":7623},{"style":282},[7624],{"type":56,"value":550},{"type":45,"tag":131,"props":7626,"children":7627},{"style":144},[7628],{"type":56,"value":290},{"type":45,"tag":131,"props":7630,"children":7631},{"style":144},[7632],{"type":56,"value":147},{"type":45,"tag":131,"props":7634,"children":7635},{"style":282},[7636],{"type":56,"value":563},{"type":45,"tag":131,"props":7638,"children":7639},{"style":144},[7640],{"type":56,"value":290},{"type":45,"tag":131,"props":7642,"children":7643},{"style":150},[7644],{"type":56,"value":527},{"type":45,"tag":131,"props":7646,"children":7647},{"style":144},[7648],{"type":56,"value":532},{"type":45,"tag":131,"props":7650,"children":7651},{"style":150},[7652],{"type":56,"value":580},{"type":45,"tag":131,"props":7654,"children":7655},{"style":144},[7656],{"type":56,"value":585},{"type":45,"tag":131,"props":7658,"children":7659},{"class":133,"line":1708},[7660,7665,7669,7673,7678,7682,7687],{"type":45,"tag":131,"props":7661,"children":7662},{"style":282},[7663],{"type":56,"value":7664},"  executionLimits",{"type":45,"tag":131,"props":7666,"children":7667},{"style":144},[7668],{"type":56,"value":290},{"type":45,"tag":131,"props":7670,"children":7671},{"style":144},[7672],{"type":56,"value":147},{"type":45,"tag":131,"props":7674,"children":7675},{"style":282},[7676],{"type":56,"value":7677}," maxJsTimeoutMs",{"type":45,"tag":131,"props":7679,"children":7680},{"style":144},[7681],{"type":56,"value":290},{"type":45,"tag":131,"props":7683,"children":7684},{"style":6413},[7685],{"type":56,"value":7686}," 30_000",{"type":45,"tag":131,"props":7688,"children":7689},{"style":144},[7690],{"type":56,"value":1349},{"type":45,"tag":131,"props":7692,"children":7693},{"class":133,"line":1725},[7694,7698,7702],{"type":45,"tag":131,"props":7695,"children":7696},{"style":144},[7697],{"type":56,"value":459},{"type":45,"tag":131,"props":7699,"children":7700},{"style":150},[7701],{"type":56,"value":428},{"type":45,"tag":131,"props":7703,"children":7704},{"style":144},[7705],{"type":56,"value":184},{"type":45,"tag":131,"props":7707,"children":7708},{"class":133,"line":1751},[7709],{"type":45,"tag":131,"props":7710,"children":7711},{"emptyLinePlaceholder":232},[7712],{"type":56,"value":235},{"type":45,"tag":131,"props":7714,"children":7715},{"class":133,"line":1768},[7716],{"type":45,"tag":131,"props":7717,"children":7718},{"style":392},[7719],{"type":56,"value":7720},"\u002F\u002F 1. JS API\n",{"type":45,"tag":131,"props":7722,"children":7723},{"class":133,"line":1798},[7724,7728,7733,7737,7741,7746,7750,7755,7759,7764],{"type":45,"tag":131,"props":7725,"children":7726},{"style":242},[7727],{"type":56,"value":245},{"type":45,"tag":131,"props":7729,"children":7730},{"style":150},[7731],{"type":56,"value":7732}," r1 ",{"type":45,"tag":131,"props":7734,"children":7735},{"style":144},[7736],{"type":56,"value":255},{"type":45,"tag":131,"props":7738,"children":7739},{"style":138},[7740],{"type":56,"value":260},{"type":45,"tag":131,"props":7742,"children":7743},{"style":150},[7744],{"type":56,"value":7745}," bash",{"type":45,"tag":131,"props":7747,"children":7748},{"style":144},[7749],{"type":56,"value":532},{"type":45,"tag":131,"props":7751,"children":7752},{"style":263},[7753],{"type":56,"value":7754},"exec",{"type":45,"tag":131,"props":7756,"children":7757},{"style":150},[7758],{"type":56,"value":270},{"type":45,"tag":131,"props":7760,"children":7761},{"style":144},[7762],{"type":56,"value":7763},"`",{"type":45,"tag":131,"props":7765,"children":7766},{"style":171},[7767],{"type":56,"value":7768},"js-exec -c '\n",{"type":45,"tag":131,"props":7770,"children":7771},{"class":133,"line":1855},[7772],{"type":45,"tag":131,"props":7773,"children":7774},{"style":171},[7775],{"type":56,"value":7776},"  try {\n",{"type":45,"tag":131,"props":7778,"children":7779},{"class":133,"line":1864},[7780],{"type":45,"tag":131,"props":7781,"children":7782},{"style":171},[7783],{"type":56,"value":7784},"    const r = await tools.math.add({ a: 2, b: 3 });\n",{"type":45,"tag":131,"props":7786,"children":7787},{"class":133,"line":1873},[7788],{"type":45,"tag":131,"props":7789,"children":7790},{"style":171},[7791],{"type":56,"value":7792},"    console.log(\"sum=\" + r.sum);\n",{"type":45,"tag":131,"props":7794,"children":7795},{"class":133,"line":1882},[7796],{"type":45,"tag":131,"props":7797,"children":7798},{"style":171},[7799],{"type":56,"value":7800},"  } catch (e) {\n",{"type":45,"tag":131,"props":7802,"children":7803},{"class":133,"line":1891},[7804],{"type":45,"tag":131,"props":7805,"children":7806},{"style":171},[7807],{"type":56,"value":7808},"    console.error(\"tool failed:\", e.message);\n",{"type":45,"tag":131,"props":7810,"children":7811},{"class":133,"line":1956},[7812],{"type":45,"tag":131,"props":7813,"children":7814},{"style":171},[7815],{"type":56,"value":7816},"  }\n",{"type":45,"tag":131,"props":7818,"children":7819},{"class":133,"line":1964},[7820,7825,7829,7833],{"type":45,"tag":131,"props":7821,"children":7822},{"style":171},[7823],{"type":56,"value":7824},"'",{"type":45,"tag":131,"props":7826,"children":7827},{"style":144},[7828],{"type":56,"value":7763},{"type":45,"tag":131,"props":7830,"children":7831},{"style":150},[7832],{"type":56,"value":428},{"type":45,"tag":131,"props":7834,"children":7835},{"style":144},[7836],{"type":56,"value":184},{"type":45,"tag":131,"props":7838,"children":7839},{"class":133,"line":1972},[7840,7844,7848,7853,7857,7862,7867,7871,7876],{"type":45,"tag":131,"props":7841,"children":7842},{"style":150},[7843],{"type":56,"value":1024},{"type":45,"tag":131,"props":7845,"children":7846},{"style":144},[7847],{"type":56,"value":532},{"type":45,"tag":131,"props":7849,"children":7850},{"style":150},[7851],{"type":56,"value":7852},"stdout",{"type":45,"tag":131,"props":7854,"children":7855},{"style":144},[7856],{"type":56,"value":532},{"type":45,"tag":131,"props":7858,"children":7859},{"style":263},[7860],{"type":56,"value":7861},"write",{"type":45,"tag":131,"props":7863,"children":7864},{"style":150},[7865],{"type":56,"value":7866},"(r1",{"type":45,"tag":131,"props":7868,"children":7869},{"style":144},[7870],{"type":56,"value":532},{"type":45,"tag":131,"props":7872,"children":7873},{"style":150},[7874],{"type":56,"value":7875},"stdout)",{"type":45,"tag":131,"props":7877,"children":7878},{"style":144},[7879],{"type":56,"value":184},{"type":45,"tag":131,"props":7881,"children":7882},{"class":133,"line":1997},[7883,7887,7892,7896,7901,7905,7910,7914,7918,7922,7926,7931],{"type":45,"tag":131,"props":7884,"children":7885},{"style":138},[7886],{"type":56,"value":3481},{"type":45,"tag":131,"props":7888,"children":7889},{"style":150},[7890],{"type":56,"value":7891}," (r1",{"type":45,"tag":131,"props":7893,"children":7894},{"style":144},[7895],{"type":56,"value":532},{"type":45,"tag":131,"props":7897,"children":7898},{"style":150},[7899],{"type":56,"value":7900},"stderr) process",{"type":45,"tag":131,"props":7902,"children":7903},{"style":144},[7904],{"type":56,"value":532},{"type":45,"tag":131,"props":7906,"children":7907},{"style":150},[7908],{"type":56,"value":7909},"stderr",{"type":45,"tag":131,"props":7911,"children":7912},{"style":144},[7913],{"type":56,"value":532},{"type":45,"tag":131,"props":7915,"children":7916},{"style":263},[7917],{"type":56,"value":7861},{"type":45,"tag":131,"props":7919,"children":7920},{"style":150},[7921],{"type":56,"value":7866},{"type":45,"tag":131,"props":7923,"children":7924},{"style":144},[7925],{"type":56,"value":532},{"type":45,"tag":131,"props":7927,"children":7928},{"style":150},[7929],{"type":56,"value":7930},"stderr)",{"type":45,"tag":131,"props":7932,"children":7933},{"style":144},[7934],{"type":56,"value":184},{"type":45,"tag":131,"props":7936,"children":7937},{"class":133,"line":2013},[7938],{"type":45,"tag":131,"props":7939,"children":7940},{"emptyLinePlaceholder":232},[7941],{"type":56,"value":235},{"type":45,"tag":131,"props":7943,"children":7944},{"class":133,"line":2042},[7945],{"type":45,"tag":131,"props":7946,"children":7947},{"style":392},[7948],{"type":56,"value":7949},"\u002F\u002F 2. Bash CLI — three input modes, all equivalent\n",{"type":45,"tag":131,"props":7951,"children":7952},{"class":133,"line":2058},[7953,7958,7962,7966,7971,7976],{"type":45,"tag":131,"props":7954,"children":7955},{"style":138},[7956],{"type":56,"value":7957},"for",{"type":45,"tag":131,"props":7959,"children":7960},{"style":150},[7961],{"type":56,"value":375},{"type":45,"tag":131,"props":7963,"children":7964},{"style":242},[7965],{"type":56,"value":245},{"type":45,"tag":131,"props":7967,"children":7968},{"style":150},[7969],{"type":56,"value":7970}," cmd ",{"type":45,"tag":131,"props":7972,"children":7973},{"style":144},[7974],{"type":56,"value":7975},"of",{"type":45,"tag":131,"props":7977,"children":7978},{"style":150},[7979],{"type":56,"value":1451},{"type":45,"tag":131,"props":7981,"children":7982},{"class":133,"line":2175},[7983,7988,7993,7997],{"type":45,"tag":131,"props":7984,"children":7985},{"style":144},[7986],{"type":56,"value":7987},"  \"",{"type":45,"tag":131,"props":7989,"children":7990},{"style":171},[7991],{"type":56,"value":7992},"math add a=2 b=3",{"type":45,"tag":131,"props":7994,"children":7995},{"style":144},[7996],{"type":56,"value":179},{"type":45,"tag":131,"props":7998,"children":7999},{"style":144},[8000],{"type":56,"value":352},{"type":45,"tag":131,"props":8002,"children":8003},{"class":133,"line":2187},[8004,8008,8013,8017],{"type":45,"tag":131,"props":8005,"children":8006},{"style":144},[8007],{"type":56,"value":7987},{"type":45,"tag":131,"props":8009,"children":8010},{"style":171},[8011],{"type":56,"value":8012},"math add --a 2 --b 3",{"type":45,"tag":131,"props":8014,"children":8015},{"style":144},[8016],{"type":56,"value":179},{"type":45,"tag":131,"props":8018,"children":8019},{"style":144},[8020],{"type":56,"value":352},{"type":45,"tag":131,"props":8022,"children":8023},{"class":133,"line":2251},[8024,8029,8034,8038],{"type":45,"tag":131,"props":8025,"children":8026},{"style":144},[8027],{"type":56,"value":8028},"  `",{"type":45,"tag":131,"props":8030,"children":8031},{"style":171},[8032],{"type":56,"value":8033},"echo '{\"a\":2,\"b\":3}' | math add",{"type":45,"tag":131,"props":8035,"children":8036},{"style":144},[8037],{"type":56,"value":7763},{"type":45,"tag":131,"props":8039,"children":8040},{"style":144},[8041],{"type":56,"value":352},{"type":45,"tag":131,"props":8043,"children":8044},{"class":133,"line":2259},[8045,8050],{"type":45,"tag":131,"props":8046,"children":8047},{"style":150},[8048],{"type":56,"value":8049},"]) ",{"type":45,"tag":131,"props":8051,"children":8052},{"style":144},[8053],{"type":56,"value":275},{"type":45,"tag":131,"props":8055,"children":8056},{"class":133,"line":2267},[8057,8062,8066,8071,8075,8079,8083,8087,8091,8096,8100],{"type":45,"tag":131,"props":8058,"children":8059},{"style":242},[8060],{"type":56,"value":8061},"  const",{"type":45,"tag":131,"props":8063,"children":8064},{"style":150},[8065],{"type":56,"value":3505},{"type":45,"tag":131,"props":8067,"children":8068},{"style":144},[8069],{"type":56,"value":8070}," =",{"type":45,"tag":131,"props":8072,"children":8073},{"style":138},[8074],{"type":56,"value":260},{"type":45,"tag":131,"props":8076,"children":8077},{"style":150},[8078],{"type":56,"value":7745},{"type":45,"tag":131,"props":8080,"children":8081},{"style":144},[8082],{"type":56,"value":532},{"type":45,"tag":131,"props":8084,"children":8085},{"style":263},[8086],{"type":56,"value":7754},{"type":45,"tag":131,"props":8088,"children":8089},{"style":282},[8090],{"type":56,"value":270},{"type":45,"tag":131,"props":8092,"children":8093},{"style":150},[8094],{"type":56,"value":8095},"cmd",{"type":45,"tag":131,"props":8097,"children":8098},{"style":282},[8099],{"type":56,"value":428},{"type":45,"tag":131,"props":8101,"children":8102},{"style":144},[8103],{"type":56,"value":184},{"type":45,"tag":131,"props":8105,"children":8106},{"class":133,"line":2275},[8107,8112,8116,8120,8124,8129,8133,8137,8142,8146,8150,8154,8158,8162,8167,8171,8175,8180,8184,8188,8192,8197,8201,8205,8209,8213],{"type":45,"tag":131,"props":8108,"children":8109},{"style":150},[8110],{"type":56,"value":8111},"  console",{"type":45,"tag":131,"props":8113,"children":8114},{"style":144},[8115],{"type":56,"value":532},{"type":45,"tag":131,"props":8117,"children":8118},{"style":263},[8119],{"type":56,"value":3708},{"type":45,"tag":131,"props":8121,"children":8122},{"style":282},[8123],{"type":56,"value":270},{"type":45,"tag":131,"props":8125,"children":8126},{"style":144},[8127],{"type":56,"value":8128},"`${",{"type":45,"tag":131,"props":8130,"children":8131},{"style":150},[8132],{"type":56,"value":8095},{"type":45,"tag":131,"props":8134,"children":8135},{"style":144},[8136],{"type":56,"value":459},{"type":45,"tag":131,"props":8138,"children":8139},{"style":171},[8140],{"type":56,"value":8141},"  →  ",{"type":45,"tag":131,"props":8143,"children":8144},{"style":144},[8145],{"type":56,"value":1019},{"type":45,"tag":131,"props":8147,"children":8148},{"style":150},[8149],{"type":56,"value":3552},{"type":45,"tag":131,"props":8151,"children":8152},{"style":144},[8153],{"type":56,"value":532},{"type":45,"tag":131,"props":8155,"children":8156},{"style":150},[8157],{"type":56,"value":7852},{"type":45,"tag":131,"props":8159,"children":8160},{"style":144},[8161],{"type":56,"value":532},{"type":45,"tag":131,"props":8163,"children":8164},{"style":263},[8165],{"type":56,"value":8166},"trim",{"type":45,"tag":131,"props":8168,"children":8169},{"style":150},[8170],{"type":56,"value":5909},{"type":45,"tag":131,"props":8172,"children":8173},{"style":144},[8174],{"type":56,"value":459},{"type":45,"tag":131,"props":8176,"children":8177},{"style":171},[8178],{"type":56,"value":8179},"  (exit=",{"type":45,"tag":131,"props":8181,"children":8182},{"style":144},[8183],{"type":56,"value":1019},{"type":45,"tag":131,"props":8185,"children":8186},{"style":150},[8187],{"type":56,"value":3552},{"type":45,"tag":131,"props":8189,"children":8190},{"style":144},[8191],{"type":56,"value":532},{"type":45,"tag":131,"props":8193,"children":8194},{"style":150},[8195],{"type":56,"value":8196},"exitCode",{"type":45,"tag":131,"props":8198,"children":8199},{"style":144},[8200],{"type":56,"value":459},{"type":45,"tag":131,"props":8202,"children":8203},{"style":171},[8204],{"type":56,"value":428},{"type":45,"tag":131,"props":8206,"children":8207},{"style":144},[8208],{"type":56,"value":7763},{"type":45,"tag":131,"props":8210,"children":8211},{"style":282},[8212],{"type":56,"value":428},{"type":45,"tag":131,"props":8214,"children":8215},{"style":144},[8216],{"type":56,"value":184},{"type":45,"tag":131,"props":8218,"children":8219},{"class":133,"line":2291},[8220],{"type":45,"tag":131,"props":8221,"children":8222},{"style":144},[8223],{"type":56,"value":3651},{"type":45,"tag":131,"props":8225,"children":8226},{"class":133,"line":2299},[8227],{"type":45,"tag":131,"props":8228,"children":8229},{"emptyLinePlaceholder":232},[8230],{"type":56,"value":235},{"type":45,"tag":131,"props":8232,"children":8233},{"class":133,"line":2331},[8234],{"type":45,"tag":131,"props":8235,"children":8236},{"style":392},[8237],{"type":56,"value":8238},"\u002F\u002F 3. Help text\n",{"type":45,"tag":131,"props":8240,"children":8241},{"class":133,"line":2369},[8242,8246,8250,8254,8258,8262,8267,8271,8275,8279,8283,8287,8291,8296,8300,8304,8308,8312],{"type":45,"tag":131,"props":8243,"children":8244},{"style":150},[8245],{"type":56,"value":1024},{"type":45,"tag":131,"props":8247,"children":8248},{"style":144},[8249],{"type":56,"value":532},{"type":45,"tag":131,"props":8251,"children":8252},{"style":150},[8253],{"type":56,"value":7852},{"type":45,"tag":131,"props":8255,"children":8256},{"style":144},[8257],{"type":56,"value":532},{"type":45,"tag":131,"props":8259,"children":8260},{"style":263},[8261],{"type":56,"value":7861},{"type":45,"tag":131,"props":8263,"children":8264},{"style":150},[8265],{"type":56,"value":8266},"((",{"type":45,"tag":131,"props":8268,"children":8269},{"style":138},[8270],{"type":56,"value":830},{"type":45,"tag":131,"props":8272,"children":8273},{"style":150},[8274],{"type":56,"value":7745},{"type":45,"tag":131,"props":8276,"children":8277},{"style":144},[8278],{"type":56,"value":532},{"type":45,"tag":131,"props":8280,"children":8281},{"style":263},[8282],{"type":56,"value":7754},{"type":45,"tag":131,"props":8284,"children":8285},{"style":150},[8286],{"type":56,"value":270},{"type":45,"tag":131,"props":8288,"children":8289},{"style":144},[8290],{"type":56,"value":179},{"type":45,"tag":131,"props":8292,"children":8293},{"style":171},[8294],{"type":56,"value":8295},"math --help",{"type":45,"tag":131,"props":8297,"children":8298},{"style":144},[8299],{"type":56,"value":179},{"type":45,"tag":131,"props":8301,"children":8302},{"style":150},[8303],{"type":56,"value":3639},{"type":45,"tag":131,"props":8305,"children":8306},{"style":144},[8307],{"type":56,"value":532},{"type":45,"tag":131,"props":8309,"children":8310},{"style":150},[8311],{"type":56,"value":7875},{"type":45,"tag":131,"props":8313,"children":8314},{"style":144},[8315],{"type":56,"value":184},{"type":45,"tag":79,"props":8317,"children":8319},{"id":8318},"_8-verification-before-reporting-done",[8320],{"type":56,"value":8321},"§8. Verification before reporting \"done\"",{"type":45,"tag":61,"props":8323,"children":8324},{},[8325],{"type":56,"value":8326},"Run these checks in order. Stop at the first failure.",{"type":45,"tag":8328,"props":8329,"children":8330},"ol",{},[8331,8443,8469,8493,8848],{"type":45,"tag":2725,"props":8332,"children":8333},{},[8334,8339,8341],{"type":45,"tag":2828,"props":8335,"children":8336},{},[8337],{"type":56,"value":8338},"Exec works.",{"type":56,"value":8340}," A simple call returns exit 0 with parseable JSON on stdout:\n",{"type":45,"tag":86,"props":8342,"children":8344},{"className":123,"code":8343,"language":125,"meta":91,"style":91},"const r = await bash.exec(`\u003Cns> \u003Csubcommand> \u003Cargs>`);\nJSON.parse(r.stdout);  \u002F\u002F should not throw\n",[8345],{"type":45,"tag":51,"props":8346,"children":8347},{"__ignoreMap":91},[8348,8404],{"type":45,"tag":131,"props":8349,"children":8350},{"class":133,"line":134},[8351,8355,8359,8363,8367,8371,8375,8379,8383,8387,8392,8396,8400],{"type":45,"tag":131,"props":8352,"children":8353},{"style":242},[8354],{"type":56,"value":245},{"type":45,"tag":131,"props":8356,"children":8357},{"style":150},[8358],{"type":56,"value":3392},{"type":45,"tag":131,"props":8360,"children":8361},{"style":144},[8362],{"type":56,"value":255},{"type":45,"tag":131,"props":8364,"children":8365},{"style":138},[8366],{"type":56,"value":260},{"type":45,"tag":131,"props":8368,"children":8369},{"style":150},[8370],{"type":56,"value":7745},{"type":45,"tag":131,"props":8372,"children":8373},{"style":144},[8374],{"type":56,"value":532},{"type":45,"tag":131,"props":8376,"children":8377},{"style":263},[8378],{"type":56,"value":7754},{"type":45,"tag":131,"props":8380,"children":8381},{"style":150},[8382],{"type":56,"value":270},{"type":45,"tag":131,"props":8384,"children":8385},{"style":144},[8386],{"type":56,"value":7763},{"type":45,"tag":131,"props":8388,"children":8389},{"style":171},[8390],{"type":56,"value":8391},"\u003Cns> \u003Csubcommand> \u003Cargs>",{"type":45,"tag":131,"props":8393,"children":8394},{"style":144},[8395],{"type":56,"value":7763},{"type":45,"tag":131,"props":8397,"children":8398},{"style":150},[8399],{"type":56,"value":428},{"type":45,"tag":131,"props":8401,"children":8402},{"style":144},[8403],{"type":56,"value":184},{"type":45,"tag":131,"props":8405,"children":8406},{"class":133,"line":187},[8407,8412,8416,8421,8426,8430,8434,8438],{"type":45,"tag":131,"props":8408,"children":8409},{"style":150},[8410],{"type":56,"value":8411},"JSON",{"type":45,"tag":131,"props":8413,"children":8414},{"style":144},[8415],{"type":56,"value":532},{"type":45,"tag":131,"props":8417,"children":8418},{"style":263},[8419],{"type":56,"value":8420},"parse",{"type":45,"tag":131,"props":8422,"children":8423},{"style":150},[8424],{"type":56,"value":8425},"(r",{"type":45,"tag":131,"props":8427,"children":8428},{"style":144},[8429],{"type":56,"value":532},{"type":45,"tag":131,"props":8431,"children":8432},{"style":150},[8433],{"type":56,"value":7875},{"type":45,"tag":131,"props":8435,"children":8436},{"style":144},[8437],{"type":56,"value":7408},{"type":45,"tag":131,"props":8439,"children":8440},{"style":392},[8441],{"type":56,"value":8442},"  \u002F\u002F should not throw\n",{"type":45,"tag":2725,"props":8444,"children":8445},{},[8446,8451,8453,8459,8461,8467],{"type":45,"tag":2828,"props":8447,"children":8448},{},[8449],{"type":56,"value":8450},"Wrong path errors clearly.",{"type":56,"value":8452}," ",{"type":45,"tag":51,"props":8454,"children":8456},{"className":8455},[],[8457],{"type":56,"value":8458},"await tools.ns.nope({})",{"type":56,"value":8460}," throws with\n",{"type":45,"tag":51,"props":8462,"children":8464},{"className":8463},[],[8465],{"type":56,"value":8466},"Unknown tool",{"type":56,"value":8468}," in the message — confirms dispatch is wired.",{"type":45,"tag":2725,"props":8470,"children":8471},{},[8472,8477,8478,8484,8486,8491],{"type":45,"tag":2828,"props":8473,"children":8474},{},[8475],{"type":56,"value":8476},"Help reflects discovery.",{"type":56,"value":8452},{"type":45,"tag":51,"props":8479,"children":8481},{"className":8480},[],[8482],{"type":56,"value":8483},"bash.exec(\"\u003Cns> --help\")",{"type":56,"value":8485}," lists every tool\nthe user expected. If a tool's missing, the source registration didn't pick\nit up (most often: missing ",{"type":45,"tag":51,"props":8487,"children":8489},{"className":8488},[],[8490],{"type":56,"value":2844},{"type":56,"value":8492}," for OpenAPI; subscription field\nfor GraphQL; capability not advertised for MCP).",{"type":45,"tag":2725,"props":8494,"children":8495},{},[8496,8508],{"type":45,"tag":2828,"props":8497,"children":8498},{},[8499,8501,8506],{"type":56,"value":8500},"Inspect via SDK handle (when ",{"type":45,"tag":51,"props":8502,"children":8504},{"className":8503},[],[8505],{"type":56,"value":2872},{"type":56,"value":8507}," was used):",{"type":45,"tag":86,"props":8509,"children":8511},{"className":123,"code":8510,"language":125,"meta":91,"style":91},"\u002F\u002F List everything\nconst all = await executor.sdk!.tools.list();\nconsole.log(all.map(t => t.id));\n\n\u002F\u002F Filter by source\nconst ghOnly = await executor.sdk!.tools.list({ sourceId: \"github\" });\n\n\u002F\u002F Search descriptions\u002Fnames\nconst writes = await executor.sdk!.tools.list({ query: \"create\" });\n",[8512],{"type":45,"tag":51,"props":8513,"children":8514},{"__ignoreMap":91},[8515,8523,8581,8640,8647,8655,8744,8751,8759],{"type":45,"tag":131,"props":8516,"children":8517},{"class":133,"line":134},[8518],{"type":45,"tag":131,"props":8519,"children":8520},{"style":392},[8521],{"type":56,"value":8522},"\u002F\u002F List everything\n",{"type":45,"tag":131,"props":8524,"children":8525},{"class":133,"line":187},[8526,8530,8535,8539,8543,8547,8551,8555,8560,8564,8568,8573,8577],{"type":45,"tag":131,"props":8527,"children":8528},{"style":242},[8529],{"type":56,"value":245},{"type":45,"tag":131,"props":8531,"children":8532},{"style":150},[8533],{"type":56,"value":8534}," all ",{"type":45,"tag":131,"props":8536,"children":8537},{"style":144},[8538],{"type":56,"value":255},{"type":45,"tag":131,"props":8540,"children":8541},{"style":138},[8542],{"type":56,"value":260},{"type":45,"tag":131,"props":8544,"children":8545},{"style":150},[8546],{"type":56,"value":527},{"type":45,"tag":131,"props":8548,"children":8549},{"style":144},[8550],{"type":56,"value":532},{"type":45,"tag":131,"props":8552,"children":8553},{"style":150},[8554],{"type":56,"value":2354},{"type":45,"tag":131,"props":8556,"children":8557},{"style":144},[8558],{"type":56,"value":8559},"!.",{"type":45,"tag":131,"props":8561,"children":8562},{"style":150},[8563],{"type":56,"value":5177},{"type":45,"tag":131,"props":8565,"children":8566},{"style":144},[8567],{"type":56,"value":532},{"type":45,"tag":131,"props":8569,"children":8570},{"style":263},[8571],{"type":56,"value":8572},"list",{"type":45,"tag":131,"props":8574,"children":8575},{"style":150},[8576],{"type":56,"value":5909},{"type":45,"tag":131,"props":8578,"children":8579},{"style":144},[8580],{"type":56,"value":184},{"type":45,"tag":131,"props":8582,"children":8583},{"class":133,"line":228},[8584,8588,8592,8596,8601,8605,8609,8613,8618,8622,8627,8631,8636],{"type":45,"tag":131,"props":8585,"children":8586},{"style":150},[8587],{"type":56,"value":3699},{"type":45,"tag":131,"props":8589,"children":8590},{"style":144},[8591],{"type":56,"value":532},{"type":45,"tag":131,"props":8593,"children":8594},{"style":263},[8595],{"type":56,"value":3708},{"type":45,"tag":131,"props":8597,"children":8598},{"style":150},[8599],{"type":56,"value":8600},"(all",{"type":45,"tag":131,"props":8602,"children":8603},{"style":144},[8604],{"type":56,"value":532},{"type":45,"tag":131,"props":8606,"children":8607},{"style":263},[8608],{"type":56,"value":3569},{"type":45,"tag":131,"props":8610,"children":8611},{"style":150},[8612],{"type":56,"value":270},{"type":45,"tag":131,"props":8614,"children":8615},{"style":378},[8616],{"type":56,"value":8617},"t",{"type":45,"tag":131,"props":8619,"children":8620},{"style":242},[8621],{"type":56,"value":405},{"type":45,"tag":131,"props":8623,"children":8624},{"style":150},[8625],{"type":56,"value":8626}," t",{"type":45,"tag":131,"props":8628,"children":8629},{"style":144},[8630],{"type":56,"value":532},{"type":45,"tag":131,"props":8632,"children":8633},{"style":150},[8634],{"type":56,"value":8635},"id))",{"type":45,"tag":131,"props":8637,"children":8638},{"style":144},[8639],{"type":56,"value":184},{"type":45,"tag":131,"props":8641,"children":8642},{"class":133,"line":238},[8643],{"type":45,"tag":131,"props":8644,"children":8645},{"emptyLinePlaceholder":232},[8646],{"type":56,"value":235},{"type":45,"tag":131,"props":8648,"children":8649},{"class":133,"line":278},[8650],{"type":45,"tag":131,"props":8651,"children":8652},{"style":392},[8653],{"type":56,"value":8654},"\u002F\u002F Filter by source\n",{"type":45,"tag":131,"props":8656,"children":8657},{"class":133,"line":298},[8658,8662,8667,8671,8675,8679,8683,8687,8691,8695,8699,8703,8707,8711,8716,8720,8724,8728,8732,8736,8740],{"type":45,"tag":131,"props":8659,"children":8660},{"style":242},[8661],{"type":56,"value":245},{"type":45,"tag":131,"props":8663,"children":8664},{"style":150},[8665],{"type":56,"value":8666}," ghOnly ",{"type":45,"tag":131,"props":8668,"children":8669},{"style":144},[8670],{"type":56,"value":255},{"type":45,"tag":131,"props":8672,"children":8673},{"style":138},[8674],{"type":56,"value":260},{"type":45,"tag":131,"props":8676,"children":8677},{"style":150},[8678],{"type":56,"value":527},{"type":45,"tag":131,"props":8680,"children":8681},{"style":144},[8682],{"type":56,"value":532},{"type":45,"tag":131,"props":8684,"children":8685},{"style":150},[8686],{"type":56,"value":2354},{"type":45,"tag":131,"props":8688,"children":8689},{"style":144},[8690],{"type":56,"value":8559},{"type":45,"tag":131,"props":8692,"children":8693},{"style":150},[8694],{"type":56,"value":5177},{"type":45,"tag":131,"props":8696,"children":8697},{"style":144},[8698],{"type":56,"value":532},{"type":45,"tag":131,"props":8700,"children":8701},{"style":263},[8702],{"type":56,"value":8572},{"type":45,"tag":131,"props":8704,"children":8705},{"style":150},[8706],{"type":56,"value":270},{"type":45,"tag":131,"props":8708,"children":8709},{"style":144},[8710],{"type":56,"value":414},{"type":45,"tag":131,"props":8712,"children":8713},{"style":282},[8714],{"type":56,"value":8715}," sourceId",{"type":45,"tag":131,"props":8717,"children":8718},{"style":144},[8719],{"type":56,"value":290},{"type":45,"tag":131,"props":8721,"children":8722},{"style":144},[8723],{"type":56,"value":168},{"type":45,"tag":131,"props":8725,"children":8726},{"style":171},[8727],{"type":56,"value":968},{"type":45,"tag":131,"props":8729,"children":8730},{"style":144},[8731],{"type":56,"value":179},{"type":45,"tag":131,"props":8733,"children":8734},{"style":144},[8735],{"type":56,"value":158},{"type":45,"tag":131,"props":8737,"children":8738},{"style":150},[8739],{"type":56,"value":428},{"type":45,"tag":131,"props":8741,"children":8742},{"style":144},[8743],{"type":56,"value":184},{"type":45,"tag":131,"props":8745,"children":8746},{"class":133,"line":324},[8747],{"type":45,"tag":131,"props":8748,"children":8749},{"emptyLinePlaceholder":232},[8750],{"type":56,"value":235},{"type":45,"tag":131,"props":8752,"children":8753},{"class":133,"line":355},[8754],{"type":45,"tag":131,"props":8755,"children":8756},{"style":392},[8757],{"type":56,"value":8758},"\u002F\u002F Search descriptions\u002Fnames\n",{"type":45,"tag":131,"props":8760,"children":8761},{"class":133,"line":435},[8762,8766,8771,8775,8779,8783,8787,8791,8795,8799,8803,8807,8811,8815,8819,8823,8827,8832,8836,8840,8844],{"type":45,"tag":131,"props":8763,"children":8764},{"style":242},[8765],{"type":56,"value":245},{"type":45,"tag":131,"props":8767,"children":8768},{"style":150},[8769],{"type":56,"value":8770}," writes ",{"type":45,"tag":131,"props":8772,"children":8773},{"style":144},[8774],{"type":56,"value":255},{"type":45,"tag":131,"props":8776,"children":8777},{"style":138},[8778],{"type":56,"value":260},{"type":45,"tag":131,"props":8780,"children":8781},{"style":150},[8782],{"type":56,"value":527},{"type":45,"tag":131,"props":8784,"children":8785},{"style":144},[8786],{"type":56,"value":532},{"type":45,"tag":131,"props":8788,"children":8789},{"style":150},[8790],{"type":56,"value":2354},{"type":45,"tag":131,"props":8792,"children":8793},{"style":144},[8794],{"type":56,"value":8559},{"type":45,"tag":131,"props":8796,"children":8797},{"style":150},[8798],{"type":56,"value":5177},{"type":45,"tag":131,"props":8800,"children":8801},{"style":144},[8802],{"type":56,"value":532},{"type":45,"tag":131,"props":8804,"children":8805},{"style":263},[8806],{"type":56,"value":8572},{"type":45,"tag":131,"props":8808,"children":8809},{"style":150},[8810],{"type":56,"value":270},{"type":45,"tag":131,"props":8812,"children":8813},{"style":144},[8814],{"type":56,"value":414},{"type":45,"tag":131,"props":8816,"children":8817},{"style":282},[8818],{"type":56,"value":6289},{"type":45,"tag":131,"props":8820,"children":8821},{"style":144},[8822],{"type":56,"value":290},{"type":45,"tag":131,"props":8824,"children":8825},{"style":144},[8826],{"type":56,"value":168},{"type":45,"tag":131,"props":8828,"children":8829},{"style":171},[8830],{"type":56,"value":8831},"create",{"type":45,"tag":131,"props":8833,"children":8834},{"style":144},[8835],{"type":56,"value":179},{"type":45,"tag":131,"props":8837,"children":8838},{"style":144},[8839],{"type":56,"value":158},{"type":45,"tag":131,"props":8841,"children":8842},{"style":150},[8843],{"type":56,"value":428},{"type":45,"tag":131,"props":8845,"children":8846},{"style":144},[8847],{"type":56,"value":184},{"type":45,"tag":2725,"props":8849,"children":8850},{},[8851,8856,8858,8864,8866,8871],{"type":45,"tag":2828,"props":8852,"children":8853},{},[8854],{"type":56,"value":8855},"Approval gates work.",{"type":56,"value":8857}," If you wired ",{"type":45,"tag":51,"props":8859,"children":8861},{"className":8860},[],[8862],{"type":56,"value":8863},"onToolApproval",{"type":56,"value":8865},", deny one path and\nconfirm the call throws inside ",{"type":45,"tag":51,"props":8867,"children":8869},{"className":8868},[],[8870],{"type":56,"value":6724},{"type":56,"value":8872}," rather than silently succeeding.",{"type":45,"tag":79,"props":8874,"children":8876},{"id":8875},"_9-anti-patterns",[8877],{"type":56,"value":8878},"§9. Anti-patterns",{"type":45,"tag":2721,"props":8880,"children":8881},{},[8882,8919,8943,8975,9006,9031],{"type":45,"tag":2725,"props":8883,"children":8884},{},[8885,8897,8898,8903,8905,8911,8912,8918],{"type":45,"tag":2828,"props":8886,"children":8887},{},[8888,8890,8896],{"type":56,"value":8889},"Don't pass parsed objects to ",{"type":45,"tag":51,"props":8891,"children":8893},{"className":8892},[],[8894],{"type":56,"value":8895},"kind: \"openapi\"",{"type":56,"value":532},{"type":56,"value":8452},{"type":45,"tag":51,"props":8899,"children":8901},{"className":8900},[],[8902],{"type":56,"value":650},{"type":56,"value":8904}," is a string\n(JSON or YAML text). Use ",{"type":45,"tag":51,"props":8906,"children":8908},{"className":8907},[],[8909],{"type":56,"value":8910},"JSON.stringify(...)",{"type":56,"value":2890},{"type":45,"tag":51,"props":8913,"children":8915},{"className":8914},[],[8916],{"type":56,"value":8917},"fs.readFileSync(path, \"utf8\")",{"type":56,"value":532},{"type":45,"tag":2725,"props":8920,"children":8921},{},[8922,8934,8935,8941],{"type":45,"tag":2828,"props":8923,"children":8924},{},[8925,8927,8932],{"type":56,"value":8926},"Don't put tool logic inside the ",{"type":45,"tag":51,"props":8928,"children":8930},{"className":8929},[],[8931],{"type":56,"value":6724},{"type":56,"value":8933}," script.",{"type":56,"value":8452},{"type":45,"tag":51,"props":8936,"children":8938},{"className":8937},[],[8939],{"type":56,"value":8940},"execute",{"type":56,"value":8942}," runs on the\nhost; the script just calls it. Putting fetches or DB calls in the script\ndefeats the sandbox.",{"type":45,"tag":2725,"props":8944,"children":8945},{},[8946,8958,8960,8966,8968,8973],{"type":45,"tag":2828,"props":8947,"children":8948},{},[8949,8951,8956],{"type":56,"value":8950},"Don't rely on ",{"type":45,"tag":51,"props":8952,"children":8954},{"className":8953},[],[8955],{"type":56,"value":830},{"type":56,"value":8957}," doing real async work.",{"type":56,"value":8959}," Tool calls are synchronous\nvia ",{"type":45,"tag":51,"props":8961,"children":8963},{"className":8962},[],[8964],{"type":56,"value":8965},"Atomics.wait",{"type":56,"value":8967}," from the script's perspective; ",{"type":45,"tag":51,"props":8969,"children":8971},{"className":8970},[],[8972],{"type":56,"value":830},{"type":56,"value":8974}," is for portability\nwith other runtimes.",{"type":45,"tag":2725,"props":8976,"children":8977},{},[8978,8990,8992,8998,9000,9005],{"type":45,"tag":2828,"props":8979,"children":8980},{},[8981,8983,8988],{"type":56,"value":8982},"Don't expose host-FS or shell tools without an ",{"type":45,"tag":51,"props":8984,"children":8986},{"className":8985},[],[8987],{"type":56,"value":8863},{"type":56,"value":8989}," gate.",{"type":56,"value":8991},"\nThe default ",{"type":45,"tag":51,"props":8993,"children":8995},{"className":8994},[],[8996],{"type":56,"value":8997},"\"allow-all\"",{"type":56,"value":8999}," is fine for read-only or pure-compute tools; for\nanything destructive, gate by ",{"type":45,"tag":51,"props":9001,"children":9003},{"className":9002},[],[9004],{"type":56,"value":4739},{"type":56,"value":532},{"type":45,"tag":2725,"props":9007,"children":9008},{},[9009,9014,9016,9022,9024,9029],{"type":45,"tag":2828,"props":9010,"children":9011},{},[9012],{"type":56,"value":9013},"Don't reuse a namespace across sources.",{"type":56,"value":9015}," Two ",{"type":45,"tag":51,"props":9017,"children":9019},{"className":9018},[],[9020],{"type":56,"value":9021},"sources.add",{"type":56,"value":9023}," calls with the\nsame ",{"type":45,"tag":51,"props":9025,"children":9027},{"className":9026},[],[9028],{"type":56,"value":637},{"type":56,"value":9030}," will collide. Use distinct names per source.",{"type":45,"tag":2725,"props":9032,"children":9033},{},[9034,9039,9040,9045,9047,9052,9053,9059,9060,9066],{"type":45,"tag":2828,"props":9035,"children":9036},{},[9037],{"type":56,"value":9038},"Don't skip installing the plugin package.",{"type":56,"value":8452},{"type":45,"tag":51,"props":9041,"children":9043},{"className":9042},[],[9044],{"type":56,"value":2888},{"type":56,"value":9046}," alone is not\nenough — each source kind requires its plugin (",{"type":45,"tag":51,"props":9048,"children":9050},{"className":9049},[],[9051],{"type":56,"value":2880},{"type":56,"value":352},{"type":45,"tag":51,"props":9054,"children":9056},{"className":9055},[],[9057],{"type":56,"value":9058},"…-graphql",{"type":56,"value":3746},{"type":45,"tag":51,"props":9061,"children":9063},{"className":9062},[],[9064],{"type":56,"value":9065},"…-mcp",{"type":56,"value":9067},").",{"type":45,"tag":79,"props":9069,"children":9071},{"id":9070},"_10-cross-references",[9072],{"type":56,"value":9073},"§10. Cross-references",{"type":45,"tag":2721,"props":9075,"children":9076},{},[9077,9093,9122],{"type":45,"tag":2725,"props":9078,"children":9079},{},[9080,9091],{"type":45,"tag":9081,"props":9082,"children":9084},"a",{"href":9083},".\u002FREADME.md",[9085],{"type":45,"tag":51,"props":9086,"children":9088},{"className":9087},[],[9089],{"type":56,"value":9090},"README.md",{"type":56,"value":9092}," — conceptual overview, configuration reference",{"type":45,"tag":2725,"props":9094,"children":9095},{},[9096,9106,9108,9114,9115,9121],{"type":45,"tag":9081,"props":9097,"children":9099},{"href":9098},"..\u002F..\u002Fexamples\u002Fexecutor-tools\u002F",[9100],{"type":45,"tag":51,"props":9101,"children":9103},{"className":9102},[],[9104],{"type":56,"value":9105},"examples\u002Fexecutor-tools\u002F",{"type":56,"value":9107}," — runnable\nend-to-end examples (",{"type":45,"tag":51,"props":9109,"children":9111},{"className":9110},[],[9112],{"type":56,"value":9113},"inline-tools.ts",{"type":56,"value":3746},{"type":45,"tag":51,"props":9116,"children":9118},{"className":9117},[],[9119],{"type":56,"value":9120},"multi-turn-discovery.ts",{"type":56,"value":428},{"type":45,"tag":2725,"props":9123,"children":9124},{},[9125,9136],{"type":45,"tag":9081,"props":9126,"children":9130},{"href":9127,"rel":9128},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@executor-js\u002Fsdk",[9129],"nofollow",[9131],{"type":45,"tag":51,"props":9132,"children":9134},{"className":9133},[],[9135],{"type":56,"value":2888},{"type":56,"value":9137}," —\nupstream SDK whose plugins drive discovery",{"type":45,"tag":9139,"props":9140,"children":9141},"style",{},[9142],{"type":56,"value":9143},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":9145,"total":9310},[9146,9162,9174,9186,9199,9216,9228,9241,9254,9267,9277,9295],{"slug":9147,"name":9147,"fn":9148,"description":9149,"org":9150,"tags":9151,"stars":9159,"repoUrl":9160,"updatedAt":9161},"agent-browser","automate browser interactions for AI agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9152,9155,9156],{"name":9153,"slug":9154,"type":15},"Agents","agents",{"name":17,"slug":18,"type":15},{"name":9157,"slug":9158,"type":15},"Browser Automation","browser-automation",38346,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser","2026-07-20T05:55:17.314329",{"slug":9163,"name":9163,"fn":9164,"description":9165,"org":9166,"tags":9167,"stars":9159,"repoUrl":9160,"updatedAt":9173},"agentcore","run browser automation on AWS Bedrock","Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include \"use agentcore\", \"run on AWS\", \"cloud browser with AWS\", \"bedrock browser\", \"agentcore session\", or any task requiring AWS-hosted browser automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9168,9169,9172],{"name":17,"slug":18,"type":15},{"name":9170,"slug":9171,"type":15},"AWS","aws",{"name":9157,"slug":9158,"type":15},"2026-07-17T06:08:33.665276",{"slug":9175,"name":9175,"fn":9176,"description":9177,"org":9178,"tags":9179,"stars":9159,"repoUrl":9160,"updatedAt":9185},"core","navigate and interact with web pages","Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9180,9181,9182],{"name":9153,"slug":9154,"type":15},{"name":9157,"slug":9158,"type":15},{"name":9183,"slug":9184,"type":15},"Navigation","navigation","2026-07-26T05:47:42.378419",{"slug":9187,"name":9187,"fn":9188,"description":9189,"org":9190,"tags":9191,"stars":9159,"repoUrl":9160,"updatedAt":9198},"derive-client","reverse engineer internal APIs from browser traffic","Reverse-engineer a website's internal API by recording browser traffic into a HAR file, then generate a standalone client or CLI that calls the endpoints directly, with no browser needed after the first recording. Use when asked to \"derive a client\", \"build a CLI for \u003Csite>\", \"reverse engineer this site's API\", \"record network requests\", \"turn this site into an API\", or when the same site will be automated repeatedly and direct HTTP calls would beat driving the browser every time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9192,9193,9194,9195],{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"name":9157,"slug":9158,"type":15},{"name":9196,"slug":9197,"type":15},"Web Scraping","web-scraping","2026-07-20T06:24:11.928835",{"slug":9200,"name":9200,"fn":9201,"description":9202,"org":9203,"tags":9204,"stars":9159,"repoUrl":9160,"updatedAt":9215},"dogfood","perform exploratory testing on web applications","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9205,9206,9209,9212],{"name":9157,"slug":9158,"type":15},{"name":9207,"slug":9208,"type":15},"Debugging","debugging",{"name":9210,"slug":9211,"type":15},"QA","qa",{"name":9213,"slug":9214,"type":15},"Testing","testing","2026-07-17T06:07:41.421482",{"slug":9217,"name":9217,"fn":9218,"description":9219,"org":9220,"tags":9221,"stars":9159,"repoUrl":9160,"updatedAt":9227},"electron","automate Electron desktop applications","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9222,9223,9224],{"name":9153,"slug":9154,"type":15},{"name":9157,"slug":9158,"type":15},{"name":9225,"slug":9226,"type":15},"Desktop","desktop","2026-07-17T06:08:28.007783",{"slug":9229,"name":9229,"fn":9230,"description":9231,"org":9232,"tags":9233,"stars":9159,"repoUrl":9160,"updatedAt":9240},"slack","interact with Slack workspaces","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9234,9235,9238],{"name":9157,"slug":9158,"type":15},{"name":9236,"slug":9237,"type":15},"Messaging","messaging",{"name":9239,"slug":9229,"type":15},"Slack","2026-07-17T06:08:27.679015",{"slug":9242,"name":9242,"fn":9243,"description":9244,"org":9245,"tags":9246,"stars":9159,"repoUrl":9160,"updatedAt":9253},"vercel-sandbox","run browser automation in Vercel Sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9247,9248,9249,9250],{"name":17,"slug":18,"type":15},{"name":9157,"slug":9158,"type":15},{"name":9213,"slug":9214,"type":15},{"name":9251,"slug":9252,"type":15},"Vercel","vercel","2026-07-17T06:08:28.349899",{"slug":9255,"name":9255,"fn":9256,"description":9257,"org":9258,"tags":9259,"stars":9264,"repoUrl":9265,"updatedAt":9266},"deploy-to-vercel","deploy applications to Vercel","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9260,9263],{"name":9261,"slug":9262,"type":15},"Deployment","deployment",{"name":9251,"slug":9252,"type":15},28993,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills","2026-07-17T06:08:41.18374",{"slug":9268,"name":9268,"fn":9269,"description":9270,"org":9271,"tags":9272,"stars":9264,"repoUrl":9265,"updatedAt":9276},"vercel-cli-with-tokens","manage Vercel projects via CLI","Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9273,9274,9275],{"name":20,"slug":21,"type":15},{"name":9261,"slug":9262,"type":15},{"name":9251,"slug":9252,"type":15},"2026-07-17T06:08:41.84179",{"slug":9278,"name":9278,"fn":9279,"description":9280,"org":9281,"tags":9282,"stars":9264,"repoUrl":9265,"updatedAt":9294},"vercel-composition-patterns","implement scalable React composition patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9283,9286,9289,9291],{"name":9284,"slug":9285,"type":15},"Best Practices","best-practices",{"name":9287,"slug":9288,"type":15},"Frontend","frontend",{"name":9290,"slug":6494,"type":15},"React",{"name":9292,"slug":9293,"type":15},"UI Components","ui-components","2026-07-17T06:05:40.576913",{"slug":9296,"name":9296,"fn":9297,"description":9298,"org":9299,"tags":9300,"stars":9264,"repoUrl":9265,"updatedAt":9309},"vercel-optimize","optimize Vercel project performance and costs","Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel\u002Fframework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9301,9304,9305,9308],{"name":9302,"slug":9303,"type":15},"Cost Optimization","cost-optimization",{"name":9261,"slug":9262,"type":15},{"name":9306,"slug":9307,"type":15},"Performance","performance",{"name":9251,"slug":9252,"type":15},"2026-07-17T06:04:08.327515",100,{"items":9312,"total":134},[9313],{"slug":4,"name":4,"fn":5,"description":6,"org":9314,"tags":9315,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[9316,9317,9318,9319,9320],{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":26,"slug":27,"type":15}]