@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
@@ -0,0 +1,96 @@
1
+ import { createHash } from "node:crypto";
2
+ import { canonicalJson, parseJson } from "../state/json.js";
3
+ import { WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES, WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA, WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA, encodeRunnerLine, } from "./workflow-runner-protocol.js";
4
+ const CONTENT_MEDIA_TYPE = "application/json";
5
+ export function boundRunnerResponse(state, allowedDigests, response) {
6
+ try {
7
+ encodeRunnerLine(response);
8
+ return response;
9
+ }
10
+ catch {
11
+ if (response.result === undefined)
12
+ return responseTooLarge(response.messageId);
13
+ try {
14
+ const content = Buffer.from(canonicalJson(response.result), "utf8");
15
+ const sha256 = state.putBlob(content, CONTENT_MEDIA_TYPE).toString("hex");
16
+ allowedDigests.add(sha256);
17
+ const referenced = {
18
+ ...response,
19
+ result: {
20
+ schema: WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA,
21
+ sha256,
22
+ mediaType: CONTENT_MEDIA_TYPE,
23
+ bytes: content.byteLength,
24
+ },
25
+ };
26
+ encodeRunnerLine(referenced);
27
+ return referenced;
28
+ }
29
+ catch {
30
+ return responseTooLarge(response.messageId);
31
+ }
32
+ }
33
+ }
34
+ export function readRunnerContentChunk(state, allowedDigests, sha256, offset) {
35
+ if (!/^[0-9a-f]{64}$/u.test(sha256) || !allowedDigests.has(sha256)) {
36
+ throw new Error("Workflow runner content is unavailable");
37
+ }
38
+ if (!Number.isSafeInteger(offset) || offset < 0) {
39
+ throw new Error("Workflow runner content offset is invalid");
40
+ }
41
+ const stored = state.readBlob(Buffer.from(sha256, "hex"));
42
+ if (stored === undefined || stored.mediaType !== CONTENT_MEDIA_TYPE) {
43
+ throw new Error("Workflow runner content is unavailable");
44
+ }
45
+ if (offset > stored.byteLength)
46
+ throw new Error("Workflow runner content offset is invalid");
47
+ const nextOffset = Math.min(offset + WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES, stored.byteLength);
48
+ return {
49
+ schema: WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA,
50
+ sha256,
51
+ mediaType: CONTENT_MEDIA_TYPE,
52
+ bytes: stored.byteLength,
53
+ offset,
54
+ nextOffset,
55
+ complete: nextOffset === stored.byteLength,
56
+ data: stored.content.subarray(offset, nextOffset).toString("base64url"),
57
+ };
58
+ }
59
+ export async function materializeRunnerContent(reference, readChunk) {
60
+ const parts = [];
61
+ let offset = 0;
62
+ for (;;) {
63
+ const chunk = await readChunk(offset);
64
+ const bytes = Buffer.from(chunk.data, "base64url");
65
+ if (chunk.sha256 !== reference.sha256 ||
66
+ chunk.mediaType !== reference.mediaType ||
67
+ chunk.bytes !== reference.bytes ||
68
+ chunk.offset !== offset ||
69
+ chunk.nextOffset !== offset + bytes.byteLength ||
70
+ chunk.nextOffset > reference.bytes ||
71
+ chunk.complete !== (chunk.nextOffset === reference.bytes)) {
72
+ throw new Error("Workflow runner content chunk is invalid");
73
+ }
74
+ parts.push(bytes);
75
+ offset = chunk.nextOffset;
76
+ if (chunk.complete)
77
+ break;
78
+ if (bytes.byteLength === 0)
79
+ throw new Error("Workflow runner content read made no progress");
80
+ }
81
+ const content = Buffer.concat(parts);
82
+ if (content.byteLength !== reference.bytes ||
83
+ createHash("sha256").update(content).digest("hex") !== reference.sha256) {
84
+ throw new Error("Workflow runner content does not match its reference");
85
+ }
86
+ return parseJson(content.toString("utf8"));
87
+ }
88
+ function responseTooLarge(messageId) {
89
+ return {
90
+ schema: "pi-workflows.worker-response.v1",
91
+ messageId,
92
+ outcome: "rejected",
93
+ error: "Workflow runner response could not be transferred within the protocol limit",
94
+ };
95
+ }
96
+ //# sourceMappingURL=workflow-runner-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-runner-content.js","sourceRoot":"","sources":["../../src/server/workflow-runner-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,wCAAwC,EACxC,gBAAgB,GAIjB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,kBAAkB,GAAG,kBAA2B,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CACjC,KAAoB,EACpB,cAA2B,EAC3B,QAAgC;IAEhC,IAAI,CAAC;QACH,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1E,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,UAAU,GAA2B;gBACzC,GAAG,QAAQ;gBACX,MAAM,EAAE;oBACN,MAAM,EAAE,wCAAwC;oBAChD,MAAM;oBACN,SAAS,EAAE,kBAAkB;oBAC7B,KAAK,EAAE,OAAO,CAAC,UAAU;iBAC1B;aACF,CAAC;YACF,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,cAAmC,EACnC,MAAc,EACd,MAAc;IAEd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,mCAAmC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7F,OAAO;QACL,MAAM,EAAE,oCAAoC;QAC5C,MAAM;QACN,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM;QACN,UAAU;QACV,QAAQ,EAAE,UAAU,KAAK,MAAM,CAAC,UAAU;QAC1C,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAyC,EACzC,SAAkE;IAElE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnD,IACE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;YACjC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;YACvC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;YAC/B,KAAK,CAAC,MAAM,KAAK,MAAM;YACvB,KAAK,CAAC,UAAU,KAAK,MAAM,GAAG,KAAK,CAAC,UAAU;YAC9C,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK;YAClC,KAAK,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,KAAK,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAC1B,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM;QAC1B,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,IACE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,KAAK;QACtC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,EACvE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,OAAO;QACL,MAAM,EAAE,iCAAiC;QACzC,SAAS;QACT,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,6EAA6E;KACrF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import { WorkflowEngine } from "../workflows/engine.js";
3
+ import type { AgentStepContract, AgentStepSubmission, WorkflowDefinition, WorkflowSource } from "../workflows/types.js";
4
+ import { type WorkflowRunnerCommand } from "./workflow-runner-protocol.js";
5
+ export declare function validateAcceptedAssistantSubmission(submission: AgentStepSubmission, contract: AgentStepContract): {
6
+ ok: true;
7
+ value: AgentStepSubmission;
8
+ } | {
9
+ ok: false;
10
+ error: string;
11
+ };
12
+ export declare function executeRunnerRunCommand(engine: Pick<WorkflowEngine, "run" | "resumeRun" | "continueRun">, workflow: WorkflowDefinition, runId: string, workflowSource: WorkflowSource, command: WorkflowRunnerCommand): Promise<import("../workflows/types.js").WorkflowRunResult>;
13
+ export declare function runWorkflowRunner(): Promise<number>;
@@ -9,11 +9,12 @@ import { WorkflowEngine } from "../workflows/engine.js";
9
9
  import { ClaimLostError, RunParkedError, WorkflowSourceChangedError, errorMessage, } from "../workflows/errors.js";
10
10
  import { hashWorkflowSource, resolveWorkflowSource } from "../workflows/loader.js";
11
11
  import { RpcStepExecutor } from "./rpc-executor.js";
12
- import { encodeWorkerLine, parseWorkerResponse, } from "./worker-protocol.js";
13
- import { HostBackedWorkflowStore } from "./worker-store.js";
14
- const STARTUP_ENV = "PI_WORKFLOWS_WORKER_LAUNCH";
12
+ import { materializeRunnerContent } from "./workflow-runner-content.js";
13
+ import { MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES, encodeRunnerLine, isRunnerContentChunk, isRunnerContentReference, parseRunnerResponse, } from "./workflow-runner-protocol.js";
14
+ import { ServerBackedWorkflowStore, } from "./workflow-runner-store.js";
15
+ const STARTUP_ENV = "PI_WORKFLOWS_WORKFLOW_RUNNER_LAUNCH";
15
16
  const PRESENTATION_TIMEOUT_MS = 30_000;
16
- class StdioWorkerTransport {
17
+ class StdioRunnerTransport {
17
18
  launch;
18
19
  pending = new Map();
19
20
  buffered = Buffer.alloc(0);
@@ -32,17 +33,17 @@ class StdioWorkerTransport {
32
33
  operation: options.operation,
33
34
  runId: this.launch.runId,
34
35
  generation: this.launch.generation,
35
- workerEpoch: this.launch.workerEpoch,
36
+ runnerEpoch: this.launch.runnerEpoch,
36
37
  expectedRevision: options.expectedRevision,
37
38
  ...(options.attemptId === undefined ? {} : { attemptId: options.attemptId }),
38
39
  payload: options.payload,
39
40
  };
40
- const response = await this.send(message);
41
+ const response = await this.sendResolved(message);
41
42
  if (response.outcome === "claimLost") {
42
43
  throw new ClaimLostError(this.launch.runId, "ownerChanged");
43
44
  }
44
45
  if (response.outcome === "rejected") {
45
- throw new Error(response.error ?? "Workflow worker message was rejected");
46
+ throw new Error(response.error ?? "Workflow runner message was rejected");
46
47
  }
47
48
  return {
48
49
  ...(response.result === undefined ? {} : { result: response.result }),
@@ -50,7 +51,7 @@ class StdioWorkerTransport {
50
51
  };
51
52
  }
52
53
  async control(operation, payload) {
53
- return await this.send({
54
+ return await this.sendResolved({
54
55
  schema: "pi-workflows.worker-message.v1",
55
56
  launchSchema: this.launch.schema,
56
57
  messageId: randomUUID(),
@@ -58,7 +59,7 @@ class StdioWorkerTransport {
58
59
  operation,
59
60
  runId: this.launch.runId,
60
61
  generation: this.launch.generation,
61
- workerEpoch: this.launch.workerEpoch,
62
+ runnerEpoch: this.launch.runnerEpoch,
62
63
  expectedRevision: 0,
63
64
  payload,
64
65
  });
@@ -67,20 +68,52 @@ class StdioWorkerTransport {
67
68
  process.stdin.pause();
68
69
  process.stdin.removeAllListeners("data");
69
70
  process.stdin.removeAllListeners("error");
70
- this.failAll(new Error("Workflow worker transport closed"));
71
+ this.failAll(new Error("Workflow runner transport closed"));
72
+ }
73
+ async sendResolved(message) {
74
+ const response = await this.send(message);
75
+ if (!isRunnerContentReference(response.result))
76
+ return response;
77
+ const reference = response.result;
78
+ const expectedRevision = response.revision ?? message.expectedRevision;
79
+ return {
80
+ ...response,
81
+ result: await materializeRunnerContent(reference, async (offset) => {
82
+ const chunkResponse = await this.send({
83
+ schema: "pi-workflows.worker-message.v1",
84
+ launchSchema: this.launch.schema,
85
+ messageId: randomUUID(),
86
+ kind: "runner.progress",
87
+ operation: "content.read",
88
+ runId: this.launch.runId,
89
+ generation: this.launch.generation,
90
+ runnerEpoch: this.launch.runnerEpoch,
91
+ expectedRevision,
92
+ payload: { sha256: reference.sha256, offset },
93
+ });
94
+ if (chunkResponse.outcome === "claimLost") {
95
+ throw new ClaimLostError(this.launch.runId, "ownerChanged");
96
+ }
97
+ if (chunkResponse.outcome !== "accepted" || !isRunnerContentChunk(chunkResponse.result)) {
98
+ throw new Error(chunkResponse.error ?? "Workflow runner content read was rejected");
99
+ }
100
+ return chunkResponse.result;
101
+ }),
102
+ };
71
103
  }
72
104
  async send(message) {
73
105
  const response = new Promise((resolve, reject) => {
74
106
  this.pending.set(message.messageId, { resolve, reject });
75
107
  });
76
- if (!process.stdout.write(encodeWorkerLine(message)))
108
+ if (!process.stdout.write(encodeRunnerLine(message)))
77
109
  await once(process.stdout, "drain");
78
110
  return await response;
79
111
  }
80
112
  onData(chunk) {
81
113
  this.buffered = Buffer.concat([this.buffered, chunk]);
82
- if (this.buffered.byteLength > 1024 * 1024 && !this.buffered.includes(0x0a)) {
83
- this.failAll(new Error("Worker response exceeds 1 MiB"));
114
+ if (this.buffered.byteLength > MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES &&
115
+ !this.buffered.includes(0x0a)) {
116
+ this.failAll(new Error("Runner response exceeds 1 MiB"));
84
117
  return;
85
118
  }
86
119
  for (;;) {
@@ -92,10 +125,10 @@ class StdioWorkerTransport {
92
125
  if (frame.byteLength === 0)
93
126
  continue;
94
127
  try {
95
- const response = parseWorkerResponse(frame);
128
+ const response = parseRunnerResponse(frame);
96
129
  const pending = this.pending.get(response.messageId);
97
130
  if (pending === undefined)
98
- throw new Error("Worker response has no pending request");
131
+ throw new Error("Runner response has no pending request");
99
132
  this.pending.delete(response.messageId);
100
133
  pending.resolve(response);
101
134
  }
@@ -213,31 +246,53 @@ export function validateAcceptedAssistantSubmission(submission, contract) {
213
246
  },
214
247
  };
215
248
  }
216
- export async function runWorkflowWorker() {
249
+ export async function executeRunnerRunCommand(engine, workflow, runId, workflowSource, command) {
250
+ switch (command.kind) {
251
+ case "start":
252
+ case "restart":
253
+ return await engine.run(workflow, command.input, { runId, workflowSource });
254
+ case "resume":
255
+ return await engine.resumeRun(workflow, runId, {
256
+ workflowSource,
257
+ ...(command.resumeInteractionAttemptId === undefined
258
+ ? {}
259
+ : { resumeInteractionAttemptId: command.resumeInteractionAttemptId }),
260
+ });
261
+ case "continue":
262
+ return await engine.continueRun(workflow, command.parentRunId, command.input, {
263
+ runId,
264
+ workflowSource,
265
+ ...(command.humanDecision === undefined
266
+ ? {}
267
+ : { humanDecision: command.humanDecision }),
268
+ });
269
+ }
270
+ }
271
+ export async function runWorkflowRunner() {
217
272
  const launch = readLaunchEnvelope();
218
- const transport = new StdioWorkerTransport(launch);
273
+ const transport = new StdioRunnerTransport(launch);
219
274
  try {
220
- const ready = await transport.control("worker.ready", {});
275
+ const ready = await transport.control("runner.ready", {});
221
276
  if (ready.outcome !== "accepted" || ready.result === undefined) {
222
- throw new Error(ready.error ?? "Workflow host rejected worker startup");
277
+ throw new Error(ready.error ?? "Workflow server rejected runner startup");
223
278
  }
224
279
  const bootstrap = ready.result;
225
- const workflowSource = parseWorkerWorkflowSources(launch.workflowSource);
280
+ const workflowSource = parseRunnerWorkflowSources(launch.workflowSource);
226
281
  let workflow;
227
282
  try {
228
283
  workflow = await resolveVerifiedWorkflow(launch.runId, workflowSource);
229
284
  }
230
285
  catch (error) {
231
- const response = await transport.control("worker.exiting", {
286
+ const response = await transport.control("runner.exiting", {
232
287
  status: "workflowLoadFailed",
233
288
  error: errorMessage(error),
234
289
  });
235
290
  if (response.outcome !== "accepted") {
236
- throw new Error(response.error ?? "Workflow host rejected the load-failure report");
291
+ throw new Error(response.error ?? "Workflow server rejected the load-failure report");
237
292
  }
238
293
  return 1;
239
294
  }
240
- const store = new HostBackedWorkflowStore(launch.runId, transport, ready.revision ?? 0);
295
+ const store = new ServerBackedWorkflowStore(launch.runId, transport, ready.revision ?? 0);
241
296
  let executor;
242
297
  let closeExecutor;
243
298
  if (bootstrap.originSessionId !== null) {
@@ -253,7 +308,7 @@ export async function runWorkflowWorker() {
253
308
  await transport.request({
254
309
  messageId: randomUUID(),
255
310
  operation: "process.register",
256
- kind: "worker.progress",
311
+ kind: "runner.progress",
257
312
  expectedRevision: 0,
258
313
  payload: { pid },
259
314
  });
@@ -262,7 +317,7 @@ export async function runWorkflowWorker() {
262
317
  await transport.request({
263
318
  messageId: randomUUID(),
264
319
  operation: "process.unregister",
265
- kind: "worker.progress",
320
+ kind: "runner.progress",
266
321
  expectedRevision: 0,
267
322
  payload: { pid },
268
323
  });
@@ -298,32 +353,9 @@ export async function runWorkflowWorker() {
298
353
  await store.requestPresentation(instructions);
299
354
  },
300
355
  });
301
- const launchOptions = typeof bootstrap.launchOptions === "object" &&
302
- bootstrap.launchOptions !== null &&
303
- !Array.isArray(bootstrap.launchOptions)
304
- ? bootstrap.launchOptions
305
- : {};
306
356
  try {
307
- const result = bootstrap.initialized
308
- ? await engine.resumeRun(workflow, launch.runId, {
309
- workflowSource: workflowSource.root,
310
- ...(bootstrap.resumeInteractionAttemptId === undefined
311
- ? {}
312
- : { resumeInteractionAttemptId: bootstrap.resumeInteractionAttemptId }),
313
- })
314
- : bootstrap.parentRunId === null
315
- ? await engine.run(workflow, bootstrap.input, {
316
- runId: launch.runId,
317
- workflowSource: workflowSource.root,
318
- })
319
- : await engine.continueRun(workflow, bootstrap.parentRunId, bootstrap.input, {
320
- runId: launch.runId,
321
- workflowSource: workflowSource.root,
322
- ...(launchOptions.humanDecision === undefined
323
- ? {}
324
- : { humanDecision: launchOptions.humanDecision }),
325
- });
326
- await transport.control("worker.exiting", {
357
+ const result = await executeRunnerRunCommand(engine, workflow, launch.runId, workflowSource.root, bootstrap.command);
358
+ await transport.control("runner.exiting", {
327
359
  status: result.state.status,
328
360
  traceSeq: result.state.traceSeq,
329
361
  });
@@ -370,13 +402,13 @@ async function resolvePresentationInstructions(workflow, state) {
370
402
  clearTimeout(timer);
371
403
  }
372
404
  }
373
- function parseWorkerWorkflowSources(value) {
405
+ function parseRunnerWorkflowSources(value) {
374
406
  if (!isRecord(value) || !isWorkflowSource(value.root) || !Array.isArray(value.mounted)) {
375
- throw new Error("Workflow worker source identity is invalid");
407
+ throw new Error("Workflow runner source identity is invalid");
376
408
  }
377
409
  const mounted = value.mounted;
378
410
  if (!mounted.every(isMountedWorkflowSource)) {
379
- throw new Error("Workflow worker mounted source identity is invalid");
411
+ throw new Error("Workflow runner mounted source identity is invalid");
380
412
  }
381
413
  return { root: value.root, mounted };
382
414
  }
@@ -422,19 +454,19 @@ function isRecord(value) {
422
454
  function readLaunchEnvelope() {
423
455
  const encoded = process.env[STARTUP_ENV];
424
456
  if (encoded === undefined)
425
- throw new Error("Workflow worker launch envelope is missing");
457
+ throw new Error("Workflow runner launch envelope is missing");
426
458
  const value = parseJson(Buffer.from(encoded, "base64url").toString("utf8"));
427
459
  if (typeof value !== "object" ||
428
460
  value === null ||
429
461
  Array.isArray(value) ||
430
462
  value.schema !== "pi-workflows.worker-launch.v1") {
431
- throw new Error("Workflow worker launch envelope is invalid");
463
+ throw new Error("Workflow runner launch envelope is invalid");
432
464
  }
433
465
  return value;
434
466
  }
435
467
  async function main() {
436
468
  try {
437
- process.exitCode = await runWorkflowWorker();
469
+ process.exitCode = await runWorkflowRunner();
438
470
  }
439
471
  catch (error) {
440
472
  process.stderr.write(`${errorMessage(error)}\n`);
@@ -443,4 +475,4 @@ async function main() {
443
475
  }
444
476
  if (process.argv[1] === fileURLToPath(import.meta.url))
445
477
  void main();
446
- //# sourceMappingURL=worker-entry.js.map
478
+ //# sourceMappingURL=workflow-runner-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-runner-entry.js","sourceRoot":"","sources":["../../src/server/workflow-runner-entry.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAYnF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,yBAAyB,GAE1B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAgBvC,MAAM,oBAAoB;IAOK,MAAM;IANlB,OAAO,GAAG,IAAI,GAAG,EAG/B,CAAC;IACI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,YAA6B,MAAoC;sBAApC,MAAM;QACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA+D;QAC3E,MAAM,OAAO,GAA0B;YACrC,MAAM,EAAE,gCAAgC;YACxC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5E,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,sCAAsC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;YACL,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrE,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAA4C,EAC5C,OAAkB;QAElB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC;YAC7B,MAAM,EAAE,gCAAgC;YACxC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAChC,SAAS,EAAE,UAAU,EAAE;YACvB,IAAI,EAAE,SAAS;YACf,SAAS;YACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,gBAAgB,EAAE,CAAC;YACnB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAA8B;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,QAAQ,CAAC;QAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;QACvE,OAAO;YACL,GAAG,QAAQ;YACX,MAAM,EAAE,MAAM,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;oBACpC,MAAM,EAAE,gCAAgC;oBACxC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAChC,SAAS,EAAE,UAAU,EAAE;oBACvB,IAAI,EAAE,iBAAiB;oBACvB,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;oBACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBACpC,gBAAgB;oBAChB,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;iBAC9C,CAAC,CAAC;gBACH,IAAI,aAAa,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC1C,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxF,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,2CAA2C,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,aAAa,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAA8B;QAC/C,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1F,OAAO,MAAM,QAAQ,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,IACE,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,0CAA0C;YACrE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,SAAS,CAAC;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;gBAAE,SAAS;YACrC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,OAAO,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACrF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACxC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,KAAY;QAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED,MAAM,mBAAmB;IAKJ,KAAK;IACL,SAAS;IALnB,oBAAoB,GAAG,SAAkB,CAAC;IAC1C,4BAA4B,GAAG,IAAI,CAAC;IAE7C,YACmB,KAAgC,EAChC,SAQJ;qBATI,KAAK;yBACL,SAAS;IASzB,CAAC;IAEJ,KAAK,CAAC,YAAY,CAAC,OAAyB;QAC1C,IACE,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM;YAClD,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,SAAS,EACvD,CAAC;YACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,KAA0B,CAAC;YAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,mCAAmC,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnF,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpE,KAAK,GAAG,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;gBACnC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;gBACzC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;gBACnC,KAAK,EAAE,KAA6B;aACrC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YAClC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;YACrC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;YACzE,QAAQ,EAAE;gBACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;aACzE;SACf,CAAC,CAAC;QACH,MAAM,IAAI,cAAc,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAa;QACzC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YACnC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YACnC,KAAK;SACN,CAAC,CAAC;QACH,MAAM,IAAI,cAAc,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,SAAS,qBAAqB,CAAC,OAAkB;IAC/C,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAChC,CAAC;QACD,OAAO,OAAyC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,UAA+B,EAC/B,QAA2B;IAE3B,IAAI,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChG,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,0BAA0B,UAAU,CAAC,MAAM,CAAC,MAAM,8CAA8C,QAAQ,CAAC,cAAc,EAAE;SACjI,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5E,IACE,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,MAAM,KAAK,MAAM;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAC5B,OAAO,CAAC,SAAS,KAAK,IAAI;QAC1B,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,cAAc;QAC5C,YAAY,KAAK,SAAS;QAC1B,OAAO,YAAY,CAAC,YAAY,KAAK,QAAQ;QAC7C,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QACtC,YAAY,CAAC,WAAW,KAAK,OAAO,CAAC,OAAO,EAC5C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;IACvE,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACL,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,gBAAgB,EAAE,OAAO;YACzB,YAAY;SACb;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAiE,EACjE,QAA4B,EAC5B,KAAa,EACb,cAA8B,EAC9B,OAA8B;IAE9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9E,KAAK,QAAQ;YACX,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE;gBAC7C,cAAc;gBACd,GAAG,CAAC,OAAO,CAAC,0BAA0B,KAAK,SAAS;oBAClD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAAE,CAAC;aACxE,CAAC,CAAC;QACL,KAAK,UAAU;YACb,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE;gBAC5E,KAAK;gBACL,cAAc;gBACd,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAsC,EAAE,CAAC;aACvE,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,yCAAyC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAA4C,CAAC;QACrE,MAAM,cAAc,GAAG,0BAA0B,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,QAA4B,CAAC;QACjC,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACzD,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,kDAAkD,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC1F,IAAI,QAA2B,CAAC;QAChC,IAAI,aAAgD,CAAC;QACrD,IAAI,SAAS,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YACvC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC;gBAC9B,GAAG,EAAE,MAAM,CAAC,WAAW;gBACvB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE;oBACR,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;wBACtB,MAAM,SAAS,CAAC,OAAO,CAAC;4BACtB,SAAS,EAAE,UAAU,EAAE;4BACvB,SAAS,EAAE,kBAAkB;4BAC7B,IAAI,EAAE,iBAAiB;4BACvB,gBAAgB,EAAE,CAAC;4BACnB,OAAO,EAAE,EAAE,GAAG,EAAE;yBACjB,CAAC,CAAC;oBACL,CAAC;oBACD,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;wBACxB,MAAM,SAAS,CAAC,OAAO,CAAC;4BACtB,SAAS,EAAE,UAAU,EAAE;4BACvB,SAAS,EAAE,oBAAoB;4BAC/B,IAAI,EAAE,iBAAiB;4BACvB,gBAAgB,EAAE,CAAC;4BACnB,OAAO,EAAE,EAAE,GAAG,EAAE;yBACjB,CAAC,CAAC;oBACL,CAAC;iBACF;gBACD,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;aACxE,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,GAAG,EAAE;gBACtB,KAAK,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAClC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACjC,QAAQ,GAAG,GAAG,CAAC;YACf,aAAa,GAAG,KAAK,IAAI,EAAE;gBACzB,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC9C,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC7C,MAAM,QAAQ,EAAE,CAAC;YACnB,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,KAAK;YACL,QAAQ;YACR,gBAAgB,EAAE;gBAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC;aACpE;YACD,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,kBAAkB,KAAK,SAAS;oBAAE,OAAO;gBACtF,MAAM,YAAY,GAAG,MAAM,+BAA+B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,KAAK,EACZ,cAAc,CAAC,IAAI,EACnB,SAAS,CAAC,OAAO,CAClB,CAAC;YACF,MAAM,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACxC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC3B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;aAChC,CAAC,CAAC;YACH,OAAO,CAAC,CAAC;QACX,CAAC;gBAAS,CAAC;YACT,MAAM,aAAa,EAAE,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,QAA4B,EAC5B,KAAuB;IAEvB,MAAM,QAAQ,GAAG,4EAA4E,CAAC;IAC9F,IAAI,OAAO,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,EAC3E,uBAAuB,CACxB,CAAC;IACF,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACtC,QAAQ,CAAC,kBAAkB,CAAC;gBAC1B,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;YACF,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACtC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBAClF,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC,CAAC;SACH,CAAC,CAAC;QACH,OAAO,YAAY,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAOD,SAAS,0BAA0B,CAAC,KAAgB;IAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAAa,EACb,OAA8B;IAE9B,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACzF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5D,MAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IAC9D,IACE,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAClD,CAAC;QACD,MAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgC;IAC1D,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;YAC5B,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACnC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;QACzD,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACnB,KAA8B,CAAC,MAAM,KAAK,+BAA+B,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAgD,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;IAAE,KAAK,IAAI,EAAE,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { type JsonValue } from "../state/json.js";
2
+ export declare const MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES: number;
3
+ export declare const WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES: number;
4
+ export declare const WORKFLOW_RUNNER_MESSAGE_SCHEMA: "pi-workflows.worker-message.v1";
5
+ export declare const WORKFLOW_RUNNER_RESPONSE_SCHEMA: "pi-workflows.worker-response.v1";
6
+ export declare const WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA: "pi-workflows.worker-content-reference.v1";
7
+ export declare const WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA: "pi-workflows.worker-content-chunk.v1";
8
+ export type WorkflowRunnerCommand = {
9
+ kind: "start";
10
+ input: JsonValue;
11
+ } | {
12
+ kind: "resume";
13
+ resumeInteractionAttemptId?: string;
14
+ } | {
15
+ kind: "continue";
16
+ parentRunId: string;
17
+ input: JsonValue;
18
+ humanDecision?: JsonValue;
19
+ } | {
20
+ kind: "restart";
21
+ input: JsonValue;
22
+ };
23
+ export declare const WORKFLOW_RUNNER_MESSAGE_KINDS: readonly ["runner.ready", "node.started", "node.update", "node.finished", "node.failed", "run.parked", "run.finished", "interaction.requested", "interaction.accepted", "interaction.rejected", "notification.requested", "presentation.requested", "effect.reserve", "effect.settle", "runner.progress", "runner.exiting"];
24
+ export type WorkflowRunnerMessageKind = (typeof WORKFLOW_RUNNER_MESSAGE_KINDS)[number];
25
+ export declare const WORKFLOW_RUNNER_STORE_OPERATIONS: readonly ["store.initializeRun", "store.prepareRunResume", "store.readRunState", "store.writeSnapshot", "store.publishUpdate", "store.findSettingsScope", "store.ensureSettingsScope", "store.getSettingsScopeAtChange", "store.createHumanDecisionRequest", "store.readResolvedHumanDecision", "store.reserveEffect", "store.settleEffect", "content.read", "process.register", "process.unregister", "interaction.request", "interaction.accept", "interaction.reject", "notification.request", "presentation.request"];
26
+ export type WorkflowRunnerStoreOperation = (typeof WORKFLOW_RUNNER_STORE_OPERATIONS)[number];
27
+ export type WorkflowRunnerMessage = {
28
+ schema: typeof WORKFLOW_RUNNER_MESSAGE_SCHEMA;
29
+ launchSchema: "pi-workflows.worker-launch.v1";
30
+ messageId: string;
31
+ kind: WorkflowRunnerMessageKind;
32
+ operation: WorkflowRunnerStoreOperation | "runner.ready" | "runner.exiting";
33
+ runId: string;
34
+ generation: number;
35
+ runnerEpoch: string;
36
+ expectedRevision: number;
37
+ attemptId?: string;
38
+ payload: JsonValue;
39
+ };
40
+ export type WorkflowRunnerResponse = {
41
+ schema: typeof WORKFLOW_RUNNER_RESPONSE_SCHEMA;
42
+ messageId: string;
43
+ outcome: "accepted" | "adopted" | "rejected" | "claimLost";
44
+ revision?: number;
45
+ result?: JsonValue;
46
+ error?: string;
47
+ };
48
+ export type WorkflowRunnerContentReference = {
49
+ schema: typeof WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA;
50
+ sha256: string;
51
+ mediaType: "application/json";
52
+ bytes: number;
53
+ };
54
+ export type WorkflowRunnerContentChunk = {
55
+ schema: typeof WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA;
56
+ sha256: string;
57
+ mediaType: "application/json";
58
+ bytes: number;
59
+ offset: number;
60
+ nextOffset: number;
61
+ complete: boolean;
62
+ data: string;
63
+ };
64
+ export declare function isRunnerContentReference(value: unknown): value is WorkflowRunnerContentReference;
65
+ export declare function isRunnerContentChunk(value: unknown): value is WorkflowRunnerContentChunk;
66
+ export declare function runnerKindForOperation(operation: WorkflowRunnerStoreOperation, payload: Record<string, unknown>): WorkflowRunnerMessageKind;
67
+ export declare function encodeRunnerLine(message: WorkflowRunnerMessage | WorkflowRunnerResponse): Buffer;
68
+ export declare function parseRunnerMessage(line: Buffer | string): WorkflowRunnerMessage;
69
+ export declare function parseRunnerResponse(line: Buffer | string): WorkflowRunnerResponse;