@osolmaz/pi-workflows 0.16.0 → 0.16.2

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 (175) 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 +48 -16
  22. package/dist/client/view.js +1 -0
  23. package/dist/client/view.js.map +1 -1
  24. package/dist/controllers/index.d.ts +1 -1
  25. package/dist/controllers/index.js.map +1 -1
  26. package/dist/controllers/sqlite.d.ts +20 -165
  27. package/dist/controllers/sqlite.js +178 -436
  28. package/dist/controllers/sqlite.js.map +1 -1
  29. package/dist/extension/index.d.ts +23 -2
  30. package/dist/extension/index.js +637 -534
  31. package/dist/extension/index.js.map +1 -1
  32. package/dist/extension/recorder.d.ts +95 -0
  33. package/dist/extension/recorder.js +530 -0
  34. package/dist/extension/recorder.js.map +1 -0
  35. package/dist/extension/remote-recorder-store.d.ts +25 -0
  36. package/dist/extension/remote-recorder-store.js +81 -0
  37. package/dist/extension/remote-recorder-store.js.map +1 -0
  38. package/dist/extension/session-events.d.ts +134 -0
  39. package/dist/extension/session-events.js +60 -0
  40. package/dist/extension/session-events.js.map +1 -0
  41. package/dist/extension/session-view.d.ts +2 -0
  42. package/dist/extension/session-view.js +60 -2
  43. package/dist/extension/session-view.js.map +1 -1
  44. package/dist/extension/step-message.d.ts +6 -4
  45. package/dist/extension/step-message.js +12 -6
  46. package/dist/extension/step-message.js.map +1 -1
  47. package/dist/extension/widget.d.ts +2 -2
  48. package/dist/extension/widget.js +28 -18
  49. package/dist/extension/widget.js.map +1 -1
  50. package/dist/extension/workflow-message-coordinator.d.ts +28 -0
  51. package/dist/extension/workflow-message-coordinator.js +346 -0
  52. package/dist/extension/workflow-message-coordinator.js.map +1 -0
  53. package/dist/host/channel-effects.d.ts +72 -0
  54. package/dist/host/channel-effects.js +271 -0
  55. package/dist/host/channel-effects.js.map +1 -0
  56. package/dist/host/channel-supervisor.d.ts +21 -0
  57. package/dist/host/channel-supervisor.js +54 -0
  58. package/dist/host/channel-supervisor.js.map +1 -0
  59. package/dist/host/runner.d.ts +50 -8
  60. package/dist/host/runner.js +1632 -341
  61. package/dist/host/runner.js.map +1 -1
  62. package/dist/host/state.d.ts +19 -16
  63. package/dist/host/state.js +251 -63
  64. package/dist/host/state.js.map +1 -1
  65. package/dist/host/view.d.ts +19 -9
  66. package/dist/host/view.js +227 -119
  67. package/dist/host/view.js.map +1 -1
  68. package/dist/host/worker-entry.d.ts +4 -1
  69. package/dist/host/worker-entry.js +23 -24
  70. package/dist/host/worker-entry.js.map +1 -1
  71. package/dist/host/worker-protocol.d.ts +15 -0
  72. package/dist/host/worker-protocol.js.map +1 -1
  73. package/dist/state/prune.js +3 -25
  74. package/dist/state/prune.js.map +1 -1
  75. package/dist/state/schema.js +76 -97
  76. package/dist/state/schema.js.map +1 -1
  77. package/dist/state/workflow-messages.d.ts +98 -0
  78. package/dist/state/workflow-messages.js +366 -0
  79. package/dist/state/workflow-messages.js.map +1 -0
  80. package/dist/viewer/render.js +1 -1
  81. package/dist/viewer/render.js.map +1 -1
  82. package/dist/viewer/tui.d.ts +1 -1
  83. package/dist/viewer/tui.js +65 -8
  84. package/dist/viewer/tui.js.map +1 -1
  85. package/dist/workflows/composition.js +0 -4
  86. package/dist/workflows/composition.js.map +1 -1
  87. package/dist/workflows/definition.js +0 -8
  88. package/dist/workflows/definition.js.map +1 -1
  89. package/dist/workflows/engine.js +4 -5
  90. package/dist/workflows/engine.js.map +1 -1
  91. package/dist/workflows/human-decision.d.ts +2 -0
  92. package/dist/workflows/human-decision.js +8 -2
  93. package/dist/workflows/human-decision.js.map +1 -1
  94. package/dist/workflows/index.d.ts +1 -1
  95. package/dist/workflows/index.js.map +1 -1
  96. package/dist/workflows/schema.js +0 -4
  97. package/dist/workflows/schema.js.map +1 -1
  98. package/dist/workflows/settings.d.ts +1 -8
  99. package/dist/workflows/settings.js.map +1 -1
  100. package/dist/workflows/store.d.ts +20 -19
  101. package/dist/workflows/store.js +163 -354
  102. package/dist/workflows/store.js.map +1 -1
  103. package/dist/workflows/tool-input.d.ts +21 -0
  104. package/dist/workflows/tool-input.js +23 -1
  105. package/dist/workflows/tool-input.js.map +1 -1
  106. package/dist/workflows/types.d.ts +6 -8
  107. package/dist/workflows/workflow-message-content.d.ts +38 -0
  108. package/dist/workflows/workflow-message-content.js +157 -0
  109. package/dist/workflows/workflow-message-content.js.map +1 -0
  110. package/docs/2026-08-18-herdr-piw-plan.md +2 -1
  111. package/docs/2026-08-20-durable-workflow-launch-plan.md +1 -1
  112. package/docs/2026-08-25-workflow-follow-ups.md +26 -50
  113. package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
  114. package/docs/2026-09-01-restore-session-delivery-controls-plan.md +4 -0
  115. package/docs/2026-09-01-unified-workflow-client-plan.md +5 -1
  116. package/docs/2026-09-02-installed-live-e2e-plan.md +15 -1
  117. package/docs/2026-09-02-unify-workflow-messages-plan.md +562 -0
  118. package/docs/2026-09-04-workflow-run-state-plan.md +363 -0
  119. package/docs/DEFERRED_TURNS.md +66 -294
  120. package/docs/HUMAN_DECISIONS.md +29 -30
  121. package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -11
  122. package/docs/SQLITE_STATE.md +25 -17
  123. package/docs/WORKFLOW_HOST.md +105 -31
  124. package/docs/WORKFLOW_STEP_MESSAGES.md +166 -75
  125. package/docs/live-replay-protocol.md +8 -4
  126. package/docs/tui-viewer.md +3 -1
  127. package/docs/workflows.md +44 -28
  128. package/herdr-plugin.toml +1 -1
  129. package/package.json +1 -1
  130. package/plugins/herdr/viewer.mjs +14 -5
  131. package/src/channels/adapter-entry.ts +220 -0
  132. package/src/channels/config.ts +296 -0
  133. package/src/channels/protocol.ts +333 -0
  134. package/src/channels/telegram.ts +335 -0
  135. package/src/client/client.ts +6 -2
  136. package/src/client/index.ts +2 -1
  137. package/src/client/protocol.ts +11 -5
  138. package/src/client/view.ts +51 -18
  139. package/src/controllers/index.ts +0 -1
  140. package/src/controllers/sqlite.ts +247 -845
  141. package/src/extension/index.ts +712 -647
  142. package/src/extension/recorder.ts +687 -0
  143. package/src/extension/remote-recorder-store.ts +126 -0
  144. package/src/extension/session-events.ts +119 -0
  145. package/src/extension/session-view.ts +86 -3
  146. package/src/extension/step-message.ts +19 -9
  147. package/src/extension/widget.ts +37 -17
  148. package/src/extension/workflow-message-coordinator.ts +398 -0
  149. package/src/host/channel-effects.ts +465 -0
  150. package/src/host/channel-supervisor.ts +73 -0
  151. package/src/host/runner.ts +2163 -525
  152. package/src/host/state.ts +333 -94
  153. package/src/host/view.ts +254 -122
  154. package/src/host/worker-entry.ts +38 -30
  155. package/src/host/worker-protocol.ts +11 -0
  156. package/src/state/prune.ts +3 -31
  157. package/src/state/schema.ts +76 -97
  158. package/src/state/workflow-messages.ts +599 -0
  159. package/src/viewer/render.ts +1 -5
  160. package/src/viewer/tui.ts +71 -6
  161. package/src/workflows/composition.ts +0 -5
  162. package/src/workflows/definition.ts +0 -8
  163. package/src/workflows/engine.ts +4 -6
  164. package/src/workflows/human-decision.ts +18 -2
  165. package/src/workflows/index.ts +0 -1
  166. package/src/workflows/schema.ts +0 -6
  167. package/src/workflows/settings.ts +1 -20
  168. package/src/workflows/store.ts +237 -489
  169. package/src/workflows/tool-input.ts +36 -1
  170. package/src/workflows/types.ts +6 -8
  171. package/src/workflows/workflow-message-content.ts +197 -0
  172. package/dist/extension/decision-channels.d.ts +0 -134
  173. package/dist/extension/decision-channels.js +0 -1307
  174. package/dist/extension/decision-channels.js.map +0 -1
  175. package/src/extension/decision-channels.ts +0 -1826
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-recorder-store.js","sourceRoot":"","sources":["../../src/extension/remote-recorder-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ export type PublicAssistantMessageEvent = {
2
+ type: "start";
3
+ partial: unknown;
4
+ } | {
5
+ type: "text_start";
6
+ contentIndex: number;
7
+ partial: unknown;
8
+ } | {
9
+ type: "text_delta";
10
+ contentIndex: number;
11
+ delta: string;
12
+ partial: unknown;
13
+ } | {
14
+ type: "text_end";
15
+ contentIndex: number;
16
+ content: string;
17
+ partial: unknown;
18
+ } | {
19
+ type: "thinking_start";
20
+ contentIndex: number;
21
+ partial: unknown;
22
+ } | {
23
+ type: "thinking_delta";
24
+ contentIndex: number;
25
+ delta: string;
26
+ partial: unknown;
27
+ } | {
28
+ type: "thinking_end";
29
+ contentIndex: number;
30
+ content: string;
31
+ partial: unknown;
32
+ } | {
33
+ type: "toolcall_start";
34
+ contentIndex: number;
35
+ partial: unknown;
36
+ } | {
37
+ type: "toolcall_delta";
38
+ contentIndex: number;
39
+ delta: string;
40
+ partial: unknown;
41
+ } | {
42
+ type: "toolcall_end";
43
+ contentIndex: number;
44
+ toolCall: unknown;
45
+ partial: unknown;
46
+ } | {
47
+ type: "done";
48
+ reason: "stop" | "length" | "toolUse" | "deferred";
49
+ message: unknown;
50
+ } | {
51
+ type: "error";
52
+ reason: "aborted" | "error";
53
+ error: unknown;
54
+ };
55
+ export type TurnStartEventLike = {
56
+ turnIndex: number;
57
+ };
58
+ export type TurnEndEventLike = {
59
+ turnIndex: number;
60
+ message: unknown;
61
+ };
62
+ export type MessageStartEventLike = {
63
+ message: unknown;
64
+ };
65
+ export type MessageUpdateEventLike = {
66
+ message: unknown;
67
+ assistantMessageEvent: PublicAssistantMessageEvent;
68
+ };
69
+ export type MessageEndEventLike = {
70
+ message: unknown;
71
+ };
72
+ export type ToolExecutionStartEventLike = {
73
+ toolCallId: string;
74
+ toolName: string;
75
+ args: unknown;
76
+ };
77
+ export type ToolExecutionUpdateEventLike = {
78
+ toolCallId: string;
79
+ };
80
+ export type ToolExecutionEndEventLike = {
81
+ toolCallId: string;
82
+ toolName: string;
83
+ result: unknown;
84
+ isError: boolean;
85
+ };
86
+ export type NormalizedAssistantEvent = {
87
+ type: "start";
88
+ } | {
89
+ type: "text_start";
90
+ contentIndex: number;
91
+ } | {
92
+ type: "text_delta";
93
+ contentIndex: number;
94
+ delta: string;
95
+ } | {
96
+ type: "text_end";
97
+ contentIndex: number;
98
+ content: string;
99
+ } | {
100
+ type: "thinking_start";
101
+ contentIndex: number;
102
+ } | {
103
+ type: "thinking_delta";
104
+ contentIndex: number;
105
+ delta: string;
106
+ } | {
107
+ type: "thinking_end";
108
+ contentIndex: number;
109
+ content: string;
110
+ } | {
111
+ type: "toolcall_start";
112
+ contentIndex: number;
113
+ } | {
114
+ type: "toolcall_delta";
115
+ contentIndex: number;
116
+ delta: string;
117
+ } | {
118
+ type: "toolcall_end";
119
+ contentIndex: number;
120
+ toolCall: unknown;
121
+ } | {
122
+ type: "done";
123
+ reason: "stop" | "length" | "toolUse" | "deferred";
124
+ } | {
125
+ type: "error";
126
+ reason: "aborted" | "error";
127
+ };
128
+ /** Remove cumulative snapshots while preserving every semantic stream event. */
129
+ export declare function normalizeAssistantEvent(event: PublicAssistantMessageEvent): NormalizedAssistantEvent;
130
+ export declare function messageRole(message: unknown): string;
131
+ export declare function toolCallIdFromAssistantEvent(event: NormalizedAssistantEvent): string | null;
132
+ export declare function toolStartedPayload(event: ToolExecutionStartEventLike): Record<string, unknown>;
133
+ export declare function toolFinishedPayload(event: ToolExecutionEndEventLike): Record<string, unknown>;
134
+ export declare function turnFinishedPayload(event: TurnEndEventLike, messageId: string | undefined, toolCallIds: string[]): Record<string, unknown>;
@@ -0,0 +1,60 @@
1
+ /** Remove cumulative snapshots while preserving every semantic stream event. */
2
+ export function normalizeAssistantEvent(event) {
3
+ switch (event.type) {
4
+ case "start":
5
+ return { type: event.type };
6
+ case "text_start":
7
+ case "thinking_start":
8
+ case "toolcall_start":
9
+ return { type: event.type, contentIndex: event.contentIndex };
10
+ case "text_delta":
11
+ case "thinking_delta":
12
+ case "toolcall_delta":
13
+ return { type: event.type, contentIndex: event.contentIndex, delta: event.delta };
14
+ case "text_end":
15
+ case "thinking_end":
16
+ return { type: event.type, contentIndex: event.contentIndex, content: event.content };
17
+ case "toolcall_end":
18
+ return {
19
+ type: event.type,
20
+ contentIndex: event.contentIndex,
21
+ toolCall: event.toolCall,
22
+ };
23
+ case "done":
24
+ return { type: event.type, reason: event.reason };
25
+ case "error":
26
+ return { type: event.type, reason: event.reason };
27
+ default: {
28
+ const exhaustive = event;
29
+ return exhaustive;
30
+ }
31
+ }
32
+ }
33
+ export function messageRole(message) {
34
+ if (typeof message !== "object" || message === null || !("role" in message)) {
35
+ return "unknown";
36
+ }
37
+ const role = message.role;
38
+ return typeof role === "string" && role.length > 0 ? role : "unknown";
39
+ }
40
+ export function toolCallIdFromAssistantEvent(event) {
41
+ if (event.type !== "toolcall_end" || typeof event.toolCall !== "object" || !event.toolCall) {
42
+ return null;
43
+ }
44
+ const id = event.toolCall.id;
45
+ return typeof id === "string" && id.length > 0 ? id : null;
46
+ }
47
+ export function toolStartedPayload(event) {
48
+ return { toolName: event.toolName, args: event.args };
49
+ }
50
+ export function toolFinishedPayload(event) {
51
+ return { toolName: event.toolName, isError: event.isError, result: event.result };
52
+ }
53
+ export function turnFinishedPayload(event, messageId, toolCallIds) {
54
+ return {
55
+ turnIndex: event.turnIndex,
56
+ ...(messageId === undefined ? {} : { messageId }),
57
+ toolCallIds,
58
+ };
59
+ }
60
+ //# sourceMappingURL=session-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-events.js","sourceRoot":"","sources":["../../src/extension/session-events.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class SessionWorkflowView {
9
9
  private stepCount;
10
10
  private visible;
11
11
  private actionHint;
12
+ private lastNoticeKey;
12
13
  update(session: WorkflowSessionView, ctx: ExtensionContext): void;
13
14
  setActionHint(hint: string | undefined, ctx: ExtensionContext): void;
14
15
  refresh(ctx: ExtensionContext): void;
@@ -18,4 +19,5 @@ export declare class SessionWorkflowView {
18
19
  private scrollBy;
19
20
  private clearWidget;
20
21
  private render;
22
+ private notifyTransition;
21
23
  }
@@ -10,6 +10,7 @@ export class SessionWorkflowView {
10
10
  stepCount = 0;
11
11
  visible = false;
12
12
  actionHint;
13
+ lastNoticeKey = null;
13
14
  update(session, ctx) {
14
15
  const run = session.run;
15
16
  if (run === null ||
@@ -25,6 +26,7 @@ export class SessionWorkflowView {
25
26
  this.stepCount = run.state.steps.length;
26
27
  }
27
28
  this.session = session;
29
+ this.notifyTransition(previousRun, session, ctx);
28
30
  this.render(ctx);
29
31
  }
30
32
  setActionHint(hint, ctx) {
@@ -51,6 +53,7 @@ export class SessionWorkflowView {
51
53
  this.shownScroll = 0;
52
54
  this.maxScroll = 0;
53
55
  this.stepCount = 0;
56
+ this.lastNoticeKey = null;
54
57
  this.clearWidget(ctx);
55
58
  }
56
59
  scrollBy(ctx, delta) {
@@ -78,7 +81,7 @@ export class SessionWorkflowView {
78
81
  const state = run.state;
79
82
  const snapshot = run.workflow;
80
83
  const render = (width = Number.POSITIVE_INFINITY, theme) => {
81
- const view = buildWidgetView(state, snapshot, new Date(), this.scroll, run.display.status === "paused", width, theme, undefined, this.actionHint, run.display.status);
84
+ const view = buildWidgetView(state, snapshot, new Date(), this.scroll, run.display.status === "paused", width, theme, workflowUpdates(run.updates), this.actionHint, run.display.status, run.display.reason, run.display.controls);
82
85
  this.shownScroll = view.scroll;
83
86
  this.maxScroll = view.maxScroll;
84
87
  if (this.scroll !== null)
@@ -95,10 +98,40 @@ export class SessionWorkflowView {
95
98
  else {
96
99
  ctx.ui.setWidget(WIDGET_KEY, render());
97
100
  }
98
- ctx.ui.setStatus(WIDGET_KEY, `${state.workflowName} [${run.display.status}]`);
101
+ const focus = state.currentNode ?? state.waitingOn;
102
+ ctx.ui.setStatus(WIDGET_KEY, `${state.workflowName} [${run.display.status}]${focus === undefined ? "" : ` ${focus}`}`);
99
103
  this.visible = true;
100
104
  });
101
105
  }
106
+ notifyTransition(previousRun, session, ctx) {
107
+ const run = session.run;
108
+ if (run === null || !isWorkflowRunState(run.state))
109
+ return;
110
+ const status = run.display.status;
111
+ const decision = session.pendingInteractions.some((value) => isRecord(value) && value.kind === "decision" && value.status === "pending");
112
+ const shouldNotify = isTerminalStatus(status) ||
113
+ (status === "waiting" && (decision || previousRun?.display.status !== "waiting")) ||
114
+ (status === "paused" && previousRun?.display.status !== "paused");
115
+ if (!shouldNotify)
116
+ return;
117
+ const key = `${run.runId}:${status}:${decision ? "decision" : "workflow"}`;
118
+ if (key === this.lastNoticeKey)
119
+ return;
120
+ this.lastNoticeKey = key;
121
+ const reason = run.display.reason?.trim();
122
+ const message = decision
123
+ ? `Workflow ${run.state.workflowName} needs a human decision.`
124
+ : reason && reason.length > 0
125
+ ? reason
126
+ : `Workflow ${run.state.workflowName} ${status.replace("_", " ")}.`;
127
+ safelyUpdateUi(ctx, () => {
128
+ ctx.ui.notify(message, status === "failed" || status === "timed_out" || status === "ambiguous"
129
+ ? "error"
130
+ : status === "waiting" || status === "paused"
131
+ ? "warning"
132
+ : "info");
133
+ });
134
+ }
102
135
  }
103
136
  function isWorkflowRunState(value) {
104
137
  return (typeof value === "object" &&
@@ -108,6 +141,21 @@ function isWorkflowRunState(value) {
108
141
  typeof value.workflowName === "string" &&
109
142
  Array.isArray(value.steps));
110
143
  }
144
+ function workflowUpdates(values) {
145
+ return values.filter(isWorkflowUpdateRecord);
146
+ }
147
+ function isWorkflowUpdateRecord(value) {
148
+ return (isRecord(value) &&
149
+ typeof value.updateId === "string" &&
150
+ typeof value.seq === "number" &&
151
+ typeof value.at === "string" &&
152
+ typeof value.runId === "string" &&
153
+ typeof value.nodeId === "string" &&
154
+ typeof value.attemptId === "string" &&
155
+ typeof value.type === "string" &&
156
+ typeof value.key === "string" &&
157
+ isRecord(value.data));
158
+ }
111
159
  function isWorkflowDefinitionSnapshot(value) {
112
160
  return (typeof value === "object" &&
113
161
  value !== null &&
@@ -115,6 +163,16 @@ function isWorkflowDefinitionSnapshot(value) {
115
163
  value.schema === "pi-workflows.definition-snapshot.v1" &&
116
164
  typeof value.nodes === "object");
117
165
  }
166
+ function isTerminalStatus(status) {
167
+ return (status === "completed" ||
168
+ status === "failed" ||
169
+ status === "timed_out" ||
170
+ status === "cancelled" ||
171
+ status === "ambiguous");
172
+ }
173
+ function isRecord(value) {
174
+ return typeof value === "object" && value !== null && !Array.isArray(value);
175
+ }
118
176
  function safelyUpdateUi(ctx, update) {
119
177
  try {
120
178
  if (ctx.hasUI)
@@ -1 +1 @@
1
- {"version":3,"file":"session-view.js","sourceRoot":"","sources":["../../src/extension/session-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-view.js","sourceRoot":"","sources":["../../src/extension/session-view.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,iFAAiF;AACjF,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAA+B,IAAI,CAAC;IAC3C,MAAM,GAAkB,IAAI,CAAC;IAC7B,WAAW,GAAG,CAAC,CAAC;IAChB,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,KAAK,CAAC;IAChB,UAAU,CAAqB;IAC/B,aAAa,GAAkB,IAAI,CAAC;IAE5C,MAAM,CAAC,OAA4B,EAAE,GAAqB;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,IACE,GAAG,KAAK,IAAI;YACZ,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC3C,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;QACtC,IAAI,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,IAAwB,EAAE,GAAqB;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAqB;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,GAAqB;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,GAAqB;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,GAAqB;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAEO,QAAQ,CAAC,GAAqB,EAAE,KAAa;QACnD,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,GAAqB;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;YACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACxC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,GAAqB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;QAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1F,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,MAAM,GAAG,CACb,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAChC,KAA6C,EAC7C,EAAE;YACF,MAAM,IAAI,GAAG,eAAe,CAC1B,KAAK,EACL,QAAQ,EACR,IAAI,IAAI,EAAE,EACV,IAAI,CAAC,MAAM,EACX,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,EAC/B,KAAK,EACL,KAAK,EACL,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAC5B,IAAI,CAAC,UAAU,EACf,GAAG,CAAC,OAAO,CAAC,MAAM,EAClB,GAAG,CAAC,OAAO,CAAC,MAAM,EAClB,GAAG,CAAC,OAAO,CAAC,QAAQ,CACrB,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC;QACF,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;oBACvC,UAAU,KAAI,CAAC;iBAChB,CAAC,CAAC,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,CAAC;YACnD,GAAG,CAAC,EAAE,CAAC,SAAS,CACd,UAAU,EACV,GAAG,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CACzF,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CACtB,WAAmD,EACnD,OAA4B,EAC5B,GAAqB;QAErB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CACtF,CAAC;QACF,MAAM,YAAY,GAChB,gBAAgB,CAAC,MAAM,CAAC;YACxB,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACjF,CAAC,MAAM,KAAK,QAAQ,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC3E,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QACvC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ;YACtB,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,0BAA0B;YAC9D,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;QACxE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;YACvB,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,OAAO,EACP,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW;gBACrE,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ;oBAC3C,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,MAAM,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAA8B,CAAC,MAAM,KAAK,2BAA2B;QACtE,OAAQ,KAAoC,CAAC,YAAY,KAAK,QAAQ;QACtE,KAAK,CAAC,OAAO,CAAE,KAA6B,CAAC,KAAK,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAA0B;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAA8B,CAAC,MAAM,KAAK,qCAAqC;QAChF,OAAQ,KAA6B,CAAC,KAAK,KAAK,QAAQ,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,CACL,MAAM,KAAK,WAAW;QACtB,MAAM,KAAK,QAAQ;QACnB,MAAM,KAAK,WAAW;QACtB,MAAM,KAAK,WAAW;QACtB,MAAM,KAAK,WAAW,CACvB,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,cAAc,CAAC,GAAqB,EAAE,MAAkB;IAC/D,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK;YAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;AACH,CAAC"}
@@ -1,15 +1,17 @@
1
1
  import type { ExtensionAPI, Theme } from "@earendil-works/pi-coding-agent";
2
2
  import type { AgentStepContract, AgentStepPresentation, AgentStepSubmission } from "../workflows/types.js";
3
3
  import { type MessageCardView } from "./message-card.js";
4
- export declare const WORKFLOW_AGENT_STEP_MESSAGE_TYPE = "pi-workflows-agent-step";
4
+ export declare const WORKFLOW_AGENT_STEP_MESSAGE_TYPE = "pi-workflows-step";
5
5
  export declare const WORKFLOW_AGENT_STEP_MESSAGE_SCHEMA = "pi-workflows.agent-step-message.v1";
6
- type PromptDeliveryKind = "step" | "reminder" | "resume";
6
+ type PromptDeliveryReason = "initial" | "reminder" | "resumed";
7
7
  export type WorkflowAgentStepMessageDetails = {
8
8
  schema: typeof WORKFLOW_AGENT_STEP_MESSAGE_SCHEMA;
9
- kind: PromptDeliveryKind;
9
+ kind: "step";
10
+ reason: PromptDeliveryReason;
10
11
  contract: AgentStepContract;
11
12
  presentation?: AgentStepPresentation;
12
- turnIntentId?: string;
13
+ requestId: string;
14
+ workflowMessageId: string;
13
15
  };
14
16
  type WorkflowAgentStepMessage = {
15
17
  content: unknown;
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { WORKFLOW_STEP_MESSAGE_TYPE } from "../workflows/workflow-message-content.js";
2
3
  import { cleanOptionalSingleLine, cleanSingleLine, customMessageContentText, paintMessageCard, renderMessageCard, } from "./message-card.js";
3
- export const WORKFLOW_AGENT_STEP_MESSAGE_TYPE = "pi-workflows-agent-step";
4
+ export const WORKFLOW_AGENT_STEP_MESSAGE_TYPE = WORKFLOW_STEP_MESSAGE_TYPE;
4
5
  export const WORKFLOW_AGENT_STEP_MESSAGE_SCHEMA = "pi-workflows.agent-step-message.v1";
5
6
  export function registerWorkflowAgentStepMessageRenderer(pi) {
6
7
  pi.registerMessageRenderer(WORKFLOW_AGENT_STEP_MESSAGE_TYPE, (message, { expanded }, theme) => renderMessageCard(buildWorkflowAgentStepView(message, expanded, theme), theme));
@@ -9,14 +10,14 @@ export function registerWorkflowAgentStepMessageRenderer(pi) {
9
10
  export function buildWorkflowAgentStepView(message, expanded, theme) {
10
11
  const details = parseDetails(message.details);
11
12
  const contract = details?.contract;
12
- const kind = details?.kind ?? "step";
13
+ const reason = details?.reason ?? "initial";
13
14
  const workflowName = cleanSingleLine(contract?.workflowName ?? "Workflow");
14
15
  const nodeId = cleanSingleLine(contract?.nodeId ?? "step");
15
16
  const runTitle = cleanOptionalSingleLine(details?.presentation?.runTitle);
16
17
  const statusDetail = cleanOptionalSingleLine(details?.presentation?.statusDetail);
17
18
  const label = runTitle ?? workflowName;
18
- const suffix = kind === "step" ? "" : ` · ${kind}`;
19
- const glyph = kind === "step" ? "▶" : "↻";
19
+ const suffix = reason === "initial" ? "" : ` · ${reason}`;
20
+ const glyph = reason === "initial" ? "▶" : "↻";
20
21
  const title = paintMessageCard(theme, "accent", `${glyph} ${label} › ${nodeId}${suffix}`);
21
22
  if (!expanded) {
22
23
  return {
@@ -36,7 +37,7 @@ export function buildWorkflowAgentStepView(message, expanded, theme) {
36
37
  `Run id: ${cleanSingleLine(contract?.runId ?? "unknown")}`,
37
38
  `Node id: ${nodeId}`,
38
39
  `Attempt id: ${cleanSingleLine(contract?.attemptId ?? "unknown")}`,
39
- `Delivery: ${kind}`,
40
+ `Reason: ${reason}`,
40
41
  `Completion: ${assistant ? "assistant response" : "workflow submission"}`,
41
42
  `Expected output: ${cleanSingleLine(expectedOutput)}`,
42
43
  ];
@@ -165,7 +166,12 @@ function parseDetails(value) {
165
166
  const candidate = value;
166
167
  if (candidate.schema !== WORKFLOW_AGENT_STEP_MESSAGE_SCHEMA)
167
168
  return undefined;
168
- if (candidate.kind !== "step" && candidate.kind !== "reminder" && candidate.kind !== "resume") {
169
+ if (candidate.kind !== "step" ||
170
+ (candidate.reason !== "initial" &&
171
+ candidate.reason !== "reminder" &&
172
+ candidate.reason !== "resumed") ||
173
+ typeof candidate.requestId !== "string" ||
174
+ typeof candidate.workflowMessageId !== "string") {
169
175
  return undefined;
170
176
  }
171
177
  const contract = candidate.contract;
@@ -1 +1 @@
1
- {"version":3,"file":"step-message.js","sourceRoot":"","sources":["../../src/extension/step-message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-message.js","sourceRoot":"","sources":["../../src/extension/step-message.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Theme } from "@earendil-works/pi-coding-agent";
2
2
  import type { WorkflowDisplayStatus } from "../client/view.js";
3
3
  import type { WorkflowDefinitionSnapshot, WorkflowRunState, WorkflowUpdateRecord } from "../workflows/types.js";
4
- export declare function nodeGlyph(state: WorkflowRunState, nodeId: string): string;
4
+ export declare function nodeGlyph(state: WorkflowRunState, nodeId: string, displayStatus?: WorkflowDisplayStatus): string;
5
5
  /** Node ids in a stable display order: definition order from the snapshot. */
6
6
  export declare function displayNodeIds(snapshot: WorkflowDefinitionSnapshot): string[];
7
7
  export type WidgetTheme = Pick<Theme, "bold" | "fg">;
@@ -17,6 +17,6 @@ export type WidgetView = {
17
17
  * follows the active node by default, and never returns a line wider than the
18
18
  * width supplied by Pi's component renderer.
19
19
  */
20
- export declare function buildWidgetView(state: WorkflowRunState, snapshot: WorkflowDefinitionSnapshot, now?: Date, scroll?: number | null, held?: boolean, width?: number, theme?: WidgetTheme, updateHistory?: WorkflowUpdateRecord[], actionHint?: string, displayStatus?: WorkflowDisplayStatus): WidgetView;
20
+ export declare function buildWidgetView(state: WorkflowRunState, snapshot: WorkflowDefinitionSnapshot, now?: Date, scroll?: number | null, held?: boolean, width?: number, theme?: WidgetTheme, updateHistory?: WorkflowUpdateRecord[], actionHint?: string, displayStatus?: WorkflowDisplayStatus, displayReason?: string | null, controls?: readonly string[]): WidgetView;
21
21
  /** Compact line view following the active node. */
22
22
  export declare function buildWidgetLines(state: WorkflowRunState, snapshot: WorkflowDefinitionSnapshot, now?: Date): string[];
@@ -21,17 +21,20 @@ const STATUS_GLYPHS = {
21
21
  */
22
22
  const PI_MAX_WIDGET_LINES = 10;
23
23
  const MAX_NODE_ERROR_CHARS = 120;
24
- export function nodeGlyph(state, nodeId) {
25
- if (state.currentNode === nodeId) {
24
+ function displayedRunningNode(state, displayStatus) {
25
+ return state.currentNode ?? (displayStatus === "running" ? state.waitingOn : undefined);
26
+ }
27
+ export function nodeGlyph(state, nodeId, displayStatus) {
28
+ if (displayedRunningNode(state, displayStatus) === nodeId) {
26
29
  return "◐";
27
30
  }
31
+ if (state.waitingOn === nodeId) {
32
+ return "⏸";
33
+ }
28
34
  const result = state.results[nodeId];
29
35
  if (!result) {
30
36
  return "·";
31
37
  }
32
- if (state.waitingOn === nodeId) {
33
- return "⏸";
34
- }
35
38
  return result.outcome === "ok" ? "✓" : "✗";
36
39
  }
37
40
  /** Node ids in a stable display order: definition order from the snapshot. */
@@ -43,7 +46,7 @@ export function displayNodeIds(snapshot) {
43
46
  * follows the active node by default, and never returns a line wider than the
44
47
  * width supplied by Pi's component renderer.
45
48
  */
46
- export function buildWidgetView(state, snapshot, now = new Date(), scroll = null, held = false, width = Number.POSITIVE_INFINITY, theme, updateHistory, actionHint, displayStatus) {
49
+ export function buildWidgetView(state, snapshot, now = new Date(), scroll = null, held = false, width = Number.POSITIVE_INFINITY, theme, updateHistory, actionHint, displayStatus, displayReason, controls) {
47
50
  const availableWidth = Number.isFinite(width) ? Math.max(0, Math.floor(width)) : width;
48
51
  if (availableWidth === 0)
49
52
  return { lines: [], scroll: 0, maxScroll: 0 };
@@ -59,16 +62,22 @@ export function buildWidgetView(state, snapshot, now = new Date(), scroll = null
59
62
  const headerTone = statusTone(status);
60
63
  const header = `${paint(theme, headerTone, glyph)} workflow ${sanitizeText(state.workflowName)}${title} ${paint(theme, headerTone, `[${statusText}]`)}`;
61
64
  const footer = [];
65
+ if (displayReason) {
66
+ footer.push(paint(theme, "dim", ` ${sanitizeText(displayReason)}`));
67
+ }
68
+ if (controls !== undefined && controls.length > 0) {
69
+ footer.push(paint(theme, "dim", ` controls: ${controls.join(", ")}`));
70
+ }
62
71
  if (state.error) {
63
72
  footer.push(paint(theme, "error", ` error: ${truncate(sanitizeText(state.error), 120)}`));
64
73
  }
65
74
  if (status === "waiting" && state.waitingOn) {
66
- footer.push(paint(theme, "warning", ` waiting on checkpoint: ${sanitizeText(state.waitingOn)}`));
75
+ footer.push(paint(theme, "warning", ` waiting on step: ${sanitizeText(state.waitingOn)}`));
67
76
  }
68
77
  const hint = actionHint?.trim() ? sanitizeText(actionHint) : undefined;
69
78
  const progress = progressLines(state, now, updateHistory).slice(0, 4);
70
79
  const baseBudget = PI_MAX_WIDGET_LINES - 1 - footer.length - progress.length;
71
- const nodes = displayNodeIds(snapshot).map((nodeId) => compactNodeLine(state, snapshot, nodeId, now, paused, theme));
80
+ const nodes = displayNodeIds(snapshot).map((nodeId) => compactNodeLine(state, snapshot, nodeId, now, paused, status, theme));
72
81
  const combineHintWithWindow = hint !== undefined && nodes.length > 0 && nodes.length + 1 > baseBudget;
73
82
  if (hint !== undefined && !combineHintWithWindow) {
74
83
  footer.push(paint(theme, "dim", ` ${hint}`));
@@ -176,14 +185,15 @@ function compactFocusIndex(state, snapshot) {
176
185
  const index = nodeIds.indexOf(focused);
177
186
  return index === -1 ? Math.max(0, nodeIds.length - 1) : index;
178
187
  }
179
- function compactNodeLine(state, snapshot, nodeId, now, paused, theme) {
188
+ function compactNodeLine(state, snapshot, nodeId, now, paused, displayStatus, theme) {
180
189
  const node = snapshot.nodes[nodeId];
181
- const glyph = nodeGlyph(state, nodeId);
190
+ const runningNode = displayedRunningNode(state, displayStatus);
191
+ const isCurrent = runningNode === nodeId;
192
+ const isWaiting = state.waitingOn === nodeId && !isCurrent;
193
+ const glyph = nodeGlyph(state, nodeId, displayStatus);
182
194
  const typeGlyph = node ? nodeTypeGlyph(node.nodeType, node.actionExecution) : "?";
183
195
  const name = sanitizeText(nodeId);
184
- const segments = nodeRuntimeSegments(state, snapshot, nodeId, now);
185
- const isCurrent = state.currentNode === nodeId;
186
- const isWaiting = state.waitingOn === nodeId;
196
+ const segments = nodeRuntimeSegments(state, snapshot, nodeId, now, isCurrent);
187
197
  if (isCurrent || isWaiting) {
188
198
  const tone = paused || isWaiting ? "warning" : "accent";
189
199
  const focusedName = theme ? theme.bold(name) : name;
@@ -201,7 +211,7 @@ function compactNodeLine(state, snapshot, nodeId, now, paused, theme) {
201
211
  const detail = styledSegments.length > 0 ? ` · ${styledSegments.join(" · ")}` : "";
202
212
  return `${styledGlyph} ${styledType} ${name}${detail}`;
203
213
  }
204
- function nodeRuntimeSegments(state, snapshot, nodeId, now) {
214
+ function nodeRuntimeSegments(state, snapshot, nodeId, now, isCurrent) {
205
215
  const segments = [];
206
216
  const node = snapshot.nodes[nodeId];
207
217
  if (node?.nodeType === "agent" &&
@@ -210,11 +220,11 @@ function nodeRuntimeSegments(state, snapshot, nodeId, now) {
210
220
  segments.push("assistant response");
211
221
  }
212
222
  const completedAttempts = state.steps.filter((step) => step.nodeId === nodeId).length;
213
- const attempts = completedAttempts + (state.currentNode === nodeId ? 1 : 0);
223
+ const attempts = completedAttempts + (isCurrent ? 1 : 0);
214
224
  if (attempts > 1) {
215
225
  segments.push(`↻${attempts}`);
216
226
  }
217
- if (state.currentNode === nodeId && state.currentSettingsChangeNumber !== undefined) {
227
+ if (isCurrent && state.currentSettingsChangeNumber !== undefined) {
218
228
  segments.push(`settings ${state.currentSettingsChangeNumber}`);
219
229
  }
220
230
  else {
@@ -224,8 +234,8 @@ function nodeRuntimeSegments(state, snapshot, nodeId, now) {
224
234
  }
225
235
  }
226
236
  const result = state.results[nodeId];
227
- if (state.currentNode === nodeId) {
228
- if (state.statusDetail) {
237
+ if (isCurrent) {
238
+ if (state.currentNode === nodeId && state.statusDetail) {
229
239
  segments.push(sanitizeText(state.statusDetail));
230
240
  }
231
241
  const elapsed = elapsedSince(state.currentNodeStartedAt, now);