@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.
- package/AGENTS.md +342 -0
- package/README.md +619 -0
- package/docs/architecture.md +646 -0
- package/package.json +92 -0
- package/packages/extension/package.json +33 -0
- package/packages/extension/src/__tests__/ask-user-tool.test.ts +85 -0
- package/packages/extension/src/__tests__/command-handler.test.ts +712 -0
- package/packages/extension/src/__tests__/connection.test.ts +344 -0
- package/packages/extension/src/__tests__/credentials-updated.test.ts +26 -0
- package/packages/extension/src/__tests__/dev-build.test.ts +79 -0
- package/packages/extension/src/__tests__/event-forwarder.test.ts +89 -0
- package/packages/extension/src/__tests__/git-info.test.ts +112 -0
- package/packages/extension/src/__tests__/git-link-builder.test.ts +102 -0
- package/packages/extension/src/__tests__/openspec-activity-detector.test.ts +232 -0
- package/packages/extension/src/__tests__/openspec-poller.test.ts +119 -0
- package/packages/extension/src/__tests__/process-metrics.test.ts +47 -0
- package/packages/extension/src/__tests__/process-scanner.test.ts +202 -0
- package/packages/extension/src/__tests__/prompt-expander.test.ts +54 -0
- package/packages/extension/src/__tests__/server-auto-start.test.ts +167 -0
- package/packages/extension/src/__tests__/server-launcher.test.ts +44 -0
- package/packages/extension/src/__tests__/server-probe.test.ts +25 -0
- package/packages/extension/src/__tests__/session-switch.test.ts +139 -0
- package/packages/extension/src/__tests__/session-sync.test.ts +55 -0
- package/packages/extension/src/__tests__/source-detector.test.ts +73 -0
- package/packages/extension/src/__tests__/stats-extractor.test.ts +92 -0
- package/packages/extension/src/__tests__/ui-proxy.test.ts +583 -0
- package/packages/extension/src/__tests__/watchdog.test.ts +161 -0
- package/packages/extension/src/ask-user-tool.ts +63 -0
- package/packages/extension/src/bridge-context.ts +64 -0
- package/packages/extension/src/bridge.ts +926 -0
- package/packages/extension/src/command-handler.ts +538 -0
- package/packages/extension/src/connection.ts +204 -0
- package/packages/extension/src/dev-build.ts +39 -0
- package/packages/extension/src/event-forwarder.ts +40 -0
- package/packages/extension/src/flow-event-wiring.ts +102 -0
- package/packages/extension/src/git-info.ts +65 -0
- package/packages/extension/src/git-link-builder.ts +112 -0
- package/packages/extension/src/model-tracker.ts +56 -0
- package/packages/extension/src/pi-env.d.ts +23 -0
- package/packages/extension/src/process-metrics.ts +70 -0
- package/packages/extension/src/process-scanner.ts +396 -0
- package/packages/extension/src/prompt-expander.ts +87 -0
- package/packages/extension/src/provider-register.ts +276 -0
- package/packages/extension/src/server-auto-start.ts +87 -0
- package/packages/extension/src/server-launcher.ts +82 -0
- package/packages/extension/src/server-probe.ts +33 -0
- package/packages/extension/src/session-sync.ts +154 -0
- package/packages/extension/src/source-detector.ts +26 -0
- package/packages/extension/src/ui-proxy.ts +269 -0
- package/packages/extension/tsconfig.json +11 -0
- package/packages/server/package.json +37 -0
- package/packages/server/src/__tests__/auth-plugin.test.ts +117 -0
- package/packages/server/src/__tests__/auth.test.ts +224 -0
- package/packages/server/src/__tests__/auto-attach.test.ts +246 -0
- package/packages/server/src/__tests__/auto-resume.test.ts +135 -0
- package/packages/server/src/__tests__/auto-shutdown.test.ts +136 -0
- package/packages/server/src/__tests__/browse-endpoint.test.ts +104 -0
- package/packages/server/src/__tests__/bulk-archive-handler.test.ts +15 -0
- package/packages/server/src/__tests__/cli-parse.test.ts +73 -0
- package/packages/server/src/__tests__/client-discovery.test.ts +39 -0
- package/packages/server/src/__tests__/config-api.test.ts +104 -0
- package/packages/server/src/__tests__/cors.test.ts +48 -0
- package/packages/server/src/__tests__/directory-service.test.ts +240 -0
- package/packages/server/src/__tests__/editor-detection.test.ts +60 -0
- package/packages/server/src/__tests__/editor-endpoints.test.ts +26 -0
- package/packages/server/src/__tests__/editor-manager.test.ts +73 -0
- package/packages/server/src/__tests__/editor-registry.test.ts +151 -0
- package/packages/server/src/__tests__/event-status-extraction-flow.test.ts +55 -0
- package/packages/server/src/__tests__/event-status-extraction.test.ts +58 -0
- package/packages/server/src/__tests__/extension-register.test.ts +61 -0
- package/packages/server/src/__tests__/file-endpoint.test.ts +49 -0
- package/packages/server/src/__tests__/force-kill-handler.test.ts +109 -0
- package/packages/server/src/__tests__/git-operations.test.ts +251 -0
- package/packages/server/src/__tests__/headless-pid-registry.test.ts +233 -0
- package/packages/server/src/__tests__/headless-shutdown-fallback.test.ts +109 -0
- package/packages/server/src/__tests__/health-endpoint.test.ts +35 -0
- package/packages/server/src/__tests__/heartbeat-ack.test.ts +63 -0
- package/packages/server/src/__tests__/json-store.test.ts +70 -0
- package/packages/server/src/__tests__/localhost-guard.test.ts +149 -0
- package/packages/server/src/__tests__/memory-event-store.test.ts +260 -0
- package/packages/server/src/__tests__/memory-session-manager.test.ts +80 -0
- package/packages/server/src/__tests__/meta-persistence.test.ts +107 -0
- package/packages/server/src/__tests__/migrate-persistence.test.ts +180 -0
- package/packages/server/src/__tests__/npm-search-proxy.test.ts +153 -0
- package/packages/server/src/__tests__/oauth-callback-server.test.ts +165 -0
- package/packages/server/src/__tests__/openspec-archive.test.ts +87 -0
- package/packages/server/src/__tests__/package-manager-wrapper.test.ts +163 -0
- package/packages/server/src/__tests__/package-routes.test.ts +172 -0
- package/packages/server/src/__tests__/pending-fork-registry.test.ts +69 -0
- package/packages/server/src/__tests__/pending-load-manager.test.ts +144 -0
- package/packages/server/src/__tests__/pending-resume-registry.test.ts +130 -0
- package/packages/server/src/__tests__/pi-resource-scanner.test.ts +235 -0
- package/packages/server/src/__tests__/preferences-store.test.ts +108 -0
- package/packages/server/src/__tests__/process-manager.test.ts +184 -0
- package/packages/server/src/__tests__/provider-auth-handlers.test.ts +93 -0
- package/packages/server/src/__tests__/provider-auth-routes.test.ts +143 -0
- package/packages/server/src/__tests__/provider-auth-storage.test.ts +114 -0
- package/packages/server/src/__tests__/resolve-path.test.ts +38 -0
- package/packages/server/src/__tests__/ring-buffer.test.ts +45 -0
- package/packages/server/src/__tests__/server-pid.test.ts +89 -0
- package/packages/server/src/__tests__/session-api.test.ts +244 -0
- package/packages/server/src/__tests__/session-diff.test.ts +138 -0
- package/packages/server/src/__tests__/session-file-dedup.test.ts +102 -0
- package/packages/server/src/__tests__/session-file-reader.test.ts +85 -0
- package/packages/server/src/__tests__/session-lifecycle-logging.test.ts +138 -0
- package/packages/server/src/__tests__/session-order-manager.test.ts +135 -0
- package/packages/server/src/__tests__/session-ordering-integration.test.ts +102 -0
- package/packages/server/src/__tests__/session-scanner.test.ts +199 -0
- package/packages/server/src/__tests__/shutdown-endpoint.test.ts +42 -0
- package/packages/server/src/__tests__/skip-wipe.test.ts +123 -0
- package/packages/server/src/__tests__/sleep-aware-heartbeat.test.ts +126 -0
- package/packages/server/src/__tests__/smoke-integration.test.ts +175 -0
- package/packages/server/src/__tests__/spa-fallback.test.ts +68 -0
- package/packages/server/src/__tests__/subscription-handler.test.ts +155 -0
- package/packages/server/src/__tests__/terminal-gateway.test.ts +61 -0
- package/packages/server/src/__tests__/terminal-manager.test.ts +257 -0
- package/packages/server/src/__tests__/trusted-networks-config.test.ts +84 -0
- package/packages/server/src/__tests__/tunnel.test.ts +206 -0
- package/packages/server/src/__tests__/ws-ping-pong.test.ts +112 -0
- package/packages/server/src/auth-plugin.ts +302 -0
- package/packages/server/src/auth.ts +323 -0
- package/packages/server/src/browse.ts +55 -0
- package/packages/server/src/browser-gateway.ts +495 -0
- package/packages/server/src/browser-handlers/directory-handler.ts +137 -0
- package/packages/server/src/browser-handlers/handler-context.ts +45 -0
- package/packages/server/src/browser-handlers/session-action-handler.ts +271 -0
- package/packages/server/src/browser-handlers/session-meta-handler.ts +95 -0
- package/packages/server/src/browser-handlers/subscription-handler.ts +154 -0
- package/packages/server/src/browser-handlers/terminal-handler.ts +37 -0
- package/packages/server/src/cli.ts +347 -0
- package/packages/server/src/config-api.ts +130 -0
- package/packages/server/src/directory-service.ts +162 -0
- package/packages/server/src/editor-detection.ts +60 -0
- package/packages/server/src/editor-manager.ts +352 -0
- package/packages/server/src/editor-proxy.ts +134 -0
- package/packages/server/src/editor-registry.ts +108 -0
- package/packages/server/src/event-status-extraction.ts +131 -0
- package/packages/server/src/event-wiring.ts +589 -0
- package/packages/server/src/extension-register.ts +92 -0
- package/packages/server/src/git-operations.ts +200 -0
- package/packages/server/src/headless-pid-registry.ts +207 -0
- package/packages/server/src/idle-timer.ts +61 -0
- package/packages/server/src/json-store.ts +32 -0
- package/packages/server/src/localhost-guard.ts +117 -0
- package/packages/server/src/memory-event-store.ts +193 -0
- package/packages/server/src/memory-session-manager.ts +123 -0
- package/packages/server/src/meta-persistence.ts +64 -0
- package/packages/server/src/migrate-persistence.ts +195 -0
- package/packages/server/src/npm-search-proxy.ts +143 -0
- package/packages/server/src/oauth-callback-server.ts +177 -0
- package/packages/server/src/openspec-archive.ts +60 -0
- package/packages/server/src/package-manager-wrapper.ts +200 -0
- package/packages/server/src/pending-fork-registry.ts +53 -0
- package/packages/server/src/pending-load-manager.ts +110 -0
- package/packages/server/src/pending-resume-registry.ts +69 -0
- package/packages/server/src/pi-gateway.ts +419 -0
- package/packages/server/src/pi-resource-scanner.ts +369 -0
- package/packages/server/src/preferences-store.ts +116 -0
- package/packages/server/src/process-manager.ts +311 -0
- package/packages/server/src/provider-auth-handlers.ts +438 -0
- package/packages/server/src/provider-auth-storage.ts +200 -0
- package/packages/server/src/resolve-path.ts +12 -0
- package/packages/server/src/routes/editor-routes.ts +86 -0
- package/packages/server/src/routes/file-routes.ts +116 -0
- package/packages/server/src/routes/git-routes.ts +89 -0
- package/packages/server/src/routes/openspec-routes.ts +99 -0
- package/packages/server/src/routes/package-routes.ts +172 -0
- package/packages/server/src/routes/provider-auth-routes.ts +244 -0
- package/packages/server/src/routes/provider-routes.ts +101 -0
- package/packages/server/src/routes/route-deps.ts +23 -0
- package/packages/server/src/routes/session-routes.ts +91 -0
- package/packages/server/src/routes/system-routes.ts +271 -0
- package/packages/server/src/server-pid.ts +84 -0
- package/packages/server/src/server.ts +554 -0
- package/packages/server/src/session-api.ts +330 -0
- package/packages/server/src/session-bootstrap.ts +80 -0
- package/packages/server/src/session-diff.ts +178 -0
- package/packages/server/src/session-discovery.ts +134 -0
- package/packages/server/src/session-file-reader.ts +135 -0
- package/packages/server/src/session-order-manager.ts +73 -0
- package/packages/server/src/session-scanner.ts +233 -0
- package/packages/server/src/session-stats-reader.ts +99 -0
- package/packages/server/src/terminal-gateway.ts +51 -0
- package/packages/server/src/terminal-manager.ts +241 -0
- package/packages/server/src/tunnel.ts +329 -0
- package/packages/server/tsconfig.json +11 -0
- package/packages/shared/package.json +15 -0
- package/packages/shared/src/__tests__/config.test.ts +358 -0
- package/packages/shared/src/__tests__/deriveChangeState.test.ts +95 -0
- package/packages/shared/src/__tests__/mdns-discovery.test.ts +80 -0
- package/packages/shared/src/__tests__/protocol.test.ts +243 -0
- package/packages/shared/src/__tests__/resolve-jiti.test.ts +17 -0
- package/packages/shared/src/__tests__/server-identity.test.ts +73 -0
- package/packages/shared/src/__tests__/session-meta.test.ts +125 -0
- package/packages/shared/src/archive-types.ts +11 -0
- package/packages/shared/src/browser-protocol.ts +534 -0
- package/packages/shared/src/config.ts +245 -0
- package/packages/shared/src/diff-types.ts +41 -0
- package/packages/shared/src/editor-types.ts +18 -0
- package/packages/shared/src/mdns-discovery.ts +248 -0
- package/packages/shared/src/openspec-activity-detector.ts +109 -0
- package/packages/shared/src/openspec-poller.ts +96 -0
- package/packages/shared/src/protocol.ts +369 -0
- package/packages/shared/src/resolve-jiti.ts +43 -0
- package/packages/shared/src/rest-api.ts +255 -0
- package/packages/shared/src/server-identity.ts +51 -0
- package/packages/shared/src/session-meta.ts +86 -0
- package/packages/shared/src/state-replay.ts +174 -0
- package/packages/shared/src/stats-extractor.ts +54 -0
- package/packages/shared/src/terminal-types.ts +18 -0
- package/packages/shared/src/types.ts +351 -0
- 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;
|