@humwick/server 0.130.1 → 0.130.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 (437) hide show
  1. package/README.md +5 -0
  2. package/docs/guides/tools-administration.md +4 -0
  3. package/docs/guides/tools-coordination.md +1 -0
  4. package/docs/guides/tools-tasks.md +8 -0
  5. package/docs/guides/workflows.md +58 -0
  6. package/docs/openapi.json +414 -1
  7. package/package.json +8 -17
  8. package/public/assets/{MessageBubble-BWpoBjl4.js → MessageBubble-BWLqMGKG.js} +2 -2
  9. package/public/assets/{PlanGraphPanel-C0auck3n.js → PlanGraphPanel-3TlIQpjk.js} +2 -2
  10. package/public/assets/{TraceView-DBnOx7AQ.js → TraceView-Wimm0Czv.js} +2 -2
  11. package/public/assets/{VaultDecisionCard-0kp2oNBC.js → VaultDecisionCard-Bau_vNax.js} +2 -2
  12. package/public/assets/{activity-yLztXEBt.js → activity-CrSurn-r.js} +2 -2
  13. package/public/assets/{agent-lineage-BbJDR1dW.js → agent-lineage-CknAJKcb.js} +2 -2
  14. package/public/assets/agent-liveness-CaNwK0Zf.js +2 -0
  15. package/public/assets/{agent-name-CTZBrSD9.js → agent-name-DKbiIhBo.js} +2 -2
  16. package/public/assets/agent-profiles-DwF6EQ4R.js +2 -0
  17. package/public/assets/{agent-project-badge-9TqzUUYE.js → agent-project-badge-Diz4Sjjb.js} +2 -2
  18. package/public/assets/{agent-tools-D4n40pn8.js → agent-tools-CRhpRQza.js} +2 -2
  19. package/public/assets/{agent-type-icon-D6FUarOf.js → agent-type-icon-LrUEU3lB.js} +2 -2
  20. package/public/assets/{agents-BYDslkJc.js → agents-B-v66C-4.js} +2 -2
  21. package/public/assets/{analytics-B-XSbEMC.js → analytics-BqCb-LKi.js} +2 -2
  22. package/public/assets/{artifact-viewer-DdWIfV6M.js → artifact-viewer-kf4pGuAR.js} +2 -2
  23. package/public/assets/{artifacts-oBOqks-2.js → artifacts-D32zyw4Y.js} +2 -2
  24. package/public/assets/{artifacts-DPN1q4pA.js → artifacts-DJevXcvg.js} +2 -2
  25. package/public/assets/{automation-4KcRFXEu.js → automation-BpRajx_5.js} +2 -2
  26. package/public/assets/{backlog-Cw9xPTCF.js → backlog-D_UjTdzX.js} +2 -2
  27. package/public/assets/{busy-health-CTu32MZt.js → busy-health-N3VEh4ao.js} +2 -2
  28. package/public/assets/{channels-BiXzg1G9.js → channels-9jopungq.js} +2 -2
  29. package/public/assets/{chat-Ctk2qwvA.js → chat-CSXrTB3C.js} +2 -2
  30. package/public/assets/{code-preview-Bm1wWqAp.js → code-preview-p1NnmqK0.js} +2 -2
  31. package/public/assets/{connectors-C36ax4Vw.js → connectors-CZdqlDNL.js} +2 -2
  32. package/public/assets/{cosmos-Jj9LK2Wf.js → cosmos-BgdsE4dG.js} +2 -2
  33. package/public/assets/{crate-agent-H6S7-B9T.js → crate-agent-30aXTKva.js} +2 -2
  34. package/public/assets/{dependency-graph-Cd1E23wa.js → dependency-graph-B_jvw2GE.js} +2 -2
  35. package/public/assets/{deploys-Bwfq146q.js → deploys-DoN6bAb5.js} +2 -2
  36. package/public/assets/{display-CfO7rTuF.js → display-BrKWFGJz.js} +2 -2
  37. package/public/assets/{files-DhhZI2Ih.js → files-D6XEu8Ng.js} +2 -2
  38. package/public/assets/{fleet-B_rFEbnL.js → fleet-C7jQWbw2.js} +2 -2
  39. package/public/assets/{fleet-metrics-BkHP-P3R.js → fleet-metrics-BiDs3MLx.js} +2 -2
  40. package/public/assets/{formatted-body-Cm1RrzmN.js → formatted-body-CQBwc1fb.js} +3 -3
  41. package/public/assets/{formatted-body-impl-DQiOuOD1.js → formatted-body-impl-DyG0WsQS.js} +2 -2
  42. package/public/assets/{host-providers-dialog-CHqwXTov.js → host-providers-dialog-DKaW31dN.js} +2 -2
  43. package/public/assets/index-CRHep3M9.js +15 -0
  44. package/public/assets/index-MYAIwYTX.css +2 -0
  45. package/public/assets/{insights-fH1EL-qZ.js → insights-CzrtkpOE.js} +2 -2
  46. package/public/assets/{integrations-C5Oix6ng.js → integrations-aVsUmigt.js} +2 -2
  47. package/public/assets/{issue-ref-chip-ODyondIa.js → issue-ref-chip-BnSlM_95.js} +2 -2
  48. package/public/assets/{log-viewer-Cvfy6PW7.js → log-viewer-qe7Ee47Z.js} +2 -2
  49. package/public/assets/{maintenance-D8CDH5wZ.js → maintenance-NfjqFZAk.js} +2 -2
  50. package/public/assets/{managed-agents-egllbpij.js → managed-agents-BiH0HgaE.js} +2 -2
  51. package/public/assets/{markdown-preview-CYSFgVgK.js → markdown-preview-BixaT3Xr.js} +3 -3
  52. package/public/assets/{markdown-preview-impl-BteVIjX4.js → markdown-preview-impl-DNGlWIS3.js} +2 -2
  53. package/public/assets/{memory-C8WmXsyr.js → memory-DNsCl6UX.js} +2 -2
  54. package/public/assets/{messages-BzQdqlO6.js → messages-DopU1L1X.js} +2 -2
  55. package/public/assets/{orchestrators-B1HxzkNw.js → orchestrators-Cq7ckLQT.js} +2 -2
  56. package/public/assets/{overview-DCUnI4Z7.js → overview-C1DCTzzV.js} +2 -2
  57. package/public/assets/{pairs-ftCd2XcD.js → pairs-DE_m6rrE.js} +2 -2
  58. package/public/assets/{profile-icon-B2zH8DMH.js → profile-icon-B3rfh77F.js} +2 -2
  59. package/public/assets/project-profile-instructions-DQWZE0kA.js +2 -0
  60. package/public/assets/projects-Br2Bd2h1.js +2 -0
  61. package/public/assets/{prompt-settings-Bftq9czX.js → prompt-settings-BKvFsvGD.js} +2 -2
  62. package/public/assets/provider-display-DsuWMvVL.js +2 -0
  63. package/public/assets/{registry-DWCU5c8q.js → registry-Cw38_6gW.js} +2 -2
  64. package/public/assets/run-card-CpKqRbhg.js +2 -0
  65. package/public/assets/scroll-text-BKXS1ahr.js +2 -0
  66. package/public/assets/{secrets-C7GIUATz.js → secrets-DxI-vzSq.js} +2 -2
  67. package/public/assets/{service-access-settings-C3aujqTG.js → service-access-settings-D9s_VJbd.js} +2 -2
  68. package/public/assets/{settings-C6sZ9eBa.js → settings-CKZTVGIx.js} +2 -2
  69. package/public/assets/{shipping-Bu8p1gEw.js → shipping-B9YtnwtG.js} +2 -2
  70. package/public/assets/{stats-V9Z-GxUd.js → stats-DyUBKyWI.js} +2 -2
  71. package/public/assets/{status-dot-CVv0iGHL.js → status-dot-DYqlEUhJ.js} +2 -2
  72. package/public/assets/{store-BvtFdlGX.js → store-DcClXLH0.js} +3 -3
  73. package/public/assets/{tasks-CXU75HRF.js → tasks-Bh7Chr4-.js} +2 -2
  74. package/public/assets/{teams-BPf976zb.js → teams-bowI7qVY.js} +2 -2
  75. package/public/assets/{terminal-viewer-DE9BOe-8.js → terminal-viewer-BgVLHdsU.js} +3 -3
  76. package/public/assets/{terminal-viewer-impl-D04pjmGh.js → terminal-viewer-impl-Dz22UPy6.js} +2 -2
  77. package/public/assets/token-estimate-Co-Jdphh.js +2 -0
  78. package/public/assets/{use-agent-terminal-B1yR456R.js → use-agent-terminal-DSQQ-iY7.js} +2 -2
  79. package/public/assets/{use-decisions-D-S4tpDf.js → use-decisions-samMQhQf.js} +2 -2
  80. package/public/assets/use-project-list-59LheVP7.js +2 -0
  81. package/public/assets/{use-selectors-CnrAk2YP.js → use-selectors-BZa25xEB.js} +2 -2
  82. package/public/assets/{user-avatar-nBFIcR4M.js → user-avatar-DHxlvUvV.js} +2 -2
  83. package/public/assets/versioned-prompt-editor-BmED5DnJ.js +8 -0
  84. package/public/assets/{work-queue-TCjJxeT-.js → work-queue-CSvpuNLz.js} +2 -2
  85. package/public/assets/{workflow-marker-Cf3Hf2fN.js → workflow-marker-DAZcj5qt.js} +2 -2
  86. package/public/assets/{workflows-CXQX20Qj.js → workflows-DdmxRSyg.js} +2 -2
  87. package/public/assets/{workspaces-qSYzKYMA.js → workspaces-BxeKfVuF.js} +2 -2
  88. package/public/cosmos.html +4 -4
  89. package/public/index.html +31 -29
  90. package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
  91. package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +31 -1
  92. package/runner/src/adapters/claude-effort.ts +2 -4
  93. package/runner/src/adapters/codex-launch-config.ts +4 -5
  94. package/runner/src/adapters/codex.ts +1 -1
  95. package/runner/src/adapters/opencode-provider.ts +7 -22
  96. package/runner/src/adapters/opencode.ts +4 -4
  97. package/runner/src/agent-runner/credentials.ts +42 -12
  98. package/runner/src/agent-runner/inbox.ts +27 -0
  99. package/runner/src/agent-runner/lifecycle-milestones.ts +0 -2
  100. package/runner/src/bin/claude.ts +4 -0
  101. package/runner/src/bin/codex.ts +4 -0
  102. package/runner/src/bin/opencode.ts +4 -0
  103. package/runner/src/index.ts +5 -2
  104. package/runner/src/provider-setup.ts +34 -0
  105. package/runner/src/providers.ts +2 -1
  106. package/runner/src/runner-core.ts +18 -23
  107. package/runner/src/spawn-input.ts +2 -1
  108. package/runner/src/test-run-dedup.ts +59 -56
  109. package/scripts/cd-config.ts +8 -0
  110. package/scripts/gate-run-lease.ts +10 -7
  111. package/scripts/gate.sh +5 -1
  112. package/src/branch-land-notice.ts +93 -0
  113. package/src/branch-landed.ts +7 -76
  114. package/src/bus.ts +19 -20
  115. package/src/cd-deploy-notify.ts +30 -2
  116. package/src/cd-host-lag-notify.ts +7 -6
  117. package/src/ci/incidents.ts +2 -2
  118. package/src/ci/monitor.ts +5 -8
  119. package/src/ci/root-missing.ts +2 -7
  120. package/src/ci/transition-notify.ts +7 -39
  121. package/src/cli/cd-pauses.ts +19 -0
  122. package/src/cli/orchestrator.ts +1 -1
  123. package/src/cli/state.ts +2 -19
  124. package/src/cli/task-edit.ts +22 -0
  125. package/src/cli/task.ts +3 -1
  126. package/src/cli/workflow.ts +8 -2
  127. package/src/commands-db.ts +3 -3
  128. package/src/config-store-write.ts +13 -1
  129. package/src/config-store.ts +25 -14
  130. package/src/db/activity-async.ts +6 -1
  131. package/src/db/activity-write-ops.ts +12 -1
  132. package/src/db/activity.ts +1 -14
  133. package/src/db/agent-search.ts +1 -15
  134. package/src/db/agents-async.ts +52 -5
  135. package/src/db/agents-write-ops.ts +12 -3
  136. package/src/db/agents.ts +81 -54
  137. package/src/db/ci-incidents-async.ts +5 -5
  138. package/src/db/ci-incidents-write-ops.ts +2 -2
  139. package/src/db/command-row.ts +10 -2
  140. package/src/db/commands-list-query.ts +2 -0
  141. package/src/db/commands-spawn-read.ts +1 -1
  142. package/src/db/config-store-write-ops.ts +7 -2
  143. package/src/db/continuation-archives-async.ts +5 -0
  144. package/src/db/continuation-archives-write-ops.ts +7 -0
  145. package/src/db/continuations.ts +2 -2
  146. package/src/db/db-writer-worker.ts +8 -1
  147. package/src/db/deploy-events-async.ts +1 -0
  148. package/src/db/deploy-events-read-ops.ts +2 -1
  149. package/src/db/deploy-events.ts +35 -4
  150. package/src/db/hosts-registration.ts +10 -2
  151. package/src/db/hosts.ts +9 -6
  152. package/src/db/inbox.ts +0 -14
  153. package/src/db/index.ts +2 -0
  154. package/src/db/integrations-async.ts +8 -0
  155. package/src/db/integrations-ops.ts +15 -0
  156. package/src/db/integrations.ts +15 -21
  157. package/src/db/issue-lifecycle.ts +3 -4
  158. package/src/db/issue-refs-async.ts +20 -0
  159. package/src/db/issue-refs-write-ops.ts +29 -0
  160. package/src/db/issue-refs.ts +7 -8
  161. package/src/db/long-running-work.ts +2 -2
  162. package/src/db/main-connection-writes.ts +23 -2
  163. package/src/db/maintenance-job-reconcile.ts +61 -0
  164. package/src/db/maintenance-job-runs-async.ts +14 -0
  165. package/src/db/maintenance-job-write-ops.ts +9 -0
  166. package/src/db/mappers.ts +2 -14
  167. package/src/db/merge-lease.ts +1 -15
  168. package/src/db/migrations.ts +7 -15
  169. package/src/db/orchestrators.ts +4 -72
  170. package/src/db/pairs.ts +1 -13
  171. package/src/db/project-profile-instructions.ts +50 -0
  172. package/src/db/prompt-versions.ts +9 -2
  173. package/src/db/provider-config-history.ts +8 -3
  174. package/src/db/provider-model-seed.ts +34 -0
  175. package/src/db/read-op-marshaling-fixtures.ts +5 -0
  176. package/src/db/read-ops.ts +4 -0
  177. package/src/db/routing-policy.ts +2 -3
  178. package/src/db/schema.ts +9 -3
  179. package/src/db/spawn-delegation-state.ts +11 -4
  180. package/src/db/stats-async.ts +4 -3
  181. package/src/db/task-entity.ts +23 -2
  182. package/src/db/task-list.ts +3 -1
  183. package/src/db/tasks.ts +1 -17
  184. package/src/db/timer-ingress.ts +7 -1
  185. package/src/db/token-db-write-ops.ts +17 -0
  186. package/src/db/token-standing.ts +15 -11
  187. package/src/db/workflow-contact.ts +1 -1
  188. package/src/db/workflow-task-read-ops.ts +30 -0
  189. package/src/db/write-ops.ts +6 -0
  190. package/src/db/writer-gateway.ts +17 -11
  191. package/src/dispatch-availability.ts +10 -6
  192. package/src/ephemeral/{landing-ingress-proof-worker.ts → landing-ingress-proof.test-fixture.ts} +4 -2
  193. package/src/host/disk-alert.ts +121 -0
  194. package/src/lifecycle-manager.ts +3 -2
  195. package/src/maintenance/cd-watcher.ts +3 -3
  196. package/src/maintenance/critical-job-watchdog.ts +16 -17
  197. package/src/maintenance/index.ts +1 -0
  198. package/src/maintenance/jobs.ts +3 -2
  199. package/src/maintenance/scheduler.ts +84 -128
  200. package/src/maintenance/stalled-delivery-pager.ts +6 -5
  201. package/src/maintenance/workspaces.ts +1 -1
  202. package/src/managed-policy.ts +31 -27
  203. package/src/mcp/index.ts +5 -2
  204. package/src/mcp/output-descriptions.ts +8 -8
  205. package/src/mcp/presentation.ts +4 -4
  206. package/src/mcp/project-profile-instructions.ts +32 -0
  207. package/src/mcp/tool-groups.ts +1 -1
  208. package/src/mcp/tools-spawn.ts +4 -3
  209. package/src/mcp-agent-action.ts +1 -2
  210. package/src/mcp-issue-ref-tools.ts +12 -11
  211. package/src/mcp-maintenance-tools.ts +2 -2
  212. package/src/mcp-profile-trust-tools.ts +4 -4
  213. package/src/mcp-provider-catalog.ts +2 -2
  214. package/src/mcp-task-tools.ts +11 -5
  215. package/src/mcp-team-template-tools.ts +3 -3
  216. package/src/mcp-workflow-tools.ts +10 -3
  217. package/src/notification-types.ts +2 -1
  218. package/src/operator-alarm.ts +26 -11
  219. package/src/project-instructions.ts +4 -0
  220. package/src/project-profile-instruction-text.ts +6 -0
  221. package/src/project-profile-instructions.ts +20 -0
  222. package/src/provider-catalog-store.ts +3 -49
  223. package/src/provider-config-store.ts +12 -11
  224. package/src/provider-model-seed.ts +1 -18
  225. package/src/provider-quota-config-store.ts +5 -4
  226. package/src/provider-secrets.test-fixture.ts +3 -3
  227. package/src/recipe-runner.ts +2 -2
  228. package/src/repo-config-source.ts +10 -4
  229. package/src/routes/agent-profiles.ts +6 -6
  230. package/src/routes/agents-spawn.ts +1 -1
  231. package/src/routes/agents.ts +6 -6
  232. package/src/routes/commands-listing.ts +4 -0
  233. package/src/routes/commands.ts +2 -2
  234. package/src/routes/continuation-archives.ts +2 -2
  235. package/src/routes/index.ts +10 -1
  236. package/src/routes/integrations.ts +24 -50
  237. package/src/routes/issue-refs.ts +7 -7
  238. package/src/routes/orchestrator-bootstrap.ts +1 -1
  239. package/src/routes/orchestrator-host-registration.ts +2 -2
  240. package/src/routes/orchestrator-host-utilization.ts +3 -1
  241. package/src/routes/orchestrator-proxy.ts +2 -2
  242. package/src/routes/orchestrator.ts +2 -2
  243. package/src/routes/project-profile-instructions.ts +27 -0
  244. package/src/routes/project-trust.ts +2 -2
  245. package/src/routes/provider-config.ts +6 -6
  246. package/src/routes/provider-quota-config.ts +2 -2
  247. package/src/routes/settings.ts +5 -5
  248. package/src/routes/stats.ts +6 -6
  249. package/src/routes/task-http.ts +15 -1
  250. package/src/routes/task-issues.ts +11 -26
  251. package/src/routes/tasks.ts +22 -53
  252. package/src/routes/team-templates.ts +5 -5
  253. package/src/routes/teams-config.ts +2 -2
  254. package/src/routes/tokens.ts +12 -5
  255. package/src/routes/workflows.ts +20 -5
  256. package/src/routing-policy-normalize.ts +1 -2
  257. package/src/routing-step-defaults.ts +0 -2
  258. package/src/runner-token-mint-limit.ts +63 -0
  259. package/src/runtime-grant.ts +4 -2
  260. package/src/runtime-tokens.ts +39 -7
  261. package/src/security.ts +13 -20
  262. package/src/server-background.ts +1 -1
  263. package/src/server.ts +5 -2
  264. package/src/services/host-utilization.ts +23 -0
  265. package/src/services/idle-epics.ts +5 -6
  266. package/src/services/issue-lifecycle.ts +57 -61
  267. package/src/services/issue-refs.ts +9 -13
  268. package/src/services/kernel-timers-cutover-chaos-worker.ts +10 -7
  269. package/src/services/kernel-timers-ingress.ts +1 -1
  270. package/src/services/landed-ancestry.ts +19 -3
  271. package/src/services/memory-areas.ts +15 -51
  272. package/src/services/plan-ci-notice.ts +57 -0
  273. package/src/services/plan-ci-recovery.ts +2 -55
  274. package/src/services/plan-wake-digest.ts +1 -0
  275. package/src/services/profile-trust.ts +4 -3
  276. package/src/services/project-config-read.ts +70 -0
  277. package/src/services/project-profile-instructions.ts +54 -0
  278. package/src/services/provisioning-harness/budget-baseline.json +4 -4
  279. package/src/services/restart-spawn.ts +61 -49
  280. package/src/services/self-care-state.ts +2 -1
  281. package/src/services/self-effort.ts +5 -5
  282. package/src/services/send-message.ts +5 -1
  283. package/src/services/spawn-agent.ts +13 -2
  284. package/src/services/spawn-chain-inspector.ts +6 -13
  285. package/src/services/spawn-policy.ts +68 -0
  286. package/src/services/spawn-tree-cleanup.ts +2 -2
  287. package/src/services/task-dispatch.ts +3 -0
  288. package/src/services/task-state-reconcile.ts +6 -14
  289. package/src/services/team-templates.ts +9 -8
  290. package/src/services/transient-agent-reaper.ts +3 -1
  291. package/src/services/workflow-auto-start.ts +25 -13
  292. package/src/services/workflow-ci-main.ts +1 -1
  293. package/src/services/workflow-deferred-cleanup.ts +4 -2
  294. package/src/services/workflow-effect-driver.ts +2 -0
  295. package/src/services/workflow-effects.ts +18 -11
  296. package/src/services/workflow-land-notice.ts +10 -0
  297. package/src/services/workflow-pause-text.ts +43 -0
  298. package/src/services/workflow-reconcile.ts +13 -11
  299. package/src/services/workflow-run-view.ts +2 -0
  300. package/src/services/workflow-runs.ts +29 -13
  301. package/src/services/workflow-supervisor-state.ts +5 -0
  302. package/src/services/workflow-supervisor.ts +7 -3
  303. package/src/settings/registry.ts +1 -2
  304. package/src/spawn-command.ts +4 -4
  305. package/src/spawn-models.ts +10 -12
  306. package/src/spawn-placement.ts +1 -1
  307. package/src/spawn-targets.ts +1 -1
  308. package/src/startup-context-injection.ts +1 -0
  309. package/src/state-adoption/cd-cutover.ts +53 -7
  310. package/src/state-adoption/fleet-cutover.ts +35 -0
  311. package/src/state-adoption/fleet-plan.ts +36 -0
  312. package/src/state-adoption/index.ts +2 -2
  313. package/src/state-adoption/linux-plan.ts +2 -2
  314. package/src/state-adoption/linux.ts +2 -2
  315. package/src/state-adoption/macos-plan.ts +2 -2
  316. package/src/state-adoption/macos.ts +1 -1
  317. package/src/steward.ts +7 -6
  318. package/src/task-dispatch-live.ts +1 -1
  319. package/src/task-dispatcher.ts +1 -1
  320. package/src/teams-config-store.ts +4 -3
  321. package/src/token-db-write.ts +10 -0
  322. package/src/workspace-command-settle.ts +2 -1
  323. package/src/workspace-steward-wake.ts +2 -2
  324. package/node_modules/@humwick/kernel/LICENSE +0 -167
  325. package/node_modules/@humwick/kernel/async-entity-persistence.ts +0 -344
  326. package/node_modules/@humwick/kernel/async-event-log.ts +0 -107
  327. package/node_modules/@humwick/kernel/automations.pilot.ts +0 -147
  328. package/node_modules/@humwick/kernel/config.ts +0 -111
  329. package/node_modules/@humwick/kernel/contract.ts +0 -572
  330. package/node_modules/@humwick/kernel/control-authz.ts +0 -281
  331. package/node_modules/@humwick/kernel/control.ts +0 -645
  332. package/node_modules/@humwick/kernel/effects.ts +0 -493
  333. package/node_modules/@humwick/kernel/event-log.ts +0 -319
  334. package/node_modules/@humwick/kernel/http-transport.ts +0 -384
  335. package/node_modules/@humwick/kernel/identity-grammar.ts +0 -20
  336. package/node_modules/@humwick/kernel/identity.ts +0 -248
  337. package/node_modules/@humwick/kernel/index.ts +0 -28
  338. package/node_modules/@humwick/kernel/kernel-persistence.ts +0 -181
  339. package/node_modules/@humwick/kernel/landing-incident.ts +0 -306
  340. package/node_modules/@humwick/kernel/landing.ts +0 -953
  341. package/node_modules/@humwick/kernel/manifest-validation.ts +0 -460
  342. package/node_modules/@humwick/kernel/mcp-transport.ts +0 -109
  343. package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +0 -200
  344. package/node_modules/@humwick/kernel/message-authority.ts +0 -281
  345. package/node_modules/@humwick/kernel/module-host.ts +0 -722
  346. package/node_modules/@humwick/kernel/openapi-init.ts +0 -14
  347. package/node_modules/@humwick/kernel/package.json +0 -39
  348. package/node_modules/@humwick/kernel/persistence-schema.ts +0 -248
  349. package/node_modules/@humwick/kernel/persistence.ts +0 -510
  350. package/node_modules/@humwick/kernel/registry.ts +0 -60
  351. package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +0 -499
  352. package/node_modules/@humwick/kernel/sqlite-module-host.ts +0 -87
  353. package/node_modules/@humwick/kernel/timers-chaos-worker.ts +0 -186
  354. package/node_modules/@humwick/kernel/timers.pilot.ts +0 -1411
  355. package/node_modules/@humwick/kernel/workflow-activation.ts +0 -25
  356. package/node_modules/@humwick/kernel/workflow-backstop.ts +0 -40
  357. package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +0 -20
  358. package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +0 -213
  359. package/node_modules/@humwick/kernel/workflow-composition.ts +0 -231
  360. package/node_modules/@humwick/kernel/workflow-container.ts +0 -72
  361. package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +0 -42
  362. package/node_modules/@humwick/kernel/workflow-control.ts +0 -178
  363. package/node_modules/@humwick/kernel/workflow-definition.ts +0 -507
  364. package/node_modules/@humwick/kernel/workflow-dispatch.ts +0 -60
  365. package/node_modules/@humwick/kernel/workflow-foreach.ts +0 -167
  366. package/node_modules/@humwick/kernel/workflow-journal-codec.ts +0 -339
  367. package/node_modules/@humwick/kernel/workflow-journal.ts +0 -922
  368. package/node_modules/@humwick/kernel/workflow-lane.ts +0 -48
  369. package/node_modules/@humwick/kernel/workflow-lease-owner.ts +0 -60
  370. package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +0 -19
  371. package/node_modules/@humwick/kernel/workflow-runtime.ts +0 -938
  372. package/node_modules/@humwick/kernel/workflow-script.ts +0 -11
  373. package/node_modules/@humwick/kernel/workflow-state.ts +0 -299
  374. package/node_modules/@humwick/kernel/workflow-step-commit.ts +0 -195
  375. package/node_modules/@humwick/kernel/workflow-transitions.ts +0 -317
  376. package/node_modules/@humwick/kernel/workflow-values.ts +0 -153
  377. package/node_modules/@humwick/kernel/workflow.pilot.ts +0 -376
  378. package/node_modules/@humwick/offload/LICENSE +0 -167
  379. package/node_modules/@humwick/offload/README.md +0 -57
  380. package/node_modules/@humwick/offload/dist/async-runner.d.ts +0 -18
  381. package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +0 -1
  382. package/node_modules/@humwick/offload/dist/async-runner.js +0 -158
  383. package/node_modules/@humwick/offload/dist/async-runner.js.map +0 -1
  384. package/node_modules/@humwick/offload/dist/envelope.d.ts +0 -25
  385. package/node_modules/@humwick/offload/dist/envelope.d.ts.map +0 -1
  386. package/node_modules/@humwick/offload/dist/envelope.js +0 -80
  387. package/node_modules/@humwick/offload/dist/envelope.js.map +0 -1
  388. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +0 -10
  389. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +0 -1
  390. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +0 -59
  391. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +0 -1
  392. package/node_modules/@humwick/offload/dist/index.d.ts +0 -5
  393. package/node_modules/@humwick/offload/dist/index.d.ts.map +0 -1
  394. package/node_modules/@humwick/offload/dist/index.js +0 -5
  395. package/node_modules/@humwick/offload/dist/index.js.map +0 -1
  396. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +0 -62
  397. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +0 -1
  398. package/node_modules/@humwick/offload/dist/subprocess-runner.js +0 -295
  399. package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +0 -1
  400. package/node_modules/@humwick/offload/dist/types.d.ts +0 -111
  401. package/node_modules/@humwick/offload/dist/types.d.ts.map +0 -1
  402. package/node_modules/@humwick/offload/dist/types.js +0 -176
  403. package/node_modules/@humwick/offload/dist/types.js.map +0 -1
  404. package/node_modules/@humwick/offload/dist/worker-pool.d.ts +0 -23
  405. package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +0 -1
  406. package/node_modules/@humwick/offload/dist/worker-pool.js +0 -435
  407. package/node_modules/@humwick/offload/dist/worker-pool.js.map +0 -1
  408. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +0 -2
  409. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +0 -1
  410. package/node_modules/@humwick/offload/dist/worker-runtime.js +0 -27
  411. package/node_modules/@humwick/offload/dist/worker-runtime.js.map +0 -1
  412. package/node_modules/@humwick/offload/dist/worker.d.ts +0 -5
  413. package/node_modules/@humwick/offload/dist/worker.d.ts.map +0 -1
  414. package/node_modules/@humwick/offload/dist/worker.js +0 -1
  415. package/node_modules/@humwick/offload/dist/worker.js.map +0 -1
  416. package/node_modules/@humwick/offload/package.json +0 -42
  417. package/node_modules/@humwick/offload/src/async-runner.ts +0 -170
  418. package/node_modules/@humwick/offload/src/envelope.ts +0 -92
  419. package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +0 -49
  420. package/node_modules/@humwick/offload/src/index.ts +0 -4
  421. package/node_modules/@humwick/offload/src/subprocess-runner.ts +0 -334
  422. package/node_modules/@humwick/offload/src/types.ts +0 -235
  423. package/node_modules/@humwick/offload/src/worker-pool.ts +0 -463
  424. package/node_modules/@humwick/offload/src/worker-runtime.ts +0 -32
  425. package/node_modules/@humwick/offload/src/worker.ts +0 -5
  426. package/public/assets/agent-liveness-DyqxfB-t.js +0 -2
  427. package/public/assets/agent-profiles-BpI_jTxq.js +0 -2
  428. package/public/assets/index-B7ZerHLY.css +0 -2
  429. package/public/assets/index-BU3uWo2t.js +0 -15
  430. package/public/assets/projects-B_lmcqfO.js +0 -2
  431. package/public/assets/provider-display-DbLWpP3j.js +0 -2
  432. package/public/assets/run-card-CO_bguQf.js +0 -2
  433. package/public/assets/use-project-list-B-T2Bnnn.js +0 -2
  434. package/public/assets/versioned-prompt-editor-Diu8BIaM.js +0 -8
  435. package/runner/src/gate-run-lease-probe.ts +0 -38
  436. package/src/db/claude-catalog-reconcile.ts +0 -27
  437. package/src/routing-model-aliases.ts +0 -21
@@ -1,435 +0,0 @@
1
- import { beginRun, errorForExit, finishLog, recordResult, startLog } from "./envelope.js";
2
- import { OffloadError, StrikeCounter, normalizeError, validateTimeout } from "./types.js";
3
- // For a RETRY-SAFE job (env.retrySafe), a worker death with the job in flight is absorbed by
4
- // re-dispatching to a fresh worker up to this many times. Reaching the limit means the job's OWN
5
- // execution repeatedly killed the worker (a real fault), so it is then charged and still
6
- // escalates. A non-retry-safe (default) job is never re-dispatched — it runs at most once
7
- // (#1822 HIGH-1). See onWorkerDeath.
8
- const MAX_JOB_REDISPATCHES = 2;
9
- /**
10
- * Fixed native Bun Worker pool. A deadline or abort replaces the whole worker because
11
- * CPU-bound synchronous code cannot observe a cancellation message while it is busy.
12
- */
13
- export function createWorkerPool(options) {
14
- const size = options.size ?? Math.max(1, (navigator.hardwareConcurrency || 2) - 1);
15
- if (!Number.isSafeInteger(size) || size < 1)
16
- throw new RangeError("size must be a positive integer");
17
- const workerModule = options.worker instanceof URL ? options.worker.href : options.worker;
18
- const slots = [];
19
- const queued = [];
20
- const counter = new StrikeCounter(options.escalationThreshold, options.escalationWindowAttempts);
21
- let nextId = 1;
22
- let destroyed = false;
23
- let destroyPromise;
24
- let dispatching = false;
25
- let compactionScheduled = false;
26
- let cancelledQueued = 0;
27
- const createSlot = () => {
28
- const slot = { worker: undefined, generation: 0, replacing: false };
29
- spawnInto(slot);
30
- return slot;
31
- };
32
- // A worker that dies while idle (OOM kill, external SIGKILL, a crash between jobs) leaves a
33
- // dead handle in the slot. Respawn it so the next run() gets a live worker; nobody is charged
34
- // because no job was running (#1822 item 2). There is deliberately NO revival breaker: a tight
35
- // spawn-death loop would require the worker BOOTSTRAP itself to fail to load repeatedly, which
36
- // cannot happen through the public API (the bootstrap is this package's own module), so a
37
- // breaker for it is disproportionate surface (#1822 F3 — simplified). A job that races this
38
- // revival is protected by re-dispatch (onWorkerDeath), never by counting idle deaths.
39
- const reviveIdle = (slot) => {
40
- if (destroyed || slot.replacing)
41
- return;
42
- void replace(slot);
43
- };
44
- const spawnInto = (slot) => {
45
- if (destroyed)
46
- return;
47
- const generation = ++slot.generation;
48
- // `.js` is intentional: package consumers execute the compiled dist asset. Bun maps this
49
- // to the sibling TypeScript source while running the workspace directly in development.
50
- const worker = new Worker(new URL("./worker-runtime.js", import.meta.url), { type: "module" });
51
- slot.worker = worker;
52
- worker.onmessage = (event) => {
53
- if (slot.generation !== generation)
54
- return;
55
- const active = slot.active;
56
- if (!active || active.id !== event.data.id)
57
- return;
58
- if (event.data.ok)
59
- settle(slot, active, undefined, event.data.value);
60
- else
61
- settle(slot, active, new OffloadError({
62
- kind: "worker-error", taskName: active.taskName, code: event.data.error?.code, message: event.data.error?.message ?? "Worker task failed",
63
- }));
64
- };
65
- worker.onerror = (event) => {
66
- if (slot.generation !== generation)
67
- return;
68
- const active = slot.active;
69
- if (!active) {
70
- reviveIdle(slot);
71
- return;
72
- }
73
- // An uncaught error is by definition an abnormal termination attributable to the running job.
74
- onWorkerDeath(slot, active, new OffloadError({ kind: "worker-error", taskName: active.taskName, message: event.message || "Worker errored", cause: event.error }), true);
75
- };
76
- // Bun reports process.exit(), OOM, and hard crashes through `close` without an `error` event.
77
- // Reclaiming the slot here is essential when a caller omitted a timeout — and when the slot is
78
- // idle, so a later run() never inherits the dead worker (#1822 item 2). The close event carries
79
- // the exit `code`: 0 is a clean exit the worker CHOSE (not the job's fault); anything else is an
80
- // abnormal termination attributable to the in-flight job (#1822 MED-4). A missing code is
81
- // treated as abnormal — the safe default is to preserve escalation, not to drop it.
82
- worker.addEventListener("close", (event) => {
83
- if (slot.generation !== generation)
84
- return;
85
- const active = slot.active;
86
- if (!active) {
87
- reviveIdle(slot);
88
- return;
89
- }
90
- const code = event.code;
91
- const clean = code === 0;
92
- onWorkerDeath(slot, active, errorForExit(active.taskName, clean ? undefined : String(code)), !clean);
93
- });
94
- };
95
- const settle = (slot, active, error, value) => {
96
- if (active.settled)
97
- return;
98
- active.settled = true;
99
- active.context.cleanup();
100
- active.removeAbort();
101
- slot.active = undefined;
102
- const labels = active.env?.labels ?? {};
103
- const logger = active.env?.logger ?? options.logger;
104
- finishLog(logger, "worker", active.taskName, labels, active.startedAt, error);
105
- void recordResult({
106
- counter, taskName: active.taskName, backend: "worker", labels, error,
107
- sink: active.env?.onEscalate ?? options.onEscalate, logger,
108
- });
109
- if (error)
110
- active.reject(error);
111
- else
112
- active.resolve(value);
113
- dispatch();
114
- };
115
- // `error` is omitted only when reviving an idle slot: with no active job there is nothing to
116
- // settle and nobody to charge, so the slot is simply respawned (#1822 item 2).
117
- const replace = async (slot, error) => {
118
- if (slot.replacing)
119
- return;
120
- slot.replacing = true;
121
- const active = slot.active;
122
- if (active && error)
123
- settle(slot, active, error);
124
- const old = slot.worker;
125
- slot.generation += 1;
126
- try {
127
- await old.terminate();
128
- }
129
- catch { /* worker is already gone */ }
130
- if (!destroyed) {
131
- spawnInto(slot);
132
- slot.replacing = false;
133
- dispatch();
134
- }
135
- };
136
- /** Fails exactly one job without touching the slot it was about to occupy. */
137
- const failJob = (job, error) => {
138
- // Every terminal path must be visible in the structured stream, including the ones that
139
- // never reached startLog — otherwise the failure that used to wedge the pool is silent.
140
- finishLog(job.env?.logger ?? options.logger, "worker", job.taskName, job.env?.labels ?? {}, performance.now(), error);
141
- job.reject(error);
142
- void recordResult({
143
- counter, taskName: job.taskName, backend: "worker", labels: job.env?.labels ?? {}, error,
144
- sink: job.env?.onEscalate ?? options.onEscalate, logger: job.env?.logger ?? options.logger,
145
- });
146
- };
147
- // Attaches the while-queued abort wiring and enqueues a job. Shared by run() and redispatch()
148
- // so a re-dispatched job re-arms its abort handling exactly like a fresh one. `front` puts an
149
- // innocent, re-dispatched job ahead of newer work so its retry is prompt.
150
- const enqueue = (job, front = false) => {
151
- const labels = job.env?.labels ?? {};
152
- const logger = job.env?.logger ?? options.logger;
153
- const signal = job.env?.signal;
154
- if (signal?.aborted) {
155
- const error = new OffloadError({ kind: "aborted", taskName: job.taskName, message: `${job.taskName} was aborted`, cause: signal.reason });
156
- finishLog(logger, "worker", job.taskName, labels, performance.now(), error);
157
- job.reject(error);
158
- return;
159
- }
160
- if (signal) {
161
- // Without this, a job aborted while queued waits for a slot to free before it is
162
- // rejected — unbounded when the occupying worker has no deadline (#1809 P1-8).
163
- const onQueuedAbort = () => {
164
- if (job.cancelled)
165
- return;
166
- job.cancelled = true;
167
- cancelledQueued += 1;
168
- scheduleCompaction();
169
- const error = new OffloadError({ kind: "aborted", taskName: job.taskName, message: `${job.taskName} was aborted`, cause: signal.reason });
170
- // An abort that lands mid-run logs `offload failed kind=aborted`; one that lands
171
- // while queued must not be the single asymmetric case that logs nothing.
172
- finishLog(logger, "worker", job.taskName, labels, performance.now(), error);
173
- job.reject(error);
174
- };
175
- signal.addEventListener("abort", onQueuedAbort, { once: true });
176
- job.releaseQueued = () => signal.removeEventListener("abort", onQueuedAbort);
177
- }
178
- if (front)
179
- queued.unshift(job);
180
- else
181
- queued.push(job);
182
- dispatch();
183
- };
184
- // Fails a job WITHOUT charging a strike, for a death that is not attributable to the job's own
185
- // execution (an idle-death race — the job never ran). Still logged so the stream is complete.
186
- const failJobUncharged = (job, error) => {
187
- finishLog(job.env?.logger ?? options.logger, "worker", job.taskName, job.env?.labels ?? {}, performance.now(), error);
188
- job.reject(error);
189
- };
190
- // A worker died with `active` still in flight and unsettled. Two axes decide the outcome:
191
- // - RE-RUN? Only a retry-safe (idempotent) job may re-run, and only while it has retries left.
192
- // A default job runs AT MOST ONCE, so it is never re-dispatched (#1822 HIGH-1) — re-running
193
- // a side-effecting job would repeat its effect. A retry-safe job re-dispatches on ANY death
194
- // (clean or abnormal) while retries remain, since re-running it is safe by construction.
195
- // - CHARGE? Only when the death is ATTRIBUTABLE to the job's own execution, decided from the
196
- // worker's EXIT MANNER observed by the pool: an abnormal termination (non-zero exit, signal,
197
- // or uncaught error) with this job in flight is charged; a clean exit (code 0 — the worker
198
- // chose to stop) or a job that never reached a worker (postMessage threw) is an idle-race /
199
- // infra event, not a task fault, and is rejected WITHOUT a strike. Exit manner is used instead
200
- // of a worker-sent execution-start frame precisely because that frame can be LOST when a hard
201
- // crash races it, which would let a job that reliably crashes its worker escape escalation
202
- // forever (#1822 MED-4). `attributable` already covers retry-exhaustion: a retry-safe job that
203
- // crashes every worker exhausts its retries on an abnormal death, so that final death charges.
204
- const onWorkerDeath = (slot, active, error, attributable) => {
205
- const retrySafe = active.retrySafe;
206
- if (retrySafe && active.redispatches < MAX_JOB_REDISPATCHES) {
207
- redispatch(slot, active);
208
- return;
209
- }
210
- if (attributable) {
211
- // `replace` settles the still-attached active job with the error, charging it once.
212
- void replace(slot, error);
213
- return;
214
- }
215
- // Clean exit / never executed → do not charge. Detach, respawn a fresh worker, reject the caller.
216
- slot.active = undefined;
217
- active.removeAbort();
218
- active.context.cleanup();
219
- void replace(slot);
220
- failJobUncharged(active, error);
221
- };
222
- // Detaches a retry-safe job from a dead slot, respawns a fresh worker there, and re-queues the
223
- // SAME caller promise so an idempotent job that raced a worker death runs cleanly. The absolute
224
- // deadline is carried on the job, so the retry continues the original deadline (#1822 MED-2).
225
- const redispatch = (slot, active) => {
226
- slot.active = undefined;
227
- active.removeAbort();
228
- active.context.cleanup();
229
- const job = {
230
- id: active.id, taskName: active.taskName, input: active.input, env: active.env,
231
- retrySafe: active.retrySafe, timeoutMs: active.timeoutMs,
232
- cancelled: false, redispatches: active.redispatches + 1, deadlineAt: active.deadlineAt,
233
- releaseQueued: () => { }, resolve: active.resolve, reject: active.reject,
234
- };
235
- // Respawn FIRST so the slot is marked `replacing` synchronously and dispatch cannot hand the
236
- // re-queued job straight back to the same corpse; replace()'s own dispatch then serves it.
237
- void replace(slot);
238
- enqueue(job, true);
239
- };
240
- const start = (slot, job) => {
241
- job.releaseQueued();
242
- let context;
243
- let removeAbort;
244
- try {
245
- // Fix the deadline at the FIRST execution and carry it, so a retry-safe re-dispatch
246
- // continues the original deadline rather than restarting the full timeout (#1822 MED-2).
247
- // The budget comes from the SUBMISSION-TIME snapshot (`job.timeoutMs`), never from the
248
- // mutable envelope, so a caller cannot erase or add a deadline after submission (#1822 MED).
249
- const baseTimeoutMs = job.timeoutMs;
250
- let effectiveTimeoutMs = baseTimeoutMs;
251
- if (baseTimeoutMs !== undefined) {
252
- if (job.deadlineAt === undefined)
253
- job.deadlineAt = performance.now() + baseTimeoutMs;
254
- const remaining = job.deadlineAt - performance.now();
255
- if (remaining <= 0) {
256
- // The absolute deadline set on the first execution has already elapsed. A re-dispatch
257
- // must NOT be granted a fresh run past it (the old `Math.max(1, …)` handed out a 1ms
258
- // execution AFTER expiry — #1822 MED). A genuine timeout is attributable, so charge it.
259
- failJob(job, new OffloadError({ kind: "timeout", taskName: job.taskName, message: `${job.taskName} timed out after ${baseTimeoutMs}ms` }));
260
- return;
261
- }
262
- effectiveTimeoutMs = remaining;
263
- }
264
- // Pass the ALREADY-RESOLVED timeout as the authoritative override, so beginRun installs
265
- // exactly it and re-reads neither the envelope NOR the mutable pool default at dispatch —
266
- // a post-submission mutation of either cannot add or erase this job's deadline (#1822 MED).
267
- // `null` (not `undefined`) carries "no deadline" so beginRun does not mistake it for "no
268
- // argument" and fall back to the default. The live envelope is still passed for its signal.
269
- context = beginRun(job.taskName, job.env, options, undefined, effectiveTimeoutMs ?? null);
270
- if (context.signal.aborted) {
271
- const error = context.abortError();
272
- context.cleanup();
273
- failJob(job, error);
274
- return;
275
- }
276
- const run = context;
277
- const onAbort = () => { void replace(slot, run.abortError()); };
278
- run.signal.addEventListener("abort", onAbort, { once: true });
279
- removeAbort = () => run.signal.removeEventListener("abort", onAbort);
280
- const active = {
281
- ...job, context: run, removeAbort, settled: false,
282
- startedAt: startLog(job.env?.logger ?? options.logger, "worker", job.taskName, job.env?.labels ?? {}),
283
- };
284
- slot.active = active;
285
- try {
286
- slot.worker.postMessage({ id: job.id, taskName: job.taskName, input: job.input, worker: workerModule });
287
- }
288
- catch (error) {
289
- // postMessage throws when the worker died between dispatch and here (an idle-death race):
290
- // the job never reached a worker, so it is NOT attributable — re-dispatch it (retrySafe)
291
- // or reject it uncharged rather than charge it for a death it did not cause (#1822 F2).
292
- onWorkerDeath(slot, active, normalizeError(job.taskName, error, "worker-error"), false);
293
- }
294
- }
295
- catch (error) {
296
- // Anything that throws while starting (an invalid deadline, a hostile logger) must fail
297
- // ONLY this job. Letting it escape leaves the slot idle with the queue stuck (#1809 P0-1),
298
- // and the caller must still see an OffloadError rather than the raw RangeError.
299
- removeAbort?.();
300
- context?.cleanup();
301
- if (slot.active?.id === job.id)
302
- slot.active = undefined;
303
- failJob(job, normalizeError(job.taskName, error, "rejected"));
304
- }
305
- };
306
- /**
307
- * Iterative on purpose: the previous version recursed through `start()` for every
308
- * pre-aborted job, so a mass abort over a deep queue blew the stack (#1809 P0-2).
309
- * The guard makes the nested `dispatch()` calls on the settle path no-ops — the loop
310
- * below re-reads slot and queue state on every turn, so no wakeup is lost.
311
- */
312
- const dispatch = () => {
313
- if (destroyed || dispatching)
314
- return;
315
- dispatching = true;
316
- try {
317
- while (!destroyed && queued.length) {
318
- const job = queued[0];
319
- if (job.cancelled) {
320
- queued.shift();
321
- cancelledQueued -= 1;
322
- continue;
323
- }
324
- const slot = slots.find((candidate) => !candidate.active && !candidate.replacing);
325
- if (!slot)
326
- break;
327
- queued.shift();
328
- start(slot, job);
329
- }
330
- }
331
- finally {
332
- dispatching = false;
333
- }
334
- };
335
- /**
336
- * A mass abort marks jobs in place — splicing each one out would be quadratic over a
337
- * deep queue — so the dead entries are swept once per batch instead.
338
- */
339
- const scheduleCompaction = () => {
340
- if (compactionScheduled)
341
- return;
342
- compactionScheduled = true;
343
- queueMicrotask(() => {
344
- compactionScheduled = false;
345
- if (cancelledQueued <= 0)
346
- return;
347
- const kept = queued.filter((job) => !job.cancelled);
348
- queued.length = 0;
349
- for (const job of kept)
350
- queued.push(job);
351
- cancelledQueued = 0;
352
- });
353
- };
354
- for (let index = 0; index < size; index += 1)
355
- slots.push(createSlot());
356
- return {
357
- offThread: true,
358
- get stats() {
359
- const busy = slots.filter((slot) => slot.active).length;
360
- return { busy, idle: slots.length - busy, queued: queued.length - cancelledQueued };
361
- },
362
- run(taskName, input, env) {
363
- const labels = env?.labels ?? {};
364
- const logger = env?.logger ?? options.logger;
365
- // Rejecting before the run ever starts is still a terminal outcome, so it gets the same
366
- // one line in the structured stream that every other settle path emits.
367
- const rejectBeforeStart = (error) => {
368
- finishLog(logger, "worker", taskName, labels, performance.now(), error);
369
- return Promise.reject(error);
370
- };
371
- if (destroyed)
372
- return rejectBeforeStart(new OffloadError({ kind: "worker-exit", taskName, message: "Worker pool has been destroyed" }));
373
- // Validated here rather than at dispatch so an invalid deadline fails the caller fast,
374
- // with the OffloadError every backend promises, even when a slot is free (#1809 P0-1). The
375
- // validated value is SNAPSHOTTED onto the job so the deadline it drives is fixed at
376
- // submission and immune to a later envelope mutation (#1822 MED).
377
- let timeoutMs;
378
- try {
379
- timeoutMs = validateTimeout(env?.timeoutMs ?? options.defaultTimeoutMs);
380
- }
381
- catch (error) {
382
- const normalized = normalizeError(taskName, error, "rejected");
383
- // Counted as a strike like the other two backends do for the same input: an invalid
384
- // deadline is a genuine caller failure, not a cancellation.
385
- void recordResult({ counter, taskName, backend: "worker", labels, error: normalized, sink: env?.onEscalate ?? options.onEscalate, logger });
386
- return rejectBeforeStart(normalized);
387
- }
388
- // `retrySafe` is snapshotted here too, for the same reason (#1822 HIGH): the pool must decide
389
- // re-dispatch from the caller's intent AT SUBMISSION, not from whatever `env` holds when a
390
- // worker later dies.
391
- const retrySafe = env?.retrySafe === true;
392
- return new Promise((resolve, reject) => {
393
- const job = { id: nextId++, taskName, input, env, retrySafe, timeoutMs, cancelled: false, redispatches: 0, releaseQueued: () => { }, resolve, reject };
394
- enqueue(job);
395
- });
396
- },
397
- destroy() {
398
- if (destroyPromise)
399
- return destroyPromise;
400
- destroyed = true;
401
- // The split below is INTENTIONAL — do not unify the two.
402
- // Cancelled-at-destroy is `aborted`, matching what the async and subprocess runners
403
- // already report for teardown: only `aborted` is strike-exempt, so anything else
404
- // charges a strike per in-flight job and a pool sitting at its threshold false-pages
405
- // on the orderly shutdown every adopter runs. A `run()` arriving AFTER destroy() is a
406
- // different event — caller misuse against a dead pool — and deliberately keeps its own
407
- // distinguishable `worker-exit` kind.
408
- const error = (taskName) => new OffloadError({ kind: "aborted", taskName, message: `${taskName} was cancelled: worker pool destroyed` });
409
- while (queued.length) {
410
- const job = queued.shift();
411
- if (!job)
412
- continue;
413
- job.releaseQueued();
414
- if (job.cancelled)
415
- continue;
416
- const cancellation = error(job.taskName);
417
- finishLog(job.env?.logger ?? options.logger, "worker", job.taskName, job.env?.labels ?? {}, performance.now(), cancellation);
418
- job.reject(cancellation);
419
- }
420
- cancelledQueued = 0;
421
- const workers = slots.map(async (slot) => {
422
- if (slot.active)
423
- settle(slot, slot.active, error(slot.active.taskName));
424
- slot.generation += 1;
425
- try {
426
- await slot.worker.terminate();
427
- }
428
- catch { /* already stopped */ }
429
- });
430
- destroyPromise = Promise.all(workers).then(() => undefined);
431
- return destroyPromise;
432
- },
433
- };
434
- }
435
- //# sourceMappingURL=worker-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worker-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- function serialize(error) {
2
- const value = error;
3
- return {
4
- name: typeof value?.name === "string" ? value.name : "Error",
5
- message: typeof value?.message === "string" ? value.message : String(error),
6
- code: typeof value?.code === "string" ? value.code : undefined,
7
- stack: typeof value?.stack === "string" ? value.stack : undefined,
8
- };
9
- }
10
- self.onmessage = async (event) => {
11
- const { id, taskName, input, worker } = event.data;
12
- try {
13
- const module = await import(worker);
14
- if (typeof module.default !== "function")
15
- throw new TypeError(`Worker module ${worker} must default-export a task function`);
16
- // No execution-start handshake is sent: the pool attributes a later worker death from the
17
- // worker's EXIT MANNER (a clean exit vs an abnormal/crash termination it observes on the exit
18
- // event), which cannot be lost the way an in-band frame can when a hard crash races it (#1822
19
- // MED-4). See onWorkerDeath in worker-pool.ts.
20
- const value = await module.default(input, { taskName });
21
- self.postMessage({ id, ok: true, value });
22
- }
23
- catch (error) {
24
- self.postMessage({ id, ok: false, error: serialize(error) });
25
- }
26
- };
27
- //# sourceMappingURL=worker-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":"AAOA,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,KAAK,GAAG,KAA+E,CAAC;IAC9F,OAAO;QACL,IAAI,EAAE,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QAC5D,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3E,IAAI,EAAE,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC9D,KAAK,EAAE,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,KAAgC,EAAE,EAAE;IAC1D,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAA6B,CAAC;QAChE,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,MAAM,sCAAsC,CAAC,CAAC;QAC7H,0FAA0F;QAC1F,8FAA8F;QAC9F,8FAA8F;QAC9F,+CAA+C;QAC/C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- /** Types for modules consumed by `createWorkerPool`; default-export this function. */
2
- export type OffloadWorkerTask<In = unknown, Out = unknown> = (input: In, context: {
3
- taskName: string;
4
- }) => Out | Promise<Out>;
5
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,CAC3D,KAAK,EAAE,EAAE,EACT,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAC1B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":""}
@@ -1,42 +0,0 @@
1
- {
2
- "name": "@humwick/offload",
3
- "version": "0.0.0",
4
- "description": "Bounded off-loop execution primitives for Humwick",
5
- "type": "module",
6
- "license": "PolyForm-Shield-1.0.0",
7
- "author": "Edin Mujkanovic",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/edimuj/agent-relay.git",
11
- "directory": "offload"
12
- },
13
- "main": "./dist/index.js",
14
- "types": "./dist/index.d.ts",
15
- "exports": {
16
- ".": {
17
- "types": "./dist/index.d.ts",
18
- "import": "./dist/index.js"
19
- },
20
- "./worker": {
21
- "types": "./dist/worker.d.ts",
22
- "import": "./dist/worker.js"
23
- }
24
- },
25
- "files": [
26
- "dist",
27
- "src",
28
- "!src/**/*.test.ts",
29
- "LICENSE"
30
- ],
31
- "scripts": {
32
- "build": "tsc -p tsconfig.build.json",
33
- "prepack": "bun run build"
34
- },
35
- "devDependencies": {
36
- "@types/bun": "1.4.2",
37
- "typescript": "7.0.2"
38
- },
39
- "engines": {
40
- "bun": ">=1.4.4"
41
- }
42
- }