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
@@ -0,0 +1,413 @@
1
+ import { logger } from "../logger.js";
2
+ import { executorGroupStatus, killExecutorGroupAndWait } from "./process-group.js";
3
+ import { EXECUTOR_REFUSED_EXIT_CODE, ExecutorRefusedError } from "./executor-exit.js";
4
+ /** Same cap as the supervisor's crash budget for thread workers. */
5
+ export const MAX_AUTO_RESUMES = 3;
6
+ const OUTBOX_POLL_INTERVAL_MS = 2_000;
7
+ const OUTBOX_RETRY_DELAY_MS = 30_000;
8
+ /** How long one attempt waits for a previous host's executor group to empty. */
9
+ const STALE_KILL_WAIT_MS = 5_000;
10
+ /** Backoff between attempts to prove a previous host's executor stopped. */
11
+ const STALE_RECHECK_DELAYS_MS = [1_000, 5_000, 30_000, 120_000];
12
+ /** Grace on top of an execution's own time budget before the host stops it. */
13
+ const HOST_DEADLINE_GRACE_MS = 60_000;
14
+ /**
15
+ * Whether an interrupted running execution is resumed under the same
16
+ * executionId. Lab creates a new run instead; Nightly continues from its own
17
+ * watermark. Owner-delegated work (General/TUI) resumes.
18
+ */
19
+ export function resumesAfterInterruption(caller) {
20
+ return caller.kind === "general" || caller.kind === "tui";
21
+ }
22
+ /**
23
+ * Host-side scheduler for internal executions (#2805 steps 1c/1d).
24
+ *
25
+ * It owns no processes itself: the supervisor forks and stops workers. The
26
+ * scheduler decides what to admit, records the writer generation, and
27
+ * resolves every worker exit through `confirmStopped`, so a terminal state is
28
+ * published, and the next writer admitted, only after the previous executor
29
+ * is known to be stopped.
30
+ */
31
+ export class ExecutionScheduler {
32
+ lastAdmittedGroup = null;
33
+ store;
34
+ host;
35
+ delivery;
36
+ groupStatus;
37
+ killGroupAndWait;
38
+ stopRegisteredGroups;
39
+ staleRecheckDelaysMs;
40
+ hostDeadlineGraceMs;
41
+ /** executionId → generation of the executor this host started. */
42
+ running = new Map();
43
+ /** Executions whose stop this host requested; their exit is not a crash. */
44
+ stopRequested = new Set();
45
+ /** Host-side deadlines: a hung worker cannot outlive its time budget. */
46
+ deadlines = new Map();
47
+ /** Executions whose previous executor is not yet proven stopped → attempts so far. */
48
+ unverified = new Map();
49
+ recheckTimers = new Map();
50
+ admissionTimer = null;
51
+ outboxTimer = null;
52
+ delivering = false;
53
+ started = false;
54
+ stopped = false;
55
+ constructor(options) {
56
+ this.store = options.store;
57
+ this.host = options.host;
58
+ this.delivery = options.delivery;
59
+ this.groupStatus = options.groupStatus ?? executorGroupStatus;
60
+ this.killGroupAndWait = options.killGroupAndWait ?? killExecutorGroupAndWait;
61
+ this.stopRegisteredGroups = options.stopRegisteredGroups ?? (() => Promise.resolve(true));
62
+ this.staleRecheckDelaysMs = options.staleRecheckDelaysMs ?? STALE_RECHECK_DELAYS_MS;
63
+ this.hostDeadlineGraceMs = options.hostDeadlineGraceMs ?? HOST_DEADLINE_GRACE_MS;
64
+ }
65
+ /** Recover executions left by a previous host, then start admission and delivery. */
66
+ start() {
67
+ this.started = true;
68
+ this.store.rescheduleOwedDeliveries();
69
+ this.recoverAfterRestart();
70
+ this.requestAdmission();
71
+ this.outboxTimer = setInterval(() => { void this.deliverOutbox(); }, OUTBOX_POLL_INTERVAL_MS);
72
+ this.outboxTimer.unref();
73
+ void this.deliverOutbox();
74
+ }
75
+ /**
76
+ * Stop scheduling. Running executors are stopped by the host's shutdown;
77
+ * their exits still resolve here (`hostStopping`), so an interrupted
78
+ * execution is queued for the next host to resume. An executor whose group
79
+ * cannot be emptied stays recorded, and the next host proves it stopped
80
+ * first.
81
+ */
82
+ stop() {
83
+ this.stopped = true;
84
+ if (this.admissionTimer)
85
+ clearTimeout(this.admissionTimer);
86
+ if (this.outboxTimer)
87
+ clearInterval(this.outboxTimer);
88
+ for (const timer of [...this.deadlines.values(), ...this.recheckTimers.values()])
89
+ clearTimeout(timer);
90
+ this.deadlines.clear();
91
+ this.recheckTimers.clear();
92
+ this.admissionTimer = null;
93
+ this.outboxTimer = null;
94
+ }
95
+ isStopped() {
96
+ return this.stopped;
97
+ }
98
+ get activeCount() {
99
+ return this.running.size;
100
+ }
101
+ isRunning(executionId) {
102
+ return this.running.has(executionId);
103
+ }
104
+ /**
105
+ * Work that maintenance must not start alongside: a running executor of
106
+ * any caller, an executor whose stop is not yet proven, or queued work of
107
+ * a caller other than maintenance itself.
108
+ */
109
+ hasOutstandingWork() {
110
+ if (this.running.size > 0 || this.unverified.size > 0)
111
+ return true;
112
+ return this.store.listByState("queued").some((record) => record.caller.kind !== "nightly");
113
+ }
114
+ /** Whether this execution's previous executor is still unproven stopped. */
115
+ isUnverified(executionId) {
116
+ return this.unverified.has(executionId);
117
+ }
118
+ /**
119
+ * Keep an execution blocked until its recorded executor group is proven
120
+ * gone, retrying with backoff and telling the caller. Used for survivors of
121
+ * a stop and for executors left by a previous host.
122
+ */
123
+ blockUntilStopped(executionId) {
124
+ if (this.unverified.has(executionId))
125
+ return;
126
+ this.unverified.set(executionId, 0);
127
+ void this.proveStaleExecutorStopped(executionId);
128
+ }
129
+ /** Called after a submit, an answer, or a freed slot. Admission is coalesced. */
130
+ requestAdmission() {
131
+ // Not started yet, or already stopped: nothing is admitted.
132
+ if (this.stopped || !this.started || this.admissionTimer)
133
+ return;
134
+ this.admissionTimer = setTimeout(() => {
135
+ this.admissionTimer = null;
136
+ this.admitQueued();
137
+ }, 0);
138
+ this.admissionTimer.unref();
139
+ }
140
+ /** Stop the executor if this host runs one; its exit is then expected, not a crash. */
141
+ requestStop(executionId, reason) {
142
+ if (!this.running.has(executionId))
143
+ return;
144
+ this.stopRequested.add(executionId);
145
+ this.host.stop(executionId, reason);
146
+ }
147
+ /**
148
+ * Called with the exit of every execution worker the host forked, after
149
+ * the host tried to empty its process group. `hostStopping` marks an exit
150
+ * caused by this host shutting down: an interrupted execution is queued
151
+ * for the next host to resume. `groupStopped: false` means members of the
152
+ * group survived the kill; the execution stays blocked until they are
153
+ * proven gone (by the next host, when this one is shutting down).
154
+ */
155
+ handleWorkerExit(executionId, code, signal, options = {}) {
156
+ const generation = this.running.get(executionId);
157
+ if (generation === undefined)
158
+ return;
159
+ this.running.delete(executionId);
160
+ const deadline = this.deadlines.get(executionId);
161
+ if (deadline)
162
+ clearTimeout(deadline);
163
+ this.deadlines.delete(executionId);
164
+ const requested = this.stopRequested.delete(executionId);
165
+ logger.system(`[execution] Executor exited: execution=${executionId} generation=${generation} code=${code} signal=${signal}`);
166
+ if (options.groupStopped === false) {
167
+ // The leader is gone but part of its group is not: no new writer yet.
168
+ // A shutting-down host leaves it to the next host to prove.
169
+ logger.err(`[execution] Executor group survived its stop: execution=${executionId}; blocking until it is gone`);
170
+ if (!options.hostStopping)
171
+ this.blockUntilStopped(executionId);
172
+ return;
173
+ }
174
+ const how = code === EXECUTOR_REFUSED_EXIT_CODE
175
+ ? "refused"
176
+ : options.hostStopping ? "host_shutdown" : requested ? "host_stop" : code === 0 ? "exited" : "crashed";
177
+ this.resolveStoppedExecutor(executionId, generation, how, signal ? `signal ${signal}` : `exit code ${String(code)}`);
178
+ this.requestAdmission();
179
+ void this.deliverOutbox();
180
+ }
181
+ /**
182
+ * The executor for `generation` is stopped. Publish its reported result,
183
+ * keep a waiting question open, confirm a cancel, or decide between an
184
+ * automatic resume and a failure for an interrupted run.
185
+ */
186
+ resolveStoppedExecutor(executionId, generation, how, detail = "") {
187
+ const record = this.store.get(executionId);
188
+ // A stale resolution (e.g. two observers of one exit) must not touch a
189
+ // record that has moved on to its next executor.
190
+ if (record?.workerInstanceId !== generation || record.state === "queued")
191
+ return;
192
+ if (how === "refused") {
193
+ this.store.failPermanently(executionId, generation, {
194
+ code: "executor_refused",
195
+ message: "The executor refused to start this execution (snapshot or record could not be verified)",
196
+ });
197
+ return;
198
+ }
199
+ const interrupted = record.state === "running" && record.result === null;
200
+ // Input the host accepted but the executor never applied: the task is
201
+ // not finished, whatever the executor reported on its way out.
202
+ const owesInput = record.inputSeq > record.processedInputSeq;
203
+ const stopReason = typeof record.usage?.stopReason === "string" ? record.usage.stopReason : null;
204
+ if (interrupted && stopReason) {
205
+ // The worker stopped because its task budget ran out; resuming would
206
+ // only hit the same limit.
207
+ this.store.confirmStopped(executionId, generation, {
208
+ status: "failed", error: { code: "budget_exhausted", message: stopReason },
209
+ });
210
+ return;
211
+ }
212
+ if (interrupted && (how !== "exited" || owesInput) && resumesAfterInterruption(record.caller)) {
213
+ const next = this.store.requeueForResume(executionId, generation, MAX_AUTO_RESUMES, `${how} (${detail || "no detail"})`);
214
+ logger.system(`[execution] Interrupted execution=${executionId} → ${next?.state ?? "unknown"}`);
215
+ return;
216
+ }
217
+ this.store.confirmStopped(executionId, generation, how === "exited"
218
+ ? { status: "failed", error: { code: "no_result", message: "The executor ended without reporting a result" } }
219
+ : { status: "failed", error: { code: "interrupted", message: `The executor stopped before reporting a result (${how}${detail ? `, ${detail}` : ""})` } });
220
+ }
221
+ admitQueued() {
222
+ if (this.isStopped())
223
+ return;
224
+ // Readers may share a directory, but a waiting writer must eventually
225
+ // obtain exclusive access instead of being starved by newly arriving reads.
226
+ const waitingWriters = new Set(this.store.listByState("queued")
227
+ .filter((record) => record.payload.workspaceMode !== "read_only")
228
+ .map((record) => record.payload.workspaceRef).filter((value) => value !== undefined));
229
+ for (const record of this.fairQueued()) {
230
+ if (this.running.has(record.executionId) || this.unverified.has(record.executionId))
231
+ continue;
232
+ // One writer per shared workspace: wait until the previous one stopped.
233
+ const workspace = record.payload.workspaceRef;
234
+ if (workspace && record.payload.workspaceMode === "read_only" && waitingWriters.has(workspace))
235
+ continue;
236
+ if (workspace && this.store.hasLiveWriter(workspace, record.executionId, record.payload.workspaceMode === "read_only"))
237
+ continue;
238
+ // While maintenance holds admission only its own execution gets a slot.
239
+ if (this.host.availableSlots(record) <= 0)
240
+ continue;
241
+ let identity;
242
+ try {
243
+ identity = this.host.spawn(record);
244
+ }
245
+ catch (error) {
246
+ const message = error instanceof Error ? error.message : String(error);
247
+ logger.err(`[execution] Could not start execution=${record.executionId}: ${message}`);
248
+ if (error instanceof ExecutorRefusedError) {
249
+ // It can never start; failing it beats retrying it forever.
250
+ this.store.failPermanently(record.executionId, record.workerInstanceId, { code: "executor_refused", message: message.slice(0, 500) });
251
+ continue;
252
+ }
253
+ return;
254
+ }
255
+ const started = this.store.markStarted(record.executionId, identity);
256
+ if (!started) {
257
+ // Cancelled between listing and admission: release the fresh executor.
258
+ this.host.stop(record.executionId, "admission_raced");
259
+ continue;
260
+ }
261
+ this.running.set(record.executionId, started.workerInstanceId);
262
+ this.lastAdmittedGroup = this.groupOf(record);
263
+ this.armHostDeadline(started);
264
+ logger.system(`[execution] Started execution=${record.executionId} generation=${started.workerInstanceId} pid=${identity.pid}`);
265
+ }
266
+ }
267
+ groupOf(record) {
268
+ return JSON.stringify([record.scope, record.caller.kind, record.caller.ref, record.payload.parentTaskId ?? record.taskId]);
269
+ }
270
+ /** Round-robin across root Tasks, preserving FIFO order within each Task. */
271
+ *fairQueued() {
272
+ const groups = new Map();
273
+ for (const record of this.store.listByState("queued")) {
274
+ const key = this.groupOf(record);
275
+ const queue = groups.get(key) ?? [];
276
+ queue.push(record);
277
+ groups.set(key, queue);
278
+ }
279
+ const keys = [...groups.keys()];
280
+ const previous = this.lastAdmittedGroup === null ? -1 : keys.indexOf(this.lastAdmittedGroup);
281
+ const ordered = previous < 0 ? keys : [...keys.slice(previous + 1), ...keys.slice(0, previous + 1)];
282
+ let remaining = true;
283
+ while (remaining) {
284
+ remaining = false;
285
+ for (const key of ordered) {
286
+ const record = groups.get(key)?.shift();
287
+ if (record) {
288
+ remaining = true;
289
+ yield record;
290
+ }
291
+ }
292
+ }
293
+ }
294
+ /**
295
+ * The worker enforces its own time budget; this is the host's backstop for
296
+ * a worker that hangs and never reaches that check.
297
+ */
298
+ armHostDeadline(record) {
299
+ const limitMs = this.host.timeBudgetMs?.(record) ?? null;
300
+ if (limitMs === null)
301
+ return;
302
+ const used = typeof record.usage?.elapsedMs === "number" ? record.usage.elapsedMs : 0;
303
+ const remaining = Math.max(0, limitMs - used) + this.hostDeadlineGraceMs;
304
+ const timer = setTimeout(() => {
305
+ this.deadlines.delete(record.executionId);
306
+ if (!this.running.has(record.executionId))
307
+ return;
308
+ logger.warn(`[execution] Host deadline reached: execution=${record.executionId}; stopping its executor`);
309
+ this.store.recordHostNotice(record.executionId, { deadlineExceeded: true, limitMs });
310
+ this.store.recordUsage(record.executionId, record.workerInstanceId, {
311
+ stopReason: `Execution time budget exhausted (${limitMs} ms); stopped by the host`,
312
+ });
313
+ this.requestStop(record.executionId, "host_deadline");
314
+ }, remaining);
315
+ timer.unref();
316
+ this.deadlines.set(record.executionId, timer);
317
+ }
318
+ /**
319
+ * A previous host may have died with executors still recorded. Prove each
320
+ * one stopped (or stop it) before anything else may write for it; while
321
+ * that cannot be proven, keep the execution blocked, tell the caller, and
322
+ * keep trying with backoff.
323
+ */
324
+ recoverAfterRestart() {
325
+ for (const state of ["running", "cancel_requested", "waiting_input"]) {
326
+ for (const record of this.store.listByState(state)) {
327
+ if (!this.store.processOf(record.executionId))
328
+ continue;
329
+ this.blockUntilStopped(record.executionId);
330
+ }
331
+ }
332
+ }
333
+ async proveStaleExecutorStopped(executionId) {
334
+ this.recheckTimers.delete(executionId);
335
+ if (this.stopped)
336
+ return;
337
+ const executor = this.store.processOf(executionId);
338
+ if (!executor) {
339
+ // Resolved meanwhile (e.g. by the exit of this host's own executor).
340
+ this.unverified.delete(executionId);
341
+ this.requestAdmission();
342
+ return;
343
+ }
344
+ let stopped = false;
345
+ try {
346
+ const leaderGroup = this.groupStatus(executor.pid, executor.processStart) === "dead"
347
+ || await this.killGroupAndWait(executor.pid, executor.processStart, STALE_KILL_WAIT_MS);
348
+ const shellGroups = await this.stopRegisteredGroups(executionId, STALE_KILL_WAIT_MS);
349
+ stopped = leaderGroup && shellGroups;
350
+ }
351
+ catch (error) {
352
+ // An unusable record (e.g. pid 0) can never be proven stopped; keep it blocked.
353
+ logger.warn(`[execution] Could not check executor pid=${executor.pid}: ${error instanceof Error ? error.message : String(error)}`);
354
+ }
355
+ // The scheduler may have been stopped while the kill was awaited.
356
+ if (this.isStopped())
357
+ return;
358
+ if (stopped) {
359
+ this.unverified.delete(executionId);
360
+ logger.system(`[execution] Previous executor confirmed stopped: execution=${executionId} pid=${executor.pid}`);
361
+ this.resolveStoppedExecutor(executionId, executor.workerInstanceId, "host_restart");
362
+ this.requestAdmission();
363
+ void this.deliverOutbox();
364
+ return;
365
+ }
366
+ const attempt = (this.unverified.get(executionId) ?? 0) + 1;
367
+ this.unverified.set(executionId, attempt);
368
+ if (attempt === 1) {
369
+ // Visible to the caller: the execution is blocked, not lost.
370
+ this.store.recordHostNotice(executionId, {
371
+ executorUnverified: true,
372
+ message: "The previous executor could not be confirmed stopped yet; retrying",
373
+ });
374
+ void this.deliverOutbox();
375
+ }
376
+ const delays = this.staleRecheckDelaysMs;
377
+ const delay = delays[Math.min(attempt - 1, delays.length - 1)] ?? 120_000;
378
+ logger.err(`[execution] Cannot confirm the previous executor stopped: execution=${executionId} pid=${executor.pid}; retrying in ${delay} ms`);
379
+ const timer = setTimeout(() => { void this.proveStaleExecutorStopped(executionId); }, delay);
380
+ timer.unref();
381
+ this.recheckTimers.set(executionId, timer);
382
+ }
383
+ async deliverOutbox() {
384
+ if (this.stopped || !this.started || this.delivering)
385
+ return;
386
+ this.delivering = true;
387
+ try {
388
+ for (const { event, caller, attempts } of this.store.dueDeliveries(50)) {
389
+ let delivered = false;
390
+ try {
391
+ delivered = await this.delivery.deliverExecutionEvent(event, caller);
392
+ }
393
+ catch (error) {
394
+ logger.warn(`[execution] Delivery of ${event.type} ${event.eventId} failed: ${error instanceof Error ? error.message : String(error)}`);
395
+ }
396
+ // The host may have stopped (and closed the ledger) while delivering.
397
+ if (this.isStopped())
398
+ return;
399
+ if (delivered) {
400
+ this.store.acknowledgeDelivery(event.eventId);
401
+ }
402
+ else {
403
+ const backoff = Math.min(OUTBOX_RETRY_DELAY_MS * 2 ** attempts, 10 * 60_000);
404
+ this.store.deferDelivery(event.eventId, new Date(Date.now() + backoff));
405
+ }
406
+ }
407
+ }
408
+ finally {
409
+ this.delivering = false;
410
+ }
411
+ }
412
+ }
413
+ //# sourceMappingURL=execution-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-scheduler.js","sourceRoot":"","sources":["../../src/threads/execution-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { z } from "zod";
2
+ import { type SigningDomain } from "./execution-authority.js";
3
+ import { type Engine } from "../config/types.js";
4
+ import type { LlmRouting } from "../agent/model-provider.js";
5
+ /**
6
+ * Version 1 of the effective snapshot a trusted host freezes when it admits an
7
+ * internal execution (#2805 step 1b). It records only resolved decisions:
8
+ * the model selection and the task budget. Capabilities live in
9
+ * `WorkerRuntimePolicy`; credentials, the profile and conversation history
10
+ * never enter it.
11
+ *
12
+ * A worker starts and recovers from this snapshot instead of the editable
13
+ * `thread.json` or profile defaults, and a host refresh or runtime failover
14
+ * cannot change the engine it selected. Switching models requires a new
15
+ * execution attempt with a new snapshot.
16
+ */
17
+ export declare const EXECUTION_SNAPSHOT_VERSION = 1;
18
+ export declare const ExecutionBudgetLimitsSchema: z.ZodObject<{
19
+ maxModelAttempts: z.ZodNumber;
20
+ maxToolCalls: z.ZodNumber;
21
+ maxDurationMs: z.ZodNumber;
22
+ }, z.core.$strict>;
23
+ export type ExecutionBudgetLimits = z.infer<typeof ExecutionBudgetLimitsSchema>;
24
+ export declare const ExecutionSnapshotV1Schema: z.ZodObject<{
25
+ version: z.ZodLiteral<1>;
26
+ executionId: z.ZodString;
27
+ model: z.ZodObject<{
28
+ engine: z.ZodEnum<{
29
+ claude: "claude";
30
+ gpt: "gpt";
31
+ grok: "grok";
32
+ deepseek: "deepseek";
33
+ }>;
34
+ runtime: z.ZodEnum<{
35
+ claude: "claude";
36
+ "pi-coding": "pi-coding";
37
+ }>;
38
+ apiProtocol: z.ZodString;
39
+ models: z.ZodObject<{
40
+ heavy: z.ZodString;
41
+ balanced: z.ZodString;
42
+ fast: z.ZodString;
43
+ }, z.core.$strict>;
44
+ pinnedModel: z.ZodOptional<z.ZodString>;
45
+ }, z.core.$strict>;
46
+ budget: z.ZodObject<{
47
+ maxModelAttempts: z.ZodNumber;
48
+ maxToolCalls: z.ZodNumber;
49
+ maxDurationMs: z.ZodNumber;
50
+ }, z.core.$strict>;
51
+ }, z.core.$strict>;
52
+ export type ExecutionSnapshot = z.infer<typeof ExecutionSnapshotV1Schema>;
53
+ /**
54
+ * Defaults pending calibration from measured runs (issue #2805 asks for
55
+ * per-batch and full-run measurements first). The attempt cap preserves the
56
+ * existing Pi per-send guard of 100 turns, now applied to the whole task;
57
+ * the tool and time caps are generous upper bounds on a single LabRun.
58
+ */
59
+ export declare const DEFAULT_LAB_RUN_BUDGET: ExecutionBudgetLimits;
60
+ /** Parse a snapshot; an unsupported version fails explicitly instead of guessing. */
61
+ export declare function parseExecutionSnapshot(raw: unknown): ExecutionSnapshot;
62
+ /**
63
+ * Resolve the route a new execution is admitted on: the thread's own
64
+ * override, else the profile's, else the routing default. Runtime failover is
65
+ * deliberately ignored; it is transient health state, not an authorization.
66
+ */
67
+ export declare function freezeExecutionModel(selection: {
68
+ engineOverride?: Engine;
69
+ pinnedModel?: string;
70
+ }, routing: LlmRouting | null, provider: string): ExecutionSnapshot["model"];
71
+ export declare const EXECUTION_SNAPSHOT_ENV = "VISIONCLAW_EXECUTION_SNAPSHOT";
72
+ export interface SignedExecutionSnapshot {
73
+ payload: string;
74
+ signature: string;
75
+ }
76
+ /**
77
+ * Sign with the admitting host's snapshot key so a worker cannot be handed an
78
+ * edited snapshot. The key persists with the profile, so a restarted host
79
+ * still verifies the snapshots it froze before the restart.
80
+ */
81
+ export declare function signExecutionSnapshot(snapshot: ExecutionSnapshot, domain: SigningDomain): SignedExecutionSnapshot;
82
+ /**
83
+ * Read a snapshot back from the host's own ledger. The ledger is the record
84
+ * of what was admitted; the signature stored with it may come from an earlier
85
+ * host process, so it is not checked here. The host re-signs the snapshot
86
+ * with its current key before it hands the execution to a worker.
87
+ */
88
+ export declare function readStoredExecutionSnapshot(raw: string, executionId: string): ExecutionSnapshot;
89
+ /** Verify the host signature and bind the snapshot to the expected execution. */
90
+ export declare function verifyExecutionSnapshot(raw: unknown, publicKey: string, executionId: string): ExecutionSnapshot;
91
+ //# sourceMappingURL=execution-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-snapshot.d.ts","sourceRoot":"","sources":["../../src/threads/execution-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,eAAO,MAAM,2BAA2B;;;;kBAO7B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiB3B,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,qBAIpC,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAKtE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5D,OAAO,EAAE,UAAU,GAAG,IAAI,EAC1B,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAAC,OAAO,CAAC,CAmB5B;AAED,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,GAAG,uBAAuB,CAGjH;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAgB/F;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAkB/G"}