@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 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/api/host/exec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsCH,yBAAyB;AACzB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzD,kBAAkB;AAClB,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAA"}
@@ -0,0 +1,24 @@
1
+ export type HostFileType = "file" | "directory" | "other";
2
+ export interface HostFileStat {
3
+ readonly type: HostFileType;
4
+ readonly size: number;
5
+ readonly mtimeMs: number;
6
+ }
7
+ export interface HostFileEntry extends HostFileStat {
8
+ readonly name: string;
9
+ }
10
+ export interface HostFileApi {
11
+ /** 该 API 的根目录,仅用于展示/诊断 */
12
+ readonly root: string;
13
+ readText(path: string): Promise<string | null>;
14
+ readBytes(path: string): Promise<Uint8Array | null>;
15
+ readJson<T = unknown>(path: string): Promise<T | null>;
16
+ writeText(path: string, text: string): Promise<void>;
17
+ writeBytes(path: string, bytes: Uint8Array): Promise<void>;
18
+ writeJson(path: string, value: unknown): Promise<void>;
19
+ list(path?: string): Promise<readonly HostFileEntry[]>;
20
+ stat(path: string): Promise<HostFileStat | null>;
21
+ mkdir(path: string): Promise<void>;
22
+ remove(path: string): Promise<void>;
23
+ exists(path: string): Promise<boolean>;
24
+ }
@@ -0,0 +1,7 @@
1
+ /*
2
+ * 宿主文件 API。
3
+ * 插件通过 api.fs / ctx.fs(插件数据目录)或 api.workspaceFs / ctx.workspaceFs(当前工作目录)访问文件。
4
+ * 路径必须是相对路径,且不能逃出对应根目录。
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/api/host/fs.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,210 @@
1
+ export type HookKind = "message" | "sessionStart" | "beforeTurn" | "beforeStep" | "afterStep" | "afterTurn" | "agentRunSync" | "agentRunAsync" | "agentAsyncTaskComplete" | "agentCallTool" | "agentAsk" | "agentRead" | "agentQueryTask" | "agentSubmit" | "agentSetTasks" | "agentSetGoal" | "agentRequestPermission" | "userAnswer" | "init" | "shutdown";
2
+ export type HookHandler<Args extends unknown[]> = (...args: Args) => void | Promise<void>;
3
+ export type Unregister = () => void;
4
+ declare abstract class EventBase {
5
+ constructor(input: Record<string, unknown>);
6
+ }
7
+ export declare class SessionLifecycleEvent extends EventBase {
8
+ readonly sessionId: string;
9
+ readonly mode: "chat" | "run";
10
+ readonly turn: number;
11
+ }
12
+ export declare class SessionMessageEvent extends SessionLifecycleEvent {
13
+ readonly role: "user" | "assistant";
14
+ readonly phase: "before" | "after";
15
+ readonly content: string;
16
+ /** before 阶段可追加系统提示;平台会把数组拼进系统消息 */
17
+ readonly prompt: string[];
18
+ }
19
+ /**
20
+ * 会话的第一轮开始前触发(新会话的第一次对话)。
21
+ *
22
+ * 与 `onMessage` 的区别:`onSessionStart` 每个会话只触发一次,适合注入一次性的
23
+ * system prompt(例如插件的角色设定、工作区约定);`onMessage` 的 before 阶段每轮都触发。
24
+ * 可以在 `prompt` 数组里追加字符串,平台会把它们拼进 system 消息。
25
+ */
26
+ export interface SessionStartTool {
27
+ readonly name: string;
28
+ readonly description: string;
29
+ }
30
+ export declare class SessionStartEvent extends SessionLifecycleEvent {
31
+ readonly input: string;
32
+ readonly cwd: string;
33
+ /** 第一轮开始的宿主时间戳 */
34
+ readonly time: number;
35
+ /** 宿主时区(IANA 名称,例如 Asia/Shanghai) */
36
+ readonly timeZone: string;
37
+ /** 本轮使用的模型 */
38
+ readonly model: string;
39
+ /** 本轮生效的 sandbox 权限 */
40
+ readonly permission: string;
41
+ /** 本轮可调用的工具(含平台内置 ask;纯对话模式为空) */
42
+ readonly tools: readonly SessionStartTool[];
43
+ /** 可追加系统提示;平台会拼进 system 消息 */
44
+ readonly prompt: string[];
45
+ }
46
+ export declare class BeforeTurnEvent extends SessionLifecycleEvent {
47
+ readonly input: string;
48
+ readonly cwd: string;
49
+ }
50
+ export declare class BeforeStepEvent extends SessionLifecycleEvent {
51
+ readonly step: number;
52
+ readonly input: string;
53
+ }
54
+ export declare class AfterStepEvent extends SessionLifecycleEvent {
55
+ readonly step: number;
56
+ readonly reply: string;
57
+ }
58
+ export declare class AfterTurnEvent extends SessionLifecycleEvent {
59
+ readonly reason: "completed" | "failed" | "cancelled";
60
+ readonly code: string | null;
61
+ }
62
+ export declare class AgentRunEvent extends EventBase {
63
+ readonly sessionId: string;
64
+ readonly turn: number;
65
+ readonly input: string;
66
+ readonly cwd: string;
67
+ }
68
+ /** onAgentRunAsync:Agent 创建异步任务之前 */
69
+ export declare class AgentAsyncTaskEvent extends EventBase {
70
+ readonly sessionId: string;
71
+ readonly taskId: string;
72
+ readonly task: string;
73
+ readonly cwd: string;
74
+ }
75
+ /** onAgentAsyncTaskComplete:异步任务结束 */
76
+ export declare class AgentAsyncTaskCompleteEvent extends EventBase {
77
+ readonly sessionId: string;
78
+ readonly taskId: string;
79
+ readonly status: "completed" | "failed" | "cancelled";
80
+ readonly result: unknown;
81
+ readonly error: string | null;
82
+ }
83
+ export declare class AgentCallToolEvent extends EventBase {
84
+ readonly sessionId: string;
85
+ readonly turn: number;
86
+ readonly step: number;
87
+ readonly callId: string;
88
+ readonly name: string;
89
+ readonly arguments: string;
90
+ }
91
+ export declare class AgentAskEvent extends EventBase {
92
+ readonly sessionId: string;
93
+ /** 本次提问的 id;回答时对应用 UserAnswerEvent.askId */
94
+ readonly askId?: string;
95
+ readonly turn?: number;
96
+ readonly step?: number;
97
+ readonly question: string;
98
+ readonly options?: readonly string[];
99
+ }
100
+ export declare class AgentReadEvent extends EventBase {
101
+ readonly sessionId: string;
102
+ readonly turn: number;
103
+ readonly step: number;
104
+ readonly path: string;
105
+ readonly content: string | null;
106
+ }
107
+ export declare class AgentQueryTaskEvent extends EventBase {
108
+ readonly sessionId: string;
109
+ readonly query?: string;
110
+ }
111
+ export declare class AgentSubmitEvent extends EventBase {
112
+ readonly sessionId: string;
113
+ readonly result: unknown;
114
+ }
115
+ export declare class AgentSetTasksEvent extends EventBase {
116
+ readonly sessionId: string;
117
+ readonly tasks: readonly string[];
118
+ }
119
+ export declare class AgentSetGoalEvent extends EventBase {
120
+ readonly sessionId: string;
121
+ readonly goal: string;
122
+ }
123
+ export declare class AgentRequestPermissionEvent extends EventBase {
124
+ readonly sessionId: string;
125
+ readonly action: string;
126
+ readonly resource?: string;
127
+ }
128
+ export declare class UserAnswerEvent extends EventBase {
129
+ readonly sessionId: string;
130
+ readonly askId?: string;
131
+ readonly answer: string;
132
+ }
133
+ export interface HookError {
134
+ readonly hook: HookKind;
135
+ readonly owner: string | null;
136
+ readonly error: unknown;
137
+ }
138
+ /** 在插件加载/执行期间设置钩子归属;平台内部使用 */
139
+ export declare function withHookOwner<T>(pluginId: string, task: () => T | Promise<T>): Promise<T>;
140
+ /** 平台内部:当前正在执行的插件(用于访问守卫) */
141
+ export declare function getHookOwner(): string | null;
142
+ /** 平台注入错误处理,钩子抛错时不打断主流程 */
143
+ export declare function setHookErrorHandler(handler: (error: HookError) => void): void;
144
+ type HookGuard = (owner: string, task: () => Promise<void>) => Promise<void>;
145
+ /** 平台内部:在钩子执行期间应用插件级 console 拦截等 */
146
+ export declare function setHookGuard(guard: HookGuard | null): void;
147
+ /** 插件加载失败时清掉它已注册的钩子 */
148
+ export declare function removeHooksByOwner(owner: string): void;
149
+ /** 宿主内部:为 sandbox 插件注册远程钩子 */
150
+ export declare function registerExternalHook(kind: HookKind, owner: string, handler: HookHandler<[unknown]>): Unregister;
151
+ /** 当前 owner 注册了哪些钩子(sandbox runner 上报用) */
152
+ export declare function listHookKinds(owner: string): HookKind[];
153
+ export declare function onMessage(handler: HookHandler<[SessionMessageEvent]>): Unregister;
154
+ /** 会话第一轮开始前触发一次;可往 prompt 里追加 system 提示 */
155
+ export declare function onSessionStart(handler: HookHandler<[SessionStartEvent]>): Unregister;
156
+ export declare function beforeTurn(handler: HookHandler<[BeforeTurnEvent]>): Unregister;
157
+ export declare function beforeStep(handler: HookHandler<[BeforeStepEvent]>): Unregister;
158
+ export declare function afterStep(handler: HookHandler<[AfterStepEvent]>): Unregister;
159
+ export declare function afterTurn(handler: HookHandler<[AfterTurnEvent]>): Unregister;
160
+ /** run 模式开始同步执行前触发 */
161
+ export declare function onAgentRunSync(handler: HookHandler<[AgentRunEvent]>): Unregister;
162
+ /** Agent 即将创建异步任务时触发 */
163
+ export declare function onAgentRunAsync(handler: HookHandler<[AgentAsyncTaskEvent]>): Unregister;
164
+ /** Agent 异步任务结束后触发 */
165
+ export declare function onAgentAsyncTaskComplete(handler: HookHandler<[AgentAsyncTaskCompleteEvent]>): Unregister;
166
+ export declare function onAgentCallTool(handler: HookHandler<[AgentCallToolEvent]>): Unregister;
167
+ export declare function onAgentAsk(handler: HookHandler<[AgentAskEvent]>): Unregister;
168
+ export declare function onAgentRead(handler: HookHandler<[AgentReadEvent]>): Unregister;
169
+ export declare function onAgentQueryTask(handler: HookHandler<[AgentQueryTaskEvent]>): Unregister;
170
+ export declare function onAgentSubmit(handler: HookHandler<[AgentSubmitEvent]>): Unregister;
171
+ export declare function onAgentSetTasks(handler: HookHandler<[AgentSetTasksEvent]>): Unregister;
172
+ export declare function onAgentSetGoal(handler: HookHandler<[AgentSetGoalEvent]>): Unregister;
173
+ export declare function onAgentRequestPermission(handler: HookHandler<[AgentRequestPermissionEvent]>): Unregister;
174
+ export declare function onUserAnswer(handler: HookHandler<[UserAnswerEvent]>): Unregister;
175
+ /** 服务进程加载完插件后触发 */
176
+ export declare function onInit(handler: HookHandler<[]>): Unregister;
177
+ /** 服务进程关闭前触发;Ctrl+C 或 shutdown() 后执行 */
178
+ export declare function onShutdown(handler: HookHandler<[]>): Unregister;
179
+ export declare function emitOnMessage(payload: SessionMessageEvent): Promise<void>;
180
+ export declare function emitSessionStart(payload: SessionStartEvent): Promise<void>;
181
+ export declare function emitBeforeTurn(payload: BeforeTurnEvent): Promise<void>;
182
+ export declare function emitBeforeStep(payload: BeforeStepEvent): Promise<void>;
183
+ export declare function emitAfterStep(payload: AfterStepEvent): Promise<void>;
184
+ export declare function emitAfterTurn(payload: AfterTurnEvent): Promise<void>;
185
+ export declare function emitAgentRunSync(payload: AgentRunEvent): Promise<void>;
186
+ export declare function emitAgentRunAsync(payload: AgentAsyncTaskEvent): Promise<void>;
187
+ export declare function emitAgentAsyncTaskComplete(payload: AgentAsyncTaskCompleteEvent): Promise<void>;
188
+ export declare function emitAgentCallTool(payload: AgentCallToolEvent): Promise<void>;
189
+ export declare function emitAgentAsk(payload: AgentAskEvent): Promise<void>;
190
+ export declare function emitAgentRead(payload: AgentReadEvent): Promise<void>;
191
+ export declare function emitAgentQueryTask(payload: AgentQueryTaskEvent): Promise<void>;
192
+ export declare function emitAgentSubmit(payload: AgentSubmitEvent): Promise<void>;
193
+ export declare function emitAgentSetTasks(payload: AgentSetTasksEvent): Promise<void>;
194
+ export declare function emitAgentSetGoal(payload: AgentSetGoalEvent): Promise<void>;
195
+ export declare function emitAgentRequestPermission(payload: AgentRequestPermissionEvent): Promise<void>;
196
+ export declare function emitUserAnswer(payload: UserAnswerEvent): Promise<void>;
197
+ export declare function emitInitHooks(): Promise<void>;
198
+ export declare function emitShutdownHooks(): Promise<void>;
199
+ /** 只触发某个插件的 init hooks;热启用时使用 */
200
+ export declare function emitInitHooksForOwner(owner: string): Promise<void>;
201
+ /** 只触发某个插件的 shutdown hooks;热禁用时使用 */
202
+ export declare function emitShutdownHooksForOwner(owner: string): Promise<void>;
203
+ /** 平台内部:start 命令注册关闭回调 */
204
+ export declare function setShutdownHandler(handler: (() => void) | null): void;
205
+ /**
206
+ * 请求服务进程优雅关闭。
207
+ * 只能在 `wellspring start` 进程内调用;关闭流程会先执行 onShutdown 钩子。
208
+ */
209
+ export declare function shutdown(): void;
210
+ export {};
@@ -0,0 +1,401 @@
1
+ /*
2
+ * 平台 → 插件的钩子。
3
+ * 插件通过 `wellspring/api/host/index.ts` 导入注册函数;平台在对话生命周期里触发。
4
+ * 注册发生在插件 import / setup / init 期间,用 AsyncLocalStorage 记录归属插件。
5
+ */
6
+ import { AsyncLocalStorage } from "node:async_hooks";
7
+ import { getHostBridge } from "../../sandbox/bridge-state.js";
8
+ class EventBase {
9
+ constructor(input) {
10
+ Object.assign(this, input);
11
+ }
12
+ }
13
+ export class SessionLifecycleEvent extends EventBase {
14
+ }
15
+ export class SessionMessageEvent extends SessionLifecycleEvent {
16
+ }
17
+ export class SessionStartEvent extends SessionLifecycleEvent {
18
+ }
19
+ export class BeforeTurnEvent extends SessionLifecycleEvent {
20
+ }
21
+ export class BeforeStepEvent extends SessionLifecycleEvent {
22
+ }
23
+ export class AfterStepEvent extends SessionLifecycleEvent {
24
+ }
25
+ export class AfterTurnEvent extends SessionLifecycleEvent {
26
+ }
27
+ export class AgentRunEvent extends EventBase {
28
+ }
29
+ /** onAgentRunAsync:Agent 创建异步任务之前 */
30
+ export class AgentAsyncTaskEvent extends EventBase {
31
+ }
32
+ /** onAgentAsyncTaskComplete:异步任务结束 */
33
+ export class AgentAsyncTaskCompleteEvent extends EventBase {
34
+ }
35
+ export class AgentCallToolEvent extends EventBase {
36
+ }
37
+ export class AgentAskEvent extends EventBase {
38
+ }
39
+ export class AgentReadEvent extends EventBase {
40
+ }
41
+ export class AgentQueryTaskEvent extends EventBase {
42
+ }
43
+ export class AgentSubmitEvent extends EventBase {
44
+ }
45
+ export class AgentSetTasksEvent extends EventBase {
46
+ }
47
+ export class AgentSetGoalEvent extends EventBase {
48
+ }
49
+ export class AgentRequestPermissionEvent extends EventBase {
50
+ }
51
+ export class UserAnswerEvent extends EventBase {
52
+ }
53
+ const ownerStorage = new AsyncLocalStorage();
54
+ /** 在插件加载/执行期间设置钩子归属;平台内部使用 */
55
+ export async function withHookOwner(pluginId, task) {
56
+ return await ownerStorage.run({ pluginId }, async () => await task());
57
+ }
58
+ /** 平台内部:当前正在执行的插件(用于访问守卫) */
59
+ export function getHookOwner() {
60
+ return ownerStorage.getStore()?.pluginId ?? null;
61
+ }
62
+ const messageHooks = [];
63
+ const sessionStartHooks = [];
64
+ const beforeTurnHooks = [];
65
+ const beforeStepHooks = [];
66
+ const afterStepHooks = [];
67
+ const afterTurnHooks = [];
68
+ const agentRunSyncHooks = [];
69
+ const agentRunAsyncHooks = [];
70
+ const agentAsyncTaskCompleteHooks = [];
71
+ const agentCallToolHooks = [];
72
+ const agentAskHooks = [];
73
+ const agentReadHooks = [];
74
+ const agentQueryTaskHooks = [];
75
+ const agentSubmitHooks = [];
76
+ const agentSetTasksHooks = [];
77
+ const agentSetGoalHooks = [];
78
+ const agentRequestPermissionHooks = [];
79
+ const userAnswerHooks = [];
80
+ const initHooks = [];
81
+ const shutdownHooks = [];
82
+ let errorReporter = null;
83
+ /** 平台注入错误处理,钩子抛错时不打断主流程 */
84
+ export function setHookErrorHandler(handler) {
85
+ errorReporter = handler;
86
+ }
87
+ let hookGuard = null;
88
+ /** 平台内部:在钩子执行期间应用插件级 console 拦截等 */
89
+ export function setHookGuard(guard) {
90
+ hookGuard = guard;
91
+ }
92
+ function add(registry, handler) {
93
+ const entry = { owner: getHookOwner(), handler };
94
+ registry.push(entry);
95
+ return () => {
96
+ const index = registry.indexOf(entry);
97
+ if (index !== -1) {
98
+ registry.splice(index, 1);
99
+ }
100
+ };
101
+ }
102
+ function removeByOwner(registry, owner) {
103
+ for (let index = registry.length - 1; index >= 0; index -= 1) {
104
+ if (registry[index]?.owner === owner) {
105
+ registry.splice(index, 1);
106
+ }
107
+ }
108
+ }
109
+ /** 插件加载失败时清掉它已注册的钩子 */
110
+ export function removeHooksByOwner(owner) {
111
+ const registries = [
112
+ messageHooks,
113
+ sessionStartHooks,
114
+ beforeTurnHooks,
115
+ beforeStepHooks,
116
+ afterStepHooks,
117
+ afterTurnHooks,
118
+ agentRunSyncHooks,
119
+ agentRunAsyncHooks,
120
+ agentAsyncTaskCompleteHooks,
121
+ agentCallToolHooks,
122
+ agentAskHooks,
123
+ agentReadHooks,
124
+ agentQueryTaskHooks,
125
+ agentSubmitHooks,
126
+ agentSetTasksHooks,
127
+ agentSetGoalHooks,
128
+ agentRequestPermissionHooks,
129
+ userAnswerHooks,
130
+ initHooks,
131
+ shutdownHooks,
132
+ ];
133
+ for (const registry of registries) {
134
+ removeByOwner(registry, owner);
135
+ }
136
+ }
137
+ const ALL_HOOK_KINDS = [
138
+ "message",
139
+ "sessionStart",
140
+ "beforeTurn",
141
+ "beforeStep",
142
+ "afterStep",
143
+ "afterTurn",
144
+ "agentRunSync",
145
+ "agentRunAsync",
146
+ "agentAsyncTaskComplete",
147
+ "agentCallTool",
148
+ "agentAsk",
149
+ "agentRead",
150
+ "agentQueryTask",
151
+ "agentSubmit",
152
+ "agentSetTasks",
153
+ "agentSetGoal",
154
+ "agentRequestPermission",
155
+ "userAnswer",
156
+ "init",
157
+ "shutdown",
158
+ ];
159
+ function registryFor(kind) {
160
+ switch (kind) {
161
+ case "message":
162
+ return messageHooks;
163
+ case "sessionStart":
164
+ return sessionStartHooks;
165
+ case "beforeTurn":
166
+ return beforeTurnHooks;
167
+ case "beforeStep":
168
+ return beforeStepHooks;
169
+ case "afterStep":
170
+ return afterStepHooks;
171
+ case "afterTurn":
172
+ return afterTurnHooks;
173
+ case "agentRunSync":
174
+ return agentRunSyncHooks;
175
+ case "agentRunAsync":
176
+ return agentRunAsyncHooks;
177
+ case "agentAsyncTaskComplete":
178
+ return agentAsyncTaskCompleteHooks;
179
+ case "agentCallTool":
180
+ return agentCallToolHooks;
181
+ case "agentAsk":
182
+ return agentAskHooks;
183
+ case "agentRead":
184
+ return agentReadHooks;
185
+ case "agentQueryTask":
186
+ return agentQueryTaskHooks;
187
+ case "agentSubmit":
188
+ return agentSubmitHooks;
189
+ case "agentSetTasks":
190
+ return agentSetTasksHooks;
191
+ case "agentSetGoal":
192
+ return agentSetGoalHooks;
193
+ case "agentRequestPermission":
194
+ return agentRequestPermissionHooks;
195
+ case "userAnswer":
196
+ return userAnswerHooks;
197
+ case "init":
198
+ return initHooks;
199
+ case "shutdown":
200
+ return shutdownHooks;
201
+ }
202
+ }
203
+ /** 宿主内部:为 sandbox 插件注册远程钩子 */
204
+ export function registerExternalHook(kind, owner, handler) {
205
+ const registry = registryFor(kind);
206
+ const entry = {
207
+ owner,
208
+ handler: handler,
209
+ };
210
+ registry.push(entry);
211
+ return () => {
212
+ const index = registry.indexOf(entry);
213
+ if (index !== -1) {
214
+ registry.splice(index, 1);
215
+ }
216
+ };
217
+ }
218
+ /** 当前 owner 注册了哪些钩子(sandbox runner 上报用) */
219
+ export function listHookKinds(owner) {
220
+ return ALL_HOOK_KINDS.filter((kind) => registryFor(kind).some((entry) => entry.owner === owner));
221
+ }
222
+ export function onMessage(handler) {
223
+ return add(messageHooks, handler);
224
+ }
225
+ /** 会话第一轮开始前触发一次;可往 prompt 里追加 system 提示 */
226
+ export function onSessionStart(handler) {
227
+ return add(sessionStartHooks, handler);
228
+ }
229
+ export function beforeTurn(handler) {
230
+ return add(beforeTurnHooks, handler);
231
+ }
232
+ export function beforeStep(handler) {
233
+ return add(beforeStepHooks, handler);
234
+ }
235
+ export function afterStep(handler) {
236
+ return add(afterStepHooks, handler);
237
+ }
238
+ export function afterTurn(handler) {
239
+ return add(afterTurnHooks, handler);
240
+ }
241
+ /** run 模式开始同步执行前触发 */
242
+ export function onAgentRunSync(handler) {
243
+ return add(agentRunSyncHooks, handler);
244
+ }
245
+ /** Agent 即将创建异步任务时触发 */
246
+ export function onAgentRunAsync(handler) {
247
+ return add(agentRunAsyncHooks, handler);
248
+ }
249
+ /** Agent 异步任务结束后触发 */
250
+ export function onAgentAsyncTaskComplete(handler) {
251
+ return add(agentAsyncTaskCompleteHooks, handler);
252
+ }
253
+ export function onAgentCallTool(handler) {
254
+ return add(agentCallToolHooks, handler);
255
+ }
256
+ export function onAgentAsk(handler) {
257
+ return add(agentAskHooks, handler);
258
+ }
259
+ export function onAgentRead(handler) {
260
+ return add(agentReadHooks, handler);
261
+ }
262
+ export function onAgentQueryTask(handler) {
263
+ return add(agentQueryTaskHooks, handler);
264
+ }
265
+ export function onAgentSubmit(handler) {
266
+ return add(agentSubmitHooks, handler);
267
+ }
268
+ export function onAgentSetTasks(handler) {
269
+ return add(agentSetTasksHooks, handler);
270
+ }
271
+ export function onAgentSetGoal(handler) {
272
+ return add(agentSetGoalHooks, handler);
273
+ }
274
+ export function onAgentRequestPermission(handler) {
275
+ return add(agentRequestPermissionHooks, handler);
276
+ }
277
+ export function onUserAnswer(handler) {
278
+ return add(userAnswerHooks, handler);
279
+ }
280
+ /** 服务进程加载完插件后触发 */
281
+ export function onInit(handler) {
282
+ return add(initHooks, handler);
283
+ }
284
+ /** 服务进程关闭前触发;Ctrl+C 或 shutdown() 后执行 */
285
+ export function onShutdown(handler) {
286
+ return add(shutdownHooks, handler);
287
+ }
288
+ async function emit(kind, registry, args) {
289
+ for (const entry of [...registry]) {
290
+ const task = async () => {
291
+ await entry.handler(...args);
292
+ };
293
+ try {
294
+ if (entry.owner !== null && hookGuard !== null) {
295
+ await hookGuard(entry.owner, task);
296
+ }
297
+ else {
298
+ await task();
299
+ }
300
+ }
301
+ catch (error) {
302
+ errorReporter?.({ hook: kind, owner: entry.owner, error });
303
+ }
304
+ }
305
+ }
306
+ function eventOf(input, ctor) {
307
+ return input instanceof ctor ? input : new ctor({ ...input });
308
+ }
309
+ export async function emitOnMessage(payload) {
310
+ await emit("message", messageHooks, [eventOf(payload, SessionMessageEvent)]);
311
+ }
312
+ export async function emitSessionStart(payload) {
313
+ await emit("sessionStart", sessionStartHooks, [eventOf(payload, SessionStartEvent)]);
314
+ }
315
+ export async function emitBeforeTurn(payload) {
316
+ await emit("beforeTurn", beforeTurnHooks, [eventOf(payload, BeforeTurnEvent)]);
317
+ }
318
+ export async function emitBeforeStep(payload) {
319
+ await emit("beforeStep", beforeStepHooks, [eventOf(payload, BeforeStepEvent)]);
320
+ }
321
+ export async function emitAfterStep(payload) {
322
+ await emit("afterStep", afterStepHooks, [eventOf(payload, AfterStepEvent)]);
323
+ }
324
+ export async function emitAfterTurn(payload) {
325
+ await emit("afterTurn", afterTurnHooks, [eventOf(payload, AfterTurnEvent)]);
326
+ }
327
+ export async function emitAgentRunSync(payload) {
328
+ await emit("agentRunSync", agentRunSyncHooks, [eventOf(payload, AgentRunEvent)]);
329
+ }
330
+ export async function emitAgentRunAsync(payload) {
331
+ await emit("agentRunAsync", agentRunAsyncHooks, [eventOf(payload, AgentAsyncTaskEvent)]);
332
+ }
333
+ export async function emitAgentAsyncTaskComplete(payload) {
334
+ await emit("agentAsyncTaskComplete", agentAsyncTaskCompleteHooks, [
335
+ eventOf(payload, AgentAsyncTaskCompleteEvent),
336
+ ]);
337
+ }
338
+ export async function emitAgentCallTool(payload) {
339
+ await emit("agentCallTool", agentCallToolHooks, [eventOf(payload, AgentCallToolEvent)]);
340
+ }
341
+ export async function emitAgentAsk(payload) {
342
+ await emit("agentAsk", agentAskHooks, [eventOf(payload, AgentAskEvent)]);
343
+ }
344
+ export async function emitAgentRead(payload) {
345
+ await emit("agentRead", agentReadHooks, [eventOf(payload, AgentReadEvent)]);
346
+ }
347
+ export async function emitAgentQueryTask(payload) {
348
+ await emit("agentQueryTask", agentQueryTaskHooks, [eventOf(payload, AgentQueryTaskEvent)]);
349
+ }
350
+ export async function emitAgentSubmit(payload) {
351
+ await emit("agentSubmit", agentSubmitHooks, [eventOf(payload, AgentSubmitEvent)]);
352
+ }
353
+ export async function emitAgentSetTasks(payload) {
354
+ await emit("agentSetTasks", agentSetTasksHooks, [eventOf(payload, AgentSetTasksEvent)]);
355
+ }
356
+ export async function emitAgentSetGoal(payload) {
357
+ await emit("agentSetGoal", agentSetGoalHooks, [eventOf(payload, AgentSetGoalEvent)]);
358
+ }
359
+ export async function emitAgentRequestPermission(payload) {
360
+ await emit("agentRequestPermission", agentRequestPermissionHooks, [
361
+ eventOf(payload, AgentRequestPermissionEvent),
362
+ ]);
363
+ }
364
+ export async function emitUserAnswer(payload) {
365
+ await emit("userAnswer", userAnswerHooks, [eventOf(payload, UserAnswerEvent)]);
366
+ }
367
+ export async function emitInitHooks() {
368
+ await emit("init", initHooks, []);
369
+ }
370
+ export async function emitShutdownHooks() {
371
+ await emit("shutdown", shutdownHooks, []);
372
+ }
373
+ /** 只触发某个插件的 init hooks;热启用时使用 */
374
+ export async function emitInitHooksForOwner(owner) {
375
+ await emit("init", initHooks.filter((entry) => entry.owner === owner), []);
376
+ }
377
+ /** 只触发某个插件的 shutdown hooks;热禁用时使用 */
378
+ export async function emitShutdownHooksForOwner(owner) {
379
+ await emit("shutdown", shutdownHooks.filter((entry) => entry.owner === owner), []);
380
+ }
381
+ let shutdownHandler = null;
382
+ /** 平台内部:start 命令注册关闭回调 */
383
+ export function setShutdownHandler(handler) {
384
+ shutdownHandler = handler;
385
+ }
386
+ /**
387
+ * 请求服务进程优雅关闭。
388
+ * 只能在 `wellspring start` 进程内调用;关闭流程会先执行 onShutdown 钩子。
389
+ */
390
+ export function shutdown() {
391
+ const bridge = getHostBridge();
392
+ if (bridge !== null) {
393
+ bridge.shutdown();
394
+ return;
395
+ }
396
+ if (shutdownHandler === null) {
397
+ throw new Error("shutdown() 只能在 wellspring start 进程内调用");
398
+ }
399
+ shutdownHandler();
400
+ }
401
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/api/host/hooks.ts"],"names":[],"mappings":"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"}