visionclaw 0.1.218 → 0.1.219-dev.codex-issue-2805-worker-runtime.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 (595) 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 +5 -0
  47. package/dist/agent/engines/pi/shared/usage.d.ts.map +1 -1
  48. package/dist/agent/engines/pi/shared/usage.js +22 -3
  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 -17
  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 +0 -6
  86. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  87. package/dist/agent/interrupt-handler.js +5 -47
  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 +8 -2
  96. package/dist/agent/loop.d.ts.map +1 -1
  97. package/dist/agent/loop.js +291 -156
  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/owner-channel-resolver.d.ts +2 -0
  144. package/dist/agent/owner-channel-resolver.d.ts.map +1 -1
  145. package/dist/agent/owner-channel-resolver.js +4 -0
  146. package/dist/agent/owner-channel-resolver.js.map +1 -1
  147. package/dist/agent/product-identity.d.ts +5 -4
  148. package/dist/agent/product-identity.d.ts.map +1 -1
  149. package/dist/agent/product-identity.js +7 -6
  150. package/dist/agent/product-identity.js.map +1 -1
  151. package/dist/agent/public-activity.js +1 -1
  152. package/dist/agent/public-activity.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 +22 -17
  205. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  206. package/dist/agent/wake-cycle-runner.js +190 -320
  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 +12 -0
  220. package/dist/channels/manager.d.ts.map +1 -1
  221. package/dist/channels/manager.js +97 -8
  222. package/dist/channels/manager.js.map +1 -1
  223. package/dist/channels/queue.d.ts.map +1 -1
  224. package/dist/channels/queue.js +8 -0
  225. package/dist/channels/queue.js.map +1 -1
  226. package/dist/channels/telegram.d.ts.map +1 -1
  227. package/dist/channels/telegram.js +28 -2
  228. package/dist/channels/telegram.js.map +1 -1
  229. package/dist/channels/tui.d.ts +14 -1
  230. package/dist/channels/tui.d.ts.map +1 -1
  231. package/dist/channels/tui.js +64 -2
  232. package/dist/channels/tui.js.map +1 -1
  233. package/dist/channels/unavailable-target.d.ts +20 -0
  234. package/dist/channels/unavailable-target.d.ts.map +1 -0
  235. package/dist/channels/unavailable-target.js +82 -0
  236. package/dist/channels/unavailable-target.js.map +1 -0
  237. package/dist/cli/index.d.ts +2 -2
  238. package/dist/cli/index.d.ts.map +1 -1
  239. package/dist/cli/index.js +22 -53
  240. package/dist/cli/index.js.map +1 -1
  241. package/dist/config/index.d.ts +13 -7
  242. package/dist/config/index.d.ts.map +1 -1
  243. package/dist/config/index.js +51 -64
  244. package/dist/config/index.js.map +1 -1
  245. package/dist/config/types.d.ts +28 -7
  246. package/dist/config/types.d.ts.map +1 -1
  247. package/dist/config/types.js +22 -20
  248. package/dist/config/types.js.map +1 -1
  249. package/dist/conversations/lazy-runtime.d.ts +5 -0
  250. package/dist/conversations/lazy-runtime.d.ts.map +1 -0
  251. package/dist/conversations/lazy-runtime.js +12 -0
  252. package/dist/conversations/lazy-runtime.js.map +1 -0
  253. package/dist/conversations/runtime.d.ts +17 -0
  254. package/dist/conversations/runtime.d.ts.map +1 -0
  255. package/dist/conversations/runtime.js +92 -0
  256. package/dist/conversations/runtime.js.map +1 -0
  257. package/dist/conversations/scheduler.d.ts +57 -0
  258. package/dist/conversations/scheduler.d.ts.map +1 -0
  259. package/dist/conversations/scheduler.js +175 -0
  260. package/dist/conversations/scheduler.js.map +1 -0
  261. package/dist/data-processing/pipeline.d.ts +0 -2
  262. package/dist/data-processing/pipeline.d.ts.map +1 -1
  263. package/dist/data-processing/pipeline.js +19 -24
  264. package/dist/data-processing/pipeline.js.map +1 -1
  265. package/dist/data-processing/restructure.d.ts +0 -2
  266. package/dist/data-processing/restructure.d.ts.map +1 -1
  267. package/dist/data-processing/restructure.js +6 -9
  268. package/dist/data-processing/restructure.js.map +1 -1
  269. package/dist/data-processing/types.d.ts +2 -9
  270. package/dist/data-processing/types.d.ts.map +1 -1
  271. package/dist/data-processing/types.js +2 -13
  272. package/dist/data-processing/types.js.map +1 -1
  273. package/dist/email/email-route-store.d.ts.map +1 -1
  274. package/dist/email/email-route-store.js +6 -5
  275. package/dist/email/email-route-store.js.map +1 -1
  276. package/dist/i18n/messages.d.ts +26 -2
  277. package/dist/i18n/messages.d.ts.map +1 -1
  278. package/dist/i18n/messages.js +30 -5
  279. package/dist/i18n/messages.js.map +1 -1
  280. package/dist/index.js.map +1 -1
  281. package/dist/logger.d.ts +11 -0
  282. package/dist/logger.d.ts.map +1 -1
  283. package/dist/logger.js +49 -1
  284. package/dist/logger.js.map +1 -1
  285. package/dist/obs/mini-app/status.d.ts.map +1 -1
  286. package/dist/obs/mini-app/status.js +0 -1
  287. package/dist/obs/mini-app/status.js.map +1 -1
  288. package/dist/onboarding/onboarding-service-client.d.ts +1 -0
  289. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  290. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  291. package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
  292. package/dist/onboarding/remote-set-owner.js +0 -1
  293. package/dist/onboarding/remote-set-owner.js.map +1 -1
  294. package/dist/onboarding/set-owner.d.ts +1 -1
  295. package/dist/onboarding/set-owner.d.ts.map +1 -1
  296. package/dist/onboarding/set-owner.js +3 -6
  297. package/dist/onboarding/set-owner.js.map +1 -1
  298. package/dist/reconfigure.d.ts.map +1 -1
  299. package/dist/reconfigure.js +1 -32
  300. package/dist/reconfigure.js.map +1 -1
  301. package/dist/reset.d.ts.map +1 -1
  302. package/dist/reset.js +3 -1
  303. package/dist/reset.js.map +1 -1
  304. package/dist/threads/active-threads-store.d.ts.map +1 -1
  305. package/dist/threads/active-threads-store.js +8 -27
  306. package/dist/threads/active-threads-store.js.map +1 -1
  307. package/dist/threads/dreaming-execution.d.ts +10 -0
  308. package/dist/threads/dreaming-execution.d.ts.map +1 -0
  309. package/dist/threads/dreaming-execution.js +78 -0
  310. package/dist/threads/dreaming-execution.js.map +1 -0
  311. package/dist/threads/execution-authority.d.ts +43 -0
  312. package/dist/threads/execution-authority.d.ts.map +1 -0
  313. package/dist/threads/execution-authority.js +75 -0
  314. package/dist/threads/execution-authority.js.map +1 -0
  315. package/dist/threads/execution-budget.d.ts +107 -0
  316. package/dist/threads/execution-budget.d.ts.map +1 -0
  317. package/dist/threads/execution-budget.js +257 -0
  318. package/dist/threads/execution-budget.js.map +1 -0
  319. package/dist/threads/execution-host.d.ts +17 -0
  320. package/dist/threads/execution-host.d.ts.map +1 -0
  321. package/dist/threads/execution-host.js +66 -0
  322. package/dist/threads/execution-host.js.map +1 -0
  323. package/dist/threads/execution-scheduler.d.ts +162 -0
  324. package/dist/threads/execution-scheduler.d.ts.map +1 -0
  325. package/dist/threads/execution-scheduler.js +413 -0
  326. package/dist/threads/execution-scheduler.js.map +1 -0
  327. package/dist/threads/execution-snapshot.d.ts +91 -0
  328. package/dist/threads/execution-snapshot.d.ts.map +1 -0
  329. package/dist/threads/execution-snapshot.js +146 -0
  330. package/dist/threads/execution-snapshot.js.map +1 -0
  331. package/dist/threads/execution-store.d.ts +374 -0
  332. package/dist/threads/execution-store.d.ts.map +1 -0
  333. package/dist/threads/execution-store.js +910 -0
  334. package/dist/threads/execution-store.js.map +1 -0
  335. package/dist/threads/execution-thread-error.d.ts +9 -0
  336. package/dist/threads/execution-thread-error.d.ts.map +1 -0
  337. package/dist/threads/execution-thread-error.js +12 -0
  338. package/dist/threads/execution-thread-error.js.map +1 -0
  339. package/dist/threads/executor-exit.d.ts +18 -0
  340. package/dist/threads/executor-exit.d.ts.map +1 -0
  341. package/dist/threads/executor-exit.js +21 -0
  342. package/dist/threads/executor-exit.js.map +1 -0
  343. package/dist/threads/foreground-task.d.ts +91 -0
  344. package/dist/threads/foreground-task.d.ts.map +1 -0
  345. package/dist/threads/foreground-task.js +191 -0
  346. package/dist/threads/foreground-task.js.map +1 -0
  347. package/dist/threads/foreman-business.d.ts +9 -0
  348. package/dist/threads/foreman-business.d.ts.map +1 -0
  349. package/dist/threads/foreman-business.js +117 -0
  350. package/dist/threads/foreman-business.js.map +1 -0
  351. package/dist/threads/foreman-client.d.ts +18 -0
  352. package/dist/threads/foreman-client.d.ts.map +1 -0
  353. package/dist/threads/foreman-client.js +51 -0
  354. package/dist/threads/foreman-client.js.map +1 -0
  355. package/dist/threads/foreman-delivery.d.ts +5 -0
  356. package/dist/threads/foreman-delivery.d.ts.map +1 -0
  357. package/dist/threads/foreman-delivery.js +21 -0
  358. package/dist/threads/foreman-delivery.js.map +1 -0
  359. package/dist/threads/foreman-execution.d.ts +32 -0
  360. package/dist/threads/foreman-execution.d.ts.map +1 -0
  361. package/dist/threads/foreman-execution.js +90 -0
  362. package/dist/threads/foreman-execution.js.map +1 -0
  363. package/dist/threads/foreman-host.d.ts +77 -0
  364. package/dist/threads/foreman-host.d.ts.map +1 -0
  365. package/dist/threads/foreman-host.js +891 -0
  366. package/dist/threads/foreman-host.js.map +1 -0
  367. package/dist/threads/foreman-protocol.d.ts +242 -0
  368. package/dist/threads/foreman-protocol.d.ts.map +1 -0
  369. package/dist/threads/foreman-protocol.js +116 -0
  370. package/dist/threads/foreman-protocol.js.map +1 -0
  371. package/dist/threads/foreman-store.d.ts +151 -0
  372. package/dist/threads/foreman-store.d.ts.map +1 -0
  373. package/dist/threads/foreman-store.js +299 -0
  374. package/dist/threads/foreman-store.js.map +1 -0
  375. package/dist/threads/generic-execution.d.ts +25 -0
  376. package/dist/threads/generic-execution.d.ts.map +1 -0
  377. package/dist/threads/generic-execution.js +86 -0
  378. package/dist/threads/generic-execution.js.map +1 -0
  379. package/dist/threads/init-thread-dir.d.ts +2 -2
  380. package/dist/threads/init-thread-dir.d.ts.map +1 -1
  381. package/dist/threads/init-thread-dir.js +6 -6
  382. package/dist/threads/init-thread-dir.js.map +1 -1
  383. package/dist/threads/ipc.d.ts +108 -2
  384. package/dist/threads/ipc.d.ts.map +1 -1
  385. package/dist/threads/ipc.js +14 -2
  386. package/dist/threads/ipc.js.map +1 -1
  387. package/dist/threads/lab-run-thread.d.ts +3 -5
  388. package/dist/threads/lab-run-thread.d.ts.map +1 -1
  389. package/dist/threads/lab-run-thread.js +3 -5
  390. package/dist/threads/lab-run-thread.js.map +1 -1
  391. package/dist/threads/lab-runtime-policy.d.ts +26 -21
  392. package/dist/threads/lab-runtime-policy.d.ts.map +1 -1
  393. package/dist/threads/lab-runtime-policy.js +31 -126
  394. package/dist/threads/lab-runtime-policy.js.map +1 -1
  395. package/dist/threads/process-group.d.ts +41 -0
  396. package/dist/threads/process-group.d.ts.map +1 -0
  397. package/dist/threads/process-group.js +161 -0
  398. package/dist/threads/process-group.js.map +1 -0
  399. package/dist/threads/relay-adapter.d.ts +8 -0
  400. package/dist/threads/relay-adapter.d.ts.map +1 -1
  401. package/dist/threads/relay-adapter.js +26 -1
  402. package/dist/threads/relay-adapter.js.map +1 -1
  403. package/dist/threads/supervisor.d.ts +191 -57
  404. package/dist/threads/supervisor.d.ts.map +1 -1
  405. package/dist/threads/supervisor.js +766 -427
  406. package/dist/threads/supervisor.js.map +1 -1
  407. package/dist/threads/task-workspace.d.ts +8 -0
  408. package/dist/threads/task-workspace.d.ts.map +1 -0
  409. package/dist/threads/task-workspace.js +52 -0
  410. package/dist/threads/task-workspace.js.map +1 -0
  411. package/dist/threads/worker-entry.d.ts.map +1 -1
  412. package/dist/threads/worker-entry.js +314 -34
  413. package/dist/threads/worker-entry.js.map +1 -1
  414. package/dist/threads/worker-execution-runtime.d.ts +75 -0
  415. package/dist/threads/worker-execution-runtime.d.ts.map +1 -0
  416. package/dist/threads/worker-execution-runtime.js +142 -0
  417. package/dist/threads/worker-execution-runtime.js.map +1 -0
  418. package/dist/threads/worker-execution.d.ts +35 -0
  419. package/dist/threads/worker-execution.d.ts.map +1 -0
  420. package/dist/threads/worker-execution.js +2 -0
  421. package/dist/threads/worker-execution.js.map +1 -0
  422. package/dist/threads/worker-runtime-policy.d.ts +42 -0
  423. package/dist/threads/worker-runtime-policy.d.ts.map +1 -0
  424. package/dist/threads/worker-runtime-policy.js +98 -0
  425. package/dist/threads/worker-runtime-policy.js.map +1 -0
  426. package/dist/tools/adapter-tool.d.ts +12 -0
  427. package/dist/tools/adapter-tool.d.ts.map +1 -0
  428. package/dist/tools/adapter-tool.js +2 -0
  429. package/dist/tools/adapter-tool.js.map +1 -0
  430. package/dist/tools/data-service.d.ts +2 -2
  431. package/dist/tools/delegation.d.ts +121 -0
  432. package/dist/tools/delegation.d.ts.map +1 -0
  433. package/dist/tools/delegation.js +106 -0
  434. package/dist/tools/delegation.js.map +1 -0
  435. package/dist/tools/dream-memory.d.ts +122 -0
  436. package/dist/tools/dream-memory.d.ts.map +1 -0
  437. package/dist/tools/dream-memory.js +513 -0
  438. package/dist/tools/dream-memory.js.map +1 -0
  439. package/dist/tools/email.d.ts +1 -1
  440. package/dist/tools/execution-control.d.ts +31 -0
  441. package/dist/tools/execution-control.d.ts.map +1 -0
  442. package/dist/tools/execution-control.js +71 -0
  443. package/dist/tools/execution-control.js.map +1 -0
  444. package/dist/tools/index.d.ts +5 -7
  445. package/dist/tools/index.d.ts.map +1 -1
  446. package/dist/tools/index.js +7 -13
  447. package/dist/tools/index.js.map +1 -1
  448. package/dist/tools/mcp-manager.d.ts +1 -1
  449. package/dist/tools/memory.d.ts +1 -1
  450. package/dist/tools/memory.d.ts.map +1 -1
  451. package/dist/tools/memory.js +69 -45
  452. package/dist/tools/memory.js.map +1 -1
  453. package/dist/tools/notify.d.ts +5 -0
  454. package/dist/tools/notify.d.ts.map +1 -1
  455. package/dist/tools/notify.js +45 -10
  456. package/dist/tools/notify.js.map +1 -1
  457. package/dist/tools/skill.d.ts +1 -1
  458. package/dist/tools/totp.d.ts +1 -1
  459. package/dist/tui/client.d.ts +1 -16
  460. package/dist/tui/client.d.ts.map +1 -1
  461. package/dist/tui/client.js +0 -4
  462. package/dist/tui/client.js.map +1 -1
  463. package/dist/tui/index.d.ts.map +1 -1
  464. package/dist/tui/index.js +0 -41
  465. package/dist/tui/index.js.map +1 -1
  466. package/dist/tui/protocol.d.ts +2 -1
  467. package/dist/tui/protocol.d.ts.map +1 -1
  468. package/dist/tui/protocol.js +2 -1
  469. package/dist/tui/protocol.js.map +1 -1
  470. package/dist/tui/renderer.d.ts.map +1 -1
  471. package/dist/tui/renderer.js +0 -5
  472. package/dist/tui/renderer.js.map +1 -1
  473. package/dist/tui/request-store.d.ts +1 -1
  474. package/dist/tui/request-store.d.ts.map +1 -1
  475. package/dist/tui/request-store.js +2 -2
  476. package/dist/tui/request-store.js.map +1 -1
  477. package/dist/tui/server.d.ts.map +1 -1
  478. package/dist/tui/server.js +137 -25
  479. package/dist/tui/server.js.map +1 -1
  480. package/dist/utils/claude-transcripts.d.ts +6 -0
  481. package/dist/utils/claude-transcripts.d.ts.map +1 -1
  482. package/dist/utils/claude-transcripts.js +8 -2
  483. package/dist/utils/claude-transcripts.js.map +1 -1
  484. package/dist/utils/restart.d.ts.map +1 -1
  485. package/dist/utils/restart.js +6 -0
  486. package/dist/utils/restart.js.map +1 -1
  487. package/dist-agent/bundle.cjs +2 -2
  488. package/package.json +1 -1
  489. package/dist/agent/mailbox.d.ts +0 -50
  490. package/dist/agent/mailbox.d.ts.map +0 -1
  491. package/dist/agent/mailbox.js +0 -124
  492. package/dist/agent/mailbox.js.map +0 -1
  493. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts +0 -77
  494. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts.map +0 -1
  495. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js +0 -158
  496. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js.map +0 -1
  497. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts +0 -116
  498. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts.map +0 -1
  499. package/dist/agent/nightly-maintenance/memory-dreaming.js +0 -458
  500. package/dist/agent/nightly-maintenance/memory-dreaming.js.map +0 -1
  501. package/dist/builtin-skills/catalog/phone-adb-automation/SKILL.md +0 -412
  502. package/dist/builtin-skills/catalog/phone-adb-automation/phone_input.sh +0 -132
  503. package/dist/builtin-skills/catalog/phone-adb-automation/phone_launch.sh +0 -166
  504. package/dist/builtin-skills/catalog/phone-adb-automation/phone_screenshot.sh +0 -87
  505. package/dist/builtin-skills/catalog/phone-adb-automation/phone_security_kbd.py +0 -174
  506. package/dist/builtin-skills/catalog/phone-adb-automation/phone_setup.sh +0 -274
  507. package/dist/builtin-skills/catalog/phone-adb-automation/phone_swipe.sh +0 -111
  508. package/dist/builtin-skills/catalog/phone-adb-automation/phone_tap.sh +0 -87
  509. package/dist/builtin-skills/catalog/phone-adb-automation/phone_ui_parse.py +0 -176
  510. package/dist/builtin-skills/catalog/phone-adb-automation/phone_wake_unlock.sh +0 -67
  511. package/dist/builtin-skills/macos-automation/SKILL.md +0 -132
  512. package/dist/builtin-skills/transcribe-audio/SKILL.md +0 -122
  513. package/dist/builtin-skills/visionclaw-manual/SKILL.md +0 -337
  514. package/dist/obs/rdp/icons/icons/app_windows.svg +0 -4
  515. package/dist/obs/rdp/icons/icons/clip_get.svg +0 -4
  516. package/dist/obs/rdp/icons/icons/clip_send.svg +0 -4
  517. package/dist/obs/rdp/icons/icons/clip_shared.svg +0 -4
  518. package/dist/obs/rdp/icons/icons/clipboard.svg +0 -4
  519. package/dist/obs/rdp/icons/icons/clipboard_shared.svg +0 -4
  520. package/dist/obs/rdp/icons/icons/control.svg +0 -4
  521. package/dist/obs/rdp/icons/icons/desktop.svg +0 -4
  522. package/dist/obs/rdp/icons/icons/display.svg +0 -4
  523. package/dist/obs/rdp/icons/icons/launchpad.svg +0 -4
  524. package/dist/obs/rdp/icons/icons/mission_control.svg +0 -4
  525. package/dist/obs/rdp/icons/icons/screenshot.svg +0 -4
  526. package/dist/obs/rdp/icons/icons/zoom_actual.svg +0 -4
  527. package/dist/obs/rdp/icons/icons/zoom_fit.svg +0 -4
  528. package/dist/obs/rdp/icons/icons/zoom_in.svg +0 -4
  529. package/dist/obs/rdp/icons/icons/zoom_out.svg +0 -4
  530. package/dist/realtime/assets/index.html +0 -1058
  531. package/dist/realtime/assets/samples/alloy.mp3 +0 -0
  532. package/dist/realtime/assets/samples/ash.mp3 +0 -0
  533. package/dist/realtime/assets/samples/ballad.mp3 +0 -0
  534. package/dist/realtime/assets/samples/cedar.mp3 +0 -0
  535. package/dist/realtime/assets/samples/coral.mp3 +0 -0
  536. package/dist/realtime/assets/samples/echo.mp3 +0 -0
  537. package/dist/realtime/assets/samples/marin.mp3 +0 -0
  538. package/dist/realtime/assets/samples/sage.mp3 +0 -0
  539. package/dist/realtime/assets/samples/shimmer.mp3 +0 -0
  540. package/dist/realtime/assets/samples/verse.mp3 +0 -0
  541. package/dist/threads/task-contracts.d.ts +0 -194
  542. package/dist/threads/task-contracts.d.ts.map +0 -1
  543. package/dist/threads/task-contracts.js +0 -82
  544. package/dist/threads/task-contracts.js.map +0 -1
  545. package/dist/threads/task-sidecar.d.ts +0 -143
  546. package/dist/threads/task-sidecar.d.ts.map +0 -1
  547. package/dist/threads/task-sidecar.js +0 -309
  548. package/dist/threads/task-sidecar.js.map +0 -1
  549. package/dist/threads/task-store.d.ts +0 -172
  550. package/dist/threads/task-store.d.ts.map +0 -1
  551. package/dist/threads/task-store.js +0 -594
  552. package/dist/threads/task-store.js.map +0 -1
  553. package/dist/threads/thread-task-context.d.ts +0 -40
  554. package/dist/threads/thread-task-context.d.ts.map +0 -1
  555. package/dist/threads/thread-task-context.js +0 -159
  556. package/dist/threads/thread-task-context.js.map +0 -1
  557. package/dist/threads/thread-task-controller.d.ts +0 -122
  558. package/dist/threads/thread-task-controller.d.ts.map +0 -1
  559. package/dist/threads/thread-task-controller.js +0 -276
  560. package/dist/threads/thread-task-controller.js.map +0 -1
  561. package/dist/threads/thread-task-runtime.d.ts +0 -320
  562. package/dist/threads/thread-task-runtime.d.ts.map +0 -1
  563. package/dist/threads/thread-task-runtime.js +0 -843
  564. package/dist/threads/thread-task-runtime.js.map +0 -1
  565. package/dist/tools/switch-session.d.ts +0 -15
  566. package/dist/tools/switch-session.d.ts.map +0 -1
  567. package/dist/tools/switch-session.js +0 -88
  568. package/dist/tools/switch-session.js.map +0 -1
  569. package/dist/tools/thread-tasks.d.ts +0 -10
  570. package/dist/tools/thread-tasks.d.ts.map +0 -1
  571. package/dist/tools/thread-tasks.js +0 -88
  572. package/dist/tools/thread-tasks.js.map +0 -1
  573. package/dist-agent/assets/index.html +0 -1058
  574. package/dist-agent/assets/samples/alloy.mp3 +0 -0
  575. package/dist-agent/assets/samples/ash.mp3 +0 -0
  576. package/dist-agent/assets/samples/ballad.mp3 +0 -0
  577. package/dist-agent/assets/samples/cedar.mp3 +0 -0
  578. package/dist-agent/assets/samples/coral.mp3 +0 -0
  579. package/dist-agent/assets/samples/echo.mp3 +0 -0
  580. package/dist-agent/assets/samples/marin.mp3 +0 -0
  581. package/dist-agent/assets/samples/sage.mp3 +0 -0
  582. package/dist-agent/assets/samples/shimmer.mp3 +0 -0
  583. package/dist-agent/assets/samples/verse.mp3 +0 -0
  584. package/dist-agent/playwriter-relay.cjs +0 -95
  585. package/dist-agent/realtime/assets/index.html +0 -1058
  586. package/dist-agent/realtime/assets/samples/alloy.mp3 +0 -0
  587. package/dist-agent/realtime/assets/samples/ash.mp3 +0 -0
  588. package/dist-agent/realtime/assets/samples/ballad.mp3 +0 -0
  589. package/dist-agent/realtime/assets/samples/cedar.mp3 +0 -0
  590. package/dist-agent/realtime/assets/samples/coral.mp3 +0 -0
  591. package/dist-agent/realtime/assets/samples/echo.mp3 +0 -0
  592. package/dist-agent/realtime/assets/samples/marin.mp3 +0 -0
  593. package/dist-agent/realtime/assets/samples/sage.mp3 +0 -0
  594. package/dist-agent/realtime/assets/samples/shimmer.mp3 +0 -0
  595. package/dist-agent/realtime/assets/samples/verse.mp3 +0 -0
@@ -1,594 +0,0 @@
1
- /**
2
- * Durable thread task store (issue #1996, PR 1). Storage only: nothing calls
3
- * this yet, and current scheduling is unchanged.
4
- *
5
- * The tables live in the thread's existing `queue.db`, next to the message
6
- * queue, so a later PR can hand a message's responsibility over in the same
7
- * SQLite file. The default thread keeps the profile-root layout; other
8
- * threads use their thread directory (see {@link taskStorePathForThread}).
9
- *
10
- * Responsibility boundary with {@link MessageQueue}: a claimed message may be
11
- * marked handled only after its `user_message` event is durable here
12
- * ({@link ThreadTaskStore.appendMessageEvent}). From then on the consume
13
- * position, not the queue, owns the follow-up. `handled` never means a task
14
- * is completed.
15
- *
16
- * Writer fencing mirrors the queue's claim owner: the process that owns the
17
- * thread claims the writer slot at startup (worker instance id for workers),
18
- * and every commit checks it inside the transaction. A replaced worker can
19
- * still append events (they are facts and idempotent) but cannot commit task
20
- * changes, move the consume position or record recovery deliveries.
21
- */
22
- import { DatabaseSync } from "node:sqlite";
23
- import { createHash, randomUUID } from "node:crypto";
24
- import fs from "node:fs";
25
- import path from "node:path";
26
- import { getSharedProfileDir, getThreadDir } from "../config/index.js";
27
- import { DEFAULT_THREAD_ID } from "../channels/interface.js";
28
- import { getMessageDedupKey } from "../channels/message-dedup.js";
29
- import { sanitizeJsonValue } from "../utils/json-sanitize.js";
30
- import { OPEN_TASK_STATUSES, TASK_STATUSES, canTransition, isTaskEventKind, isTaskStatus, validateTaskState, } from "./task-contracts.js";
31
- /**
32
- * Whether a thread has work for a worker (PR 5), read without opening a
33
- * store or claiming its writer: the supervisor asks this about threads whose
34
- * worker is not running. Work is a task that may start now, or any event
35
- * the sidecar has not folded yet: the queue claim was released at wake end,
36
- * so if the process stopped before the fold, the event log is the only
37
- * trace of a new request or of progress on a delivered task.
38
- * False when the file or the table does not exist yet.
39
- */
40
- export function threadHasRunnableTasks(dbPath, threadId, now = Date.now()) {
41
- if (!fs.existsSync(dbPath))
42
- return false;
43
- let db;
44
- try {
45
- db = new DatabaseSync(dbPath, { readOnly: true });
46
- db.exec("PRAGMA busy_timeout = 2000");
47
- // A task whose resume at this version was already delivered is not new
48
- // work: its worker ran it (or dropped it as stale). Counting it would
49
- // respawn an idle worker for nothing after every idle exit.
50
- const row = db.prepare(`SELECT 1 AS found FROM thread_tasks t
51
- WHERE t.thread_id = ? AND t.status IN ('in_progress', 'pending') AND (t.run_after IS NULL OR t.run_after <= ?)
52
- AND NOT EXISTS (SELECT 1 FROM task_recovery_deliveries d
53
- WHERE d.thread_id = t.thread_id AND d.task_id = t.id AND d.task_version = t.version AND d.status = 'delivered')
54
- LIMIT 1`).get(threadId, now);
55
- if (row !== undefined)
56
- return true;
57
- // Any unconsumed event but a recovery marker: an execution event can be
58
- // the only durable trace of progress on a delivered task. A fold consumes
59
- // every kind in its batch (the position advances to its last seq), so
60
- // once a worker runs and folds, this stops being true and no worker
61
- // respawns. Recovery markers are left out: delivering a resume writes one,
62
- // it is not progress, and the resume's queue row already carries the work.
63
- // TODO: while the sidecar keeps failing, events stay unconsumed and the
64
- // supervisor restarts the worker after each idle exit.
65
- const unfolded = db.prepare(`SELECT 1 AS found FROM task_events e
66
- WHERE e.thread_id = ? AND e.kind <> 'recovery'
67
- AND e.seq > COALESCE((SELECT position FROM task_consume_position p WHERE p.thread_id = e.thread_id), 0)
68
- LIMIT 1`).get(threadId);
69
- return unfolded !== undefined;
70
- }
71
- catch {
72
- return false;
73
- }
74
- finally {
75
- db?.close();
76
- }
77
- }
78
- /** `queue.db` of a logical thread, independent of which process asks. */
79
- export function taskStorePathForThread(threadId) {
80
- return threadId === DEFAULT_THREAD_ID
81
- ? path.join(getSharedProfileDir(), "queue.db")
82
- : path.join(getThreadDir(threadId), "queue.db");
83
- }
84
- /** Event idempotency key for an owner message: its queue dedup key. */
85
- export function messageEventKey(dedupKey) {
86
- return `message:${dedupKey}`;
87
- }
88
- /** Identity of one scheduled resume of a task at a given version (PR 5). */
89
- export function recoveryDeliveryKey(taskId, taskVersion) {
90
- return `recovery:${taskId}:v${taskVersion}`;
91
- }
92
- class CommitRejected extends Error {
93
- reason;
94
- detail;
95
- constructor(reason, detail) {
96
- super(`${reason}: ${detail}`);
97
- this.reason = reason;
98
- this.detail = detail;
99
- }
100
- }
101
- const STATUS_CHECK = TASK_STATUSES.map((status) => `'${status}'`).join(", ");
102
- function json(value) {
103
- return JSON.stringify(sanitizeJsonValue(value));
104
- }
105
- function jsonOrNull(value) {
106
- return value === undefined || value === null ? null : json(value);
107
- }
108
- function parseOptional(raw) {
109
- return raw === null ? undefined : JSON.parse(raw);
110
- }
111
- /** Directory name, next to queue.db, holding attachment bytes that arrived inline. */
112
- export const TASK_ATTACHMENTS_DIR = "task-attachments";
113
- /**
114
- * Last path segment with separators and dot-only names removed, so a
115
- * provider-supplied filename can never leave the attachments directory.
116
- */
117
- function safeFilename(name, fallback) {
118
- const base = (name ?? "").split(/[\\/]/).pop() ?? "";
119
- // eslint-disable-next-line no-control-regex
120
- const cleaned = base.replace(/[\x00-\x1f]/g, "").replace(/^\.+/, "").slice(0, 120);
121
- return cleaned.length > 0 ? cleaned : fallback;
122
- }
123
- export class ThreadTaskStore {
124
- threadId;
125
- writerId;
126
- db;
127
- attachmentsDir;
128
- closed = false;
129
- constructor(options) {
130
- this.threadId = options.threadId;
131
- this.writerId = options.writerId;
132
- const dbPath = options.dbPath ?? taskStorePathForThread(options.threadId);
133
- this.attachmentsDir = path.join(path.dirname(dbPath), TASK_ATTACHMENTS_DIR);
134
- this.db = new DatabaseSync(dbPath);
135
- this.db.exec("PRAGMA journal_mode = WAL");
136
- this.db.exec("PRAGMA busy_timeout = 5000");
137
- this.migrate();
138
- if (options.claimWriter)
139
- this.claimWriter();
140
- }
141
- /** Additive, idempotent schema. Safe on a queue.db written by any earlier release. */
142
- migrate() {
143
- this.db.exec(`
144
- CREATE TABLE IF NOT EXISTS task_events (
145
- seq INTEGER PRIMARY KEY AUTOINCREMENT,
146
- id TEXT NOT NULL UNIQUE,
147
- thread_id TEXT NOT NULL,
148
- idempotency_key TEXT NOT NULL,
149
- kind TEXT NOT NULL,
150
- source TEXT,
151
- reply_target TEXT,
152
- payload TEXT NOT NULL,
153
- writer_id TEXT NOT NULL,
154
- created_at INTEGER NOT NULL,
155
- UNIQUE (thread_id, idempotency_key)
156
- );
157
- CREATE TABLE IF NOT EXISTS thread_tasks (
158
- id TEXT PRIMARY KEY,
159
- thread_id TEXT NOT NULL,
160
- origin_key TEXT NOT NULL,
161
- status TEXT NOT NULL CHECK (status IN (${STATUS_CHECK})),
162
- version INTEGER NOT NULL,
163
- title TEXT NOT NULL,
164
- description TEXT NOT NULL DEFAULT '',
165
- requirements TEXT NOT NULL DEFAULT '[]',
166
- source_event_ids TEXT NOT NULL DEFAULT '[]',
167
- reply_target TEXT,
168
- notify_when TEXT,
169
- run_after INTEGER,
170
- resume_condition TEXT,
171
- result TEXT,
172
- checkpoint TEXT,
173
- created_at INTEGER NOT NULL,
174
- updated_at INTEGER NOT NULL,
175
- last_event_seq INTEGER NOT NULL DEFAULT 0,
176
- UNIQUE (thread_id, origin_key)
177
- );
178
- CREATE INDEX IF NOT EXISTS thread_tasks_status ON thread_tasks (thread_id, status);
179
- CREATE TABLE IF NOT EXISTS task_consume_position (
180
- thread_id TEXT PRIMARY KEY,
181
- position INTEGER NOT NULL,
182
- updated_at INTEGER NOT NULL
183
- );
184
- CREATE TABLE IF NOT EXISTS task_writer (
185
- thread_id TEXT PRIMARY KEY,
186
- writer_id TEXT NOT NULL,
187
- generation INTEGER NOT NULL,
188
- claimed_at INTEGER NOT NULL
189
- );
190
- CREATE TABLE IF NOT EXISTS task_recovery_deliveries (
191
- idempotency_key TEXT PRIMARY KEY,
192
- thread_id TEXT NOT NULL,
193
- task_id TEXT NOT NULL,
194
- task_version INTEGER NOT NULL,
195
- status TEXT NOT NULL CHECK (status IN ('reserved', 'delivered')),
196
- reserved_at INTEGER NOT NULL,
197
- delivered_at INTEGER,
198
- writer_id TEXT NOT NULL
199
- );
200
- `);
201
- }
202
- // --- writer fencing -------------------------------------------------------
203
- /** Take the writer slot. Returns the new generation. Last claimer wins. */
204
- claimWriter() {
205
- return this.transaction(() => {
206
- const row = this.db.prepare("SELECT generation FROM task_writer WHERE thread_id = ?")
207
- .get(this.threadId);
208
- const generation = (row?.generation ?? 0) + 1;
209
- this.db.prepare(`INSERT INTO task_writer (thread_id, writer_id, generation, claimed_at) VALUES (?, ?, ?, ?)
210
- ON CONFLICT(thread_id) DO UPDATE SET writer_id = excluded.writer_id,
211
- generation = excluded.generation, claimed_at = excluded.claimed_at`).run(this.threadId, this.writerId, generation, Date.now());
212
- return generation;
213
- });
214
- }
215
- isCurrentWriter() {
216
- return this.currentWriter() === this.writerId;
217
- }
218
- currentWriter() {
219
- const row = this.db.prepare("SELECT writer_id FROM task_writer WHERE thread_id = ?")
220
- .get(this.threadId);
221
- return row?.writer_id;
222
- }
223
- /** Must run inside a transaction so the check and the write are atomic. */
224
- assertWriter() {
225
- const current = this.currentWriter();
226
- if (current !== this.writerId) {
227
- throw new CommitRejected("stale_writer", current ? `thread is owned by ${current}` : "no writer has claimed this thread");
228
- }
229
- }
230
- // --- events ---------------------------------------------------------------
231
- /**
232
- * Append an event. Re-appending an idempotency key returns the stored event
233
- * with `appended: false` and changes nothing, so redelivery is harmless.
234
- */
235
- appendEvent(input) {
236
- if (!isTaskEventKind(input.kind))
237
- throw new Error(`Unknown task event kind: ${String(input.kind)}`);
238
- const result = this.db.prepare(`INSERT OR IGNORE INTO task_events
239
- (id, thread_id, idempotency_key, kind, source, reply_target, payload, writer_id, created_at)
240
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(randomUUID(), this.threadId, input.idempotencyKey, input.kind, jsonOrNull(input.source), jsonOrNull(input.replyTarget), json(input.payload), this.writerId, Date.now());
241
- const event = this.getEventByKey(input.idempotencyKey);
242
- if (!event)
243
- throw new Error(`Task event ${input.idempotencyKey} vanished after insert`);
244
- return { event, appended: result.changes > 0 };
245
- }
246
- /**
247
- * Persist an owner message as a `user_message` event, keyed by its queue
248
- * dedup key. This is the handoff point: once it returns, the queue may mark
249
- * the message handled, and the queue row (with any inline bytes) is gone.
250
- *
251
- * Mail channels keep attachments up to 10 MB only as base64, so those bytes
252
- * are written to `task-attachments/` next to queue.db first and the event
253
- * stores a `localPath`. The file is written before the event row: a crash in
254
- * between leaves an orphan file, never an event pointing at nothing.
255
- */
256
- appendMessageEvent(msg) {
257
- const dedupKey = getMessageDedupKey(msg);
258
- const source = {
259
- channel: msg.channel,
260
- sender: msg.sender,
261
- messageId: msg.id,
262
- dedupKey,
263
- ...(msg.app ? { app: msg.app } : {}),
264
- };
265
- const idempotencyKey = messageEventKey(dedupKey);
266
- // A message is recorded at several points (interrupt, registration, wake
267
- // end); decode and write its attachments only the first time.
268
- const existing = this.getEventByKey(idempotencyKey);
269
- if (existing)
270
- return { event: existing, appended: false };
271
- const attachments = msg.attachments.map((attachment, index) => this.persistAttachment(idempotencyKey, index, attachment));
272
- return this.appendEvent({
273
- idempotencyKey,
274
- kind: "user_message",
275
- source,
276
- ...(msg.deliveryTarget ? { replyTarget: msg.deliveryTarget } : {}),
277
- payload: { text: msg.text, ...(attachments.length > 0 ? { attachments } : {}), data: { timestamp: msg.timestamp } },
278
- });
279
- }
280
- /**
281
- * Turn an attachment into a stable reference. One that already has a
282
- * `localPath` or `url` is kept as is; inline-only bytes are written to a
283
- * path derived from (event key, index), once: a redelivered message finds
284
- * its event and writes nothing.
285
- */
286
- persistAttachment(eventKey, index, attachment) {
287
- const { base64, ...ref } = attachment;
288
- if (ref.localPath || ref.url || !base64)
289
- return ref;
290
- const eventDir = createHash("sha256").update(`${this.threadId}\0${eventKey}`).digest("hex").slice(0, 32);
291
- const dir = path.join(this.attachmentsDir, eventDir);
292
- const localPath = path.join(dir, `${index}-${safeFilename(ref.filename, "attachment")}`);
293
- fs.mkdirSync(dir, { recursive: true });
294
- // TODO: retention. These files live as long as the thread directory;
295
- // prune them with completed/cancelled tasks once that lifecycle exists.
296
- fs.writeFileSync(localPath, Buffer.from(base64, "base64"));
297
- return { ...ref, localPath };
298
- }
299
- hasEvent(idempotencyKey) {
300
- return this.getEventByKey(idempotencyKey) !== undefined;
301
- }
302
- getEventByKey(idempotencyKey) {
303
- const row = this.db.prepare("SELECT * FROM task_events WHERE thread_id = ? AND idempotency_key = ?")
304
- .get(this.threadId, idempotencyKey);
305
- return row ? this.rowToEvent(row) : undefined;
306
- }
307
- /** Events with `seq > afterSeq`, oldest first. */
308
- readEventsAfter(afterSeq, limit = 100) {
309
- const rows = this.db.prepare("SELECT * FROM task_events WHERE thread_id = ? AND seq > ? ORDER BY seq ASC LIMIT ?").all(this.threadId, afterSeq, limit);
310
- return rows.map((row) => this.rowToEvent(row));
311
- }
312
- /** The newest `limit` events with `seq > afterSeq`, oldest first. */
313
- readLatestEventsAfter(afterSeq, limit) {
314
- const rows = this.db.prepare("SELECT * FROM task_events WHERE thread_id = ? AND seq > ? ORDER BY seq DESC LIMIT ?").all(this.threadId, afterSeq, limit);
315
- return rows.reverse().map((row) => this.rowToEvent(row));
316
- }
317
- /** Events the sidecar has not committed against yet. */
318
- readUnconsumedEvents(limit = 100) {
319
- return this.readEventsAfter(this.getPosition(), limit);
320
- }
321
- latestSeq() {
322
- const row = this.db.prepare("SELECT MAX(seq) AS seq FROM task_events WHERE thread_id = ?")
323
- .get(this.threadId);
324
- return row.seq ?? 0;
325
- }
326
- getPosition() {
327
- const row = this.db.prepare("SELECT position FROM task_consume_position WHERE thread_id = ?")
328
- .get(this.threadId);
329
- return row?.position ?? 0;
330
- }
331
- // --- tasks ----------------------------------------------------------------
332
- getTask(taskId) {
333
- const row = this.db.prepare("SELECT * FROM thread_tasks WHERE thread_id = ? AND id = ?")
334
- .get(this.threadId, taskId);
335
- return row ? this.rowToTask(row) : undefined;
336
- }
337
- getTaskByOrigin(originKey) {
338
- const row = this.db.prepare("SELECT * FROM thread_tasks WHERE thread_id = ? AND origin_key = ?")
339
- .get(this.threadId, originKey);
340
- return row ? this.rowToTask(row) : undefined;
341
- }
342
- /** Tasks in creation order, optionally filtered by status. */
343
- listTasks(statuses = TASK_STATUSES) {
344
- if (statuses.length === 0)
345
- return [];
346
- const placeholders = statuses.map(() => "?").join(", ");
347
- const rows = this.db.prepare(`SELECT * FROM thread_tasks WHERE thread_id = ? AND status IN (${placeholders}) ORDER BY created_at ASC, rowid ASC`).all(this.threadId, ...statuses);
348
- return rows.map((row) => this.rowToTask(row));
349
- }
350
- listOpenTasks() {
351
- return this.listTasks(OPEN_TASK_STATUSES);
352
- }
353
- /**
354
- * Tasks that may continue or start without the owner (PR 5): unfinished
355
- * `in_progress` ones first (a wake ended without finishing them; `finish`
356
- * never completes a task), then `pending` and due. A resume pass runs only
357
- * when no wake is running, so an `in_progress` task here is not being
358
- * worked on. Waiting, blocked and terminal tasks never start on their own.
359
- */
360
- listRunnableTasks(now) {
361
- const rows = this.db.prepare(`SELECT * FROM thread_tasks
362
- WHERE thread_id = ? AND status IN ('in_progress', 'pending') AND (run_after IS NULL OR run_after <= ?)
363
- ORDER BY CASE status WHEN 'in_progress' THEN 0 ELSE 1 END, created_at ASC, rowid ASC`).all(this.threadId, now);
364
- return rows.map((row) => this.rowToTask(row));
365
- }
366
- /**
367
- * Apply one sidecar result atomically: every change plus the new consume
368
- * position, or nothing. Rejections leave the database untouched; the
369
- * caller re-reads and retries. Replaying an already-applied create is a
370
- * no-op reported as `existed: true`.
371
- */
372
- commit(commit) {
373
- try {
374
- return this.transaction(() => {
375
- this.assertWriter();
376
- const position = this.getPosition();
377
- if (position !== commit.expectedPosition) {
378
- throw new CommitRejected("position_conflict", `expected position ${commit.expectedPosition}, found ${position}`);
379
- }
380
- const latest = this.latestSeq();
381
- if (!Number.isInteger(commit.throughSeq) || commit.throughSeq < position || commit.throughSeq > latest) {
382
- throw new CommitRejected("invalid_change", `throughSeq ${commit.throughSeq} outside [${position}, ${latest}]`);
383
- }
384
- const now = Date.now();
385
- const created = [];
386
- const updated = [];
387
- for (const change of commit.changes) {
388
- if (change.op === "create") {
389
- created.push(this.applyCreate(change, commit.throughSeq, now));
390
- }
391
- else {
392
- updated.push(this.applyUpdate(change, commit.throughSeq, now));
393
- }
394
- }
395
- this.db.prepare(`INSERT INTO task_consume_position (thread_id, position, updated_at) VALUES (?, ?, ?)
396
- ON CONFLICT(thread_id) DO UPDATE SET position = excluded.position, updated_at = excluded.updated_at`).run(this.threadId, commit.throughSeq, now);
397
- return { ok: true, position: commit.throughSeq, created, updated };
398
- });
399
- }
400
- catch (error) {
401
- if (error instanceof CommitRejected)
402
- return { ok: false, reason: error.reason, detail: error.detail };
403
- throw error;
404
- }
405
- }
406
- applyCreate(change, throughSeq, now) {
407
- const existing = this.getTaskByOrigin(change.originKey);
408
- if (existing)
409
- return { originKey: change.originKey, taskId: existing.id, existed: true };
410
- const task = change.task;
411
- const status = task.status ?? "pending";
412
- const invalid = validateTaskState({ status, title: task.title, result: task.result, resumeCondition: task.resumeCondition });
413
- if (invalid)
414
- throw new CommitRejected("invalid_change", `create ${change.originKey}: ${invalid}`);
415
- const id = randomUUID();
416
- this.db.prepare(`INSERT INTO thread_tasks
417
- (id, thread_id, origin_key, status, version, title, description, requirements, source_event_ids,
418
- reply_target, notify_when, run_after, resume_condition, result, checkpoint, created_at, updated_at, last_event_seq)
419
- VALUES (?, ?, ?, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, this.threadId, change.originKey, status, task.title, task.description ?? "", json(task.requirements ?? []), json(task.sourceEventIds ?? []), jsonOrNull(task.replyTarget), task.notifyWhen ?? null, task.runAfter ?? null, task.resumeCondition ?? null, jsonOrNull(task.result), jsonOrNull(task.checkpoint), now, now, throughSeq);
420
- return { originKey: change.originKey, taskId: id, existed: false };
421
- }
422
- applyUpdate(change, throughSeq, now) {
423
- const current = this.getTask(change.taskId);
424
- if (!current)
425
- throw new CommitRejected("unknown_task", change.taskId);
426
- if (current.version !== change.expectedVersion) {
427
- throw new CommitRejected("version_conflict", `task ${change.taskId} is at version ${current.version}, change expected ${change.expectedVersion}`);
428
- }
429
- const next = applyPatch(current, change.patch);
430
- if (!canTransition(current.status, next.status)) {
431
- throw new CommitRejected("invalid_change", `task ${change.taskId}: ${current.status} -> ${next.status} is not allowed`);
432
- }
433
- const invalid = validateTaskState(next);
434
- if (invalid)
435
- throw new CommitRejected("invalid_change", `task ${change.taskId}: ${invalid}`);
436
- const version = current.version + 1;
437
- this.db.prepare(`UPDATE thread_tasks SET status = ?, version = ?, title = ?, description = ?, requirements = ?,
438
- source_event_ids = ?, reply_target = ?, notify_when = ?, run_after = ?, resume_condition = ?,
439
- result = ?, checkpoint = ?, updated_at = ?, last_event_seq = ?
440
- WHERE thread_id = ? AND id = ? AND version = ?`).run(next.status, version, next.title, next.description, json(next.requirements), json(next.sourceEventIds), jsonOrNull(next.replyTarget), next.notifyWhen ?? null, next.runAfter ?? null, next.resumeCondition ?? null, jsonOrNull(next.result), jsonOrNull(next.checkpoint), now, throughSeq, this.threadId, change.taskId, current.version);
441
- return { taskId: change.taskId, version };
442
- }
443
- // --- recovery delivery records (consumed by PR 5) -------------------------
444
- /**
445
- * Reserve a resume of a task before handing it to the queue. Returns
446
- * `reserved: false` with the existing record when the key was already
447
- * used, so a retried or duplicated scheduling pass delivers at most once.
448
- */
449
- reserveRecoveryDelivery(input) {
450
- const key = recoveryDeliveryKey(input.taskId, input.taskVersion);
451
- return this.fenced(() => {
452
- const result = this.db.prepare(`INSERT OR IGNORE INTO task_recovery_deliveries
453
- (idempotency_key, thread_id, task_id, task_version, status, reserved_at, writer_id)
454
- VALUES (?, ?, ?, ?, 'reserved', ?, ?)`).run(key, this.threadId, input.taskId, input.taskVersion, Date.now(), this.writerId);
455
- const record = this.getRecoveryDelivery(key);
456
- if (!record)
457
- throw new Error(`Recovery delivery ${key} vanished after insert`);
458
- return { reserved: result.changes > 0, record };
459
- });
460
- }
461
- /** Record that the reserved resume reached the queue. Idempotent. */
462
- markRecoveryDelivered(idempotencyKey) {
463
- return this.fenced(() => this.db.prepare(`UPDATE task_recovery_deliveries SET status = 'delivered', delivered_at = ?
464
- WHERE thread_id = ? AND idempotency_key = ? AND status = 'reserved'`).run(Date.now(), this.threadId, idempotencyKey).changes > 0);
465
- }
466
- getRecoveryDelivery(idempotencyKey) {
467
- const row = this.db.prepare("SELECT * FROM task_recovery_deliveries WHERE thread_id = ? AND idempotency_key = ?")
468
- .get(this.threadId, idempotencyKey);
469
- return row ? rowToDelivery(row) : undefined;
470
- }
471
- /** Reservations that never reached the queue, e.g. after a crash in between. */
472
- listUndeliveredRecoveries() {
473
- const rows = this.db.prepare("SELECT * FROM task_recovery_deliveries WHERE thread_id = ? AND status = 'reserved' ORDER BY reserved_at ASC").all(this.threadId);
474
- return rows.map(rowToDelivery);
475
- }
476
- // --- plumbing -------------------------------------------------------------
477
- fenced(fn) {
478
- try {
479
- return { ok: true, value: this.transaction(() => {
480
- this.assertWriter();
481
- return fn();
482
- }) };
483
- }
484
- catch (error) {
485
- if (error instanceof CommitRejected)
486
- return { ok: false, reason: "stale_writer", detail: error.detail };
487
- throw error;
488
- }
489
- }
490
- transaction(fn) {
491
- this.db.exec("BEGIN IMMEDIATE");
492
- try {
493
- const value = fn();
494
- this.db.exec("COMMIT");
495
- return value;
496
- }
497
- catch (error) {
498
- this.db.exec("ROLLBACK");
499
- throw error;
500
- }
501
- }
502
- rowToEvent(row) {
503
- if (!isTaskEventKind(row.kind))
504
- throw new Error(`Stored task event ${row.id} has unknown kind ${row.kind}`);
505
- const source = parseOptional(row.source);
506
- const replyTarget = parseOptional(row.reply_target);
507
- return {
508
- seq: row.seq,
509
- id: row.id,
510
- threadId: row.thread_id,
511
- idempotencyKey: row.idempotency_key,
512
- kind: row.kind,
513
- ...(source ? { source } : {}),
514
- ...(replyTarget ? { replyTarget } : {}),
515
- payload: JSON.parse(row.payload),
516
- writerId: row.writer_id,
517
- createdAt: row.created_at,
518
- };
519
- }
520
- rowToTask(row) {
521
- if (!isTaskStatus(row.status))
522
- throw new Error(`Stored task ${row.id} has unknown status ${row.status}`);
523
- const replyTarget = parseOptional(row.reply_target);
524
- const result = parseOptional(row.result);
525
- const checkpoint = parseOptional(row.checkpoint);
526
- return {
527
- id: row.id,
528
- threadId: row.thread_id,
529
- originKey: row.origin_key,
530
- status: row.status,
531
- version: row.version,
532
- title: row.title,
533
- description: row.description,
534
- requirements: JSON.parse(row.requirements),
535
- sourceEventIds: JSON.parse(row.source_event_ids),
536
- ...(replyTarget ? { replyTarget } : {}),
537
- ...(row.notify_when !== null ? { notifyWhen: row.notify_when } : {}),
538
- ...(row.run_after !== null ? { runAfter: row.run_after } : {}),
539
- ...(row.resume_condition !== null ? { resumeCondition: row.resume_condition } : {}),
540
- ...(result ? { result } : {}),
541
- ...(checkpoint ? { checkpoint } : {}),
542
- createdAt: row.created_at,
543
- updatedAt: row.updated_at,
544
- lastEventSeq: row.last_event_seq,
545
- };
546
- }
547
- close() {
548
- if (this.closed)
549
- return;
550
- this.closed = true;
551
- this.db.close();
552
- }
553
- }
554
- function rowToDelivery(row) {
555
- return {
556
- idempotencyKey: row.idempotency_key,
557
- threadId: row.thread_id,
558
- taskId: row.task_id,
559
- taskVersion: row.task_version,
560
- status: row.status,
561
- reservedAt: row.reserved_at,
562
- ...(row.delivered_at !== null ? { deliveredAt: row.delivered_at } : {}),
563
- writerId: row.writer_id,
564
- };
565
- }
566
- /** Merge a patch onto a task. `null` clears; `undefined` keeps. */
567
- function applyPatch(task, patch) {
568
- const next = { ...task };
569
- if (patch.title !== undefined)
570
- next.title = patch.title;
571
- if (patch.description !== undefined)
572
- next.description = patch.description;
573
- if (patch.requirements !== undefined)
574
- next.requirements = patch.requirements;
575
- if (patch.status !== undefined)
576
- next.status = patch.status;
577
- if (patch.addSourceEventIds !== undefined) {
578
- next.sourceEventIds = [...new Set([...task.sourceEventIds, ...patch.addSourceEventIds])];
579
- }
580
- if (patch.replyTarget !== undefined)
581
- next.replyTarget = patch.replyTarget ?? undefined;
582
- if (patch.notifyWhen !== undefined)
583
- next.notifyWhen = patch.notifyWhen ?? undefined;
584
- if (patch.runAfter !== undefined)
585
- next.runAfter = patch.runAfter ?? undefined;
586
- if (patch.resumeCondition !== undefined)
587
- next.resumeCondition = patch.resumeCondition ?? undefined;
588
- if (patch.result !== undefined)
589
- next.result = patch.result ?? undefined;
590
- if (patch.checkpoint !== undefined)
591
- next.checkpoint = patch.checkpoint ?? undefined;
592
- return next;
593
- }
594
- //# sourceMappingURL=task-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../src/threads/task-store.ts"],"names":[],"mappings":"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"}