@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,534 @@
1
+ /**
2
+ * Server ↔ Browser WebSocket protocol messages.
3
+ */
4
+ import type {
5
+ DashboardSession,
6
+ DashboardEvent,
7
+ CommandInfo,
8
+ FlowInfo,
9
+ ImageContent,
10
+ FileEntry,
11
+ OpenSpecData,
12
+ ModelInfo,
13
+ PiSessionInfo,
14
+ } from "./types.js";
15
+ import type { TerminalSession } from "./terminal-types.js";
16
+ import type { EditorInstanceStatus } from "./editor-types.js";
17
+
18
+ // ── Server → Browser ────────────────────────────────────────────────
19
+
20
+ export interface SessionAddedMessage {
21
+ type: "session_added";
22
+ session: DashboardSession;
23
+ }
24
+
25
+ export interface SessionUpdatedMessage {
26
+ type: "session_updated";
27
+ sessionId: string;
28
+ updates: Partial<DashboardSession>;
29
+ }
30
+
31
+ export interface SessionRemovedMessage {
32
+ type: "session_removed";
33
+ sessionId: string;
34
+ }
35
+
36
+ export interface EventMessage {
37
+ type: "event";
38
+ sessionId: string;
39
+ seq: number;
40
+ event: DashboardEvent;
41
+ }
42
+
43
+ export interface EventReplayMessage {
44
+ type: "event_replay";
45
+ sessionId: string;
46
+ events: Array<{ seq: number; event: DashboardEvent }>;
47
+ isLast: boolean;
48
+ }
49
+
50
+ export interface BrowserCommandsListMessage {
51
+ type: "commands_list";
52
+ sessionId: string;
53
+ commands: CommandInfo[];
54
+ }
55
+
56
+ export interface BrowserFlowsListMessage {
57
+ type: "flows_list";
58
+ sessionId: string;
59
+ flows: FlowInfo[];
60
+ }
61
+
62
+ export interface BrowserExtensionUiRequestMessage {
63
+ type: "extension_ui_request";
64
+ sessionId: string;
65
+ requestId: string;
66
+ method: string;
67
+ params: Record<string, unknown>;
68
+ }
69
+
70
+ export interface BrowserUiDismissMessage {
71
+ type: "ui_dismiss";
72
+ sessionId: string;
73
+ requestId: string;
74
+ }
75
+
76
+ export interface BrowserFilesListMessage {
77
+ type: "files_list";
78
+ sessionId: string;
79
+ query: string;
80
+ files: FileEntry[];
81
+ }
82
+
83
+ export interface BrowserOpenSpecUpdateMessage {
84
+ type: "openspec_update";
85
+ cwd: string;
86
+ data: OpenSpecData;
87
+ }
88
+
89
+ export interface BrowserModelsListMessage {
90
+ type: "models_list";
91
+ sessionId: string;
92
+ models: ModelInfo[];
93
+ }
94
+
95
+ export interface BrowserRolesListMessage {
96
+ type: "roles_list";
97
+ sessionId: string;
98
+ roles: Record<string, string>;
99
+ presets: Array<{ name: string; roles: Record<string, string> }>;
100
+ activePreset: string | null;
101
+ }
102
+
103
+ export interface SessionsListBrowserMessage {
104
+ type: "sessions_list";
105
+ sessionId: string;
106
+ cwd: string;
107
+ sessions: PiSessionInfo[];
108
+ }
109
+
110
+ export interface ResumeResultBrowserMessage {
111
+ type: "resume_result";
112
+ sessionId: string;
113
+ success: boolean;
114
+ message: string;
115
+ }
116
+
117
+ export interface SpawnResultBrowserMessage {
118
+ type: "spawn_result";
119
+ cwd: string;
120
+ success: boolean;
121
+ message: string;
122
+ }
123
+
124
+ export interface SessionsReorderedMessage {
125
+ type: "sessions_reordered";
126
+ cwd: string;
127
+ sessionIds: string[];
128
+ }
129
+
130
+ export interface PinnedDirsUpdatedMessage {
131
+ type: "pinned_dirs_updated";
132
+ paths: string[];
133
+ }
134
+
135
+ export interface TerminalAddedMessage {
136
+ type: "terminal_added";
137
+ terminal: TerminalSession;
138
+ }
139
+
140
+ export interface TerminalRemovedMessage {
141
+ type: "terminal_removed";
142
+ terminalId: string;
143
+ }
144
+
145
+ export interface TerminalUpdatedMessage {
146
+ type: "terminal_updated";
147
+ terminalId: string;
148
+ updates: Partial<TerminalSession>;
149
+ }
150
+
151
+ /** Tells the browser to reset accumulated state for a session (bridge reconnected). */
152
+ export interface SessionStateResetMessage {
153
+ type: "session_state_reset";
154
+ sessionId: string;
155
+ }
156
+
157
+ /** Notifies browsers of editor instance status changes. */
158
+ export interface EditorStatusMessage {
159
+ type: "editor_status";
160
+ cwd: string;
161
+ id: string;
162
+ status: EditorInstanceStatus;
163
+ }
164
+
165
+ /** Progress event streamed during a package install/remove/update operation. */
166
+ export interface PackageProgressMessage {
167
+ type: "package_progress";
168
+ operationId: string;
169
+ event: {
170
+ type: "start" | "progress" | "complete" | "error";
171
+ action: "install" | "remove" | "update" | "clone" | "pull";
172
+ source: string;
173
+ message?: string;
174
+ };
175
+ }
176
+
177
+ /** Sent when a package operation finishes (success or failure). */
178
+ export interface PackageOperationCompleteMessage {
179
+ type: "package_operation_complete";
180
+ operationId: string;
181
+ action: "install" | "remove" | "update";
182
+ source: string;
183
+ scope: "global" | "local";
184
+ success: boolean;
185
+ error?: string;
186
+ /** Number of sessions reloaded (only on success). */
187
+ sessionsReloaded?: number;
188
+ }
189
+
190
+ export type ServerToBrowserMessage =
191
+ | SessionAddedMessage
192
+ | SessionUpdatedMessage
193
+ | SessionRemovedMessage
194
+ | EventMessage
195
+ | EventReplayMessage
196
+ | BrowserCommandsListMessage
197
+ | BrowserFlowsListMessage
198
+ | BrowserExtensionUiRequestMessage
199
+ | BrowserUiDismissMessage
200
+ | BrowserFilesListMessage
201
+ | BrowserOpenSpecUpdateMessage
202
+ | BrowserModelsListMessage
203
+ | SessionsListBrowserMessage
204
+ | ResumeResultBrowserMessage
205
+ | SpawnResultBrowserMessage
206
+ | SessionsReorderedMessage
207
+ | PinnedDirsUpdatedMessage
208
+ | TerminalAddedMessage
209
+ | TerminalRemovedMessage
210
+ | TerminalUpdatedMessage
211
+ | SessionStateResetMessage
212
+ | PackageProgressMessage
213
+ | PackageOperationCompleteMessage
214
+ | EditorStatusMessage
215
+ | ForceKillResultMessage
216
+ | BrowserRolesListMessage
217
+ | ProcessListUpdateMessage
218
+ | ServersDiscoveredMessage
219
+ | ServersUpdatedMessage;
220
+
221
+ // ── Browser → Server ────────────────────────────────────────────────
222
+
223
+ export interface SubscribeMessage {
224
+ type: "subscribe";
225
+ sessionId: string;
226
+ lastSeq?: number;
227
+ }
228
+
229
+ export interface UnsubscribeMessage {
230
+ type: "unsubscribe";
231
+ sessionId: string;
232
+ }
233
+
234
+ export interface SendPromptToBrowserMessage {
235
+ type: "send_prompt";
236
+ sessionId: string;
237
+ text: string;
238
+ images?: ImageContent[];
239
+ }
240
+
241
+ export interface AbortToBrowserMessage {
242
+ type: "abort";
243
+ sessionId: string;
244
+ }
245
+
246
+ export interface RequestCommandsToBrowserMessage {
247
+ type: "request_commands";
248
+ sessionId: string;
249
+ }
250
+
251
+ export interface FetchContentMessage {
252
+ type: "fetch_content";
253
+ sessionId: string;
254
+ seq: number;
255
+ }
256
+
257
+ export interface ListFilesToBrowserMessage {
258
+ type: "list_files";
259
+ sessionId: string;
260
+ query: string;
261
+ }
262
+
263
+ export interface OpenSpecRefreshBrowserMessage {
264
+ type: "openspec_refresh";
265
+ cwd: string;
266
+ }
267
+
268
+ export interface RenameSessionBrowserMessage {
269
+ type: "rename_session";
270
+ sessionId: string;
271
+ name: string;
272
+ }
273
+
274
+ export interface RequestModelsBrowserMessage {
275
+ type: "request_models";
276
+ sessionId: string;
277
+ }
278
+
279
+ export interface SetThinkingLevelBrowserMessage {
280
+ type: "set_thinking_level";
281
+ sessionId: string;
282
+ level: string;
283
+ }
284
+
285
+ export interface SetModelBrowserMessage {
286
+ type: "set_model";
287
+ sessionId: string;
288
+ provider: string;
289
+ modelId: string;
290
+ }
291
+
292
+ export interface ShutdownBrowserMessage {
293
+ type: "shutdown";
294
+ sessionId: string;
295
+ }
296
+
297
+ export interface ForceKillBrowserMessage {
298
+ type: "force_kill";
299
+ sessionId: string;
300
+ }
301
+
302
+ export interface ForceKillResultMessage {
303
+ type: "force_kill_result";
304
+ sessionId: string;
305
+ success: boolean;
306
+ message?: string;
307
+ }
308
+
309
+ export interface ProcessListUpdateMessage {
310
+ type: "process_list_update";
311
+ sessionId: string;
312
+ processes: Array<{ pid: number; pgid: number; command: string; elapsedMs: number }>;
313
+ }
314
+
315
+ export interface ServersDiscoveredMessage {
316
+ type: "servers_discovered";
317
+ servers: Array<{
318
+ host: string;
319
+ port: number;
320
+ piPort: number;
321
+ version: string;
322
+ pid: number;
323
+ isLocal: boolean;
324
+ source: "mdns" | "fallback";
325
+ }>;
326
+ }
327
+
328
+ export interface ServersUpdatedMessage {
329
+ type: "servers_updated";
330
+ servers: Array<{
331
+ host: string;
332
+ port: number;
333
+ piPort: number;
334
+ version: string;
335
+ pid: number;
336
+ isLocal: boolean;
337
+ source: "mdns" | "fallback";
338
+ }>;
339
+ }
340
+
341
+ export interface KillProcessBrowserMessage {
342
+ type: "kill_process";
343
+ sessionId: string;
344
+ pgid: number;
345
+ }
346
+
347
+ export interface ListSessionsBrowserMessage {
348
+ type: "list_sessions";
349
+ cwd: string;
350
+ }
351
+
352
+ export interface ResumeSessionBrowserMessage {
353
+ type: "resume_session";
354
+ sessionId: string;
355
+ mode: "continue" | "fork";
356
+ /** When forking, optionally fork from a specific session entry instead of the latest */
357
+ entryId?: string;
358
+ }
359
+
360
+ export interface HideSessionBrowserMessage {
361
+ type: "hide_session";
362
+ sessionId: string;
363
+ }
364
+
365
+ export interface UnhideSessionBrowserMessage {
366
+ type: "unhide_session";
367
+ sessionId: string;
368
+ }
369
+
370
+ export interface SpawnSessionBrowserMessage {
371
+ type: "spawn_session";
372
+ cwd: string;
373
+ }
374
+
375
+ export interface AttachProposalBrowserMessage {
376
+ type: "attach_proposal";
377
+ sessionId: string;
378
+ changeName: string;
379
+ }
380
+
381
+ export interface DetachProposalBrowserMessage {
382
+ type: "detach_proposal";
383
+ sessionId: string;
384
+ }
385
+
386
+ export interface ReorderSessionsBrowserMessage {
387
+ type: "reorder_sessions";
388
+ cwd: string;
389
+ sessionIds: string[];
390
+ }
391
+
392
+ export interface PinDirectoryMessage {
393
+ type: "pin_directory";
394
+ path: string;
395
+ }
396
+
397
+ export interface UnpinDirectoryMessage {
398
+ type: "unpin_directory";
399
+ path: string;
400
+ }
401
+
402
+ export interface ReorderPinnedDirsMessage {
403
+ type: "reorder_pinned_dirs";
404
+ paths: string[];
405
+ }
406
+
407
+ export interface OpenSpecBulkArchiveBrowserMessage {
408
+ type: "openspec_bulk_archive";
409
+ cwd: string;
410
+ }
411
+
412
+ export interface CreateTerminalBrowserMessage {
413
+ type: "create_terminal";
414
+ cwd: string;
415
+ }
416
+
417
+ export interface KillTerminalBrowserMessage {
418
+ type: "kill_terminal";
419
+ terminalId: string;
420
+ }
421
+
422
+ export interface RenameTerminalBrowserMessage {
423
+ type: "rename_terminal";
424
+ terminalId: string;
425
+ title: string;
426
+ }
427
+
428
+ export interface BrowserExtensionUiResponseMessage {
429
+ type: "extension_ui_response";
430
+ sessionId: string;
431
+ requestId: string;
432
+ result?: unknown;
433
+ cancelled?: boolean;
434
+ }
435
+
436
+ export interface FlowControlBrowserMessage {
437
+ type: "flow_control";
438
+ sessionId: string;
439
+ action: "abort" | "toggle_autonomous" | "dismiss_summary";
440
+ }
441
+
442
+ export interface RequestInstalledPackagesBrowserMessage {
443
+ type: "request_installed_packages";
444
+ scope: "global" | "local";
445
+ cwd?: string;
446
+ }
447
+
448
+ export interface FlowManagementBrowserMessage {
449
+ type: "flow_management";
450
+ sessionId: string;
451
+ action: "run" | "new" | "edit" | "delete";
452
+ flowName?: string;
453
+ task?: string;
454
+ description?: string;
455
+ }
456
+
457
+ export interface ArchitectPromptResponseBrowserMessage {
458
+ type: "architect_prompt_response";
459
+ sessionId: string;
460
+ promptId: string;
461
+ answer?: string;
462
+ cancelled?: boolean;
463
+ }
464
+
465
+ export interface RoleSetBrowserMessage {
466
+ type: "role_set";
467
+ sessionId: string;
468
+ role: string;
469
+ modelId: string;
470
+ }
471
+
472
+ export interface RolePresetLoadBrowserMessage {
473
+ type: "role_preset_load";
474
+ sessionId: string;
475
+ presetName: string;
476
+ }
477
+
478
+ export interface RolePresetSaveBrowserMessage {
479
+ type: "role_preset_save";
480
+ sessionId: string;
481
+ presetName: string;
482
+ }
483
+
484
+ export interface RolePresetDeleteBrowserMessage {
485
+ type: "role_preset_delete";
486
+ sessionId: string;
487
+ presetName: string;
488
+ }
489
+
490
+ export interface RequestRolesBrowserMessage {
491
+ type: "request_roles";
492
+ sessionId: string;
493
+ }
494
+
495
+ export type BrowserToServerMessage =
496
+ | SubscribeMessage
497
+ | UnsubscribeMessage
498
+ | BrowserExtensionUiResponseMessage
499
+ | SendPromptToBrowserMessage
500
+ | AbortToBrowserMessage
501
+ | RequestCommandsToBrowserMessage
502
+ | FetchContentMessage
503
+ | ListFilesToBrowserMessage
504
+ | OpenSpecRefreshBrowserMessage
505
+ | RenameSessionBrowserMessage
506
+ | RequestModelsBrowserMessage
507
+ | SetThinkingLevelBrowserMessage
508
+ | SetModelBrowserMessage
509
+ | ShutdownBrowserMessage
510
+ | ListSessionsBrowserMessage
511
+ | ResumeSessionBrowserMessage
512
+ | HideSessionBrowserMessage
513
+ | UnhideSessionBrowserMessage
514
+ | SpawnSessionBrowserMessage
515
+ | AttachProposalBrowserMessage
516
+ | DetachProposalBrowserMessage
517
+ | ReorderSessionsBrowserMessage
518
+ | PinDirectoryMessage
519
+ | UnpinDirectoryMessage
520
+ | ReorderPinnedDirsMessage
521
+ | OpenSpecBulkArchiveBrowserMessage
522
+ | CreateTerminalBrowserMessage
523
+ | KillTerminalBrowserMessage
524
+ | RenameTerminalBrowserMessage
525
+ | FlowControlBrowserMessage
526
+ | ForceKillBrowserMessage
527
+ | FlowManagementBrowserMessage
528
+ | ArchitectPromptResponseBrowserMessage
529
+ | RoleSetBrowserMessage
530
+ | RolePresetLoadBrowserMessage
531
+ | RolePresetSaveBrowserMessage
532
+ | RolePresetDeleteBrowserMessage
533
+ | RequestRolesBrowserMessage
534
+ | KillProcessBrowserMessage;