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.
Files changed (104) hide show
  1. package/dist/server/cli/headless/claude-invoker-stream.d.ts +76 -1
  2. package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -1
  3. package/dist/server/cli/headless/claude-invoker-stream.js +85 -10
  4. package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -1
  5. package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
  6. package/dist/server/cli/headless/claude-invoker.js +2 -0
  7. package/dist/server/cli/headless/claude-invoker.js.map +1 -1
  8. package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -1
  9. package/dist/server/cli/headless/haiku-assessments.js +10 -5
  10. package/dist/server/cli/headless/haiku-assessments.js.map +1 -1
  11. package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
  12. package/dist/server/cli/improvisation-retry.js +17 -2
  13. package/dist/server/cli/improvisation-retry.js.map +1 -1
  14. package/dist/server/cli/improvisation-session-manager.d.ts +4 -0
  15. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  16. package/dist/server/cli/improvisation-session-manager.js +61 -42
  17. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  18. package/dist/server/cli/improvisation-types.d.ts +1 -0
  19. package/dist/server/cli/improvisation-types.d.ts.map +1 -1
  20. package/dist/server/cli/improvisation-types.js.map +1 -1
  21. package/dist/server/services/websocket/git-head-watcher.d.ts +25 -0
  22. package/dist/server/services/websocket/git-head-watcher.d.ts.map +1 -0
  23. package/dist/server/services/websocket/git-head-watcher.js +136 -0
  24. package/dist/server/services/websocket/git-head-watcher.js.map +1 -0
  25. package/dist/server/services/websocket/git-worktree-handlers.js +47 -6
  26. package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -1
  27. package/dist/server/services/websocket/handler-context.d.ts +2 -0
  28. package/dist/server/services/websocket/handler-context.d.ts.map +1 -1
  29. package/dist/server/services/websocket/handler.d.ts +3 -1
  30. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  31. package/dist/server/services/websocket/handler.js +18 -6
  32. package/dist/server/services/websocket/handler.js.map +1 -1
  33. package/dist/server/services/websocket/plan-board-handlers.d.ts +1 -0
  34. package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -1
  35. package/dist/server/services/websocket/plan-board-handlers.js +94 -0
  36. package/dist/server/services/websocket/plan-board-handlers.js.map +1 -1
  37. package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
  38. package/dist/server/services/websocket/plan-handlers.js +3 -1
  39. package/dist/server/services/websocket/plan-handlers.js.map +1 -1
  40. package/dist/server/services/websocket/quality-persistence.d.ts +7 -0
  41. package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -1
  42. package/dist/server/services/websocket/quality-persistence.js +15 -7
  43. package/dist/server/services/websocket/quality-persistence.js.map +1 -1
  44. package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
  45. package/dist/server/services/websocket/quality-review-agent.js +2 -13
  46. package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
  47. package/dist/server/services/websocket/quality-service.d.ts +12 -3
  48. package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
  49. package/dist/server/services/websocket/quality-service.js +101 -81
  50. package/dist/server/services/websocket/quality-service.js.map +1 -1
  51. package/dist/server/services/websocket/quality-tools.d.ts.map +1 -1
  52. package/dist/server/services/websocket/quality-tools.js +6 -1
  53. package/dist/server/services/websocket/quality-tools.js.map +1 -1
  54. package/dist/server/services/websocket/quality-types.d.ts +15 -2
  55. package/dist/server/services/websocket/quality-types.d.ts.map +1 -1
  56. package/dist/server/services/websocket/quality-types.js.map +1 -1
  57. package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
  58. package/dist/server/services/websocket/session-handlers.js +13 -3
  59. package/dist/server/services/websocket/session-handlers.js.map +1 -1
  60. package/dist/server/services/websocket/skill-handlers.d.ts +9 -0
  61. package/dist/server/services/websocket/skill-handlers.d.ts.map +1 -1
  62. package/dist/server/services/websocket/skill-handlers.js +244 -3
  63. package/dist/server/services/websocket/skill-handlers.js.map +1 -1
  64. package/dist/server/services/websocket/tab-handlers.d.ts.map +1 -1
  65. package/dist/server/services/websocket/tab-handlers.js +9 -2
  66. package/dist/server/services/websocket/tab-handlers.js.map +1 -1
  67. package/dist/server/services/websocket/types.d.ts +44 -3
  68. package/dist/server/services/websocket/types.d.ts.map +1 -1
  69. package/dist/server/services/websocket/types.js +38 -0
  70. package/dist/server/services/websocket/types.js.map +1 -1
  71. package/package.json +2 -1
  72. package/server/cli/headless/claude-invoker-stream.ts +163 -18
  73. package/server/cli/headless/claude-invoker.ts +2 -0
  74. package/server/cli/headless/haiku-assessments.ts +10 -5
  75. package/server/cli/improvisation-retry.ts +18 -2
  76. package/server/cli/improvisation-session-manager.ts +69 -45
  77. package/server/cli/improvisation-types.ts +1 -0
  78. package/server/services/plan/agents/assess-stall.md +21 -0
  79. package/server/services/plan/agents/check-injection.md +36 -0
  80. package/server/services/plan/agents/classify-error.md +29 -0
  81. package/server/services/plan/agents/detect-context-loss.md +29 -0
  82. package/server/services/plan/agents/execute-issue.md +42 -0
  83. package/server/services/plan/agents/plan-coordinator.md +71 -0
  84. package/server/services/plan/agents/retry-task.md +26 -0
  85. package/server/services/plan/agents/review-code.md +4 -1
  86. package/server/services/plan/agents/review-criteria.md +53 -0
  87. package/server/services/plan/agents/review-custom.md +4 -1
  88. package/server/services/plan/agents/review-quality.md +4 -1
  89. package/server/services/plan/agents/verify-review.md +56 -0
  90. package/server/services/websocket/git-head-watcher.ts +120 -0
  91. package/server/services/websocket/git-worktree-handlers.ts +57 -7
  92. package/server/services/websocket/handler-context.ts +2 -0
  93. package/server/services/websocket/handler.ts +19 -6
  94. package/server/services/websocket/plan-board-handlers.ts +116 -0
  95. package/server/services/websocket/plan-handlers.ts +3 -1
  96. package/server/services/websocket/quality-persistence.ts +23 -7
  97. package/server/services/websocket/quality-review-agent.ts +2 -12
  98. package/server/services/websocket/quality-service.ts +116 -99
  99. package/server/services/websocket/quality-tools.ts +6 -1
  100. package/server/services/websocket/quality-types.ts +17 -2
  101. package/server/services/websocket/session-handlers.ts +19 -3
  102. package/server/services/websocket/skill-handlers.ts +260 -3
  103. package/server/services/websocket/tab-handlers.ts +8 -2
  104. 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