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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/dist/agent/api-proxy.d.ts +0 -16
  2. package/dist/agent/api-proxy.d.ts.map +1 -1
  3. package/dist/agent/api-proxy.js +9 -8
  4. package/dist/agent/api-proxy.js.map +1 -1
  5. package/dist/agent/browser-launcher.d.ts +3 -0
  6. package/dist/agent/browser-launcher.d.ts.map +1 -1
  7. package/dist/agent/browser-launcher.js +101 -43
  8. package/dist/agent/browser-launcher.js.map +1 -1
  9. package/dist/agent/coding-conventions.d.ts +8 -0
  10. package/dist/agent/coding-conventions.d.ts.map +1 -0
  11. package/dist/agent/coding-conventions.js +19 -0
  12. package/dist/agent/coding-conventions.js.map +1 -0
  13. package/dist/agent/command-handlers.d.ts.map +1 -1
  14. package/dist/agent/command-handlers.js +4 -16
  15. package/dist/agent/command-handlers.js.map +1 -1
  16. package/dist/agent/context-action-restart-fallback.d.ts.map +1 -1
  17. package/dist/agent/context-action-restart-fallback.js +9 -3
  18. package/dist/agent/context-action-restart-fallback.js.map +1 -1
  19. package/dist/agent/context-refresh.d.ts.map +1 -1
  20. package/dist/agent/context-refresh.js +0 -7
  21. package/dist/agent/context-refresh.js.map +1 -1
  22. package/dist/agent/context.d.ts +2 -4
  23. package/dist/agent/context.d.ts.map +1 -1
  24. package/dist/agent/context.js +12 -21
  25. package/dist/agent/context.js.map +1 -1
  26. package/dist/agent/engine-fallback.d.ts +0 -35
  27. package/dist/agent/engine-fallback.d.ts.map +1 -1
  28. package/dist/agent/engine-fallback.js +4 -3
  29. package/dist/agent/engine-fallback.js.map +1 -1
  30. package/dist/agent/engine-switch.d.ts +19 -38
  31. package/dist/agent/engine-switch.d.ts.map +1 -1
  32. package/dist/agent/engine-switch.js +46 -111
  33. package/dist/agent/engine-switch.js.map +1 -1
  34. package/dist/agent/engines/browser-tool-policy.d.ts +12 -1
  35. package/dist/agent/engines/browser-tool-policy.d.ts.map +1 -1
  36. package/dist/agent/engines/browser-tool-policy.js +17 -2
  37. package/dist/agent/engines/browser-tool-policy.js.map +1 -1
  38. package/dist/agent/engines/claude/executor-shell-groups.d.ts +11 -0
  39. package/dist/agent/engines/claude/executor-shell-groups.d.ts.map +1 -0
  40. package/dist/agent/engines/claude/executor-shell-groups.js +22 -0
  41. package/dist/agent/engines/claude/executor-shell-groups.js.map +1 -0
  42. package/dist/agent/engines/claude/session.d.ts +13 -4
  43. package/dist/agent/engines/claude/session.d.ts.map +1 -1
  44. package/dist/agent/engines/claude/session.js +165 -84
  45. package/dist/agent/engines/claude/session.js.map +1 -1
  46. package/dist/agent/engines/pi/shared/usage.d.ts +6 -8
  47. package/dist/agent/engines/pi/shared/usage.d.ts.map +1 -1
  48. package/dist/agent/engines/pi/shared/usage.js +24 -7
  49. package/dist/agent/engines/pi/shared/usage.js.map +1 -1
  50. package/dist/agent/engines/pi/tools.d.ts +3 -10
  51. package/dist/agent/engines/pi/tools.d.ts.map +1 -1
  52. package/dist/agent/engines/pi/tools.js +6 -20
  53. package/dist/agent/engines/pi/tools.js.map +1 -1
  54. package/dist/agent/engines/pi-coding/executor-shell.d.ts +4 -0
  55. package/dist/agent/engines/pi-coding/executor-shell.d.ts.map +1 -0
  56. package/dist/agent/engines/pi-coding/executor-shell.js +175 -0
  57. package/dist/agent/engines/pi-coding/executor-shell.js.map +1 -0
  58. package/dist/agent/engines/pi-coding/session.d.ts +4 -4
  59. package/dist/agent/engines/pi-coding/session.d.ts.map +1 -1
  60. package/dist/agent/engines/pi-coding/session.js +118 -66
  61. package/dist/agent/engines/pi-coding/session.js.map +1 -1
  62. package/dist/agent/engines/pi-coding/tools.d.ts +2 -5
  63. package/dist/agent/engines/pi-coding/tools.d.ts.map +1 -1
  64. package/dist/agent/engines/pi-coding/tools.js +7 -5
  65. package/dist/agent/engines/pi-coding/tools.js.map +1 -1
  66. package/dist/agent/engines/session-types.d.ts +8 -8
  67. package/dist/agent/engines/session-types.d.ts.map +1 -1
  68. package/dist/agent/external-context/interrupt.d.ts +0 -2
  69. package/dist/agent/external-context/interrupt.d.ts.map +1 -1
  70. package/dist/agent/external-context/interrupt.js +0 -1
  71. package/dist/agent/external-context/interrupt.js.map +1 -1
  72. package/dist/agent/external-context/registry.d.ts +0 -2
  73. package/dist/agent/external-context/registry.d.ts.map +1 -1
  74. package/dist/agent/external-context/registry.js +2 -4
  75. package/dist/agent/external-context/registry.js.map +1 -1
  76. package/dist/agent/external-context/runtime.d.ts.map +1 -1
  77. package/dist/agent/external-context/runtime.js +15 -14
  78. package/dist/agent/external-context/runtime.js.map +1 -1
  79. package/dist/agent/external-context/types.d.ts +0 -2
  80. package/dist/agent/external-context/types.d.ts.map +1 -1
  81. package/dist/agent/fast-responder.d.ts +4 -20
  82. package/dist/agent/fast-responder.d.ts.map +1 -1
  83. package/dist/agent/fast-responder.js +28 -42
  84. package/dist/agent/fast-responder.js.map +1 -1
  85. package/dist/agent/interrupt-handler.d.ts +4 -18
  86. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  87. package/dist/agent/interrupt-handler.js +52 -283
  88. package/dist/agent/interrupt-handler.js.map +1 -1
  89. package/dist/agent/lab-run-system-prompt.d.ts.map +1 -1
  90. package/dist/agent/lab-run-system-prompt.js +4 -1
  91. package/dist/agent/lab-run-system-prompt.js.map +1 -1
  92. package/dist/agent/lifecycle-trace.d.ts.map +1 -1
  93. package/dist/agent/lifecycle-trace.js +6 -5
  94. package/dist/agent/lifecycle-trace.js.map +1 -1
  95. package/dist/agent/loop.d.ts +9 -3
  96. package/dist/agent/loop.d.ts.map +1 -1
  97. package/dist/agent/loop.js +288 -157
  98. package/dist/agent/loop.js.map +1 -1
  99. package/dist/agent/memory-protocol.d.ts +2 -2
  100. package/dist/agent/memory-protocol.d.ts.map +1 -1
  101. package/dist/agent/memory-protocol.js +3 -15
  102. package/dist/agent/memory-protocol.js.map +1 -1
  103. package/dist/agent/memory-store.d.ts +58 -0
  104. package/dist/agent/memory-store.d.ts.map +1 -0
  105. package/dist/agent/memory-store.js +152 -0
  106. package/dist/agent/memory-store.js.map +1 -0
  107. package/dist/agent/model-provider.d.ts +18 -5
  108. package/dist/agent/model-provider.d.ts.map +1 -1
  109. package/dist/agent/model-provider.js +58 -18
  110. package/dist/agent/model-provider.js.map +1 -1
  111. package/dist/agent/nightly-maintenance/dreaming-batch.d.ts +184 -0
  112. package/dist/agent/nightly-maintenance/dreaming-batch.d.ts.map +1 -0
  113. package/dist/agent/nightly-maintenance/dreaming-batch.js +192 -0
  114. package/dist/agent/nightly-maintenance/dreaming-batch.js.map +1 -0
  115. package/dist/agent/nightly-maintenance/dreaming-files.d.ts +48 -0
  116. package/dist/agent/nightly-maintenance/dreaming-files.d.ts.map +1 -0
  117. package/dist/agent/nightly-maintenance/dreaming-files.js +109 -0
  118. package/dist/agent/nightly-maintenance/dreaming-files.js.map +1 -0
  119. package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts +62 -0
  120. package/dist/agent/nightly-maintenance/dreaming-ledger.d.ts.map +1 -0
  121. package/dist/agent/nightly-maintenance/dreaming-ledger.js +146 -0
  122. package/dist/agent/nightly-maintenance/dreaming-ledger.js.map +1 -0
  123. package/dist/agent/nightly-maintenance/dreaming-planner.d.ts +86 -0
  124. package/dist/agent/nightly-maintenance/dreaming-planner.d.ts.map +1 -0
  125. package/dist/agent/nightly-maintenance/dreaming-planner.js +304 -0
  126. package/dist/agent/nightly-maintenance/dreaming-planner.js.map +1 -0
  127. package/dist/agent/nightly-maintenance/dreaming-runner.d.ts +93 -0
  128. package/dist/agent/nightly-maintenance/dreaming-runner.d.ts.map +1 -0
  129. package/dist/agent/nightly-maintenance/dreaming-runner.js +156 -0
  130. package/dist/agent/nightly-maintenance/dreaming-runner.js.map +1 -0
  131. package/dist/agent/nightly-maintenance/dreaming-sources.d.ts +115 -0
  132. package/dist/agent/nightly-maintenance/dreaming-sources.d.ts.map +1 -0
  133. package/dist/agent/nightly-maintenance/dreaming-sources.js +270 -0
  134. package/dist/agent/nightly-maintenance/dreaming-sources.js.map +1 -0
  135. package/dist/agent/nightly-maintenance/index.d.ts +28 -8
  136. package/dist/agent/nightly-maintenance/index.d.ts.map +1 -1
  137. package/dist/agent/nightly-maintenance/index.js +42 -15
  138. package/dist/agent/nightly-maintenance/index.js.map +1 -1
  139. package/dist/agent/nightly-maintenance/skill-learning-gate.js +1 -1
  140. package/dist/agent/nightly-maintenance/skill-learning-gate.js.map +1 -1
  141. package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts +1 -1
  142. package/dist/agent/nightly-maintenance/vocabulary-processor.d.ts.map +1 -1
  143. package/dist/agent/product-identity.d.ts +5 -4
  144. package/dist/agent/product-identity.d.ts.map +1 -1
  145. package/dist/agent/product-identity.js +7 -6
  146. package/dist/agent/product-identity.js.map +1 -1
  147. package/dist/agent/public-activity.js +1 -1
  148. package/dist/agent/public-activity.js.map +1 -1
  149. package/dist/agent/reply-watchdog.d.ts +5 -3
  150. package/dist/agent/reply-watchdog.d.ts.map +1 -1
  151. package/dist/agent/reply-watchdog.js +6 -4
  152. package/dist/agent/reply-watchdog.js.map +1 -1
  153. package/dist/agent/runtime-context.d.ts +27 -0
  154. package/dist/agent/runtime-context.d.ts.map +1 -0
  155. package/dist/agent/runtime-context.js +60 -0
  156. package/dist/agent/runtime-context.js.map +1 -0
  157. package/dist/agent/runtime-disclosure-policy.d.ts +6 -0
  158. package/dist/agent/runtime-disclosure-policy.d.ts.map +1 -0
  159. package/dist/agent/runtime-disclosure-policy.js +16 -0
  160. package/dist/agent/runtime-disclosure-policy.js.map +1 -0
  161. package/dist/agent/runtime-surface.d.ts +15 -4
  162. package/dist/agent/runtime-surface.d.ts.map +1 -1
  163. package/dist/agent/runtime-surface.js +0 -1
  164. package/dist/agent/runtime-surface.js.map +1 -1
  165. package/dist/agent/session-manager.d.ts +30 -126
  166. package/dist/agent/session-manager.d.ts.map +1 -1
  167. package/dist/agent/session-manager.js +60 -484
  168. package/dist/agent/session-manager.js.map +1 -1
  169. package/dist/agent/state.d.ts +42 -2
  170. package/dist/agent/state.d.ts.map +1 -1
  171. package/dist/agent/state.js +21 -11
  172. package/dist/agent/state.js.map +1 -1
  173. package/dist/agent/stream-handler.d.ts +6 -13
  174. package/dist/agent/stream-handler.d.ts.map +1 -1
  175. package/dist/agent/stream-handler.js +8 -62
  176. package/dist/agent/stream-handler.js.map +1 -1
  177. package/dist/agent/system-prompt.d.ts +2 -0
  178. package/dist/agent/system-prompt.d.ts.map +1 -1
  179. package/dist/agent/system-prompt.js +21 -20
  180. package/dist/agent/system-prompt.js.map +1 -1
  181. package/dist/agent/tool-usage.d.ts.map +1 -1
  182. package/dist/agent/tool-usage.js +0 -1
  183. package/dist/agent/tool-usage.js.map +1 -1
  184. package/dist/agent/transcript/transcript-backfill.js +3 -3
  185. package/dist/agent/transcript/transcript-backfill.js.map +1 -1
  186. package/dist/agent/transcript/transcript-indexer.d.ts +3 -31
  187. package/dist/agent/transcript/transcript-indexer.d.ts.map +1 -1
  188. package/dist/agent/transcript/transcript-indexer.js +58 -57
  189. package/dist/agent/transcript/transcript-indexer.js.map +1 -1
  190. package/dist/agent/transcript-parsers/trivial-tools.d.ts.map +1 -1
  191. package/dist/agent/transcript-parsers/trivial-tools.js +0 -2
  192. package/dist/agent/transcript-parsers/trivial-tools.js.map +1 -1
  193. package/dist/agent/transcript-parsers/types.d.ts +1 -1
  194. package/dist/agent/transcript-summarizer.d.ts +14 -0
  195. package/dist/agent/transcript-summarizer.d.ts.map +1 -1
  196. package/dist/agent/transcript-summarizer.js +69 -45
  197. package/dist/agent/transcript-summarizer.js.map +1 -1
  198. package/dist/agent/usage/usage-report-queue.d.ts.map +1 -1
  199. package/dist/agent/usage/usage-report-queue.js +53 -52
  200. package/dist/agent/usage/usage-report-queue.js.map +1 -1
  201. package/dist/agent/usage/usage-report-types.d.ts +1 -1
  202. package/dist/agent/usage/usage-report-types.d.ts.map +1 -1
  203. package/dist/agent/vocabulary-glossary.d.ts +3 -3
  204. package/dist/agent/wake-cycle-runner.d.ts +14 -17
  205. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  206. package/dist/agent/wake-cycle-runner.js +121 -290
  207. package/dist/agent/wake-cycle-runner.js.map +1 -1
  208. package/dist/builtin-skills/owner-manual/SKILL.md +2 -2
  209. package/dist/calendar/occurrence-ownership.d.ts.map +1 -1
  210. package/dist/calendar/occurrence-ownership.js +6 -5
  211. package/dist/calendar/occurrence-ownership.js.map +1 -1
  212. package/dist/calendar/scheduler.d.ts.map +1 -1
  213. package/dist/calendar/scheduler.js +4 -3
  214. package/dist/calendar/scheduler.js.map +1 -1
  215. package/dist/channels/interface.d.ts +8 -2
  216. package/dist/channels/interface.d.ts.map +1 -1
  217. package/dist/channels/interface.js +8 -1
  218. package/dist/channels/interface.js.map +1 -1
  219. package/dist/channels/manager.d.ts.map +1 -1
  220. package/dist/channels/manager.js +5 -1
  221. package/dist/channels/manager.js.map +1 -1
  222. package/dist/channels/queue.d.ts.map +1 -1
  223. package/dist/channels/queue.js +8 -0
  224. package/dist/channels/queue.js.map +1 -1
  225. package/dist/channels/tui.d.ts +14 -1
  226. package/dist/channels/tui.d.ts.map +1 -1
  227. package/dist/channels/tui.js +64 -2
  228. package/dist/channels/tui.js.map +1 -1
  229. package/dist/cli/index.d.ts +2 -2
  230. package/dist/cli/index.d.ts.map +1 -1
  231. package/dist/cli/index.js +22 -53
  232. package/dist/cli/index.js.map +1 -1
  233. package/dist/config/index.d.ts +13 -7
  234. package/dist/config/index.d.ts.map +1 -1
  235. package/dist/config/index.js +51 -64
  236. package/dist/config/index.js.map +1 -1
  237. package/dist/config/types.d.ts +28 -7
  238. package/dist/config/types.d.ts.map +1 -1
  239. package/dist/config/types.js +22 -20
  240. package/dist/config/types.js.map +1 -1
  241. package/dist/conversations/lazy-runtime.d.ts +5 -0
  242. package/dist/conversations/lazy-runtime.d.ts.map +1 -0
  243. package/dist/conversations/lazy-runtime.js +12 -0
  244. package/dist/conversations/lazy-runtime.js.map +1 -0
  245. package/dist/conversations/runtime.d.ts +17 -0
  246. package/dist/conversations/runtime.d.ts.map +1 -0
  247. package/dist/conversations/runtime.js +92 -0
  248. package/dist/conversations/runtime.js.map +1 -0
  249. package/dist/conversations/scheduler.d.ts +57 -0
  250. package/dist/conversations/scheduler.d.ts.map +1 -0
  251. package/dist/conversations/scheduler.js +175 -0
  252. package/dist/conversations/scheduler.js.map +1 -0
  253. package/dist/data-processing/pipeline.d.ts +0 -2
  254. package/dist/data-processing/pipeline.d.ts.map +1 -1
  255. package/dist/data-processing/pipeline.js +19 -24
  256. package/dist/data-processing/pipeline.js.map +1 -1
  257. package/dist/data-processing/restructure.d.ts +0 -2
  258. package/dist/data-processing/restructure.d.ts.map +1 -1
  259. package/dist/data-processing/restructure.js +6 -9
  260. package/dist/data-processing/restructure.js.map +1 -1
  261. package/dist/data-processing/types.d.ts +2 -9
  262. package/dist/data-processing/types.d.ts.map +1 -1
  263. package/dist/data-processing/types.js +2 -13
  264. package/dist/data-processing/types.js.map +1 -1
  265. package/dist/email/email-route-store.d.ts.map +1 -1
  266. package/dist/email/email-route-store.js +6 -5
  267. package/dist/email/email-route-store.js.map +1 -1
  268. package/dist/i18n/messages.d.ts +26 -2
  269. package/dist/i18n/messages.d.ts.map +1 -1
  270. package/dist/i18n/messages.js +30 -5
  271. package/dist/i18n/messages.js.map +1 -1
  272. package/dist/index.js.map +1 -1
  273. package/dist/logger.d.ts +11 -0
  274. package/dist/logger.d.ts.map +1 -1
  275. package/dist/logger.js +49 -1
  276. package/dist/logger.js.map +1 -1
  277. package/dist/obs/mini-app/status.d.ts.map +1 -1
  278. package/dist/obs/mini-app/status.js +0 -1
  279. package/dist/obs/mini-app/status.js.map +1 -1
  280. package/dist/onboarding/onboarding-service-client.d.ts +1 -0
  281. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  282. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  283. package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
  284. package/dist/onboarding/remote-set-owner.js +0 -1
  285. package/dist/onboarding/remote-set-owner.js.map +1 -1
  286. package/dist/onboarding/set-owner.d.ts +1 -1
  287. package/dist/onboarding/set-owner.d.ts.map +1 -1
  288. package/dist/onboarding/set-owner.js +3 -6
  289. package/dist/onboarding/set-owner.js.map +1 -1
  290. package/dist/reconfigure.d.ts.map +1 -1
  291. package/dist/reconfigure.js +1 -32
  292. package/dist/reconfigure.js.map +1 -1
  293. package/dist/reset.d.ts.map +1 -1
  294. package/dist/reset.js +3 -1
  295. package/dist/reset.js.map +1 -1
  296. package/dist/threads/active-threads-store.d.ts.map +1 -1
  297. package/dist/threads/active-threads-store.js +8 -27
  298. package/dist/threads/active-threads-store.js.map +1 -1
  299. package/dist/threads/dreaming-execution.d.ts +10 -0
  300. package/dist/threads/dreaming-execution.d.ts.map +1 -0
  301. package/dist/threads/dreaming-execution.js +78 -0
  302. package/dist/threads/dreaming-execution.js.map +1 -0
  303. package/dist/threads/execution-authority.d.ts +43 -0
  304. package/dist/threads/execution-authority.d.ts.map +1 -0
  305. package/dist/threads/execution-authority.js +75 -0
  306. package/dist/threads/execution-authority.js.map +1 -0
  307. package/dist/threads/execution-budget.d.ts +107 -0
  308. package/dist/threads/execution-budget.d.ts.map +1 -0
  309. package/dist/threads/execution-budget.js +257 -0
  310. package/dist/threads/execution-budget.js.map +1 -0
  311. package/dist/threads/execution-host.d.ts +17 -0
  312. package/dist/threads/execution-host.d.ts.map +1 -0
  313. package/dist/threads/execution-host.js +66 -0
  314. package/dist/threads/execution-host.js.map +1 -0
  315. package/dist/threads/execution-scheduler.d.ts +162 -0
  316. package/dist/threads/execution-scheduler.d.ts.map +1 -0
  317. package/dist/threads/execution-scheduler.js +413 -0
  318. package/dist/threads/execution-scheduler.js.map +1 -0
  319. package/dist/threads/execution-snapshot.d.ts +91 -0
  320. package/dist/threads/execution-snapshot.d.ts.map +1 -0
  321. package/dist/threads/execution-snapshot.js +146 -0
  322. package/dist/threads/execution-snapshot.js.map +1 -0
  323. package/dist/threads/execution-store.d.ts +374 -0
  324. package/dist/threads/execution-store.d.ts.map +1 -0
  325. package/dist/threads/execution-store.js +910 -0
  326. package/dist/threads/execution-store.js.map +1 -0
  327. package/dist/threads/execution-thread-error.d.ts +9 -0
  328. package/dist/threads/execution-thread-error.d.ts.map +1 -0
  329. package/dist/threads/execution-thread-error.js +12 -0
  330. package/dist/threads/execution-thread-error.js.map +1 -0
  331. package/dist/threads/executor-exit.d.ts +18 -0
  332. package/dist/threads/executor-exit.d.ts.map +1 -0
  333. package/dist/threads/executor-exit.js +21 -0
  334. package/dist/threads/executor-exit.js.map +1 -0
  335. package/dist/threads/foreground-task.d.ts +91 -0
  336. package/dist/threads/foreground-task.d.ts.map +1 -0
  337. package/dist/threads/foreground-task.js +191 -0
  338. package/dist/threads/foreground-task.js.map +1 -0
  339. package/dist/threads/foreman-business.d.ts +9 -0
  340. package/dist/threads/foreman-business.d.ts.map +1 -0
  341. package/dist/threads/foreman-business.js +117 -0
  342. package/dist/threads/foreman-business.js.map +1 -0
  343. package/dist/threads/foreman-client.d.ts +18 -0
  344. package/dist/threads/foreman-client.d.ts.map +1 -0
  345. package/dist/threads/foreman-client.js +51 -0
  346. package/dist/threads/foreman-client.js.map +1 -0
  347. package/dist/threads/foreman-delivery.d.ts +5 -0
  348. package/dist/threads/foreman-delivery.d.ts.map +1 -0
  349. package/dist/threads/foreman-delivery.js +21 -0
  350. package/dist/threads/foreman-delivery.js.map +1 -0
  351. package/dist/threads/foreman-execution.d.ts +32 -0
  352. package/dist/threads/foreman-execution.d.ts.map +1 -0
  353. package/dist/threads/foreman-execution.js +90 -0
  354. package/dist/threads/foreman-execution.js.map +1 -0
  355. package/dist/threads/foreman-host.d.ts +77 -0
  356. package/dist/threads/foreman-host.d.ts.map +1 -0
  357. package/dist/threads/foreman-host.js +891 -0
  358. package/dist/threads/foreman-host.js.map +1 -0
  359. package/dist/threads/foreman-protocol.d.ts +242 -0
  360. package/dist/threads/foreman-protocol.d.ts.map +1 -0
  361. package/dist/threads/foreman-protocol.js +116 -0
  362. package/dist/threads/foreman-protocol.js.map +1 -0
  363. package/dist/threads/foreman-store.d.ts +151 -0
  364. package/dist/threads/foreman-store.d.ts.map +1 -0
  365. package/dist/threads/foreman-store.js +299 -0
  366. package/dist/threads/foreman-store.js.map +1 -0
  367. package/dist/threads/generic-execution.d.ts +25 -0
  368. package/dist/threads/generic-execution.d.ts.map +1 -0
  369. package/dist/threads/generic-execution.js +86 -0
  370. package/dist/threads/generic-execution.js.map +1 -0
  371. package/dist/threads/init-thread-dir.d.ts +2 -2
  372. package/dist/threads/init-thread-dir.d.ts.map +1 -1
  373. package/dist/threads/init-thread-dir.js +6 -6
  374. package/dist/threads/init-thread-dir.js.map +1 -1
  375. package/dist/threads/ipc.d.ts +108 -2
  376. package/dist/threads/ipc.d.ts.map +1 -1
  377. package/dist/threads/ipc.js +14 -2
  378. package/dist/threads/ipc.js.map +1 -1
  379. package/dist/threads/lab-run-thread.d.ts +3 -5
  380. package/dist/threads/lab-run-thread.d.ts.map +1 -1
  381. package/dist/threads/lab-run-thread.js +3 -5
  382. package/dist/threads/lab-run-thread.js.map +1 -1
  383. package/dist/threads/lab-runtime-policy.d.ts +26 -21
  384. package/dist/threads/lab-runtime-policy.d.ts.map +1 -1
  385. package/dist/threads/lab-runtime-policy.js +31 -126
  386. package/dist/threads/lab-runtime-policy.js.map +1 -1
  387. package/dist/threads/process-group.d.ts +41 -0
  388. package/dist/threads/process-group.d.ts.map +1 -0
  389. package/dist/threads/process-group.js +161 -0
  390. package/dist/threads/process-group.js.map +1 -0
  391. package/dist/threads/relay-adapter.d.ts +8 -0
  392. package/dist/threads/relay-adapter.d.ts.map +1 -1
  393. package/dist/threads/relay-adapter.js +26 -1
  394. package/dist/threads/relay-adapter.js.map +1 -1
  395. package/dist/threads/supervisor.d.ts +191 -57
  396. package/dist/threads/supervisor.d.ts.map +1 -1
  397. package/dist/threads/supervisor.js +766 -427
  398. package/dist/threads/supervisor.js.map +1 -1
  399. package/dist/threads/task-workspace.d.ts +8 -0
  400. package/dist/threads/task-workspace.d.ts.map +1 -0
  401. package/dist/threads/task-workspace.js +52 -0
  402. package/dist/threads/task-workspace.js.map +1 -0
  403. package/dist/threads/worker-entry.d.ts.map +1 -1
  404. package/dist/threads/worker-entry.js +314 -34
  405. package/dist/threads/worker-entry.js.map +1 -1
  406. package/dist/threads/worker-execution-runtime.d.ts +75 -0
  407. package/dist/threads/worker-execution-runtime.d.ts.map +1 -0
  408. package/dist/threads/worker-execution-runtime.js +142 -0
  409. package/dist/threads/worker-execution-runtime.js.map +1 -0
  410. package/dist/threads/worker-execution.d.ts +35 -0
  411. package/dist/threads/worker-execution.d.ts.map +1 -0
  412. package/dist/threads/worker-execution.js +2 -0
  413. package/dist/threads/worker-execution.js.map +1 -0
  414. package/dist/threads/worker-runtime-policy.d.ts +42 -0
  415. package/dist/threads/worker-runtime-policy.d.ts.map +1 -0
  416. package/dist/threads/worker-runtime-policy.js +98 -0
  417. package/dist/threads/worker-runtime-policy.js.map +1 -0
  418. package/dist/tools/adapter-tool.d.ts +12 -0
  419. package/dist/tools/adapter-tool.d.ts.map +1 -0
  420. package/dist/tools/adapter-tool.js +2 -0
  421. package/dist/tools/adapter-tool.js.map +1 -0
  422. package/dist/tools/data-service.d.ts +2 -2
  423. package/dist/tools/delegation.d.ts +121 -0
  424. package/dist/tools/delegation.d.ts.map +1 -0
  425. package/dist/tools/delegation.js +106 -0
  426. package/dist/tools/delegation.js.map +1 -0
  427. package/dist/tools/dream-memory.d.ts +122 -0
  428. package/dist/tools/dream-memory.d.ts.map +1 -0
  429. package/dist/tools/dream-memory.js +513 -0
  430. package/dist/tools/dream-memory.js.map +1 -0
  431. package/dist/tools/email.d.ts +1 -1
  432. package/dist/tools/execution-control.d.ts +31 -0
  433. package/dist/tools/execution-control.d.ts.map +1 -0
  434. package/dist/tools/execution-control.js +71 -0
  435. package/dist/tools/execution-control.js.map +1 -0
  436. package/dist/tools/index.d.ts +5 -7
  437. package/dist/tools/index.d.ts.map +1 -1
  438. package/dist/tools/index.js +7 -13
  439. package/dist/tools/index.js.map +1 -1
  440. package/dist/tools/mcp-manager.d.ts +1 -1
  441. package/dist/tools/memory.d.ts +1 -1
  442. package/dist/tools/memory.d.ts.map +1 -1
  443. package/dist/tools/memory.js +69 -45
  444. package/dist/tools/memory.js.map +1 -1
  445. package/dist/tools/notify.d.ts +5 -0
  446. package/dist/tools/notify.d.ts.map +1 -1
  447. package/dist/tools/notify.js +45 -10
  448. package/dist/tools/notify.js.map +1 -1
  449. package/dist/tools/skill.d.ts +1 -1
  450. package/dist/tools/totp.d.ts +1 -1
  451. package/dist/tui/client.d.ts +1 -16
  452. package/dist/tui/client.d.ts.map +1 -1
  453. package/dist/tui/client.js +0 -4
  454. package/dist/tui/client.js.map +1 -1
  455. package/dist/tui/index.d.ts.map +1 -1
  456. package/dist/tui/index.js +0 -41
  457. package/dist/tui/index.js.map +1 -1
  458. package/dist/tui/protocol.d.ts +2 -1
  459. package/dist/tui/protocol.d.ts.map +1 -1
  460. package/dist/tui/protocol.js +2 -1
  461. package/dist/tui/protocol.js.map +1 -1
  462. package/dist/tui/renderer.d.ts.map +1 -1
  463. package/dist/tui/renderer.js +0 -5
  464. package/dist/tui/renderer.js.map +1 -1
  465. package/dist/tui/request-store.d.ts +1 -1
  466. package/dist/tui/request-store.d.ts.map +1 -1
  467. package/dist/tui/request-store.js +2 -2
  468. package/dist/tui/request-store.js.map +1 -1
  469. package/dist/tui/server.d.ts.map +1 -1
  470. package/dist/tui/server.js +137 -25
  471. package/dist/tui/server.js.map +1 -1
  472. package/dist/utils/claude-transcripts.d.ts +6 -0
  473. package/dist/utils/claude-transcripts.d.ts.map +1 -1
  474. package/dist/utils/claude-transcripts.js +8 -2
  475. package/dist/utils/claude-transcripts.js.map +1 -1
  476. package/dist/utils/restart.d.ts.map +1 -1
  477. package/dist/utils/restart.js +6 -0
  478. package/dist/utils/restart.js.map +1 -1
  479. package/dist-agent/bundle.cjs +2 -2
  480. package/package.json +1 -1
  481. package/dist/agent/mailbox.d.ts +0 -50
  482. package/dist/agent/mailbox.d.ts.map +0 -1
  483. package/dist/agent/mailbox.js +0 -124
  484. package/dist/agent/mailbox.js.map +0 -1
  485. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts +0 -77
  486. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.d.ts.map +0 -1
  487. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js +0 -158
  488. package/dist/agent/nightly-maintenance/memory-dreaming-sweep.js.map +0 -1
  489. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts +0 -116
  490. package/dist/agent/nightly-maintenance/memory-dreaming.d.ts.map +0 -1
  491. package/dist/agent/nightly-maintenance/memory-dreaming.js +0 -458
  492. package/dist/agent/nightly-maintenance/memory-dreaming.js.map +0 -1
  493. package/dist/threads/task-contracts.d.ts +0 -194
  494. package/dist/threads/task-contracts.d.ts.map +0 -1
  495. package/dist/threads/task-contracts.js +0 -82
  496. package/dist/threads/task-contracts.js.map +0 -1
  497. package/dist/threads/task-sidecar.d.ts +0 -145
  498. package/dist/threads/task-sidecar.d.ts.map +0 -1
  499. package/dist/threads/task-sidecar.js +0 -311
  500. package/dist/threads/task-sidecar.js.map +0 -1
  501. package/dist/threads/task-store.d.ts +0 -172
  502. package/dist/threads/task-store.d.ts.map +0 -1
  503. package/dist/threads/task-store.js +0 -599
  504. package/dist/threads/task-store.js.map +0 -1
  505. package/dist/threads/thread-task-context.d.ts +0 -40
  506. package/dist/threads/thread-task-context.d.ts.map +0 -1
  507. package/dist/threads/thread-task-context.js +0 -160
  508. package/dist/threads/thread-task-context.js.map +0 -1
  509. package/dist/threads/thread-task-controller.d.ts +0 -122
  510. package/dist/threads/thread-task-controller.d.ts.map +0 -1
  511. package/dist/threads/thread-task-controller.js +0 -276
  512. package/dist/threads/thread-task-controller.js.map +0 -1
  513. package/dist/threads/thread-task-runtime.d.ts +0 -354
  514. package/dist/threads/thread-task-runtime.d.ts.map +0 -1
  515. package/dist/threads/thread-task-runtime.js +0 -917
  516. package/dist/threads/thread-task-runtime.js.map +0 -1
  517. package/dist/tools/switch-session.d.ts +0 -15
  518. package/dist/tools/switch-session.d.ts.map +0 -1
  519. package/dist/tools/switch-session.js +0 -88
  520. package/dist/tools/switch-session.js.map +0 -1
  521. package/dist/tools/thread-tasks.d.ts +0 -23
  522. package/dist/tools/thread-tasks.d.ts.map +0 -1
  523. package/dist/tools/thread-tasks.js +0 -122
  524. package/dist/tools/thread-tasks.js.map +0 -1
@@ -0,0 +1,257 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { writeJsonAtomically } from "../utils/atomic-json.js";
5
+ /**
6
+ * Task-level budget for one internal execution (#2805 step 1b).
7
+ *
8
+ * The accumulated usage is authoritative: it is saved after every counted
9
+ * event and restored when the same execution resumes, so a new query, a
10
+ * session rebuild or a worker restart never resets it. SDK limits remain only
11
+ * as an extra guard.
12
+ *
13
+ * Counting boundaries are mapped per engine (Pi `turn_start`, Claude
14
+ * `message_start`): one model attempt is counted once, however many stream
15
+ * chunks it produces, and failed attempts count too. Tool calls are counted
16
+ * when they reach the execution boundary, each call in a batch separately,
17
+ * failed calls included. Once the budget is exhausted no further tool may
18
+ * start; the meter latches and asks its host to stop.
19
+ *
20
+ * For a host-scheduled execution the host keeps the authoritative copy: the
21
+ * worker reports every change over IPC and restarts from the host's copy, so
22
+ * deleting or editing the local file cannot hand the task a fresh budget.
23
+ */
24
+ export const EXECUTION_BUDGET_FILE = "execution-budget.json";
25
+ const UsageSchema = z.object({
26
+ executionId: z.string().min(1),
27
+ /** First admission, ISO-8601. Execution time accumulates from here. */
28
+ startedAt: z.string(),
29
+ modelAttempts: z.number().int().nonnegative(),
30
+ failedModelAttempts: z.number().int().nonnegative(),
31
+ toolCalls: z.number().int().nonnegative(),
32
+ failedToolCalls: z.number().int().nonnegative(),
33
+ /** Execution time banked by previous worker processes. */
34
+ elapsedMs: z.number().int().nonnegative(),
35
+ inputTokens: z.number().int().nonnegative(),
36
+ outputTokens: z.number().int().nonnegative(),
37
+ stopReason: z.string().nullable(),
38
+ }).strict();
39
+ export class ExecutionBudgetExhaustedError extends Error {
40
+ constructor(message) {
41
+ super(message);
42
+ this.name = "ExecutionBudgetExhaustedError";
43
+ }
44
+ }
45
+ export class ExecutionBudgetMeter {
46
+ limits;
47
+ filePath;
48
+ now;
49
+ onSave;
50
+ usage;
51
+ /** Wall-clock start of this process's share of the execution time. */
52
+ processStartMs;
53
+ stopListeners = new Set();
54
+ deadline = null;
55
+ constructor(limits, filePath, usage, now, onSave) {
56
+ this.limits = limits;
57
+ this.filePath = filePath;
58
+ this.now = now;
59
+ this.onSave = onSave;
60
+ this.usage = usage;
61
+ this.processStartMs = now();
62
+ }
63
+ /**
64
+ * Restore this execution's accumulated usage, or start it fresh. With a
65
+ * host copy (`options.hostUsage`), that copy is authoritative and the local
66
+ * file can only raise it. Usage recorded for a different execution id is
67
+ * never carried over. A fresh handoff starts with `options.toolCalls`, the
68
+ * calls General already spent on this task, so delegation does not refill it.
69
+ */
70
+ static open(dir, executionId, limits, now = Date.now, options = {}) {
71
+ const filePath = path.join(dir, EXECUTION_BUDGET_FILE);
72
+ const hostUsage = options.hostUsage ? readHostUsage(options.hostUsage) : null;
73
+ let usage = null;
74
+ if (fs.existsSync(filePath)) {
75
+ let parsed = null;
76
+ try {
77
+ parsed = UsageSchema.safeParse(JSON.parse(fs.readFileSync(filePath, "utf8")));
78
+ }
79
+ catch {
80
+ parsed = null;
81
+ }
82
+ // A corrupt record must not hand a resumed execution a fresh budget,
83
+ // unless the host still holds the real one.
84
+ if (!parsed?.success && !hostUsage)
85
+ throw new Error("Execution budget record is unreadable; refusing to reset it");
86
+ if (parsed?.success && parsed.data.executionId === executionId)
87
+ usage = parsed.data;
88
+ }
89
+ const base = usage ?? {
90
+ executionId,
91
+ startedAt: new Date(now()).toISOString(),
92
+ modelAttempts: 0,
93
+ failedModelAttempts: 0,
94
+ toolCalls: Math.max(0, Math.trunc(options.toolCalls ?? 0)),
95
+ failedToolCalls: 0,
96
+ elapsedMs: 0,
97
+ inputTokens: 0,
98
+ outputTokens: 0,
99
+ stopReason: null,
100
+ };
101
+ const meter = new ExecutionBudgetMeter(limits, filePath, hostUsage ? mergeUsage(base, hostUsage) : base, now, options.onSave ?? null);
102
+ meter.save();
103
+ return meter;
104
+ }
105
+ get stopReason() {
106
+ return this.usage.stopReason;
107
+ }
108
+ /** Execution time including earlier processes; stops advancing once stopped. */
109
+ elapsedMs() {
110
+ return this.usage.elapsedMs + (this.now() - this.processStartMs);
111
+ }
112
+ report() {
113
+ return { ...this.usage, elapsedMs: this.elapsedMs(), costUsd: null };
114
+ }
115
+ /** Called with the reason once, when the budget is exhausted. */
116
+ onStop(listener) {
117
+ this.stopListeners.add(listener);
118
+ return () => this.stopListeners.delete(listener);
119
+ }
120
+ /** Arm the execution-time deadline. Returns a disarm function. */
121
+ armDeadline() {
122
+ this.disarmDeadline();
123
+ const remaining = this.limits.maxDurationMs - this.elapsedMs();
124
+ if (remaining <= 0) {
125
+ this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
126
+ return () => undefined;
127
+ }
128
+ this.deadline = setTimeout(() => {
129
+ this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
130
+ }, remaining);
131
+ this.deadline.unref();
132
+ return () => this.disarmDeadline();
133
+ }
134
+ /** Throw before starting new work once the budget is exhausted. */
135
+ assertRunning() {
136
+ if (!this.usage.stopReason && this.elapsedMs() >= this.limits.maxDurationMs) {
137
+ this.exhaust(`Execution time budget exhausted (${this.limits.maxDurationMs} ms)`);
138
+ }
139
+ if (this.usage.stopReason)
140
+ throw new ExecutionBudgetExhaustedError(this.usage.stopReason);
141
+ }
142
+ /**
143
+ * Count one model attempt at the engine's attempt boundary. An attempt that
144
+ * was observed is counted even past the limit (Claude reports it only once
145
+ * the request is out); the meter then latches. Engines call
146
+ * {@link stopBeforeNextAttempt} first, so the limit is not overrun on the
147
+ * normal tool-use path.
148
+ */
149
+ beginModelAttempt() {
150
+ this.assertRunning();
151
+ this.usage.modelAttempts += 1;
152
+ if (this.usage.modelAttempts > this.limits.maxModelAttempts) {
153
+ this.exhaust(`Execution model-attempt budget exhausted (${this.limits.maxModelAttempts} attempts)`);
154
+ return;
155
+ }
156
+ this.save();
157
+ }
158
+ /**
159
+ * Called where an engine is about to send its next model request (Claude:
160
+ * after a tool batch). Returns the stop reason when no attempt is left, so
161
+ * the engine can stop before the request is sent instead of after.
162
+ */
163
+ stopBeforeNextAttempt() {
164
+ if (!this.usage.stopReason && this.usage.modelAttempts >= this.limits.maxModelAttempts) {
165
+ this.exhaust(`Execution model-attempt budget exhausted (${this.limits.maxModelAttempts} attempts)`);
166
+ }
167
+ return this.usage.stopReason;
168
+ }
169
+ /** A counted attempt ended in an error; it still consumed budget. */
170
+ recordFailedModelAttempt() {
171
+ this.usage.failedModelAttempts += 1;
172
+ this.save();
173
+ }
174
+ /** Token usage as reported by the engine. Observational, not a hard budget. */
175
+ recordTokens(inputTokens, outputTokens) {
176
+ if (inputTokens <= 0 && outputTokens <= 0)
177
+ return;
178
+ this.usage.inputTokens += Math.max(0, inputTokens);
179
+ this.usage.outputTokens += Math.max(0, outputTokens);
180
+ this.save();
181
+ }
182
+ /**
183
+ * Admit one tool call at the execution boundary. Returns a refusal reason
184
+ * when the call must not run; the refused call is still counted.
185
+ */
186
+ beforeToolCall() {
187
+ try {
188
+ this.assertRunning();
189
+ }
190
+ catch (error) {
191
+ return error instanceof Error ? error.message : String(error);
192
+ }
193
+ this.usage.toolCalls += 1;
194
+ if (this.usage.toolCalls > this.limits.maxToolCalls) {
195
+ this.exhaust(`Execution tool-call budget exhausted (${this.limits.maxToolCalls} calls)`);
196
+ return this.usage.stopReason;
197
+ }
198
+ this.save();
199
+ return null;
200
+ }
201
+ recordToolFailure() {
202
+ this.usage.failedToolCalls += 1;
203
+ this.save();
204
+ }
205
+ /** Bank this process's share of the execution time before it exits. */
206
+ close() {
207
+ this.disarmDeadline();
208
+ this.usage.elapsedMs = this.elapsedMs();
209
+ this.processStartMs = this.now();
210
+ this.save();
211
+ }
212
+ exhaust(reason) {
213
+ if (this.usage.stopReason)
214
+ return;
215
+ this.usage.stopReason = reason;
216
+ this.disarmDeadline();
217
+ this.save();
218
+ for (const listener of this.stopListeners)
219
+ listener(reason);
220
+ }
221
+ disarmDeadline() {
222
+ if (this.deadline)
223
+ clearTimeout(this.deadline);
224
+ this.deadline = null;
225
+ }
226
+ save() {
227
+ const snapshot = { ...this.usage, elapsedMs: this.elapsedMs() };
228
+ writeJsonAtomically(this.filePath, snapshot);
229
+ this.onSave?.(snapshot);
230
+ }
231
+ }
232
+ const COUNTERS = [
233
+ "modelAttempts", "failedModelAttempts", "toolCalls", "failedToolCalls", "elapsedMs", "inputTokens", "outputTokens",
234
+ ];
235
+ /** The host's copy may be partial (e.g. only a stop reason set by its deadline). */
236
+ function readHostUsage(raw) {
237
+ const usage = {};
238
+ for (const key of COUNTERS) {
239
+ const value = raw[key];
240
+ if (typeof value === "number" && Number.isInteger(value) && value >= 0)
241
+ usage[key] = value;
242
+ }
243
+ if (typeof raw.startedAt === "string")
244
+ usage.startedAt = raw.startedAt;
245
+ if (typeof raw.stopReason === "string")
246
+ usage.stopReason = raw.stopReason;
247
+ return usage;
248
+ }
249
+ /** Counters only grow; a stop reason, once set, stays. */
250
+ function mergeUsage(local, host) {
251
+ const merged = { ...local, startedAt: host.startedAt ?? local.startedAt };
252
+ for (const key of COUNTERS)
253
+ merged[key] = Math.max(local[key], host[key] ?? 0);
254
+ merged.stopReason = host.stopReason ?? local.stopReason;
255
+ return merged;
256
+ }
257
+ //# sourceMappingURL=execution-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-budget.js","sourceRoot":"","sources":["../../src/threads/execution-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ExecutionCaller, ExecutionStore } from "./execution-store.js";
2
+ import type { IpcExecutionReport } from "./ipc.js";
3
+ import type { ExecutionScheduler } from "./execution-scheduler.js";
4
+ /**
5
+ * Host-side handling of a worker's execution reports (#2805 1c).
6
+ *
7
+ * Every report is checked against the executor generation the host started
8
+ * for that worker; the payload's own claims of identity are not trusted. A
9
+ * report from a replaced or unknown worker is dropped.
10
+ */
11
+ export declare function applyExecutionReport(store: ExecutionStore, scheduler: ExecutionScheduler, expected: {
12
+ executionId: string;
13
+ generation: number;
14
+ }, report: IpcExecutionReport): void;
15
+ /** Callers recognized by the generic execution entry; others have their own adapters. */
16
+ export declare function isGenericExecutionCaller(caller: ExecutionCaller): boolean;
17
+ //# sourceMappingURL=execution-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-host.d.ts","sourceRoot":"","sources":["../../src/threads/execution-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EACrD,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAiDN;AAED,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAEzE"}
@@ -0,0 +1,66 @@
1
+ import { logger } from "../logger.js";
2
+ /**
3
+ * Host-side handling of a worker's execution reports (#2805 1c).
4
+ *
5
+ * Every report is checked against the executor generation the host started
6
+ * for that worker; the payload's own claims of identity are not trusted. A
7
+ * report from a replaced or unknown worker is dropped.
8
+ */
9
+ export function applyExecutionReport(store, scheduler, expected, report) {
10
+ if (report.executionId !== expected.executionId) {
11
+ logger.warn(`[execution] Dropping a report for ${report.executionId} from the executor of ${expected.executionId}`);
12
+ return;
13
+ }
14
+ const { executionId, generation } = expected;
15
+ switch (report.type) {
16
+ case "execution-result": {
17
+ const outcome = store.completeExecution(executionId, generation, {
18
+ status: report.status,
19
+ processedInputSeq: report.processedInputSeq,
20
+ ...(report.summary ? { summary: report.summary } : {}),
21
+ ...(report.data ? { data: report.data } : {}),
22
+ ...(report.artifactRefs ? { artifactRefs: report.artifactRefs } : {}),
23
+ ...(report.error ? { error: report.error } : {}),
24
+ ...(report.usage ? { usage: report.usage } : {}),
25
+ });
26
+ if ("rejected" in outcome) {
27
+ logger.warn(`[execution] Result for ${executionId} rejected: ${outcome.rejected}`);
28
+ return;
29
+ }
30
+ // The result is recorded; it is published only after the executor stops.
31
+ scheduler.requestStop(executionId, "result_reported");
32
+ return;
33
+ }
34
+ case "execution-progress":
35
+ store.recordProgress(executionId, generation, { summary: report.summary });
36
+ return;
37
+ case "execution-question": {
38
+ const questionId = store.askQuestion(executionId, generation, {
39
+ text: report.text, ...(report.choices ? { choices: report.choices } : {}),
40
+ ...(report.delivery === "direct" ? { delivery: "direct" } : {}),
41
+ });
42
+ // The question is durable; release the executor while it waits.
43
+ if (questionId)
44
+ scheduler.requestStop(executionId, "waiting_input");
45
+ return;
46
+ }
47
+ case "execution-input-applied":
48
+ store.markInputApplied(executionId, generation, report.inputSeq);
49
+ return;
50
+ case "execution-tool":
51
+ if (report.phase === "started")
52
+ store.toolCallStarted(executionId, report.callId, report.toolName);
53
+ else
54
+ store.toolCallFinished(executionId, report.callId);
55
+ return;
56
+ case "execution-usage":
57
+ // The host's copy is authoritative; counters only grow.
58
+ store.recordUsage(executionId, generation, report.usage);
59
+ return;
60
+ }
61
+ }
62
+ /** Callers recognized by the generic execution entry; others have their own adapters. */
63
+ export function isGenericExecutionCaller(caller) {
64
+ return caller.kind === "tui" || caller.kind === "general";
65
+ }
66
+ //# sourceMappingURL=execution-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-host.js","sourceRoot":"","sources":["../../src/threads/execution-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ import type { ExecutionCaller, ExecutionEvent, ExecutionRecord, ExecutionStore } from "./execution-store.js";
2
+ import { type ExecutorGroupStatus } from "./process-group.js";
3
+ /** Same cap as the supervisor's crash budget for thread workers. */
4
+ export declare const MAX_AUTO_RESUMES = 3;
5
+ /**
6
+ * Whether an interrupted running execution is resumed under the same
7
+ * executionId. Lab creates a new run instead; Nightly continues from its own
8
+ * watermark. Owner-delegated work (General/TUI) resumes.
9
+ */
10
+ export declare function resumesAfterInterruption(caller: ExecutionCaller): boolean;
11
+ /**
12
+ * How an executor ended, as observed by the host.
13
+ * - `exited`: the worker exited by itself with code 0.
14
+ * - `crashed`: any other exit the host did not ask for.
15
+ * - `host_stop`: the host asked it to stop (cancel, result, question, deadline).
16
+ * - `host_shutdown`: the host itself is shutting down; not the task's fault.
17
+ * - `host_restart`: found after a host restart, executor gone or killed.
18
+ * - `refused`: the worker refused to start (bad snapshot or record); a retry
19
+ * would fail the same way.
20
+ */
21
+ export type ExecutorExit = "exited" | "crashed" | "host_stop" | "host_shutdown" | "host_restart" | "refused";
22
+ export interface ExecutionDeliveryHandler {
23
+ /**
24
+ * Deliver an event to its caller. Resolve true only once the event is in
25
+ * the caller's own durable record; false (or a throw) retries later.
26
+ */
27
+ deliverExecutionEvent(event: ExecutionEvent, caller: ExecutionCaller): Promise<boolean>;
28
+ }
29
+ export interface ExecutionHost {
30
+ /**
31
+ * Free worker slots for this record, shared with thread workers. While
32
+ * maintenance holds admission only its own registered execution gets one.
33
+ */
34
+ availableSlots(record: ExecutionRecord): number;
35
+ /** Fork a worker for this execution and return its process identity. */
36
+ spawn(record: ExecutionRecord): {
37
+ pid: number;
38
+ processStart: string;
39
+ };
40
+ /** Ask the execution's worker to stop; the host force-kills after its grace period. */
41
+ stop(executionId: string, reason: string): void;
42
+ /** The execution's frozen time budget, read from its verified snapshot; null if unknown. */
43
+ timeBudgetMs?(record: ExecutionRecord): number | null;
44
+ }
45
+ export interface ExecutionSchedulerOptions {
46
+ store: ExecutionStore;
47
+ host: ExecutionHost;
48
+ delivery: ExecutionDeliveryHandler;
49
+ /** Test seam: is any member of a recorded executor's process group still alive? */
50
+ groupStatus?: (pgid: number, processStart: string) => ExecutorGroupStatus;
51
+ /** Test seam: force-kill a previous host's executor group and wait for it to empty. */
52
+ killGroupAndWait?: (pgid: number, processStart: string, timeoutMs: number) => Promise<boolean>;
53
+ /** Stop groups the executor's shells recorded outside its own group. */
54
+ stopRegisteredGroups?: (executionId: string, timeoutMs: number) => Promise<boolean>;
55
+ /** Test seam: backoff schedule for proving a previous executor stopped. */
56
+ staleRecheckDelaysMs?: readonly number[];
57
+ /** Test seam: grace added to an execution's time budget before the host stops it. */
58
+ hostDeadlineGraceMs?: number;
59
+ }
60
+ /**
61
+ * Host-side scheduler for internal executions (#2805 steps 1c/1d).
62
+ *
63
+ * It owns no processes itself: the supervisor forks and stops workers. The
64
+ * scheduler decides what to admit, records the writer generation, and
65
+ * resolves every worker exit through `confirmStopped`, so a terminal state is
66
+ * published, and the next writer admitted, only after the previous executor
67
+ * is known to be stopped.
68
+ */
69
+ export declare class ExecutionScheduler {
70
+ private lastAdmittedGroup;
71
+ private readonly store;
72
+ private readonly host;
73
+ private readonly delivery;
74
+ private readonly groupStatus;
75
+ private readonly killGroupAndWait;
76
+ private readonly stopRegisteredGroups;
77
+ private readonly staleRecheckDelaysMs;
78
+ private readonly hostDeadlineGraceMs;
79
+ /** executionId → generation of the executor this host started. */
80
+ private readonly running;
81
+ /** Executions whose stop this host requested; their exit is not a crash. */
82
+ private readonly stopRequested;
83
+ /** Host-side deadlines: a hung worker cannot outlive its time budget. */
84
+ private readonly deadlines;
85
+ /** Executions whose previous executor is not yet proven stopped → attempts so far. */
86
+ private readonly unverified;
87
+ private readonly recheckTimers;
88
+ private admissionTimer;
89
+ private outboxTimer;
90
+ private delivering;
91
+ private started;
92
+ private stopped;
93
+ constructor(options: ExecutionSchedulerOptions);
94
+ /** Recover executions left by a previous host, then start admission and delivery. */
95
+ start(): void;
96
+ /**
97
+ * Stop scheduling. Running executors are stopped by the host's shutdown;
98
+ * their exits still resolve here (`hostStopping`), so an interrupted
99
+ * execution is queued for the next host to resume. An executor whose group
100
+ * cannot be emptied stays recorded, and the next host proves it stopped
101
+ * first.
102
+ */
103
+ stop(): void;
104
+ private isStopped;
105
+ get activeCount(): number;
106
+ isRunning(executionId: string): boolean;
107
+ /**
108
+ * Work that maintenance must not start alongside: a running executor of
109
+ * any caller, an executor whose stop is not yet proven, or queued work of
110
+ * a caller other than maintenance itself.
111
+ */
112
+ hasOutstandingWork(): boolean;
113
+ /** Whether this execution's previous executor is still unproven stopped. */
114
+ isUnverified(executionId: string): boolean;
115
+ /**
116
+ * Keep an execution blocked until its recorded executor group is proven
117
+ * gone, retrying with backoff and telling the caller. Used for survivors of
118
+ * a stop and for executors left by a previous host.
119
+ */
120
+ blockUntilStopped(executionId: string): void;
121
+ /** Called after a submit, an answer, or a freed slot. Admission is coalesced. */
122
+ requestAdmission(): void;
123
+ /** Stop the executor if this host runs one; its exit is then expected, not a crash. */
124
+ requestStop(executionId: string, reason: string): void;
125
+ /**
126
+ * Called with the exit of every execution worker the host forked, after
127
+ * the host tried to empty its process group. `hostStopping` marks an exit
128
+ * caused by this host shutting down: an interrupted execution is queued
129
+ * for the next host to resume. `groupStopped: false` means members of the
130
+ * group survived the kill; the execution stays blocked until they are
131
+ * proven gone (by the next host, when this one is shutting down).
132
+ */
133
+ handleWorkerExit(executionId: string, code: number | null, signal: NodeJS.Signals | null, options?: {
134
+ hostStopping?: boolean;
135
+ groupStopped?: boolean;
136
+ }): void;
137
+ /**
138
+ * The executor for `generation` is stopped. Publish its reported result,
139
+ * keep a waiting question open, confirm a cancel, or decide between an
140
+ * automatic resume and a failure for an interrupted run.
141
+ */
142
+ private resolveStoppedExecutor;
143
+ private admitQueued;
144
+ private groupOf;
145
+ /** Round-robin across root Tasks, preserving FIFO order within each Task. */
146
+ private fairQueued;
147
+ /**
148
+ * The worker enforces its own time budget; this is the host's backstop for
149
+ * a worker that hangs and never reaches that check.
150
+ */
151
+ private armHostDeadline;
152
+ /**
153
+ * A previous host may have died with executors still recorded. Prove each
154
+ * one stopped (or stop it) before anything else may write for it; while
155
+ * that cannot be proven, keep the execution blocked, tell the caller, and
156
+ * keep trying with backoff.
157
+ */
158
+ private recoverAfterRestart;
159
+ private proveStaleExecutorStopped;
160
+ private deliverOutbox;
161
+ }
162
+ //# sourceMappingURL=execution-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-scheduler.d.ts","sourceRoot":"","sources":["../../src/threads/execution-scheduler.ts"],"names":[],"mappings":"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"}