@xyit/wellspring 0.0.0-stage → 1.1.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 (464) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +853 -2
  3. package/dist/agent/pending-asks.d.ts +20 -0
  4. package/dist/agent/pending-asks.js +70 -0
  5. package/dist/agent/pending-asks.js.map +1 -0
  6. package/dist/agent/task-registry.d.ts +14 -0
  7. package/dist/agent/task-registry.js +80 -0
  8. package/dist/agent/task-registry.js.map +1 -0
  9. package/dist/agent/tool-context.d.ts +30 -0
  10. package/dist/agent/tool-context.js +10 -0
  11. package/dist/agent/tool-context.js.map +1 -0
  12. package/dist/agent/usage.d.ts +40 -0
  13. package/dist/agent/usage.js +122 -0
  14. package/dist/agent/usage.js.map +1 -0
  15. package/dist/api/host/agent.d.ts +165 -0
  16. package/dist/api/host/agent.js +5 -0
  17. package/dist/api/host/agent.js.map +1 -0
  18. package/dist/api/host/events.d.ts +2 -0
  19. package/dist/api/host/events.js +6 -0
  20. package/dist/api/host/events.js.map +1 -0
  21. package/dist/api/host/exec.d.ts +36 -0
  22. package/dist/api/host/exec.js +10 -0
  23. package/dist/api/host/exec.js.map +1 -0
  24. package/dist/api/host/fs.d.ts +24 -0
  25. package/dist/api/host/fs.js +7 -0
  26. package/dist/api/host/fs.js.map +1 -0
  27. package/dist/api/host/hooks.d.ts +210 -0
  28. package/dist/api/host/hooks.js +401 -0
  29. package/dist/api/host/hooks.js.map +1 -0
  30. package/dist/api/host/host.d.ts +36 -0
  31. package/dist/api/host/host.js +53 -0
  32. package/dist/api/host/host.js.map +1 -0
  33. package/dist/api/host/http.d.ts +58 -0
  34. package/dist/api/host/http.js +6 -0
  35. package/dist/api/host/http.js.map +1 -0
  36. package/dist/api/host/index.d.ts +15 -0
  37. package/dist/api/host/index.js +20 -0
  38. package/dist/api/host/index.js.map +1 -0
  39. package/dist/api/host/models.d.ts +65 -0
  40. package/dist/api/host/models.js +8 -0
  41. package/dist/api/host/models.js.map +1 -0
  42. package/dist/api/host/network.d.ts +22 -0
  43. package/dist/api/host/network.js +7 -0
  44. package/dist/api/host/network.js.map +1 -0
  45. package/dist/api/host/plugin.d.ts +138 -0
  46. package/dist/api/host/plugin.js +6 -0
  47. package/dist/api/host/plugin.js.map +1 -0
  48. package/dist/api/host/plugins.d.ts +49 -0
  49. package/dist/api/host/plugins.js +6 -0
  50. package/dist/api/host/plugins.js.map +1 -0
  51. package/dist/api/host/pty.d.ts +55 -0
  52. package/dist/api/host/pty.js +21 -0
  53. package/dist/api/host/pty.js.map +1 -0
  54. package/dist/api/host/session.d.ts +5 -0
  55. package/dist/api/host/session.js +52 -0
  56. package/dist/api/host/session.js.map +1 -0
  57. package/dist/api/host/version.d.ts +2 -0
  58. package/dist/api/host/version.js +3 -0
  59. package/dist/api/host/version.js.map +1 -0
  60. package/dist/api/host/workspace.d.ts +38 -0
  61. package/dist/api/host/workspace.js +9 -0
  62. package/dist/api/host/workspace.js.map +1 -0
  63. package/dist/api/plugin/http-client.d.ts +42 -0
  64. package/dist/api/plugin/http-client.js +364 -0
  65. package/dist/api/plugin/http-client.js.map +1 -0
  66. package/dist/api/plugin/http-protocol.d.ts +152 -0
  67. package/dist/api/plugin/http-protocol.js +49 -0
  68. package/dist/api/plugin/http-protocol.js.map +1 -0
  69. package/dist/api/result/result.d.ts +16 -0
  70. package/dist/api/result/result.js +43 -0
  71. package/dist/api/result/result.js.map +1 -0
  72. package/dist/commands/agent-turn.d.ts +63 -0
  73. package/dist/commands/agent-turn.js +687 -0
  74. package/dist/commands/agent-turn.js.map +1 -0
  75. package/dist/commands/ask-prompt.d.ts +6 -0
  76. package/dist/commands/ask-prompt.js +49 -0
  77. package/dist/commands/ask-prompt.js.map +1 -0
  78. package/dist/commands/config.d.ts +2 -0
  79. package/dist/commands/config.js +283 -0
  80. package/dist/commands/config.js.map +1 -0
  81. package/dist/commands/conversation.d.ts +51 -0
  82. package/dist/commands/conversation.js +630 -0
  83. package/dist/commands/conversation.js.map +1 -0
  84. package/dist/commands/doctor.d.ts +2 -0
  85. package/dist/commands/doctor.js +77 -0
  86. package/dist/commands/doctor.js.map +1 -0
  87. package/dist/commands/exec-approval.d.ts +3 -0
  88. package/dist/commands/exec-approval.js +80 -0
  89. package/dist/commands/exec-approval.js.map +1 -0
  90. package/dist/commands/help.d.ts +2 -0
  91. package/dist/commands/help.js +35 -0
  92. package/dist/commands/help.js.map +1 -0
  93. package/dist/commands/key.d.ts +2 -0
  94. package/dist/commands/key.js +226 -0
  95. package/dist/commands/key.js.map +1 -0
  96. package/dist/commands/plugin.d.ts +2 -0
  97. package/dist/commands/plugin.js +190 -0
  98. package/dist/commands/plugin.js.map +1 -0
  99. package/dist/commands/session.d.ts +2 -0
  100. package/dist/commands/session.js +167 -0
  101. package/dist/commands/session.js.map +1 -0
  102. package/dist/commands/shared.d.ts +35 -0
  103. package/dist/commands/shared.js +66 -0
  104. package/dist/commands/shared.js.map +1 -0
  105. package/dist/commands/start.d.ts +2 -0
  106. package/dist/commands/start.js +75 -0
  107. package/dist/commands/start.js.map +1 -0
  108. package/dist/commands/stop.d.ts +2 -0
  109. package/dist/commands/stop.js +24 -0
  110. package/dist/commands/stop.js.map +1 -0
  111. package/dist/commands/version.d.ts +2 -0
  112. package/dist/commands/version.js +33 -0
  113. package/dist/commands/version.js.map +1 -0
  114. package/dist/config/codes.d.ts +13 -0
  115. package/dist/config/codes.js +15 -0
  116. package/dist/config/codes.js.map +1 -0
  117. package/dist/config/credentials.d.ts +67 -0
  118. package/dist/config/credentials.js +214 -0
  119. package/dist/config/credentials.js.map +1 -0
  120. package/dist/config/defaults.d.ts +5 -0
  121. package/dist/config/defaults.js +31 -0
  122. package/dist/config/defaults.js.map +1 -0
  123. package/dist/config/index.d.ts +5 -0
  124. package/dist/config/index.js +10 -0
  125. package/dist/config/index.js.map +1 -0
  126. package/dist/config/loader.d.ts +10 -0
  127. package/dist/config/loader.js +68 -0
  128. package/dist/config/loader.js.map +1 -0
  129. package/dist/config/providers.d.ts +30 -0
  130. package/dist/config/providers.js +97 -0
  131. package/dist/config/providers.js.map +1 -0
  132. package/dist/config/types.d.ts +75 -0
  133. package/dist/config/types.js +4 -0
  134. package/dist/config/types.js.map +1 -0
  135. package/dist/config/validate.d.ts +4 -0
  136. package/dist/config/validate.js +391 -0
  137. package/dist/config/validate.js.map +1 -0
  138. package/dist/display/markdown.d.ts +7 -0
  139. package/dist/display/markdown.js +116 -0
  140. package/dist/display/markdown.js.map +1 -0
  141. package/dist/display/tool-label.d.ts +6 -0
  142. package/dist/display/tool-label.js +81 -0
  143. package/dist/display/tool-label.js.map +1 -0
  144. package/dist/event/event.d.ts +27 -0
  145. package/dist/event/event.js +152 -0
  146. package/dist/event/event.js.map +1 -0
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.js +308 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/input/codes.d.ts +15 -0
  151. package/dist/input/codes.js +20 -0
  152. package/dist/input/codes.js.map +1 -0
  153. package/dist/input/commands.d.ts +10 -0
  154. package/dist/input/commands.js +65 -0
  155. package/dist/input/commands.js.map +1 -0
  156. package/dist/input/help.d.ts +8 -0
  157. package/dist/input/help.js +51 -0
  158. package/dist/input/help.js.map +1 -0
  159. package/dist/input/index.d.ts +6 -0
  160. package/dist/input/index.js +10 -0
  161. package/dist/input/index.js.map +1 -0
  162. package/dist/input/parse-options.d.ts +11 -0
  163. package/dist/input/parse-options.js +51 -0
  164. package/dist/input/parse-options.js.map +1 -0
  165. package/dist/input/parse.d.ts +3 -0
  166. package/dist/input/parse.js +119 -0
  167. package/dist/input/parse.js.map +1 -0
  168. package/dist/input/types.d.ts +17 -0
  169. package/dist/input/types.js +2 -0
  170. package/dist/input/types.js.map +1 -0
  171. package/dist/logger/elog4js.d.ts +65 -0
  172. package/dist/logger/elog4js.js +305 -0
  173. package/dist/logger/elog4js.js.map +1 -0
  174. package/dist/logger/logger.d.ts +37 -0
  175. package/dist/logger/logger.js +196 -0
  176. package/dist/logger/logger.js.map +1 -0
  177. package/dist/network/index.d.ts +2 -0
  178. package/dist/network/index.js +6 -0
  179. package/dist/network/index.js.map +1 -0
  180. package/dist/network/openai.d.ts +117 -0
  181. package/dist/network/openai.js +443 -0
  182. package/dist/network/openai.js.map +1 -0
  183. package/dist/network/proxy.d.ts +9 -0
  184. package/dist/network/proxy.js +72 -0
  185. package/dist/network/proxy.js.map +1 -0
  186. package/dist/network/web.d.ts +34 -0
  187. package/dist/network/web.js +152 -0
  188. package/dist/network/web.js.map +1 -0
  189. package/dist/platform/clipboard.d.ts +15 -0
  190. package/dist/platform/clipboard.js +82 -0
  191. package/dist/platform/clipboard.js.map +1 -0
  192. package/dist/platform/exec.d.ts +28 -0
  193. package/dist/platform/exec.js +95 -0
  194. package/dist/platform/exec.js.map +1 -0
  195. package/dist/platform/file.d.ts +38 -0
  196. package/dist/platform/file.js +197 -0
  197. package/dist/platform/file.js.map +1 -0
  198. package/dist/platform/index.d.ts +7 -0
  199. package/dist/platform/index.js +12 -0
  200. package/dist/platform/index.js.map +1 -0
  201. package/dist/platform/notification.d.ts +14 -0
  202. package/dist/platform/notification.js +82 -0
  203. package/dist/platform/notification.js.map +1 -0
  204. package/dist/platform/open-external.d.ts +10 -0
  205. package/dist/platform/open-external.js +105 -0
  206. package/dist/platform/open-external.js.map +1 -0
  207. package/dist/platform/os.d.ts +20 -0
  208. package/dist/platform/os.js +86 -0
  209. package/dist/platform/os.js.map +1 -0
  210. package/dist/platform/path.d.ts +32 -0
  211. package/dist/platform/path.js +154 -0
  212. package/dist/platform/path.js.map +1 -0
  213. package/dist/plugin/access-guard.d.ts +1 -0
  214. package/dist/plugin/access-guard.js +40 -0
  215. package/dist/plugin/access-guard.js.map +1 -0
  216. package/dist/plugin/agent-service.d.ts +25 -0
  217. package/dist/plugin/agent-service.js +809 -0
  218. package/dist/plugin/agent-service.js.map +1 -0
  219. package/dist/plugin/agent-tools.d.ts +12 -0
  220. package/dist/plugin/agent-tools.js +31 -0
  221. package/dist/plugin/agent-tools.js.map +1 -0
  222. package/dist/plugin/capabilities.d.ts +26 -0
  223. package/dist/plugin/capabilities.js +192 -0
  224. package/dist/plugin/capabilities.js.map +1 -0
  225. package/dist/plugin/console-guard.d.ts +2 -0
  226. package/dist/plugin/console-guard.js +52 -0
  227. package/dist/plugin/console-guard.js.map +1 -0
  228. package/dist/plugin/data-access.d.ts +15 -0
  229. package/dist/plugin/data-access.js +57 -0
  230. package/dist/plugin/data-access.js.map +1 -0
  231. package/dist/plugin/fs.d.ts +3 -0
  232. package/dist/plugin/fs.js +93 -0
  233. package/dist/plugin/fs.js.map +1 -0
  234. package/dist/plugin/host-alias.d.ts +2 -0
  235. package/dist/plugin/host-alias.js +57 -0
  236. package/dist/plugin/host-alias.js.map +1 -0
  237. package/dist/plugin/index.d.ts +7 -0
  238. package/dist/plugin/index.js +11 -0
  239. package/dist/plugin/index.js.map +1 -0
  240. package/dist/plugin/install.d.ts +17 -0
  241. package/dist/plugin/install.js +163 -0
  242. package/dist/plugin/install.js.map +1 -0
  243. package/dist/plugin/loader.d.ts +45 -0
  244. package/dist/plugin/loader.js +739 -0
  245. package/dist/plugin/loader.js.map +1 -0
  246. package/dist/plugin/manage.d.ts +31 -0
  247. package/dist/plugin/manage.js +271 -0
  248. package/dist/plugin/manage.js.map +1 -0
  249. package/dist/plugin/models-service.d.ts +15 -0
  250. package/dist/plugin/models-service.js +317 -0
  251. package/dist/plugin/models-service.js.map +1 -0
  252. package/dist/plugin/network-service.d.ts +10 -0
  253. package/dist/plugin/network-service.js +87 -0
  254. package/dist/plugin/network-service.js.map +1 -0
  255. package/dist/plugin/package-manager.d.ts +46 -0
  256. package/dist/plugin/package-manager.js +148 -0
  257. package/dist/plugin/package-manager.js.map +1 -0
  258. package/dist/plugin/paths.d.ts +6 -0
  259. package/dist/plugin/paths.js +15 -0
  260. package/dist/plugin/paths.js.map +1 -0
  261. package/dist/plugin/registry.d.ts +17 -0
  262. package/dist/plugin/registry.js +82 -0
  263. package/dist/plugin/registry.js.map +1 -0
  264. package/dist/plugin/runtime.d.ts +9 -0
  265. package/dist/plugin/runtime.js +43 -0
  266. package/dist/plugin/runtime.js.map +1 -0
  267. package/dist/plugin/scaffold.d.ts +13 -0
  268. package/dist/plugin/scaffold.js +132 -0
  269. package/dist/plugin/scaffold.js.map +1 -0
  270. package/dist/plugin/state.d.ts +6 -0
  271. package/dist/plugin/state.js +38 -0
  272. package/dist/plugin/state.js.map +1 -0
  273. package/dist/plugin/zip.d.ts +7 -0
  274. package/dist/plugin/zip.js +138 -0
  275. package/dist/plugin/zip.js.map +1 -0
  276. package/dist/sandbox/audit.d.ts +12 -0
  277. package/dist/sandbox/audit.js +20 -0
  278. package/dist/sandbox/audit.js.map +1 -0
  279. package/dist/sandbox/backends/bwrap.d.ts +28 -0
  280. package/dist/sandbox/backends/bwrap.js +197 -0
  281. package/dist/sandbox/backends/bwrap.js.map +1 -0
  282. package/dist/sandbox/backends/direct.d.ts +7 -0
  283. package/dist/sandbox/backends/direct.js +32 -0
  284. package/dist/sandbox/backends/direct.js.map +1 -0
  285. package/dist/sandbox/bridge-state.d.ts +13 -0
  286. package/dist/sandbox/bridge-state.js +12 -0
  287. package/dist/sandbox/bridge-state.js.map +1 -0
  288. package/dist/sandbox/index.d.ts +5 -0
  289. package/dist/sandbox/index.js +6 -0
  290. package/dist/sandbox/index.js.map +1 -0
  291. package/dist/sandbox/manager.d.ts +8 -0
  292. package/dist/sandbox/manager.js +325 -0
  293. package/dist/sandbox/manager.js.map +1 -0
  294. package/dist/sandbox/memory-limit.d.ts +44 -0
  295. package/dist/sandbox/memory-limit.js +193 -0
  296. package/dist/sandbox/memory-limit.js.map +1 -0
  297. package/dist/sandbox/plugin-client.d.ts +80 -0
  298. package/dist/sandbox/plugin-client.js +1601 -0
  299. package/dist/sandbox/plugin-client.js.map +1 -0
  300. package/dist/sandbox/plugin-host.d.ts +1 -0
  301. package/dist/sandbox/plugin-host.js +1001 -0
  302. package/dist/sandbox/plugin-host.js.map +1 -0
  303. package/dist/sandbox/protocol.d.ts +43 -0
  304. package/dist/sandbox/protocol.js +96 -0
  305. package/dist/sandbox/protocol.js.map +1 -0
  306. package/dist/sandbox/rpc-timeouts.d.ts +28 -0
  307. package/dist/sandbox/rpc-timeouts.js +15 -0
  308. package/dist/sandbox/rpc-timeouts.js.map +1 -0
  309. package/dist/sandbox/supervisor.d.ts +31 -0
  310. package/dist/sandbox/supervisor.js +114 -0
  311. package/dist/sandbox/supervisor.js.map +1 -0
  312. package/dist/sandbox/types.d.ts +124 -0
  313. package/dist/sandbox/types.js +17 -0
  314. package/dist/sandbox/types.js.map +1 -0
  315. package/dist/service/control.d.ts +32 -0
  316. package/dist/service/control.js +117 -0
  317. package/dist/service/control.js.map +1 -0
  318. package/dist/session/compress.d.ts +3 -0
  319. package/dist/session/compress.js +42 -0
  320. package/dist/session/compress.js.map +1 -0
  321. package/dist/session/index.d.ts +4 -0
  322. package/dist/session/index.js +8 -0
  323. package/dist/session/index.js.map +1 -0
  324. package/dist/session/registry.d.ts +4 -0
  325. package/dist/session/registry.js +12 -0
  326. package/dist/session/registry.js.map +1 -0
  327. package/dist/session/replay.d.ts +10 -0
  328. package/dist/session/replay.js +109 -0
  329. package/dist/session/replay.js.map +1 -0
  330. package/dist/session/session.d.ts +40 -0
  331. package/dist/session/session.js +108 -0
  332. package/dist/session/session.js.map +1 -0
  333. package/dist/session/store.d.ts +58 -0
  334. package/dist/session/store.js +382 -0
  335. package/dist/session/store.js.map +1 -0
  336. package/dist/session/types.d.ts +56 -0
  337. package/dist/session/types.js +3 -0
  338. package/dist/session/types.js.map +1 -0
  339. package/dist/workspace/index.d.ts +7 -0
  340. package/dist/workspace/index.js +17 -0
  341. package/dist/workspace/index.js.map +1 -0
  342. package/dist/workspace/registry.d.ts +25 -0
  343. package/dist/workspace/registry.js +293 -0
  344. package/dist/workspace/registry.js.map +1 -0
  345. package/package.json +73 -5
  346. package/scripts/build-node-pty.mjs +55 -0
  347. package/scripts/rewrite-dts.mjs +36 -0
  348. package/scripts/run-tests.mjs +41 -0
  349. package/scripts/verify-sandbox.ts +98 -0
  350. package/src/agent/pending-asks.ts +88 -0
  351. package/src/agent/task-registry.ts +108 -0
  352. package/src/agent/tool-context.ts +47 -0
  353. package/src/agent/usage.ts +170 -0
  354. package/src/api/host/agent.ts +162 -0
  355. package/src/api/host/events.ts +7 -0
  356. package/src/api/host/exec.ts +47 -0
  357. package/src/api/host/fs.ts +33 -0
  358. package/src/api/host/hooks.ts +635 -0
  359. package/src/api/host/host.ts +99 -0
  360. package/src/api/host/http.ts +79 -0
  361. package/src/api/host/index.ts +20 -0
  362. package/src/api/host/models.ts +81 -0
  363. package/src/api/host/network.ts +32 -0
  364. package/src/api/host/plugin.ts +158 -0
  365. package/src/api/host/plugins.ts +59 -0
  366. package/src/api/host/pty.ts +73 -0
  367. package/src/api/host/session.ts +61 -0
  368. package/src/api/host/version.ts +2 -0
  369. package/src/api/host/workspace.ts +51 -0
  370. package/src/api/plugin/http-client.ts +492 -0
  371. package/src/api/plugin/http-protocol.ts +231 -0
  372. package/src/api/result/result.ts +52 -0
  373. package/src/commands/agent-turn.ts +817 -0
  374. package/src/commands/ask-prompt.ts +52 -0
  375. package/src/commands/config.ts +306 -0
  376. package/src/commands/conversation.ts +777 -0
  377. package/src/commands/doctor.ts +92 -0
  378. package/src/commands/exec-approval.ts +91 -0
  379. package/src/commands/help.ts +41 -0
  380. package/src/commands/key.ts +281 -0
  381. package/src/commands/plugin.ts +222 -0
  382. package/src/commands/session.ts +179 -0
  383. package/src/commands/shared.ts +103 -0
  384. package/src/commands/start.ts +88 -0
  385. package/src/commands/stop.ts +24 -0
  386. package/src/commands/version.ts +40 -0
  387. package/src/config/codes.ts +17 -0
  388. package/src/config/credentials.ts +302 -0
  389. package/src/config/defaults.ts +32 -0
  390. package/src/config/index.ts +10 -0
  391. package/src/config/loader.ts +80 -0
  392. package/src/config/providers.ts +133 -0
  393. package/src/config/types.ts +88 -0
  394. package/src/config/validate.ts +458 -0
  395. package/src/display/markdown.ts +137 -0
  396. package/src/display/tool-label.ts +87 -0
  397. package/src/event/event.ts +171 -0
  398. package/src/index.ts +344 -0
  399. package/src/input/codes.ts +21 -0
  400. package/src/input/commands.ts +76 -0
  401. package/src/input/help.ts +60 -0
  402. package/src/input/index.ts +10 -0
  403. package/src/input/parse-options.ts +66 -0
  404. package/src/input/parse.ts +138 -0
  405. package/src/input/types.ts +19 -0
  406. package/src/logger/elog4js.ts +366 -0
  407. package/src/logger/logger.ts +251 -0
  408. package/src/network/index.ts +6 -0
  409. package/src/network/openai.ts +571 -0
  410. package/src/network/proxy.ts +80 -0
  411. package/src/network/web.ts +206 -0
  412. package/src/platform/clipboard.ts +107 -0
  413. package/src/platform/exec.ts +128 -0
  414. package/src/platform/file.ts +235 -0
  415. package/src/platform/index.ts +12 -0
  416. package/src/platform/notification.ts +108 -0
  417. package/src/platform/open-external.ts +132 -0
  418. package/src/platform/os.ts +101 -0
  419. package/src/platform/path.ts +214 -0
  420. package/src/plugin/access-guard.ts +46 -0
  421. package/src/plugin/agent-service.ts +969 -0
  422. package/src/plugin/agent-tools.ts +43 -0
  423. package/src/plugin/capabilities.ts +240 -0
  424. package/src/plugin/console-guard.ts +66 -0
  425. package/src/plugin/data-access.ts +70 -0
  426. package/src/plugin/fs.ts +109 -0
  427. package/src/plugin/host-alias.ts +61 -0
  428. package/src/plugin/index.ts +11 -0
  429. package/src/plugin/install.ts +213 -0
  430. package/src/plugin/loader.ts +952 -0
  431. package/src/plugin/manage.ts +338 -0
  432. package/src/plugin/models-service.ts +383 -0
  433. package/src/plugin/network-service.ts +102 -0
  434. package/src/plugin/package-manager.ts +214 -0
  435. package/src/plugin/paths.ts +19 -0
  436. package/src/plugin/registry.ts +103 -0
  437. package/src/plugin/runtime.ts +57 -0
  438. package/src/plugin/scaffold.ts +158 -0
  439. package/src/plugin/state.ts +52 -0
  440. package/src/plugin/zip.ts +156 -0
  441. package/src/sandbox/audit.ts +38 -0
  442. package/src/sandbox/backends/bwrap.ts +251 -0
  443. package/src/sandbox/backends/direct.ts +43 -0
  444. package/src/sandbox/bridge-state.ts +29 -0
  445. package/src/sandbox/index.ts +5 -0
  446. package/src/sandbox/manager.ts +406 -0
  447. package/src/sandbox/memory-limit.ts +245 -0
  448. package/src/sandbox/plugin-client.ts +1881 -0
  449. package/src/sandbox/plugin-host.ts +1282 -0
  450. package/src/sandbox/protocol.ts +142 -0
  451. package/src/sandbox/pty-bridge.py +154 -0
  452. package/src/sandbox/rpc-timeouts.ts +43 -0
  453. package/src/sandbox/supervisor.ts +172 -0
  454. package/src/sandbox/types.ts +149 -0
  455. package/src/service/control.ts +155 -0
  456. package/src/session/compress.ts +47 -0
  457. package/src/session/index.ts +8 -0
  458. package/src/session/registry.ts +17 -0
  459. package/src/session/replay.ts +132 -0
  460. package/src/session/session.ts +134 -0
  461. package/src/session/store.ts +468 -0
  462. package/src/session/types.ts +61 -0
  463. package/src/workspace/index.ts +21 -0
  464. package/src/workspace/registry.ts +356 -0
@@ -0,0 +1,630 @@
1
+ /*
2
+ * chat / run 命令。
3
+ * 无 context 且 TTY 时进入交互式会话;否则单轮执行。
4
+ * 所有轮次都作为 zstd JSONL 段写入会话,流式 chunk 一并保存。
5
+ */
6
+ import { randomUUID } from "node:crypto";
7
+ import { createInterface } from "node:readline";
8
+ import { emitAfterStep, emitAfterTurn, emitBeforeStep, emitBeforeTurn, emitOnMessage, emitSessionStart, } from "../api/host/hooks.js";
9
+ import { Result } from "../api/result/result.js";
10
+ import { createMarkdownStream, renderMarkdown } from "../display/markdown.js";
11
+ import { USAGE_CODES } from "../input/codes.js";
12
+ import { booleanValue, parseCommandArgs, stringValue } from "../input/parse-options.js";
13
+ import { usageOf } from "../agent/usage.js";
14
+ import { registerSession } from "../session/registry.js";
15
+ import { lastSeq, lastTurnNumber, toChatMessages } from "../session/replay.js";
16
+ import { Session } from "../session/session.js";
17
+ import { SessionAmbiguousError, SessionLockedError, SessionNotFoundError, SessionStore, isValidSessionId, } from "../session/store.js";
18
+ import { executeAgentTurn } from "./agent-turn.js";
19
+ import { promptAgentAsk } from "./ask-prompt.js";
20
+ import { promptExecApproval } from "./exec-approval.js";
21
+ import { errorMessage, failure, success, } from "./shared.js";
22
+ function parseConversationOptions(ctx, argv) {
23
+ const parsed = parseCommandArgs(argv, {
24
+ "session-id": { type: "string" },
25
+ new: { type: "boolean" },
26
+ model: { type: "string" },
27
+ system: { type: "string" },
28
+ agent: { type: "string" },
29
+ json: { type: "boolean" },
30
+ stream: { type: "boolean" },
31
+ "allow-exec": { type: "boolean" },
32
+ permission: { type: "string" },
33
+ "max-steps": { type: "string" },
34
+ "no-stream": { type: "boolean" },
35
+ reasoning: { type: "string" },
36
+ });
37
+ if (!parsed.isSuccess()) {
38
+ return Result.error(parsed.getCode() ?? USAGE_CODES.invalidValue);
39
+ }
40
+ const line = parsed.getData();
41
+ if (line === null) {
42
+ return Result.error(USAGE_CODES.invalidValue);
43
+ }
44
+ const { values, positionals } = line;
45
+ const sessionId = stringValue(values, "session-id");
46
+ const newSession = booleanValue(values, "new");
47
+ if (sessionId !== undefined && newSession) {
48
+ return Result.error(USAGE_CODES.conflictingOptions);
49
+ }
50
+ if (sessionId !== undefined && !isValidSessionId(sessionId)) {
51
+ return Result.error(USAGE_CODES.invalidSessionId);
52
+ }
53
+ const streamFlag = booleanValue(values, "stream");
54
+ const noStream = booleanValue(values, "no-stream");
55
+ if (streamFlag && noStream) {
56
+ return Result.error(USAGE_CODES.conflictingOptions);
57
+ }
58
+ const json = ctx.global.json || booleanValue(values, "json");
59
+ const stream = streamFlag || noStream ? streamFlag : json === false && process.stdout.isTTY === true;
60
+ const rawPermission = stringValue(values, "permission");
61
+ let permission = ctx.settings.sandbox.access;
62
+ if (rawPermission !== undefined) {
63
+ if (rawPermission !== "read-only" &&
64
+ rawPermission !== "workspace-write" &&
65
+ rawPermission !== "danger-full-access") {
66
+ return Result.error(USAGE_CODES.invalidValue);
67
+ }
68
+ permission = rawPermission;
69
+ }
70
+ const rawMaxSteps = stringValue(values, "max-steps");
71
+ let maxSteps;
72
+ if (rawMaxSteps !== undefined) {
73
+ const parsedSteps = Number(rawMaxSteps);
74
+ if (!Number.isInteger(parsedSteps) || parsedSteps < 1 || parsedSteps > 32) {
75
+ return Result.error(USAGE_CODES.invalidValue);
76
+ }
77
+ maxSteps = parsedSteps;
78
+ }
79
+ return Result.successWithData({
80
+ sessionId,
81
+ newSession,
82
+ model: stringValue(values, "model") ?? ctx.activeModel ?? ctx.settings.openai.model,
83
+ system: stringValue(values, "system"),
84
+ agent: stringValue(values, "agent"),
85
+ json,
86
+ stream,
87
+ allowExec: booleanValue(values, "allow-exec"),
88
+ permission,
89
+ maxSteps,
90
+ reasoning: stringValue(values, "reasoning") ?? ctx.activeReasoning,
91
+ context: positionals,
92
+ });
93
+ }
94
+ function sessionCode(error) {
95
+ if (error instanceof SessionAmbiguousError) {
96
+ return "session.ambiguous-id";
97
+ }
98
+ if (error instanceof SessionNotFoundError) {
99
+ return "session.not-found";
100
+ }
101
+ if (error instanceof SessionLockedError) {
102
+ return "session.locked";
103
+ }
104
+ if (error instanceof Error && error.message.includes("会话 id 不合法")) {
105
+ return USAGE_CODES.invalidSessionId;
106
+ }
107
+ return "session.corrupted";
108
+ }
109
+ async function resolveSession(store, cwd, options) {
110
+ if (options.newSession) {
111
+ return { session: await store.create({ cwd, model: options.model }), created: true };
112
+ }
113
+ if (options.sessionId !== undefined) {
114
+ try {
115
+ return { session: await store.open(options.sessionId, cwd), created: false };
116
+ }
117
+ catch (error) {
118
+ if (error instanceof SessionNotFoundError) {
119
+ return {
120
+ session: await store.create({
121
+ cwd,
122
+ model: options.model,
123
+ id: options.sessionId,
124
+ }),
125
+ created: true,
126
+ };
127
+ }
128
+ throw error;
129
+ }
130
+ }
131
+ const last = await store.lastId(cwd);
132
+ if (last !== null) {
133
+ try {
134
+ return { session: await store.open(last, cwd), created: false };
135
+ }
136
+ catch {
137
+ // 落到新建
138
+ }
139
+ }
140
+ return { session: await store.create({ cwd, model: options.model }), created: true };
141
+ }
142
+ async function readStdin() {
143
+ process.stdin.setEncoding("utf8");
144
+ let text = "";
145
+ for await (const chunk of process.stdin) {
146
+ text += String(chunk);
147
+ }
148
+ return text;
149
+ }
150
+ /** 执行一轮对话并写入会话;失败也会提交 failed 轮次 */
151
+ export async function executeTurn(params) {
152
+ const { ctx, client, store, session, mode, input, model, system, stream, display } = params;
153
+ if (mode === "run") {
154
+ return await executeAgentTurn({
155
+ ctx,
156
+ client,
157
+ store,
158
+ session,
159
+ input,
160
+ model,
161
+ reasoning: params.reasoning,
162
+ system,
163
+ stream,
164
+ display,
165
+ allowExec: params.allowExec,
166
+ permission: params.permission,
167
+ maxSteps: params.maxSteps,
168
+ approveExec: params.approveExec,
169
+ onDelta: params.onDelta,
170
+ onReasoning: params.onReasoning,
171
+ onTool: params.onTool,
172
+ onAsk: params.onAsk,
173
+ askUser: params.askUser,
174
+ onStep: params.onStep,
175
+ signal: params.signal,
176
+ });
177
+ }
178
+ const turn = lastTurnNumber(session.events) + 1;
179
+ let seq = lastSeq(session.events) + 1;
180
+ const startedAt = Date.now();
181
+ await emitBeforeTurn({
182
+ sessionId: session.meta.id,
183
+ mode,
184
+ turn,
185
+ input,
186
+ cwd: session.meta.workspace ?? session.meta.cwd,
187
+ });
188
+ const events = [
189
+ { type: "turn/start", seq: seq++, time: startedAt, data: { turn, mode } },
190
+ {
191
+ type: "user/message",
192
+ seq: seq++,
193
+ time: Date.now(),
194
+ data: {
195
+ message: {
196
+ role: "user",
197
+ content: [{ type: "text", text: input }],
198
+ source: { kind: "cli" },
199
+ id: randomUUID(),
200
+ },
201
+ surfaceOp: "append",
202
+ },
203
+ },
204
+ ];
205
+ /*
206
+ * 用户消息先落盘:进程在模型流式过程中退出时,这一轮的问题不会从会话里消失。
207
+ */
208
+ let persisted = 0;
209
+ const persistPending = async () => {
210
+ if (events.length <= persisted) {
211
+ return;
212
+ }
213
+ await store.appendTurn(session, events.slice(persisted));
214
+ persisted = events.length;
215
+ };
216
+ // onSessionStart 只在新会话的第一轮触发;onMessage 的 before 阶段每轮都可以追加系统提示
217
+ const prompt = [];
218
+ if (system !== undefined && system.trim() !== "") {
219
+ prompt.push(system);
220
+ }
221
+ if (turn === 1) {
222
+ await emitSessionStart({
223
+ sessionId: session.meta.id,
224
+ mode,
225
+ turn,
226
+ input,
227
+ cwd: session.meta.workspace ?? session.meta.cwd,
228
+ time: startedAt,
229
+ timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
230
+ model,
231
+ permission: params.permission ?? ctx.settings.sandbox.access,
232
+ // chat 模式没有工具循环
233
+ tools: [],
234
+ prompt,
235
+ });
236
+ }
237
+ await emitOnMessage({
238
+ sessionId: session.meta.id,
239
+ mode,
240
+ turn,
241
+ role: "user",
242
+ phase: "before",
243
+ content: input,
244
+ prompt,
245
+ });
246
+ const messages = [];
247
+ const systemText = prompt
248
+ .map((item) => item.trim())
249
+ .filter((item) => item !== "")
250
+ .join("\n\n");
251
+ if (systemText !== "") {
252
+ messages.push({ role: "system", content: systemText });
253
+ }
254
+ messages.push(...toChatMessages(session.events), { role: "user", content: input });
255
+ // 模型入参已经拼好,再把开头事件落盘,避免本轮用户消息被重复算进历史
256
+ await persistPending();
257
+ await emitBeforeStep({
258
+ sessionId: session.meta.id,
259
+ mode,
260
+ turn,
261
+ step: 1,
262
+ input,
263
+ });
264
+ const streamed = display && stream;
265
+ const markdownEnabled = display && process.stdout.isTTY === true;
266
+ const markdown = markdownEnabled && streamed ? createMarkdownStream() : null;
267
+ const streamResult = await client.chatStream(messages, {
268
+ model,
269
+ reasoning: params.reasoning,
270
+ onText: streamed
271
+ ? (text) => {
272
+ ctx.elog.stream(markdown === null ? text : markdown.push(text));
273
+ }
274
+ : undefined,
275
+ });
276
+ if (!streamResult.isSuccess()) {
277
+ const code = streamResult.getCode() ?? "openai.request-failed";
278
+ events.push({
279
+ type: "turn/end",
280
+ seq: seq++,
281
+ time: Date.now(),
282
+ data: { turn, reason: { kind: "failed", code } },
283
+ });
284
+ await persistPending();
285
+ await emitAfterTurn({
286
+ sessionId: session.meta.id,
287
+ mode,
288
+ turn,
289
+ reason: "failed",
290
+ code,
291
+ });
292
+ if (streamed) {
293
+ if (markdown !== null) {
294
+ const tail = markdown.finish().replace(/\n+$/, "");
295
+ if (tail !== "") {
296
+ ctx.elog.stream(tail);
297
+ }
298
+ }
299
+ ctx.elog.line();
300
+ }
301
+ return Result.error(code);
302
+ }
303
+ const data = streamResult.getData();
304
+ const assistant = {
305
+ role: "assistant",
306
+ content: [{ type: "text", text: data.reply.text }],
307
+ source: { kind: "model", provider: "openai", model: data.reply.model },
308
+ id: data.reply.id,
309
+ };
310
+ events.push({
311
+ type: "assistant/message",
312
+ seq: seq++,
313
+ time: Date.now(),
314
+ data: {
315
+ turn,
316
+ step: 1,
317
+ message: assistant,
318
+ usage: { ...usageOf(data.reply) },
319
+ stream: data.chunks,
320
+ },
321
+ });
322
+ events.push({
323
+ type: "turn/end",
324
+ seq,
325
+ time: Date.now(),
326
+ data: { turn, reason: { kind: "completed" } },
327
+ });
328
+ await persistPending();
329
+ await emitOnMessage({
330
+ sessionId: session.meta.id,
331
+ mode,
332
+ turn,
333
+ role: "assistant",
334
+ phase: "after",
335
+ content: data.reply.text,
336
+ prompt,
337
+ });
338
+ await emitAfterStep({
339
+ sessionId: session.meta.id,
340
+ mode,
341
+ turn,
342
+ step: 1,
343
+ reply: data.reply.text,
344
+ });
345
+ await emitAfterTurn({
346
+ sessionId: session.meta.id,
347
+ mode,
348
+ turn,
349
+ reason: "completed",
350
+ code: null,
351
+ });
352
+ if (streamed) {
353
+ if (markdown !== null) {
354
+ const tail = markdown.finish().replace(/\n+$/, "");
355
+ if (tail !== "") {
356
+ ctx.elog.stream(tail);
357
+ }
358
+ }
359
+ ctx.elog.line();
360
+ }
361
+ else if (display) {
362
+ ctx.elog.print(markdownEnabled ? renderMarkdown(data.reply.text) : data.reply.text);
363
+ }
364
+ return Result.successWithData({
365
+ sessionId: session.meta.id,
366
+ mode,
367
+ turn,
368
+ steps: 1,
369
+ reply: data.reply.text,
370
+ model: data.reply.model,
371
+ usage: data.reply.inputTokens === null &&
372
+ data.reply.outputTokens === null &&
373
+ data.reply.cacheReadTokens === undefined &&
374
+ data.reply.cacheWriteTokens === undefined
375
+ ? null
376
+ : usageOf(data.reply),
377
+ });
378
+ }
379
+ function promptText(session, mode) {
380
+ const name = session.meta.title ?? session.meta.id.slice(-4);
381
+ return `${name}${mode === "run" ? " [run]" : ""} > `;
382
+ }
383
+ async function runRepl(ctx, params) {
384
+ const cwd = process.cwd();
385
+ const rl = createInterface({
386
+ input: process.stdin,
387
+ output: process.stdout,
388
+ terminal: process.stdin.isTTY === true,
389
+ historySize: 100,
390
+ });
391
+ let session = params.session;
392
+ registerSession(new Session(session, params.store));
393
+ let model = params.options.model;
394
+ let permission = params.options.permission;
395
+ let closed = false;
396
+ const refresh = () => {
397
+ const name = session.meta.title ?? session.meta.id.slice(-4);
398
+ ctx.elog.setSessionName(name);
399
+ };
400
+ refresh();
401
+ // 逐次审批
402
+ const approveExec = async (request) => {
403
+ rl.pause();
404
+ try {
405
+ return await promptExecApproval(request);
406
+ }
407
+ finally {
408
+ rl.resume();
409
+ }
410
+ };
411
+ // ask 工具:在当前终端里提问
412
+ const askUser = async (request) => {
413
+ rl.pause();
414
+ try {
415
+ return await promptAgentAsk(request);
416
+ }
417
+ finally {
418
+ rl.resume();
419
+ }
420
+ };
421
+ const handleSlash = async (line) => {
422
+ const [command, ...args] = line.split(/\s+/);
423
+ switch (command) {
424
+ case "/exit":
425
+ case "/quit":
426
+ return "exit";
427
+ case "/help":
428
+ ctx.elog.info("命令:/exit /help /new /session [/list|id] /clear /model <name>");
429
+ return "continue";
430
+ case "/new":
431
+ session = await params.store.create({ cwd, model });
432
+ registerSession(new Session(session, params.store));
433
+ ctx.elog.notice(`session: ${session.meta.id}`);
434
+ return "continue";
435
+ case "/session": {
436
+ if (args[0] === "list") {
437
+ const list = await params.store.list({ cwd, limit: 20 });
438
+ for (const item of list) {
439
+ ctx.elog.print(`${item.id}${item.last ? " *" : ""} turns=${item.turns} ${item.cwd}`);
440
+ }
441
+ return "continue";
442
+ }
443
+ if (args[0] !== undefined) {
444
+ session = await params.store.open(args[0], cwd);
445
+ registerSession(new Session(session, params.store));
446
+ return "continue";
447
+ }
448
+ ctx.elog.print(`${session.meta.id} turns=${session.turns.length} ${session.meta.workspace ?? session.meta.cwd}`);
449
+ return "continue";
450
+ }
451
+ case "/clear":
452
+ ctx.elog.clear();
453
+ return "continue";
454
+ case "/permission":
455
+ if (args[0] !== undefined) {
456
+ if (args[0] !== "read-only" &&
457
+ args[0] !== "workspace-write" &&
458
+ args[0] !== "danger-full-access") {
459
+ ctx.elog.error("用法:/permission read-only|workspace-write|danger-full-access");
460
+ return "continue";
461
+ }
462
+ permission = args[0];
463
+ }
464
+ ctx.elog.info(`permission: ${permission}`);
465
+ return "continue";
466
+ case "/model":
467
+ if (args[0] !== undefined && args[0].trim() !== "") {
468
+ model = args[0].trim();
469
+ ctx.elog.info(`model: ${model}`);
470
+ }
471
+ else {
472
+ ctx.elog.error("用法:/model <name>");
473
+ }
474
+ return "continue";
475
+ default:
476
+ ctx.elog.error(`未知命令:${command ?? ""}`);
477
+ return "continue";
478
+ }
479
+ };
480
+ const ask = () => {
481
+ rl.question(promptText(session, params.mode), (line) => {
482
+ void handleLine(line);
483
+ });
484
+ };
485
+ const handleLine = async (line) => {
486
+ if (closed) {
487
+ return;
488
+ }
489
+ const text = line.trim();
490
+ if (text === "") {
491
+ ask();
492
+ return;
493
+ }
494
+ if (text.startsWith("/") && !text.startsWith("//")) {
495
+ try {
496
+ if ((await handleSlash(text)) === "exit") {
497
+ rl.close();
498
+ return;
499
+ }
500
+ }
501
+ catch (error) {
502
+ ctx.elog.error(errorMessage(sessionCode(error)));
503
+ }
504
+ refresh();
505
+ ask();
506
+ return;
507
+ }
508
+ const input = text.startsWith("//") ? text.slice(1) : text;
509
+ try {
510
+ const result = await executeTurn({
511
+ ctx,
512
+ client: ctx.openai,
513
+ store: params.store,
514
+ session,
515
+ mode: params.mode,
516
+ input,
517
+ model,
518
+ reasoning: params.options.reasoning,
519
+ system: params.options.system,
520
+ stream: params.options.stream,
521
+ display: true,
522
+ allowExec: params.options.allowExec,
523
+ permission,
524
+ maxSteps: params.options.maxSteps,
525
+ approveExec,
526
+ askUser,
527
+ });
528
+ if (!result.isSuccess()) {
529
+ ctx.elog.error(errorMessage(result.getCode() ?? "openai.request-failed"));
530
+ }
531
+ }
532
+ catch (error) {
533
+ ctx.elog.error(errorMessage(sessionCode(error)));
534
+ }
535
+ refresh();
536
+ ask();
537
+ };
538
+ rl.on("SIGINT", () => {
539
+ rl.close();
540
+ });
541
+ rl.on("close", () => {
542
+ closed = true;
543
+ });
544
+ ask();
545
+ await new Promise((resolve) => rl.once("close", resolve));
546
+ return success(null);
547
+ }
548
+ export async function runConversationCommand(ctx, argv, mode) {
549
+ if (ctx.openai === null) {
550
+ return failure("openai.missing-api-key");
551
+ }
552
+ const parsed = parseConversationOptions(ctx, argv);
553
+ if (!parsed.isSuccess()) {
554
+ return { result: Result.error(parsed.getCode() ?? USAGE_CODES.invalidValue) };
555
+ }
556
+ const options = parsed.getData();
557
+ if (options === null) {
558
+ return failure(USAGE_CODES.invalidValue);
559
+ }
560
+ const store = new SessionStore();
561
+ const cwd = process.cwd();
562
+ let session;
563
+ let created = false;
564
+ try {
565
+ const resolved = await resolveSession(store, cwd, options);
566
+ session = resolved.session;
567
+ created = resolved.created;
568
+ }
569
+ catch (error) {
570
+ return failure(sessionCode(error));
571
+ }
572
+ const interactive = options.json === false &&
573
+ process.stdin.isTTY === true &&
574
+ process.stdout.isTTY === true &&
575
+ options.context.length === 0;
576
+ if (interactive) {
577
+ if (created) {
578
+ ctx.elog.notice(`session: ${session.meta.id}`);
579
+ }
580
+ return await runRepl(ctx, { store, session, mode, options });
581
+ }
582
+ let input = options.context.join(" ").trim();
583
+ if (input === "") {
584
+ if (process.stdin.isTTY === true) {
585
+ return failure(USAGE_CODES.missingContext);
586
+ }
587
+ input = (await readStdin()).trim();
588
+ }
589
+ if (input === "") {
590
+ return failure(USAGE_CODES.missingContext);
591
+ }
592
+ if (created) {
593
+ ctx.elog.notice(`session: ${session.meta.id}`);
594
+ }
595
+ registerSession(new Session(session, store));
596
+ const result = await executeTurn({
597
+ ctx,
598
+ client: ctx.openai,
599
+ store,
600
+ session,
601
+ mode,
602
+ input,
603
+ model: options.model,
604
+ reasoning: options.reasoning,
605
+ system: options.system,
606
+ stream: options.stream,
607
+ display: options.json === false,
608
+ allowExec: options.allowExec,
609
+ permission: options.permission,
610
+ maxSteps: options.maxSteps,
611
+ approveExec: options.json === false && process.stdin.isTTY === true && process.stdout.isTTY === true
612
+ ? promptExecApproval
613
+ : undefined,
614
+ askUser: options.json === false && process.stdin.isTTY === true && process.stdout.isTTY === true
615
+ ? promptAgentAsk
616
+ : async () => null,
617
+ });
618
+ if (!result.isSuccess()) {
619
+ return { result: Result.error(result.getCode() ?? "openai.request-failed") };
620
+ }
621
+ const data = result.getData();
622
+ return success({
623
+ sessionId: data?.sessionId,
624
+ mode,
625
+ reply: data?.reply,
626
+ model: data?.model,
627
+ usage: data?.usage,
628
+ });
629
+ }
630
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/commands/conversation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type CommandContext, type CommandOutcome } from "./shared.js";
2
+ export declare function runDoctorCommand(ctx: CommandContext): Promise<CommandOutcome>;