mstro-app 0.4.34 → 0.4.37
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/dist/server/cli/headless/claude-invoker-stream.d.ts +76 -1
- package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker-stream.js +85 -10
- package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -1
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +2 -0
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -1
- package/dist/server/cli/headless/haiku-assessments.js +10 -5
- package/dist/server/cli/headless/haiku-assessments.js.map +1 -1
- package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.js +17 -2
- package/dist/server/cli/improvisation-retry.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +4 -0
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +61 -42
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/cli/improvisation-types.d.ts +1 -0
- package/dist/server/cli/improvisation-types.d.ts.map +1 -1
- package/dist/server/cli/improvisation-types.js.map +1 -1
- package/dist/server/services/websocket/git-head-watcher.d.ts +25 -0
- package/dist/server/services/websocket/git-head-watcher.d.ts.map +1 -0
- package/dist/server/services/websocket/git-head-watcher.js +136 -0
- package/dist/server/services/websocket/git-head-watcher.js.map +1 -0
- package/dist/server/services/websocket/git-worktree-handlers.js +47 -6
- package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler-context.d.ts +2 -0
- package/dist/server/services/websocket/handler-context.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.d.ts +3 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +18 -6
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.d.ts +1 -0
- package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-board-handlers.js +94 -0
- package/dist/server/services/websocket/plan-board-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +3 -1
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/quality-persistence.d.ts +7 -0
- package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-persistence.js +15 -7
- package/dist/server/services/websocket/quality-persistence.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +2 -13
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
- package/dist/server/services/websocket/quality-service.d.ts +12 -3
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +101 -81
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-tools.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-tools.js +6 -1
- package/dist/server/services/websocket/quality-tools.js.map +1 -1
- package/dist/server/services/websocket/quality-types.d.ts +15 -2
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-types.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +13 -3
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/dist/server/services/websocket/skill-handlers.d.ts +9 -0
- package/dist/server/services/websocket/skill-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/skill-handlers.js +244 -3
- package/dist/server/services/websocket/skill-handlers.js.map +1 -1
- package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/tab-handlers.js +9 -2
- package/dist/server/services/websocket/tab-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +44 -3
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/services/websocket/types.js +38 -0
- package/dist/server/services/websocket/types.js.map +1 -1
- package/package.json +2 -1
- package/server/cli/headless/claude-invoker-stream.ts +163 -18
- package/server/cli/headless/claude-invoker.ts +2 -0
- package/server/cli/headless/haiku-assessments.ts +10 -5
- package/server/cli/improvisation-retry.ts +18 -2
- package/server/cli/improvisation-session-manager.ts +69 -45
- package/server/cli/improvisation-types.ts +1 -0
- package/server/services/plan/agents/assess-stall.md +21 -0
- package/server/services/plan/agents/check-injection.md +36 -0
- package/server/services/plan/agents/classify-error.md +29 -0
- package/server/services/plan/agents/detect-context-loss.md +29 -0
- package/server/services/plan/agents/execute-issue.md +42 -0
- package/server/services/plan/agents/plan-coordinator.md +71 -0
- package/server/services/plan/agents/retry-task.md +26 -0
- package/server/services/plan/agents/review-code.md +4 -1
- package/server/services/plan/agents/review-criteria.md +53 -0
- package/server/services/plan/agents/review-custom.md +4 -1
- package/server/services/plan/agents/review-quality.md +4 -1
- package/server/services/plan/agents/verify-review.md +56 -0
- package/server/services/websocket/git-head-watcher.ts +120 -0
- package/server/services/websocket/git-worktree-handlers.ts +57 -7
- package/server/services/websocket/handler-context.ts +2 -0
- package/server/services/websocket/handler.ts +19 -6
- package/server/services/websocket/plan-board-handlers.ts +116 -0
- package/server/services/websocket/plan-handlers.ts +3 -1
- package/server/services/websocket/quality-persistence.ts +23 -7
- package/server/services/websocket/quality-review-agent.ts +2 -12
- package/server/services/websocket/quality-service.ts +116 -99
- package/server/services/websocket/quality-tools.ts +6 -1
- package/server/services/websocket/quality-types.ts +17 -2
- package/server/services/websocket/session-handlers.ts +19 -3
- package/server/services/websocket/skill-handlers.ts +260 -3
- package/server/services/websocket/tab-handlers.ts +8 -2
- package/server/services/websocket/types.ts +123 -324
|
@@ -20,340 +20,139 @@ export interface WSContext {
|
|
|
20
20
|
_ws?: unknown
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
const CoreMessages = ['execute', 'cancel', 'getHistory', 'getSessions', 'getSessionsCount', 'deleteSession', 'getSessionById', 'clearHistory', 'searchHistory', 'new', 'autocomplete', 'readFile', 'ping', 'initTab', 'resumeSession', 'approve', 'reject', 'recordSelection', 'requestNotificationSummary'] as const;
|
|
24
|
+
|
|
25
|
+
const TerminalMessages = ['terminalInit', 'terminalReconnect', 'terminalList', 'terminalInput', 'terminalResize', 'terminalClose'] as const;
|
|
26
|
+
|
|
27
|
+
const FileExplorerMessages = ['listDirectory', 'writeFile', 'createFile', 'createDirectory', 'deleteFile', 'renameFile', 'notifyFileOpened', 'searchFileContents', 'cancelSearch', 'findDefinition'] as const;
|
|
28
|
+
|
|
29
|
+
const GitMessages = ['gitStatus', 'gitStage', 'gitUnstage', 'gitCommit', 'gitCommitWithAI', 'gitPush', 'gitPull', 'gitLog', 'gitDiscoverRepos', 'gitSetDirectory', 'gitGetRemoteInfo', 'gitCreatePR', 'gitGeneratePRDescription'] as const;
|
|
30
|
+
|
|
31
|
+
const GitBranchMessages = ['gitListBranches', 'gitCheckout', 'gitCreateBranch', 'gitDeleteBranch'] as const;
|
|
32
|
+
|
|
33
|
+
const GitDiffMessages = ['gitDiff', 'gitShowCommit', 'gitCommitDiff'] as const;
|
|
34
|
+
|
|
35
|
+
const GitTagMessages = ['gitListTags', 'gitCreateTag', 'gitPushTag'] as const;
|
|
36
|
+
|
|
37
|
+
const GitWorktreeMessages = ['gitWorktreeList', 'gitWorktreeCreate', 'gitWorktreeCreateAndAssign', 'gitWorktreeRemove', 'tabWorktreeSwitch', 'gitWorktreePush', 'gitWorktreeCreatePR'] as const;
|
|
38
|
+
|
|
39
|
+
const GitMergeMessages = ['gitMergePreview', 'gitWorktreeMerge', 'gitMergeAbort', 'gitMergeComplete'] as const;
|
|
40
|
+
|
|
41
|
+
const SessionSyncMessages = ['getActiveTabs', 'createTab', 'reorderTabs', 'syncTabMeta', 'syncPromptText', 'removeTab', 'markTabViewed'] as const;
|
|
42
|
+
|
|
43
|
+
const SettingsMessages = ['getSettings', 'updateSettings'] as const;
|
|
44
|
+
|
|
45
|
+
const QualityMessages = ['qualityDetectTools', 'qualityScan', 'qualityInstallTools', 'qualityCodeReview', 'qualityFixIssues', 'qualityLoadState', 'qualitySaveDirectories'] as const;
|
|
46
|
+
|
|
47
|
+
const FileUploadMessages = ['fileUploadStart', 'fileUploadChunk', 'fileUploadComplete', 'fileUploadCancel'] as const;
|
|
48
|
+
|
|
49
|
+
const PlanMessages = ['planInit', 'planGetState', 'planListIssues', 'planGetIssue', 'planGetSprint', 'planGetMilestone', 'planCreateIssue', 'planUpdateIssue', 'planDeleteIssue', 'planScaffold', 'planPrompt', 'planExecute', 'planExecuteEpic', 'planPause', 'planStop', 'planResume'] as const;
|
|
50
|
+
|
|
51
|
+
const PlanBoardMessages = ['planCreateBoard', 'planUpdateBoard', 'planArchiveBoard', 'planGetBoard', 'planGetBoardState', 'planReorderBoards', 'planSetActiveBoard', 'planGetBoardArtifacts'] as const;
|
|
52
|
+
|
|
53
|
+
const PlanSprintMessages = ['planCreateSprint', 'planActivateSprint', 'planCompleteSprint', 'planGetSprintArtifacts'] as const;
|
|
54
|
+
|
|
55
|
+
const DeployMessages = ['deployCreate', 'deployStop', 'deployResume', 'deployDelete', 'deployList', 'deployGetStatus', 'deployUpdateConfig', 'deploySetApiKey', 'deployValidateApiKey'] as const;
|
|
56
|
+
|
|
57
|
+
const DeployRelayMessages = ['deployHttpRequest', 'deployUsageReport', 'deployAiHealthUpdate'] as const;
|
|
58
|
+
|
|
59
|
+
const SkillMessages = ['listSkills', 'chatToBoard'] as const;
|
|
60
|
+
|
|
61
|
+
type WebSocketMessageType =
|
|
62
|
+
| typeof CoreMessages[number]
|
|
63
|
+
| typeof TerminalMessages[number]
|
|
64
|
+
| typeof FileExplorerMessages[number]
|
|
65
|
+
| typeof GitMessages[number]
|
|
66
|
+
| typeof GitBranchMessages[number]
|
|
67
|
+
| typeof GitDiffMessages[number]
|
|
68
|
+
| typeof GitTagMessages[number]
|
|
69
|
+
| typeof GitWorktreeMessages[number]
|
|
70
|
+
| typeof GitMergeMessages[number]
|
|
71
|
+
| typeof SessionSyncMessages[number]
|
|
72
|
+
| typeof SettingsMessages[number]
|
|
73
|
+
| typeof QualityMessages[number]
|
|
74
|
+
| typeof FileUploadMessages[number]
|
|
75
|
+
| typeof PlanMessages[number]
|
|
76
|
+
| typeof PlanBoardMessages[number]
|
|
77
|
+
| typeof PlanSprintMessages[number]
|
|
78
|
+
| typeof DeployMessages[number]
|
|
79
|
+
| typeof DeployRelayMessages[number]
|
|
80
|
+
| typeof SkillMessages[number];
|
|
81
|
+
|
|
23
82
|
export interface WebSocketMessage {
|
|
24
|
-
type:
|
|
25
|
-
| 'execute'
|
|
26
|
-
| 'cancel'
|
|
27
|
-
| 'getHistory'
|
|
28
|
-
| 'getSessions'
|
|
29
|
-
| 'getSessionsCount'
|
|
30
|
-
| 'deleteSession'
|
|
31
|
-
| 'getSessionById'
|
|
32
|
-
| 'clearHistory'
|
|
33
|
-
| 'searchHistory'
|
|
34
|
-
| 'new'
|
|
35
|
-
| 'autocomplete'
|
|
36
|
-
| 'readFile'
|
|
37
|
-
| 'ping'
|
|
38
|
-
| 'initTab'
|
|
39
|
-
| 'resumeSession'
|
|
40
|
-
| 'approve'
|
|
41
|
-
| 'reject'
|
|
42
|
-
| 'recordSelection'
|
|
43
|
-
| 'requestNotificationSummary'
|
|
44
|
-
| 'terminalInit'
|
|
45
|
-
| 'terminalReconnect'
|
|
46
|
-
| 'terminalList'
|
|
47
|
-
| 'terminalInput'
|
|
48
|
-
| 'terminalResize'
|
|
49
|
-
| 'terminalClose'
|
|
50
|
-
// File explorer message types
|
|
51
|
-
| 'listDirectory'
|
|
52
|
-
| 'writeFile'
|
|
53
|
-
| 'createFile'
|
|
54
|
-
| 'createDirectory'
|
|
55
|
-
| 'deleteFile'
|
|
56
|
-
| 'renameFile'
|
|
57
|
-
| 'notifyFileOpened'
|
|
58
|
-
| 'searchFileContents'
|
|
59
|
-
| 'cancelSearch'
|
|
60
|
-
| 'findDefinition'
|
|
61
|
-
// Git message types
|
|
62
|
-
| 'gitStatus'
|
|
63
|
-
| 'gitStage'
|
|
64
|
-
| 'gitUnstage'
|
|
65
|
-
| 'gitCommit'
|
|
66
|
-
| 'gitCommitWithAI'
|
|
67
|
-
| 'gitPush'
|
|
68
|
-
| 'gitPull'
|
|
69
|
-
| 'gitLog'
|
|
70
|
-
| 'gitDiscoverRepos'
|
|
71
|
-
| 'gitSetDirectory'
|
|
72
|
-
| 'gitGetRemoteInfo'
|
|
73
|
-
| 'gitCreatePR'
|
|
74
|
-
| 'gitGeneratePRDescription'
|
|
75
|
-
// Branch operations
|
|
76
|
-
| 'gitListBranches'
|
|
77
|
-
| 'gitCheckout'
|
|
78
|
-
| 'gitCreateBranch'
|
|
79
|
-
| 'gitDeleteBranch'
|
|
80
|
-
// Diff operations
|
|
81
|
-
| 'gitDiff'
|
|
82
|
-
// Commit detail operations
|
|
83
|
-
| 'gitShowCommit'
|
|
84
|
-
| 'gitCommitDiff'
|
|
85
|
-
// Tag operations
|
|
86
|
-
| 'gitListTags'
|
|
87
|
-
| 'gitCreateTag'
|
|
88
|
-
| 'gitPushTag'
|
|
89
|
-
// Worktree operations
|
|
90
|
-
| 'gitWorktreeList'
|
|
91
|
-
| 'gitWorktreeCreate'
|
|
92
|
-
| 'gitWorktreeCreateAndAssign'
|
|
93
|
-
| 'gitWorktreeRemove'
|
|
94
|
-
| 'tabWorktreeSwitch'
|
|
95
|
-
| 'gitWorktreePush'
|
|
96
|
-
| 'gitWorktreeCreatePR'
|
|
97
|
-
// Merge operations
|
|
98
|
-
| 'gitMergePreview'
|
|
99
|
-
| 'gitWorktreeMerge'
|
|
100
|
-
| 'gitMergeAbort'
|
|
101
|
-
| 'gitMergeComplete'
|
|
102
|
-
// Session sync message types
|
|
103
|
-
| 'getActiveTabs'
|
|
104
|
-
| 'createTab'
|
|
105
|
-
| 'reorderTabs'
|
|
106
|
-
| 'syncTabMeta'
|
|
107
|
-
| 'syncPromptText'
|
|
108
|
-
| 'removeTab'
|
|
109
|
-
| 'markTabViewed'
|
|
110
|
-
// Settings message types
|
|
111
|
-
| 'getSettings'
|
|
112
|
-
| 'updateSettings'
|
|
113
|
-
// Quality message types
|
|
114
|
-
| 'qualityDetectTools'
|
|
115
|
-
| 'qualityScan'
|
|
116
|
-
| 'qualityInstallTools'
|
|
117
|
-
| 'qualityCodeReview'
|
|
118
|
-
| 'qualityFixIssues'
|
|
119
|
-
| 'qualityLoadState'
|
|
120
|
-
| 'qualitySaveDirectories'
|
|
121
|
-
// File upload message types (chunked remote uploads)
|
|
122
|
-
| 'fileUploadStart'
|
|
123
|
-
| 'fileUploadChunk'
|
|
124
|
-
| 'fileUploadComplete'
|
|
125
|
-
| 'fileUploadCancel'
|
|
126
|
-
// Plan message types
|
|
127
|
-
| 'planInit'
|
|
128
|
-
| 'planGetState'
|
|
129
|
-
| 'planListIssues'
|
|
130
|
-
| 'planGetIssue'
|
|
131
|
-
| 'planGetSprint'
|
|
132
|
-
| 'planGetMilestone'
|
|
133
|
-
| 'planCreateIssue'
|
|
134
|
-
| 'planUpdateIssue'
|
|
135
|
-
| 'planDeleteIssue'
|
|
136
|
-
| 'planScaffold'
|
|
137
|
-
| 'planPrompt'
|
|
138
|
-
| 'planExecute'
|
|
139
|
-
| 'planExecuteEpic'
|
|
140
|
-
| 'planPause'
|
|
141
|
-
| 'planStop'
|
|
142
|
-
| 'planResume'
|
|
143
|
-
// Board lifecycle message types
|
|
144
|
-
| 'planCreateBoard'
|
|
145
|
-
| 'planUpdateBoard'
|
|
146
|
-
| 'planArchiveBoard'
|
|
147
|
-
| 'planGetBoard'
|
|
148
|
-
| 'planGetBoardState'
|
|
149
|
-
| 'planReorderBoards'
|
|
150
|
-
| 'planSetActiveBoard'
|
|
151
|
-
| 'planGetBoardArtifacts'
|
|
152
|
-
// Sprint lifecycle message types (legacy)
|
|
153
|
-
| 'planCreateSprint'
|
|
154
|
-
| 'planActivateSprint'
|
|
155
|
-
| 'planCompleteSprint'
|
|
156
|
-
| 'planGetSprintArtifacts'
|
|
157
|
-
// Deploy message types
|
|
158
|
-
| 'deployCreate'
|
|
159
|
-
| 'deployStop'
|
|
160
|
-
| 'deployResume'
|
|
161
|
-
| 'deployDelete'
|
|
162
|
-
| 'deployList'
|
|
163
|
-
| 'deployGetStatus'
|
|
164
|
-
| 'deployUpdateConfig'
|
|
165
|
-
| 'deploySetApiKey'
|
|
166
|
-
| 'deployValidateApiKey'
|
|
167
|
-
// Deploy HTTP relay message types (server→cli)
|
|
168
|
-
| 'deployHttpRequest'
|
|
169
|
-
// Deploy usage/health message types (cli→server)
|
|
170
|
-
| 'deployUsageReport'
|
|
171
|
-
| 'deployAiHealthUpdate'
|
|
172
|
-
// Skill discovery
|
|
173
|
-
| 'listSkills';
|
|
83
|
+
type: WebSocketMessageType;
|
|
174
84
|
tabId?: string;
|
|
175
85
|
terminalId?: string;
|
|
176
|
-
// biome-ignore lint/suspicious/noExplicitAny: message envelope carries heterogeneous payloads
|
|
86
|
+
// biome-ignore lint/suspicious/noExplicitAny: message envelope carries heterogeneous payloads — typed per-handler via destructuring
|
|
177
87
|
data?: any;
|
|
178
88
|
/** Injected by server relay for view-only shared users */
|
|
179
89
|
_permission?: 'view';
|
|
180
90
|
}
|
|
181
91
|
|
|
92
|
+
const CoreResponseMessages = ['output', 'thinking', 'movementStart', 'movementComplete', 'movementError', 'sessionUpdate', 'history', 'sessions', 'sessionsCount', 'sessionDeleted', 'sessionData', 'historyCleared', 'searchResults', 'newSession', 'autocomplete', 'fileContent', 'error', 'pong', 'tabInitialized', 'approvalRequired', 'toolUse', 'streamingTokens', 'notificationSummary'] as const;
|
|
93
|
+
|
|
94
|
+
const TerminalResponseMessages = ['terminalOutput', 'terminalReady', 'terminalExit', 'terminalError', 'terminalList', 'terminalScrollback', 'terminalCreated', 'terminalClosed'] as const;
|
|
95
|
+
|
|
96
|
+
const FileExplorerResponseMessages = ['directoryListing', 'fileWritten', 'fileCreated', 'directoryCreated', 'fileDeleted', 'fileRenamed', 'fileOpened', 'fileContentChanged', 'contentSearchResults', 'contentSearchComplete', 'contentSearchError', 'definitionResult', 'fileError'] as const;
|
|
97
|
+
|
|
98
|
+
const GitResponseMessages = ['gitStatus', 'gitStaged', 'gitUnstaged', 'gitCommitted', 'gitCommitMessage', 'gitPushed', 'gitPulled', 'gitLog', 'gitError', 'gitReposDiscovered', 'gitDirectorySet', 'gitRemoteInfo', 'gitPRCreated', 'gitPRDescription'] as const;
|
|
99
|
+
|
|
100
|
+
const GitBranchResponseMessages = ['gitBranchList', 'gitCheckedOut', 'gitBranchCreated', 'gitBranchDeleted'] as const;
|
|
101
|
+
|
|
102
|
+
const GitDiffResponseMessages = ['gitDiffResult', 'gitCommitDetail', 'gitCommitDiffResult'] as const;
|
|
103
|
+
|
|
104
|
+
const GitTagResponseMessages = ['gitTagList', 'gitTagCreated', 'gitTagPushed'] as const;
|
|
105
|
+
|
|
106
|
+
const GitWorktreeResponseMessages = ['gitWorktreeListResult', 'gitWorktreeCreated', 'gitWorktreeCreatedAndAssigned', 'gitWorktreeRemoved', 'tabWorktreeSwitched', 'gitBranchChanged', 'gitWorktreePushed', 'gitWorktreePRCreated'] as const;
|
|
107
|
+
|
|
108
|
+
const GitMergeResponseMessages = ['gitMergePreviewResult', 'gitWorktreeMergeResult', 'gitMergeAborted', 'gitMergeCompleted'] as const;
|
|
109
|
+
|
|
110
|
+
const SessionSyncResponseMessages = ['activeTabs', 'tabCreated', 'tabRemoved', 'tabRenamed', 'tabsReordered', 'promptTextSync', 'tabViewed', 'tabStateChanged'] as const;
|
|
111
|
+
|
|
112
|
+
const SettingsResponseMessages = ['settings', 'settingsUpdated'] as const;
|
|
113
|
+
|
|
114
|
+
const QualityResponseMessages = ['qualityToolsDetected', 'qualityScanProgress', 'qualityScanResults', 'qualityInstallProgress', 'qualityInstallComplete', 'qualityCodeReview', 'qualityCodeReviewProgress', 'qualityPostSession', 'qualityFixProgress', 'qualityFixComplete', 'qualityError', 'qualityStateLoaded'] as const;
|
|
115
|
+
|
|
116
|
+
const FileUploadResponseMessages = ['fileUploadAck', 'fileUploadReady', 'fileUploadError'] as const;
|
|
117
|
+
|
|
118
|
+
const PlanResponseMessages = ['planState', 'planIssueList', 'planIssue', 'planSprint', 'planMilestone', 'planNotFound', 'planStateUpdated', 'planIssueUpdated', 'planIssueCreated', 'planIssueDeleted', 'planScaffolded', 'planPromptStreaming', 'planPromptProgress', 'planPromptResponse', 'planExecutionStarted', 'planExecutionProgress', 'planExecutionOutput', 'planExecutionMetrics', 'planExecutionComplete', 'planExecutionError', 'planError'] as const;
|
|
119
|
+
|
|
120
|
+
const PlanBoardResponseMessages = ['planBoardCreated', 'planBoardUpdated', 'planBoardArchived', 'planBoardState', 'planBoardArtifacts', 'planWorkspaceUpdated'] as const;
|
|
121
|
+
|
|
122
|
+
const PlanSprintResponseMessages = ['planSprintCreated', 'planSprintUpdated', 'planSprintCompleted', 'planSprintArtifacts', 'planReviewProgress'] as const;
|
|
123
|
+
|
|
124
|
+
const DeployResponseMessages = ['deployCreated', 'deployStopped', 'deployResumed', 'deployDeleted', 'deployListResult', 'deployStatusResult', 'deployConfigUpdated', 'deployApiKeyStatus', 'deployError'] as const;
|
|
125
|
+
|
|
126
|
+
const DeployRelayResponseMessages = ['deployHttpResponse', 'deployHttpResponseChunk', 'deployStatus', 'deployUsageReportAck', 'deployAiHealthAck'] as const;
|
|
127
|
+
|
|
128
|
+
const SkillResponseMessages = ['skillsList', 'chatToBoardCreated'] as const;
|
|
129
|
+
|
|
130
|
+
type WebSocketResponseType =
|
|
131
|
+
| typeof CoreResponseMessages[number]
|
|
132
|
+
| typeof TerminalResponseMessages[number]
|
|
133
|
+
| typeof FileExplorerResponseMessages[number]
|
|
134
|
+
| typeof GitResponseMessages[number]
|
|
135
|
+
| typeof GitBranchResponseMessages[number]
|
|
136
|
+
| typeof GitDiffResponseMessages[number]
|
|
137
|
+
| typeof GitTagResponseMessages[number]
|
|
138
|
+
| typeof GitWorktreeResponseMessages[number]
|
|
139
|
+
| typeof GitMergeResponseMessages[number]
|
|
140
|
+
| typeof SessionSyncResponseMessages[number]
|
|
141
|
+
| typeof SettingsResponseMessages[number]
|
|
142
|
+
| typeof QualityResponseMessages[number]
|
|
143
|
+
| typeof FileUploadResponseMessages[number]
|
|
144
|
+
| typeof PlanResponseMessages[number]
|
|
145
|
+
| typeof PlanBoardResponseMessages[number]
|
|
146
|
+
| typeof PlanSprintResponseMessages[number]
|
|
147
|
+
| typeof DeployResponseMessages[number]
|
|
148
|
+
| typeof DeployRelayResponseMessages[number]
|
|
149
|
+
| typeof SkillResponseMessages[number];
|
|
150
|
+
|
|
182
151
|
export interface WebSocketResponse {
|
|
183
|
-
type:
|
|
184
|
-
| 'output'
|
|
185
|
-
| 'thinking'
|
|
186
|
-
| 'movementStart'
|
|
187
|
-
| 'movementComplete'
|
|
188
|
-
| 'movementError'
|
|
189
|
-
| 'sessionUpdate'
|
|
190
|
-
| 'history'
|
|
191
|
-
| 'sessions'
|
|
192
|
-
| 'sessionsCount'
|
|
193
|
-
| 'sessionDeleted'
|
|
194
|
-
| 'sessionData'
|
|
195
|
-
| 'historyCleared'
|
|
196
|
-
| 'searchResults'
|
|
197
|
-
| 'newSession'
|
|
198
|
-
| 'autocomplete'
|
|
199
|
-
| 'fileContent'
|
|
200
|
-
| 'error'
|
|
201
|
-
| 'pong'
|
|
202
|
-
| 'tabInitialized'
|
|
203
|
-
| 'approvalRequired'
|
|
204
|
-
| 'toolUse'
|
|
205
|
-
| 'streamingTokens'
|
|
206
|
-
| 'notificationSummary'
|
|
207
|
-
| 'terminalOutput'
|
|
208
|
-
| 'terminalReady'
|
|
209
|
-
| 'terminalExit'
|
|
210
|
-
| 'terminalError'
|
|
211
|
-
| 'terminalList'
|
|
212
|
-
// File explorer response types
|
|
213
|
-
| 'directoryListing'
|
|
214
|
-
| 'fileWritten'
|
|
215
|
-
| 'fileCreated'
|
|
216
|
-
| 'directoryCreated'
|
|
217
|
-
| 'fileDeleted'
|
|
218
|
-
| 'fileRenamed'
|
|
219
|
-
| 'fileOpened'
|
|
220
|
-
| 'fileContentChanged'
|
|
221
|
-
| 'contentSearchResults'
|
|
222
|
-
| 'contentSearchComplete'
|
|
223
|
-
| 'contentSearchError'
|
|
224
|
-
| 'definitionResult'
|
|
225
|
-
| 'fileError'
|
|
226
|
-
| 'terminalScrollback'
|
|
227
|
-
// Terminal sync response types
|
|
228
|
-
| 'terminalCreated'
|
|
229
|
-
| 'terminalClosed'
|
|
230
|
-
// Git response types
|
|
231
|
-
| 'gitStatus'
|
|
232
|
-
| 'gitStaged'
|
|
233
|
-
| 'gitUnstaged'
|
|
234
|
-
| 'gitCommitted'
|
|
235
|
-
| 'gitCommitMessage'
|
|
236
|
-
| 'gitPushed'
|
|
237
|
-
| 'gitPulled'
|
|
238
|
-
| 'gitLog'
|
|
239
|
-
| 'gitError'
|
|
240
|
-
| 'gitReposDiscovered'
|
|
241
|
-
| 'gitDirectorySet'
|
|
242
|
-
| 'gitRemoteInfo'
|
|
243
|
-
| 'gitPRCreated'
|
|
244
|
-
| 'gitPRDescription'
|
|
245
|
-
// Branch response types
|
|
246
|
-
| 'gitBranchList'
|
|
247
|
-
| 'gitCheckedOut'
|
|
248
|
-
| 'gitBranchCreated'
|
|
249
|
-
| 'gitBranchDeleted'
|
|
250
|
-
// Diff response types
|
|
251
|
-
| 'gitDiffResult'
|
|
252
|
-
// Commit detail response types
|
|
253
|
-
| 'gitCommitDetail'
|
|
254
|
-
| 'gitCommitDiffResult'
|
|
255
|
-
// Tag response types
|
|
256
|
-
| 'gitTagList'
|
|
257
|
-
| 'gitTagCreated'
|
|
258
|
-
| 'gitTagPushed'
|
|
259
|
-
// Worktree response types
|
|
260
|
-
| 'gitWorktreeListResult'
|
|
261
|
-
| 'gitWorktreeCreated'
|
|
262
|
-
| 'gitWorktreeCreatedAndAssigned'
|
|
263
|
-
| 'gitWorktreeRemoved'
|
|
264
|
-
| 'tabWorktreeSwitched'
|
|
265
|
-
| 'gitWorktreePushed'
|
|
266
|
-
| 'gitWorktreePRCreated'
|
|
267
|
-
// Merge response types
|
|
268
|
-
| 'gitMergePreviewResult'
|
|
269
|
-
| 'gitWorktreeMergeResult'
|
|
270
|
-
| 'gitMergeAborted'
|
|
271
|
-
| 'gitMergeCompleted'
|
|
272
|
-
// Session sync response types
|
|
273
|
-
| 'activeTabs'
|
|
274
|
-
| 'tabCreated'
|
|
275
|
-
| 'tabRemoved'
|
|
276
|
-
| 'tabRenamed'
|
|
277
|
-
| 'tabsReordered'
|
|
278
|
-
| 'promptTextSync'
|
|
279
|
-
| 'tabViewed'
|
|
280
|
-
| 'tabStateChanged'
|
|
281
|
-
// Settings response types
|
|
282
|
-
| 'settings'
|
|
283
|
-
| 'settingsUpdated'
|
|
284
|
-
// Quality response types
|
|
285
|
-
| 'qualityToolsDetected'
|
|
286
|
-
| 'qualityScanProgress'
|
|
287
|
-
| 'qualityScanResults'
|
|
288
|
-
| 'qualityInstallProgress'
|
|
289
|
-
| 'qualityInstallComplete'
|
|
290
|
-
| 'qualityCodeReview'
|
|
291
|
-
| 'qualityCodeReviewProgress'
|
|
292
|
-
| 'qualityPostSession'
|
|
293
|
-
| 'qualityFixProgress'
|
|
294
|
-
| 'qualityFixComplete'
|
|
295
|
-
| 'qualityError'
|
|
296
|
-
| 'qualityStateLoaded'
|
|
297
|
-
// File upload response types
|
|
298
|
-
| 'fileUploadAck'
|
|
299
|
-
| 'fileUploadReady'
|
|
300
|
-
| 'fileUploadError'
|
|
301
|
-
// Plan response types
|
|
302
|
-
| 'planState'
|
|
303
|
-
| 'planIssueList'
|
|
304
|
-
| 'planIssue'
|
|
305
|
-
| 'planSprint'
|
|
306
|
-
| 'planMilestone'
|
|
307
|
-
| 'planNotFound'
|
|
308
|
-
| 'planStateUpdated'
|
|
309
|
-
| 'planIssueUpdated'
|
|
310
|
-
| 'planIssueCreated'
|
|
311
|
-
| 'planIssueDeleted'
|
|
312
|
-
| 'planScaffolded'
|
|
313
|
-
| 'planPromptStreaming'
|
|
314
|
-
| 'planPromptProgress'
|
|
315
|
-
| 'planPromptResponse'
|
|
316
|
-
| 'planExecutionStarted'
|
|
317
|
-
| 'planExecutionProgress'
|
|
318
|
-
| 'planExecutionOutput'
|
|
319
|
-
| 'planExecutionMetrics'
|
|
320
|
-
| 'planExecutionComplete'
|
|
321
|
-
| 'planExecutionError'
|
|
322
|
-
| 'planError'
|
|
323
|
-
// Board lifecycle response types
|
|
324
|
-
| 'planBoardCreated'
|
|
325
|
-
| 'planBoardUpdated'
|
|
326
|
-
| 'planBoardArchived'
|
|
327
|
-
| 'planBoardState'
|
|
328
|
-
| 'planBoardArtifacts'
|
|
329
|
-
| 'planWorkspaceUpdated'
|
|
330
|
-
// Sprint lifecycle response types (legacy)
|
|
331
|
-
| 'planSprintCreated'
|
|
332
|
-
| 'planSprintUpdated'
|
|
333
|
-
| 'planSprintCompleted'
|
|
334
|
-
| 'planSprintArtifacts'
|
|
335
|
-
| 'planReviewProgress'
|
|
336
|
-
// Deploy response types
|
|
337
|
-
| 'deployCreated'
|
|
338
|
-
| 'deployStopped'
|
|
339
|
-
| 'deployResumed'
|
|
340
|
-
| 'deployDeleted'
|
|
341
|
-
| 'deployListResult'
|
|
342
|
-
| 'deployStatusResult'
|
|
343
|
-
| 'deployConfigUpdated'
|
|
344
|
-
| 'deployApiKeyStatus'
|
|
345
|
-
| 'deployError'
|
|
346
|
-
// Deploy HTTP relay response types (cli→server)
|
|
347
|
-
| 'deployHttpResponse'
|
|
348
|
-
| 'deployHttpResponseChunk'
|
|
349
|
-
| 'deployStatus'
|
|
350
|
-
| 'deployUsageReportAck'
|
|
351
|
-
| 'deployAiHealthAck'
|
|
352
|
-
// Skill discovery response types
|
|
353
|
-
| 'skillsList';
|
|
152
|
+
type: WebSocketResponseType;
|
|
354
153
|
tabId?: string;
|
|
355
154
|
terminalId?: string;
|
|
356
|
-
// biome-ignore lint/suspicious/noExplicitAny: message envelope carries heterogeneous payloads
|
|
155
|
+
// biome-ignore lint/suspicious/noExplicitAny: message envelope carries heterogeneous payloads — typed per-handler via destructuring
|
|
357
156
|
data?: any;
|
|
358
157
|
}
|
|
359
158
|
|
|
@@ -366,7 +165,7 @@ export interface SkillEntry {
|
|
|
366
165
|
name: string;
|
|
367
166
|
displayName: string;
|
|
368
167
|
description: string;
|
|
369
|
-
source: 'project' | 'system' | 'builtin';
|
|
168
|
+
source: 'project' | 'user' | 'system' | 'builtin' | 'platform';
|
|
370
169
|
}
|
|
371
170
|
|
|
372
171
|
// Extended autocomplete option with metadata
|