{"_id":"@buckeyestudio/toh-agent-tool-presentation","name":"@buckeyestudio/toh-agent-tool-presentation","dist-tags":{"next":"0.1.1-rc.2","latest":"0.1.1-rc.2"},"versions":{"0.1.1-rc.2":{"name":"@buckeyestudio/toh-agent-tool-presentation","description":"Agent-plane presentation selector: composes one agent's tools as Code Mode, native, or both","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/core/agent-tool-presentation"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","author":{"name":"buckeyestudio"},"dependencies":{"@buckeyestudio/schemastery":"^3.18.1"},"peerDependencies":{"@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/toh-tools":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"devDependencies":{"@buckeyestudio/toh-agent":"^0.1.1-rc.2","@buckeyestudio/toh-code-runtime":"^0.1.1-rc.2","@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/toh-scope":"^0.1.1-rc.2","@buckeyestudio/toh-session":"^0.1.1-rc.2","@buckeyestudio/toh-system-prompt":"^0.1.1-rc.2","@buckeyestudio/toh-tools":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"_id":"@buckeyestudio/toh-agent-tool-presentation@0.1.1-rc.2","bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","_integrity":"sha512-PKMUkd5u8W33XFxkeS4u6jicPXI49dA8rVmo9QM1KY/5/1zKsFP3Mvjz4gpNTzMB32ARGRgHUDCJloabAV5UPA==","_resolved":"/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-agent-tool-presentation-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-agent-tool-presentation-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-PKMUkd5u8W33XFxkeS4u6jicPXI49dA8rVmo9QM1KY/5/1zKsFP3Mvjz4gpNTzMB32ARGRgHUDCJloabAV5UPA==","shasum":"ce7b4fb2b44ca82c9b8e1c0fa7b9e95531add86c","tarball":"https://registry.npmjs.org/@buckeyestudio/toh-agent-tool-presentation/-/toh-agent-tool-presentation-0.1.1-rc.2.tgz","fileCount":9,"unpackedSize":15168,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDeCPYXvwhAYVdCP60YYUmn5rogfXUmLDHsagrBDvUtJgIhAIovO/DBr0wgklLU0Ea4Dd22ku1fJmek+VWwHMGdXZao"}]},"_npmUser":{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"},"directories":{},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toh-agent-tool-presentation_0.1.1-rc.2_1787488986024_0.6726329189551072"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T12:43:05.926Z","0.1.1-rc.2":"2026-08-23T12:43:06.168Z","modified":"2026-08-23T12:43:06.314Z"},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"description":"Agent-plane presentation selector: composes one agent's tools as Code Mode, native, or both","homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/core/agent-tool-presentation"},"author":{"name":"buckeyestudio"},"bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"license":"MIT","readme":"# toh-agent-tool-presentation\n\n[English](README.md) | 中文\n\n[agent preset](../../preset/agent-presets/README.zh.md) 用来声明「模型看到的工具是哪一种形态」的那一行：`native`（全部 schema）、`code`（只有 `run_code` 加一份生成的 TypeScript SDK）或 `both`。\n\n## 为什么是一行插件，而不是把注册表搬下来\n\n工具注册表搬不进 preset。它的消费者全在宿主平面——[`toh-agent-loop`](../agent-loop/README.zh.md) 读它的调度器，[`toh-apiproxy`](../../host/apiproxy/README.zh.md) 读它的 presenter 来渲染工具卡，每个工具插件都往里注册——而一个服务只有在**所有**消费者一起下沉时才能下沉。\n\npreset 能拥有的是这份注册表的**呈现方式**。`ctx.tools.presentAs()` 只为正在挂载的那个 agent 声明，于是一个 Code Mode 会话可以和多个 native 会话同进程并存，各自看到各自的清单。[`toh-tools`](../tools/README.zh.md) 那一行上的 `mode` 仍然是默认值，供未作声明的 agent 使用。\n\n## 它做什么\n\n`native` 立即生效。code 类模式则等待 `ctx.codeRuntime`——这是一个宿主平面服务（[`toh-code-runtime-worker-thread`](../../code-runtime/code-runtime-worker-thread/README.zh.md)）：若某个 preset 在未组装运行时的部署上选择 Code Mode，本行就停在 pending，`toh-agent-presets` 会指名此 id 拒绝挂载。另一种做法——先乐观应用——会把失败推迟到该会话的第一次请求，那时操作者对 preset 和组装都已无从下手。\n\n`mode` 是必填而非有默认值：不带这一行的 preset 本来就会拿到部署默认值，省略它等于这一行白组装了。\n\n一个 agent 只声明一次呈现方式。同一份组装里的第二次声明会被拒绝而不是合并：对「模型看到哪种形态」给出两个答案是矛盾，不是覆盖。\n\n## 模型体验\n\n间接生效，取决于它在 `toh-tools` 中选择的投影：`code` 呈现 `run_code`、一份生成的 SDK 段，以及「只有 `run_code` 可被直接调用」这条规则，`native` 呈现每个工具的 schema。该选择同时决定了**什么可以执行**：在 `code` 下，注册表会把模型直呼其他任何工具名解析为 `UNKNOWN_TOOL`，因此这一行正是让「通告面」与「可调用面」对每个被它覆盖的 agent 保持一致的东西（[执行器塌缩 note](../../../.agents/notes/implemented/bug-fix/2026-08-07-code-mode-executor-collapse.zh.md)）。\n\n#### KV Cache effect\n\n没有直接的失效影响；呈现方式在 agent 组装时即固定，因此其请求前缀在该会话的整个生命周期内保持稳定。\n\n## 已知限制与暂缓事项\n\n- **运行时仍在宿主平面** —— preset 可以选择 Code Mode，却无法自带它所需的 TypeScript 运行时；未组装运行时的部署也就无法组装任何 code 模式的 preset。\n","readmeFilename":"README.zh.md","_rev":"1-ddf29aa391e264ae91b9cf0428108005"}