{"_id":"@buckeyestudio/toh-terminal","name":"@buckeyestudio/toh-terminal","dist-tags":{"next":"0.1.1-rc.2","latest":"0.1.1-rc.2"},"versions":{"0.1.1-rc.2":{"name":"@buckeyestudio/toh-terminal","description":"Persistent PTY session seam for the TheOpen Harness — owner-scoped ids, backend registry, interactive sends, reads, signals, and awaited cleanup","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/terminal/terminal"},"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"},"peerDependencies":{"@buckeyestudio/toh-agent":"^0.1.1-rc.2","@buckeyestudio/toh-brand":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1","@buckeyestudio/toh-invariants":"^0.1.1-rc.2"},"devDependencies":{"@buckeyestudio/toh-brand":"^0.1.1-rc.2","@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/toh-agent":"^0.1.1-rc.2","@buckeyestudio/toh-session":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"_id":"@buckeyestudio/toh-terminal@0.1.1-rc.2","bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","_integrity":"sha512-t+ChPcGW+/C6ijcF2pFLU7e3ZYGeHqw+iSvD+xoqfh+9MaI31YcqIWzE2BJZBcMx7kPjKVgHqsI1mKNFHYAATQ==","_resolved":"/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-terminal-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-terminal-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-t+ChPcGW+/C6ijcF2pFLU7e3ZYGeHqw+iSvD+xoqfh+9MaI31YcqIWzE2BJZBcMx7kPjKVgHqsI1mKNFHYAATQ==","shasum":"4f43456bebe0c69ea05d0a5e9ecbd478221ba40f","tarball":"https://registry.npmjs.org/@buckeyestudio/toh-terminal/-/toh-terminal-0.1.1-rc.2.tgz","fileCount":10,"unpackedSize":37113,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDmsOALdHItKYkACZXZICTHJ5Gf0KPq5VTdk8JmOoYr8AiBLoQG3EVtDjmrAwPuMTdyUPf3UhoZS/DhiBPr6hGyYOw=="}]},"_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-terminal_0.1.1-rc.2_1787489544321_0.9085602192892275"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T12:52:24.103Z","0.1.1-rc.2":"2026-08-23T12:52:24.443Z","modified":"2026-08-23T12:52:24.618Z"},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"description":"Persistent PTY session seam for the TheOpen Harness — owner-scoped ids, backend registry, interactive sends, reads, signals, and awaited cleanup","homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/terminal/terminal"},"author":{"name":"buckeyestudio"},"bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"license":"MIT","readme":"# @buckeyestudio/toh-terminal\n\n[English](README.md) | 中文\n\n限定所有者范围的持久 PTY seam。`TerminalSessionService` 注册为 `ctx.terminals`，生成不透明的会话 id，通过具名后端路由创建操作，将每个操作限制在完全相同的活跃 `Agent` 内，并在该 agent（智能体）或服务 dispose（资源释放）时等待后端完全停稳。\n\n## 约定\n\n- 后端注册一个稳定的 `type`，并返回尚未发布的 `TerminalBackendSession`；失败或取消的设置过程必须清理部分资源。若清理失败，则以 `TerminalBackendCleanupError` 拒绝，使注册表能在取消后继续保留该清理失败。\n- spawn 取消会保留调用方提供的确切中止原因。后端设置完成后，服务 dispose 与所有者消失仍分别对应可供机器路由的不同失败。\n- 所有者与服务的 dispose 会通过服务持有的信号中止尚未发布的设置，并等待后端结算和回滚后才返回。\n- 如果回滚关闭失败，或后端报告启动清理失败，dispose 生命周期会以拒绝结束，不会声称已经完全停稳。调用方触发的取消仍收到其确切原因；生命周期触发的回滚失败也会拒绝待完成的 spawn。\n- 调用方取消后发生的后端清理失败仍算作所有者活动，直到所有者或服务 dispose 并消费、报告该失败，避免生命周期策略把失败的清理误判为完全停稳。\n- `hasOwnerActivity(owner)` 覆盖从尚未发布的设置到最终关闭的全过程，使生命周期策略能精确限制对应所有者，不受发布竞态影响。\n- 成功的 spawn 会发布一个 `TerminalSessionId`。可选的 `name` 只是所有者本地的显示元数据，绝不代表权限。\n- 一个会话最多接受一个活跃的发送操作。读取和信号操作可以观察该发送；在当前操作结算前，另一项发送会失败。\n- `TerminalSendResult.waitReason` 与 `sessionStatus` 相互独立。`session_exit` 描述顶层 PTY 进程，而不是任意前台命令。\n- `kill()` 与 dispose 只会在后端捕获的进程树完全停稳后完成。清理失败会以拒绝结束，而非声称成功；同时它会清除匹配的后端和注册表限制，使后续关闭能够重试，且不会干扰较新的尝试。\n\n该 seam 不包含 `node-pty`、沙箱、工具 schema、提示词、任务或终端渲染策略。实现负责终端机制；消费方负责模型呈现和可选的后台任务注册。\n\n## 模型体验\n\n### 间接消费方\n\n#### 模型看到的内容\n\n没有直接可见内容。此包不注册提示词或工具；可见 schema 和结果文本由 `@buckeyestudio/toh-tool-terminal` 负责。\n\n#### Token 影响\n\n没有直接影响。活跃会话状态会保留在进程本地，直到消费方返回有界结果。\n\n#### KV Cache 影响\n\n不会直接失效；请求前缀变更由上述消费方负责。\n\n## 已知限制与暂缓事项\n\n- 会话只存在于进程本地，harness 重启后不会恢复。\n- 系统有意不支持跨 agent 共享；未来的共享会话设计需要独立的权限约定。\n","readmeFilename":"README.zh.md","_rev":"1-5ff3ecffdc7bad7dfe9a8ecdab732242"}