visionclaw 0.1.219-beta.0 → 0.1.219-dev.codex-issue-2805-worker-runtime.2

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 (524) hide show
  1. package/dist/agent/api-proxy.d.ts +0 -16
  2. package/dist/agent/api-proxy.d.ts.map +1 -1
  3. package/dist/agent/api-proxy.js +9 -8
  4. package/dist/agent/api-proxy.js.map +1 -1
  5. package/dist/agent/browser-launcher.d.ts +3 -0
  6. package/dist/agent/browser-launcher.d.ts.map +1 -1
  7. package/dist/agent/browser-launcher.js +101 -43
  8. package/dist/agent/browser-launcher.js.map +1 -1
  9. package/dist/agent/coding-conventions.d.ts +8 -0
  10. package/dist/agent/coding-conventions.d.ts.map +1 -0
  11. package/dist/agent/coding-conventions.js +19 -0
  12. package/dist/agent/coding-conventions.js.map +1 -0
  13. package/dist/agent/command-handlers.d.ts.map +1 -1
  14. package/dist/agent/command-handlers.js +4 -16
  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 +9 -3
  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 +0 -7
  21. package/dist/agent/context-refresh.js.map +1 -1
  22. package/dist/agent/context.d.ts +2 -4
  23. package/dist/agent/context.d.ts.map +1 -1
  24. package/dist/agent/context.js +12 -21
  25. package/dist/agent/context.js.map +1 -1
  26. package/dist/agent/engine-fallback.d.ts +0 -35
  27. package/dist/agent/engine-fallback.d.ts.map +1 -1
  28. package/dist/agent/engine-fallback.js +4 -3
  29. package/dist/agent/engine-fallback.js.map +1 -1
  30. package/dist/agent/engine-switch.d.ts +19 -38
  31. package/dist/agent/engine-switch.d.ts.map +1 -1
  32. package/dist/agent/engine-switch.js +46 -111
  33. package/dist/agent/engine-switch.js.map +1 -1
  34. package/dist/agent/engines/browser-tool-policy.d.ts +12 -1
  35. package/dist/agent/engines/browser-tool-policy.d.ts.map +1 -1
  36. package/dist/agent/engines/browser-tool-policy.js +17 -2
  37. package/dist/agent/engines/browser-tool-policy.js.map +1 -1
  38. package/dist/agent/engines/claude/executor-shell-groups.d.ts +11 -0
  39. package/dist/agent/engines/claude/executor-shell-groups.d.ts.map +1 -0
  40. package/dist/agent/engines/claude/executor-shell-groups.js +22 -0
  41. package/dist/agent/engines/claude/executor-shell-groups.js.map +1 -0
  42. package/dist/agent/engines/claude/session.d.ts +13 -4
  43. package/dist/agent/engines/claude/session.d.ts.map +1 -1
  44. package/dist/agent/engines/claude/session.js +165 -84
  45. package/dist/agent/engines/claude/session.js.map +1 -1
  46. package/dist/agent/engines/pi/shared/usage.d.ts +6 -8
  47. package/dist/agent/engines/pi/shared/usage.d.ts.map +1 -1
  48. package/dist/agent/engines/pi/shared/usage.js +24 -7
  49. package/dist/agent/engines/pi/shared/usage.js.map +1 -1
  50. package/dist/agent/engines/pi/tools.d.ts +3 -10
  51. package/dist/agent/engines/pi/tools.d.ts.map +1 -1
  52. package/dist/agent/engines/pi/tools.js +6 -20
  53. package/dist/agent/engines/pi/tools.js.map +1 -1
  54. package/dist/agent/engines/pi-coding/executor-shell.d.ts +4 -0
  55. package/dist/agent/engines/pi-coding/executor-shell.d.ts.map +1 -0
  56. package/dist/agent/engines/pi-coding/executor-shell.js +175 -0
  57. package/dist/agent/engines/pi-coding/executor-shell.js.map +1 -0
  58. package/dist/agent/engines/pi-coding/session.d.ts +4 -4
  59. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  60. package/dist/agent/engines/pi-coding/session.js +118 -66
  61. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  62. package/dist/agent/engines/pi-coding/tools.d.ts +2 -5
  63. package/dist/agent/engines/pi-coding/tools.d.ts.map +1 -1
  64. package/dist/agent/engines/pi-coding/tools.js +7 -5
  65. package/dist/agent/engines/pi-coding/tools.js.map +1 -1
  66. package/dist/agent/engines/session-types.d.ts +8 -8
  67. package/dist/agent/engines/session-types.d.ts.map +1 -1
  68. package/dist/agent/external-context/interrupt.d.ts +0 -2
  69. package/dist/agent/external-context/interrupt.d.ts.map +1 -1
  70. package/dist/agent/external-context/interrupt.js +0 -1
  71. package/dist/agent/external-context/interrupt.js.map +1 -1
  72. package/dist/agent/external-context/registry.d.ts +0 -2
  73. package/dist/agent/external-context/registry.d.ts.map +1 -1
  74. package/dist/agent/external-context/registry.js +2 -4
  75. package/dist/agent/external-context/registry.js.map +1 -1
  76. package/dist/agent/external-context/runtime.d.ts.map +1 -1
  77. package/dist/agent/external-context/runtime.js +15 -14
  78. package/dist/agent/external-context/runtime.js.map +1 -1
  79. package/dist/agent/external-context/types.d.ts +0 -2
  80. package/dist/agent/external-context/types.d.ts.map +1 -1
  81. package/dist/agent/fast-responder.d.ts +4 -20
  82. package/dist/agent/fast-responder.d.ts.map +1 -1
  83. package/dist/agent/fast-responder.js +28 -42
  84. package/dist/agent/fast-responder.js.map +1 -1
  85. package/dist/agent/interrupt-handler.d.ts +4 -18
  86. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  87. package/dist/agent/interrupt-handler.js +52 -283
  88. package/dist/agent/interrupt-handler.js.map +1 -1
  89. package/dist/agent/lab-run-system-prompt.d.ts.map +1 -1
  90. package/dist/agent/lab-run-system-prompt.js +4 -1
  91. package/dist/agent/lab-run-system-prompt.js.map +1 -1
  92. package/dist/agent/lifecycle-trace.d.ts.map +1 -1
  93. package/dist/agent/lifecycle-trace.js +6 -5
  94. package/dist/agent/lifecycle-trace.js.map +1 -1
  95. package/dist/agent/loop.d.ts +9 -3
  96. package/dist/agent/loop.d.ts.map +1 -1
  97. package/dist/agent/loop.js +288 -157
  98. package/dist/agent/loop.js.map +1 -1
  99. package/dist/agent/memory-protocol.d.ts +2 -2
  100. package/dist/agent/memory-protocol.d.ts.map +1 -1
  101. package/dist/agent/memory-protocol.js +3 -15
  102. package/dist/agent/memory-protocol.js.map +1 -1
  103. package/dist/agent/memory-store.d.ts +58 -0
  104. package/dist/agent/memory-store.d.ts.map +1 -0
  105. package/dist/agent/memory-store.js +152 -0
  106. package/dist/agent/memory-store.js.map +1 -0
  107. package/dist/agent/model-provider.d.ts +18 -5
  108. package/dist/agent/model-provider.d.ts.map +1 -1
  109. package/dist/agent/model-provider.js +58 -18
  110. package/dist/agent/model-provider.js.map +1 -1
  111. package/dist/agent/nightly-maintenance/dreaming-batch.d.ts +184 -0
  112. package/dist/agent/nightly-maintenance/dreaming-batch.d.ts.map +1 -0
  113. package/dist/agent/nightly-maintenance/dreaming-batch.js +192 -0
  114. package/dist/agent/nightly-maintenance/dreaming-batch.js.map +1 -0
  115. package/dist/agent/nightly-maintenance/dreaming-files.d.ts +48 -0
  116. package/dist/agent/nightly-maintenance/dreaming-files.d.ts.map +1 -0
  117. package/dist/agent/nightly-maintenance/dreaming-files.js +109 -0
  118. package/dist/agent/nightly-maintenance/dreaming-files.js.map +1 -0
  119. package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts +62 -0
  120. package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts.map +1 -0
  121. package/dist/agent/nightly-maintenance/dreaming-ledger.js +146 -0
  122. package/dist/agent/nightly-maintenance/dreaming-ledger.js.map +1 -0
  123. package/dist/agent/nightly-maintenance/dreaming-planner.d.ts +86 -0
  124. package/dist/agent/nightly-maintenance/dreaming-planner.d.ts.map +1 -0
  125. package/dist/agent/nightly-maintenance/dreaming-planner.js +304 -0
  126. package/dist/agent/nightly-maintenance/dreaming-planner.js.map +1 -0
  127. package/dist/agent/nightly-maintenance/dreaming-runner.d.ts +93 -0
  128. package/dist/agent/nightly-maintenance/dreaming-runner.d.ts.map +1 -0
  129. package/dist/agent/nightly-maintenance/dreaming-runner.js +156 -0
  130. package/dist/agent/nightly-maintenance/dreaming-runner.js.map +1 -0
  131. package/dist/agent/nightly-maintenance/dreaming-sources.d.ts +115 -0
  132. package/dist/agent/nightly-maintenance/dreaming-sources.d.ts.map +1 -0
  133. package/dist/agent/nightly-maintenance/dreaming-sources.js +270 -0
  134. package/dist/agent/nightly-maintenance/dreaming-sources.js.map +1 -0
  135. package/dist/agent/nightly-maintenance/index.d.ts +28 -8
  136. package/dist/agent/nightly-maintenance/index.d.ts.map +1 -1
  137. package/dist/agent/nightly-maintenance/index.js +42 -15
  138. package/dist/agent/nightly-maintenance/index.js.map +1 -1
  139. package/dist/agent/nightly-maintenance/skill-learning-gate.js +1 -1
  140. package/dist/agent/nightly-maintenance/skill-learning-gate.js.map +1 -1
  141. package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts +1 -1
  142. package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts.map +1 -1
  143. package/dist/agent/product-identity.d.ts +5 -4
  144. package/dist/agent/product-identity.d.ts.map +1 -1
  145. package/dist/agent/product-identity.js +7 -6
  146. package/dist/agent/product-identity.js.map +1 -1
  147. package/dist/agent/public-activity.js +1 -1
  148. package/dist/agent/public-activity.js.map +1 -1
  149. package/dist/agent/reply-watchdog.d.ts +5 -3
  150. package/dist/agent/reply-watchdog.d.ts.map +1 -1
  151. package/dist/agent/reply-watchdog.js +6 -4
  152. package/dist/agent/reply-watchdog.js.map +1 -1
  153. package/dist/agent/runtime-context.d.ts +27 -0
  154. package/dist/agent/runtime-context.d.ts.map +1 -0
  155. package/dist/agent/runtime-context.js +60 -0
  156. package/dist/agent/runtime-context.js.map +1 -0
  157. package/dist/agent/runtime-disclosure-policy.d.ts +6 -0
  158. package/dist/agent/runtime-disclosure-policy.d.ts.map +1 -0
  159. package/dist/agent/runtime-disclosure-policy.js +16 -0
  160. package/dist/agent/runtime-disclosure-policy.js.map +1 -0
  161. package/dist/agent/runtime-surface.d.ts +15 -4
  162. package/dist/agent/runtime-surface.d.ts.map +1 -1
  163. package/dist/agent/runtime-surface.js +0 -1
  164. package/dist/agent/runtime-surface.js.map +1 -1
  165. package/dist/agent/session-manager.d.ts +30 -126
  166. package/dist/agent/session-manager.d.ts.map +1 -1
  167. package/dist/agent/session-manager.js +60 -484
  168. package/dist/agent/session-manager.js.map +1 -1
  169. package/dist/agent/state.d.ts +42 -2
  170. package/dist/agent/state.d.ts.map +1 -1
  171. package/dist/agent/state.js +21 -11
  172. package/dist/agent/state.js.map +1 -1
  173. package/dist/agent/stream-handler.d.ts +6 -13
  174. package/dist/agent/stream-handler.d.ts.map +1 -1
  175. package/dist/agent/stream-handler.js +8 -62
  176. package/dist/agent/stream-handler.js.map +1 -1
  177. package/dist/agent/system-prompt.d.ts +2 -0
  178. package/dist/agent/system-prompt.d.ts.map +1 -1
  179. package/dist/agent/system-prompt.js +21 -20
  180. package/dist/agent/system-prompt.js.map +1 -1
  181. package/dist/agent/tool-usage.d.ts.map +1 -1
  182. package/dist/agent/tool-usage.js +0 -1
  183. package/dist/agent/tool-usage.js.map +1 -1
  184. package/dist/agent/transcript/transcript-backfill.js +3 -3
  185. package/dist/agent/transcript/transcript-backfill.js.map +1 -1
  186. package/dist/agent/transcript/transcript-indexer.d.ts +3 -31
  187. package/dist/agent/transcript/transcript-indexer.d.ts.map +1 -1
  188. package/dist/agent/transcript/transcript-indexer.js +58 -57
  189. package/dist/agent/transcript/transcript-indexer.js.map +1 -1
  190. package/dist/agent/transcript-parsers/trivial-tools.d.ts.map +1 -1
  191. package/dist/agent/transcript-parsers/trivial-tools.js +0 -2
  192. package/dist/agent/transcript-parsers/trivial-tools.js.map +1 -1
  193. package/dist/agent/transcript-parsers/types.d.ts +1 -1
  194. package/dist/agent/transcript-summarizer.d.ts +14 -0
  195. package/dist/agent/transcript-summarizer.d.ts.map +1 -1
  196. package/dist/agent/transcript-summarizer.js +69 -45
  197. package/dist/agent/transcript-summarizer.js.map +1 -1
  198. package/dist/agent/usage/usage-report-queue.d.ts.map +1 -1
  199. package/dist/agent/usage/usage-report-queue.js +53 -52
  200. package/dist/agent/usage/usage-report-queue.js.map +1 -1
  201. package/dist/agent/usage/usage-report-types.d.ts +1 -1
  202. package/dist/agent/usage/usage-report-types.d.ts.map +1 -1
  203. package/dist/agent/vocabulary-glossary.d.ts +3 -3
  204. package/dist/agent/wake-cycle-runner.d.ts +14 -17
  205. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  206. package/dist/agent/wake-cycle-runner.js +121 -290
  207. package/dist/agent/wake-cycle-runner.js.map +1 -1
  208. package/dist/builtin-skills/owner-manual/SKILL.md +2 -2
  209. package/dist/calendar/occurrence-ownership.d.ts.map +1 -1
  210. package/dist/calendar/occurrence-ownership.js +6 -5
  211. package/dist/calendar/occurrence-ownership.js.map +1 -1
  212. package/dist/calendar/scheduler.d.ts.map +1 -1
  213. package/dist/calendar/scheduler.js +4 -3
  214. package/dist/calendar/scheduler.js.map +1 -1
  215. package/dist/channels/interface.d.ts +8 -2
  216. package/dist/channels/interface.d.ts.map +1 -1
  217. package/dist/channels/interface.js +8 -1
  218. package/dist/channels/interface.js.map +1 -1
  219. package/dist/channels/manager.d.ts.map +1 -1
  220. package/dist/channels/manager.js +5 -1
  221. package/dist/channels/manager.js.map +1 -1
  222. package/dist/channels/queue.d.ts.map +1 -1
  223. package/dist/channels/queue.js +8 -0
  224. package/dist/channels/queue.js.map +1 -1
  225. package/dist/channels/tui.d.ts +14 -1
  226. package/dist/channels/tui.d.ts.map +1 -1
  227. package/dist/channels/tui.js +64 -2
  228. package/dist/channels/tui.js.map +1 -1
  229. package/dist/cli/index.d.ts +2 -2
  230. package/dist/cli/index.d.ts.map +1 -1
  231. package/dist/cli/index.js +22 -53
  232. package/dist/cli/index.js.map +1 -1
  233. package/dist/config/index.d.ts +13 -7
  234. package/dist/config/index.d.ts.map +1 -1
  235. package/dist/config/index.js +51 -64
  236. package/dist/config/index.js.map +1 -1
  237. package/dist/config/types.d.ts +28 -7
  238. package/dist/config/types.d.ts.map +1 -1
  239. package/dist/config/types.js +22 -20
  240. package/dist/config/types.js.map +1 -1
  241. package/dist/conversations/lazy-runtime.d.ts +5 -0
  242. package/dist/conversations/lazy-runtime.d.ts.map +1 -0
  243. package/dist/conversations/lazy-runtime.js +12 -0
  244. package/dist/conversations/lazy-runtime.js.map +1 -0
  245. package/dist/conversations/runtime.d.ts +17 -0
  246. package/dist/conversations/runtime.d.ts.map +1 -0
  247. package/dist/conversations/runtime.js +92 -0
  248. package/dist/conversations/runtime.js.map +1 -0
  249. package/dist/conversations/scheduler.d.ts +57 -0
  250. package/dist/conversations/scheduler.d.ts.map +1 -0
  251. package/dist/conversations/scheduler.js +175 -0
  252. package/dist/conversations/scheduler.js.map +1 -0
  253. package/dist/data-processing/pipeline.d.ts +0 -2
  254. package/dist/data-processing/pipeline.d.ts.map +1 -1
  255. package/dist/data-processing/pipeline.js +19 -24
  256. package/dist/data-processing/pipeline.js.map +1 -1
  257. package/dist/data-processing/restructure.d.ts +0 -2
  258. package/dist/data-processing/restructure.d.ts.map +1 -1
  259. package/dist/data-processing/restructure.js +6 -9
  260. package/dist/data-processing/restructure.js.map +1 -1
  261. package/dist/data-processing/types.d.ts +2 -9
  262. package/dist/data-processing/types.d.ts.map +1 -1
  263. package/dist/data-processing/types.js +2 -13
  264. package/dist/data-processing/types.js.map +1 -1
  265. package/dist/email/email-route-store.d.ts.map +1 -1
  266. package/dist/email/email-route-store.js +6 -5
  267. package/dist/email/email-route-store.js.map +1 -1
  268. package/dist/i18n/messages.d.ts +26 -2
  269. package/dist/i18n/messages.d.ts.map +1 -1
  270. package/dist/i18n/messages.js +30 -5
  271. package/dist/i18n/messages.js.map +1 -1
  272. package/dist/index.js.map +1 -1
  273. package/dist/logger.d.ts +11 -0
  274. package/dist/logger.d.ts.map +1 -1
  275. package/dist/logger.js +49 -1
  276. package/dist/logger.js.map +1 -1
  277. package/dist/obs/mini-app/status.d.ts.map +1 -1
  278. package/dist/obs/mini-app/status.js +0 -1
  279. package/dist/obs/mini-app/status.js.map +1 -1
  280. package/dist/onboarding/onboarding-service-client.d.ts +1 -0
  281. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  282. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  283. package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
  284. package/dist/onboarding/remote-set-owner.js +0 -1
  285. package/dist/onboarding/remote-set-owner.js.map +1 -1
  286. package/dist/onboarding/set-owner.d.ts +1 -1
  287. package/dist/onboarding/set-owner.d.ts.map +1 -1
  288. package/dist/onboarding/set-owner.js +3 -6
  289. package/dist/onboarding/set-owner.js.map +1 -1
  290. package/dist/reconfigure.d.ts.map +1 -1
  291. package/dist/reconfigure.js +1 -32
  292. package/dist/reconfigure.js.map +1 -1
  293. package/dist/reset.d.ts.map +1 -1
  294. package/dist/reset.js +3 -1
  295. package/dist/reset.js.map +1 -1
  296. package/dist/threads/active-threads-store.d.ts.map +1 -1
  297. package/dist/threads/active-threads-store.js +8 -27
  298. package/dist/threads/active-threads-store.js.map +1 -1
  299. package/dist/threads/dreaming-execution.d.ts +10 -0
  300. package/dist/threads/dreaming-execution.d.ts.map +1 -0
  301. package/dist/threads/dreaming-execution.js +78 -0
  302. package/dist/threads/dreaming-execution.js.map +1 -0
  303. package/dist/threads/execution-authority.d.ts +43 -0
  304. package/dist/threads/execution-authority.d.ts.map +1 -0
  305. package/dist/threads/execution-authority.js +75 -0
  306. package/dist/threads/execution-authority.js.map +1 -0
  307. package/dist/threads/execution-budget.d.ts +107 -0
  308. package/dist/threads/execution-budget.d.ts.map +1 -0
  309. package/dist/threads/execution-budget.js +257 -0
  310. package/dist/threads/execution-budget.js.map +1 -0
  311. package/dist/threads/execution-host.d.ts +17 -0
  312. package/dist/threads/execution-host.d.ts.map +1 -0
  313. package/dist/threads/execution-host.js +66 -0
  314. package/dist/threads/execution-host.js.map +1 -0
  315. package/dist/threads/execution-scheduler.d.ts +162 -0
  316. package/dist/threads/execution-scheduler.d.ts.map +1 -0
  317. package/dist/threads/execution-scheduler.js +413 -0
  318. package/dist/threads/execution-scheduler.js.map +1 -0
  319. package/dist/threads/execution-snapshot.d.ts +91 -0
  320. package/dist/threads/execution-snapshot.d.ts.map +1 -0
  321. package/dist/threads/execution-snapshot.js +146 -0
  322. package/dist/threads/execution-snapshot.js.map +1 -0
  323. package/dist/threads/execution-store.d.ts +374 -0
  324. package/dist/threads/execution-store.d.ts.map +1 -0
  325. package/dist/threads/execution-store.js +910 -0
  326. package/dist/threads/execution-store.js.map +1 -0
  327. package/dist/threads/execution-thread-error.d.ts +9 -0
  328. package/dist/threads/execution-thread-error.d.ts.map +1 -0
  329. package/dist/threads/execution-thread-error.js +12 -0
  330. package/dist/threads/execution-thread-error.js.map +1 -0
  331. package/dist/threads/executor-exit.d.ts +18 -0
  332. package/dist/threads/executor-exit.d.ts.map +1 -0
  333. package/dist/threads/executor-exit.js +21 -0
  334. package/dist/threads/executor-exit.js.map +1 -0
  335. package/dist/threads/foreground-task.d.ts +91 -0
  336. package/dist/threads/foreground-task.d.ts.map +1 -0
  337. package/dist/threads/foreground-task.js +191 -0
  338. package/dist/threads/foreground-task.js.map +1 -0
  339. package/dist/threads/foreman-business.d.ts +9 -0
  340. package/dist/threads/foreman-business.d.ts.map +1 -0
  341. package/dist/threads/foreman-business.js +117 -0
  342. package/dist/threads/foreman-business.js.map +1 -0
  343. package/dist/threads/foreman-client.d.ts +18 -0
  344. package/dist/threads/foreman-client.d.ts.map +1 -0
  345. package/dist/threads/foreman-client.js +51 -0
  346. package/dist/threads/foreman-client.js.map +1 -0
  347. package/dist/threads/foreman-delivery.d.ts +5 -0
  348. package/dist/threads/foreman-delivery.d.ts.map +1 -0
  349. package/dist/threads/foreman-delivery.js +21 -0
  350. package/dist/threads/foreman-delivery.js.map +1 -0
  351. package/dist/threads/foreman-execution.d.ts +32 -0
  352. package/dist/threads/foreman-execution.d.ts.map +1 -0
  353. package/dist/threads/foreman-execution.js +90 -0
  354. package/dist/threads/foreman-execution.js.map +1 -0
  355. package/dist/threads/foreman-host.d.ts +77 -0
  356. package/dist/threads/foreman-host.d.ts.map +1 -0
  357. package/dist/threads/foreman-host.js +891 -0
  358. package/dist/threads/foreman-host.js.map +1 -0
  359. package/dist/threads/foreman-protocol.d.ts +242 -0
  360. package/dist/threads/foreman-protocol.d.ts.map +1 -0
  361. package/dist/threads/foreman-protocol.js +116 -0
  362. package/dist/threads/foreman-protocol.js.map +1 -0
  363. package/dist/threads/foreman-store.d.ts +151 -0
  364. package/dist/threads/foreman-store.d.ts.map +1 -0
  365. package/dist/threads/foreman-store.js +299 -0
  366. package/dist/threads/foreman-store.js.map +1 -0
  367. package/dist/threads/generic-execution.d.ts +25 -0
  368. package/dist/threads/generic-execution.d.ts.map +1 -0
  369. package/dist/threads/generic-execution.js +86 -0
  370. package/dist/threads/generic-execution.js.map +1 -0
  371. package/dist/threads/init-thread-dir.d.ts +2 -2
  372. package/dist/threads/init-thread-dir.d.ts.map +1 -1
  373. package/dist/threads/init-thread-dir.js +6 -6
  374. package/dist/threads/init-thread-dir.js.map +1 -1
  375. package/dist/threads/ipc.d.ts +108 -2
  376. package/dist/threads/ipc.d.ts.map +1 -1
  377. package/dist/threads/ipc.js +14 -2
  378. package/dist/threads/ipc.js.map +1 -1
  379. package/dist/threads/lab-run-thread.d.ts +3 -5
  380. package/dist/threads/lab-run-thread.d.ts.map +1 -1
  381. package/dist/threads/lab-run-thread.js +3 -5
  382. package/dist/threads/lab-run-thread.js.map +1 -1
  383. package/dist/threads/lab-runtime-policy.d.ts +26 -21
  384. package/dist/threads/lab-runtime-policy.d.ts.map +1 -1
  385. package/dist/threads/lab-runtime-policy.js +31 -126
  386. package/dist/threads/lab-runtime-policy.js.map +1 -1
  387. package/dist/threads/process-group.d.ts +41 -0
  388. package/dist/threads/process-group.d.ts.map +1 -0
  389. package/dist/threads/process-group.js +161 -0
  390. package/dist/threads/process-group.js.map +1 -0
  391. package/dist/threads/relay-adapter.d.ts +8 -0
  392. package/dist/threads/relay-adapter.d.ts.map +1 -1
  393. package/dist/threads/relay-adapter.js +26 -1
  394. package/dist/threads/relay-adapter.js.map +1 -1
  395. package/dist/threads/supervisor.d.ts +191 -57
  396. package/dist/threads/supervisor.d.ts.map +1 -1
  397. package/dist/threads/supervisor.js +766 -427
  398. package/dist/threads/supervisor.js.map +1 -1
  399. package/dist/threads/task-workspace.d.ts +8 -0
  400. package/dist/threads/task-workspace.d.ts.map +1 -0
  401. package/dist/threads/task-workspace.js +52 -0
  402. package/dist/threads/task-workspace.js.map +1 -0
  403. package/dist/threads/worker-entry.d.ts.map +1 -1
  404. package/dist/threads/worker-entry.js +314 -34
  405. package/dist/threads/worker-entry.js.map +1 -1
  406. package/dist/threads/worker-execution-runtime.d.ts +75 -0
  407. package/dist/threads/worker-execution-runtime.d.ts.map +1 -0
  408. package/dist/threads/worker-execution-runtime.js +142 -0
  409. package/dist/threads/worker-execution-runtime.js.map +1 -0
  410. package/dist/threads/worker-execution.d.ts +35 -0
  411. package/dist/threads/worker-execution.d.ts.map +1 -0
  412. package/dist/threads/worker-execution.js +2 -0
  413. package/dist/threads/worker-execution.js.map +1 -0
  414. package/dist/threads/worker-runtime-policy.d.ts +42 -0
  415. package/dist/threads/worker-runtime-policy.d.ts.map +1 -0
  416. package/dist/threads/worker-runtime-policy.js +98 -0
  417. package/dist/threads/worker-runtime-policy.js.map +1 -0
  418. package/dist/tools/adapter-tool.d.ts +12 -0
  419. package/dist/tools/adapter-tool.d.ts.map +1 -0
  420. package/dist/tools/adapter-tool.js +2 -0
  421. package/dist/tools/adapter-tool.js.map +1 -0
  422. package/dist/tools/data-service.d.ts +2 -2
  423. package/dist/tools/delegation.d.ts +121 -0
  424. package/dist/tools/delegation.d.ts.map +1 -0
  425. package/dist/tools/delegation.js +106 -0
  426. package/dist/tools/delegation.js.map +1 -0
  427. package/dist/tools/dream-memory.d.ts +122 -0
  428. package/dist/tools/dream-memory.d.ts.map +1 -0
  429. package/dist/tools/dream-memory.js +513 -0
  430. package/dist/tools/dream-memory.js.map +1 -0
  431. package/dist/tools/email.d.ts +1 -1
  432. package/dist/tools/execution-control.d.ts +31 -0
  433. package/dist/tools/execution-control.d.ts.map +1 -0
  434. package/dist/tools/execution-control.js +71 -0
  435. package/dist/tools/execution-control.js.map +1 -0
  436. package/dist/tools/index.d.ts +5 -7
  437. package/dist/tools/index.d.ts.map +1 -1
  438. package/dist/tools/index.js +7 -13
  439. package/dist/tools/index.js.map +1 -1
  440. package/dist/tools/mcp-manager.d.ts +1 -1
  441. package/dist/tools/memory.d.ts +1 -1
  442. package/dist/tools/memory.d.ts.map +1 -1
  443. package/dist/tools/memory.js +69 -45
  444. package/dist/tools/memory.js.map +1 -1
  445. package/dist/tools/notify.d.ts +5 -0
  446. package/dist/tools/notify.d.ts.map +1 -1
  447. package/dist/tools/notify.js +45 -10
  448. package/dist/tools/notify.js.map +1 -1
  449. package/dist/tools/skill.d.ts +1 -1
  450. package/dist/tools/totp.d.ts +1 -1
  451. package/dist/tui/client.d.ts +1 -16
  452. package/dist/tui/client.d.ts.map +1 -1
  453. package/dist/tui/client.js +0 -4
  454. package/dist/tui/client.js.map +1 -1
  455. package/dist/tui/index.d.ts.map +1 -1
  456. package/dist/tui/index.js +0 -41
  457. package/dist/tui/index.js.map +1 -1
  458. package/dist/tui/protocol.d.ts +2 -1
  459. package/dist/tui/protocol.d.ts.map +1 -1
  460. package/dist/tui/protocol.js +2 -1
  461. package/dist/tui/protocol.js.map +1 -1
  462. package/dist/tui/renderer.d.ts.map +1 -1
  463. package/dist/tui/renderer.js +0 -5
  464. package/dist/tui/renderer.js.map +1 -1
  465. package/dist/tui/request-store.d.ts +1 -1
  466. package/dist/tui/request-store.d.ts.map +1 -1
  467. package/dist/tui/request-store.js +2 -2
  468. package/dist/tui/request-store.js.map +1 -1
  469. package/dist/tui/server.d.ts.map +1 -1
  470. package/dist/tui/server.js +137 -25
  471. package/dist/tui/server.js.map +1 -1
  472. package/dist/utils/claude-transcripts.d.ts +6 -0
  473. package/dist/utils/claude-transcripts.d.ts.map +1 -1
  474. package/dist/utils/claude-transcripts.js +8 -2
  475. package/dist/utils/claude-transcripts.js.map +1 -1
  476. package/dist/utils/restart.d.ts.map +1 -1
  477. package/dist/utils/restart.js +6 -0
  478. package/dist/utils/restart.js.map +1 -1
  479. package/dist-agent/bundle.cjs +2 -2
  480. package/package.json +1 -1
  481. package/dist/agent/mailbox.d.ts +0 -50
  482. package/dist/agent/mailbox.d.ts.map +0 -1
  483. package/dist/agent/mailbox.js +0 -124
  484. package/dist/agent/mailbox.js.map +0 -1
  485. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts +0 -77
  486. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts.map +0 -1
  487. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js +0 -158
  488. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js.map +0 -1
  489. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts +0 -116
  490. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts.map +0 -1
  491. package/dist/agent/nightly-maintenance/memory-dreaming.js +0 -458
  492. package/dist/agent/nightly-maintenance/memory-dreaming.js.map +0 -1
  493. package/dist/threads/task-contracts.d.ts +0 -194
  494. package/dist/threads/task-contracts.d.ts.map +0 -1
  495. package/dist/threads/task-contracts.js +0 -82
  496. package/dist/threads/task-contracts.js.map +0 -1
  497. package/dist/threads/task-sidecar.d.ts +0 -145
  498. package/dist/threads/task-sidecar.d.ts.map +0 -1
  499. package/dist/threads/task-sidecar.js +0 -311
  500. package/dist/threads/task-sidecar.js.map +0 -1
  501. package/dist/threads/task-store.d.ts +0 -172
  502. package/dist/threads/task-store.d.ts.map +0 -1
  503. package/dist/threads/task-store.js +0 -599
  504. package/dist/threads/task-store.js.map +0 -1
  505. package/dist/threads/thread-task-context.d.ts +0 -40
  506. package/dist/threads/thread-task-context.d.ts.map +0 -1
  507. package/dist/threads/thread-task-context.js +0 -160
  508. package/dist/threads/thread-task-context.js.map +0 -1
  509. package/dist/threads/thread-task-controller.d.ts +0 -122
  510. package/dist/threads/thread-task-controller.d.ts.map +0 -1
  511. package/dist/threads/thread-task-controller.js +0 -276
  512. package/dist/threads/thread-task-controller.js.map +0 -1
  513. package/dist/threads/thread-task-runtime.d.ts +0 -354
  514. package/dist/threads/thread-task-runtime.d.ts.map +0 -1
  515. package/dist/threads/thread-task-runtime.js +0 -917
  516. package/dist/threads/thread-task-runtime.js.map +0 -1
  517. package/dist/tools/switch-session.d.ts +0 -15
  518. package/dist/tools/switch-session.d.ts.map +0 -1
  519. package/dist/tools/switch-session.js +0 -88
  520. package/dist/tools/switch-session.js.map +0 -1
  521. package/dist/tools/thread-tasks.d.ts +0 -23
  522. package/dist/tools/thread-tasks.d.ts.map +0 -1
  523. package/dist/tools/thread-tasks.js +0 -122
  524. package/dist/tools/thread-tasks.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foreman-store.d.ts","sourceRoot":"","sources":["../../src/threads/foreman-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { DatabaseSync } from "node:sqlite";
4
+ import { getSharedProfileDir } from "../config/index.js";
5
+ /**
6
+ * Owner delivery obligations for Foreman tasks (#2805 stage 3).
7
+ *
8
+ * Repeats are acceptable, a lost final result is not (#1234). The execution
9
+ * layer only guarantees that an event reaches its caller (General); this
10
+ * store is General's own guarantee that the user hears about it.
11
+ *
12
+ * - A dispatch records its reply target, taken by the host from the
13
+ * authenticated inbound message, never from the model, and a short title.
14
+ * - A `result` (succeeded, failed, or a cancel the user did not ask for) or a
15
+ * `question` arriving for the task opens an obligation.
16
+ * - It is satisfied only by a successful `notify_user` that names the task.
17
+ * A result also needs `purpose="completion"`; a question needs only the
18
+ * binding. Text is never matched.
19
+ * - Rejecting the result, adding a requirement or retrying carries the
20
+ * obligation over to the next result: the open one is withdrawn.
21
+ * - When General's turn that handled the event ends without a delivery, or
22
+ * the event waits too long (queue, model backoff, crash), or a restart finds
23
+ * it overdue, the host sends the title/state plus the persisted public
24
+ * question or prepared answer. Internal diagnostics are never substituted.
25
+ * Fallback sends are idempotent per task and event, retried with
26
+ * backoff, and end as `delivery_failed`, visible in task status.
27
+ *
28
+ * Owned by the main process; worker threads reach it over IPC. It is its own
29
+ * file rather than part of executions.db: every step is idempotent (a
30
+ * dispatch is keyed by taskId, an obligation by taskId + eventId), so the
31
+ * order enqueue to General → open → acknowledge the outbox row gives the same
32
+ * at-least-once result as one transaction would.
33
+ */
34
+ export const DELIVERY_OBLIGATION_TIMEOUT_MS = 5 * 60_000;
35
+ export const MAX_FALLBACK_ATTEMPTS = 5;
36
+ const FALLBACK_RETRY_BASE_MS = 30_000;
37
+ export function foremanStorePath() {
38
+ return path.join(getSharedProfileDir(), "foreman.db");
39
+ }
40
+ export class ForemanStore {
41
+ now;
42
+ db;
43
+ statements;
44
+ closed = false;
45
+ constructor(dbPath = foremanStorePath(), now = () => new Date()) {
46
+ this.now = now;
47
+ fs.mkdirSync(path.dirname(dbPath), { recursive: true });
48
+ if (dbPath !== ":memory:") {
49
+ fs.closeSync(fs.openSync(dbPath, "a", 0o600));
50
+ fs.chmodSync(dbPath, 0o600);
51
+ }
52
+ this.db = new DatabaseSync(dbPath);
53
+ this.db.exec("PRAGMA journal_mode = WAL");
54
+ this.db.exec("PRAGMA busy_timeout = 5000");
55
+ this.db.exec(`
56
+ CREATE TABLE IF NOT EXISTS task_dispatches (
57
+ task_id TEXT PRIMARY KEY,
58
+ thread_id TEXT NOT NULL,
59
+ title TEXT NOT NULL,
60
+ reply_target TEXT NOT NULL,
61
+ sender TEXT NOT NULL,
62
+ worker TEXT,
63
+ workspace TEXT,
64
+ created_at TEXT NOT NULL
65
+ );
66
+ CREATE TABLE IF NOT EXISTS delivery_obligations (
67
+ task_id TEXT NOT NULL,
68
+ event_id TEXT NOT NULL,
69
+ execution_id TEXT NOT NULL,
70
+ kind TEXT NOT NULL,
71
+ status TEXT NOT NULL,
72
+ state TEXT NOT NULL,
73
+ created_at TEXT NOT NULL,
74
+ due_at TEXT NOT NULL,
75
+ attempts INTEGER NOT NULL DEFAULT 0,
76
+ last_error TEXT,
77
+ resolved_at TEXT,
78
+ PRIMARY KEY (task_id, event_id)
79
+ );
80
+ CREATE INDEX IF NOT EXISTS delivery_obligations_due_idx ON delivery_obligations(state, due_at);
81
+ CREATE INDEX IF NOT EXISTS task_dispatches_thread_idx ON task_dispatches(thread_id, created_at);
82
+ CREATE TABLE IF NOT EXISTS task_user_cancels (
83
+ task_id TEXT PRIMARY KEY,
84
+ cancelled_at TEXT NOT NULL
85
+ );
86
+ `);
87
+ const columns = this.db.prepare("PRAGMA table_info(task_dispatches)").all();
88
+ const deliveryColumns = this.db.prepare("PRAGMA table_info(delivery_obligations)").all();
89
+ if (!deliveryColumns.some((column) => column.name === "public_text"))
90
+ this.db.exec("ALTER TABLE delivery_obligations ADD COLUMN public_text TEXT");
91
+ if (!deliveryColumns.some((column) => column.name === "delivery_mode"))
92
+ this.db.exec("ALTER TABLE delivery_obligations ADD COLUMN delivery_mode TEXT");
93
+ if (!columns.some((column) => column.name === "metadata"))
94
+ this.db.exec("ALTER TABLE task_dispatches ADD COLUMN metadata TEXT NOT NULL DEFAULT '{}'");
95
+ this.db.exec(`CREATE TABLE IF NOT EXISTS task_group_cancels (
96
+ task_id TEXT PRIMARY KEY, reason TEXT NOT NULL, by_user INTEGER NOT NULL
97
+ )`);
98
+ const prepare = (sql) => this.db.prepare(sql);
99
+ this.statements = {
100
+ insertDispatch: prepare(`INSERT INTO task_dispatches (task_id, thread_id, title, reply_target, sender, worker, workspace, created_at, metadata)
101
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(task_id) DO NOTHING`),
102
+ getDispatch: prepare("SELECT * FROM task_dispatches WHERE task_id = ?"),
103
+ dispatchesForThread: prepare("SELECT * FROM task_dispatches WHERE thread_id = ? ORDER BY created_at DESC, rowid DESC LIMIT ?"),
104
+ allForThread: prepare("SELECT * FROM task_dispatches WHERE thread_id = ? ORDER BY created_at DESC, rowid DESC"),
105
+ groupCancels: prepare("SELECT * FROM task_group_cancels"),
106
+ groupCancel: prepare("INSERT OR REPLACE INTO task_group_cancels (task_id, reason, by_user) VALUES (?, ?, ?)"),
107
+ clearGroupCancel: prepare("DELETE FROM task_group_cancels WHERE task_id = ?"),
108
+ markUserCancelled: prepare("INSERT OR IGNORE INTO task_user_cancels (task_id, cancelled_at) VALUES (?, ?)"),
109
+ clearUserCancelled: prepare("DELETE FROM task_user_cancels WHERE task_id = ?"),
110
+ isUserCancelled: prepare("SELECT 1 AS found FROM task_user_cancels WHERE task_id = ?"),
111
+ insertObligation: prepare(`INSERT OR IGNORE INTO delivery_obligations
112
+ (task_id, event_id, execution_id, kind, status, state, created_at, due_at, public_text, delivery_mode)
113
+ VALUES (?, ?, ?, ?, ?, 'pending', ?, ?, ?, ?)`),
114
+ getObligation: prepare("SELECT * FROM delivery_obligations WHERE task_id = ? AND event_id = ?"),
115
+ pendingForTask: prepare(`SELECT * FROM delivery_obligations WHERE task_id = ?
116
+ AND (state IN ('pending', 'delivery_failed') OR (state = 'fallback_sent' AND kind = 'result' AND delivery_mode = 'review')) ORDER BY created_at, rowid`),
117
+ latestForTask: prepare("SELECT * FROM delivery_obligations WHERE task_id = ? ORDER BY created_at DESC, rowid DESC LIMIT 1"),
118
+ due: prepare("SELECT * FROM delivery_obligations WHERE state = 'pending' AND due_at <= ? ORDER BY due_at, rowid LIMIT ?"),
119
+ resolve: prepare(`UPDATE delivery_obligations SET state = ?, resolved_at = ?
120
+ WHERE task_id = ? AND event_id = ? AND state IN ('pending', 'fallback_sent', 'delivery_failed')`),
121
+ makeDue: prepare("UPDATE delivery_obligations SET due_at = ? WHERE task_id = ? AND event_id = ? AND state = 'pending'"),
122
+ retry: prepare(`UPDATE delivery_obligations SET attempts = attempts + 1, last_error = ?, due_at = ?
123
+ WHERE task_id = ? AND event_id = ? AND state = 'pending'`),
124
+ fail: prepare(`UPDATE delivery_obligations SET attempts = attempts + 1, last_error = ?, state = 'delivery_failed', resolved_at = ?
125
+ WHERE task_id = ? AND event_id = ? AND state = 'pending'`),
126
+ };
127
+ }
128
+ /** Record a dispatch once; a replayed dispatch keeps the original target and title. */
129
+ recordDispatch(dispatch) {
130
+ this.statements.insertDispatch.run(dispatch.taskId, dispatch.threadId, dispatch.title.slice(0, 200), JSON.stringify(dispatch.replyTarget), dispatch.sender.slice(0, 200), null, dispatch.workspace ?? null, this.timestamp(), JSON.stringify(dispatch.metadata ?? {}));
131
+ const stored = this.dispatch(dispatch.taskId);
132
+ if (!stored)
133
+ throw new Error(`Dispatch for ${dispatch.taskId} was not stored`);
134
+ return stored;
135
+ }
136
+ dispatch(taskId) {
137
+ const row = this.statements.getDispatch.get(taskId);
138
+ return row ? toDispatch(row) : null;
139
+ }
140
+ /** The most recent tasks one General thread dispatched. */
141
+ dispatchesForThread(threadId, limit = 20) {
142
+ return this.statements.dispatchesForThread.all(threadId, limit).map(toDispatch);
143
+ }
144
+ allForThread(threadId) {
145
+ return this.statements.allForThread.all(threadId).map(toDispatch);
146
+ }
147
+ /** Metadata commits before the enclosing execution transaction can publish acceptance. */
148
+ atomic(operation) {
149
+ this.db.exec("BEGIN IMMEDIATE");
150
+ try {
151
+ const value = operation();
152
+ this.db.exec("COMMIT");
153
+ return value;
154
+ }
155
+ catch (error) {
156
+ this.db.exec("ROLLBACK");
157
+ throw error;
158
+ }
159
+ }
160
+ requestGroupCancel(taskId, reason, byUser) {
161
+ this.statements.groupCancel.run(taskId, reason, byUser ? 1 : 0);
162
+ }
163
+ groupCancels() {
164
+ return this.statements.groupCancels.all()
165
+ .map((row) => ({ taskId: row.task_id, reason: row.reason, byUser: row.by_user === 1 }));
166
+ }
167
+ clearGroupCancel(taskId) {
168
+ this.statements.clearGroupCancel.run(taskId);
169
+ }
170
+ /**
171
+ * The user asked to cancel this task: the resulting `cancelled` result owes
172
+ * them nothing. A later retry of the task clears the mark.
173
+ */
174
+ markUserCancelled(taskId) {
175
+ this.statements.markUserCancelled.run(taskId, this.timestamp());
176
+ }
177
+ clearUserCancelled(taskId) {
178
+ this.statements.clearUserCancelled.run(taskId);
179
+ }
180
+ isUserCancelled(taskId) {
181
+ return this.statements.isUserCancelled.get(taskId) !== undefined;
182
+ }
183
+ /**
184
+ * An event owed to the user reached General. Idempotent per event. A task
185
+ * without a recorded dispatch has nobody to fall back to, and a cancel the
186
+ * user asked for owes nothing; both open no obligation.
187
+ */
188
+ open(input) {
189
+ if (input.kind === "result" && input.status === "cancelled"
190
+ && (input.userInitiated === true || this.isUserCancelled(input.taskId)))
191
+ return null;
192
+ if (!this.dispatch(input.taskId))
193
+ return null;
194
+ const at = this.now();
195
+ this.statements.insertObligation.run(input.taskId, input.eventId, input.executionId, input.kind, input.status, at.toISOString(), new Date(at.getTime() + (input.deliveryMode === "direct" ? 0 : DELIVERY_OBLIGATION_TIMEOUT_MS)).toISOString(), input.publicText?.slice(0, 8_000) ?? null, input.deliveryMode ?? "review");
196
+ return this.get(input.taskId, input.eventId);
197
+ }
198
+ get(taskId, eventId) {
199
+ const row = this.statements.getObligation.get(taskId, eventId);
200
+ return row ? toObligation(row) : null;
201
+ }
202
+ pending(taskId) {
203
+ return this.statements.pendingForTask.all(taskId).map(toObligation);
204
+ }
205
+ latest(taskId) {
206
+ const row = this.statements.latestForTask.get(taskId);
207
+ return row ? toObligation(row) : null;
208
+ }
209
+ /**
210
+ * A successful notify_user named this task. A result needs the completion
211
+ * purpose; a question is satisfied by any bound send. Returns how many
212
+ * obligations it satisfied.
213
+ */
214
+ markDelivered(taskId, purpose, eventId) {
215
+ let satisfied = 0;
216
+ for (const obligation of this.pending(taskId)) {
217
+ if (eventId !== undefined && obligation.eventId !== eventId)
218
+ continue;
219
+ if (obligation.kind === "result" && purpose !== "completion")
220
+ continue;
221
+ satisfied += Number(this.statements.resolve.run("delivered", this.timestamp(), taskId, obligation.eventId).changes);
222
+ }
223
+ return satisfied;
224
+ }
225
+ /** General rejected the result, added a requirement or retried: the obligation moves to the next result. */
226
+ withdraw(taskId) {
227
+ let withdrawn = 0;
228
+ for (const obligation of this.pending(taskId)) {
229
+ withdrawn += Number(this.statements.resolve.run("withdrawn", this.timestamp(), taskId, obligation.eventId).changes);
230
+ }
231
+ return withdrawn;
232
+ }
233
+ /** General's turn that handled these events ended: whatever it did not deliver is due now. */
234
+ makeDueNow(taskId, eventIds) {
235
+ const at = this.timestamp();
236
+ for (const eventId of eventIds)
237
+ this.statements.makeDue.run(at, taskId, eventId);
238
+ }
239
+ due(limit = 20) {
240
+ return this.statements.due.all(this.timestamp(), limit).map(toObligation);
241
+ }
242
+ fallbackSent(taskId, eventId) {
243
+ this.statements.resolve.run("fallback_sent", this.timestamp(), taskId, eventId);
244
+ }
245
+ /** Back off and retry; after the last attempt the obligation is `delivery_failed`. */
246
+ fallbackFailed(taskId, eventId, error) {
247
+ const current = this.get(taskId, eventId);
248
+ if (current?.state !== "pending")
249
+ return current;
250
+ const message = error.slice(0, 500);
251
+ if (current.attempts + 1 >= MAX_FALLBACK_ATTEMPTS) {
252
+ this.statements.fail.run(message, this.timestamp(), taskId, eventId);
253
+ }
254
+ else {
255
+ const delay = FALLBACK_RETRY_BASE_MS * 2 ** current.attempts;
256
+ this.statements.retry.run(message, new Date(this.now().getTime() + delay).toISOString(), taskId, eventId);
257
+ }
258
+ return this.get(taskId, eventId);
259
+ }
260
+ close() {
261
+ if (this.closed)
262
+ return;
263
+ this.closed = true;
264
+ this.db.close();
265
+ }
266
+ timestamp() {
267
+ return this.now().toISOString();
268
+ }
269
+ }
270
+ function toDispatch(row) {
271
+ return {
272
+ taskId: row.task_id,
273
+ threadId: row.thread_id,
274
+ title: row.title,
275
+ replyTarget: JSON.parse(row.reply_target),
276
+ sender: row.sender,
277
+ workspace: row.workspace,
278
+ createdAt: row.created_at,
279
+ metadata: JSON.parse(row.metadata || "{}"),
280
+ };
281
+ }
282
+ function toObligation(row) {
283
+ return {
284
+ publicText: row.public_text ?? null,
285
+ ...(row.delivery_mode === "direct" || row.delivery_mode === "review" ? { deliveryMode: row.delivery_mode } : {}),
286
+ taskId: row.task_id,
287
+ eventId: row.event_id,
288
+ executionId: row.execution_id,
289
+ kind: row.kind,
290
+ status: row.status,
291
+ state: row.state,
292
+ createdAt: row.created_at,
293
+ dueAt: row.due_at,
294
+ attempts: row.attempts,
295
+ lastError: row.last_error,
296
+ resolvedAt: row.resolved_at,
297
+ };
298
+ }
299
+ //# sourceMappingURL=foreman-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foreman-store.js","sourceRoot":"","sources":["../../src/threads/foreman-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { VisionClawConfig } from "../config/types.js";
2
+ import type { AdapterTool } from "../tools/adapter-tool.js";
3
+ import type { ExecutionRecord } from "./execution-store.js";
4
+ import { type ActiveWorkerRuntimePolicy } from "./worker-runtime-policy.js";
5
+ /**
6
+ * The generic internal-execution adapter (#2805 1c): local, restricted work
7
+ * submitted through the host's execution protocol, without Fin-App
8
+ * credentials or Lab identity. Its capability tier is the restricted local
9
+ * file/bash workspace; the Foreman tier that inherits the delegating thread's
10
+ * permissions is a later stage.
11
+ */
12
+ export declare const GENERIC_EXECUTION_THREAD_PREFIX = "exec-";
13
+ export declare function isGenericExecutionThreadId(threadId: string | null | undefined): boolean;
14
+ /** One worker thread per execution; the id is stable across resumes. */
15
+ export declare function genericExecutionThreadId(executionId: string): string;
16
+ export declare function genericExecutionPolicy(readOnly?: boolean): ActiveWorkerRuntimePolicy;
17
+ /** The generic adapter's only tool registration; the host applies all restrictions. */
18
+ export declare const GENERIC_ADAPTER_TOOLS: readonly AdapterTool[];
19
+ export declare function buildGenericExecutionSystemPrompt(config: VisionClawConfig, workspaceCwd: string, readOnly?: boolean): string;
20
+ /** Initial dispatch text: the caller's goal plus any carried-over progress. */
21
+ export declare function buildGenericExecutionMessage(record: ExecutionRecord, unfinishedTools: {
22
+ toolName: string;
23
+ callId: string;
24
+ }[]): string;
25
+ //# sourceMappingURL=generic-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-execution.d.ts","sourceRoot":"","sources":["../../src/threads/generic-execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,UAAU,CAAC;AAEvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIpE;AAMD,wBAAgB,sBAAsB,CAAC,QAAQ,UAAQ,GAAG,yBAAyB,CAYlF;AAED,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAA2B,CAAC;AAEpF,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAW1H;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CA2BrI"}
@@ -0,0 +1,86 @@
1
+ import crypto from "node:crypto";
2
+ import { executionControlTool } from "../tools/execution-control.js";
3
+ import { WorkerRuntimePolicySchema, } from "./worker-runtime-policy.js";
4
+ /**
5
+ * The generic internal-execution adapter (#2805 1c): local, restricted work
6
+ * submitted through the host's execution protocol, without Fin-App
7
+ * credentials or Lab identity. Its capability tier is the restricted local
8
+ * file/bash workspace; the Foreman tier that inherits the delegating thread's
9
+ * permissions is a later stage.
10
+ */
11
+ export const GENERIC_EXECUTION_THREAD_PREFIX = "exec-";
12
+ export function isGenericExecutionThreadId(threadId) {
13
+ return typeof threadId === "string" && threadId.startsWith(GENERIC_EXECUTION_THREAD_PREFIX);
14
+ }
15
+ /** One worker thread per execution; the id is stable across resumes. */
16
+ export function genericExecutionThreadId(executionId) {
17
+ const id = `${GENERIC_EXECUTION_THREAD_PREFIX}${executionId.replace(/^exec-/, "")}`.toLowerCase();
18
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(id) || id.length > 128)
19
+ throw new Error("Execution id is not a valid thread id");
20
+ return id;
21
+ }
22
+ const GENERIC_EXECUTION_TOOLS = [
23
+ "read", "write", "edit", "grep", "find", "ls", "bash", "todo_write", "execution_control",
24
+ ];
25
+ export function genericExecutionPolicy(readOnly = false) {
26
+ const policy = WorkerRuntimePolicySchema.parse({
27
+ prompt: { trustedOverlay: "" },
28
+ skills: { allowed: [] },
29
+ mcp: { staticServers: {} },
30
+ tools: { allowed: readOnly ? GENERIC_EXECUTION_TOOLS.filter((tool) => !["write", "edit", "bash", "todo_write"].includes(tool)) : GENERIC_EXECUTION_TOOLS },
31
+ channels: { outbound: [] },
32
+ });
33
+ return {
34
+ policy,
35
+ digest: crypto.createHash("sha256").update(JSON.stringify(policy)).digest("hex"),
36
+ };
37
+ }
38
+ /** The generic adapter's only tool registration; the host applies all restrictions. */
39
+ export const GENERIC_ADAPTER_TOOLS = [executionControlTool];
40
+ export function buildGenericExecutionSystemPrompt(config, workspaceCwd, readOnly = false) {
41
+ const name = config.agentName || "VisionClaw";
42
+ return `You are ${name}, running one internal background task for a trusted caller inside VisionClaw.
43
+
44
+ - This is not a conversation with the user. You cannot message anyone; your caller receives only what you report.
45
+ - Work only inside ${workspaceCwd}. ${readOnly ? "Use read-only file tools; do not write files or run shell commands." : "Use the file and shell tools you have, and TodoWrite for multi-step work."} Do not read or change files elsewhere.
46
+ - When the task is done, call execution_control with action=result, status=succeeded, a concise summary, and absolute paths of any produced files in artifactRefs.
47
+ - If the task cannot be completed, call execution_control with action=result, status=failed, and an error describing what blocked it.
48
+ - If you cannot continue without the caller's decision, call execution_control with action=question, then end your turn. The task resumes with the answer.
49
+ - Use action=progress for occasional short progress notes on long tasks.
50
+ - Report a result exactly once, then end your turn with no further tool calls.`;
51
+ }
52
+ /** Initial dispatch text: the caller's goal plus any carried-over progress. */
53
+ export function buildGenericExecutionMessage(record, unfinishedTools) {
54
+ const { payload } = record;
55
+ const sections = [`## Task\n${payload.goal}`];
56
+ if (payload.priorExecutionId)
57
+ sections.push("This is an explicit retry of the same Task. Retained inputs are its history; apply the current goal and requirements to those inputs, and verify earlier side effects before repeating operations.");
58
+ if (payload.requirements.length > 0)
59
+ sections.push(`## Requirements\n${payload.requirements.map((item) => `- ${item}`).join("\n")}`);
60
+ if (payload.expectedOutput)
61
+ sections.push(`## Expected output\n${payload.expectedOutput}`);
62
+ if (payload.contextSummary)
63
+ sections.push(`## Context\n${payload.contextSummary}`);
64
+ if (payload.inputRefs.length > 0)
65
+ sections.push(`## Inputs\n${payload.inputRefs.map((item) => `- ${item}`).join("\n")}`);
66
+ const checkpoint = payload.checkpoint;
67
+ if (checkpoint && (checkpoint.done.length > 0 || checkpoint.remaining.length > 0
68
+ || checkpoint.artifactRefs.length > 0 || checkpoint.uncertainOperations.length > 0)) {
69
+ sections.push([
70
+ "## Progress carried over (do not repeat completed work)",
71
+ ...checkpoint.done.map((item) => `- done: ${item}`),
72
+ ...checkpoint.remaining.map((item) => `- remaining: ${item}`),
73
+ ...checkpoint.artifactRefs.map((item) => `- artifact: ${item}`),
74
+ ...checkpoint.uncertainOperations.map((item) => `- outcome unknown, verify before repeating: ${item}`),
75
+ ].join("\n"));
76
+ }
77
+ if (record.autoResumeCount > 0) {
78
+ sections.push([
79
+ "## Resumed after an interruption",
80
+ "The previous process for this task stopped before reporting a result. Check the current state first (files, git status, produced artifacts) before continuing. Do not blindly repeat write operations.",
81
+ ...unfinishedTools.map((tool) => `- ${tool.toolName} (call ${tool.callId}) started but its outcome is unknown; verify it before repeating it.`),
82
+ ].join("\n"));
83
+ }
84
+ return sections.join("\n\n");
85
+ }
86
+ //# sourceMappingURL=generic-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-execution.js","sourceRoot":"","sources":["../../src/threads/generic-execution.ts"],"names":[],"mappings":"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"}
@@ -21,13 +21,13 @@
21
21
  * │ ├── skills → <profile>/.claude/skills (symlink)
22
22
  * │ └── settings.local.json (file, seeded by claude-settings.ts)
23
23
  * ├── session.json (created on first use by session manager)
24
- * ├── session-mailbox.json (created on first use by mailbox)
25
24
  * ├── logs/ (created by logger.init)
26
25
  * └── queue.db (created by MessageQueue)
27
26
  * ```
28
27
  */
29
28
  export declare function initThreadDirectory(options?: {
30
- isolatedLab?: boolean;
29
+ /** Use only copied, allowlisted skills and omit shared memory/browser settings. */
30
+ isolatedExecution?: boolean;
31
31
  allowedSkills?: readonly string[];
32
32
  /** Test override. Production reads the real home. */
33
33
  stockProfileHome?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"init-thread-dir.d.ts","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CA8FZ"}
1
+ {"version":3,"file":"init-thread-dir.d.ts","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAC3C,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CA+FZ"}
@@ -27,7 +27,6 @@ import { logger } from "../logger.js";
27
27
  * │ ├── skills → <profile>/.claude/skills (symlink)
28
28
  * │ └── settings.local.json (file, seeded by claude-settings.ts)
29
29
  * ├── session.json (created on first use by session manager)
30
- * ├── session-mailbox.json (created on first use by mailbox)
31
30
  * ├── logs/ (created by logger.init)
32
31
  * └── queue.db (created by MessageQueue)
33
32
  * ```
@@ -35,6 +34,7 @@ import { logger } from "../logger.js";
35
34
  export function initThreadDirectory(options = {}) {
36
35
  const threadDir = getConfigDir();
37
36
  const sharedDir = getSharedProfileDir();
37
+ const isolated = options.isolatedExecution === true;
38
38
  // Ensure the thread dir exists.
39
39
  fs.mkdirSync(threadDir, { recursive: true });
40
40
  // Ensure .claude/ exists inside thread dir.
@@ -43,8 +43,8 @@ export function initThreadDirectory(options = {}) {
43
43
  // Symlink skills → shared profile skills dir.
44
44
  const skillsLink = path.join(claudeDir, "skills");
45
45
  const skillsTarget = getSkillsDir();
46
- if (options.isolatedLab) {
47
- // Lab workers never inherit the mutable shared skill tree by symlink.
46
+ if (isolated) {
47
+ // Internal workers never inherit the mutable shared skill tree by symlink.
48
48
  if (fs.existsSync(skillsLink)) {
49
49
  if (fs.lstatSync(skillsLink).isSymbolicLink())
50
50
  fs.unlinkSync(skillsLink);
@@ -60,7 +60,7 @@ export function initThreadDirectory(options = {}) {
60
60
  ];
61
61
  const source = candidates.find((candidate) => fs.existsSync(path.join(candidate, "SKILL.md")));
62
62
  if (!source)
63
- throw new Error(`Allowed Lab skill is unavailable: ${skill}`);
63
+ throw new Error(`Allowed worker skill is unavailable: ${skill}`);
64
64
  fs.cpSync(source, path.join(skillsLink, skill), { recursive: true, force: true });
65
65
  }
66
66
  }
@@ -95,14 +95,14 @@ export function initThreadDirectory(options = {}) {
95
95
  // Seed settings.local.json with autoMemoryDirectory pointing to shared
96
96
  // profile's claude-auto-memory dir. This creates/updates
97
97
  // <thread-dir>/.claude/settings.local.json.
98
- if (!options.isolatedLab)
98
+ if (!isolated)
99
99
  seedClaudeAutoMemorySetting();
100
100
  // Fingerprint profile only exists after a fingerprint launch, so link it
101
101
  // when the shared dir is already there. The stock profile must be linked
102
102
  // even on a fresh host: the launcher passes the path as --user-data-dir
103
103
  // without mkdir, and a worker's own path is inside ~/.visionclaw, which
104
104
  // snap Chromium cannot create. Make the shared target first, then link.
105
- if (!options.isolatedLab) {
105
+ if (!isolated) {
106
106
  const stockTarget = getSharedPlaywrightProfileDir(options.stockProfileHome);
107
107
  const stockLink = path.join(threadDir, "playwright-mcp");
108
108
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"init-thread-dir.js","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-thread-dir.js","sourceRoot":"","sources":["../../src/threads/init-thread-dir.ts"],"names":[],"mappings":"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"}