@osolmaz/pi-workflows 0.16.1 → 0.16.3

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 (327) hide show
  1. package/README.md +41 -41
  2. package/dist/builtins/monitor.workflow.d.ts +1 -1
  3. package/dist/builtins/monitor.workflow.js +8 -8
  4. package/dist/builtins/pi-agent-group.js +3 -3
  5. package/dist/builtins/pi-agent-group.js.map +1 -1
  6. package/dist/channels/adapter-entry.js +14 -14
  7. package/dist/channels/adapter-entry.js.map +1 -1
  8. package/dist/client/client.d.ts +6 -6
  9. package/dist/client/client.js +27 -27
  10. package/dist/client/client.js.map +1 -1
  11. package/dist/client/protocol.d.ts +4 -1
  12. package/dist/client/protocol.js +17 -11
  13. package/dist/client/protocol.js.map +1 -1
  14. package/dist/client/resolver.d.ts +4 -4
  15. package/dist/client/view.d.ts +7 -1
  16. package/dist/client/view.js +1 -0
  17. package/dist/client/view.js.map +1 -1
  18. package/dist/extension/index.d.ts +1 -1
  19. package/dist/extension/index.js +66 -47
  20. package/dist/extension/index.js.map +1 -1
  21. package/dist/extension/recorder.d.ts +1 -1
  22. package/dist/extension/recorder.js +1 -1
  23. package/dist/extension/recorder.js.map +1 -1
  24. package/dist/extension/remote-recorder-store.d.ts +1 -1
  25. package/dist/extension/remote-recorder-store.js +2 -2
  26. package/dist/extension/remote-recorder-store.js.map +1 -1
  27. package/dist/extension/{controller-command.d.ts → resource-manager-command.d.ts} +6 -6
  28. package/dist/extension/{controller-command.js → resource-manager-command.js} +7 -7
  29. package/dist/extension/resource-manager-command.js.map +1 -0
  30. package/dist/extension/session-delivery.d.ts +1 -1
  31. package/dist/extension/session-delivery.js +2 -2
  32. package/dist/extension/session-delivery.js.map +1 -1
  33. package/dist/extension/session-view.d.ts +1 -1
  34. package/dist/extension/session-view.js +1 -1
  35. package/dist/extension/session-view.js.map +1 -1
  36. package/dist/extension/workflow-message-coordinator.d.ts +4 -3
  37. package/dist/extension/workflow-message-coordinator.js +81 -29
  38. package/dist/extension/workflow-message-coordinator.js.map +1 -1
  39. package/dist/resource-managers/conditions.d.ts +6 -0
  40. package/dist/{controllers → resource-managers}/conditions.js +3 -3
  41. package/dist/resource-managers/conditions.js.map +1 -0
  42. package/dist/resource-managers/definition.d.ts +6 -0
  43. package/dist/resource-managers/definition.js +45 -0
  44. package/dist/resource-managers/definition.js.map +1 -0
  45. package/dist/resource-managers/effects.d.ts +15 -0
  46. package/dist/{controllers → resource-managers}/effects.js +2 -2
  47. package/dist/resource-managers/effects.js.map +1 -0
  48. package/dist/resource-managers/errors.d.ts +12 -0
  49. package/dist/resource-managers/errors.js +25 -0
  50. package/dist/resource-managers/errors.js.map +1 -0
  51. package/dist/resource-managers/index.d.ts +12 -0
  52. package/dist/resource-managers/index.js +12 -0
  53. package/dist/resource-managers/index.js.map +1 -0
  54. package/dist/resource-managers/json.js.map +1 -0
  55. package/dist/resource-managers/loader.d.ts +23 -0
  56. package/dist/resource-managers/loader.js +75 -0
  57. package/dist/resource-managers/loader.js.map +1 -0
  58. package/dist/resource-managers/results.d.ts +5 -0
  59. package/dist/resource-managers/results.js.map +1 -0
  60. package/dist/resource-managers/runtime.d.ts +59 -0
  61. package/dist/{controllers/manager.js → resource-managers/runtime.js} +57 -57
  62. package/dist/resource-managers/runtime.js.map +1 -0
  63. package/dist/{controllers → resource-managers}/sqlite.d.ts +51 -43
  64. package/dist/{controllers → resource-managers}/sqlite.js +187 -125
  65. package/dist/resource-managers/sqlite.js.map +1 -0
  66. package/dist/{controllers → resource-managers}/store.d.ts +33 -33
  67. package/dist/{controllers → resource-managers}/store.js.map +1 -1
  68. package/dist/{controllers → resource-managers}/types.d.ts +41 -41
  69. package/dist/{controllers → resource-managers}/types.js.map +1 -1
  70. package/dist/resource-managers/workflows.d.ts +34 -0
  71. package/dist/{controllers → resource-managers}/workflows.js +15 -15
  72. package/dist/resource-managers/workflows.js.map +1 -0
  73. package/dist/server/channel-effects.js.map +1 -0
  74. package/dist/{host → server}/channel-supervisor.d.ts +6 -6
  75. package/dist/{host → server}/channel-supervisor.js +3 -3
  76. package/dist/server/channel-supervisor.js.map +1 -0
  77. package/dist/{host/child-worker-supervisor.d.ts → server/child-runner-supervisor.d.ts} +15 -13
  78. package/dist/{host/child-worker-supervisor.js → server/child-runner-supervisor.js} +6 -5
  79. package/dist/server/child-runner-supervisor.js.map +1 -0
  80. package/dist/{host → server}/processes.d.ts +3 -3
  81. package/dist/{host → server}/processes.js +3 -3
  82. package/dist/server/processes.js.map +1 -0
  83. package/dist/{host → server}/resolver-entry.d.ts +6 -6
  84. package/dist/{host → server}/resolver-entry.js +14 -14
  85. package/dist/server/resolver-entry.js.map +1 -0
  86. package/dist/server/resource-runner-entry.d.ts +2 -0
  87. package/dist/{host/controller-worker-entry.js → server/resource-runner-entry.js} +33 -33
  88. package/dist/server/resource-runner-entry.js.map +1 -0
  89. package/dist/server/resource-runner-protocol.d.ts +36 -0
  90. package/dist/server/resource-runner-protocol.js +49 -0
  91. package/dist/server/resource-runner-protocol.js.map +1 -0
  92. package/dist/server/resource-runner-supervisor.d.ts +21 -0
  93. package/dist/{host/worker-supervisor.js → server/resource-runner-supervisor.js} +17 -17
  94. package/dist/server/resource-runner-supervisor.js.map +1 -0
  95. package/dist/{host → server}/rpc-bridge.d.ts +3 -3
  96. package/dist/{host → server}/rpc-bridge.js +3 -3
  97. package/dist/server/rpc-bridge.js.map +1 -0
  98. package/dist/{host → server}/rpc-executor.d.ts +1 -1
  99. package/dist/{host → server}/rpc-executor.js +3 -3
  100. package/dist/server/rpc-executor.js.map +1 -0
  101. package/dist/{host/host-entry.js → server/server-entry.js} +6 -6
  102. package/dist/server/server-entry.js.map +1 -0
  103. package/dist/{host/runner.d.ts → server/server.d.ts} +47 -39
  104. package/dist/{host/runner.js → server/server.js} +624 -535
  105. package/dist/server/server.js.map +1 -0
  106. package/dist/{host → server}/state.d.ts +25 -25
  107. package/dist/{host → server}/state.js +49 -49
  108. package/dist/server/state.js.map +1 -0
  109. package/dist/{host → server}/view.d.ts +7 -7
  110. package/dist/{host → server}/view.js +19 -15
  111. package/dist/server/view.js.map +1 -0
  112. package/dist/server/workflow-runner-content.d.ts +6 -0
  113. package/dist/server/workflow-runner-content.js +96 -0
  114. package/dist/server/workflow-runner-content.js.map +1 -0
  115. package/dist/server/workflow-runner-entry.d.ts +13 -0
  116. package/dist/{host/worker-entry.js → server/workflow-runner-entry.js} +89 -57
  117. package/dist/server/workflow-runner-entry.js.map +1 -0
  118. package/dist/server/workflow-runner-protocol.d.ts +69 -0
  119. package/dist/server/workflow-runner-protocol.js +176 -0
  120. package/dist/server/workflow-runner-protocol.js.map +1 -0
  121. package/dist/{host/worker-store.d.ts → server/workflow-runner-store.d.ts} +11 -11
  122. package/dist/{host/worker-store.js → server/workflow-runner-store.js} +8 -8
  123. package/dist/server/workflow-runner-store.js.map +1 -0
  124. package/dist/server/workflow-runner-supervisor.d.ts +22 -0
  125. package/dist/server/workflow-runner-supervisor.js +56 -0
  126. package/dist/server/workflow-runner-supervisor.js.map +1 -0
  127. package/dist/state/prune.d.ts +1 -1
  128. package/dist/state/prune.js +17 -10
  129. package/dist/state/prune.js.map +1 -1
  130. package/dist/state/schema.js +2 -2
  131. package/dist/state/workflow-messages.d.ts +3 -1
  132. package/dist/state/workflow-messages.js +32 -1
  133. package/dist/state/workflow-messages.js.map +1 -1
  134. package/dist/viewer/backup.js +1 -1
  135. package/dist/viewer/backup.js.map +1 -1
  136. package/dist/viewer/cli.d.ts +2 -2
  137. package/dist/viewer/cli.js +46 -32
  138. package/dist/viewer/cli.js.map +1 -1
  139. package/dist/viewer/tui.d.ts +1 -1
  140. package/dist/viewer/tui.js +1 -1
  141. package/dist/viewer/tui.js.map +1 -1
  142. package/dist/workflows/command-batch.js +2 -2
  143. package/dist/workflows/composition.js +0 -4
  144. package/dist/workflows/composition.js.map +1 -1
  145. package/dist/workflows/definition.js +0 -8
  146. package/dist/workflows/definition.js.map +1 -1
  147. package/dist/workflows/engine.js +18 -20
  148. package/dist/workflows/engine.js.map +1 -1
  149. package/dist/workflows/schema.js +0 -4
  150. package/dist/workflows/schema.js.map +1 -1
  151. package/dist/workflows/store.d.ts +27 -11
  152. package/dist/workflows/store.js +66 -18
  153. package/dist/workflows/store.js.map +1 -1
  154. package/dist/workflows/types.d.ts +3 -5
  155. package/docs/2026-08-20-durable-workflow-launch-plan.md +12 -12
  156. package/docs/2026-08-25-workflow-follow-ups.md +7 -7
  157. package/docs/2026-08-25-workflow-settings.md +3 -3
  158. package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
  159. package/docs/2026-09-01-restore-session-delivery-controls-plan.md +5 -5
  160. package/docs/2026-09-01-unified-workflow-client-plan.md +6 -6
  161. package/docs/2026-09-02-installed-live-e2e-plan.md +3 -3
  162. package/docs/2026-09-02-unify-workflow-messages-plan.md +8 -8
  163. package/docs/2026-09-04-workflow-run-state-plan.md +363 -0
  164. package/docs/DEFERRED_TURNS.md +7 -7
  165. package/docs/DESIGN_PHILOSOPHY.md +1 -1
  166. package/docs/HUMAN_DECISIONS.md +11 -11
  167. package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -4
  168. package/docs/MONITOR.md +1 -1
  169. package/docs/RESOURCE_MANAGERS.md +221 -0
  170. package/docs/SQLITE_STATE.md +40 -34
  171. package/docs/WORKFLOW_COMPOSITION.md +1 -1
  172. package/docs/{WORKFLOW_HOST.md → WORKFLOW_SERVER.md} +131 -116
  173. package/docs/WORKFLOW_STEP_MESSAGES.md +18 -18
  174. package/docs/WORKFLOW_UPDATES.md +16 -16
  175. package/docs/development.md +15 -14
  176. package/docs/live-replay-protocol.md +20 -20
  177. package/docs/plans/2026-08-04-controller-runtime-plan.md +25 -25
  178. package/docs/plans/2026-08-05-always-on-workflows-plan.md +8 -8
  179. package/docs/plans/2026-08-10-agent-managed-monitor-workflows-plan.md +2 -2
  180. package/docs/plans/2026-08-13-session-addressed-workflow-notifications-plan.md +1 -1
  181. package/docs/plans/2026-08-16-workflow-updates-plan.md +5 -5
  182. package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
  183. package/docs/plans/2026-08-20-bounded-command-batches-plan.md +1 -1
  184. package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +3 -3
  185. package/docs/plans/2026-08-21-sanity-check-plan.md +2 -2
  186. package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +5 -5
  187. package/docs/plans/2026-08-23-sqlite-state-plan.md +25 -25
  188. package/docs/plans/2026-08-25-live-workflow-settings-plan.md +4 -4
  189. package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +3 -3
  190. package/docs/plans/2026-09-04-workflow-runner-resume-state-plan.md +318 -0
  191. package/docs/plans/piw-viewer-experience-implementation-plan.md +1 -1
  192. package/docs/tui-viewer.md +9 -9
  193. package/docs/workflows.md +78 -63
  194. package/examples/{controllers/pull-request.controller.ts → resource-managers/pull-request.resource-manager.ts} +12 -12
  195. package/herdr-plugin.toml +1 -1
  196. package/package.json +5 -5
  197. package/protocol/client.v1.schema.json +7 -7
  198. package/protocol/fixtures/client-v1.json +1 -1
  199. package/src/builtins/monitor.workflow.ts +9 -9
  200. package/src/builtins/pi-agent-group.ts +3 -3
  201. package/src/channels/adapter-entry.ts +14 -14
  202. package/src/client/client.ts +33 -32
  203. package/src/client/protocol.ts +16 -11
  204. package/src/client/resolver.ts +4 -4
  205. package/src/client/view.ts +9 -1
  206. package/src/extension/index.ts +81 -53
  207. package/src/extension/recorder.ts +1 -1
  208. package/src/extension/remote-recorder-store.ts +2 -2
  209. package/src/extension/resource-manager-command.ts +45 -0
  210. package/src/extension/session-delivery.ts +2 -2
  211. package/src/extension/session-view.ts +1 -1
  212. package/src/extension/workflow-message-coordinator.ts +94 -30
  213. package/src/{controllers → resource-managers}/conditions.ts +23 -23
  214. package/src/resource-managers/definition.ts +71 -0
  215. package/src/{controllers → resource-managers}/effects.ts +9 -9
  216. package/src/resource-managers/errors.ts +27 -0
  217. package/src/resource-managers/index.ts +88 -0
  218. package/src/resource-managers/loader.ts +111 -0
  219. package/src/{controllers → resource-managers}/results.ts +4 -4
  220. package/src/{controllers/manager.ts → resource-managers/runtime.ts} +95 -92
  221. package/src/{controllers → resource-managers}/sqlite.ts +275 -181
  222. package/src/{controllers → resource-managers}/store.ts +46 -38
  223. package/src/{controllers → resource-managers}/types.ts +50 -41
  224. package/src/{controllers → resource-managers}/workflows.ts +43 -41
  225. package/src/{host → server}/channel-supervisor.ts +8 -8
  226. package/src/{host/child-worker-supervisor.ts → server/child-runner-supervisor.ts} +22 -18
  227. package/src/{host → server}/processes.ts +3 -3
  228. package/src/{host → server}/resolver-entry.ts +28 -25
  229. package/src/{host/controller-worker-entry.ts → server/resource-runner-entry.ts} +67 -65
  230. package/src/server/resource-runner-protocol.ts +103 -0
  231. package/src/server/resource-runner-supervisor.ts +76 -0
  232. package/src/{host → server}/rpc-bridge.ts +3 -3
  233. package/src/{host → server}/rpc-executor.ts +4 -4
  234. package/src/{host/host-entry.ts → server/server-entry.ts} +5 -5
  235. package/src/{host/runner.ts → server/server.ts} +786 -672
  236. package/src/{host → server}/state.ts +78 -67
  237. package/src/{host → server}/view.ts +21 -17
  238. package/src/server/workflow-runner-content.ts +119 -0
  239. package/src/{host/worker-entry.ts → server/workflow-runner-entry.ts} +131 -82
  240. package/src/server/workflow-runner-protocol.ts +241 -0
  241. package/src/{host/worker-store.ts → server/workflow-runner-store.ts} +18 -20
  242. package/src/server/workflow-runner-supervisor.ts +79 -0
  243. package/src/state/prune.ts +27 -9
  244. package/src/state/schema.ts +2 -2
  245. package/src/state/workflow-messages.ts +52 -1
  246. package/src/viewer/backup.ts +1 -1
  247. package/src/viewer/cli.ts +50 -36
  248. package/src/viewer/tui.ts +1 -1
  249. package/src/workflows/command-batch.ts +2 -2
  250. package/src/workflows/composition.ts +0 -5
  251. package/src/workflows/definition.ts +0 -8
  252. package/src/workflows/engine.ts +18 -21
  253. package/src/workflows/schema.ts +0 -6
  254. package/src/workflows/store.ts +95 -28
  255. package/src/workflows/types.ts +3 -5
  256. package/dist/controllers/conditions.d.ts +0 -6
  257. package/dist/controllers/conditions.js.map +0 -1
  258. package/dist/controllers/definition.d.ts +0 -6
  259. package/dist/controllers/definition.js +0 -45
  260. package/dist/controllers/definition.js.map +0 -1
  261. package/dist/controllers/effects.d.ts +0 -15
  262. package/dist/controllers/effects.js.map +0 -1
  263. package/dist/controllers/errors.d.ts +0 -12
  264. package/dist/controllers/errors.js +0 -25
  265. package/dist/controllers/errors.js.map +0 -1
  266. package/dist/controllers/index.d.ts +0 -12
  267. package/dist/controllers/index.js +0 -12
  268. package/dist/controllers/index.js.map +0 -1
  269. package/dist/controllers/json.js.map +0 -1
  270. package/dist/controllers/loader.d.ts +0 -23
  271. package/dist/controllers/loader.js +0 -74
  272. package/dist/controllers/loader.js.map +0 -1
  273. package/dist/controllers/manager.d.ts +0 -59
  274. package/dist/controllers/manager.js.map +0 -1
  275. package/dist/controllers/results.d.ts +0 -5
  276. package/dist/controllers/results.js.map +0 -1
  277. package/dist/controllers/sqlite.js.map +0 -1
  278. package/dist/controllers/workflows.d.ts +0 -34
  279. package/dist/controllers/workflows.js.map +0 -1
  280. package/dist/extension/controller-command.js.map +0 -1
  281. package/dist/host/channel-effects.js.map +0 -1
  282. package/dist/host/channel-supervisor.js.map +0 -1
  283. package/dist/host/child-worker-supervisor.js.map +0 -1
  284. package/dist/host/controller-worker-entry.d.ts +0 -2
  285. package/dist/host/controller-worker-entry.js.map +0 -1
  286. package/dist/host/controller-worker-protocol.d.ts +0 -36
  287. package/dist/host/controller-worker-protocol.js +0 -49
  288. package/dist/host/controller-worker-protocol.js.map +0 -1
  289. package/dist/host/controller-worker-supervisor.d.ts +0 -21
  290. package/dist/host/controller-worker-supervisor.js +0 -54
  291. package/dist/host/controller-worker-supervisor.js.map +0 -1
  292. package/dist/host/host-entry.js.map +0 -1
  293. package/dist/host/processes.js.map +0 -1
  294. package/dist/host/resolver-entry.js.map +0 -1
  295. package/dist/host/rpc-bridge.js.map +0 -1
  296. package/dist/host/rpc-executor.js.map +0 -1
  297. package/dist/host/runner.js.map +0 -1
  298. package/dist/host/state.js.map +0 -1
  299. package/dist/host/view.js.map +0 -1
  300. package/dist/host/worker-entry.d.ts +0 -10
  301. package/dist/host/worker-entry.js.map +0 -1
  302. package/dist/host/worker-protocol.d.ts +0 -31
  303. package/dist/host/worker-protocol.js +0 -122
  304. package/dist/host/worker-protocol.js.map +0 -1
  305. package/dist/host/worker-store.js.map +0 -1
  306. package/dist/host/worker-supervisor.d.ts +0 -22
  307. package/dist/host/worker-supervisor.js.map +0 -1
  308. package/docs/CONTROLLERS.md +0 -217
  309. package/src/controllers/definition.ts +0 -65
  310. package/src/controllers/errors.ts +0 -27
  311. package/src/controllers/index.ts +0 -88
  312. package/src/controllers/loader.ts +0 -104
  313. package/src/extension/controller-command.ts +0 -45
  314. package/src/host/controller-worker-protocol.ts +0 -104
  315. package/src/host/controller-worker-supervisor.ts +0 -79
  316. package/src/host/worker-protocol.ts +0 -165
  317. package/src/host/worker-supervisor.ts +0 -74
  318. /package/dist/{controllers → resource-managers}/json.d.ts +0 -0
  319. /package/dist/{controllers → resource-managers}/json.js +0 -0
  320. /package/dist/{controllers → resource-managers}/results.js +0 -0
  321. /package/dist/{controllers → resource-managers}/store.js +0 -0
  322. /package/dist/{controllers → resource-managers}/types.js +0 -0
  323. /package/dist/{host → server}/channel-effects.d.ts +0 -0
  324. /package/dist/{host → server}/channel-effects.js +0 -0
  325. /package/dist/{host/host-entry.d.ts → server/server-entry.d.ts} +0 -0
  326. /package/src/{controllers → resource-managers}/json.ts +0 -0
  327. /package/src/{host → server}/channel-effects.ts +0 -0
@@ -1,10 +1,10 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { applyStatusPatch } from "./conditions.js";
3
- import { asAnyControllerDefinition, asTypedResource } from "./definition.js";
4
- import { ControllerEffectService } from "./effects.js";
5
- import { ResourceConflictError } from "./errors.js";
3
+ import { asAnyResourceManagerDefinition, asTypedResource } from "./definition.js";
4
+ import { ResourceManagerEffectService } from "./effects.js";
5
+ import { ManagedResourceConflictError } from "./errors.js";
6
6
  import { createResultHelpers } from "./results.js";
7
- import { ControllerWorkflowCoordinator } from "./workflows.js";
7
+ import { ResourceManagerWorkflowCoordinator, } from "./workflows.js";
8
8
  const DEFAULT_MAX_CONCURRENT = 4;
9
9
  const DEFAULT_TIMEOUT_MS = 60_000;
10
10
  const DEFAULT_LEASE_MS = 120_000;
@@ -13,13 +13,13 @@ const DEFAULT_BASE_BACKOFF_MS = 1_000;
13
13
  const DEFAULT_MAX_BACKOFF_MS = 60_000;
14
14
  const DEFAULT_JITTER_RATIO = 0.2;
15
15
  const MIN_LEASE_MS = 300;
16
- export class ControllerManager {
16
+ export class ResourceManagerRuntime {
17
17
  store;
18
- ownerId = `controller-manager-${randomUUID()}`;
18
+ ownerId = `resource-manager-runtime-${randomUUID()}`;
19
19
  definitions = new Map();
20
20
  workflowCoordinator;
21
21
  maxConcurrent;
22
- controllerConcurrency;
22
+ resourceManagerConcurrency;
23
23
  defaultTimeoutMs;
24
24
  leaseMs;
25
25
  pollIntervalMs;
@@ -28,26 +28,26 @@ export class ControllerManager {
28
28
  jitterRatio;
29
29
  now;
30
30
  random;
31
- activeByController = new Map();
31
+ activeByResourceManager = new Map();
32
32
  activeReconciles = new Map();
33
33
  runAbort = null;
34
- workerTasks = [];
34
+ runnerTasks = [];
35
35
  constructor(options) {
36
36
  this.store = options.store;
37
- for (const definition of options.controllers) {
37
+ for (const definition of options.resourceManagers) {
38
38
  if (this.definitions.has(definition.name)) {
39
- throw new Error(`Duplicate controller definition: ${definition.name}`);
39
+ throw new Error(`Duplicate resource manager definition: ${definition.name}`);
40
40
  }
41
41
  this.definitions.set(definition.name, definition);
42
42
  }
43
- this.workflowCoordinator = new ControllerWorkflowCoordinator(options.store, options.workflowScheduler);
43
+ this.workflowCoordinator = new ResourceManagerWorkflowCoordinator(options.store, options.workflowScheduler);
44
44
  this.maxConcurrent = positiveInteger(options.maxConcurrent ?? DEFAULT_MAX_CONCURRENT, "maxConcurrent");
45
- this.controllerConcurrency = options.controllerConcurrency ?? {};
46
- for (const [name, value] of Object.entries(this.controllerConcurrency)) {
45
+ this.resourceManagerConcurrency = options.resourceManagerConcurrency ?? {};
46
+ for (const [name, value] of Object.entries(this.resourceManagerConcurrency)) {
47
47
  if (!this.definitions.has(name)) {
48
- throw new Error(`Concurrency limit names an unknown controller: ${name}`);
48
+ throw new Error(`Concurrency limit names an unknown resource manager: ${name}`);
49
49
  }
50
- positiveInteger(value, `controllerConcurrency.${name}`);
50
+ positiveInteger(value, `resourceManagerConcurrency.${name}`);
51
51
  }
52
52
  this.defaultTimeoutMs = positiveInteger(options.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS, "defaultTimeoutMs");
53
53
  this.leaseMs = positiveInteger(options.leaseMs ?? DEFAULT_LEASE_MS, "leaseMs");
@@ -69,43 +69,43 @@ export class ControllerManager {
69
69
  }
70
70
  putResource(definition, key, spec) {
71
71
  const registered = this.definitions.get(definition.name);
72
- if (registered !== asAnyControllerDefinition(definition)) {
73
- throw new Error(`Controller definition is not registered: ${definition.name}`);
72
+ if (registered !== asAnyResourceManagerDefinition(definition)) {
73
+ throw new Error(`ResourceManager definition is not registered: ${definition.name}`);
74
74
  }
75
75
  const initialStatus = definition.initialStatus(spec);
76
76
  const resource = this.store.putResource({
77
- controller: definition.name,
77
+ resourceManager: definition.name,
78
78
  key,
79
79
  spec,
80
80
  initialStatus,
81
81
  now: this.now().toISOString(),
82
82
  });
83
- this.recordEvent({ controller: definition.name, key }, resource.metadata.generation === 1 ? "resource_applied" : "resource_updated", { generation: resource.metadata.generation });
83
+ this.recordEvent({ resourceManager: definition.name, key }, resource.metadata.generation === 1 ? "resource_applied" : "resource_updated", { generation: resource.metadata.generation });
84
84
  const current = this.store.getResource({
85
- controller: definition.name,
85
+ resourceManager: definition.name,
86
86
  key,
87
87
  });
88
88
  if (current === undefined)
89
- throw new Error("Controller resource disappeared after its event");
89
+ throw new Error("Managed resource disappeared after its event");
90
90
  return current;
91
91
  }
92
- putResourceByName(controller, key, spec) {
93
- const definition = this.definitions.get(controller);
92
+ putResourceByName(resourceManager, key, spec) {
93
+ const definition = this.definitions.get(resourceManager);
94
94
  if (definition === undefined) {
95
- throw new Error(`Unknown controller: ${controller}`);
95
+ throw new Error(`Unknown resource manager: ${resourceManager}`);
96
96
  }
97
97
  const initialStatus = definition.initialStatus(spec);
98
98
  const resource = this.store.putResource({
99
- controller,
99
+ resourceManager,
100
100
  key,
101
101
  spec,
102
102
  initialStatus,
103
103
  now: this.now().toISOString(),
104
104
  });
105
- this.recordEvent({ controller, key }, resource.metadata.generation === 1 ? "resource_applied" : "resource_updated", { generation: resource.metadata.generation });
106
- const current = this.store.getResource({ controller, key });
105
+ this.recordEvent({ resourceManager, key }, resource.metadata.generation === 1 ? "resource_applied" : "resource_updated", { generation: resource.metadata.generation });
106
+ const current = this.store.getResource({ resourceManager, key });
107
107
  if (current === undefined)
108
- throw new Error("Controller resource disappeared after its event");
108
+ throw new Error("Managed resource disappeared after its event");
109
109
  return current;
110
110
  }
111
111
  requestDeletion(ref) {
@@ -113,7 +113,7 @@ export class ControllerManager {
113
113
  this.recordEvent(ref, "deletion_requested");
114
114
  const current = this.store.getResource(ref);
115
115
  if (current === undefined)
116
- throw new Error("Controller resource disappeared after its event");
116
+ throw new Error("Managed resource disappeared after its event");
117
117
  return current;
118
118
  }
119
119
  enqueue(ref, afterMs = 0) {
@@ -127,7 +127,7 @@ export class ControllerManager {
127
127
  return;
128
128
  }
129
129
  this.runAbort = new AbortController();
130
- this.workerTasks = Array.from({ length: this.maxConcurrent }, () => this.workerLoop(this.runAbort?.signal));
130
+ this.runnerTasks = Array.from({ length: this.maxConcurrent }, () => this.runnerLoop(this.runAbort?.signal));
131
131
  }
132
132
  async stop() {
133
133
  const abort = this.runAbort;
@@ -135,12 +135,12 @@ export class ControllerManager {
135
135
  return;
136
136
  }
137
137
  this.runAbort = null;
138
- abort.abort(new Error("Controller manager stopped"));
139
- for (const controller of this.activeReconciles.values()) {
140
- controller.abort(new Error("Controller manager stopped"));
138
+ abort.abort(new Error("Resource manager stopped"));
139
+ for (const abortController of this.activeReconciles.values()) {
140
+ abortController.abort(new Error("Resource manager stopped"));
141
141
  }
142
- await Promise.allSettled(this.workerTasks);
143
- this.workerTasks = [];
142
+ await Promise.allSettled(this.runnerTasks);
143
+ this.runnerTasks = [];
144
144
  }
145
145
  async runOne() {
146
146
  const claim = this.claimNext();
@@ -157,14 +157,14 @@ export class ControllerManager {
157
157
  count += 1;
158
158
  }
159
159
  if (count === maxReconciles && this.readyQueueExists()) {
160
- throw new Error(`Controller manager exceeded ${maxReconciles} reconciliations`);
160
+ throw new Error(`Resource manager exceeded ${maxReconciles} reconciliations`);
161
161
  }
162
162
  return count;
163
163
  }
164
164
  get workflowRequests() {
165
165
  return this.workflowCoordinator;
166
166
  }
167
- async workerLoop(signal) {
167
+ async runnerLoop(signal) {
168
168
  while (!signal.aborted) {
169
169
  const claim = this.claimNext();
170
170
  if (claim === undefined) {
@@ -178,46 +178,46 @@ export class ControllerManager {
178
178
  if (signal.aborted)
179
179
  return;
180
180
  // A stale claim means another owner now controls that resource. Keep
181
- // this worker alive so it can reconcile other queued resources.
181
+ // this runner alive so it can reconcile other queued resources.
182
182
  }
183
183
  }
184
184
  }
185
185
  claimNext() {
186
186
  return this.store.claimNext({
187
- controllers: this.eligibleControllers(),
187
+ resourceManagers: this.eligibleResourceManagers(),
188
188
  ownerId: this.ownerId,
189
189
  leaseMs: this.leaseMs,
190
190
  now: this.now().toISOString(),
191
191
  });
192
192
  }
193
- eligibleControllers() {
193
+ eligibleResourceManagers() {
194
194
  return [...this.definitions.keys()].filter((name) => {
195
- const active = this.activeByController.get(name) ?? 0;
196
- const limit = this.controllerConcurrency[name] ?? this.maxConcurrent;
195
+ const active = this.activeByResourceManager.get(name) ?? 0;
196
+ const limit = this.resourceManagerConcurrency[name] ?? this.maxConcurrent;
197
197
  return active < limit;
198
198
  });
199
199
  }
200
200
  async processClaim(claim) {
201
- const definition = this.definitions.get(claim.controller);
201
+ const definition = this.definitions.get(claim.resourceManager);
202
202
  if (definition === undefined) {
203
203
  return;
204
204
  }
205
- this.activeByController.set(claim.controller, (this.activeByController.get(claim.controller) ?? 0) + 1);
205
+ this.activeByResourceManager.set(claim.resourceManager, (this.activeByResourceManager.get(claim.resourceManager) ?? 0) + 1);
206
206
  try {
207
207
  await this.reconcileClaim(definition, claim);
208
208
  }
209
209
  finally {
210
- const active = (this.activeByController.get(claim.controller) ?? 1) - 1;
210
+ const active = (this.activeByResourceManager.get(claim.resourceManager) ?? 1) - 1;
211
211
  if (active === 0) {
212
- this.activeByController.delete(claim.controller);
212
+ this.activeByResourceManager.delete(claim.resourceManager);
213
213
  }
214
214
  else {
215
- this.activeByController.set(claim.controller, active);
215
+ this.activeByResourceManager.set(claim.resourceManager, active);
216
216
  }
217
217
  }
218
218
  }
219
219
  async reconcileClaim(definition, claim) {
220
- const ref = { controller: claim.controller, key: claim.key };
220
+ const ref = { resourceManager: claim.resourceManager, key: claim.key };
221
221
  const resource = this.store.getResource(ref);
222
222
  if (resource === undefined) {
223
223
  this.store.settleClaim(claim, this.now().toISOString());
@@ -235,7 +235,7 @@ export class ControllerManager {
235
235
  const renew = setInterval(() => {
236
236
  const renewed = this.store.renewClaim(claim, this.leaseMs, this.now().toISOString());
237
237
  if (!renewed) {
238
- abort.abort(new Error("Controller queue claim was lost"));
238
+ abort.abort(new Error("ResourceManager queue claim was lost"));
239
239
  }
240
240
  }, Math.max(100, Math.floor(this.leaseMs / 3)));
241
241
  renew.unref?.();
@@ -263,7 +263,7 @@ export class ControllerManager {
263
263
  async callReconciler(definition, resource, claim, signal) {
264
264
  const context = {
265
265
  signal,
266
- effects: new ControllerEffectService(this.store, resource, claim, signal),
266
+ effects: new ResourceManagerEffectService(this.store, resource, claim, signal),
267
267
  workflows: this.workflowCoordinator.forResource(resource, claim, signal),
268
268
  ...createResultHelpers(),
269
269
  };
@@ -272,7 +272,7 @@ export class ControllerManager {
272
272
  return result;
273
273
  }
274
274
  async finishSuccessfulClaim(claim, resource, result, reconcileId, startedAtMs) {
275
- const ref = { controller: claim.controller, key: claim.key };
275
+ const ref = { resourceManager: claim.resourceManager, key: claim.key };
276
276
  const now = this.now();
277
277
  const status = applyStatusPatch(resource.status, result.status, resource.metadata.generation, now.toISOString());
278
278
  try {
@@ -304,7 +304,7 @@ export class ControllerManager {
304
304
  }
305
305
  }
306
306
  catch (error) {
307
- if (error instanceof ResourceConflictError) {
307
+ if (error instanceof ManagedResourceConflictError) {
308
308
  this.recordEvent(ref, "reconcile_conflict", { reconcileId }, claim);
309
309
  this.store.requeueClaim(claim, { availableAt: now.toISOString() }, now.toISOString());
310
310
  return;
@@ -345,7 +345,7 @@ export class ControllerManager {
345
345
  }
346
346
  recordEvent(ref, type, payload = {}, claim) {
347
347
  this.store.recordEvent({
348
- controller: ref.controller,
348
+ resourceManager: ref.resourceManager,
349
349
  key: ref.key,
350
350
  ...(claim === undefined ? {} : { claim }),
351
351
  type,
@@ -375,10 +375,10 @@ function raceWithAbort(operation, signal) {
375
375
  }
376
376
  function validateResult(result) {
377
377
  if (result === null || typeof result !== "object") {
378
- throw new Error("Controller reconcile must return a result object");
378
+ throw new Error("ResourceManager reconcile must return a result object");
379
379
  }
380
380
  if (result.kind !== "settled" && result.kind !== "requeue") {
381
- throw new Error("Controller reconcile returned an unknown result kind");
381
+ throw new Error("ResourceManager reconcile returned an unknown result kind");
382
382
  }
383
383
  if (result.kind === "settled" && "afterMs" in result) {
384
384
  throw new Error("A settled reconcile result cannot specify afterMs");
@@ -420,4 +420,4 @@ async function sleep(ms, signal) {
420
420
  }
421
421
  });
422
422
  }
423
- //# sourceMappingURL=manager.js.map
423
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/resource-managers/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { StateDatabase } from "../state/database.js";
2
- import type { ControllerStore, EffectReservation, QueueItem, QueueRequeueOptions, WorkflowRecordUpdate, WorkflowReservation } from "./store.js";
3
- import type { ChildWorkflowRecord, ControllerEvent, ControllerQueueClaim, ControllerResource, ControllerResourceRef, ControllerResourceStatus, EffectRecord, JsonObject } from "./types.js";
2
+ import type { ResourceManagerStore, EffectReservation, QueueItem, QueueRequeueOptions, WorkflowRecordUpdate, WorkflowReservation } from "./store.js";
3
+ import type { ChildWorkflowRecord, ResourceManagerEvent, ResourceManagerQueueClaim, ManagedResource, ManagedResourceRef, ManagedResourceStatus, EffectRecord, JsonObject } from "./types.js";
4
4
  export type WorkflowRunLaunchStatus = "queued" | "starting" | "running" | "parked" | "done" | "failed" | "cancelled";
5
5
  export type WorkflowRunReservationOptions = {
6
6
  runId: string;
@@ -95,9 +95,10 @@ export type RunEventRecord = {
95
95
  runnerId: string | null;
96
96
  payload: JsonObject;
97
97
  };
98
- export declare class SqliteControllerStore implements ControllerStore {
98
+ export declare class SqliteResourceManagerStore implements ResourceManagerStore {
99
99
  readonly filePath: string;
100
100
  readonly state: StateDatabase;
101
+ private readonly workflowMessages;
101
102
  private readonly ownsState;
102
103
  private readonly projectId;
103
104
  private closed;
@@ -105,54 +106,54 @@ export declare class SqliteControllerStore implements ControllerStore {
105
106
  readOnly?: boolean;
106
107
  projectPath?: string;
107
108
  state?: StateDatabase;
108
- /** Host-only global view. Project-scoped mutations still require projectPath. */
109
+ /** Server-only global view. Project-scoped mutations still require projectPath. */
109
110
  global?: boolean;
110
111
  });
111
112
  close(): void;
112
113
  putResource<TSpec, TStatus>(options: {
113
- controller: string;
114
+ resourceManager: string;
114
115
  key: string;
115
116
  spec: TSpec;
116
117
  initialStatus: TStatus;
117
118
  now?: string;
118
- }): ControllerResource<TSpec, TStatus>;
119
- getResource<TSpec = unknown, TStatus = unknown>(ref: ControllerResourceRef): ControllerResource<TSpec, TStatus> | undefined;
120
- getResourceByUid(uid: string): ControllerResource | undefined;
119
+ }): ManagedResource<TSpec, TStatus>;
120
+ getResource<TSpec = unknown, TStatus = unknown>(ref: ManagedResourceRef): ManagedResource<TSpec, TStatus> | undefined;
121
+ getResourceByUid(uid: string): ManagedResource | undefined;
121
122
  listResources<TSpec = unknown, TStatus = unknown>(options?: {
122
- controller?: string;
123
- }): ControllerResource<TSpec, TStatus>[];
123
+ resourceManager?: string;
124
+ }): ManagedResource<TSpec, TStatus>[];
124
125
  updateStatus<TStatus>(options: {
125
- ref: ControllerResourceRef;
126
+ ref: ManagedResourceRef;
126
127
  expectedResourceVersion: number;
127
- claim: ControllerQueueClaim;
128
- status: ControllerResourceStatus<TStatus>;
128
+ claim: ResourceManagerQueueClaim;
129
+ status: ManagedResourceStatus<TStatus>;
129
130
  finalizers?: string[];
130
131
  now?: string;
131
- }): ControllerResource<unknown, TStatus>;
132
- requestDeletion(ref: ControllerResourceRef, nowValue?: string): ControllerResource;
132
+ }): ManagedResource<unknown, TStatus>;
133
+ requestDeletion(ref: ManagedResourceRef, nowValue?: string): ManagedResource;
133
134
  updateFinalizers(options: {
134
- ref: ControllerResourceRef;
135
+ ref: ManagedResourceRef;
135
136
  expectedResourceVersion: number;
136
137
  finalizers: string[];
137
138
  now?: string;
138
- }): ControllerResource;
139
- deleteResource(ref: ControllerResourceRef, expectedResourceVersion: number, claim: ControllerQueueClaim): boolean;
140
- enqueue(ref: ControllerResourceRef, availableAt?: string): void;
139
+ }): ManagedResource;
140
+ deleteResource(ref: ManagedResourceRef, expectedResourceVersion: number, claim: ResourceManagerQueueClaim): boolean;
141
+ enqueue(ref: ManagedResourceRef, availableAt?: string): void;
141
142
  claimNext(options: {
142
- controllers: string[];
143
+ resourceManagers: string[];
143
144
  ownerId: string;
144
145
  leaseMs: number;
145
146
  now?: string;
146
- exclude?: ControllerResourceRef[];
147
- }): ControllerQueueClaim | undefined;
148
- renewClaim(claim: ControllerQueueClaim, leaseMs: number, nowValue?: string): boolean;
149
- settleClaim(claim: ControllerQueueClaim, nowValue?: string): boolean;
150
- requeueClaim(claim: ControllerQueueClaim, options: QueueRequeueOptions, nowValue?: string): boolean;
147
+ exclude?: ManagedResourceRef[];
148
+ }): ResourceManagerQueueClaim | undefined;
149
+ renewClaim(claim: ResourceManagerQueueClaim, leaseMs: number, nowValue?: string): boolean;
150
+ settleClaim(claim: ResourceManagerQueueClaim, nowValue?: string): boolean;
151
+ requeueClaim(claim: ResourceManagerQueueClaim, options: QueueRequeueOptions, nowValue?: string): boolean;
151
152
  listQueue(): QueueItem[];
152
153
  reserveEffect(options: {
153
154
  key: string;
154
155
  resourceUid: string;
155
- claim: ControllerQueueClaim;
156
+ claim: ResourceManagerQueueClaim;
156
157
  generation: number;
157
158
  kind: string;
158
159
  requestFingerprint: string;
@@ -162,7 +163,7 @@ export declare class SqliteControllerStore implements ControllerStore {
162
163
  updateEffect(options: {
163
164
  resourceUid: string;
164
165
  key: string;
165
- claim: ControllerQueueClaim;
166
+ claim: ResourceManagerQueueClaim;
166
167
  state: EffectRecord["state"];
167
168
  externalRef?: string;
168
169
  error?: string;
@@ -171,29 +172,29 @@ export declare class SqliteControllerStore implements ControllerStore {
171
172
  listEffects(resourceUid: string): EffectRecord[];
172
173
  reserveWorkflow(options: {
173
174
  resourceUid: string;
174
- claim: ControllerQueueClaim;
175
+ claim: ResourceManagerQueueClaim;
175
176
  requestKey: string;
176
177
  workflow: string;
177
178
  inputFingerprint: string;
178
179
  }): WorkflowReservation;
179
180
  getWorkflow(resourceUid: string, requestKey: string): ChildWorkflowRecord | undefined;
180
181
  getWorkflowByRequestId(requestId: string): ChildWorkflowRecord | undefined;
181
- updateWorkflow(requestId: string, update: WorkflowRecordUpdate, claim: ControllerQueueClaim): ChildWorkflowRecord;
182
+ updateWorkflow(requestId: string, update: WorkflowRecordUpdate, claim: ResourceManagerQueueClaim): ChildWorkflowRecord;
182
183
  completeWorkflow(requestId: string, update: WorkflowRecordUpdate): ChildWorkflowRecord;
183
184
  listWorkflows(resourceUid: string): ChildWorkflowRecord[];
184
185
  recordEvent(options: {
185
- controller: string;
186
+ resourceManager: string;
186
187
  key: string;
187
- claim?: ControllerQueueClaim;
188
+ claim?: ResourceManagerQueueClaim;
188
189
  type: string;
189
190
  payload?: JsonObject;
190
191
  now?: string;
191
- }): ControllerEvent;
192
+ }): ResourceManagerEvent;
192
193
  listEvents(options?: {
193
- controller?: string;
194
+ resourceManager?: string;
194
195
  key?: string;
195
196
  limit?: number;
196
- }): ControllerEvent[];
197
+ }): ResourceManagerEvent[];
197
198
  reserveWorkflowRun(options: WorkflowRunReservationOptions): WorkflowRunQueueRecord;
198
199
  private reserveWorkflowRunInTransaction;
199
200
  prepareOrAdoptWorkflowRun(options: WorkflowRunClaimOptions): WorkflowRunPreparationResult;
@@ -227,7 +228,7 @@ export declare class SqliteControllerStore implements ControllerStore {
227
228
  leaseMs: number;
228
229
  now?: string;
229
230
  }): WorkflowRunQueueRecord | undefined;
230
- /** Schedule a worker that validates one pending interactive submission. */
231
+ /** Schedule a runner that validates one pending interactive submission. */
231
232
  claimWorkflowRunForInteractionValidation(options: {
232
233
  runId: string;
233
234
  runnerId: string;
@@ -235,7 +236,7 @@ export declare class SqliteControllerStore implements ControllerStore {
235
236
  leaseMs: number;
236
237
  now?: string;
237
238
  }): WorkflowRunQueueRecord | undefined;
238
- /** Take a short host claim without scheduling a parked interactive run. */
239
+ /** Take a short server claim without scheduling a parked interactive run. */
239
240
  claimWorkflowRunForControl(options: {
240
241
  runId: string;
241
242
  runnerId: string;
@@ -289,6 +290,12 @@ export declare class SqliteControllerStore implements ControllerStore {
289
290
  claimToken: string;
290
291
  now?: string;
291
292
  }): boolean;
293
+ parkWorkflowRunForRunnerNoProgress(options: {
294
+ runId: string;
295
+ claimToken: string;
296
+ detail: string;
297
+ now?: string;
298
+ }): boolean;
292
299
  pauseParkedWorkflowRun(options: {
293
300
  runId: string;
294
301
  now?: string;
@@ -355,18 +362,18 @@ export declare class SqliteControllerStore implements ControllerStore {
355
362
  private ensureProject;
356
363
  private findProject;
357
364
  private requireProjectId;
358
- private controllerRow;
359
- private requireControllerRow;
360
- private requireControllerRowByUid;
365
+ private resourceManagerRow;
366
+ private requireResourceManagerRow;
367
+ private requireResourceManagerRowByUid;
361
368
  private requireResource;
362
- private mapControllerResource;
369
+ private mapManagedResource;
363
370
  private finalizers;
364
371
  private replaceFinalizers;
365
- private enqueueControllerRow;
372
+ private enqueueResourceManagerRow;
366
373
  private queueErrors;
367
374
  private queueVersion;
368
- private settleControllerClaim;
369
- private assertControllerClaim;
375
+ private settleResourceManagerClaim;
376
+ private assertResourceManagerClaim;
370
377
  private requireLease;
371
378
  private releaseLease;
372
379
  private resourceRevision;
@@ -391,6 +398,7 @@ export declare class SqliteControllerStore implements ControllerStore {
391
398
  private updateClaimedRunStatus;
392
399
  private releaseRunClaim;
393
400
  private terminalRun;
401
+ private settleWorkflowRunMessages;
394
402
  private cancelWorkflowRunDependents;
395
403
  private assertWritable;
396
404
  }