@blackbelt-technology/pi-agent-dashboard 0.2.0

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 (212) hide show
  1. package/AGENTS.md +342 -0
  2. package/README.md +619 -0
  3. package/docs/architecture.md +646 -0
  4. package/package.json +92 -0
  5. package/packages/extension/package.json +33 -0
  6. package/packages/extension/src/__tests__/ask-user-tool.test.ts +85 -0
  7. package/packages/extension/src/__tests__/command-handler.test.ts +712 -0
  8. package/packages/extension/src/__tests__/connection.test.ts +344 -0
  9. package/packages/extension/src/__tests__/credentials-updated.test.ts +26 -0
  10. package/packages/extension/src/__tests__/dev-build.test.ts +79 -0
  11. package/packages/extension/src/__tests__/event-forwarder.test.ts +89 -0
  12. package/packages/extension/src/__tests__/git-info.test.ts +112 -0
  13. package/packages/extension/src/__tests__/git-link-builder.test.ts +102 -0
  14. package/packages/extension/src/__tests__/openspec-activity-detector.test.ts +232 -0
  15. package/packages/extension/src/__tests__/openspec-poller.test.ts +119 -0
  16. package/packages/extension/src/__tests__/process-metrics.test.ts +47 -0
  17. package/packages/extension/src/__tests__/process-scanner.test.ts +202 -0
  18. package/packages/extension/src/__tests__/prompt-expander.test.ts +54 -0
  19. package/packages/extension/src/__tests__/server-auto-start.test.ts +167 -0
  20. package/packages/extension/src/__tests__/server-launcher.test.ts +44 -0
  21. package/packages/extension/src/__tests__/server-probe.test.ts +25 -0
  22. package/packages/extension/src/__tests__/session-switch.test.ts +139 -0
  23. package/packages/extension/src/__tests__/session-sync.test.ts +55 -0
  24. package/packages/extension/src/__tests__/source-detector.test.ts +73 -0
  25. package/packages/extension/src/__tests__/stats-extractor.test.ts +92 -0
  26. package/packages/extension/src/__tests__/ui-proxy.test.ts +583 -0
  27. package/packages/extension/src/__tests__/watchdog.test.ts +161 -0
  28. package/packages/extension/src/ask-user-tool.ts +63 -0
  29. package/packages/extension/src/bridge-context.ts +64 -0
  30. package/packages/extension/src/bridge.ts +926 -0
  31. package/packages/extension/src/command-handler.ts +538 -0
  32. package/packages/extension/src/connection.ts +204 -0
  33. package/packages/extension/src/dev-build.ts +39 -0
  34. package/packages/extension/src/event-forwarder.ts +40 -0
  35. package/packages/extension/src/flow-event-wiring.ts +102 -0
  36. package/packages/extension/src/git-info.ts +65 -0
  37. package/packages/extension/src/git-link-builder.ts +112 -0
  38. package/packages/extension/src/model-tracker.ts +56 -0
  39. package/packages/extension/src/pi-env.d.ts +23 -0
  40. package/packages/extension/src/process-metrics.ts +70 -0
  41. package/packages/extension/src/process-scanner.ts +396 -0
  42. package/packages/extension/src/prompt-expander.ts +87 -0
  43. package/packages/extension/src/provider-register.ts +276 -0
  44. package/packages/extension/src/server-auto-start.ts +87 -0
  45. package/packages/extension/src/server-launcher.ts +82 -0
  46. package/packages/extension/src/server-probe.ts +33 -0
  47. package/packages/extension/src/session-sync.ts +154 -0
  48. package/packages/extension/src/source-detector.ts +26 -0
  49. package/packages/extension/src/ui-proxy.ts +269 -0
  50. package/packages/extension/tsconfig.json +11 -0
  51. package/packages/server/package.json +37 -0
  52. package/packages/server/src/__tests__/auth-plugin.test.ts +117 -0
  53. package/packages/server/src/__tests__/auth.test.ts +224 -0
  54. package/packages/server/src/__tests__/auto-attach.test.ts +246 -0
  55. package/packages/server/src/__tests__/auto-resume.test.ts +135 -0
  56. package/packages/server/src/__tests__/auto-shutdown.test.ts +136 -0
  57. package/packages/server/src/__tests__/browse-endpoint.test.ts +104 -0
  58. package/packages/server/src/__tests__/bulk-archive-handler.test.ts +15 -0
  59. package/packages/server/src/__tests__/cli-parse.test.ts +73 -0
  60. package/packages/server/src/__tests__/client-discovery.test.ts +39 -0
  61. package/packages/server/src/__tests__/config-api.test.ts +104 -0
  62. package/packages/server/src/__tests__/cors.test.ts +48 -0
  63. package/packages/server/src/__tests__/directory-service.test.ts +240 -0
  64. package/packages/server/src/__tests__/editor-detection.test.ts +60 -0
  65. package/packages/server/src/__tests__/editor-endpoints.test.ts +26 -0
  66. package/packages/server/src/__tests__/editor-manager.test.ts +73 -0
  67. package/packages/server/src/__tests__/editor-registry.test.ts +151 -0
  68. package/packages/server/src/__tests__/event-status-extraction-flow.test.ts +55 -0
  69. package/packages/server/src/__tests__/event-status-extraction.test.ts +58 -0
  70. package/packages/server/src/__tests__/extension-register.test.ts +61 -0
  71. package/packages/server/src/__tests__/file-endpoint.test.ts +49 -0
  72. package/packages/server/src/__tests__/force-kill-handler.test.ts +109 -0
  73. package/packages/server/src/__tests__/git-operations.test.ts +251 -0
  74. package/packages/server/src/__tests__/headless-pid-registry.test.ts +233 -0
  75. package/packages/server/src/__tests__/headless-shutdown-fallback.test.ts +109 -0
  76. package/packages/server/src/__tests__/health-endpoint.test.ts +35 -0
  77. package/packages/server/src/__tests__/heartbeat-ack.test.ts +63 -0
  78. package/packages/server/src/__tests__/json-store.test.ts +70 -0
  79. package/packages/server/src/__tests__/localhost-guard.test.ts +149 -0
  80. package/packages/server/src/__tests__/memory-event-store.test.ts +260 -0
  81. package/packages/server/src/__tests__/memory-session-manager.test.ts +80 -0
  82. package/packages/server/src/__tests__/meta-persistence.test.ts +107 -0
  83. package/packages/server/src/__tests__/migrate-persistence.test.ts +180 -0
  84. package/packages/server/src/__tests__/npm-search-proxy.test.ts +153 -0
  85. package/packages/server/src/__tests__/oauth-callback-server.test.ts +165 -0
  86. package/packages/server/src/__tests__/openspec-archive.test.ts +87 -0
  87. package/packages/server/src/__tests__/package-manager-wrapper.test.ts +163 -0
  88. package/packages/server/src/__tests__/package-routes.test.ts +172 -0
  89. package/packages/server/src/__tests__/pending-fork-registry.test.ts +69 -0
  90. package/packages/server/src/__tests__/pending-load-manager.test.ts +144 -0
  91. package/packages/server/src/__tests__/pending-resume-registry.test.ts +130 -0
  92. package/packages/server/src/__tests__/pi-resource-scanner.test.ts +235 -0
  93. package/packages/server/src/__tests__/preferences-store.test.ts +108 -0
  94. package/packages/server/src/__tests__/process-manager.test.ts +184 -0
  95. package/packages/server/src/__tests__/provider-auth-handlers.test.ts +93 -0
  96. package/packages/server/src/__tests__/provider-auth-routes.test.ts +143 -0
  97. package/packages/server/src/__tests__/provider-auth-storage.test.ts +114 -0
  98. package/packages/server/src/__tests__/resolve-path.test.ts +38 -0
  99. package/packages/server/src/__tests__/ring-buffer.test.ts +45 -0
  100. package/packages/server/src/__tests__/server-pid.test.ts +89 -0
  101. package/packages/server/src/__tests__/session-api.test.ts +244 -0
  102. package/packages/server/src/__tests__/session-diff.test.ts +138 -0
  103. package/packages/server/src/__tests__/session-file-dedup.test.ts +102 -0
  104. package/packages/server/src/__tests__/session-file-reader.test.ts +85 -0
  105. package/packages/server/src/__tests__/session-lifecycle-logging.test.ts +138 -0
  106. package/packages/server/src/__tests__/session-order-manager.test.ts +135 -0
  107. package/packages/server/src/__tests__/session-ordering-integration.test.ts +102 -0
  108. package/packages/server/src/__tests__/session-scanner.test.ts +199 -0
  109. package/packages/server/src/__tests__/shutdown-endpoint.test.ts +42 -0
  110. package/packages/server/src/__tests__/skip-wipe.test.ts +123 -0
  111. package/packages/server/src/__tests__/sleep-aware-heartbeat.test.ts +126 -0
  112. package/packages/server/src/__tests__/smoke-integration.test.ts +175 -0
  113. package/packages/server/src/__tests__/spa-fallback.test.ts +68 -0
  114. package/packages/server/src/__tests__/subscription-handler.test.ts +155 -0
  115. package/packages/server/src/__tests__/terminal-gateway.test.ts +61 -0
  116. package/packages/server/src/__tests__/terminal-manager.test.ts +257 -0
  117. package/packages/server/src/__tests__/trusted-networks-config.test.ts +84 -0
  118. package/packages/server/src/__tests__/tunnel.test.ts +206 -0
  119. package/packages/server/src/__tests__/ws-ping-pong.test.ts +112 -0
  120. package/packages/server/src/auth-plugin.ts +302 -0
  121. package/packages/server/src/auth.ts +323 -0
  122. package/packages/server/src/browse.ts +55 -0
  123. package/packages/server/src/browser-gateway.ts +495 -0
  124. package/packages/server/src/browser-handlers/directory-handler.ts +137 -0
  125. package/packages/server/src/browser-handlers/handler-context.ts +45 -0
  126. package/packages/server/src/browser-handlers/session-action-handler.ts +271 -0
  127. package/packages/server/src/browser-handlers/session-meta-handler.ts +95 -0
  128. package/packages/server/src/browser-handlers/subscription-handler.ts +154 -0
  129. package/packages/server/src/browser-handlers/terminal-handler.ts +37 -0
  130. package/packages/server/src/cli.ts +347 -0
  131. package/packages/server/src/config-api.ts +130 -0
  132. package/packages/server/src/directory-service.ts +162 -0
  133. package/packages/server/src/editor-detection.ts +60 -0
  134. package/packages/server/src/editor-manager.ts +352 -0
  135. package/packages/server/src/editor-proxy.ts +134 -0
  136. package/packages/server/src/editor-registry.ts +108 -0
  137. package/packages/server/src/event-status-extraction.ts +131 -0
  138. package/packages/server/src/event-wiring.ts +589 -0
  139. package/packages/server/src/extension-register.ts +92 -0
  140. package/packages/server/src/git-operations.ts +200 -0
  141. package/packages/server/src/headless-pid-registry.ts +207 -0
  142. package/packages/server/src/idle-timer.ts +61 -0
  143. package/packages/server/src/json-store.ts +32 -0
  144. package/packages/server/src/localhost-guard.ts +117 -0
  145. package/packages/server/src/memory-event-store.ts +193 -0
  146. package/packages/server/src/memory-session-manager.ts +123 -0
  147. package/packages/server/src/meta-persistence.ts +64 -0
  148. package/packages/server/src/migrate-persistence.ts +195 -0
  149. package/packages/server/src/npm-search-proxy.ts +143 -0
  150. package/packages/server/src/oauth-callback-server.ts +177 -0
  151. package/packages/server/src/openspec-archive.ts +60 -0
  152. package/packages/server/src/package-manager-wrapper.ts +200 -0
  153. package/packages/server/src/pending-fork-registry.ts +53 -0
  154. package/packages/server/src/pending-load-manager.ts +110 -0
  155. package/packages/server/src/pending-resume-registry.ts +69 -0
  156. package/packages/server/src/pi-gateway.ts +419 -0
  157. package/packages/server/src/pi-resource-scanner.ts +369 -0
  158. package/packages/server/src/preferences-store.ts +116 -0
  159. package/packages/server/src/process-manager.ts +311 -0
  160. package/packages/server/src/provider-auth-handlers.ts +438 -0
  161. package/packages/server/src/provider-auth-storage.ts +200 -0
  162. package/packages/server/src/resolve-path.ts +12 -0
  163. package/packages/server/src/routes/editor-routes.ts +86 -0
  164. package/packages/server/src/routes/file-routes.ts +116 -0
  165. package/packages/server/src/routes/git-routes.ts +89 -0
  166. package/packages/server/src/routes/openspec-routes.ts +99 -0
  167. package/packages/server/src/routes/package-routes.ts +172 -0
  168. package/packages/server/src/routes/provider-auth-routes.ts +244 -0
  169. package/packages/server/src/routes/provider-routes.ts +101 -0
  170. package/packages/server/src/routes/route-deps.ts +23 -0
  171. package/packages/server/src/routes/session-routes.ts +91 -0
  172. package/packages/server/src/routes/system-routes.ts +271 -0
  173. package/packages/server/src/server-pid.ts +84 -0
  174. package/packages/server/src/server.ts +554 -0
  175. package/packages/server/src/session-api.ts +330 -0
  176. package/packages/server/src/session-bootstrap.ts +80 -0
  177. package/packages/server/src/session-diff.ts +178 -0
  178. package/packages/server/src/session-discovery.ts +134 -0
  179. package/packages/server/src/session-file-reader.ts +135 -0
  180. package/packages/server/src/session-order-manager.ts +73 -0
  181. package/packages/server/src/session-scanner.ts +233 -0
  182. package/packages/server/src/session-stats-reader.ts +99 -0
  183. package/packages/server/src/terminal-gateway.ts +51 -0
  184. package/packages/server/src/terminal-manager.ts +241 -0
  185. package/packages/server/src/tunnel.ts +329 -0
  186. package/packages/server/tsconfig.json +11 -0
  187. package/packages/shared/package.json +15 -0
  188. package/packages/shared/src/__tests__/config.test.ts +358 -0
  189. package/packages/shared/src/__tests__/deriveChangeState.test.ts +95 -0
  190. package/packages/shared/src/__tests__/mdns-discovery.test.ts +80 -0
  191. package/packages/shared/src/__tests__/protocol.test.ts +243 -0
  192. package/packages/shared/src/__tests__/resolve-jiti.test.ts +17 -0
  193. package/packages/shared/src/__tests__/server-identity.test.ts +73 -0
  194. package/packages/shared/src/__tests__/session-meta.test.ts +125 -0
  195. package/packages/shared/src/archive-types.ts +11 -0
  196. package/packages/shared/src/browser-protocol.ts +534 -0
  197. package/packages/shared/src/config.ts +245 -0
  198. package/packages/shared/src/diff-types.ts +41 -0
  199. package/packages/shared/src/editor-types.ts +18 -0
  200. package/packages/shared/src/mdns-discovery.ts +248 -0
  201. package/packages/shared/src/openspec-activity-detector.ts +109 -0
  202. package/packages/shared/src/openspec-poller.ts +96 -0
  203. package/packages/shared/src/protocol.ts +369 -0
  204. package/packages/shared/src/resolve-jiti.ts +43 -0
  205. package/packages/shared/src/rest-api.ts +255 -0
  206. package/packages/shared/src/server-identity.ts +51 -0
  207. package/packages/shared/src/session-meta.ts +86 -0
  208. package/packages/shared/src/state-replay.ts +174 -0
  209. package/packages/shared/src/stats-extractor.ts +54 -0
  210. package/packages/shared/src/terminal-types.ts +18 -0
  211. package/packages/shared/src/types.ts +351 -0
  212. package/packages/shared/tsconfig.json +8 -0
@@ -0,0 +1,351 @@
1
+ /** Source environment where a pi session is running */
2
+ export type SessionSource = "tui" | "zed" | "tmux" | "dashboard" | "terminal" | "unknown";
3
+
4
+ /** Current status of a session */
5
+ export type SessionStatus = "active" | "idle" | "streaming" | "ended";
6
+
7
+ /** A dashboard session representing a connected pi instance */
8
+ export interface DashboardSession {
9
+ id: string;
10
+ cwd: string;
11
+ name?: string;
12
+ source: SessionSource;
13
+ status: SessionStatus;
14
+ model?: string;
15
+ thinkingLevel?: string;
16
+ startedAt: number;
17
+ endedAt?: number;
18
+ tokensIn?: number;
19
+ tokensOut?: number;
20
+ cacheRead?: number;
21
+ cacheWrite?: number;
22
+ cost?: number;
23
+ currentTool?: string | null;
24
+ gitBranch?: string;
25
+ gitBranchUrl?: string;
26
+ gitPrNumber?: number;
27
+ gitPrUrl?: string;
28
+ openspecPhase?: OpenSpecPhase | null;
29
+ openspecChange?: string | null;
30
+ attachedProposal?: string | null;
31
+ contextTokens?: number | null;
32
+ contextWindow?: number;
33
+ sessionFile?: string;
34
+ sessionDir?: string;
35
+ hidden?: boolean;
36
+ firstMessage?: string;
37
+ dataUnavailable?: boolean;
38
+ resuming?: boolean;
39
+ /** Active flow name (set during flow execution) */
40
+ activeFlowName?: string;
41
+ /** Number of completed agents in the active flow */
42
+ flowAgentsDone?: number;
43
+ /** Total number of agents in the active flow */
44
+ flowAgentsTotal?: number;
45
+ /** Flow execution status */
46
+ flowStatus?: FlowStatus;
47
+ /** Last known bridge entry count (for skip-wipe comparison on reconnect) */
48
+ lastEntryCount?: number;
49
+ /** OS process ID of the pi agent — used for force-kill escalation */
50
+ pid?: number;
51
+ /** Active child processes detected by bridge process scanner */
52
+ processes?: Array<{ pid: number; pgid: number; command: string; elapsedMs: number }>;
53
+ /** Latest process metrics from the pi agent */
54
+ processMetrics?: {
55
+ rss: number;
56
+ heapUsed: number;
57
+ heapTotal: number;
58
+ cpuPercent: number;
59
+ eventLoopMaxMs?: number;
60
+ loadAvg1m: number;
61
+ /** Timestamp when metrics were last received */
62
+ updatedAt: number;
63
+ };
64
+ }
65
+
66
+ /** An event forwarded from a pi session */
67
+ export interface DashboardEvent {
68
+ eventType: string;
69
+ timestamp: number;
70
+ data: Record<string, unknown>;
71
+ }
72
+
73
+ /** Info about an available flow from pi-flows */
74
+ export interface FlowInfo {
75
+ name: string;
76
+ description: string;
77
+ taskRequired: boolean;
78
+ source?: string;
79
+ }
80
+
81
+ /** Info about an available command */
82
+ export interface CommandInfo {
83
+ name: string;
84
+ description?: string;
85
+ source: "extension" | "prompt" | "skill" | "builtin";
86
+ location?: string;
87
+ path?: string;
88
+ }
89
+
90
+ /** Image content for message attachments (compatible with pi SDK ImageContent) */
91
+ export interface ImageContent {
92
+ type: "image";
93
+ data: string;
94
+ mimeType: string;
95
+ }
96
+
97
+ /** File entry from directory listing */
98
+ export interface FileEntry {
99
+ path: string;
100
+ isDirectory: boolean;
101
+ }
102
+
103
+ /** Per-turn token usage breakdown */
104
+ export interface TurnUsage {
105
+ input: number;
106
+ output: number;
107
+ cacheRead: number;
108
+ cacheWrite: number;
109
+ }
110
+
111
+ /** Context window usage */
112
+ export interface ContextUsage {
113
+ tokens: number | null;
114
+ contextWindow: number;
115
+ }
116
+
117
+ /** Available model info */
118
+ export interface ModelInfo {
119
+ provider: string;
120
+ id: string;
121
+ }
122
+
123
+ /** Role assignment info (from pi-flows role-manager) */
124
+ export interface RoleInfo {
125
+ roles: Record<string, string>;
126
+ presets: Array<{ name: string; roles: Record<string, string> }>;
127
+ activePreset: string | null;
128
+ }
129
+
130
+ /** OpenSpec artifact status */
131
+ export interface OpenSpecArtifact {
132
+ id: string;
133
+ status: "done" | "ready" | "blocked";
134
+ }
135
+
136
+ /** A single OpenSpec change */
137
+ export interface OpenSpecChange {
138
+ name: string;
139
+ status: "no-tasks" | "in-progress" | "complete";
140
+ completedTasks: number;
141
+ totalTasks: number;
142
+ artifacts: OpenSpecArtifact[];
143
+ }
144
+
145
+ /** Lifecycle state of an OpenSpec change, derived from artifacts + task status */
146
+ export enum ChangeState {
147
+ PLANNING = "PLANNING",
148
+ READY = "READY",
149
+ IMPLEMENTING = "IMPLEMENTING",
150
+ COMPLETE = "COMPLETE",
151
+ }
152
+
153
+ /** Derive the lifecycle state of an OpenSpec change from its data */
154
+ export function deriveChangeState(change: OpenSpecChange): ChangeState {
155
+ const allDone = change.artifacts.length > 0 && change.artifacts.every((a) => a.status === "done");
156
+ if (!allDone) return ChangeState.PLANNING;
157
+ if (change.status === "complete") return ChangeState.COMPLETE;
158
+ if (change.status === "in-progress") return ChangeState.IMPLEMENTING;
159
+ return ChangeState.READY;
160
+ }
161
+
162
+ /** OpenSpec data for a session's project */
163
+ export interface OpenSpecData {
164
+ initialized: boolean;
165
+ changes: OpenSpecChange[];
166
+ }
167
+
168
+ /** OpenSpec workflow phase detected from tool calls */
169
+ export type OpenSpecPhase =
170
+ | "explore"
171
+ | "new"
172
+ | "continue"
173
+ | "ff"
174
+ | "apply"
175
+ | "verify"
176
+ | "archive"
177
+ | "sync-specs"
178
+ | "onboard";
179
+
180
+ /** Active OpenSpec activity for a session */
181
+ export interface OpenSpecActivity {
182
+ phase: OpenSpecPhase;
183
+ changeName?: string;
184
+ }
185
+
186
+ /** Pi session info returned from SessionManager.list() */
187
+ export interface PiSessionInfo {
188
+ id: string;
189
+ path: string;
190
+ cwd: string;
191
+ name?: string;
192
+ parentSessionPath?: string;
193
+ created: string;
194
+ modified: string;
195
+ messageCount: number;
196
+ firstMessage?: string;
197
+ }
198
+
199
+ /** Data payload for bash_output dashboard events */
200
+ export interface BashOutputData {
201
+ command: string;
202
+ output: string;
203
+ exitCode: number;
204
+ /** true for !! (silent), false for ! (sent to LLM) */
205
+ excludeFromContext: boolean;
206
+ }
207
+
208
+ /** Data payload for command_feedback dashboard events */
209
+ export interface CommandFeedbackData {
210
+ command: string;
211
+ status: "started" | "completed" | "error";
212
+ message?: string;
213
+ }
214
+
215
+ // ── Flow Dashboard Types ────────────────────────────────────────────
216
+
217
+ /** Status of a flow agent card */
218
+ export type FlowAgentStatus = "pending" | "running" | "complete" | "error" | "blocked";
219
+
220
+ /** A recent tool call displayed on an agent card */
221
+ export interface FlowRecentTool {
222
+ toolName: string;
223
+ inputPreview: string;
224
+ }
225
+
226
+ /** Detail history entry for agent detail view */
227
+ export type FlowDetailEntry =
228
+ | { kind: "tool"; toolName: string; input: unknown; output?: unknown; isError: boolean }
229
+ | { kind: "text"; text: string }
230
+ | { kind: "thinking"; text: string }
231
+ | { kind: "error"; text: string };
232
+
233
+ /** Agent card config from pi-flows AgentConfig (minimal subset) */
234
+ export interface FlowAgentCardConfig {
235
+ name: string;
236
+ description?: string;
237
+ model?: string;
238
+ card?: { label?: string; metric?: string; role?: string };
239
+ }
240
+
241
+ /** Per-agent state tracked in flow state */
242
+ export interface FlowAgentState {
243
+ agentName: string;
244
+ stepId: string;
245
+ status: FlowAgentStatus;
246
+ label?: string;
247
+ model?: string;
248
+ resolvedModel?: string;
249
+ cardRole?: string;
250
+ blockedBy: string[];
251
+ tokens?: { input: number; output: number };
252
+ duration?: number;
253
+ summary?: string;
254
+ files?: string[];
255
+ recentTools: FlowRecentTool[];
256
+ detailHistory: FlowDetailEntry[];
257
+ loopIteration?: number;
258
+ loopMax?: number;
259
+ }
260
+
261
+ /** Overall flow execution status */
262
+ export type FlowStatus = "running" | "success" | "error" | "aborted";
263
+
264
+ /** Flow execution state tracked client-side by the event reducer */
265
+ export interface FlowState {
266
+ flowName: string;
267
+ task: string;
268
+ status: FlowStatus;
269
+ autonomousMode: boolean;
270
+ /** Path to the flow YAML file (for YAML viewer) */
271
+ flowSource?: string;
272
+ /** Ordered map — insertion order matches step order from flow config */
273
+ agents: Map<string, FlowAgentState>;
274
+ /** Set after flow_complete event */
275
+ flowResult?: Record<string, unknown>;
276
+
277
+ /** Next flow to run (workflow stage resolution) */
278
+ nextStep?: string | null;
279
+ /** Pre-computed summary stats */
280
+ summaryStats?: {
281
+ agentCount: number;
282
+ duration: string;
283
+ fileCount: number;
284
+ perAgent: Array<{ name: string; status: string; fileCount: number }>;
285
+ };
286
+ }
287
+
288
+ // ── Architect Dashboard Types ───────────────────────────────────────
289
+
290
+ /** Phase of the architect lifecycle */
291
+ export type ArchitectPhase = "context" | "designing" | "preview" | "complete" | "cancelled";
292
+
293
+ /** Agent entry tracked during architect design */
294
+ export interface ArchitectAgentEntry {
295
+ name: string;
296
+ type: "built-in" | "local" | "custom";
297
+ status: "pending" | "creating" | "done" | "error";
298
+ statusText?: string;
299
+ }
300
+
301
+ /** Step in the designed flow DAG */
302
+ export interface ArchitectDagStep {
303
+ id: string;
304
+ agentName?: string;
305
+ blockedBy: string[];
306
+ }
307
+
308
+ /** Parsed flow metadata from architect preview */
309
+ export interface ArchitectParsedFlow {
310
+ name: string;
311
+ description: string;
312
+ maxConcurrent: number;
313
+ steps: ArchitectDagStep[];
314
+ }
315
+
316
+ /** Architect state tracked client-side by the architect reducer */
317
+ export interface ArchitectPrompt {
318
+ id: string;
319
+ type: "select" | "input" | "confirm";
320
+ question: string;
321
+ options?: string[];
322
+ defaultValue?: string;
323
+ }
324
+
325
+ export interface ArchitectState {
326
+ phase: ArchitectPhase;
327
+ architectMode: "new" | "edit";
328
+ flowName: string;
329
+ agents: ArchitectAgentEntry[];
330
+ dagSteps: ArchitectDagStep[];
331
+ parsedFlows: ArchitectParsedFlow[];
332
+ lastToolCall: { toolName: string; inputPreview: string } | null;
333
+ /** Rolling window of recent tool calls for card display */
334
+ recentTools: FlowRecentTool[];
335
+ /** Full detail history (tool calls, text, thinking) for detail view */
336
+ detailHistory: FlowDetailEntry[];
337
+ iteration: number;
338
+ catalogSummary?: string;
339
+ error?: string;
340
+ /** Pending architect prompt (Save/Replan/Cancel etc.) rendered in widget bar */
341
+ pendingPrompt: ArchitectPrompt | null;
342
+ /** Raw flow YAML content for the YAML viewer */
343
+ flowYamlContent?: string;
344
+ }
345
+
346
+ /** REST API response envelope */
347
+ export interface ApiResponse<T = unknown> {
348
+ success: boolean;
349
+ data?: T;
350
+ error?: string;
351
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist"
6
+ },
7
+ "include": ["src"]
8
+ }