@osolmaz/pi-workflows 0.16.5 → 0.16.7

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 (181) hide show
  1. package/README.md +5 -5
  2. package/dist/builtins/autoimplement.workflow.d.ts +5 -1
  3. package/dist/builtins/autoimplement.workflow.js +29 -10
  4. package/dist/builtins/autoimplement.workflow.js.map +1 -1
  5. package/dist/client/client.js +3 -1
  6. package/dist/client/client.js.map +1 -1
  7. package/dist/client/protocol.d.ts +1 -1
  8. package/dist/client/protocol.js +18 -1
  9. package/dist/client/protocol.js.map +1 -1
  10. package/dist/client/view.d.ts +7 -5
  11. package/dist/extension/index.d.ts +2 -1
  12. package/dist/extension/index.js +116 -166
  13. package/dist/extension/index.js.map +1 -1
  14. package/dist/extension/recorder.d.ts +1 -1
  15. package/dist/extension/recorder.js +2 -2
  16. package/dist/extension/recorder.js.map +1 -1
  17. package/dist/extension/step-message.d.ts +1 -1
  18. package/dist/extension/step-message.js +4 -4
  19. package/dist/extension/step-message.js.map +1 -1
  20. package/dist/extension/widget.js +1 -1
  21. package/dist/extension/widget.js.map +1 -1
  22. package/dist/extension/workflow-message-coordinator.d.ts +12 -3
  23. package/dist/extension/workflow-message-coordinator.js +108 -94
  24. package/dist/extension/workflow-message-coordinator.js.map +1 -1
  25. package/dist/render/graph-render.js +1 -1
  26. package/dist/resource-managers/index.d.ts +1 -2
  27. package/dist/resource-managers/index.js +1 -2
  28. package/dist/resource-managers/index.js.map +1 -1
  29. package/dist/resource-managers/sqlite.d.ts +2 -295
  30. package/dist/resource-managers/sqlite.js +71 -1528
  31. package/dist/resource-managers/sqlite.js.map +1 -1
  32. package/dist/resource-managers/types.d.ts +2 -7
  33. package/dist/server/resource-runner-entry.js +2 -6
  34. package/dist/server/resource-runner-entry.js.map +1 -1
  35. package/dist/server/rpc-bridge.js +1 -1
  36. package/dist/server/rpc-bridge.js.map +1 -1
  37. package/dist/server/rpc-executor.js +2 -4
  38. package/dist/server/rpc-executor.js.map +1 -1
  39. package/dist/server/server-entry.js +3 -0
  40. package/dist/server/server-entry.js.map +1 -1
  41. package/dist/server/server.d.ts +9 -8
  42. package/dist/server/server.js +364 -541
  43. package/dist/server/server.js.map +1 -1
  44. package/dist/server/state.d.ts +16 -29
  45. package/dist/server/state.js +105 -319
  46. package/dist/server/state.js.map +1 -1
  47. package/dist/server/view.d.ts +6 -5
  48. package/dist/server/view.js +68 -51
  49. package/dist/server/view.js.map +1 -1
  50. package/dist/server/workflow-runner-entry.d.ts +1 -1
  51. package/dist/server/workflow-runner-entry.js +1 -49
  52. package/dist/server/workflow-runner-entry.js.map +1 -1
  53. package/dist/server/workflow-runner-protocol.d.ts +2 -7
  54. package/dist/server/workflow-runner-protocol.js +5 -10
  55. package/dist/server/workflow-runner-protocol.js.map +1 -1
  56. package/dist/server/workflow-runner-store.d.ts +5 -6
  57. package/dist/server/workflow-runner-store.js +7 -14
  58. package/dist/server/workflow-runner-store.js.map +1 -1
  59. package/dist/state/attempt-time.d.ts +21 -0
  60. package/dist/state/attempt-time.js +95 -0
  61. package/dist/state/attempt-time.js.map +1 -0
  62. package/dist/state/json.d.ts +2 -1
  63. package/dist/state/json.js.map +1 -1
  64. package/dist/state/project-store.d.ts +39 -0
  65. package/dist/state/project-store.js +154 -0
  66. package/dist/state/project-store.js.map +1 -0
  67. package/dist/state/prune.js +0 -7
  68. package/dist/state/prune.js.map +1 -1
  69. package/dist/state/schema.js +23 -23
  70. package/dist/state/workflow-messages.d.ts +1 -1
  71. package/dist/state/workflow-messages.js +3 -1
  72. package/dist/state/workflow-messages.js.map +1 -1
  73. package/dist/viewer/backup.js +5 -0
  74. package/dist/viewer/backup.js.map +1 -1
  75. package/dist/workflows/diagnostics.d.ts +8 -0
  76. package/dist/workflows/diagnostics.js +61 -0
  77. package/dist/workflows/diagnostics.js.map +1 -0
  78. package/dist/workflows/engine.d.ts +2 -16
  79. package/dist/workflows/engine.js +128 -252
  80. package/dist/workflows/engine.js.map +1 -1
  81. package/dist/workflows/errors.d.ts +1 -1
  82. package/dist/workflows/errors.js +2 -2
  83. package/dist/workflows/errors.js.map +1 -1
  84. package/dist/workflows/human-decision.d.ts +3 -7
  85. package/dist/workflows/human-decision.js +2 -56
  86. package/dist/workflows/human-decision.js.map +1 -1
  87. package/dist/workflows/index.d.ts +2 -1
  88. package/dist/workflows/index.js +1 -0
  89. package/dist/workflows/index.js.map +1 -1
  90. package/dist/workflows/queue.d.ts +267 -0
  91. package/dist/workflows/queue.js +1248 -0
  92. package/dist/workflows/queue.js.map +1 -0
  93. package/dist/workflows/requests.d.ts +47 -0
  94. package/dist/workflows/requests.js +158 -0
  95. package/dist/workflows/requests.js.map +1 -0
  96. package/dist/workflows/schema.js +2 -4
  97. package/dist/workflows/schema.js.map +1 -1
  98. package/dist/workflows/store.d.ts +11 -16
  99. package/dist/workflows/store.js +177 -174
  100. package/dist/workflows/store.js.map +1 -1
  101. package/dist/workflows/tool-input.d.ts +6 -9
  102. package/dist/workflows/tool-input.js +15 -12
  103. package/dist/workflows/tool-input.js.map +1 -1
  104. package/dist/workflows/transitions.d.ts +38 -0
  105. package/dist/workflows/transitions.js +276 -0
  106. package/dist/workflows/transitions.js.map +1 -0
  107. package/dist/workflows/types.d.ts +9 -42
  108. package/dist/workflows/workflow-message-content.d.ts +7 -1
  109. package/dist/workflows/workflow-message-content.js +22 -4
  110. package/dist/workflows/workflow-message-content.js.map +1 -1
  111. package/docs/2026-08-25-workflow-follow-ups.md +5 -5
  112. package/docs/2026-09-02-unify-workflow-messages-plan.md +2 -0
  113. package/docs/2026-09-04-workflow-run-state-plan.md +2 -0
  114. package/docs/2026-09-06-durable-execution-plan.md +176 -0
  115. package/docs/2026-09-07-workflow-handoff-plan.md +84 -0
  116. package/docs/DEFERRED_TURNS.md +84 -105
  117. package/docs/HUMAN_DECISIONS.md +17 -19
  118. package/docs/HUMAN_DECISION_PRESENTATIONS.md +1 -1
  119. package/docs/SQLITE_STATE.md +68 -29
  120. package/docs/WORKFLOW_SERVER.md +21 -10
  121. package/docs/WORKFLOW_STEP_MESSAGES.md +83 -54
  122. package/docs/plans/2026-08-04-controller-runtime-plan.md +2 -0
  123. package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +2 -0
  124. package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +2 -0
  125. package/docs/workflows.md +111 -45
  126. package/examples/workflows/autoresearch.workflow.ts +0 -2
  127. package/examples/workflows/branch.workflow.ts +0 -4
  128. package/examples/workflows/echo.workflow.ts +0 -2
  129. package/examples/workflows/live-settings.workflow.ts +0 -2
  130. package/examples/workflows/two-turn.workflow.ts +0 -2
  131. package/herdr-plugin.toml +1 -1
  132. package/package.json +1 -1
  133. package/protocol/fixtures/client-v1.json +1 -1
  134. package/skills/pi-workflows/SKILL.md +8 -7
  135. package/src/builtins/autoimplement.workflow.ts +31 -10
  136. package/src/client/client.ts +3 -1
  137. package/src/client/protocol.ts +21 -1
  138. package/src/client/view.ts +9 -5
  139. package/src/extension/index.ts +118 -190
  140. package/src/extension/recorder.ts +2 -2
  141. package/src/extension/step-message.ts +4 -4
  142. package/src/extension/widget.ts +1 -1
  143. package/src/extension/workflow-message-coordinator.ts +133 -95
  144. package/src/render/graph-render.ts +1 -1
  145. package/src/resource-managers/index.ts +1 -9
  146. package/src/resource-managers/sqlite.ts +330 -2655
  147. package/src/resource-managers/types.ts +2 -3
  148. package/src/server/resource-runner-entry.ts +2 -7
  149. package/src/server/rpc-bridge.ts +1 -1
  150. package/src/server/rpc-executor.ts +4 -9
  151. package/src/server/server-entry.ts +3 -0
  152. package/src/server/server.ts +416 -641
  153. package/src/server/state.ts +122 -466
  154. package/src/server/view.ts +73 -58
  155. package/src/server/workflow-runner-entry.ts +2 -55
  156. package/src/server/workflow-runner-protocol.ts +5 -15
  157. package/src/server/workflow-runner-store.ts +12 -27
  158. package/src/state/attempt-time.ts +122 -0
  159. package/src/state/json.ts +2 -1
  160. package/src/state/project-store.ts +218 -0
  161. package/src/state/prune.ts +0 -13
  162. package/src/state/schema.ts +23 -23
  163. package/src/state/workflow-messages.ts +4 -2
  164. package/src/viewer/backup.ts +7 -0
  165. package/src/workflows/diagnostics.ts +78 -0
  166. package/src/workflows/engine.ts +136 -299
  167. package/src/workflows/errors.ts +4 -2
  168. package/src/workflows/human-decision.ts +3 -81
  169. package/src/workflows/index.ts +8 -2
  170. package/src/workflows/queue.ts +2091 -0
  171. package/src/workflows/requests.ts +283 -0
  172. package/src/workflows/schema.ts +2 -6
  173. package/src/workflows/store.ts +226 -236
  174. package/src/workflows/tool-input.ts +20 -12
  175. package/src/workflows/transitions.ts +330 -0
  176. package/src/workflows/types.ts +9 -46
  177. package/src/workflows/workflow-message-content.ts +28 -4
  178. package/dist/resource-managers/runtime.d.ts +0 -59
  179. package/dist/resource-managers/runtime.js +0 -423
  180. package/dist/resource-managers/runtime.js.map +0 -1
  181. package/src/resource-managers/runtime.ts +0 -576
@@ -1,115 +1,7 @@
1
- import { StateDatabase } from "../state/database.js";
1
+ import { ProjectStore } from "../state/project-store.js";
2
2
  import type { ResourceManagerStore, EffectReservation, QueueItem, QueueRequeueOptions, WorkflowRecordUpdate, WorkflowReservation } from "./store.js";
3
3
  import type { ChildWorkflowRecord, ResourceManagerEvent, ResourceManagerQueueClaim, ManagedResource, ManagedResourceRef, ManagedResourceStatus, EffectRecord, JsonObject } from "./types.js";
4
- export type WorkflowRunLaunchStatus = "queued" | "starting" | "running" | "parked" | "done" | "failed" | "cancelled";
5
- export type WorkflowRunReservationOptions = {
6
- runId: string;
7
- workflowName: string;
8
- workflowSourceRef: string;
9
- workflowSource: unknown;
10
- definitionDigest: string;
11
- definitionSnapshot: unknown;
12
- input: unknown;
13
- launchOptions?: unknown;
14
- runnerId: string;
15
- originSessionId: string;
16
- executionMode?: "interactive" | "headless";
17
- parentRunId?: string;
18
- lineageKind?: "continuation" | "restart";
19
- restartNumber?: number;
20
- parentTerminalFingerprint?: string;
21
- now?: string;
22
- };
23
- export type WorkflowRunClaimOptions = WorkflowRunReservationOptions & {
24
- claimToken: string;
25
- leaseMs: number;
26
- };
27
- export type WorkflowRunQueueViewRecord = {
28
- runId: string;
29
- workflowName: string;
30
- workflowSourceRef: string;
31
- workflowSource: unknown;
32
- initialized: boolean;
33
- definitionDigest: string;
34
- runStateStatus: string;
35
- paused: boolean;
36
- status: WorkflowRunLaunchStatus;
37
- originSessionId: string | null;
38
- executionMode: "interactive" | "headless";
39
- parentRunId: string | null;
40
- rootRunId: string;
41
- lineageKind: "continuation" | "restart" | null;
42
- restartNumber: number;
43
- parentTerminalFingerprint: string | null;
44
- errorCode: string | null;
45
- errorMessage: string | null;
46
- createdAt: string;
47
- updatedAt: string;
48
- startedAt: string | null;
49
- finishedAt: string | null;
50
- };
51
- export type WorkflowRunQueueRecord = {
52
- runId: string;
53
- workflowName: string;
54
- workflowSourceRef: string;
55
- workflowSource: unknown;
56
- initialized: boolean;
57
- definitionDigest: string;
58
- input: unknown;
59
- launchOptions: unknown;
60
- status: WorkflowRunLaunchStatus;
61
- runnerId: string | null;
62
- claimToken: string | null;
63
- claimGeneration: number | null;
64
- claimExpiresAt: string | null;
65
- affinityRunnerId: string | null;
66
- originSessionId: string | null;
67
- executionMode: "interactive" | "headless";
68
- parentRunId: string | null;
69
- rootRunId: string;
70
- lineageKind: "continuation" | "restart" | null;
71
- restartNumber: number;
72
- parentTerminalFingerprint: string | null;
73
- errorCode: string | null;
74
- errorMessage: string | null;
75
- createdAt: string;
76
- updatedAt: string;
77
- startedAt: string | null;
78
- finishedAt: string | null;
79
- };
80
- export type WorkflowRunPreparationResult = {
81
- state: "claimed";
82
- run: WorkflowRunQueueRecord & {
83
- claimToken: string;
84
- };
85
- } | {
86
- state: "adopted";
87
- run: WorkflowRunQueueRecord;
88
- };
89
- export type RunEventRecord = {
90
- seq: number;
91
- recordedAt: string;
92
- runId: string;
93
- workflowRef: string;
94
- type: string;
95
- runnerId: string | null;
96
- payload: JsonObject;
97
- };
98
- export declare class SqliteResourceManagerStore implements ResourceManagerStore {
99
- readonly filePath: string;
100
- readonly state: StateDatabase;
101
- private readonly workflowMessages;
102
- private readonly ownsState;
103
- private readonly projectId;
104
- private closed;
105
- constructor(filePath?: string, options?: {
106
- readOnly?: boolean;
107
- projectPath?: string;
108
- state?: StateDatabase;
109
- /** Server-only global view. Project-scoped mutations still require projectPath. */
110
- global?: boolean;
111
- });
112
- close(): void;
4
+ export declare class SqliteResourceManagerStore extends ProjectStore implements ResourceManagerStore {
113
5
  putResource<TSpec, TStatus>(options: {
114
6
  resourceManager: string;
115
7
  key: string;
@@ -195,173 +87,6 @@ export declare class SqliteResourceManagerStore implements ResourceManagerStore
195
87
  key?: string;
196
88
  limit?: number;
197
89
  }): ResourceManagerEvent[];
198
- reserveWorkflowRun(options: WorkflowRunReservationOptions): WorkflowRunQueueRecord;
199
- private reserveWorkflowRunInTransaction;
200
- prepareOrAdoptWorkflowRun(options: WorkflowRunClaimOptions): WorkflowRunPreparationResult;
201
- enqueueWorkflowRun(options: WorkflowRunClaimOptions): WorkflowRunQueueRecord;
202
- getWorkflowRun(runId: string): WorkflowRunQueueRecord | undefined;
203
- getWorkflowRunView(runId: string): WorkflowRunQueueViewRecord | undefined;
204
- workflowRunListRevision(): {
205
- total: number;
206
- revision: string;
207
- };
208
- listWorkflowRunViews(options: {
209
- offset: number;
210
- limit: number;
211
- }): {
212
- total: number;
213
- revision: string;
214
- runs: WorkflowRunQueueViewRecord[];
215
- };
216
- workflowRunProjectPath(runId: string): string | undefined;
217
- listWorkflowRuns(options?: {
218
- statuses?: WorkflowRunLaunchStatus[];
219
- excludeRunIds?: string[];
220
- limit?: number;
221
- }): WorkflowRunQueueRecord[];
222
- findSessionReservation(sessionId: string): WorkflowRunQueueRecord | undefined;
223
- findSessionReservationView(sessionId: string): WorkflowRunQueueViewRecord | undefined;
224
- claimWorkflowRun(options: {
225
- runId: string;
226
- runnerId: string;
227
- claimToken: string;
228
- leaseMs: number;
229
- now?: string;
230
- }): WorkflowRunQueueRecord | undefined;
231
- /** Schedule a runner that validates one pending interactive submission. */
232
- claimWorkflowRunForInteractionValidation(options: {
233
- runId: string;
234
- runnerId: string;
235
- claimToken: string;
236
- leaseMs: number;
237
- now?: string;
238
- }): WorkflowRunQueueRecord | undefined;
239
- /** Take a short server claim without scheduling a parked interactive run. */
240
- claimWorkflowRunForControl(options: {
241
- runId: string;
242
- runnerId: string;
243
- claimToken: string;
244
- leaseMs: number;
245
- now?: string;
246
- }): WorkflowRunQueueRecord | undefined;
247
- beginWorkflowRunInteractionTimeout(options: {
248
- runId: string;
249
- targetSessionId: string;
250
- claimToken: string;
251
- now?: string;
252
- }): boolean;
253
- markWorkflowRunRunning(options: {
254
- runId: string;
255
- claimToken: string;
256
- now?: string;
257
- }): boolean;
258
- claimNextWorkflowRun(options: {
259
- runnerId: string;
260
- sessionId?: string;
261
- claimToken: string;
262
- leaseMs: number;
263
- now?: string;
264
- excludeRunIds?: string[];
265
- }): WorkflowRunQueueRecord | undefined;
266
- renewWorkflowRunClaim(options: {
267
- runId: string;
268
- claimToken: string;
269
- leaseMs: number;
270
- now?: string;
271
- }): boolean;
272
- verifyWorkflowRunClaim(options: {
273
- runId: string;
274
- claimToken: string;
275
- now?: string;
276
- }): boolean;
277
- workflowRunAuthority(runId: string, claimToken: string): {
278
- actor: {
279
- type: "session" | "host";
280
- id: string;
281
- };
282
- ownerType: "session" | "host";
283
- ownerId: string;
284
- token: string;
285
- generation: number;
286
- leaseMs: number;
287
- } | undefined;
288
- parkWorkflowRun(options: {
289
- runId: string;
290
- claimToken: string;
291
- now?: string;
292
- }): boolean;
293
- parkWorkflowRunForRunnerNoProgress(options: {
294
- runId: string;
295
- claimToken: string;
296
- detail: string;
297
- now?: string;
298
- }): boolean;
299
- pauseParkedWorkflowRun(options: {
300
- runId: string;
301
- now?: string;
302
- }): boolean;
303
- resumePausedInteraction(options: {
304
- runId: string;
305
- now?: string;
306
- }): boolean;
307
- isWorkflowRunPaused(runId: string): boolean;
308
- parkWorkflowRunForSourceChange(options: {
309
- runId: string;
310
- claimToken: string;
311
- detail: string;
312
- now?: string;
313
- }): boolean;
314
- parkWorkflowRunForAmbiguousEffect(options: {
315
- runId: string;
316
- claimToken: string;
317
- now?: string;
318
- }): boolean;
319
- failWorkflowRun(options: {
320
- runId: string;
321
- claimToken?: string;
322
- errorCode: string;
323
- errorMessage: string;
324
- now?: string;
325
- }): boolean;
326
- cancelWorkflowRun(options: {
327
- runId: string;
328
- claimToken?: string;
329
- now?: string;
330
- }): boolean;
331
- /** Cancel a nonterminal run only when its claim is absent or expired. */
332
- cancelStaleWorkflowRun(options: {
333
- runId: string;
334
- controlId?: string;
335
- claimToken?: string;
336
- now?: string;
337
- }): boolean;
338
- deleteWorkflowRun(options: {
339
- runId: string;
340
- claimToken: string;
341
- }): boolean;
342
- completeWorkflowRun(options: {
343
- runId: string;
344
- claimToken: string;
345
- now?: string;
346
- }): boolean;
347
- repairCanonicalWorkflowSourceRun(): never;
348
- claimLegacyWorkflowSourceRun(): never;
349
- recordRunEvent(options: {
350
- runId: string;
351
- workflowRef: string;
352
- type: string;
353
- payload?: JsonObject;
354
- runnerId?: string;
355
- now?: string;
356
- }): RunEventRecord;
357
- listRunEventsAfter(seq: number, options?: {
358
- limit?: number;
359
- }): RunEventRecord[];
360
- settleRunEffect(runId: string, effectType: "run.park_queue" | "run.settle_queue"): void;
361
- setWorkflowRunOriginSession(runId: string, originSessionId: string): boolean;
362
- private ensureProject;
363
- private findProject;
364
- private requireProjectId;
365
90
  private resourceManagerRow;
366
91
  private requireResourceManagerRow;
367
92
  private requireResourceManagerRowByUid;
@@ -374,11 +99,7 @@ export declare class SqliteResourceManagerStore implements ResourceManagerStore
374
99
  private queueVersion;
375
100
  private settleResourceManagerClaim;
376
101
  private assertResourceManagerClaim;
377
- private requireLease;
378
102
  private releaseLease;
379
- private resourceRevision;
380
- private bumpResource;
381
- private insertEvent;
382
103
  private effectRow;
383
104
  private requireEffectRow;
384
105
  private mapEffect;
@@ -387,18 +108,4 @@ export declare class SqliteResourceManagerStore implements ResourceManagerStore
387
108
  private workflowRowById;
388
109
  private requireWorkflowRow;
389
110
  private mapWorkflow;
390
- private workflowRunRow;
391
- private requireWorkflowRunRow;
392
- private requireWorkflowRun;
393
- private assertWorkflowRunPreparationCompatible;
394
- private workflowRunViewRows;
395
- private mapWorkflowRun;
396
- private claimRun;
397
- private claimRunInTransaction;
398
- private updateClaimedRunStatus;
399
- private releaseRunClaim;
400
- private terminalRun;
401
- private settleWorkflowRunMessages;
402
- private cancelWorkflowRunDependents;
403
- private assertWritable;
404
111
  }