@osolmaz/pi-workflows 0.16.2 → 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 (315) 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 +1 -1
  16. package/dist/extension/index.d.ts +1 -1
  17. package/dist/extension/index.js +32 -32
  18. package/dist/extension/index.js.map +1 -1
  19. package/dist/extension/recorder.d.ts +1 -1
  20. package/dist/extension/recorder.js +1 -1
  21. package/dist/extension/recorder.js.map +1 -1
  22. package/dist/extension/remote-recorder-store.d.ts +1 -1
  23. package/dist/extension/remote-recorder-store.js +2 -2
  24. package/dist/extension/remote-recorder-store.js.map +1 -1
  25. package/dist/extension/{controller-command.d.ts → resource-manager-command.d.ts} +6 -6
  26. package/dist/extension/{controller-command.js → resource-manager-command.js} +7 -7
  27. package/dist/extension/resource-manager-command.js.map +1 -0
  28. package/dist/extension/session-delivery.d.ts +1 -1
  29. package/dist/extension/session-delivery.js +2 -2
  30. package/dist/extension/session-delivery.js.map +1 -1
  31. package/dist/extension/session-view.d.ts +1 -1
  32. package/dist/extension/session-view.js +1 -1
  33. package/dist/extension/session-view.js.map +1 -1
  34. package/dist/extension/workflow-message-coordinator.d.ts +1 -1
  35. package/dist/extension/workflow-message-coordinator.js +6 -6
  36. package/dist/extension/workflow-message-coordinator.js.map +1 -1
  37. package/dist/resource-managers/conditions.d.ts +6 -0
  38. package/dist/{controllers → resource-managers}/conditions.js +3 -3
  39. package/dist/resource-managers/conditions.js.map +1 -0
  40. package/dist/resource-managers/definition.d.ts +6 -0
  41. package/dist/resource-managers/definition.js +45 -0
  42. package/dist/resource-managers/definition.js.map +1 -0
  43. package/dist/resource-managers/effects.d.ts +15 -0
  44. package/dist/{controllers → resource-managers}/effects.js +2 -2
  45. package/dist/resource-managers/effects.js.map +1 -0
  46. package/dist/resource-managers/errors.d.ts +12 -0
  47. package/dist/resource-managers/errors.js +25 -0
  48. package/dist/resource-managers/errors.js.map +1 -0
  49. package/dist/resource-managers/index.d.ts +12 -0
  50. package/dist/resource-managers/index.js +12 -0
  51. package/dist/resource-managers/index.js.map +1 -0
  52. package/dist/resource-managers/json.js.map +1 -0
  53. package/dist/resource-managers/loader.d.ts +23 -0
  54. package/dist/resource-managers/loader.js +75 -0
  55. package/dist/resource-managers/loader.js.map +1 -0
  56. package/dist/resource-managers/results.d.ts +5 -0
  57. package/dist/resource-managers/results.js.map +1 -0
  58. package/dist/resource-managers/runtime.d.ts +59 -0
  59. package/dist/{controllers/manager.js → resource-managers/runtime.js} +57 -57
  60. package/dist/resource-managers/runtime.js.map +1 -0
  61. package/dist/{controllers → resource-managers}/sqlite.d.ts +44 -44
  62. package/dist/{controllers → resource-managers}/sqlite.js +139 -130
  63. package/dist/resource-managers/sqlite.js.map +1 -0
  64. package/dist/{controllers → resource-managers}/store.d.ts +33 -33
  65. package/dist/{controllers → resource-managers}/store.js.map +1 -1
  66. package/dist/{controllers → resource-managers}/types.d.ts +41 -41
  67. package/dist/{controllers → resource-managers}/types.js.map +1 -1
  68. package/dist/resource-managers/workflows.d.ts +34 -0
  69. package/dist/{controllers → resource-managers}/workflows.js +15 -15
  70. package/dist/resource-managers/workflows.js.map +1 -0
  71. package/dist/server/channel-effects.js.map +1 -0
  72. package/dist/{host → server}/channel-supervisor.d.ts +6 -6
  73. package/dist/{host → server}/channel-supervisor.js +3 -3
  74. package/dist/server/channel-supervisor.js.map +1 -0
  75. package/dist/{host/child-worker-supervisor.d.ts → server/child-runner-supervisor.d.ts} +15 -13
  76. package/dist/{host/child-worker-supervisor.js → server/child-runner-supervisor.js} +6 -5
  77. package/dist/server/child-runner-supervisor.js.map +1 -0
  78. package/dist/{host → server}/processes.d.ts +3 -3
  79. package/dist/{host → server}/processes.js +3 -3
  80. package/dist/server/processes.js.map +1 -0
  81. package/dist/{host → server}/resolver-entry.d.ts +6 -6
  82. package/dist/{host → server}/resolver-entry.js +14 -14
  83. package/dist/server/resolver-entry.js.map +1 -0
  84. package/dist/server/resource-runner-entry.d.ts +2 -0
  85. package/dist/{host/controller-worker-entry.js → server/resource-runner-entry.js} +33 -33
  86. package/dist/server/resource-runner-entry.js.map +1 -0
  87. package/dist/server/resource-runner-protocol.d.ts +36 -0
  88. package/dist/server/resource-runner-protocol.js +49 -0
  89. package/dist/server/resource-runner-protocol.js.map +1 -0
  90. package/dist/server/resource-runner-supervisor.d.ts +21 -0
  91. package/dist/{host/worker-supervisor.js → server/resource-runner-supervisor.js} +17 -17
  92. package/dist/server/resource-runner-supervisor.js.map +1 -0
  93. package/dist/{host → server}/rpc-bridge.d.ts +3 -3
  94. package/dist/{host → server}/rpc-bridge.js +3 -3
  95. package/dist/server/rpc-bridge.js.map +1 -0
  96. package/dist/{host → server}/rpc-executor.d.ts +1 -1
  97. package/dist/{host → server}/rpc-executor.js +3 -3
  98. package/dist/server/rpc-executor.js.map +1 -0
  99. package/dist/{host/host-entry.js → server/server-entry.js} +6 -6
  100. package/dist/server/server-entry.js.map +1 -0
  101. package/dist/{host/runner.d.ts → server/server.d.ts} +39 -38
  102. package/dist/{host/runner.js → server/server.js} +408 -374
  103. package/dist/server/server.js.map +1 -0
  104. package/dist/{host → server}/state.d.ts +25 -25
  105. package/dist/{host → server}/state.js +49 -49
  106. package/dist/server/state.js.map +1 -0
  107. package/dist/{host → server}/view.d.ts +7 -7
  108. package/dist/{host → server}/view.js +13 -13
  109. package/dist/server/view.js.map +1 -0
  110. package/dist/server/workflow-runner-content.d.ts +6 -0
  111. package/dist/server/workflow-runner-content.js +96 -0
  112. package/dist/server/workflow-runner-content.js.map +1 -0
  113. package/dist/{host/worker-entry.d.ts → server/workflow-runner-entry.d.ts} +3 -3
  114. package/dist/{host/worker-entry.js → server/workflow-runner-entry.js} +68 -35
  115. package/dist/server/workflow-runner-entry.js.map +1 -0
  116. package/dist/server/workflow-runner-protocol.d.ts +69 -0
  117. package/dist/server/workflow-runner-protocol.js +176 -0
  118. package/dist/server/workflow-runner-protocol.js.map +1 -0
  119. package/dist/{host/worker-store.d.ts → server/workflow-runner-store.d.ts} +11 -11
  120. package/dist/{host/worker-store.js → server/workflow-runner-store.js} +8 -8
  121. package/dist/server/workflow-runner-store.js.map +1 -0
  122. package/dist/server/workflow-runner-supervisor.d.ts +22 -0
  123. package/dist/server/workflow-runner-supervisor.js +56 -0
  124. package/dist/server/workflow-runner-supervisor.js.map +1 -0
  125. package/dist/state/prune.d.ts +1 -1
  126. package/dist/state/prune.js +17 -10
  127. package/dist/state/prune.js.map +1 -1
  128. package/dist/state/schema.js +2 -2
  129. package/dist/state/workflow-messages.d.ts +1 -1
  130. package/dist/state/workflow-messages.js +1 -1
  131. package/dist/state/workflow-messages.js.map +1 -1
  132. package/dist/viewer/backup.js +1 -1
  133. package/dist/viewer/backup.js.map +1 -1
  134. package/dist/viewer/cli.d.ts +2 -2
  135. package/dist/viewer/cli.js +46 -32
  136. package/dist/viewer/cli.js.map +1 -1
  137. package/dist/viewer/tui.d.ts +1 -1
  138. package/dist/viewer/tui.js +1 -1
  139. package/dist/viewer/tui.js.map +1 -1
  140. package/dist/workflows/command-batch.js +2 -2
  141. package/dist/workflows/engine.js +14 -15
  142. package/dist/workflows/engine.js.map +1 -1
  143. package/dist/workflows/store.d.ts +12 -11
  144. package/dist/workflows/store.js +24 -18
  145. package/dist/workflows/store.js.map +1 -1
  146. package/dist/workflows/types.d.ts +2 -2
  147. package/docs/2026-08-20-durable-workflow-launch-plan.md +12 -12
  148. package/docs/2026-08-25-workflow-follow-ups.md +7 -7
  149. package/docs/2026-08-25-workflow-settings.md +3 -3
  150. package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
  151. package/docs/2026-09-01-restore-session-delivery-controls-plan.md +5 -5
  152. package/docs/2026-09-01-unified-workflow-client-plan.md +6 -6
  153. package/docs/2026-09-02-installed-live-e2e-plan.md +3 -3
  154. package/docs/2026-09-02-unify-workflow-messages-plan.md +8 -8
  155. package/docs/2026-09-04-workflow-run-state-plan.md +6 -6
  156. package/docs/DEFERRED_TURNS.md +7 -7
  157. package/docs/DESIGN_PHILOSOPHY.md +1 -1
  158. package/docs/HUMAN_DECISIONS.md +11 -11
  159. package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -4
  160. package/docs/MONITOR.md +1 -1
  161. package/docs/RESOURCE_MANAGERS.md +221 -0
  162. package/docs/SQLITE_STATE.md +35 -33
  163. package/docs/WORKFLOW_COMPOSITION.md +1 -1
  164. package/docs/{WORKFLOW_HOST.md → WORKFLOW_SERVER.md} +125 -119
  165. package/docs/WORKFLOW_STEP_MESSAGES.md +18 -18
  166. package/docs/WORKFLOW_UPDATES.md +16 -16
  167. package/docs/development.md +15 -14
  168. package/docs/live-replay-protocol.md +20 -20
  169. package/docs/plans/2026-08-04-controller-runtime-plan.md +25 -25
  170. package/docs/plans/2026-08-05-always-on-workflows-plan.md +8 -8
  171. package/docs/plans/2026-08-10-agent-managed-monitor-workflows-plan.md +2 -2
  172. package/docs/plans/2026-08-13-session-addressed-workflow-notifications-plan.md +1 -1
  173. package/docs/plans/2026-08-16-workflow-updates-plan.md +5 -5
  174. package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
  175. package/docs/plans/2026-08-20-bounded-command-batches-plan.md +1 -1
  176. package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +3 -3
  177. package/docs/plans/2026-08-21-sanity-check-plan.md +2 -2
  178. package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +5 -5
  179. package/docs/plans/2026-08-23-sqlite-state-plan.md +25 -25
  180. package/docs/plans/2026-08-25-live-workflow-settings-plan.md +4 -4
  181. package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +3 -3
  182. package/docs/plans/2026-09-04-workflow-runner-resume-state-plan.md +318 -0
  183. package/docs/plans/piw-viewer-experience-implementation-plan.md +1 -1
  184. package/docs/tui-viewer.md +9 -9
  185. package/docs/workflows.md +72 -66
  186. package/examples/{controllers/pull-request.controller.ts → resource-managers/pull-request.resource-manager.ts} +12 -12
  187. package/herdr-plugin.toml +1 -1
  188. package/package.json +5 -5
  189. package/protocol/client.v1.schema.json +7 -7
  190. package/protocol/fixtures/client-v1.json +1 -1
  191. package/src/builtins/monitor.workflow.ts +9 -9
  192. package/src/builtins/pi-agent-group.ts +3 -3
  193. package/src/channels/adapter-entry.ts +14 -14
  194. package/src/client/client.ts +33 -32
  195. package/src/client/protocol.ts +16 -11
  196. package/src/client/resolver.ts +4 -4
  197. package/src/client/view.ts +1 -1
  198. package/src/extension/index.ts +44 -34
  199. package/src/extension/recorder.ts +1 -1
  200. package/src/extension/remote-recorder-store.ts +2 -2
  201. package/src/extension/resource-manager-command.ts +45 -0
  202. package/src/extension/session-delivery.ts +2 -2
  203. package/src/extension/session-view.ts +1 -1
  204. package/src/extension/workflow-message-coordinator.ts +6 -6
  205. package/src/{controllers → resource-managers}/conditions.ts +23 -23
  206. package/src/resource-managers/definition.ts +71 -0
  207. package/src/{controllers → resource-managers}/effects.ts +9 -9
  208. package/src/resource-managers/errors.ts +27 -0
  209. package/src/resource-managers/index.ts +88 -0
  210. package/src/resource-managers/loader.ts +111 -0
  211. package/src/{controllers → resource-managers}/results.ts +4 -4
  212. package/src/{controllers/manager.ts → resource-managers/runtime.ts} +95 -92
  213. package/src/{controllers → resource-managers}/sqlite.ts +198 -186
  214. package/src/{controllers → resource-managers}/store.ts +46 -38
  215. package/src/{controllers → resource-managers}/types.ts +50 -41
  216. package/src/{controllers → resource-managers}/workflows.ts +43 -41
  217. package/src/{host → server}/channel-supervisor.ts +8 -8
  218. package/src/{host/child-worker-supervisor.ts → server/child-runner-supervisor.ts} +22 -18
  219. package/src/{host → server}/processes.ts +3 -3
  220. package/src/{host → server}/resolver-entry.ts +28 -25
  221. package/src/{host/controller-worker-entry.ts → server/resource-runner-entry.ts} +67 -65
  222. package/src/server/resource-runner-protocol.ts +103 -0
  223. package/src/server/resource-runner-supervisor.ts +76 -0
  224. package/src/{host → server}/rpc-bridge.ts +3 -3
  225. package/src/{host → server}/rpc-executor.ts +4 -4
  226. package/src/{host/host-entry.ts → server/server-entry.ts} +5 -5
  227. package/src/{host/runner.ts → server/server.ts} +526 -461
  228. package/src/{host → server}/state.ts +78 -67
  229. package/src/{host → server}/view.ts +15 -15
  230. package/src/server/workflow-runner-content.ts +119 -0
  231. package/src/{host/worker-entry.ts → server/workflow-runner-entry.ts} +98 -57
  232. package/src/server/workflow-runner-protocol.ts +241 -0
  233. package/src/{host/worker-store.ts → server/workflow-runner-store.ts} +18 -20
  234. package/src/server/workflow-runner-supervisor.ts +79 -0
  235. package/src/state/prune.ts +27 -9
  236. package/src/state/schema.ts +2 -2
  237. package/src/state/workflow-messages.ts +1 -1
  238. package/src/viewer/backup.ts +1 -1
  239. package/src/viewer/cli.ts +50 -36
  240. package/src/viewer/tui.ts +1 -1
  241. package/src/workflows/command-batch.ts +2 -2
  242. package/src/workflows/engine.ts +14 -15
  243. package/src/workflows/store.ts +31 -28
  244. package/src/workflows/types.ts +2 -2
  245. package/dist/controllers/conditions.d.ts +0 -6
  246. package/dist/controllers/conditions.js.map +0 -1
  247. package/dist/controllers/definition.d.ts +0 -6
  248. package/dist/controllers/definition.js +0 -45
  249. package/dist/controllers/definition.js.map +0 -1
  250. package/dist/controllers/effects.d.ts +0 -15
  251. package/dist/controllers/effects.js.map +0 -1
  252. package/dist/controllers/errors.d.ts +0 -12
  253. package/dist/controllers/errors.js +0 -25
  254. package/dist/controllers/errors.js.map +0 -1
  255. package/dist/controllers/index.d.ts +0 -12
  256. package/dist/controllers/index.js +0 -12
  257. package/dist/controllers/index.js.map +0 -1
  258. package/dist/controllers/json.js.map +0 -1
  259. package/dist/controllers/loader.d.ts +0 -23
  260. package/dist/controllers/loader.js +0 -74
  261. package/dist/controllers/loader.js.map +0 -1
  262. package/dist/controllers/manager.d.ts +0 -59
  263. package/dist/controllers/manager.js.map +0 -1
  264. package/dist/controllers/results.d.ts +0 -5
  265. package/dist/controllers/results.js.map +0 -1
  266. package/dist/controllers/sqlite.js.map +0 -1
  267. package/dist/controllers/workflows.d.ts +0 -34
  268. package/dist/controllers/workflows.js.map +0 -1
  269. package/dist/extension/controller-command.js.map +0 -1
  270. package/dist/host/channel-effects.js.map +0 -1
  271. package/dist/host/channel-supervisor.js.map +0 -1
  272. package/dist/host/child-worker-supervisor.js.map +0 -1
  273. package/dist/host/controller-worker-entry.d.ts +0 -2
  274. package/dist/host/controller-worker-entry.js.map +0 -1
  275. package/dist/host/controller-worker-protocol.d.ts +0 -36
  276. package/dist/host/controller-worker-protocol.js +0 -49
  277. package/dist/host/controller-worker-protocol.js.map +0 -1
  278. package/dist/host/controller-worker-supervisor.d.ts +0 -21
  279. package/dist/host/controller-worker-supervisor.js +0 -54
  280. package/dist/host/controller-worker-supervisor.js.map +0 -1
  281. package/dist/host/host-entry.js.map +0 -1
  282. package/dist/host/processes.js.map +0 -1
  283. package/dist/host/resolver-entry.js.map +0 -1
  284. package/dist/host/rpc-bridge.js.map +0 -1
  285. package/dist/host/rpc-executor.js.map +0 -1
  286. package/dist/host/runner.js.map +0 -1
  287. package/dist/host/state.js.map +0 -1
  288. package/dist/host/view.js.map +0 -1
  289. package/dist/host/worker-entry.js.map +0 -1
  290. package/dist/host/worker-protocol.d.ts +0 -46
  291. package/dist/host/worker-protocol.js +0 -122
  292. package/dist/host/worker-protocol.js.map +0 -1
  293. package/dist/host/worker-store.js.map +0 -1
  294. package/dist/host/worker-supervisor.d.ts +0 -22
  295. package/dist/host/worker-supervisor.js.map +0 -1
  296. package/docs/CONTROLLERS.md +0 -217
  297. package/src/controllers/definition.ts +0 -65
  298. package/src/controllers/errors.ts +0 -27
  299. package/src/controllers/index.ts +0 -88
  300. package/src/controllers/loader.ts +0 -104
  301. package/src/extension/controller-command.ts +0 -45
  302. package/src/host/controller-worker-protocol.ts +0 -104
  303. package/src/host/controller-worker-supervisor.ts +0 -79
  304. package/src/host/worker-protocol.ts +0 -176
  305. package/src/host/worker-supervisor.ts +0 -74
  306. /package/dist/{controllers → resource-managers}/json.d.ts +0 -0
  307. /package/dist/{controllers → resource-managers}/json.js +0 -0
  308. /package/dist/{controllers → resource-managers}/results.js +0 -0
  309. /package/dist/{controllers → resource-managers}/store.js +0 -0
  310. /package/dist/{controllers → resource-managers}/types.js +0 -0
  311. /package/dist/{host → server}/channel-effects.d.ts +0 -0
  312. /package/dist/{host → server}/channel-effects.js +0 -0
  313. /package/dist/{host/host-entry.d.ts → server/server-entry.d.ts} +0 -0
  314. /package/src/{controllers → resource-managers}/json.ts +0 -0
  315. /package/src/{host → server}/channel-effects.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/resource-managers/results.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB;IAIjC,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QACF,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpB,IAAI,EAAE,SAAS;YACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QACF,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO;gBACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACT,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,MAA4C;IAE5C,OAAO,mBAAmB,EAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,MAA4C;IAE5C,OAAO,mBAAmB,EAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,MAA4C;IAE5C,OAAO,mBAAmB,EAAW,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { ResourceManagerStore } from "./store.js";
2
+ import type { AnyResourceManagerDefinition, ResourceManagerDefinition, ManagedResource, ManagedResourceRef } from "./types.js";
3
+ import { ResourceManagerWorkflowCoordinator, type ResourceManagerWorkflowScheduler } from "./workflows.js";
4
+ export type ResourceManagerRuntimeOptions = {
5
+ store: ResourceManagerStore;
6
+ resourceManagers: AnyResourceManagerDefinition[];
7
+ workflowScheduler?: ResourceManagerWorkflowScheduler;
8
+ maxConcurrent?: number;
9
+ resourceManagerConcurrency?: Record<string, number>;
10
+ defaultTimeoutMs?: number;
11
+ leaseMs?: number;
12
+ pollIntervalMs?: number;
13
+ baseBackoffMs?: number;
14
+ maxBackoffMs?: number;
15
+ jitterRatio?: number;
16
+ now?: () => Date;
17
+ random?: () => number;
18
+ };
19
+ export declare class ResourceManagerRuntime {
20
+ readonly store: ResourceManagerStore;
21
+ private readonly ownerId;
22
+ private readonly definitions;
23
+ private readonly workflowCoordinator;
24
+ private readonly maxConcurrent;
25
+ private readonly resourceManagerConcurrency;
26
+ private readonly defaultTimeoutMs;
27
+ private readonly leaseMs;
28
+ private readonly pollIntervalMs;
29
+ private readonly baseBackoffMs;
30
+ private readonly maxBackoffMs;
31
+ private readonly jitterRatio;
32
+ private readonly now;
33
+ private readonly random;
34
+ private readonly activeByResourceManager;
35
+ private readonly activeReconciles;
36
+ private runAbort;
37
+ private runnerTasks;
38
+ constructor(options: ResourceManagerRuntimeOptions);
39
+ putResource<TSpec, TStatus>(definition: ResourceManagerDefinition<TSpec, TStatus>, key: string, spec: TSpec): ManagedResource<TSpec, TStatus>;
40
+ putResourceByName(resourceManager: string, key: string, spec: unknown): ManagedResource;
41
+ requestDeletion(ref: ManagedResourceRef): ManagedResource;
42
+ enqueue(ref: ManagedResourceRef, afterMs?: number): void;
43
+ start(): void;
44
+ stop(): Promise<void>;
45
+ runOne(): Promise<boolean>;
46
+ runUntilIdle(maxReconciles?: number): Promise<number>;
47
+ get workflowRequests(): ResourceManagerWorkflowCoordinator;
48
+ private runnerLoop;
49
+ private claimNext;
50
+ private eligibleResourceManagers;
51
+ private processClaim;
52
+ private reconcileClaim;
53
+ private callReconciler;
54
+ private finishSuccessfulClaim;
55
+ private finishFailedClaim;
56
+ private backoffMs;
57
+ private readyQueueExists;
58
+ private recordEvent;
59
+ }
@@ -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,7 +95,7 @@ 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
101
  private readonly workflowMessages;
@@ -106,54 +106,54 @@ export declare class SqliteControllerStore implements ControllerStore {
106
106
  readOnly?: boolean;
107
107
  projectPath?: string;
108
108
  state?: StateDatabase;
109
- /** Host-only global view. Project-scoped mutations still require projectPath. */
109
+ /** Server-only global view. Project-scoped mutations still require projectPath. */
110
110
  global?: boolean;
111
111
  });
112
112
  close(): void;
113
113
  putResource<TSpec, TStatus>(options: {
114
- controller: string;
114
+ resourceManager: string;
115
115
  key: string;
116
116
  spec: TSpec;
117
117
  initialStatus: TStatus;
118
118
  now?: string;
119
- }): ControllerResource<TSpec, TStatus>;
120
- getResource<TSpec = unknown, TStatus = unknown>(ref: ControllerResourceRef): ControllerResource<TSpec, TStatus> | undefined;
121
- 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;
122
122
  listResources<TSpec = unknown, TStatus = unknown>(options?: {
123
- controller?: string;
124
- }): ControllerResource<TSpec, TStatus>[];
123
+ resourceManager?: string;
124
+ }): ManagedResource<TSpec, TStatus>[];
125
125
  updateStatus<TStatus>(options: {
126
- ref: ControllerResourceRef;
126
+ ref: ManagedResourceRef;
127
127
  expectedResourceVersion: number;
128
- claim: ControllerQueueClaim;
129
- status: ControllerResourceStatus<TStatus>;
128
+ claim: ResourceManagerQueueClaim;
129
+ status: ManagedResourceStatus<TStatus>;
130
130
  finalizers?: string[];
131
131
  now?: string;
132
- }): ControllerResource<unknown, TStatus>;
133
- requestDeletion(ref: ControllerResourceRef, nowValue?: string): ControllerResource;
132
+ }): ManagedResource<unknown, TStatus>;
133
+ requestDeletion(ref: ManagedResourceRef, nowValue?: string): ManagedResource;
134
134
  updateFinalizers(options: {
135
- ref: ControllerResourceRef;
135
+ ref: ManagedResourceRef;
136
136
  expectedResourceVersion: number;
137
137
  finalizers: string[];
138
138
  now?: string;
139
- }): ControllerResource;
140
- deleteResource(ref: ControllerResourceRef, expectedResourceVersion: number, claim: ControllerQueueClaim): boolean;
141
- enqueue(ref: ControllerResourceRef, availableAt?: string): void;
139
+ }): ManagedResource;
140
+ deleteResource(ref: ManagedResourceRef, expectedResourceVersion: number, claim: ResourceManagerQueueClaim): boolean;
141
+ enqueue(ref: ManagedResourceRef, availableAt?: string): void;
142
142
  claimNext(options: {
143
- controllers: string[];
143
+ resourceManagers: string[];
144
144
  ownerId: string;
145
145
  leaseMs: number;
146
146
  now?: string;
147
- exclude?: ControllerResourceRef[];
148
- }): ControllerQueueClaim | undefined;
149
- renewClaim(claim: ControllerQueueClaim, leaseMs: number, nowValue?: string): boolean;
150
- settleClaim(claim: ControllerQueueClaim, nowValue?: string): boolean;
151
- 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;
152
152
  listQueue(): QueueItem[];
153
153
  reserveEffect(options: {
154
154
  key: string;
155
155
  resourceUid: string;
156
- claim: ControllerQueueClaim;
156
+ claim: ResourceManagerQueueClaim;
157
157
  generation: number;
158
158
  kind: string;
159
159
  requestFingerprint: string;
@@ -163,7 +163,7 @@ export declare class SqliteControllerStore implements ControllerStore {
163
163
  updateEffect(options: {
164
164
  resourceUid: string;
165
165
  key: string;
166
- claim: ControllerQueueClaim;
166
+ claim: ResourceManagerQueueClaim;
167
167
  state: EffectRecord["state"];
168
168
  externalRef?: string;
169
169
  error?: string;
@@ -172,29 +172,29 @@ export declare class SqliteControllerStore implements ControllerStore {
172
172
  listEffects(resourceUid: string): EffectRecord[];
173
173
  reserveWorkflow(options: {
174
174
  resourceUid: string;
175
- claim: ControllerQueueClaim;
175
+ claim: ResourceManagerQueueClaim;
176
176
  requestKey: string;
177
177
  workflow: string;
178
178
  inputFingerprint: string;
179
179
  }): WorkflowReservation;
180
180
  getWorkflow(resourceUid: string, requestKey: string): ChildWorkflowRecord | undefined;
181
181
  getWorkflowByRequestId(requestId: string): ChildWorkflowRecord | undefined;
182
- updateWorkflow(requestId: string, update: WorkflowRecordUpdate, claim: ControllerQueueClaim): ChildWorkflowRecord;
182
+ updateWorkflow(requestId: string, update: WorkflowRecordUpdate, claim: ResourceManagerQueueClaim): ChildWorkflowRecord;
183
183
  completeWorkflow(requestId: string, update: WorkflowRecordUpdate): ChildWorkflowRecord;
184
184
  listWorkflows(resourceUid: string): ChildWorkflowRecord[];
185
185
  recordEvent(options: {
186
- controller: string;
186
+ resourceManager: string;
187
187
  key: string;
188
- claim?: ControllerQueueClaim;
188
+ claim?: ResourceManagerQueueClaim;
189
189
  type: string;
190
190
  payload?: JsonObject;
191
191
  now?: string;
192
- }): ControllerEvent;
192
+ }): ResourceManagerEvent;
193
193
  listEvents(options?: {
194
- controller?: string;
194
+ resourceManager?: string;
195
195
  key?: string;
196
196
  limit?: number;
197
- }): ControllerEvent[];
197
+ }): ResourceManagerEvent[];
198
198
  reserveWorkflowRun(options: WorkflowRunReservationOptions): WorkflowRunQueueRecord;
199
199
  private reserveWorkflowRunInTransaction;
200
200
  prepareOrAdoptWorkflowRun(options: WorkflowRunClaimOptions): WorkflowRunPreparationResult;
@@ -228,7 +228,7 @@ export declare class SqliteControllerStore implements ControllerStore {
228
228
  leaseMs: number;
229
229
  now?: string;
230
230
  }): WorkflowRunQueueRecord | undefined;
231
- /** Schedule a worker that validates one pending interactive submission. */
231
+ /** Schedule a runner that validates one pending interactive submission. */
232
232
  claimWorkflowRunForInteractionValidation(options: {
233
233
  runId: string;
234
234
  runnerId: string;
@@ -236,7 +236,7 @@ export declare class SqliteControllerStore implements ControllerStore {
236
236
  leaseMs: number;
237
237
  now?: string;
238
238
  }): WorkflowRunQueueRecord | undefined;
239
- /** Take a short host claim without scheduling a parked interactive run. */
239
+ /** Take a short server claim without scheduling a parked interactive run. */
240
240
  claimWorkflowRunForControl(options: {
241
241
  runId: string;
242
242
  runnerId: string;
@@ -290,7 +290,7 @@ export declare class SqliteControllerStore implements ControllerStore {
290
290
  claimToken: string;
291
291
  now?: string;
292
292
  }): boolean;
293
- parkWorkflowRunForWorkerNoProgress(options: {
293
+ parkWorkflowRunForRunnerNoProgress(options: {
294
294
  runId: string;
295
295
  claimToken: string;
296
296
  detail: string;
@@ -362,18 +362,18 @@ export declare class SqliteControllerStore implements ControllerStore {
362
362
  private ensureProject;
363
363
  private findProject;
364
364
  private requireProjectId;
365
- private controllerRow;
366
- private requireControllerRow;
367
- private requireControllerRowByUid;
365
+ private resourceManagerRow;
366
+ private requireResourceManagerRow;
367
+ private requireResourceManagerRowByUid;
368
368
  private requireResource;
369
- private mapControllerResource;
369
+ private mapManagedResource;
370
370
  private finalizers;
371
371
  private replaceFinalizers;
372
- private enqueueControllerRow;
372
+ private enqueueResourceManagerRow;
373
373
  private queueErrors;
374
374
  private queueVersion;
375
- private settleControllerClaim;
376
- private assertControllerClaim;
375
+ private settleResourceManagerClaim;
376
+ private assertResourceManagerClaim;
377
377
  private requireLease;
378
378
  private releaseLease;
379
379
  private resourceRevision;