visionclaw 0.1.219-dev.codex-issue-2805-worker-runtime.3 → 0.1.220-dev.codex-fix-2941-activity-foreground.1

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 (313) hide show
  1. package/dist/agent/api-proxy.d.ts +16 -0
  2. package/dist/agent/api-proxy.d.ts.map +1 -1
  3. package/dist/agent/api-proxy.js +8 -9
  4. package/dist/agent/api-proxy.js.map +1 -1
  5. package/dist/agent/browser-launcher.d.ts +0 -3
  6. package/dist/agent/browser-launcher.d.ts.map +1 -1
  7. package/dist/agent/browser-launcher.js +43 -101
  8. package/dist/agent/browser-launcher.js.map +1 -1
  9. package/dist/agent/coding-conventions.d.ts +3 -2
  10. package/dist/agent/coding-conventions.d.ts.map +1 -1
  11. package/dist/agent/coding-conventions.js +8 -7
  12. package/dist/agent/coding-conventions.js.map +1 -1
  13. package/dist/agent/command-handlers.d.ts.map +1 -1
  14. package/dist/agent/command-handlers.js +16 -4
  15. package/dist/agent/command-handlers.js.map +1 -1
  16. package/dist/agent/context-action-restart-fallback.d.ts.map +1 -1
  17. package/dist/agent/context-action-restart-fallback.js +3 -9
  18. package/dist/agent/context-action-restart-fallback.js.map +1 -1
  19. package/dist/agent/context-refresh.d.ts.map +1 -1
  20. package/dist/agent/context-refresh.js +7 -0
  21. package/dist/agent/context-refresh.js.map +1 -1
  22. package/dist/agent/context.d.ts.map +1 -1
  23. package/dist/agent/context.js +8 -6
  24. package/dist/agent/context.js.map +1 -1
  25. package/dist/agent/engine-fallback.d.ts +35 -0
  26. package/dist/agent/engine-fallback.d.ts.map +1 -1
  27. package/dist/agent/engine-fallback.js +3 -4
  28. package/dist/agent/engine-fallback.js.map +1 -1
  29. package/dist/agent/engines/browser-tool-policy.d.ts +1 -12
  30. package/dist/agent/engines/browser-tool-policy.d.ts.map +1 -1
  31. package/dist/agent/engines/browser-tool-policy.js +2 -17
  32. package/dist/agent/engines/browser-tool-policy.js.map +1 -1
  33. package/dist/agent/engines/claude/session.d.ts +0 -1
  34. package/dist/agent/engines/claude/session.d.ts.map +1 -1
  35. package/dist/agent/engines/claude/session.js +36 -21
  36. package/dist/agent/engines/claude/session.js.map +1 -1
  37. package/dist/agent/engines/pi/tools.d.ts.map +1 -1
  38. package/dist/agent/engines/pi/tools.js +10 -2
  39. package/dist/agent/engines/pi/tools.js.map +1 -1
  40. package/dist/agent/engines/pi-coding/session.d.ts +0 -3
  41. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  42. package/dist/agent/engines/pi-coding/session.js +22 -19
  43. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  44. package/dist/agent/engines/session-types.d.ts +0 -6
  45. package/dist/agent/engines/session-types.d.ts.map +1 -1
  46. package/dist/agent/external-context/runtime.d.ts.map +1 -1
  47. package/dist/agent/external-context/runtime.js +14 -15
  48. package/dist/agent/external-context/runtime.js.map +1 -1
  49. package/dist/agent/fast-responder.d.ts +20 -4
  50. package/dist/agent/fast-responder.d.ts.map +1 -1
  51. package/dist/agent/fast-responder.js +39 -9
  52. package/dist/agent/fast-responder.js.map +1 -1
  53. package/dist/agent/interrupt-handler.d.ts +18 -4
  54. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  55. package/dist/agent/interrupt-handler.js +284 -49
  56. package/dist/agent/interrupt-handler.js.map +1 -1
  57. package/dist/agent/lab-run-system-prompt.d.ts.map +1 -1
  58. package/dist/agent/lab-run-system-prompt.js +0 -3
  59. package/dist/agent/lab-run-system-prompt.js.map +1 -1
  60. package/dist/agent/lifecycle-trace.d.ts.map +1 -1
  61. package/dist/agent/lifecycle-trace.js +5 -6
  62. package/dist/agent/lifecycle-trace.js.map +1 -1
  63. package/dist/agent/loop.d.ts +1 -4
  64. package/dist/agent/loop.d.ts.map +1 -1
  65. package/dist/agent/loop.js +129 -105
  66. package/dist/agent/loop.js.map +1 -1
  67. package/dist/agent/memory-protocol.d.ts +2 -2
  68. package/dist/agent/memory-protocol.d.ts.map +1 -1
  69. package/dist/agent/memory-protocol.js +15 -3
  70. package/dist/agent/memory-protocol.js.map +1 -1
  71. package/dist/agent/memory-store.d.ts.map +1 -1
  72. package/dist/agent/memory-store.js +1 -11
  73. package/dist/agent/memory-store.js.map +1 -1
  74. package/dist/agent/model-provider.d.ts +0 -2
  75. package/dist/agent/model-provider.d.ts.map +1 -1
  76. package/dist/agent/model-provider.js +25 -31
  77. package/dist/agent/model-provider.js.map +1 -1
  78. package/dist/agent/product-identity.d.ts +4 -5
  79. package/dist/agent/product-identity.d.ts.map +1 -1
  80. package/dist/agent/product-identity.js +6 -7
  81. package/dist/agent/product-identity.js.map +1 -1
  82. package/dist/agent/public-activity.d.ts +1 -1
  83. package/dist/agent/public-activity.d.ts.map +1 -1
  84. package/dist/agent/public-activity.js.map +1 -1
  85. package/dist/agent/reply-watchdog.d.ts +3 -5
  86. package/dist/agent/reply-watchdog.d.ts.map +1 -1
  87. package/dist/agent/reply-watchdog.js +4 -6
  88. package/dist/agent/reply-watchdog.js.map +1 -1
  89. package/dist/agent/session-manager.d.ts +0 -5
  90. package/dist/agent/session-manager.d.ts.map +1 -1
  91. package/dist/agent/session-manager.js +0 -7
  92. package/dist/agent/session-manager.js.map +1 -1
  93. package/dist/agent/state.d.ts +0 -7
  94. package/dist/agent/state.d.ts.map +1 -1
  95. package/dist/agent/state.js +11 -21
  96. package/dist/agent/state.js.map +1 -1
  97. package/dist/agent/stream-handler.d.ts.map +1 -1
  98. package/dist/agent/stream-handler.js +17 -0
  99. package/dist/agent/stream-handler.js.map +1 -1
  100. package/dist/agent/system-prompt.d.ts.map +1 -1
  101. package/dist/agent/system-prompt.js +6 -10
  102. package/dist/agent/system-prompt.js.map +1 -1
  103. package/dist/agent/transcript/transcript-indexer.d.ts +28 -0
  104. package/dist/agent/transcript/transcript-indexer.d.ts.map +1 -1
  105. package/dist/agent/transcript/transcript-indexer.js +57 -58
  106. package/dist/agent/transcript/transcript-indexer.js.map +1 -1
  107. package/dist/agent/usage/usage-report-queue.d.ts.map +1 -1
  108. package/dist/agent/usage/usage-report-queue.js +52 -53
  109. package/dist/agent/usage/usage-report-queue.js.map +1 -1
  110. package/dist/agent/wake-cycle-runner.d.ts +8 -7
  111. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  112. package/dist/agent/wake-cycle-runner.js +66 -105
  113. package/dist/agent/wake-cycle-runner.js.map +1 -1
  114. package/dist/builtin-skills/owner-manual/SKILL.md +2 -2
  115. package/dist/calendar/occurrence-ownership.d.ts.map +1 -1
  116. package/dist/calendar/occurrence-ownership.js +5 -6
  117. package/dist/calendar/occurrence-ownership.js.map +1 -1
  118. package/dist/calendar/scheduler.d.ts.map +1 -1
  119. package/dist/calendar/scheduler.js +3 -4
  120. package/dist/calendar/scheduler.js.map +1 -1
  121. package/dist/channels/interface.d.ts +2 -8
  122. package/dist/channels/interface.d.ts.map +1 -1
  123. package/dist/channels/interface.js +1 -8
  124. package/dist/channels/interface.js.map +1 -1
  125. package/dist/channels/manager.d.ts.map +1 -1
  126. package/dist/channels/manager.js +0 -2
  127. package/dist/channels/manager.js.map +1 -1
  128. package/dist/channels/qq-status.d.ts.map +1 -1
  129. package/dist/channels/qq-status.js +1 -0
  130. package/dist/channels/qq-status.js.map +1 -1
  131. package/dist/channels/queue.d.ts.map +1 -1
  132. package/dist/channels/queue.js +0 -8
  133. package/dist/channels/queue.js.map +1 -1
  134. package/dist/channels/telegram-status.d.ts.map +1 -1
  135. package/dist/channels/telegram-status.js +2 -0
  136. package/dist/channels/telegram-status.js.map +1 -1
  137. package/dist/channels/tui.d.ts +2 -2
  138. package/dist/channels/tui.d.ts.map +1 -1
  139. package/dist/channels/tui.js +2 -7
  140. package/dist/channels/tui.js.map +1 -1
  141. package/dist/config/index.d.ts.map +1 -1
  142. package/dist/config/index.js +15 -16
  143. package/dist/config/index.js.map +1 -1
  144. package/dist/config/types.d.ts +8 -16
  145. package/dist/config/types.d.ts.map +1 -1
  146. package/dist/config/types.js +24 -13
  147. package/dist/config/types.js.map +1 -1
  148. package/dist/email/email-route-store.d.ts.map +1 -1
  149. package/dist/email/email-route-store.js +5 -6
  150. package/dist/email/email-route-store.js.map +1 -1
  151. package/dist/i18n/messages.d.ts +0 -12
  152. package/dist/i18n/messages.d.ts.map +1 -1
  153. package/dist/i18n/messages.js +9 -21
  154. package/dist/i18n/messages.js.map +1 -1
  155. package/dist/logger.d.ts +0 -2
  156. package/dist/logger.d.ts.map +1 -1
  157. package/dist/logger.js +1 -19
  158. package/dist/logger.js.map +1 -1
  159. package/dist/threads/active-threads-store.d.ts.map +1 -1
  160. package/dist/threads/active-threads-store.js +27 -8
  161. package/dist/threads/active-threads-store.js.map +1 -1
  162. package/dist/threads/execution-host.d.ts.map +1 -1
  163. package/dist/threads/execution-host.js +0 -1
  164. package/dist/threads/execution-host.js.map +1 -1
  165. package/dist/threads/execution-scheduler.d.ts +0 -4
  166. package/dist/threads/execution-scheduler.d.ts.map +1 -1
  167. package/dist/threads/execution-scheduler.js +2 -38
  168. package/dist/threads/execution-scheduler.js.map +1 -1
  169. package/dist/threads/execution-store.d.ts +5 -20
  170. package/dist/threads/execution-store.d.ts.map +1 -1
  171. package/dist/threads/execution-store.js +8 -45
  172. package/dist/threads/execution-store.js.map +1 -1
  173. package/dist/threads/foreground-task.d.ts +6 -10
  174. package/dist/threads/foreground-task.d.ts.map +1 -1
  175. package/dist/threads/foreground-task.js +26 -34
  176. package/dist/threads/foreground-task.js.map +1 -1
  177. package/dist/threads/foreman-client.d.ts.map +1 -1
  178. package/dist/threads/foreman-client.js +1 -3
  179. package/dist/threads/foreman-client.js.map +1 -1
  180. package/dist/threads/foreman-execution.d.ts +12 -12
  181. package/dist/threads/foreman-execution.d.ts.map +1 -1
  182. package/dist/threads/foreman-execution.js +19 -30
  183. package/dist/threads/foreman-execution.js.map +1 -1
  184. package/dist/threads/foreman-host.d.ts +2 -17
  185. package/dist/threads/foreman-host.d.ts.map +1 -1
  186. package/dist/threads/foreman-host.js +63 -452
  187. package/dist/threads/foreman-host.js.map +1 -1
  188. package/dist/threads/foreman-protocol.d.ts +12 -113
  189. package/dist/threads/foreman-protocol.d.ts.map +1 -1
  190. package/dist/threads/foreman-protocol.js +15 -41
  191. package/dist/threads/foreman-protocol.js.map +1 -1
  192. package/dist/threads/foreman-store.d.ts +10 -44
  193. package/dist/threads/foreman-store.d.ts.map +1 -1
  194. package/dist/threads/foreman-store.js +19 -78
  195. package/dist/threads/foreman-store.js.map +1 -1
  196. package/dist/threads/generic-execution.d.ts +2 -2
  197. package/dist/threads/generic-execution.d.ts.map +1 -1
  198. package/dist/threads/generic-execution.js +6 -9
  199. package/dist/threads/generic-execution.js.map +1 -1
  200. package/dist/threads/ipc.d.ts +0 -3
  201. package/dist/threads/ipc.d.ts.map +1 -1
  202. package/dist/threads/ipc.js.map +1 -1
  203. package/dist/threads/relay-adapter.d.ts +2 -0
  204. package/dist/threads/relay-adapter.d.ts.map +1 -1
  205. package/dist/threads/relay-adapter.js +7 -1
  206. package/dist/threads/relay-adapter.js.map +1 -1
  207. package/dist/threads/supervisor.d.ts +51 -21
  208. package/dist/threads/supervisor.d.ts.map +1 -1
  209. package/dist/threads/supervisor.js +449 -160
  210. package/dist/threads/supervisor.js.map +1 -1
  211. package/dist/threads/task-contracts.d.ts +194 -0
  212. package/dist/threads/task-contracts.d.ts.map +1 -0
  213. package/dist/threads/task-contracts.js +82 -0
  214. package/dist/threads/task-contracts.js.map +1 -0
  215. package/dist/threads/task-sidecar.d.ts +145 -0
  216. package/dist/threads/task-sidecar.d.ts.map +1 -0
  217. package/dist/threads/task-sidecar.js +311 -0
  218. package/dist/threads/task-sidecar.js.map +1 -0
  219. package/dist/threads/task-store.d.ts +172 -0
  220. package/dist/threads/task-store.d.ts.map +1 -0
  221. package/dist/threads/task-store.js +599 -0
  222. package/dist/threads/task-store.js.map +1 -0
  223. package/dist/threads/thread-activity-controller.d.ts +7 -0
  224. package/dist/threads/thread-activity-controller.d.ts.map +1 -1
  225. package/dist/threads/thread-activity-controller.js +52 -2
  226. package/dist/threads/thread-activity-controller.js.map +1 -1
  227. package/dist/threads/thread-task-context.d.ts +40 -0
  228. package/dist/threads/thread-task-context.d.ts.map +1 -0
  229. package/dist/threads/thread-task-context.js +160 -0
  230. package/dist/threads/thread-task-context.js.map +1 -0
  231. package/dist/threads/thread-task-controller.d.ts +122 -0
  232. package/dist/threads/thread-task-controller.d.ts.map +1 -0
  233. package/dist/threads/thread-task-controller.js +276 -0
  234. package/dist/threads/thread-task-controller.js.map +1 -0
  235. package/dist/threads/thread-task-runtime.d.ts +350 -0
  236. package/dist/threads/thread-task-runtime.d.ts.map +1 -0
  237. package/dist/threads/thread-task-runtime.js +896 -0
  238. package/dist/threads/thread-task-runtime.js.map +1 -0
  239. package/dist/threads/worker-entry.d.ts.map +1 -1
  240. package/dist/threads/worker-entry.js +28 -29
  241. package/dist/threads/worker-entry.js.map +1 -1
  242. package/dist/threads/worker-execution-runtime.d.ts +2 -3
  243. package/dist/threads/worker-execution-runtime.d.ts.map +1 -1
  244. package/dist/threads/worker-execution-runtime.js +2 -5
  245. package/dist/threads/worker-execution-runtime.js.map +1 -1
  246. package/dist/tools/delegation.d.ts +2 -75
  247. package/dist/tools/delegation.d.ts.map +1 -1
  248. package/dist/tools/delegation.js +29 -63
  249. package/dist/tools/delegation.js.map +1 -1
  250. package/dist/tools/email.d.ts +1 -1
  251. package/dist/tools/execution-control.d.ts +0 -5
  252. package/dist/tools/execution-control.d.ts.map +1 -1
  253. package/dist/tools/execution-control.js +2 -9
  254. package/dist/tools/execution-control.js.map +1 -1
  255. package/dist/tools/index.d.ts.map +1 -1
  256. package/dist/tools/index.js +6 -2
  257. package/dist/tools/index.js.map +1 -1
  258. package/dist/tools/mcp-manager.d.ts +1 -1
  259. package/dist/tools/memory.d.ts +1 -1
  260. package/dist/tools/notify.d.ts +0 -2
  261. package/dist/tools/notify.d.ts.map +1 -1
  262. package/dist/tools/notify.js +5 -21
  263. package/dist/tools/notify.js.map +1 -1
  264. package/dist/tools/skill.d.ts +1 -1
  265. package/dist/tools/thread-tasks.d.ts +23 -0
  266. package/dist/tools/thread-tasks.d.ts.map +1 -0
  267. package/dist/tools/thread-tasks.js +122 -0
  268. package/dist/tools/thread-tasks.js.map +1 -0
  269. package/dist/tools/totp.d.ts +1 -1
  270. package/dist/tui/request-store.d.ts +1 -1
  271. package/dist/tui/request-store.d.ts.map +1 -1
  272. package/dist/tui/request-store.js +2 -2
  273. package/dist/tui/request-store.js.map +1 -1
  274. package/dist/tui/server.d.ts.map +1 -1
  275. package/dist/tui/server.js +2 -17
  276. package/dist/tui/server.js.map +1 -1
  277. package/dist/utils/restart.d.ts.map +1 -1
  278. package/dist/utils/restart.js +0 -6
  279. package/dist/utils/restart.js.map +1 -1
  280. package/dist-agent/bundle.cjs +2 -2
  281. package/package.json +1 -1
  282. package/dist/agent/runtime-context.d.ts +0 -27
  283. package/dist/agent/runtime-context.d.ts.map +0 -1
  284. package/dist/agent/runtime-context.js +0 -60
  285. package/dist/agent/runtime-context.js.map +0 -1
  286. package/dist/agent/runtime-disclosure-policy.d.ts +0 -6
  287. package/dist/agent/runtime-disclosure-policy.d.ts.map +0 -1
  288. package/dist/agent/runtime-disclosure-policy.js +0 -16
  289. package/dist/agent/runtime-disclosure-policy.js.map +0 -1
  290. package/dist/conversations/lazy-runtime.d.ts +0 -5
  291. package/dist/conversations/lazy-runtime.d.ts.map +0 -1
  292. package/dist/conversations/lazy-runtime.js +0 -12
  293. package/dist/conversations/lazy-runtime.js.map +0 -1
  294. package/dist/conversations/runtime.d.ts +0 -17
  295. package/dist/conversations/runtime.d.ts.map +0 -1
  296. package/dist/conversations/runtime.js +0 -92
  297. package/dist/conversations/runtime.js.map +0 -1
  298. package/dist/conversations/scheduler.d.ts +0 -57
  299. package/dist/conversations/scheduler.d.ts.map +0 -1
  300. package/dist/conversations/scheduler.js +0 -175
  301. package/dist/conversations/scheduler.js.map +0 -1
  302. package/dist/threads/foreman-business.d.ts +0 -9
  303. package/dist/threads/foreman-business.d.ts.map +0 -1
  304. package/dist/threads/foreman-business.js +0 -117
  305. package/dist/threads/foreman-business.js.map +0 -1
  306. package/dist/threads/foreman-delivery.d.ts +0 -5
  307. package/dist/threads/foreman-delivery.d.ts.map +0 -1
  308. package/dist/threads/foreman-delivery.js +0 -21
  309. package/dist/threads/foreman-delivery.js.map +0 -1
  310. package/dist/threads/task-workspace.d.ts +0 -8
  311. package/dist/threads/task-workspace.d.ts.map +0 -1
  312. package/dist/threads/task-workspace.js +0 -52
  313. package/dist/threads/task-workspace.js.map +0 -1
@@ -1,12 +0,0 @@
1
- /** Keep the foreground engine graph off execution-only hosts and test transports. */
2
- export function createLazyConversationRuntime(options) {
3
- const runtime = import("./runtime.js").then((module) => module.createConversationRuntime(options));
4
- return {
5
- ready: runtime.then((instance) => instance.ready),
6
- settled: runtime.then((instance) => instance.settled),
7
- deliver: (message, awareness) => { void runtime.then((instance) => instance.deliver(message, awareness)).catch(() => { }); },
8
- acknowledge: (reply) => { void runtime.then((instance) => instance.acknowledge(reply)).catch(() => { }); },
9
- stop: async () => { await runtime.then((instance) => instance.stop()).catch(() => { }); },
10
- };
11
- }
12
- //# sourceMappingURL=lazy-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy-runtime.js","sourceRoot":"","sources":["../../src/conversations/lazy-runtime.ts"],"names":[],"mappings":"AAGA,qFAAqF;AACrF,MAAM,UAAU,6BAA6B,CAAC,OAAmC;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;IACnG,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrD,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClK,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;KAChI,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { VisionClawConfig } from "../config/types.js";
2
- import { type ForemanClient } from "../threads/foreman-protocol.js";
3
- import type { DesktopRuntimeResolution, BrowserRuntimeResolution } from "../agent/runtime-surface.js";
4
- import type { ConversationRuntime, ConversationStart } from "./scheduler.js";
5
- export interface ConversationRuntimeOptions extends ConversationStart {
6
- config: VisionClawConfig;
7
- foremanClient: ForemanClient | null;
8
- desktopRuntimeResolution?: DesktopRuntimeResolution;
9
- browserRuntimeResolution?: BrowserRuntimeResolution;
10
- }
11
- /**
12
- * A chat session lives in the host, using its existing durable session/queue
13
- * directory. No child process is assigned to it. Its tools and continuations
14
- * execute inside an explicit context, and lifecycle cleanup is local to it.
15
- */
16
- export declare function createConversationRuntime(options: ConversationRuntimeOptions): ConversationRuntime;
17
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/conversations/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAoElG"}
@@ -1,92 +0,0 @@
1
- import { getProfile, setProfile, setWorkerThreadContext } from "../config/index.js";
2
- import { RuntimeContext } from "../agent/runtime-context.js";
3
- import { startAgentLoop } from "../agent/loop.js";
4
- import { runGracefulShutdown } from "../agent/state.js";
5
- import { stopRuntimeApiProxy } from "../agent/model-provider.js";
6
- import { RelayAdapter } from "../threads/relay-adapter.js";
7
- import { initThreadDirectory } from "../threads/init-thread-dir.js";
8
- import { readWorkerThreadMeta } from "../threads/thread-meta.js";
9
- import { installForemanClient } from "../threads/foreman-protocol.js";
10
- import { setActiveThreadsSnapshot } from "../threads/active-threads-store.js";
11
- import { logger } from "../logger.js";
12
- /**
13
- * A chat session lives in the host, using its existing durable session/queue
14
- * directory. No child process is assigned to it. Its tools and continuations
15
- * execute inside an explicit context, and lifecycle cleanup is local to it.
16
- */
17
- export function createConversationRuntime(options) {
18
- const context = new RuntimeContext(options.conversationId);
19
- const profile = getProfile();
20
- const abort = new AbortController();
21
- let state;
22
- let session;
23
- let readyResolve;
24
- let readyReject;
25
- const ready = new Promise((resolve, reject) => { readyResolve = resolve; readyReject = reject; });
26
- const relay = context.run(() => new RelayAdapter(options.emit, options.conversationId, undefined, { config: options.config }));
27
- const settled = Promise.resolve().then(() => context.run(async () => {
28
- setProfile(profile);
29
- setWorkerThreadContext(options.conversationId);
30
- logger.init();
31
- logger.setThreadContext(options.conversationId);
32
- installForemanClient(options.foremanClient);
33
- initThreadDirectory();
34
- const config = structuredClone(options.config);
35
- const meta = readWorkerThreadMeta();
36
- if (meta?.engineOverride) {
37
- config.engineOverride = meta.engineOverride;
38
- config.pinnedModel = meta.pinnedModel;
39
- }
40
- try {
41
- await startAgentLoop(config, {
42
- workerMode: { threadId: options.conversationId, relay },
43
- signal: abort.signal,
44
- acquireConversationTurn: options.acquireTurn,
45
- desktopRuntimeResolution: options.desktopRuntimeResolution,
46
- browserRuntimeResolution: options.browserRuntimeResolution,
47
- onReady: (deps) => {
48
- state = deps.agentState;
49
- session = deps.sessionManager;
50
- readyResolve();
51
- if (abort.signal.aborted)
52
- state.wakeMainLoop?.();
53
- },
54
- });
55
- }
56
- catch (error) {
57
- readyReject(error);
58
- throw error;
59
- }
60
- finally {
61
- try {
62
- await runGracefulShutdown();
63
- }
64
- finally {
65
- stopRuntimeApiProxy();
66
- logger.close();
67
- }
68
- }
69
- })).catch((error) => { readyReject(error); throw error; });
70
- const stop = async () => {
71
- abort.abort();
72
- context.run(() => {
73
- session?.requestStop();
74
- state?.wakeMainLoop?.();
75
- });
76
- await settled.catch(() => { });
77
- };
78
- context.restart = () => { void stop(); };
79
- return {
80
- ready,
81
- settled,
82
- deliver: (message, awareness) => context.run(() => {
83
- if (abort.signal.aborted)
84
- return;
85
- setActiveThreadsSnapshot(awareness);
86
- relay.injectMessage(message);
87
- }),
88
- acknowledge: (reply) => context.run(() => relay.handleReplyResult(reply)),
89
- stop,
90
- };
91
- }
92
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/conversations/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import type { CommandMessage } from "../channels/interface.js";
2
- import type { MessageQueue } from "../channels/queue.js";
3
- import type { ActiveThreadInfo, IpcReplyResult, WorkerToMainMessage } from "../threads/ipc.js";
4
- /** A foreground session, not a process or a slot in the background pool. */
5
- export interface ConversationRuntime {
6
- readonly ready: Promise<void>;
7
- readonly settled: Promise<void>;
8
- deliver(message: CommandMessage, awareness: ActiveThreadInfo[]): void;
9
- acknowledge(reply: IpcReplyResult): void;
10
- stop(): Promise<void>;
11
- }
12
- export interface ConversationStart {
13
- conversationId: string;
14
- emit: (event: WorkerToMainMessage) => void;
15
- acquireTurn: (signal?: AbortSignal) => Promise<() => void>;
16
- }
17
- export type ConversationFactory = (start: ConversationStart) => ConversationRuntime;
18
- /** A bounded foreground turn pool, independent of background execution slots. */
19
- export declare class ForegroundTurnPool {
20
- private readonly capacity;
21
- private active;
22
- private readonly waiting;
23
- constructor(capacity: number);
24
- acquire(signal?: AbortSignal): Promise<() => void>;
25
- }
26
- export interface ConversationSchedulerOptions {
27
- create: ConversationFactory;
28
- queue: (conversationId: string) => MessageQueue;
29
- emit: (conversationId: string, event: WorkerToMainMessage, reply: (result: IpcReplyResult) => void) => void;
30
- awareness: (conversationId: string) => ActiveThreadInfo[];
31
- onBusyChange?: () => void;
32
- maxConcurrentTurns: number;
33
- idleTtlMs: number;
34
- }
35
- /** Durable chat queues own sessions; tasks never own or reserve these slots. */
36
- export declare class ConversationScheduler {
37
- private readonly options;
38
- private readonly conversations;
39
- private readonly failures;
40
- private readonly turnPool;
41
- private stopped;
42
- constructor(options: ConversationSchedulerOptions);
43
- acquireTurn(signal?: AbortSignal): Promise<() => void>;
44
- /** The caller durably enqueues before entering here. */
45
- accept(conversationId: string, message?: CommandMessage): void;
46
- private start;
47
- private status;
48
- private armIdle;
49
- stop(id: string): Promise<void>;
50
- hasBusyConversations(): boolean;
51
- overview(): (ActiveThreadInfo & {
52
- pid: null;
53
- kind: "conversation";
54
- })[];
55
- shutdown(): Promise<void>;
56
- }
57
- //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/conversations/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAa,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI1G,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACtE,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;AAcpF,iFAAiF;AACjF,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAEjB,QAAQ,EAAE,MAAM;IAI7C,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;CA2BnD;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,YAAY,CAAC;IAChD,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,KAAK,IAAI,CAAC;IAC5G,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,qBAAa,qBAAqB;IAMpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,OAAO,CAAS;gBAEK,OAAO,EAAE,4BAA4B;IAIlE,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAItD,wDAAwD;IACxD,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAgB9D,OAAO,CAAC,KAAK;IAwCb,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAYT,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,oBAAoB,IAAI,OAAO;IAI/B,QAAQ,IAAI,CAAC,gBAAgB,GAAG;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,EAAE;IAOhE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
@@ -1,175 +0,0 @@
1
- import { bindRuntimeContext } from "../agent/runtime-context.js";
2
- import { logger } from "../logger.js";
3
- /** A bounded foreground turn pool, independent of background execution slots. */
4
- export class ForegroundTurnPool {
5
- capacity;
6
- active = 0;
7
- waiting = [];
8
- constructor(capacity) {
9
- this.capacity = capacity;
10
- if (!Number.isInteger(capacity) || capacity < 1)
11
- throw new Error("Invalid foreground concurrency");
12
- }
13
- acquire(signal) {
14
- return new Promise((resolve, reject) => {
15
- const abort = () => {
16
- const index = this.waiting.indexOf(admit);
17
- if (index >= 0)
18
- this.waiting.splice(index, 1);
19
- reject(new Error("Conversation stopped before its turn started"));
20
- };
21
- const admit = () => {
22
- signal?.removeEventListener("abort", abort);
23
- if (signal?.aborted) {
24
- abort();
25
- return;
26
- }
27
- this.active += 1;
28
- let released = false;
29
- resolve(() => {
30
- if (released)
31
- return;
32
- released = true;
33
- this.active -= 1;
34
- this.waiting.shift()?.();
35
- });
36
- };
37
- if (signal?.aborted) {
38
- abort();
39
- return;
40
- }
41
- if (this.active < this.capacity)
42
- admit();
43
- else {
44
- this.waiting.push(admit);
45
- signal?.addEventListener("abort", abort, { once: true });
46
- }
47
- });
48
- }
49
- }
50
- /** Durable chat queues own sessions; tasks never own or reserve these slots. */
51
- export class ConversationScheduler {
52
- options;
53
- conversations = new Map();
54
- failures = new Map();
55
- turnPool;
56
- stopped = false;
57
- constructor(options) {
58
- this.options = options;
59
- this.turnPool = new ForegroundTurnPool(options.maxConcurrentTurns);
60
- }
61
- acquireTurn(signal) {
62
- return this.turnPool.acquire(signal);
63
- }
64
- /** The caller durably enqueues before entering here. */
65
- accept(conversationId, message) {
66
- if (this.stopped)
67
- return;
68
- if (message)
69
- this.failures.delete(conversationId);
70
- let conversation = this.conversations.get(conversationId);
71
- if (!conversation) {
72
- if ((this.failures.get(conversationId) ?? 0) >= 3)
73
- return;
74
- conversation = this.start(conversationId);
75
- }
76
- if (conversation.idleTimer)
77
- clearTimeout(conversation.idleTimer);
78
- conversation.idleTimer = null;
79
- if (message) {
80
- if (!conversation.ready || conversation.stopping)
81
- conversation.pending.push(message);
82
- else
83
- conversation.runtime.deliver(message, this.options.awareness(conversationId));
84
- }
85
- }
86
- start(id) {
87
- const runtime = this.options.create({
88
- conversationId: id,
89
- acquireTurn: (signal) => this.acquireTurn(signal),
90
- emit: bindRuntimeContext((event) => {
91
- const current = this.conversations.get(id);
92
- if (!current)
93
- return;
94
- if (current.runtime !== runtime)
95
- return;
96
- if (event.type === "status")
97
- this.status(current, event);
98
- if (event.type === "turn-complete") {
99
- this.failures.delete(id);
100
- this.armIdle(current);
101
- }
102
- this.options.emit(id, event, (result) => runtime.acknowledge(result));
103
- }),
104
- });
105
- const conversation = {
106
- id, runtime, ready: false, stopping: false, pending: [], busy: false,
107
- description: "Starting conversation", lastActivityAt: new Date().toISOString(), idleTimer: null,
108
- };
109
- this.conversations.set(id, conversation);
110
- void runtime.ready.then(bindRuntimeContext(() => {
111
- if (conversation.stopping || this.stopped)
112
- return;
113
- conversation.ready = true;
114
- const pending = conversation.pending.splice(0);
115
- for (const message of pending)
116
- runtime.deliver(message, this.options.awareness(id));
117
- })).catch(() => { });
118
- void runtime.settled.catch(bindRuntimeContext((error) => {
119
- if (conversation.stopping || this.stopped)
120
- return;
121
- this.failures.set(id, (this.failures.get(id) ?? 0) + 1);
122
- logger.warn(`[conversation] ${id} stopped unexpectedly: ${error instanceof Error ? error.message : String(error)}`);
123
- })).finally(bindRuntimeContext(() => {
124
- if (conversation.idleTimer)
125
- clearTimeout(conversation.idleTimer);
126
- if (this.conversations.get(id) === conversation)
127
- this.conversations.delete(id);
128
- this.options.onBusyChange?.();
129
- if (!this.stopped && this.options.queue(id).hasOutstandingWork())
130
- this.accept(id);
131
- }));
132
- return conversation;
133
- }
134
- status(conversation, event) {
135
- conversation.busy = event.busy;
136
- conversation.description = event.taskDescription;
137
- conversation.lastActivityAt = event.lastActivityAt;
138
- this.options.onBusyChange?.();
139
- }
140
- armIdle(conversation) {
141
- if (conversation.idleTimer)
142
- clearTimeout(conversation.idleTimer);
143
- conversation.idleTimer = setTimeout(() => {
144
- if (conversation.busy || this.options.queue(conversation.id).hasOutstandingWork()) {
145
- this.armIdle(conversation);
146
- return;
147
- }
148
- void this.stop(conversation.id);
149
- }, this.options.idleTtlMs);
150
- conversation.idleTimer.unref();
151
- }
152
- async stop(id) {
153
- const conversation = this.conversations.get(id);
154
- if (!conversation || conversation.stopping)
155
- return;
156
- conversation.stopping = true;
157
- if (conversation.idleTimer)
158
- clearTimeout(conversation.idleTimer);
159
- await conversation.runtime.stop();
160
- }
161
- hasBusyConversations() {
162
- return [...this.conversations.values()].some((item) => !item.ready || item.busy || item.pending.length > 0);
163
- }
164
- overview() {
165
- return [...this.conversations.values()].map((item) => ({
166
- threadId: item.id, kind: "conversation", pid: null,
167
- busy: item.busy || item.pending.length > 0, taskDescription: item.description, lastActivityAt: item.lastActivityAt,
168
- }));
169
- }
170
- async shutdown() {
171
- this.stopped = true;
172
- await Promise.all([...this.conversations.keys()].map((id) => this.stop(id)));
173
- }
174
- }
175
- //# sourceMappingURL=scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/conversations/scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { AdapterTool } from "../tools/adapter-tool.js";
2
- import type { ForemanClient, ForemanCommandResult } from "./foreman-protocol.js";
3
- /** Same business tools, with only reads admitted. Credentials stay in the host. */
4
- export declare const FOREMAN_BUSINESS_TOOLS: readonly ["manage_email", "manage_calendar", "manage_drive"];
5
- export type ForemanBusinessTool = typeof FOREMAN_BUSINESS_TOOLS[number];
6
- export declare function foremanBusinessTools(client: ForemanClient): AdapterTool[];
7
- /** Called only after the host validates the live executor and its admission grant. */
8
- export declare function runForemanBusinessRead(name: ForemanBusinessTool, input: unknown, workspace: string, stillAuthorized?: () => boolean): Promise<ForemanCommandResult>;
9
- //# sourceMappingURL=foreman-business.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreman-business.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-business.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,8DAA+D,CAAC;AACnG,MAAM,MAAM,mBAAmB,GAAG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAmBxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAazE;AAaD,sFAAsF;AACtF,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,OAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmDrL"}
@@ -1,117 +0,0 @@
1
- import fs from "node:fs";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { randomUUID } from "node:crypto";
5
- import { z } from "zod";
6
- import { tool } from "@anthropic-ai/claude-agent-sdk";
7
- import { manageEmailTool } from "../tools/email.js";
8
- import { manageCalendarTool } from "../tools/calendar.js";
9
- import { manageDriveTool } from "../tools/drive.js";
10
- /** Same business tools, with only reads admitted. Credentials stay in the host. */
11
- export const FOREMAN_BUSINESS_TOOLS = ["manage_email", "manage_calendar", "manage_drive"];
12
- const email = z.object(manageEmailTool.inputSchema).pick({
13
- action: true, label: true, scope: true, unread_only: true, query: true,
14
- max_results: true, message_id: true, include_body: true, kind: true,
15
- }).extend({
16
- action: z.enum(["list", "search", "read", "list_delivery_events"]),
17
- }).shape;
18
- const calendar = z.object(manageCalendarTool.inputSchema).pick({
19
- action: true, start: true, end: true, event_id: true, max_results: true,
20
- }).extend({
21
- action: z.enum(["get_event", "list_events", "find_free_time"]),
22
- }).shape;
23
- const drive = z.object(manageDriveTool.inputSchema).pick({
24
- action: true, file_id: true, local_path: true, folder_id: true, query: true, max_results: true,
25
- }).extend({
26
- action: z.enum(["list_files", "get_file", "download_file", "list_shares", "list_trash", "get_quota"]),
27
- }).shape;
28
- export function foremanBusinessTools(client) {
29
- const send = async (name, args) => {
30
- const result = await client.request({ type: "business_read", tool: name, args });
31
- return { content: [{ type: "text", text: result.text }], ...(result.ok ? {} : { isError: true }) };
32
- };
33
- return [
34
- tool("manage_email", "Read or search the authorized mailbox. Sending and mailbox changes go through General.", email, (args) => send("manage_email", args)),
35
- tool("manage_calendar", "Read events and find free time in the authorized calendar. Creating invitations or changing events goes through General.", calendar, (args) => send("manage_calendar", args)),
36
- tool("manage_drive", "Find and read authorized workspace files. Downloads must stay inside this Task's workspace. Uploads, sharing and other remote changes go through General.", drive, (args) => send("manage_drive", args)),
37
- ];
38
- }
39
- function downloadDestination(localPath, workspace) {
40
- if (!localPath || !path.isAbsolute(localPath))
41
- throw new Error("download_file requires an absolute local_path inside this Task's workspace");
42
- const root = fs.realpathSync(workspace);
43
- const parent = fs.realpathSync(path.dirname(localPath));
44
- if (parent !== root && !parent.startsWith(`${root}${path.sep}`))
45
- throw new Error("Downloads must stay inside this Task's workspace");
46
- const destination = path.join(parent, path.basename(localPath));
47
- const stat = fs.lstatSync(destination, { throwIfNoEntry: false });
48
- if (stat && (!stat.isFile() || stat.isSymbolicLink()))
49
- throw new Error("Download target must be a regular file");
50
- return destination;
51
- }
52
- /** Called only after the host validates the live executor and its admission grant. */
53
- export async function runForemanBusinessRead(name, input, workspace, stillAuthorized = () => true) {
54
- try {
55
- if (!stillAuthorized())
56
- throw new Error("Business-read permission is no longer valid");
57
- let result;
58
- switch (name) {
59
- case "manage_email":
60
- result = await manageEmailTool.handler(z.object(email).strict().parse(input), {});
61
- break;
62
- case "manage_calendar":
63
- result = await manageCalendarTool.handler(z.object(calendar).strict().parse(input), {});
64
- break;
65
- case "manage_drive": {
66
- const args = z.object(drive).strict().parse(input);
67
- if (args.action === "download_file") {
68
- const destination = downloadDestination(args.local_path, workspace);
69
- // Provider downloads can outlive a cancelled executor. Keep their
70
- // asynchronous writes outside its workspace until a fenced commit.
71
- const staging = fs.mkdtempSync(path.join(os.tmpdir(), "vc-business-read-"));
72
- const downloaded = path.join(staging, "download");
73
- try {
74
- result = await manageDriveTool.handler({ ...args, local_path: downloaded }, {});
75
- if (!result.isError) {
76
- if (!stillAuthorized())
77
- throw new Error("The execution stopped or its business-read permission was revoked");
78
- if (downloadDestination(args.local_path, workspace) !== destination)
79
- throw new Error("Download destination changed while reading");
80
- const publishing = path.join(path.dirname(destination), `.download-${randomUUID()}.tmp`);
81
- try {
82
- // No await between the permission check and rename: cancel
83
- // processing and the next writer cannot interleave this commit.
84
- fs.copyFileSync(downloaded, publishing, fs.constants.COPYFILE_EXCL);
85
- fs.chmodSync(publishing, 0o600);
86
- fs.renameSync(publishing, destination);
87
- }
88
- finally {
89
- fs.rmSync(publishing, { force: true });
90
- }
91
- result = { ...result, content: result.content.map((item) => item.type === "text"
92
- ? { ...item, text: item.text.replaceAll(downloaded, destination) } : item) };
93
- }
94
- }
95
- finally {
96
- fs.rmSync(staging, { recursive: true, force: true });
97
- }
98
- }
99
- else {
100
- result = await manageDriveTool.handler(args, {});
101
- }
102
- break;
103
- }
104
- default: return { ok: false, text: "Unknown business tool" };
105
- }
106
- if (!stillAuthorized())
107
- throw new Error("The execution stopped or its business-read permission was revoked");
108
- return {
109
- ok: result.isError !== true,
110
- text: result.content.filter((item) => item.type === "text").map((item) => item.text).join("\n"),
111
- };
112
- }
113
- catch (error) {
114
- return { ok: false, text: `Business read refused: ${error instanceof Error ? error.message : String(error)}` };
115
- }
116
- }
117
- //# sourceMappingURL=foreman-business.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreman-business.js","sourceRoot":"","sources":["../../src/threads/foreman-business.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { ExecutionEvent } from "./execution-store.js";
2
- export declare function taskDeliveryMode(event: Pick<ExecutionEvent, "type" | "payload">): "direct" | "review";
3
- /** Only publication-ready fields enter the delivery fallback, never internal summaries/errors. */
4
- export declare function publicTaskText(event: Pick<ExecutionEvent, "type" | "payload">): string | null;
5
- //# sourceMappingURL=foreman-delivery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreman-delivery.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAGrG;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAY7F"}
@@ -1,21 +0,0 @@
1
- export function taskDeliveryMode(event) {
2
- const data = event.type === "question" ? event.payload : event.payload.data;
3
- return data && typeof data === "object" && "delivery" in data && data.delivery === "direct" ? "direct" : "review";
4
- }
5
- /** Only publication-ready fields enter the delivery fallback, never internal summaries/errors. */
6
- export function publicTaskText(event) {
7
- if (event.type === "question") {
8
- const question = event.payload.text;
9
- if (typeof question !== "string" || !question.trim())
10
- return null;
11
- const choices = Array.isArray(event.payload.choices)
12
- ? event.payload.choices.filter((value) => typeof value === "string").slice(0, 10) : [];
13
- return [question.slice(0, 4_000), ...choices.map((choice, i) => `${i + 1}. ${choice.slice(0, 200)}`)].join("\n");
14
- }
15
- if (event.type !== "result")
16
- return null;
17
- const data = event.payload.data;
18
- const message = data && typeof data === "object" && "userMessage" in data ? data.userMessage : null;
19
- return typeof message === "string" && message.trim() ? message.trim().slice(0, 8_000) : null;
20
- }
21
- //# sourceMappingURL=foreman-delivery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"foreman-delivery.js","sourceRoot":"","sources":["../../src/threads/foreman-delivery.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,KAA+C;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5E,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,cAAc,CAAC,KAA+C;IAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/F,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Independent coding Tasks get detached worktrees at one admitted commit.
3
- * Existing dirty checkouts are never committed, reset or silently omitted.
4
- * A caller can explicitly choose the shared workspace, which is serialized by
5
- * the execution ledger. Worktrees remain available with the Task's artifacts.
6
- */
7
- export declare function prepareTaskWorkspace(source: string, taskId: string, mode: "isolated" | "shared" | "read_only", commits: Map<string, string>): Promise<string>;
8
- //# sourceMappingURL=task-workspace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-workspace.d.ts","sourceRoot":"","sources":["../../src/threads/task-workspace.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,EACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,CAgCjB"}