@osolmaz/pi-workflows 0.16.5 → 0.16.6

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 (171) 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 +115 -165
  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/workflow-message-coordinator.d.ts +12 -1
  21. package/dist/extension/workflow-message-coordinator.js +65 -54
  22. package/dist/extension/workflow-message-coordinator.js.map +1 -1
  23. package/dist/resource-managers/index.d.ts +1 -2
  24. package/dist/resource-managers/index.js +1 -2
  25. package/dist/resource-managers/index.js.map +1 -1
  26. package/dist/resource-managers/sqlite.d.ts +2 -295
  27. package/dist/resource-managers/sqlite.js +71 -1528
  28. package/dist/resource-managers/sqlite.js.map +1 -1
  29. package/dist/resource-managers/types.d.ts +2 -7
  30. package/dist/server/resource-runner-entry.js +2 -6
  31. package/dist/server/resource-runner-entry.js.map +1 -1
  32. package/dist/server/rpc-bridge.js +1 -1
  33. package/dist/server/rpc-bridge.js.map +1 -1
  34. package/dist/server/rpc-executor.js +2 -4
  35. package/dist/server/rpc-executor.js.map +1 -1
  36. package/dist/server/server-entry.js +3 -0
  37. package/dist/server/server-entry.js.map +1 -1
  38. package/dist/server/server.d.ts +9 -8
  39. package/dist/server/server.js +364 -541
  40. package/dist/server/server.js.map +1 -1
  41. package/dist/server/state.d.ts +16 -29
  42. package/dist/server/state.js +105 -319
  43. package/dist/server/state.js.map +1 -1
  44. package/dist/server/view.d.ts +4 -5
  45. package/dist/server/view.js +51 -51
  46. package/dist/server/view.js.map +1 -1
  47. package/dist/server/workflow-runner-entry.d.ts +1 -1
  48. package/dist/server/workflow-runner-entry.js +1 -49
  49. package/dist/server/workflow-runner-entry.js.map +1 -1
  50. package/dist/server/workflow-runner-protocol.d.ts +2 -7
  51. package/dist/server/workflow-runner-protocol.js +5 -10
  52. package/dist/server/workflow-runner-protocol.js.map +1 -1
  53. package/dist/server/workflow-runner-store.d.ts +5 -6
  54. package/dist/server/workflow-runner-store.js +7 -14
  55. package/dist/server/workflow-runner-store.js.map +1 -1
  56. package/dist/state/attempt-time.d.ts +21 -0
  57. package/dist/state/attempt-time.js +95 -0
  58. package/dist/state/attempt-time.js.map +1 -0
  59. package/dist/state/json.d.ts +2 -1
  60. package/dist/state/json.js.map +1 -1
  61. package/dist/state/project-store.d.ts +39 -0
  62. package/dist/state/project-store.js +154 -0
  63. package/dist/state/project-store.js.map +1 -0
  64. package/dist/state/prune.js +0 -7
  65. package/dist/state/prune.js.map +1 -1
  66. package/dist/state/schema.js +23 -23
  67. package/dist/state/workflow-messages.d.ts +1 -1
  68. package/dist/state/workflow-messages.js +3 -1
  69. package/dist/state/workflow-messages.js.map +1 -1
  70. package/dist/viewer/backup.js +5 -0
  71. package/dist/viewer/backup.js.map +1 -1
  72. package/dist/workflows/diagnostics.d.ts +8 -0
  73. package/dist/workflows/diagnostics.js +61 -0
  74. package/dist/workflows/diagnostics.js.map +1 -0
  75. package/dist/workflows/engine.d.ts +2 -15
  76. package/dist/workflows/engine.js +125 -245
  77. package/dist/workflows/engine.js.map +1 -1
  78. package/dist/workflows/human-decision.d.ts +3 -7
  79. package/dist/workflows/human-decision.js +2 -56
  80. package/dist/workflows/human-decision.js.map +1 -1
  81. package/dist/workflows/index.d.ts +2 -1
  82. package/dist/workflows/index.js +1 -0
  83. package/dist/workflows/index.js.map +1 -1
  84. package/dist/workflows/queue.d.ts +267 -0
  85. package/dist/workflows/queue.js +1248 -0
  86. package/dist/workflows/queue.js.map +1 -0
  87. package/dist/workflows/requests.d.ts +47 -0
  88. package/dist/workflows/requests.js +158 -0
  89. package/dist/workflows/requests.js.map +1 -0
  90. package/dist/workflows/schema.js +2 -4
  91. package/dist/workflows/schema.js.map +1 -1
  92. package/dist/workflows/store.d.ts +11 -16
  93. package/dist/workflows/store.js +174 -169
  94. package/dist/workflows/store.js.map +1 -1
  95. package/dist/workflows/tool-input.d.ts +6 -9
  96. package/dist/workflows/tool-input.js +15 -12
  97. package/dist/workflows/tool-input.js.map +1 -1
  98. package/dist/workflows/transitions.d.ts +38 -0
  99. package/dist/workflows/transitions.js +276 -0
  100. package/dist/workflows/transitions.js.map +1 -0
  101. package/dist/workflows/types.d.ts +9 -42
  102. package/dist/workflows/workflow-message-content.d.ts +7 -1
  103. package/dist/workflows/workflow-message-content.js +22 -4
  104. package/dist/workflows/workflow-message-content.js.map +1 -1
  105. package/docs/2026-08-25-workflow-follow-ups.md +5 -5
  106. package/docs/2026-09-02-unify-workflow-messages-plan.md +2 -0
  107. package/docs/2026-09-04-workflow-run-state-plan.md +2 -0
  108. package/docs/2026-09-06-durable-execution-plan.md +176 -0
  109. package/docs/DEFERRED_TURNS.md +84 -105
  110. package/docs/HUMAN_DECISIONS.md +17 -19
  111. package/docs/HUMAN_DECISION_PRESENTATIONS.md +1 -1
  112. package/docs/SQLITE_STATE.md +68 -29
  113. package/docs/WORKFLOW_SERVER.md +21 -10
  114. package/docs/WORKFLOW_STEP_MESSAGES.md +72 -54
  115. package/docs/plans/2026-08-04-controller-runtime-plan.md +2 -0
  116. package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +2 -0
  117. package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +2 -0
  118. package/docs/workflows.md +94 -45
  119. package/examples/workflows/autoresearch.workflow.ts +0 -2
  120. package/examples/workflows/branch.workflow.ts +0 -4
  121. package/examples/workflows/echo.workflow.ts +0 -2
  122. package/examples/workflows/live-settings.workflow.ts +0 -2
  123. package/examples/workflows/two-turn.workflow.ts +0 -2
  124. package/herdr-plugin.toml +1 -1
  125. package/package.json +1 -1
  126. package/protocol/fixtures/client-v1.json +1 -1
  127. package/skills/pi-workflows/SKILL.md +8 -7
  128. package/src/builtins/autoimplement.workflow.ts +31 -10
  129. package/src/client/client.ts +3 -1
  130. package/src/client/protocol.ts +21 -1
  131. package/src/client/view.ts +9 -5
  132. package/src/extension/index.ts +117 -189
  133. package/src/extension/recorder.ts +2 -2
  134. package/src/extension/step-message.ts +4 -4
  135. package/src/extension/workflow-message-coordinator.ts +78 -50
  136. package/src/resource-managers/index.ts +1 -9
  137. package/src/resource-managers/sqlite.ts +330 -2655
  138. package/src/resource-managers/types.ts +2 -3
  139. package/src/server/resource-runner-entry.ts +2 -7
  140. package/src/server/rpc-bridge.ts +1 -1
  141. package/src/server/rpc-executor.ts +4 -9
  142. package/src/server/server-entry.ts +3 -0
  143. package/src/server/server.ts +416 -641
  144. package/src/server/state.ts +122 -466
  145. package/src/server/view.ts +56 -60
  146. package/src/server/workflow-runner-entry.ts +2 -55
  147. package/src/server/workflow-runner-protocol.ts +5 -15
  148. package/src/server/workflow-runner-store.ts +12 -27
  149. package/src/state/attempt-time.ts +122 -0
  150. package/src/state/json.ts +2 -1
  151. package/src/state/project-store.ts +218 -0
  152. package/src/state/prune.ts +0 -13
  153. package/src/state/schema.ts +23 -23
  154. package/src/state/workflow-messages.ts +4 -2
  155. package/src/viewer/backup.ts +7 -0
  156. package/src/workflows/diagnostics.ts +78 -0
  157. package/src/workflows/engine.ts +133 -291
  158. package/src/workflows/human-decision.ts +3 -81
  159. package/src/workflows/index.ts +8 -2
  160. package/src/workflows/queue.ts +2091 -0
  161. package/src/workflows/requests.ts +283 -0
  162. package/src/workflows/schema.ts +2 -6
  163. package/src/workflows/store.ts +223 -231
  164. package/src/workflows/tool-input.ts +20 -12
  165. package/src/workflows/transitions.ts +330 -0
  166. package/src/workflows/types.ts +9 -46
  167. package/src/workflows/workflow-message-content.ts +28 -4
  168. package/dist/resource-managers/runtime.d.ts +0 -59
  169. package/dist/resource-managers/runtime.js +0 -423
  170. package/dist/resource-managers/runtime.js.map +0 -1
  171. package/src/resource-managers/runtime.ts +0 -576
@@ -1,7 +1,9 @@
1
1
  import { type ClientRequest, type ClientResponse } from "../client/protocol.js";
2
+ import { type AttemptClock } from "../state/attempt-time.js";
2
3
  import { StateDatabase } from "../state/database.js";
3
4
  import { type JsonValue } from "../state/json.js";
4
5
  import { WorkflowMessageStore, type WorkflowStepReason } from "../state/workflow-messages.js";
6
+ import { type InteractiveRequestRecord } from "../workflows/requests.js";
5
7
  import type { WorkflowRunnerMessage, WorkflowRunnerResponse } from "./workflow-runner-protocol.js";
6
8
  export type ServerClaim = {
7
9
  serverId: string;
@@ -42,29 +44,15 @@ export type InteractiveSubmissionRecord = {
42
44
  receipt: JsonValue | null;
43
45
  submittedAt: string;
44
46
  };
45
- export type InteractiveRequestRecord = {
46
- requestId: string;
47
- runId: string;
48
- attemptId: string;
49
- targetSessionId: string;
50
- kind: "agent" | "assistant" | "decision";
51
- contract: JsonValue;
52
- revision: number;
53
- status: "pending" | "settled" | "cancelled";
54
- unproductiveTurnEnds: number;
55
- acceptedSubmissionId: string | null;
56
- createdAt: string;
57
- updatedAt: string;
58
- settledAt: string | null;
59
- consumedAt: string | null;
60
- };
61
47
  export declare class ServerStateStore {
62
48
  readonly state: StateDatabase;
63
49
  private readonly ownsState;
64
50
  readonly workflowMessages: WorkflowMessageStore;
51
+ private readonly attemptTime;
65
52
  constructor(databasePath: string, options?: {
66
53
  state?: StateDatabase;
67
54
  readOnly?: boolean;
55
+ clock?: AttemptClock;
68
56
  });
69
57
  close(): void;
70
58
  acquireServer(options: {
@@ -102,11 +90,12 @@ export declare class ServerStateStore {
102
90
  }): InteractiveRequestRecord;
103
91
  ensureInteractionMessage(request: InteractiveRequestRecord, reason: WorkflowStepReason, now?: number): import("../state/workflow-messages.js").WorkflowMessage;
104
92
  resumePendingInteraction(runId: string, now?: number): InteractiveRequestRecord;
105
- beginInteractionModelTurn(requestId: string, now?: number): void;
106
- interactionPauseStartedAt(runId: string): number | undefined;
107
- resumeInteractionModelTurn(runId: string, pausedAt: number | undefined, now?: number): void;
93
+ syncActiveTime(): void;
94
+ beginInteractionModelTurn(requestId: string): void;
95
+ endInteractionModelTurn(requestId: string): void;
96
+ resumeInteractionModelTurn(runId: string): void;
108
97
  markSessionModelTurnsInactive(targetSessionId: string, now?: number): void;
109
- recoverInactiveModelTurns(previousHeartbeatAt: number | undefined, now?: number): void;
98
+ recoverInactiveModelTurns(now?: number): void;
110
99
  resumeSessionModelTurns(targetSessionId: string, now?: number): void;
111
100
  getInteraction(requestId: string): InteractiveRequestRecord | undefined;
112
101
  acceptedInteraction(runId: string): {
@@ -123,8 +112,8 @@ export declare class ServerStateStore {
123
112
  submissionId: string;
124
113
  payload: JsonValue;
125
114
  } | undefined;
126
- validatingInteractionRunIds(): string[];
127
- expiredInteractionRuns(now?: number): ExpiredInteractionRunRow[];
115
+ readyInteractionRunIds(): string[];
116
+ expiredInteractionRuns(): ExpiredInteractionRunRow[];
128
117
  timedOutInteraction(runId: string): TimedOutInteractionRow | undefined;
129
118
  interactionSubmission(requestId: string, submissionId: string): InteractiveSubmissionRecord | undefined;
130
119
  finishInteractionValidation(options: {
@@ -133,7 +122,6 @@ export declare class ServerStateStore {
133
122
  accepted: boolean;
134
123
  receipt: JsonValue;
135
124
  }): InteractiveSubmissionRecord;
136
- consumeAcceptedInteraction(runId: string, attemptId: string, now?: number): boolean;
137
125
  listPendingInteractions(sessionId: string): InteractiveRequestRecord[];
138
126
  listPendingDecisionInteractions(): InteractiveRequestRecord[];
139
127
  submitInteraction(options: {
@@ -150,6 +138,7 @@ export declare class ServerStateStore {
150
138
  outcome: "accepted" | "adopted";
151
139
  receipt: JsonValue;
152
140
  };
141
+ hasInteractionSubmission(requestId: string, idempotencyKey: string): boolean;
153
142
  beginInteractionValidation(options: {
154
143
  requestId: string;
155
144
  submissionId: string;
@@ -163,20 +152,18 @@ export declare class ServerStateStore {
163
152
  outcome: "accepted" | "adopted";
164
153
  receipt: JsonValue;
165
154
  };
166
- private recordInteractionSubmission;
167
155
  private serverRow;
168
156
  private commandResponse;
169
157
  private interactiveRequest;
170
- private shiftInteractionTimeout;
171
158
  private requireInteractiveRequest;
172
159
  }
160
+ type ExpiredInteractionRunRow = {
161
+ runId: string;
162
+ targetSessionId: string;
163
+ };
173
164
  type TimedOutInteractionRow = {
174
165
  requestId: string;
175
166
  attemptId: string;
176
167
  nodeId: string;
177
168
  };
178
- type ExpiredInteractionRunRow = {
179
- runId: string;
180
- targetSessionId: string;
181
- };
182
169
  export {};