@chances-ai/engine 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/agents/discover.d.ts +30 -0
  2. package/dist/agents/discover.d.ts.map +1 -0
  3. package/dist/agents/discover.js +183 -0
  4. package/dist/agents/discover.js.map +1 -0
  5. package/dist/agents/index.d.ts +20 -0
  6. package/dist/agents/index.d.ts.map +1 -0
  7. package/dist/agents/index.js +52 -0
  8. package/dist/agents/index.js.map +1 -0
  9. package/dist/agents/parse.d.ts +61 -0
  10. package/dist/agents/parse.d.ts.map +1 -0
  11. package/dist/agents/parse.js +527 -0
  12. package/dist/agents/parse.js.map +1 -0
  13. package/dist/agents/types.d.ts +52 -0
  14. package/dist/agents/types.d.ts.map +1 -0
  15. package/dist/agents/types.js +8 -0
  16. package/dist/agents/types.js.map +1 -0
  17. package/dist/ai/adapters/ai-sdk-stream.d.ts +19 -0
  18. package/dist/ai/adapters/ai-sdk-stream.d.ts.map +1 -0
  19. package/dist/ai/adapters/ai-sdk-stream.js +125 -0
  20. package/dist/ai/adapters/ai-sdk-stream.js.map +1 -0
  21. package/dist/ai/adapters/ai-sdk.d.ts +56 -0
  22. package/dist/ai/adapters/ai-sdk.d.ts.map +1 -0
  23. package/dist/ai/adapters/ai-sdk.js +112 -0
  24. package/dist/ai/adapters/ai-sdk.js.map +1 -0
  25. package/dist/ai/adapters/mock.d.ts +13 -0
  26. package/dist/ai/adapters/mock.d.ts.map +1 -0
  27. package/dist/ai/adapters/mock.js +54 -0
  28. package/dist/ai/adapters/mock.js.map +1 -0
  29. package/dist/ai/adapters/openai-compatible.d.ts +23 -0
  30. package/dist/ai/adapters/openai-compatible.d.ts.map +1 -0
  31. package/dist/ai/adapters/openai-compatible.js +45 -0
  32. package/dist/ai/adapters/openai-compatible.js.map +1 -0
  33. package/dist/ai/cost.d.ts +3 -0
  34. package/dist/ai/cost.d.ts.map +1 -0
  35. package/dist/ai/cost.js +5 -0
  36. package/dist/ai/cost.js.map +1 -0
  37. package/dist/ai/index.d.ts +12 -0
  38. package/dist/ai/index.d.ts.map +1 -0
  39. package/dist/ai/index.js +11 -0
  40. package/dist/ai/index.js.map +1 -0
  41. package/dist/ai/known-models.d.ts +20 -0
  42. package/dist/ai/known-models.d.ts.map +1 -0
  43. package/dist/ai/known-models.js +129 -0
  44. package/dist/ai/known-models.js.map +1 -0
  45. package/dist/ai/registry.d.ts +12 -0
  46. package/dist/ai/registry.d.ts.map +1 -0
  47. package/dist/ai/registry.js +24 -0
  48. package/dist/ai/registry.js.map +1 -0
  49. package/dist/ai/retry.d.ts +11 -0
  50. package/dist/ai/retry.d.ts.map +1 -0
  51. package/dist/ai/retry.js +14 -0
  52. package/dist/ai/retry.js.map +1 -0
  53. package/dist/ai/router.d.ts +25 -0
  54. package/dist/ai/router.d.ts.map +1 -0
  55. package/dist/ai/router.js +36 -0
  56. package/dist/ai/router.js.map +1 -0
  57. package/dist/ai/setup.d.ts +23 -0
  58. package/dist/ai/setup.d.ts.map +1 -0
  59. package/dist/ai/setup.js +47 -0
  60. package/dist/ai/setup.js.map +1 -0
  61. package/dist/ai/summarizer.d.ts +24 -0
  62. package/dist/ai/summarizer.d.ts.map +1 -0
  63. package/dist/ai/summarizer.js +56 -0
  64. package/dist/ai/summarizer.js.map +1 -0
  65. package/dist/ai/types.d.ts +83 -0
  66. package/dist/ai/types.d.ts.map +1 -0
  67. package/dist/ai/types.js +2 -0
  68. package/dist/ai/types.js.map +1 -0
  69. package/dist/core/compaction/circuit-breaker.d.ts +32 -0
  70. package/dist/core/compaction/circuit-breaker.d.ts.map +1 -0
  71. package/dist/core/compaction/circuit-breaker.js +42 -0
  72. package/dist/core/compaction/circuit-breaker.js.map +1 -0
  73. package/dist/core/compaction/compactor.d.ts +75 -0
  74. package/dist/core/compaction/compactor.d.ts.map +1 -0
  75. package/dist/core/compaction/compactor.js +261 -0
  76. package/dist/core/compaction/compactor.js.map +1 -0
  77. package/dist/core/compaction/estimate.d.ts +39 -0
  78. package/dist/core/compaction/estimate.d.ts.map +1 -0
  79. package/dist/core/compaction/estimate.js +74 -0
  80. package/dist/core/compaction/estimate.js.map +1 -0
  81. package/dist/core/compaction/index.d.ts +5 -0
  82. package/dist/core/compaction/index.d.ts.map +1 -0
  83. package/dist/core/compaction/index.js +5 -0
  84. package/dist/core/compaction/index.js.map +1 -0
  85. package/dist/core/compaction/prune.d.ts +43 -0
  86. package/dist/core/compaction/prune.d.ts.map +1 -0
  87. package/dist/core/compaction/prune.js +51 -0
  88. package/dist/core/compaction/prune.js.map +1 -0
  89. package/dist/core/engine.d.ts +268 -0
  90. package/dist/core/engine.d.ts.map +1 -0
  91. package/dist/core/engine.js +767 -0
  92. package/dist/core/engine.js.map +1 -0
  93. package/dist/core/index.d.ts +6 -0
  94. package/dist/core/index.d.ts.map +1 -0
  95. package/dist/core/index.js +6 -0
  96. package/dist/core/index.js.map +1 -0
  97. package/dist/core/task-tool.d.ts +175 -0
  98. package/dist/core/task-tool.d.ts.map +1 -0
  99. package/dist/core/task-tool.js +901 -0
  100. package/dist/core/task-tool.js.map +1 -0
  101. package/dist/core/workspace-query.d.ts +83 -0
  102. package/dist/core/workspace-query.d.ts.map +1 -0
  103. package/dist/core/workspace-query.js +217 -0
  104. package/dist/core/workspace-query.js.map +1 -0
  105. package/dist/core/worktree/active-marker.d.ts +31 -0
  106. package/dist/core/worktree/active-marker.d.ts.map +1 -0
  107. package/dist/core/worktree/active-marker.js +109 -0
  108. package/dist/core/worktree/active-marker.js.map +1 -0
  109. package/dist/core/worktree/create.d.ts +40 -0
  110. package/dist/core/worktree/create.d.ts.map +1 -0
  111. package/dist/core/worktree/create.js +121 -0
  112. package/dist/core/worktree/create.js.map +1 -0
  113. package/dist/core/worktree/errors.d.ts +7 -0
  114. package/dist/core/worktree/errors.d.ts.map +1 -0
  115. package/dist/core/worktree/errors.js +11 -0
  116. package/dist/core/worktree/errors.js.map +1 -0
  117. package/dist/core/worktree/gc.d.ts +39 -0
  118. package/dist/core/worktree/gc.d.ts.map +1 -0
  119. package/dist/core/worktree/gc.js +146 -0
  120. package/dist/core/worktree/gc.js.map +1 -0
  121. package/dist/core/worktree/git.d.ts +53 -0
  122. package/dist/core/worktree/git.d.ts.map +1 -0
  123. package/dist/core/worktree/git.js +166 -0
  124. package/dist/core/worktree/git.js.map +1 -0
  125. package/dist/core/worktree/index.d.ts +8 -0
  126. package/dist/core/worktree/index.d.ts.map +1 -0
  127. package/dist/core/worktree/index.js +8 -0
  128. package/dist/core/worktree/index.js.map +1 -0
  129. package/dist/core/worktree/paths.d.ts +26 -0
  130. package/dist/core/worktree/paths.d.ts.map +1 -0
  131. package/dist/core/worktree/paths.js +57 -0
  132. package/dist/core/worktree/paths.js.map +1 -0
  133. package/dist/core/worktree/slug.d.ts +6 -0
  134. package/dist/core/worktree/slug.d.ts.map +1 -0
  135. package/dist/core/worktree/slug.js +21 -0
  136. package/dist/core/worktree/slug.js.map +1 -0
  137. package/dist/local-vault/file-store.d.ts +64 -0
  138. package/dist/local-vault/file-store.d.ts.map +1 -0
  139. package/dist/local-vault/file-store.js +225 -0
  140. package/dist/local-vault/file-store.js.map +1 -0
  141. package/dist/local-vault/index.d.ts +57 -0
  142. package/dist/local-vault/index.d.ts.map +1 -0
  143. package/dist/local-vault/index.js +68 -0
  144. package/dist/local-vault/index.js.map +1 -0
  145. package/dist/local-vault/keychain.d.ts +58 -0
  146. package/dist/local-vault/keychain.d.ts.map +1 -0
  147. package/dist/local-vault/keychain.js +200 -0
  148. package/dist/local-vault/keychain.js.map +1 -0
  149. package/dist/local-vault/mutex.d.ts +20 -0
  150. package/dist/local-vault/mutex.d.ts.map +1 -0
  151. package/dist/local-vault/mutex.js +44 -0
  152. package/dist/local-vault/mutex.js.map +1 -0
  153. package/dist/local-vault/passphrase.d.ts +30 -0
  154. package/dist/local-vault/passphrase.d.ts.map +1 -0
  155. package/dist/local-vault/passphrase.js +72 -0
  156. package/dist/local-vault/passphrase.js.map +1 -0
  157. package/dist/lsp/config.d.ts +34 -0
  158. package/dist/lsp/config.d.ts.map +1 -0
  159. package/dist/lsp/config.js +68 -0
  160. package/dist/lsp/config.js.map +1 -0
  161. package/dist/lsp/detect.d.ts +7 -0
  162. package/dist/lsp/detect.d.ts.map +1 -0
  163. package/dist/lsp/detect.js +78 -0
  164. package/dist/lsp/detect.js.map +1 -0
  165. package/dist/lsp/errors.d.ts +11 -0
  166. package/dist/lsp/errors.d.ts.map +1 -0
  167. package/dist/lsp/errors.js +11 -0
  168. package/dist/lsp/errors.js.map +1 -0
  169. package/dist/lsp/formatters.d.ts +147 -0
  170. package/dist/lsp/formatters.d.ts.map +1 -0
  171. package/dist/lsp/formatters.js +259 -0
  172. package/dist/lsp/formatters.js.map +1 -0
  173. package/dist/lsp/index.d.ts +31 -0
  174. package/dist/lsp/index.d.ts.map +1 -0
  175. package/dist/lsp/index.js +31 -0
  176. package/dist/lsp/index.js.map +1 -0
  177. package/dist/lsp/instance.d.ts +72 -0
  178. package/dist/lsp/instance.d.ts.map +1 -0
  179. package/dist/lsp/instance.js +489 -0
  180. package/dist/lsp/instance.js.map +1 -0
  181. package/dist/lsp/lazy-load.d.ts +27 -0
  182. package/dist/lsp/lazy-load.d.ts.map +1 -0
  183. package/dist/lsp/lazy-load.js +57 -0
  184. package/dist/lsp/lazy-load.js.map +1 -0
  185. package/dist/lsp/manager.d.ts +59 -0
  186. package/dist/lsp/manager.d.ts.map +1 -0
  187. package/dist/lsp/manager.js +242 -0
  188. package/dist/lsp/manager.js.map +1 -0
  189. package/dist/lsp/ops.d.ts +13 -0
  190. package/dist/lsp/ops.d.ts.map +1 -0
  191. package/dist/lsp/ops.js +225 -0
  192. package/dist/lsp/ops.js.map +1 -0
  193. package/dist/lsp/rpc.d.ts +47 -0
  194. package/dist/lsp/rpc.d.ts.map +1 -0
  195. package/dist/lsp/rpc.js +134 -0
  196. package/dist/lsp/rpc.js.map +1 -0
  197. package/dist/lsp/safe-uri.d.ts +18 -0
  198. package/dist/lsp/safe-uri.d.ts.map +1 -0
  199. package/dist/lsp/safe-uri.js +96 -0
  200. package/dist/lsp/safe-uri.js.map +1 -0
  201. package/dist/lsp/types.d.ts +70 -0
  202. package/dist/lsp/types.d.ts.map +1 -0
  203. package/dist/lsp/types.js +16 -0
  204. package/dist/lsp/types.js.map +1 -0
  205. package/dist/mcp/bridge.d.ts +57 -0
  206. package/dist/mcp/bridge.d.ts.map +1 -0
  207. package/dist/mcp/bridge.js +98 -0
  208. package/dist/mcp/bridge.js.map +1 -0
  209. package/dist/mcp/category.d.ts +22 -0
  210. package/dist/mcp/category.d.ts.map +1 -0
  211. package/dist/mcp/category.js +11 -0
  212. package/dist/mcp/category.js.map +1 -0
  213. package/dist/mcp/client.d.ts +228 -0
  214. package/dist/mcp/client.d.ts.map +1 -0
  215. package/dist/mcp/client.js +352 -0
  216. package/dist/mcp/client.js.map +1 -0
  217. package/dist/mcp/content.d.ts +86 -0
  218. package/dist/mcp/content.d.ts.map +1 -0
  219. package/dist/mcp/content.js +147 -0
  220. package/dist/mcp/content.js.map +1 -0
  221. package/dist/mcp/env.d.ts +19 -0
  222. package/dist/mcp/env.d.ts.map +1 -0
  223. package/dist/mcp/env.js +50 -0
  224. package/dist/mcp/env.js.map +1 -0
  225. package/dist/mcp/host.d.ts +199 -0
  226. package/dist/mcp/host.d.ts.map +1 -0
  227. package/dist/mcp/host.js +530 -0
  228. package/dist/mcp/host.js.map +1 -0
  229. package/dist/mcp/index.d.ts +18 -0
  230. package/dist/mcp/index.d.ts.map +1 -0
  231. package/dist/mcp/index.js +17 -0
  232. package/dist/mcp/index.js.map +1 -0
  233. package/dist/mcp/load-mcp-host.d.ts +32 -0
  234. package/dist/mcp/load-mcp-host.d.ts.map +1 -0
  235. package/dist/mcp/load-mcp-host.js +49 -0
  236. package/dist/mcp/load-mcp-host.js.map +1 -0
  237. package/dist/mcp/oauth/callback-server.d.ts +73 -0
  238. package/dist/mcp/oauth/callback-server.d.ts.map +1 -0
  239. package/dist/mcp/oauth/callback-server.js +280 -0
  240. package/dist/mcp/oauth/callback-server.js.map +1 -0
  241. package/dist/mcp/oauth/config-hash.d.ts +24 -0
  242. package/dist/mcp/oauth/config-hash.d.ts.map +1 -0
  243. package/dist/mcp/oauth/config-hash.js +55 -0
  244. package/dist/mcp/oauth/config-hash.js.map +1 -0
  245. package/dist/mcp/oauth/error-normalize.d.ts +39 -0
  246. package/dist/mcp/oauth/error-normalize.d.ts.map +1 -0
  247. package/dist/mcp/oauth/error-normalize.js +91 -0
  248. package/dist/mcp/oauth/error-normalize.js.map +1 -0
  249. package/dist/mcp/oauth/provider.d.ts +190 -0
  250. package/dist/mcp/oauth/provider.d.ts.map +1 -0
  251. package/dist/mcp/oauth/provider.js +305 -0
  252. package/dist/mcp/oauth/provider.js.map +1 -0
  253. package/dist/mcp/oauth/refresh-coalescer.d.ts +46 -0
  254. package/dist/mcp/oauth/refresh-coalescer.d.ts.map +1 -0
  255. package/dist/mcp/oauth/refresh-coalescer.js +77 -0
  256. package/dist/mcp/oauth/refresh-coalescer.js.map +1 -0
  257. package/dist/mcp/oauth/sdk-shapes.d.ts +77 -0
  258. package/dist/mcp/oauth/sdk-shapes.d.ts.map +1 -0
  259. package/dist/mcp/oauth/sdk-shapes.js +21 -0
  260. package/dist/mcp/oauth/sdk-shapes.js.map +1 -0
  261. package/dist/mcp/parse.d.ts +28 -0
  262. package/dist/mcp/parse.d.ts.map +1 -0
  263. package/dist/mcp/parse.js +209 -0
  264. package/dist/mcp/parse.js.map +1 -0
  265. package/dist/mcp/prompts.d.ts +31 -0
  266. package/dist/mcp/prompts.d.ts.map +1 -0
  267. package/dist/mcp/prompts.js +71 -0
  268. package/dist/mcp/prompts.js.map +1 -0
  269. package/dist/mcp/redact.d.ts +62 -0
  270. package/dist/mcp/redact.d.ts.map +1 -0
  271. package/dist/mcp/redact.js +87 -0
  272. package/dist/mcp/redact.js.map +1 -0
  273. package/dist/mcp/resources.d.ts +70 -0
  274. package/dist/mcp/resources.d.ts.map +1 -0
  275. package/dist/mcp/resources.js +170 -0
  276. package/dist/mcp/resources.js.map +1 -0
  277. package/dist/mcp/types.d.ts +123 -0
  278. package/dist/mcp/types.d.ts.map +1 -0
  279. package/dist/mcp/types.js +2 -0
  280. package/dist/mcp/types.js.map +1 -0
  281. package/dist/memory/frontmatter.d.ts +18 -0
  282. package/dist/memory/frontmatter.d.ts.map +1 -0
  283. package/dist/memory/frontmatter.js +81 -0
  284. package/dist/memory/frontmatter.js.map +1 -0
  285. package/dist/memory/index.d.ts +5 -0
  286. package/dist/memory/index.d.ts.map +1 -0
  287. package/dist/memory/index.js +5 -0
  288. package/dist/memory/index.js.map +1 -0
  289. package/dist/memory/store.d.ts +44 -0
  290. package/dist/memory/store.d.ts.map +1 -0
  291. package/dist/memory/store.js +237 -0
  292. package/dist/memory/store.js.map +1 -0
  293. package/dist/memory/tools.d.ts +11 -0
  294. package/dist/memory/tools.d.ts.map +1 -0
  295. package/dist/memory/tools.js +159 -0
  296. package/dist/memory/tools.js.map +1 -0
  297. package/dist/memory/types.d.ts +32 -0
  298. package/dist/memory/types.d.ts.map +1 -0
  299. package/dist/memory/types.js +20 -0
  300. package/dist/memory/types.js.map +1 -0
  301. package/dist/plugin-api/index.d.ts +167 -0
  302. package/dist/plugin-api/index.d.ts.map +1 -0
  303. package/dist/plugin-api/index.js +151 -0
  304. package/dist/plugin-api/index.js.map +1 -0
  305. package/dist/plugin-logger/index.d.ts +21 -0
  306. package/dist/plugin-logger/index.d.ts.map +1 -0
  307. package/dist/plugin-logger/index.js +59 -0
  308. package/dist/plugin-logger/index.js.map +1 -0
  309. package/dist/session/index.d.ts +125 -0
  310. package/dist/session/index.d.ts.map +1 -0
  311. package/dist/session/index.js +202 -0
  312. package/dist/session/index.js.map +1 -0
  313. package/dist/tools/approval.d.ts +33 -0
  314. package/dist/tools/approval.d.ts.map +1 -0
  315. package/dist/tools/approval.js +53 -0
  316. package/dist/tools/approval.js.map +1 -0
  317. package/dist/tools/builtins/_shared.d.ts +94 -0
  318. package/dist/tools/builtins/_shared.d.ts.map +1 -0
  319. package/dist/tools/builtins/_shared.js +246 -0
  320. package/dist/tools/builtins/_shared.js.map +1 -0
  321. package/dist/tools/builtins/ask-user-question.d.ts +27 -0
  322. package/dist/tools/builtins/ask-user-question.d.ts.map +1 -0
  323. package/dist/tools/builtins/ask-user-question.js +191 -0
  324. package/dist/tools/builtins/ask-user-question.js.map +1 -0
  325. package/dist/tools/builtins/bash.d.ts +3 -0
  326. package/dist/tools/builtins/bash.d.ts.map +1 -0
  327. package/dist/tools/builtins/bash.js +158 -0
  328. package/dist/tools/builtins/bash.js.map +1 -0
  329. package/dist/tools/builtins/diff.d.ts +3 -0
  330. package/dist/tools/builtins/diff.d.ts.map +1 -0
  331. package/dist/tools/builtins/diff.js +83 -0
  332. package/dist/tools/builtins/diff.js.map +1 -0
  333. package/dist/tools/builtins/edit.d.ts +3 -0
  334. package/dist/tools/builtins/edit.d.ts.map +1 -0
  335. package/dist/tools/builtins/edit.js +40 -0
  336. package/dist/tools/builtins/edit.js.map +1 -0
  337. package/dist/tools/builtins/glob.d.ts +3 -0
  338. package/dist/tools/builtins/glob.d.ts.map +1 -0
  339. package/dist/tools/builtins/glob.js +37 -0
  340. package/dist/tools/builtins/glob.js.map +1 -0
  341. package/dist/tools/builtins/grep.d.ts +3 -0
  342. package/dist/tools/builtins/grep.d.ts.map +1 -0
  343. package/dist/tools/builtins/grep.js +81 -0
  344. package/dist/tools/builtins/grep.js.map +1 -0
  345. package/dist/tools/builtins/lsp.d.ts +3 -0
  346. package/dist/tools/builtins/lsp.d.ts.map +1 -0
  347. package/dist/tools/builtins/lsp.js +102 -0
  348. package/dist/tools/builtins/lsp.js.map +1 -0
  349. package/dist/tools/builtins/pty.d.ts +64 -0
  350. package/dist/tools/builtins/pty.d.ts.map +1 -0
  351. package/dist/tools/builtins/pty.js +536 -0
  352. package/dist/tools/builtins/pty.js.map +1 -0
  353. package/dist/tools/builtins/read.d.ts +3 -0
  354. package/dist/tools/builtins/read.d.ts.map +1 -0
  355. package/dist/tools/builtins/read.js +18 -0
  356. package/dist/tools/builtins/read.js.map +1 -0
  357. package/dist/tools/builtins/web-fetch.d.ts +4 -0
  358. package/dist/tools/builtins/web-fetch.d.ts.map +1 -0
  359. package/dist/tools/builtins/web-fetch.js +353 -0
  360. package/dist/tools/builtins/web-fetch.js.map +1 -0
  361. package/dist/tools/builtins/write.d.ts +3 -0
  362. package/dist/tools/builtins/write.d.ts.map +1 -0
  363. package/dist/tools/builtins/write.js +48 -0
  364. package/dist/tools/builtins/write.js.map +1 -0
  365. package/dist/tools/builtins.d.ts +9 -0
  366. package/dist/tools/builtins.d.ts.map +1 -0
  367. package/dist/tools/builtins.js +29 -0
  368. package/dist/tools/builtins.js.map +1 -0
  369. package/dist/tools/diff.d.ts +18 -0
  370. package/dist/tools/diff.d.ts.map +1 -0
  371. package/dist/tools/diff.js +57 -0
  372. package/dist/tools/diff.js.map +1 -0
  373. package/dist/tools/index.d.ts +10 -0
  374. package/dist/tools/index.d.ts.map +1 -0
  375. package/dist/tools/index.js +9 -0
  376. package/dist/tools/index.js.map +1 -0
  377. package/dist/tools/permission.d.ts +120 -0
  378. package/dist/tools/permission.d.ts.map +1 -0
  379. package/dist/tools/permission.js +208 -0
  380. package/dist/tools/permission.js.map +1 -0
  381. package/dist/tools/registry.d.ts +12 -0
  382. package/dist/tools/registry.d.ts.map +1 -0
  383. package/dist/tools/registry.js +19 -0
  384. package/dist/tools/registry.js.map +1 -0
  385. package/dist/tools/types.d.ts +244 -0
  386. package/dist/tools/types.d.ts.map +1 -0
  387. package/dist/tools/types.js +15 -0
  388. package/dist/tools/types.js.map +1 -0
  389. package/package.json +109 -0
@@ -0,0 +1,536 @@
1
+ /**
2
+ * (5.1) `pty` — interactive bidirectional PTY tool.
3
+ *
4
+ * Op-enum surface (mirrors 4.2 LSP pattern):
5
+ * start | write | read | resize | kill | interrupt | adopt | list
6
+ *
7
+ * Per-op permission via `Tool.permission(args, ctx)` hook (5.1 API
8
+ * surface change). Each op returns either:
9
+ * - a `PermissionRequest` with a per-op `cacheKey` (`start` re-prompts
10
+ * per `(command, cwd, shell, env)`; `kill` per `(session_id, signal)`;
11
+ * `write` per `(session_id, sha256(line))` for command-class input,
12
+ * etc.), or
13
+ * - `null` to bypass the gate entirely (`read`, `resize`, `list`).
14
+ *
15
+ * Codex Round-1 MUST-FIX #3 — `write` containing `\n`/`\r`/control bytes
16
+ * is "command-class" input that executes a line in the underlying
17
+ * shell/REPL; re-prompt required.
18
+ *
19
+ * Codex Round-1 MUST-FIX #7 — `start` permission summary includes
20
+ * resolved `cwd`, allowlisted `shell` (or rejected with `PTY_BAD_SHELL`),
21
+ * and non-default env keys (values redacted past 8 chars).
22
+ *
23
+ * Codex Round-1 Q4/Q7 — shell allowlist + dedicated `interrupt` op
24
+ * (separate gate from `kill`).
25
+ */
26
+ import { createHash } from "node:crypto";
27
+ import { basename, isAbsolute } from "node:path";
28
+ import { AppError, ErrorCode, createId } from "@chances-ai/runtime";
29
+ import { optNum, optStr, preview, str } from "./_shared.js";
30
+ // ---------------------------------------------------------------------------
31
+ // Shell allowlist
32
+ /** Built-in allowlist by basename. Matches the design D4 table verbatim.
33
+ * Codex Round-1 Q4 / MUST-FIX #7. */
34
+ const BUILTIN_SHELL_ALLOWLIST = new Set([
35
+ "sh",
36
+ "bash",
37
+ "zsh",
38
+ "fish",
39
+ "dash",
40
+ "cmd",
41
+ "cmd.exe",
42
+ "powershell",
43
+ "powershell.exe",
44
+ "pwsh",
45
+ "pwsh.exe",
46
+ ]);
47
+ function isShellAllowed(shell, userExtra) {
48
+ // (5.1 codex Round-2 MUST-FIX #4) — reject relative-path forms
49
+ // outright. `./bash` or `subdir/bash` would otherwise pass the
50
+ // basename check, letting a model execute a workspace-resident
51
+ // binary disguised as `bash`. Accept ONLY:
52
+ // - a bare basename in the built-in allowlist (resolved through
53
+ // PATH by the shell spawn), OR
54
+ // - an absolute path explicitly allowlisted by the user.
55
+ const looksLikePath = shell.includes("/") || shell.includes("\\");
56
+ if (looksLikePath) {
57
+ if (!isAbsolute(shell))
58
+ return false;
59
+ return userExtra.includes(shell);
60
+ }
61
+ return BUILTIN_SHELL_ALLOWLIST.has(shell.toLowerCase());
62
+ }
63
+ // ---------------------------------------------------------------------------
64
+ // Per-op cache key helpers
65
+ function startCacheKey(command, cwd, shell, env) {
66
+ const sortedEnv = Object.keys(env).sort().map((k) => `${k}=${env[k]}`).join("\x00");
67
+ const h = createHash("sha256").update(`${command}\x01${cwd}\x01${shell}\x01${sortedEnv}`).digest("hex");
68
+ return `pty.start/${h.slice(0, 16)}`;
69
+ }
70
+ function writeExecCacheKey(sessionId, line) {
71
+ const h = createHash("sha256").update(line).digest("hex").slice(0, 8);
72
+ return `pty.write.exec/${sessionId}:${h}`;
73
+ }
74
+ function killCacheKey(sessionId, signal) {
75
+ return `pty.kill.${signal}/${sessionId}`;
76
+ }
77
+ function interruptCacheKey(sessionId) {
78
+ return `pty.interrupt/${sessionId}`;
79
+ }
80
+ function adoptCacheKey(sessionId) {
81
+ return `pty.adopt/${sessionId}`;
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // Safe-write classifier
85
+ /** "Safe-write" = short input AND no command-execution byte
86
+ * (`\n` / `\r` / C0 except `\t`/`\b`). Codex Round-1 MUST-FIX #3 /
87
+ * Q1 — newline-terminated input executes a line in the underlying
88
+ * shell/REPL and is treated as command-class, requiring re-prompt. */
89
+ function isSafeWrite(input) {
90
+ if (input.length > 256)
91
+ return false;
92
+ for (let i = 0; i < input.length; i++) {
93
+ const c = input.charCodeAt(i);
94
+ if (c === 0x0a || c === 0x0d)
95
+ return false; // \n or \r
96
+ if (c < 0x20 && c !== 0x09 && c !== 0x08)
97
+ return false; // C0 except tab/backspace
98
+ if (c === 0x7f)
99
+ return false; // DEL
100
+ }
101
+ return true;
102
+ }
103
+ // ---------------------------------------------------------------------------
104
+ // Permission summary helpers
105
+ function envDiff(env) {
106
+ const out = [];
107
+ for (const [k, v] of Object.entries(env)) {
108
+ if (process.env[k] === v)
109
+ continue;
110
+ out.push({ key: k, redactedValue: redactValue(v) });
111
+ }
112
+ return out.sort((a, b) => a.key.localeCompare(b.key));
113
+ }
114
+ function redactValue(v) {
115
+ if (v.length <= 8)
116
+ return "***";
117
+ return `${v.slice(0, 4)}…${v.slice(-2)}`;
118
+ }
119
+ function startSummary(command, cwd, shell, env) {
120
+ const cmdHead = command.length > 80 ? command.slice(0, 80) + "…" : command;
121
+ const envParts = envDiff(env);
122
+ const lines = [`pty start: ${cmdHead}`, ` cwd: ${cwd}`, ` shell: ${shell}`];
123
+ if (envParts.length > 0) {
124
+ const envFormatted = envParts.map((e) => `${e.key}=${e.redactedValue}`).join(", ");
125
+ lines.push(` env: ${envFormatted}`);
126
+ }
127
+ return lines.join("\n");
128
+ }
129
+ function writeSummary(sessionInfo, input) {
130
+ const head = sessionInfo?.command ?? "<unknown session>";
131
+ return `pty write to ${head}: ${preview(input)}`;
132
+ }
133
+ function killSummary(sessionInfo, signal) {
134
+ const head = sessionInfo?.command ?? "<unknown session>";
135
+ return `pty kill ${signal}: ${head}`;
136
+ }
137
+ function interruptSummary(sessionInfo) {
138
+ const head = sessionInfo?.command ?? "<unknown session>";
139
+ return `pty interrupt (SIGINT): ${head}`;
140
+ }
141
+ function adoptSummary(sessionInfo) {
142
+ const head = sessionInfo?.command ?? "<unknown session>";
143
+ return `pty adopt subagent session: ${head}`;
144
+ }
145
+ const VALID_OPS = new Set([
146
+ "start",
147
+ "write",
148
+ "read",
149
+ "resize",
150
+ "kill",
151
+ "interrupt",
152
+ "adopt",
153
+ "list",
154
+ ]);
155
+ function parseOp(args) {
156
+ if (!args || typeof args !== "object" || Array.isArray(args)) {
157
+ throw new AppError(ErrorCode.Tool, "pty: expected an object with an `op` field");
158
+ }
159
+ const rec = args;
160
+ const op = rec.op;
161
+ if (typeof op !== "string" || !VALID_OPS.has(op)) {
162
+ throw new AppError(ErrorCode.Tool, `pty: unknown op '${String(op)}'. Expected one of: ${[...VALID_OPS].join(", ")}`);
163
+ }
164
+ return { op: op, args: rec };
165
+ }
166
+ export function createPtyTool(deps) {
167
+ // (5.1 codex Round-2 follow-up to MUST-FIX #4) Default shell is the
168
+ // BARE basename — Round-2 tightened `isShellAllowed` to reject any
169
+ // path-like value not on the user allowlist, so the prior default
170
+ // of `/bin/sh` would self-reject. Bare `sh` resolves via PATH at
171
+ // spawn time, which is what we want anyway; the operator can
172
+ // override via `deps.defaultShell` when running in a sandbox where
173
+ // PATH won't surface a usable shell.
174
+ const defaultShell = deps.defaultShell ?? (process.platform === "win32" ? "cmd.exe" : "sh");
175
+ const userExtra = deps.shellAllowlistExtra ?? [];
176
+ function resolveStartConfig(args) {
177
+ const command = str(args, "command");
178
+ // (5.1 codex Round-2 MUST-FIX #3) Default to the per-engine
179
+ // `defaultCwd` when set — for isolated subagents this is the
180
+ // worktree path, so a `pty.start({command: "pwd"})` runs inside
181
+ // the worktree rather than against the parent checkout.
182
+ const cwd = optStr(args, "cwd") ?? deps.defaultCwd ?? deps.workspaceRoot;
183
+ const shell = optStr(args, "shell") ?? defaultShell;
184
+ const cols = optNum(args, "cols");
185
+ const rows = optNum(args, "rows");
186
+ if (!isShellAllowed(shell, userExtra)) {
187
+ return {
188
+ error: `PTY_BAD_SHELL: shell '${shell}' is not in the allowlist. Built-in allowlist: ${[...BUILTIN_SHELL_ALLOWLIST].sort().join(", ")}. User allowlist (absolute paths) via 'config.pty.shellAllowlist'.`,
189
+ };
190
+ }
191
+ const envRaw = args["env"];
192
+ let env = {};
193
+ if (envRaw && typeof envRaw === "object" && !Array.isArray(envRaw)) {
194
+ for (const [k, v] of Object.entries(envRaw)) {
195
+ if (typeof v !== "string") {
196
+ return { error: `PTY_BAD_ARGS: env value for '${k}' must be a string` };
197
+ }
198
+ env[k] = v;
199
+ }
200
+ }
201
+ else if (envRaw !== undefined && envRaw !== null) {
202
+ return { error: `PTY_BAD_ARGS: 'env' must be an object of string→string` };
203
+ }
204
+ return { command, cwd, shell, env, cols, rows };
205
+ }
206
+ function lookupInfo(sessionId) {
207
+ // Use `list(agentId)` so D10 isolation is respected — model only
208
+ // gets to see commands for sessions it owns.
209
+ for (const s of deps.registry.list(deps.agentId)) {
210
+ if (s.sessionId === sessionId)
211
+ return s;
212
+ }
213
+ return undefined;
214
+ }
215
+ const description = [
216
+ "Drive a long-lived shell session. Use this when a command requires interactive input (REPL prompts, sudo password, dev-server tail, `python -i`, `psql`).",
217
+ "",
218
+ "Ops (pass as { op: ..., ... }):",
219
+ "- start({command, cwd?, cols?, rows?, shell?, env?}) → {session_id, first_chunk?, state}. Requires `shell` permission. Permission prompt includes resolved cwd, shell, and any non-default env keys.",
220
+ "- read({session_id, since?, timeout_ms?}) → {chunks: [{seq, text}], state, exit_code?, dropped?, truncated?, next_since?, persisted_path?}. Polls up to timeout_ms (default 1000, max 5000). Per-call cleaned-text payload capped at 30 KB; overflow persisted to .chances/tool-results/<callId>/pty.txt.",
221
+ "- write({session_id, input}) → {ok}. Write to stdin. Re-prompts when input contains newline/CR/control bytes (it's then command-class input that executes a line).",
222
+ "- resize({session_id, cols, rows}) → {ok}. SIGWINCH-equiv. Returns PTY_NO_PTY under pipe-fallback.",
223
+ "- interrupt({session_id}) → {ok}. Send SIGINT (operator Ctrl-C). Re-prompts.",
224
+ "- kill({session_id, signal?}) → {ok}. Default SIGTERM; pass 'SIGKILL' for hard kill. Re-prompts per signal — SIGTERM approval does NOT pre-approve SIGKILL.",
225
+ "- adopt({session_id}) → {ok}. Parent claims ownership of a subagent's session so it survives the subagent's exit. Re-prompts.",
226
+ "- list() → {sessions: [{session_id, command, cwd, shell, started_at, state, exit_code?}]}. Returns only sessions owned by you.",
227
+ ].join("\n");
228
+ const tool = {
229
+ name: "pty",
230
+ description,
231
+ // `start` is the gateway op; classifying the whole tool as `shell`
232
+ // makes the gate's category-default reach the right resolver. Per-op
233
+ // overrides happen via `permission()` below.
234
+ category: "shell",
235
+ parameters: {
236
+ type: "object",
237
+ properties: {
238
+ op: {
239
+ type: "string",
240
+ enum: [...VALID_OPS],
241
+ description: "Operation: start | write | read | resize | kill | interrupt | adopt | list",
242
+ },
243
+ command: { type: "string", description: "[start] Shell command line to run." },
244
+ cwd: { type: "string", description: "[start] Working directory. Defaults to the workspace root." },
245
+ cols: { type: "number", description: "[start] PTY column count." },
246
+ rows: { type: "number", description: "[start] PTY row count." },
247
+ shell: { type: "string", description: "[start] Shell binary (must be in the allowlist)." },
248
+ env: { type: "object", description: "[start] Environment overrides. Keys/values must be strings." },
249
+ session_id: { type: "string", description: "Session id returned by start. Required for write/read/resize/kill/interrupt/adopt." },
250
+ since: { type: "number", description: "[read] Resume cursor (seq). 0 returns from the beginning of the ring." },
251
+ timeout_ms: { type: "number", description: "[read] Max poll window in ms. Default 1000, max 5000." },
252
+ input: { type: "string", description: "[write] Stdin payload. Include trailing \\n if the program expects it (this triggers a re-prompt — command-class input)." },
253
+ signal: { type: "string", enum: ["SIGTERM", "SIGKILL"], description: "[kill] Default SIGTERM." },
254
+ },
255
+ required: ["op"],
256
+ },
257
+ summarize: (args) => {
258
+ try {
259
+ const { op, args: a } = parseOp(args);
260
+ if (op === "start")
261
+ return `pty start: ${preview(optStr(a, "command") ?? "")}`;
262
+ const sid = optStr(a, "session_id") ?? "?";
263
+ if (op === "write")
264
+ return `pty write to ${sid}: ${preview(optStr(a, "input") ?? "")}`;
265
+ if (op === "kill")
266
+ return `pty kill ${optStr(a, "signal") ?? "SIGTERM"}: ${sid}`;
267
+ if (op === "interrupt")
268
+ return `pty interrupt (SIGINT): ${sid}`;
269
+ if (op === "adopt")
270
+ return `pty adopt: ${sid}`;
271
+ return `pty ${op}: ${sid}`;
272
+ }
273
+ catch {
274
+ return "pty: invalid args";
275
+ }
276
+ },
277
+ permission(args, _ctx) {
278
+ let parsed;
279
+ try {
280
+ parsed = parseOp(args);
281
+ }
282
+ catch {
283
+ // Bad op surface as `PermissionRequest` so the engine still
284
+ // gates (and the tool's execute path returns the structured
285
+ // error). Use the tool's category default.
286
+ return {
287
+ name: "pty",
288
+ category: "shell",
289
+ summary: "pty: invalid args",
290
+ args,
291
+ };
292
+ }
293
+ const { op, args: a } = parsed;
294
+ if (op === "start") {
295
+ const cfg = resolveStartConfig(a);
296
+ if ("error" in cfg) {
297
+ // Surface as a normal start prompt; the execute path will
298
+ // return ok:false with the precise error. Re-prompting the
299
+ // user for a malformed start would be confusing, but the gate
300
+ // doesn't have a "skip-and-fail" channel — settle on the
301
+ // generic summary; execute returns the labelled error.
302
+ return {
303
+ name: "pty",
304
+ category: "shell",
305
+ summary: `pty start: ${preview(optStr(a, "command") ?? "")}`,
306
+ args,
307
+ };
308
+ }
309
+ return {
310
+ name: "pty",
311
+ category: "shell",
312
+ summary: startSummary(cfg.command, cfg.cwd, cfg.shell, cfg.env),
313
+ args,
314
+ cacheKey: startCacheKey(cfg.command, cfg.cwd, cfg.shell, cfg.env),
315
+ };
316
+ }
317
+ if (op === "read" || op === "resize" || op === "list") {
318
+ // Bypass the gate — D4. read/resize/list are operationally
319
+ // covered by the original start approval.
320
+ return null;
321
+ }
322
+ if (op === "write") {
323
+ const sessionId = optStr(a, "session_id") ?? "?";
324
+ const input = optStr(a, "input") ?? "";
325
+ if (isSafeWrite(input))
326
+ return null;
327
+ const info = lookupInfo(sessionId);
328
+ return {
329
+ name: "pty",
330
+ category: "shell",
331
+ summary: writeSummary(info, input),
332
+ args,
333
+ cacheKey: writeExecCacheKey(sessionId, input),
334
+ };
335
+ }
336
+ if (op === "kill") {
337
+ const sessionId = optStr(a, "session_id") ?? "?";
338
+ const sig = (optStr(a, "signal") ?? "SIGTERM").toUpperCase();
339
+ const info = lookupInfo(sessionId);
340
+ return {
341
+ name: "pty",
342
+ category: "shell",
343
+ summary: killSummary(info, sig),
344
+ args,
345
+ cacheKey: killCacheKey(sessionId, sig),
346
+ };
347
+ }
348
+ if (op === "interrupt") {
349
+ const sessionId = optStr(a, "session_id") ?? "?";
350
+ const info = lookupInfo(sessionId);
351
+ return {
352
+ name: "pty",
353
+ category: "shell",
354
+ summary: interruptSummary(info),
355
+ args,
356
+ cacheKey: interruptCacheKey(sessionId),
357
+ };
358
+ }
359
+ // op === "adopt"
360
+ const sessionId = optStr(a, "session_id") ?? "?";
361
+ // Adopt may target a session NOT yet owned by this agent (that's
362
+ // the whole point of adopt). We still look up via `lookupInfo`
363
+ // which returns undefined for cross-agent sessions — the prompt
364
+ // then shows `<unknown session>` rather than leaking the
365
+ // command. Operator approval still gates the transfer.
366
+ const info = lookupInfo(sessionId);
367
+ return {
368
+ name: "pty",
369
+ category: "shell",
370
+ summary: adoptSummary(info),
371
+ args,
372
+ cacheKey: adoptCacheKey(sessionId),
373
+ };
374
+ },
375
+ async execute(args, ctx) {
376
+ let parsed;
377
+ try {
378
+ parsed = parseOp(args);
379
+ }
380
+ catch (e) {
381
+ return { ok: false, output: e.message };
382
+ }
383
+ const { op, args: a } = parsed;
384
+ try {
385
+ switch (op) {
386
+ case "start":
387
+ return await executeStart(a, ctx);
388
+ case "read":
389
+ return await executeRead(a, ctx);
390
+ case "write":
391
+ return await executeWrite(a);
392
+ case "resize":
393
+ return await executeResize(a);
394
+ case "kill":
395
+ return await executeKill(a);
396
+ case "interrupt":
397
+ return await executeInterrupt(a);
398
+ case "adopt":
399
+ return executeAdopt(a);
400
+ case "list":
401
+ return executeList();
402
+ }
403
+ }
404
+ catch (e) {
405
+ return { ok: false, output: `pty ${op}: ${e.message ?? String(e)}` };
406
+ }
407
+ },
408
+ };
409
+ async function executeStart(a, ctx) {
410
+ const cfg = resolveStartConfig(a);
411
+ if ("error" in cfg)
412
+ return { ok: false, output: cfg.error };
413
+ try {
414
+ const result = await deps.registry.start({
415
+ agentId: deps.agentId,
416
+ agentName: deps.agentName,
417
+ callId: ctx.callId ?? createId("call"),
418
+ command: cfg.command,
419
+ cwd: cfg.cwd,
420
+ env: cfg.env,
421
+ cols: cfg.cols,
422
+ rows: cfg.rows,
423
+ shell: cfg.shell,
424
+ worktreeCwd: deps.worktreeCwd,
425
+ createHandle: (spawnOpts, onChunk) =>
426
+ // The factory is injected via the engine wiring; here we
427
+ // delegate to a runtime-resolved factory passed through deps.
428
+ deps.createHandle(spawnOpts, onChunk),
429
+ });
430
+ const payload = {
431
+ session_id: result.sessionId,
432
+ state: result.state,
433
+ };
434
+ if (result.firstChunk) {
435
+ payload.first_chunk = { seq: result.firstChunk.seq, text: result.firstChunk.text };
436
+ }
437
+ return { ok: true, output: jsonOutput(payload) };
438
+ }
439
+ catch (e) {
440
+ const msg = e.message ?? String(e);
441
+ // PTY_MAX_SESSIONS / spawn failure / etc. all flatten to ok:false
442
+ // with the labelled message so the model can recover.
443
+ return { ok: false, output: msg };
444
+ }
445
+ }
446
+ async function executeRead(a, ctx) {
447
+ const sessionId = str(a, "session_id");
448
+ const since = optNum(a, "since");
449
+ const timeoutMs = optNum(a, "timeout_ms");
450
+ try {
451
+ const result = await deps.registry.read(sessionId, deps.agentId, { since, timeoutMs, callId: ctx.callId ?? createId("call") }, ctx.signal);
452
+ const payload = {
453
+ state: result.state,
454
+ chunks: result.chunks.map((c) => ({ seq: c.seq, text: c.text })),
455
+ };
456
+ if (result.exitCode !== undefined)
457
+ payload.exit_code = result.exitCode;
458
+ if (result.dropped)
459
+ payload.dropped = result.dropped;
460
+ if (result.truncated)
461
+ payload.truncated = true;
462
+ if (result.nextSince !== undefined)
463
+ payload.next_since = result.nextSince;
464
+ if (result.persistedPath)
465
+ payload.persisted_path = result.persistedPath;
466
+ return { ok: true, output: jsonOutput(payload) };
467
+ }
468
+ catch (e) {
469
+ // SessionNotFoundError lands here as a typed error.
470
+ return { ok: false, output: e.message ?? String(e) };
471
+ }
472
+ }
473
+ async function executeWrite(a) {
474
+ const sessionId = str(a, "session_id");
475
+ const input = str(a, "input");
476
+ const bytes = Buffer.from(input, "utf8");
477
+ const r = await deps.registry.write(sessionId, deps.agentId, bytes);
478
+ return formatOpResult(r);
479
+ }
480
+ async function executeResize(a) {
481
+ const sessionId = str(a, "session_id");
482
+ const cols = optNum(a, "cols");
483
+ const rows = optNum(a, "rows");
484
+ if (cols === undefined || rows === undefined) {
485
+ return { ok: false, output: "PTY_BAD_ARGS: 'cols' and 'rows' required for resize" };
486
+ }
487
+ const r = await deps.registry.resize(sessionId, deps.agentId, cols, rows);
488
+ return formatOpResult(r);
489
+ }
490
+ async function executeKill(a) {
491
+ const sessionId = str(a, "session_id");
492
+ const sig = (optStr(a, "signal") ?? "SIGTERM").toUpperCase();
493
+ if (sig !== "SIGTERM" && sig !== "SIGKILL") {
494
+ return { ok: false, output: `PTY_BAD_ARGS: signal must be SIGTERM or SIGKILL, got '${sig}'` };
495
+ }
496
+ const r = await deps.registry.kill(sessionId, deps.agentId, sig);
497
+ return formatOpResult(r);
498
+ }
499
+ async function executeInterrupt(a) {
500
+ const sessionId = str(a, "session_id");
501
+ const r = await deps.registry.interrupt(sessionId, deps.agentId);
502
+ return formatOpResult(r);
503
+ }
504
+ function executeAdopt(a) {
505
+ const sessionId = str(a, "session_id");
506
+ const r = deps.registry.adopt(sessionId, deps.agentId);
507
+ return formatOpResult(r);
508
+ }
509
+ function executeList() {
510
+ const sessions = deps.registry.list(deps.agentId).map((s) => ({
511
+ session_id: s.sessionId,
512
+ command: s.command,
513
+ cwd: s.cwd,
514
+ shell: s.shell,
515
+ started_at: s.startedAt,
516
+ state: s.state,
517
+ ...(s.exitCode !== undefined ? { exit_code: s.exitCode } : {}),
518
+ }));
519
+ return { ok: true, output: jsonOutput({ sessions }) };
520
+ }
521
+ return tool;
522
+ }
523
+ function formatOpResult(r) {
524
+ if (r.ok)
525
+ return { ok: true, output: jsonOutput({ ok: true }) };
526
+ const body = r.message ? `${r.error}: ${r.message}` : r.error;
527
+ return { ok: false, output: body };
528
+ }
529
+ /** Stringify a JSON payload as the tool result body. Insertion-order
530
+ * (matches JSON.stringify defaults); tests construct payloads in a
531
+ * deterministic order so snapshots stay stable without an extra sort
532
+ * pass. */
533
+ function jsonOutput(obj) {
534
+ return JSON.stringify(obj);
535
+ }
536
+ //# sourceMappingURL=pty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../../src/tools/builtins/pty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Tool } from "../types.js";
2
+ export declare const readTool: Tool;
3
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/read.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,QAAQ,EAAE,IAatB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { safePath, str } from "./_shared.js";
3
+ export const readTool = {
4
+ name: "read",
5
+ description: "Read a UTF-8 text file from the workspace.",
6
+ category: "file-read",
7
+ parameters: { type: "object", properties: { path: { type: "string" } }, required: ["path"] },
8
+ summarize: (args) => `read ${str(args, "path")}`,
9
+ async execute(args, ctx) {
10
+ const path = safePath(ctx, str(args, "path"));
11
+ if (!existsSync(path))
12
+ return { ok: false, output: `No such file: ${str(args, "path")}` };
13
+ const content = readFileSync(path, "utf8");
14
+ const clipped = content.length > 60_000 ? content.slice(0, 60_000) + "\n…(truncated)" : content;
15
+ return { ok: true, output: clipped };
16
+ },
17
+ };
18
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/builtins/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4CAA4C;IACzD,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;IAC5F,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;IAChD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC1F,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;QAChG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tool } from "../types.js";
2
+ export declare function htmlToText(html: string): string;
3
+ export declare const webFetchTool: Tool;
4
+ //# sourceMappingURL=web-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-fetch.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/web-fetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,IAAI,EAAc,MAAM,aAAa,CAAC;AAwIvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B/C;AA0FD,eAAO,MAAM,YAAY,EAAE,IA8F1B,CAAC"}