@osolmaz/pi-workflows 0.16.0 → 0.16.1

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 (154) hide show
  1. package/README.md +18 -2
  2. package/dist/channels/adapter-entry.d.ts +3 -0
  3. package/dist/channels/adapter-entry.js +203 -0
  4. package/dist/channels/adapter-entry.js.map +1 -0
  5. package/dist/channels/config.d.ts +43 -0
  6. package/dist/channels/config.js +234 -0
  7. package/dist/channels/config.js.map +1 -0
  8. package/dist/channels/protocol.d.ts +94 -0
  9. package/dist/channels/protocol.js +219 -0
  10. package/dist/channels/protocol.js.map +1 -0
  11. package/dist/channels/telegram.d.ts +46 -0
  12. package/dist/channels/telegram.js +285 -0
  13. package/dist/channels/telegram.js.map +1 -0
  14. package/dist/client/client.d.ts +1 -0
  15. package/dist/client/client.js +5 -1
  16. package/dist/client/client.js.map +1 -1
  17. package/dist/client/index.d.ts +1 -1
  18. package/dist/client/protocol.d.ts +1 -1
  19. package/dist/client/protocol.js +11 -5
  20. package/dist/client/protocol.js.map +1 -1
  21. package/dist/client/view.d.ts +42 -16
  22. package/dist/client/view.js.map +1 -1
  23. package/dist/controllers/index.d.ts +1 -1
  24. package/dist/controllers/index.js.map +1 -1
  25. package/dist/controllers/sqlite.d.ts +12 -165
  26. package/dist/controllers/sqlite.js +124 -435
  27. package/dist/controllers/sqlite.js.map +1 -1
  28. package/dist/extension/index.d.ts +23 -2
  29. package/dist/extension/index.js +619 -535
  30. package/dist/extension/index.js.map +1 -1
  31. package/dist/extension/recorder.d.ts +95 -0
  32. package/dist/extension/recorder.js +530 -0
  33. package/dist/extension/recorder.js.map +1 -0
  34. package/dist/extension/remote-recorder-store.d.ts +25 -0
  35. package/dist/extension/remote-recorder-store.js +81 -0
  36. package/dist/extension/remote-recorder-store.js.map +1 -0
  37. package/dist/extension/session-events.d.ts +134 -0
  38. package/dist/extension/session-events.js +60 -0
  39. package/dist/extension/session-events.js.map +1 -0
  40. package/dist/extension/session-view.d.ts +2 -0
  41. package/dist/extension/session-view.js +60 -2
  42. package/dist/extension/session-view.js.map +1 -1
  43. package/dist/extension/step-message.d.ts +6 -4
  44. package/dist/extension/step-message.js +12 -6
  45. package/dist/extension/step-message.js.map +1 -1
  46. package/dist/extension/widget.d.ts +2 -2
  47. package/dist/extension/widget.js +28 -18
  48. package/dist/extension/widget.js.map +1 -1
  49. package/dist/extension/workflow-message-coordinator.d.ts +27 -0
  50. package/dist/extension/workflow-message-coordinator.js +294 -0
  51. package/dist/extension/workflow-message-coordinator.js.map +1 -0
  52. package/dist/host/channel-effects.d.ts +72 -0
  53. package/dist/host/channel-effects.js +271 -0
  54. package/dist/host/channel-effects.js.map +1 -0
  55. package/dist/host/channel-supervisor.d.ts +21 -0
  56. package/dist/host/channel-supervisor.js +54 -0
  57. package/dist/host/channel-supervisor.js.map +1 -0
  58. package/dist/host/runner.d.ts +43 -8
  59. package/dist/host/runner.js +1567 -331
  60. package/dist/host/runner.js.map +1 -1
  61. package/dist/host/state.d.ts +19 -16
  62. package/dist/host/state.js +251 -63
  63. package/dist/host/state.js.map +1 -1
  64. package/dist/host/view.d.ts +19 -9
  65. package/dist/host/view.js +222 -118
  66. package/dist/host/view.js.map +1 -1
  67. package/dist/state/prune.js +3 -25
  68. package/dist/state/prune.js.map +1 -1
  69. package/dist/state/schema.js +76 -97
  70. package/dist/state/schema.js.map +1 -1
  71. package/dist/state/workflow-messages.d.ts +96 -0
  72. package/dist/state/workflow-messages.js +335 -0
  73. package/dist/state/workflow-messages.js.map +1 -0
  74. package/dist/viewer/render.js +1 -1
  75. package/dist/viewer/render.js.map +1 -1
  76. package/dist/viewer/tui.d.ts +1 -1
  77. package/dist/viewer/tui.js +65 -8
  78. package/dist/viewer/tui.js.map +1 -1
  79. package/dist/workflows/human-decision.d.ts +2 -0
  80. package/dist/workflows/human-decision.js +8 -2
  81. package/dist/workflows/human-decision.js.map +1 -1
  82. package/dist/workflows/index.d.ts +1 -1
  83. package/dist/workflows/index.js.map +1 -1
  84. package/dist/workflows/settings.d.ts +1 -8
  85. package/dist/workflows/settings.js.map +1 -1
  86. package/dist/workflows/store.d.ts +5 -19
  87. package/dist/workflows/store.js +121 -354
  88. package/dist/workflows/store.js.map +1 -1
  89. package/dist/workflows/tool-input.d.ts +21 -0
  90. package/dist/workflows/tool-input.js +23 -1
  91. package/dist/workflows/tool-input.js.map +1 -1
  92. package/dist/workflows/types.d.ts +5 -5
  93. package/dist/workflows/workflow-message-content.d.ts +38 -0
  94. package/dist/workflows/workflow-message-content.js +157 -0
  95. package/dist/workflows/workflow-message-content.js.map +1 -0
  96. package/docs/2026-08-18-herdr-piw-plan.md +2 -1
  97. package/docs/2026-08-20-durable-workflow-launch-plan.md +1 -1
  98. package/docs/2026-08-25-workflow-follow-ups.md +26 -50
  99. package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
  100. package/docs/2026-09-01-restore-session-delivery-controls-plan.md +4 -0
  101. package/docs/2026-09-01-unified-workflow-client-plan.md +5 -1
  102. package/docs/2026-09-02-installed-live-e2e-plan.md +15 -1
  103. package/docs/2026-09-02-unify-workflow-messages-plan.md +562 -0
  104. package/docs/DEFERRED_TURNS.md +66 -294
  105. package/docs/HUMAN_DECISIONS.md +29 -30
  106. package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -11
  107. package/docs/SQLITE_STATE.md +19 -15
  108. package/docs/WORKFLOW_HOST.md +93 -28
  109. package/docs/WORKFLOW_STEP_MESSAGES.md +166 -75
  110. package/docs/live-replay-protocol.md +8 -4
  111. package/docs/tui-viewer.md +3 -1
  112. package/docs/workflows.md +34 -27
  113. package/herdr-plugin.toml +1 -1
  114. package/package.json +1 -1
  115. package/plugins/herdr/viewer.mjs +14 -5
  116. package/src/channels/adapter-entry.ts +220 -0
  117. package/src/channels/config.ts +296 -0
  118. package/src/channels/protocol.ts +333 -0
  119. package/src/channels/telegram.ts +335 -0
  120. package/src/client/client.ts +6 -2
  121. package/src/client/index.ts +2 -1
  122. package/src/client/protocol.ts +11 -5
  123. package/src/client/view.ts +43 -18
  124. package/src/controllers/index.ts +0 -1
  125. package/src/controllers/sqlite.ts +164 -844
  126. package/src/extension/index.ts +693 -646
  127. package/src/extension/recorder.ts +687 -0
  128. package/src/extension/remote-recorder-store.ts +126 -0
  129. package/src/extension/session-events.ts +119 -0
  130. package/src/extension/session-view.ts +86 -3
  131. package/src/extension/step-message.ts +19 -9
  132. package/src/extension/widget.ts +37 -17
  133. package/src/extension/workflow-message-coordinator.ts +334 -0
  134. package/src/host/channel-effects.ts +465 -0
  135. package/src/host/channel-supervisor.ts +73 -0
  136. package/src/host/runner.ts +2120 -531
  137. package/src/host/state.ts +333 -94
  138. package/src/host/view.ts +249 -121
  139. package/src/state/prune.ts +3 -31
  140. package/src/state/schema.ts +76 -97
  141. package/src/state/workflow-messages.ts +548 -0
  142. package/src/viewer/render.ts +1 -5
  143. package/src/viewer/tui.ts +71 -6
  144. package/src/workflows/human-decision.ts +18 -2
  145. package/src/workflows/index.ts +0 -1
  146. package/src/workflows/settings.ts +1 -20
  147. package/src/workflows/store.ts +173 -489
  148. package/src/workflows/tool-input.ts +36 -1
  149. package/src/workflows/types.ts +5 -5
  150. package/src/workflows/workflow-message-content.ts +197 -0
  151. package/dist/extension/decision-channels.d.ts +0 -134
  152. package/dist/extension/decision-channels.js +0 -1307
  153. package/dist/extension/decision-channels.js.map +0 -1
  154. package/src/extension/decision-channels.ts +0 -1826
@@ -11,16 +11,23 @@ export const CLIENT_OPERATIONS = [
11
11
  "run.pause",
12
12
  "run.resume",
13
13
  "run.cancel",
14
+ "run.restart",
15
+ "run.changeSettings",
14
16
  "run.status",
15
17
  "run.list",
16
18
  "checkpoint.answer",
17
19
  "decision.answer",
18
20
  "interaction.submit",
19
21
  "interaction.update",
20
- "notification.claim",
21
- "notification.deliver",
22
- "turn.claim",
23
- "turn.resolve",
22
+ "workflowMessage.reportBranch",
23
+ "workflowTurn.report",
24
+ "sessionView.clearTerminal",
25
+ "followUp.queue",
26
+ "followUp.remove",
27
+ "session.record",
28
+ "channel.status",
29
+ "channel.reload",
30
+ "channel.recover",
24
31
  "controller.list",
25
32
  "controller.get",
26
33
  "controller.apply",
@@ -36,7 +43,6 @@ export const CLIENT_OPERATIONS = [
36
43
  "view.page",
37
44
  "view.content",
38
45
  "view.session.watch",
39
- "activity.report",
40
46
  "state.status",
41
47
  "state.verify",
42
48
  "state.backup",
@@ -1,4 +1,5 @@
1
1
  import type { JsonValue } from "../state/json.js";
2
+ import type { WorkflowMessage, WorkflowTurn } from "../state/workflow-messages.js";
2
3
 
3
4
  export const RUN_VIEW_SCHEMA = "pi-workflows.run-view.v1" as const;
4
5
  export const SESSION_VIEW_SCHEMA = "pi-workflows.session-view.v1" as const;
@@ -32,6 +33,10 @@ export type WorkflowRunQueueView = {
32
33
  originSessionId: string | null;
33
34
  executionMode: "interactive" | "headless";
34
35
  parentRunId: string | null;
36
+ rootRunId: string;
37
+ lineageKind: "continuation" | "restart" | null;
38
+ restartNumber: number;
39
+ parentTerminalFingerprint: string | null;
35
40
  errorCode: string | null;
36
41
  createdAt: string;
37
42
  updatedAt: string;
@@ -101,10 +106,8 @@ export type ClientInteractiveRequest = {
101
106
  kind: "agent" | "assistant" | "decision";
102
107
  contract: JsonValue;
103
108
  revision: number;
104
- status: "pending" | "presenting" | "settled" | "cancelled";
105
- presenterId: string | null;
106
- presentationClaimExpiresAt: string | null;
107
- presentationSessionEntryId: string | null;
109
+ status: "pending" | "settled" | "cancelled";
110
+ unproductiveTurnEnds: number;
108
111
  acceptedSubmissionId: string | null;
109
112
  createdAt: string;
110
113
  updatedAt: string;
@@ -112,11 +115,6 @@ export type ClientInteractiveRequest = {
112
115
  consumedAt: string | null;
113
116
  };
114
117
 
115
- export type WorkflowDeliveryAvailability = {
116
- notification: boolean;
117
- turn: boolean;
118
- };
119
-
120
118
  export type WorkflowSessionView = {
121
119
  schema: typeof SESSION_VIEW_SCHEMA;
122
120
  sessionId: string;
@@ -124,15 +122,42 @@ export type WorkflowSessionView = {
124
122
  pendingInteractions: JsonValue[];
125
123
  pendingInteractionStart: number;
126
124
  pendingInteractionTotal: number;
127
- deliveries: WorkflowDeliveryAvailability;
125
+ workflowMessages: WorkflowMessage[];
126
+ workflowMessageStart: number;
127
+ workflowMessageTotal: number;
128
+ workflowMessageWindowComplete: boolean;
129
+ nextWorkflowMessageId: string | null;
130
+ openWorkflowMessageId: string | null;
131
+ openWorkflowTurn: WorkflowTurn | null;
132
+ coordinatorEpoch: string | null;
133
+ coordinatorActive: boolean;
134
+ branchReportRequired: boolean;
128
135
  };
129
136
 
130
- export type OriginActivityReport = {
131
- sessionId: string;
132
- runId: string;
133
- requestId: string;
134
- deliveryId: string;
135
- sessionEntryId: string;
136
- sequence: number;
137
- state: "started" | "refresh" | "settled";
137
+ export type WorkflowBranchReport = {
138
+ targetSessionId: string;
139
+ coordinatorEpoch: string;
140
+ entries: Array<{ workflowMessageId: string; piSessionEntryId: string }>;
141
+ isIdle: boolean;
142
+ hasPendingMessages: boolean;
138
143
  };
144
+
145
+ export type WorkflowTurnReport =
146
+ | {
147
+ state: "started";
148
+ workflowMessageId: string;
149
+ workflowTurnId: string;
150
+ runId: string;
151
+ targetSessionId: string;
152
+ coordinatorEpoch: string;
153
+ }
154
+ | {
155
+ state: "ended";
156
+ workflowMessageId: string;
157
+ workflowTurnId: string;
158
+ runId: string;
159
+ targetSessionId: string;
160
+ coordinatorEpoch: string;
161
+ stopReason: "completed" | "aborted" | "error" | "lost";
162
+ responseSessionEntryId: string | null;
163
+ };
@@ -23,7 +23,6 @@ export { createResultHelpers, requeue, requeueAfter, settled } from "./results.j
23
23
  export {
24
24
  SqliteControllerStore,
25
25
  type RunEventRecord,
26
- type WorkflowNotificationRecord,
27
26
  type WorkflowRunClaimOptions,
28
27
  type WorkflowRunPreparationResult,
29
28
  type WorkflowRunQueueRecord,