mstro-app 0.4.32 → 0.4.34
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/improvisation-retry.d.ts.map +1 -1
- package/dist/server/cli/improvisation-retry.js +18 -1
- package/dist/server/cli/improvisation-retry.js.map +1 -1
- package/dist/server/cli/improvisation-session-manager.d.ts +5 -0
- package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
- package/dist/server/cli/improvisation-session-manager.js +41 -1
- package/dist/server/cli/improvisation-session-manager.js.map +1 -1
- package/dist/server/services/files.d.ts.map +1 -1
- package/dist/server/services/files.js +6 -2
- package/dist/server/services/files.js.map +1 -1
- package/dist/server/services/plan/agent-loader.d.ts.map +1 -1
- package/dist/server/services/plan/agent-loader.js +1 -17
- package/dist/server/services/plan/agent-loader.js.map +1 -1
- package/dist/server/services/plan/composer.d.ts +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +2 -2
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +3 -1
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +8 -3
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/parser-core.d.ts.map +1 -1
- package/dist/server/services/plan/parser-core.js +15 -0
- package/dist/server/services/plan/parser-core.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +5 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +23 -2
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +15 -0
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-worktree-handlers.js +47 -8
- package/dist/server/services/websocket/git-worktree-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts +2 -0
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +36 -18
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-execution-handlers.js +4 -2
- package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-issue-handlers.js +9 -0
- package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -1
- package/dist/server/services/websocket/session-history.d.ts.map +1 -1
- package/dist/server/services/websocket/session-history.js +10 -8
- package/dist/server/services/websocket/session-history.js.map +1 -1
- package/dist/server/services/websocket/skill-handlers.d.ts +4 -0
- package/dist/server/services/websocket/skill-handlers.d.ts.map +1 -0
- package/dist/server/services/websocket/skill-handlers.js +93 -0
- package/dist/server/services/websocket/skill-handlers.js.map +1 -0
- package/dist/server/services/websocket/types.d.ts +8 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/dist/server/utils/paths.d.ts +4 -0
- package/dist/server/utils/paths.d.ts.map +1 -1
- package/dist/server/utils/paths.js +18 -1
- package/dist/server/utils/paths.js.map +1 -1
- package/package.json +1 -1
- package/server/cli/improvisation-retry.ts +19 -1
- package/server/cli/improvisation-session-manager.ts +44 -1
- package/server/services/files.ts +7 -2
- package/server/services/plan/agent-loader.ts +1 -16
- package/server/services/plan/composer.ts +2 -1
- package/server/services/plan/executor.ts +8 -3
- package/server/services/plan/parser-core.ts +14 -0
- package/server/services/plan/types.ts +6 -0
- package/server/services/websocket/file-explorer-handlers.ts +23 -2
- package/server/services/websocket/git-handlers.ts +17 -0
- package/server/services/websocket/git-worktree-handlers.ts +45 -9
- package/server/services/websocket/handler.ts +35 -16
- package/server/services/websocket/plan-execution-handlers.ts +4 -2
- package/server/services/websocket/plan-issue-handlers.ts +10 -0
- package/server/services/websocket/session-history.ts +10 -8
- package/server/services/websocket/skill-handlers.ts +90 -0
- package/server/services/websocket/types.ts +13 -2
- package/server/utils/paths.ts +17 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { findSkillsDir } from '../../utils/paths.js';
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const SYSTEM_AGENTS_DIR = join(__dirname, '..', 'plan', 'agents');
|
|
9
|
+
function parseFrontmatter(content) {
|
|
10
|
+
if (!content.startsWith('---'))
|
|
11
|
+
return {};
|
|
12
|
+
const endIdx = content.indexOf('---', 3);
|
|
13
|
+
if (endIdx === -1)
|
|
14
|
+
return {};
|
|
15
|
+
const yaml = content.slice(3, endIdx).trim();
|
|
16
|
+
const result = {};
|
|
17
|
+
for (const line of yaml.split('\n')) {
|
|
18
|
+
const colonIdx = line.indexOf(':');
|
|
19
|
+
if (colonIdx === -1)
|
|
20
|
+
continue;
|
|
21
|
+
const key = line.slice(0, colonIdx).trim();
|
|
22
|
+
let val = line.slice(colonIdx + 1).trim();
|
|
23
|
+
if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
|
|
24
|
+
val = val.slice(1, -1);
|
|
25
|
+
}
|
|
26
|
+
result[key] = val;
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
function scanProjectSkills(skillsDir) {
|
|
31
|
+
if (!existsSync(skillsDir))
|
|
32
|
+
return [];
|
|
33
|
+
const entries = [];
|
|
34
|
+
for (const name of readdirSync(skillsDir, { withFileTypes: true })) {
|
|
35
|
+
if (!name.isDirectory())
|
|
36
|
+
continue;
|
|
37
|
+
const skillFile = join(skillsDir, name.name, 'SKILL.md');
|
|
38
|
+
if (!existsSync(skillFile))
|
|
39
|
+
continue;
|
|
40
|
+
try {
|
|
41
|
+
const content = readFileSync(skillFile, 'utf-8');
|
|
42
|
+
const fm = parseFrontmatter(content);
|
|
43
|
+
if (fm['user-invocable'] === 'false')
|
|
44
|
+
continue;
|
|
45
|
+
entries.push({
|
|
46
|
+
name: fm.name || name.name,
|
|
47
|
+
displayName: `/${fm.name || name.name}`,
|
|
48
|
+
description: fm.description || '',
|
|
49
|
+
source: 'project',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch { /* skip unreadable files */ }
|
|
53
|
+
}
|
|
54
|
+
return entries;
|
|
55
|
+
}
|
|
56
|
+
function scanSystemAgents(agentsDir, seen) {
|
|
57
|
+
if (!existsSync(agentsDir))
|
|
58
|
+
return [];
|
|
59
|
+
const entries = [];
|
|
60
|
+
for (const file of readdirSync(agentsDir)) {
|
|
61
|
+
if (!file.endsWith('.md'))
|
|
62
|
+
continue;
|
|
63
|
+
const name = file.replace(/\.md$/, '');
|
|
64
|
+
if (seen.has(name))
|
|
65
|
+
continue;
|
|
66
|
+
try {
|
|
67
|
+
const content = readFileSync(join(agentsDir, file), 'utf-8');
|
|
68
|
+
const fm = parseFrontmatter(content);
|
|
69
|
+
if (fm['user-invocable'] === 'false')
|
|
70
|
+
continue;
|
|
71
|
+
entries.push({
|
|
72
|
+
name: fm.name || name,
|
|
73
|
+
displayName: `/${fm.name || name}`,
|
|
74
|
+
description: fm.description || '',
|
|
75
|
+
source: 'system',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch { /* skip unreadable files */ }
|
|
79
|
+
}
|
|
80
|
+
return entries;
|
|
81
|
+
}
|
|
82
|
+
export function handleListSkills(ctx, ws, workingDir) {
|
|
83
|
+
const skills = [];
|
|
84
|
+
const projectSkillsDir = findSkillsDir(workingDir);
|
|
85
|
+
if (projectSkillsDir) {
|
|
86
|
+
skills.push(...scanProjectSkills(projectSkillsDir));
|
|
87
|
+
}
|
|
88
|
+
const seen = new Set(skills.map(s => s.name));
|
|
89
|
+
skills.push(...scanSystemAgents(SYSTEM_AGENTS_DIR, seen));
|
|
90
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
91
|
+
ctx.send(ws, { type: 'skillsList', data: { skills } });
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=skill-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/skill-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export interface WSContext {
|
|
|
15
15
|
_ws?: unknown;
|
|
16
16
|
}
|
|
17
17
|
export interface WebSocketMessage {
|
|
18
|
-
type: 'execute' | 'cancel' | 'getHistory' | 'getSessions' | 'getSessionsCount' | 'deleteSession' | 'getSessionById' | 'clearHistory' | 'searchHistory' | 'new' | 'autocomplete' | 'readFile' | 'ping' | 'initTab' | 'resumeSession' | 'approve' | 'reject' | 'recordSelection' | 'requestNotificationSummary' | 'terminalInit' | 'terminalReconnect' | 'terminalList' | 'terminalInput' | 'terminalResize' | 'terminalClose' | 'listDirectory' | 'writeFile' | 'createFile' | 'createDirectory' | 'deleteFile' | 'renameFile' | 'notifyFileOpened' | 'searchFileContents' | 'cancelSearch' | 'findDefinition' | 'gitStatus' | 'gitStage' | 'gitUnstage' | 'gitCommit' | 'gitCommitWithAI' | 'gitPush' | 'gitPull' | 'gitLog' | 'gitDiscoverRepos' | 'gitSetDirectory' | 'gitGetRemoteInfo' | 'gitCreatePR' | 'gitGeneratePRDescription' | 'gitListBranches' | 'gitCheckout' | 'gitCreateBranch' | 'gitDeleteBranch' | 'gitDiff' | 'gitShowCommit' | 'gitCommitDiff' | 'gitListTags' | 'gitCreateTag' | 'gitPushTag' | 'gitWorktreeList' | 'gitWorktreeCreate' | 'gitWorktreeCreateAndAssign' | 'gitWorktreeRemove' | 'tabWorktreeSwitch' | 'gitWorktreePush' | 'gitWorktreeCreatePR' | 'gitMergePreview' | 'gitWorktreeMerge' | 'gitMergeAbort' | 'gitMergeComplete' | 'getActiveTabs' | 'createTab' | 'reorderTabs' | 'syncTabMeta' | 'syncPromptText' | 'removeTab' | 'markTabViewed' | 'getSettings' | 'updateSettings' | 'qualityDetectTools' | 'qualityScan' | 'qualityInstallTools' | 'qualityCodeReview' | 'qualityFixIssues' | 'qualityLoadState' | 'qualitySaveDirectories' | 'fileUploadStart' | 'fileUploadChunk' | 'fileUploadComplete' | 'fileUploadCancel' | 'planInit' | 'planGetState' | 'planListIssues' | 'planGetIssue' | 'planGetSprint' | 'planGetMilestone' | 'planCreateIssue' | 'planUpdateIssue' | 'planDeleteIssue' | 'planScaffold' | 'planPrompt' | 'planExecute' | 'planExecuteEpic' | 'planPause' | 'planStop' | 'planResume' | 'planCreateBoard' | 'planUpdateBoard' | 'planArchiveBoard' | 'planGetBoard' | 'planGetBoardState' | 'planReorderBoards' | 'planSetActiveBoard' | 'planGetBoardArtifacts' | 'planCreateSprint' | 'planActivateSprint' | 'planCompleteSprint' | 'planGetSprintArtifacts' | 'deployCreate' | 'deployStop' | 'deployResume' | 'deployDelete' | 'deployList' | 'deployGetStatus' | 'deployUpdateConfig' | 'deploySetApiKey' | 'deployValidateApiKey' | 'deployHttpRequest' | 'deployUsageReport' | 'deployAiHealthUpdate';
|
|
18
|
+
type: 'execute' | 'cancel' | 'getHistory' | 'getSessions' | 'getSessionsCount' | 'deleteSession' | 'getSessionById' | 'clearHistory' | 'searchHistory' | 'new' | 'autocomplete' | 'readFile' | 'ping' | 'initTab' | 'resumeSession' | 'approve' | 'reject' | 'recordSelection' | 'requestNotificationSummary' | 'terminalInit' | 'terminalReconnect' | 'terminalList' | 'terminalInput' | 'terminalResize' | 'terminalClose' | 'listDirectory' | 'writeFile' | 'createFile' | 'createDirectory' | 'deleteFile' | 'renameFile' | 'notifyFileOpened' | 'searchFileContents' | 'cancelSearch' | 'findDefinition' | 'gitStatus' | 'gitStage' | 'gitUnstage' | 'gitCommit' | 'gitCommitWithAI' | 'gitPush' | 'gitPull' | 'gitLog' | 'gitDiscoverRepos' | 'gitSetDirectory' | 'gitGetRemoteInfo' | 'gitCreatePR' | 'gitGeneratePRDescription' | 'gitListBranches' | 'gitCheckout' | 'gitCreateBranch' | 'gitDeleteBranch' | 'gitDiff' | 'gitShowCommit' | 'gitCommitDiff' | 'gitListTags' | 'gitCreateTag' | 'gitPushTag' | 'gitWorktreeList' | 'gitWorktreeCreate' | 'gitWorktreeCreateAndAssign' | 'gitWorktreeRemove' | 'tabWorktreeSwitch' | 'gitWorktreePush' | 'gitWorktreeCreatePR' | 'gitMergePreview' | 'gitWorktreeMerge' | 'gitMergeAbort' | 'gitMergeComplete' | 'getActiveTabs' | 'createTab' | 'reorderTabs' | 'syncTabMeta' | 'syncPromptText' | 'removeTab' | 'markTabViewed' | 'getSettings' | 'updateSettings' | 'qualityDetectTools' | 'qualityScan' | 'qualityInstallTools' | 'qualityCodeReview' | 'qualityFixIssues' | 'qualityLoadState' | 'qualitySaveDirectories' | 'fileUploadStart' | 'fileUploadChunk' | 'fileUploadComplete' | 'fileUploadCancel' | 'planInit' | 'planGetState' | 'planListIssues' | 'planGetIssue' | 'planGetSprint' | 'planGetMilestone' | 'planCreateIssue' | 'planUpdateIssue' | 'planDeleteIssue' | 'planScaffold' | 'planPrompt' | 'planExecute' | 'planExecuteEpic' | 'planPause' | 'planStop' | 'planResume' | 'planCreateBoard' | 'planUpdateBoard' | 'planArchiveBoard' | 'planGetBoard' | 'planGetBoardState' | 'planReorderBoards' | 'planSetActiveBoard' | 'planGetBoardArtifacts' | 'planCreateSprint' | 'planActivateSprint' | 'planCompleteSprint' | 'planGetSprintArtifacts' | 'deployCreate' | 'deployStop' | 'deployResume' | 'deployDelete' | 'deployList' | 'deployGetStatus' | 'deployUpdateConfig' | 'deploySetApiKey' | 'deployValidateApiKey' | 'deployHttpRequest' | 'deployUsageReport' | 'deployAiHealthUpdate' | 'listSkills';
|
|
19
19
|
tabId?: string;
|
|
20
20
|
terminalId?: string;
|
|
21
21
|
data?: any;
|
|
@@ -23,7 +23,7 @@ export interface WebSocketMessage {
|
|
|
23
23
|
_permission?: 'view';
|
|
24
24
|
}
|
|
25
25
|
export interface WebSocketResponse {
|
|
26
|
-
type: 'output' | 'thinking' | 'movementStart' | 'movementComplete' | 'movementError' | 'sessionUpdate' | 'history' | 'sessions' | 'sessionsCount' | 'sessionDeleted' | 'sessionData' | 'historyCleared' | 'searchResults' | 'newSession' | 'autocomplete' | 'fileContent' | 'error' | 'pong' | 'tabInitialized' | 'approvalRequired' | 'toolUse' | 'streamingTokens' | 'notificationSummary' | 'terminalOutput' | 'terminalReady' | 'terminalExit' | 'terminalError' | 'terminalList' | 'directoryListing' | 'fileWritten' | 'fileCreated' | 'directoryCreated' | 'fileDeleted' | 'fileRenamed' | 'fileOpened' | 'fileContentChanged' | 'contentSearchResults' | 'contentSearchComplete' | 'contentSearchError' | 'definitionResult' | 'fileError' | 'terminalScrollback' | 'terminalCreated' | 'terminalClosed' | 'gitStatus' | 'gitStaged' | 'gitUnstaged' | 'gitCommitted' | 'gitCommitMessage' | 'gitPushed' | 'gitPulled' | 'gitLog' | 'gitError' | 'gitReposDiscovered' | 'gitDirectorySet' | 'gitRemoteInfo' | 'gitPRCreated' | 'gitPRDescription' | 'gitBranchList' | 'gitCheckedOut' | 'gitBranchCreated' | 'gitBranchDeleted' | 'gitDiffResult' | 'gitCommitDetail' | 'gitCommitDiffResult' | 'gitTagList' | 'gitTagCreated' | 'gitTagPushed' | 'gitWorktreeListResult' | 'gitWorktreeCreated' | 'gitWorktreeCreatedAndAssigned' | 'gitWorktreeRemoved' | 'tabWorktreeSwitched' | 'gitWorktreePushed' | 'gitWorktreePRCreated' | 'gitMergePreviewResult' | 'gitWorktreeMergeResult' | 'gitMergeAborted' | 'gitMergeCompleted' | 'activeTabs' | 'tabCreated' | 'tabRemoved' | 'tabRenamed' | 'tabsReordered' | 'promptTextSync' | 'tabViewed' | 'tabStateChanged' | 'settings' | 'settingsUpdated' | 'qualityToolsDetected' | 'qualityScanProgress' | 'qualityScanResults' | 'qualityInstallProgress' | 'qualityInstallComplete' | 'qualityCodeReview' | 'qualityCodeReviewProgress' | 'qualityPostSession' | 'qualityFixProgress' | 'qualityFixComplete' | 'qualityError' | 'qualityStateLoaded' | 'fileUploadAck' | 'fileUploadReady' | 'fileUploadError' | 'planState' | 'planIssueList' | 'planIssue' | 'planSprint' | 'planMilestone' | 'planNotFound' | 'planStateUpdated' | 'planIssueUpdated' | 'planIssueCreated' | 'planIssueDeleted' | 'planScaffolded' | 'planPromptStreaming' | 'planPromptProgress' | 'planPromptResponse' | 'planExecutionStarted' | 'planExecutionProgress' | 'planExecutionOutput' | 'planExecutionMetrics' | 'planExecutionComplete' | 'planExecutionError' | 'planError' | 'planBoardCreated' | 'planBoardUpdated' | 'planBoardArchived' | 'planBoardState' | 'planBoardArtifacts' | 'planWorkspaceUpdated' | 'planSprintCreated' | 'planSprintUpdated' | 'planSprintCompleted' | 'planSprintArtifacts' | 'planReviewProgress' | 'deployCreated' | 'deployStopped' | 'deployResumed' | 'deployDeleted' | 'deployListResult' | 'deployStatusResult' | 'deployConfigUpdated' | 'deployApiKeyStatus' | 'deployError' | 'deployHttpResponse' | 'deployHttpResponseChunk' | 'deployStatus' | 'deployUsageReportAck' | 'deployAiHealthAck';
|
|
26
|
+
type: 'output' | 'thinking' | 'movementStart' | 'movementComplete' | 'movementError' | 'sessionUpdate' | 'history' | 'sessions' | 'sessionsCount' | 'sessionDeleted' | 'sessionData' | 'historyCleared' | 'searchResults' | 'newSession' | 'autocomplete' | 'fileContent' | 'error' | 'pong' | 'tabInitialized' | 'approvalRequired' | 'toolUse' | 'streamingTokens' | 'notificationSummary' | 'terminalOutput' | 'terminalReady' | 'terminalExit' | 'terminalError' | 'terminalList' | 'directoryListing' | 'fileWritten' | 'fileCreated' | 'directoryCreated' | 'fileDeleted' | 'fileRenamed' | 'fileOpened' | 'fileContentChanged' | 'contentSearchResults' | 'contentSearchComplete' | 'contentSearchError' | 'definitionResult' | 'fileError' | 'terminalScrollback' | 'terminalCreated' | 'terminalClosed' | 'gitStatus' | 'gitStaged' | 'gitUnstaged' | 'gitCommitted' | 'gitCommitMessage' | 'gitPushed' | 'gitPulled' | 'gitLog' | 'gitError' | 'gitReposDiscovered' | 'gitDirectorySet' | 'gitRemoteInfo' | 'gitPRCreated' | 'gitPRDescription' | 'gitBranchList' | 'gitCheckedOut' | 'gitBranchCreated' | 'gitBranchDeleted' | 'gitDiffResult' | 'gitCommitDetail' | 'gitCommitDiffResult' | 'gitTagList' | 'gitTagCreated' | 'gitTagPushed' | 'gitWorktreeListResult' | 'gitWorktreeCreated' | 'gitWorktreeCreatedAndAssigned' | 'gitWorktreeRemoved' | 'tabWorktreeSwitched' | 'gitWorktreePushed' | 'gitWorktreePRCreated' | 'gitMergePreviewResult' | 'gitWorktreeMergeResult' | 'gitMergeAborted' | 'gitMergeCompleted' | 'activeTabs' | 'tabCreated' | 'tabRemoved' | 'tabRenamed' | 'tabsReordered' | 'promptTextSync' | 'tabViewed' | 'tabStateChanged' | 'settings' | 'settingsUpdated' | 'qualityToolsDetected' | 'qualityScanProgress' | 'qualityScanResults' | 'qualityInstallProgress' | 'qualityInstallComplete' | 'qualityCodeReview' | 'qualityCodeReviewProgress' | 'qualityPostSession' | 'qualityFixProgress' | 'qualityFixComplete' | 'qualityError' | 'qualityStateLoaded' | 'fileUploadAck' | 'fileUploadReady' | 'fileUploadError' | 'planState' | 'planIssueList' | 'planIssue' | 'planSprint' | 'planMilestone' | 'planNotFound' | 'planStateUpdated' | 'planIssueUpdated' | 'planIssueCreated' | 'planIssueDeleted' | 'planScaffolded' | 'planPromptStreaming' | 'planPromptProgress' | 'planPromptResponse' | 'planExecutionStarted' | 'planExecutionProgress' | 'planExecutionOutput' | 'planExecutionMetrics' | 'planExecutionComplete' | 'planExecutionError' | 'planError' | 'planBoardCreated' | 'planBoardUpdated' | 'planBoardArchived' | 'planBoardState' | 'planBoardArtifacts' | 'planWorkspaceUpdated' | 'planSprintCreated' | 'planSprintUpdated' | 'planSprintCompleted' | 'planSprintArtifacts' | 'planReviewProgress' | 'deployCreated' | 'deployStopped' | 'deployResumed' | 'deployDeleted' | 'deployListResult' | 'deployStatusResult' | 'deployConfigUpdated' | 'deployApiKeyStatus' | 'deployError' | 'deployHttpResponse' | 'deployHttpResponseChunk' | 'deployStatus' | 'deployUsageReportAck' | 'deployAiHealthAck' | 'skillsList';
|
|
27
27
|
tabId?: string;
|
|
28
28
|
terminalId?: string;
|
|
29
29
|
data?: any;
|
|
@@ -32,6 +32,12 @@ export interface ConnectionData {
|
|
|
32
32
|
tabId: string;
|
|
33
33
|
workingDir: string;
|
|
34
34
|
}
|
|
35
|
+
export interface SkillEntry {
|
|
36
|
+
name: string;
|
|
37
|
+
displayName: string;
|
|
38
|
+
description: string;
|
|
39
|
+
source: 'project' | 'system' | 'builtin';
|
|
40
|
+
}
|
|
35
41
|
export interface AutocompleteResult {
|
|
36
42
|
value: string;
|
|
37
43
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACjC,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAElB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,KAAK,GACL,cAAc,GACd,UAAU,GACV,MAAM,GACN,SAAS,GACT,eAAe,GACf,SAAS,GACT,QAAQ,GACR,iBAAiB,GACjB,4BAA4B,GAC5B,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,GAEf,eAAe,GACf,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,GACd,gBAAgB,GAEhB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,0BAA0B,GAE1B,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GAEjB,SAAS,GAET,eAAe,GACf,eAAe,GAEf,aAAa,GACb,cAAc,GACd,YAAY,GAEZ,iBAAiB,GACjB,mBAAmB,GACnB,4BAA4B,GAC5B,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GAErB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAElB,eAAe,GACf,WAAW,GACX,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,eAAe,GAEf,aAAa,GACb,gBAAgB,GAEhB,oBAAoB,GACpB,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,wBAAwB,GAExB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAElB,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,YAAY,GAEZ,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,GAEvB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,GAExB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,sBAAsB,GAEtB,mBAAmB,GAEnB,mBAAmB,GACnB,sBAAsB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EACA,QAAQ,GACR,UAAU,GACV,eAAe,GACf,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,SAAS,GACT,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,aAAa,GACb,OAAO,GACP,MAAM,GACN,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,iBAAiB,GACjB,qBAAqB,GACrB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GAEd,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,kBAAkB,GAClB,WAAW,GACX,oBAAoB,GAEpB,iBAAiB,GACjB,gBAAgB,GAEhB,WAAW,GACX,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,WAAW,GACX,WAAW,GACX,QAAQ,GACR,UAAU,GACV,oBAAoB,GACpB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,kBAAkB,GAElB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAElB,eAAe,GAEf,iBAAiB,GACjB,qBAAqB,GAErB,YAAY,GACZ,eAAe,GACf,cAAc,GAEd,uBAAuB,GACvB,oBAAoB,GACpB,+BAA+B,GAC/B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GAEtB,uBAAuB,GACvB,wBAAwB,GACxB,iBAAiB,GACjB,mBAAmB,GAEnB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,iBAAiB,GAEjB,UAAU,GACV,iBAAiB,GAEjB,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,GACpB,wBAAwB,GACxB,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,GAC3B,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,GACd,oBAAoB,GAEpB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GAEjB,WAAW,GACX,eAAe,GACf,WAAW,GACX,YAAY,GACZ,eAAe,GACf,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GAEX,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,sBAAsB,GAEtB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,oBAAoB,GAEpB,eAAe,GACf,eAAe,GACf,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,oBAAoB,GACpB,aAAa,GAEb,oBAAoB,GACpB,yBAAyB,GACzB,cAAc,GACd,sBAAsB,GACtB,mBAAmB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC;AAGD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;CACnC;AAGD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChD,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,sBAAsB;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAMD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,+BAA+B;IAC/B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;IACzD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAMD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE/G;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/types.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACjC,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAElB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,KAAK,GACL,cAAc,GACd,UAAU,GACV,MAAM,GACN,SAAS,GACT,eAAe,GACf,SAAS,GACT,QAAQ,GACR,iBAAiB,GACjB,4BAA4B,GAC5B,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,GAEf,eAAe,GACf,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,GACd,gBAAgB,GAEhB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,aAAa,GACb,0BAA0B,GAE1B,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GAEjB,SAAS,GAET,eAAe,GACf,eAAe,GAEf,aAAa,GACb,cAAc,GACd,YAAY,GAEZ,iBAAiB,GACjB,mBAAmB,GACnB,4BAA4B,GAC5B,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GAErB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAElB,eAAe,GACf,WAAW,GACX,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,eAAe,GAEf,aAAa,GACb,gBAAgB,GAEhB,oBAAoB,GACpB,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,wBAAwB,GAExB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAElB,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,YAAY,GAEZ,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,GAEvB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,GAExB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,sBAAsB,GAEtB,mBAAmB,GAEnB,mBAAmB,GACnB,sBAAsB,GAEtB,YAAY,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EACA,QAAQ,GACR,UAAU,GACV,eAAe,GACf,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,SAAS,GACT,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,aAAa,GACb,OAAO,GACP,MAAM,GACN,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,iBAAiB,GACjB,qBAAqB,GACrB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GAEd,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,kBAAkB,GAClB,WAAW,GACX,oBAAoB,GAEpB,iBAAiB,GACjB,gBAAgB,GAEhB,WAAW,GACX,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,WAAW,GACX,WAAW,GACX,QAAQ,GACR,UAAU,GACV,oBAAoB,GACpB,iBAAiB,GACjB,eAAe,GACf,cAAc,GACd,kBAAkB,GAElB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAElB,eAAe,GAEf,iBAAiB,GACjB,qBAAqB,GAErB,YAAY,GACZ,eAAe,GACf,cAAc,GAEd,uBAAuB,GACvB,oBAAoB,GACpB,+BAA+B,GAC/B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GAEtB,uBAAuB,GACvB,wBAAwB,GACxB,iBAAiB,GACjB,mBAAmB,GAEnB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,iBAAiB,GAEjB,UAAU,GACV,iBAAiB,GAEjB,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,GACpB,wBAAwB,GACxB,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,GAC3B,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,GACd,oBAAoB,GAEpB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GAEjB,WAAW,GACX,eAAe,GACf,WAAW,GACX,YAAY,GACZ,eAAe,GACf,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,WAAW,GAEX,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,sBAAsB,GAEtB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,oBAAoB,GAEpB,eAAe,GACf,eAAe,GACf,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,oBAAoB,GACpB,aAAa,GAEb,oBAAoB,GACpB,yBAAyB,GACzB,cAAc,GACd,sBAAsB,GACtB,mBAAmB,GAEnB,YAAY,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC1C;AAGD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC;AAGD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;CACnC;AAGD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChD,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,sBAAsB;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAMD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,+BAA+B;IAC/B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;IACzD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAMD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE/G;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -10,4 +10,8 @@ export declare const MSTRO_ROOT: string;
|
|
|
10
10
|
* Path to the MCP bouncer server script
|
|
11
11
|
*/
|
|
12
12
|
export declare const MCP_SERVER_PATH: string;
|
|
13
|
+
/**
|
|
14
|
+
* Walk up from startDir looking for `.claude/skills/`. Returns the path if found, null otherwise.
|
|
15
|
+
*/
|
|
16
|
+
export declare function findSkillsDir(startDir: string): string | null;
|
|
13
17
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../server/utils/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../server/utils/paths.ts"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAA8B,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,eAAe,QAA8C,CAAC;AAE3E;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU7D"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* Provides consistent path resolution for installed npm package.
|
|
7
7
|
* Works correctly whether running from source or installed globally.
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
10
|
+
import { dirname, join, resolve } from 'node:path';
|
|
10
11
|
import { fileURLToPath } from 'node:url';
|
|
11
12
|
// ES module equivalent of __dirname for this file
|
|
12
13
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -23,4 +24,20 @@ export const MSTRO_ROOT = resolve(__dirname, '../..');
|
|
|
23
24
|
* Path to the MCP bouncer server script
|
|
24
25
|
*/
|
|
25
26
|
export const MCP_SERVER_PATH = resolve(MSTRO_ROOT, 'server/mcp/server.ts');
|
|
27
|
+
/**
|
|
28
|
+
* Walk up from startDir looking for `.claude/skills/`. Returns the path if found, null otherwise.
|
|
29
|
+
*/
|
|
30
|
+
export function findSkillsDir(startDir) {
|
|
31
|
+
let dir = startDir;
|
|
32
|
+
for (let i = 0; i < 10; i++) {
|
|
33
|
+
const candidate = join(dir, '.claude', 'skills');
|
|
34
|
+
if (existsSync(candidate))
|
|
35
|
+
return candidate;
|
|
36
|
+
const parent = dirname(dir);
|
|
37
|
+
if (parent === dir)
|
|
38
|
+
break;
|
|
39
|
+
dir = parent;
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
26
43
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../server/utils/paths.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../server/utils/paths.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,kDAAkD;AAClD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -455,6 +455,23 @@ function isPrematureCompletionCandidate(
|
|
|
455
455
|
return result.stopReason === 'max_tokens' || result.stopReason === 'end_turn';
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
+
/**
|
|
459
|
+
* Fast heuristic: detect response abandonment without a Haiku call.
|
|
460
|
+
* When thinking is significantly longer than the response and the response
|
|
461
|
+
* contains no tool calls, Claude likely planned work it never executed.
|
|
462
|
+
* This pattern occurs after context compaction or heavy parallel tool results.
|
|
463
|
+
*/
|
|
464
|
+
function isResponseAbandoned(result: HeadlessRunResult): boolean {
|
|
465
|
+
const thinkingLen = result.thinkingOutput?.length ?? 0;
|
|
466
|
+
const responseLen = result.assistantResponse?.length ?? 0;
|
|
467
|
+
const toolCallsInResponse = result.toolUseHistory?.filter(t => t.result !== undefined).length ?? 0;
|
|
468
|
+
|
|
469
|
+
if (thinkingLen < 500 || responseLen > 1000) return false;
|
|
470
|
+
if (toolCallsInResponse > 0 && responseLen > 200) return false;
|
|
471
|
+
|
|
472
|
+
return thinkingLen >= responseLen * 3;
|
|
473
|
+
}
|
|
474
|
+
|
|
458
475
|
/** Use Haiku to assess whether an end_turn response is genuinely complete */
|
|
459
476
|
async function assessEndTurnCompletion(result: HeadlessRunResult, verbose: boolean): Promise<boolean> {
|
|
460
477
|
if (!result.assistantResponse) return false;
|
|
@@ -531,7 +548,8 @@ export async function shouldRetryPrematureCompletion(
|
|
|
531
548
|
|
|
532
549
|
const stopReason = result.stopReason!;
|
|
533
550
|
const isMaxTokens = stopReason === 'max_tokens';
|
|
534
|
-
const
|
|
551
|
+
const abandoned = isResponseAbandoned(result);
|
|
552
|
+
const isIncomplete = isMaxTokens || abandoned || await assessEndTurnCompletion(result, session.options.verbose);
|
|
535
553
|
|
|
536
554
|
if (!isIncomplete) return false;
|
|
537
555
|
|
|
@@ -115,7 +115,7 @@ export class ImprovisationSessionManager extends EventEmitter {
|
|
|
115
115
|
// ========== Output Queue ==========
|
|
116
116
|
|
|
117
117
|
private startQueueProcessor(): void {
|
|
118
|
-
this.queueTimer = setInterval(() => { this.flushOutputQueue(); },
|
|
118
|
+
this.queueTimer = setInterval(() => { this.flushOutputQueue(); }, 50);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
private queueOutput(text: string): void {
|
|
@@ -136,6 +136,10 @@ export class ImprovisationSessionManager extends EventEmitter {
|
|
|
136
136
|
this._isExecuting = true;
|
|
137
137
|
this._cancelled = false;
|
|
138
138
|
this._cancelCompleteEmitted = false;
|
|
139
|
+
if (userPrompt !== 'continue') {
|
|
140
|
+
this._autoContinueCount = 0;
|
|
141
|
+
this._autoContinuePending = false;
|
|
142
|
+
}
|
|
139
143
|
this._executionStartTimestamp = _execStart;
|
|
140
144
|
this.executionEventLog = [];
|
|
141
145
|
|
|
@@ -212,6 +216,11 @@ export class ImprovisationSessionManager extends EventEmitter {
|
|
|
212
216
|
this.executionEventLog = [];
|
|
213
217
|
|
|
214
218
|
this.emitMovementComplete(movement, result, _execStart, sequenceNumber);
|
|
219
|
+
|
|
220
|
+
if (this.shouldAutoContinue(result, userPrompt)) {
|
|
221
|
+
this.scheduleAutoContinue();
|
|
222
|
+
}
|
|
223
|
+
|
|
215
224
|
return movement;
|
|
216
225
|
|
|
217
226
|
} catch (error: unknown) {
|
|
@@ -474,6 +483,40 @@ export class ImprovisationSessionManager extends EventEmitter {
|
|
|
474
483
|
this.emit('onSessionUpdate', this.getHistory());
|
|
475
484
|
}
|
|
476
485
|
|
|
486
|
+
// ========== Auto-Continue ==========
|
|
487
|
+
|
|
488
|
+
private _autoContinueCount = 0;
|
|
489
|
+
private _autoContinuePending = false;
|
|
490
|
+
private static readonly MAX_AUTO_CONTINUES = 1;
|
|
491
|
+
|
|
492
|
+
private shouldAutoContinue(result: HeadlessRunResult, _userPrompt: string): boolean {
|
|
493
|
+
if (this._autoContinueCount >= ImprovisationSessionManager.MAX_AUTO_CONTINUES) return false;
|
|
494
|
+
if (this._cancelled) return false;
|
|
495
|
+
if (!result.completed || result.signalName) return false;
|
|
496
|
+
if (result.stopReason !== 'end_turn') return false;
|
|
497
|
+
|
|
498
|
+
const thinkingLen = result.thinkingOutput?.length ?? 0;
|
|
499
|
+
const responseLen = result.assistantResponse?.length ?? 0;
|
|
500
|
+
|
|
501
|
+
if (thinkingLen < 500 || responseLen > 1000) return false;
|
|
502
|
+
return thinkingLen >= responseLen * 3;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
private scheduleAutoContinue(): void {
|
|
506
|
+
this._autoContinueCount++;
|
|
507
|
+
this._autoContinuePending = true;
|
|
508
|
+
this.queueOutput('\n⟳ Response appears incomplete — auto-continuing…\n');
|
|
509
|
+
this.flushOutputQueue();
|
|
510
|
+
|
|
511
|
+
setImmediate(() => {
|
|
512
|
+
if (this._cancelled || this._isExecuting || !this._autoContinuePending) return;
|
|
513
|
+
this._autoContinuePending = false;
|
|
514
|
+
this.executePrompt('continue').catch((err) => {
|
|
515
|
+
herror('Auto-continue failed:', err);
|
|
516
|
+
});
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
|
|
477
520
|
// ========== History I/O ==========
|
|
478
521
|
|
|
479
522
|
private loadHistory(): SessionHistory {
|
package/server/services/files.ts
CHANGED
|
@@ -115,8 +115,13 @@ export class FileService {
|
|
|
115
115
|
isDirectory: entry.isDirectory()
|
|
116
116
|
})
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
if (results.length >= 1000) {
|
|
119
|
+
console.warn('[FilesService] Directory scan hit 1000-item limit — results may be incomplete');
|
|
120
|
+
return results;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Recursively search directories
|
|
124
|
+
if (entry.isDirectory()) {
|
|
120
125
|
this.scanDirectory(fullPath, baseDir, results)
|
|
121
126
|
}
|
|
122
127
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { existsSync, readFileSync } from 'node:fs';
|
|
17
17
|
import { dirname, join } from 'node:path';
|
|
18
18
|
import { fileURLToPath } from 'node:url';
|
|
19
|
+
import { findSkillsDir } from '../../utils/paths.js';
|
|
19
20
|
|
|
20
21
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
22
|
const SYSTEM_AGENTS_DIR = join(__dirname, 'agents');
|
|
@@ -46,22 +47,6 @@ function tryLoadFile(filePath: string, variables: Record<string, string>): strin
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
/**
|
|
50
|
-
* Resolve the project root by walking up from a directory looking for `.claude/skills/`.
|
|
51
|
-
* Returns the `.claude/skills/` path if found, or null.
|
|
52
|
-
*/
|
|
53
|
-
function findSkillsDir(startDir: string): string | null {
|
|
54
|
-
let dir = startDir;
|
|
55
|
-
for (let i = 0; i < 10; i++) {
|
|
56
|
-
const candidate = join(dir, '.claude', 'skills');
|
|
57
|
-
if (existsSync(candidate)) return candidate;
|
|
58
|
-
const parent = dirname(dir);
|
|
59
|
-
if (parent === dir) break;
|
|
60
|
-
dir = parent;
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
50
|
/**
|
|
66
51
|
* Load an agent prompt by name with layered resolution.
|
|
67
52
|
*
|
|
@@ -129,6 +129,7 @@ export async function handlePlanPrompt(
|
|
|
129
129
|
userPrompt: string,
|
|
130
130
|
workingDir: string,
|
|
131
131
|
boardId?: string,
|
|
132
|
+
executionDir?: string,
|
|
132
133
|
): Promise<void> {
|
|
133
134
|
const pmDir = resolvePmDir(workingDir) ?? defaultPmDir(workingDir);
|
|
134
135
|
const projectContent = readFileOrEmpty(join(pmDir, 'project.md'));
|
|
@@ -246,7 +247,7 @@ User request: ${userPrompt}`;
|
|
|
246
247
|
});
|
|
247
248
|
|
|
248
249
|
const runner = new HeadlessRunner({
|
|
249
|
-
workingDir,
|
|
250
|
+
workingDir: executionDir || workingDir,
|
|
250
251
|
directPrompt: enrichedPrompt,
|
|
251
252
|
stallWarningMs: 300_000, // 5 min — compose usually finishes quickly
|
|
252
253
|
stallKillMs: 900_000, // 15 min
|
|
@@ -73,6 +73,8 @@ export class PlanExecutor extends EventEmitter {
|
|
|
73
73
|
private _scopeSetByCall = false;
|
|
74
74
|
/** Extra environment variables forwarded to HeadlessRunner child processes (e.g. API keys) */
|
|
75
75
|
private extraEnv?: Record<string, string>;
|
|
76
|
+
/** Optional worktree directory for running AI agents. PM data is always read from workingDir. */
|
|
77
|
+
private executionDir: string | null = null;
|
|
76
78
|
private metrics: ExecutionMetrics = {
|
|
77
79
|
issuesCompleted: 0,
|
|
78
80
|
issuesAttempted: 0,
|
|
@@ -98,8 +100,9 @@ export class PlanExecutor extends EventEmitter {
|
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
/** Start execution, optionally scoped to a specific board. */
|
|
101
|
-
async startBoard(boardId: string): Promise<void> {
|
|
103
|
+
async startBoard(boardId: string, executionDir?: string): Promise<void> {
|
|
102
104
|
this.boardId = boardId;
|
|
105
|
+
this.executionDir = executionDir ?? null;
|
|
103
106
|
this._scopeSetByCall = true;
|
|
104
107
|
return this.start();
|
|
105
108
|
}
|
|
@@ -113,6 +116,7 @@ export class PlanExecutor extends EventEmitter {
|
|
|
113
116
|
if (!this._scopeSetByCall) {
|
|
114
117
|
this.epicScope = null;
|
|
115
118
|
this.boardId = null;
|
|
119
|
+
this.executionDir = null;
|
|
116
120
|
}
|
|
117
121
|
this._scopeSetByCall = false;
|
|
118
122
|
this.status = 'starting';
|
|
@@ -247,10 +251,11 @@ export class PlanExecutor extends EventEmitter {
|
|
|
247
251
|
waveLabel: string,
|
|
248
252
|
abortSignal?: AbortSignal,
|
|
249
253
|
): Promise<void> {
|
|
254
|
+
const effectiveDir = this.executionDir || this.workingDir;
|
|
250
255
|
const outputPath = resolveOutputPath(issue, this.workingDir, this.boardDir);
|
|
251
256
|
const prompt = buildIssuePrompt({
|
|
252
257
|
issue,
|
|
253
|
-
workingDir:
|
|
258
|
+
workingDir: effectiveDir,
|
|
254
259
|
pmDir,
|
|
255
260
|
boardDir: this.boardDir,
|
|
256
261
|
existingDocs,
|
|
@@ -259,7 +264,7 @@ export class PlanExecutor extends EventEmitter {
|
|
|
259
264
|
|
|
260
265
|
const boardLogDir = this.boardDir ? join(this.boardDir, 'logs') : undefined;
|
|
261
266
|
const result = await runWithFileLogger(`pm-issue-${issue.id}`, () => runIssueWithRetry({
|
|
262
|
-
workingDir:
|
|
267
|
+
workingDir: effectiveDir,
|
|
263
268
|
prompt,
|
|
264
269
|
stallWarningMs: ISSUE_STALL_WARNING_MS,
|
|
265
270
|
stallKillMs: ISSUE_STALL_KILL_MS,
|
|
@@ -402,12 +402,26 @@ export function parseBoard(content: string, filePath: string): Board {
|
|
|
402
402
|
};
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
+
function parseWorktreeEntry(v: unknown): { path: string; branch: string } | null {
|
|
406
|
+
if (!v || typeof v !== 'object' || !('path' in v) || !('branch' in v)) return null;
|
|
407
|
+
const e = v as { path: unknown; branch: unknown };
|
|
408
|
+
return typeof e.path === 'string' && typeof e.branch === 'string' ? { path: e.path, branch: e.branch } : null;
|
|
409
|
+
}
|
|
410
|
+
|
|
405
411
|
export function parseWorkspace(content: string): Workspace {
|
|
406
412
|
try {
|
|
407
413
|
const parsed = JSON.parse(content) as Record<string, unknown>;
|
|
414
|
+
const boardWorktrees: Record<string, { path: string; branch: string }> = {};
|
|
415
|
+
if (parsed.boardWorktrees && typeof parsed.boardWorktrees === 'object') {
|
|
416
|
+
for (const [k, v] of Object.entries(parsed.boardWorktrees as Record<string, unknown>)) {
|
|
417
|
+
const entry = parseWorktreeEntry(v);
|
|
418
|
+
if (entry) boardWorktrees[k] = entry;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
408
421
|
return {
|
|
409
422
|
activeBoardId: typeof parsed.activeBoardId === 'string' ? parsed.activeBoardId : null,
|
|
410
423
|
boardOrder: Array.isArray(parsed.boardOrder) ? parsed.boardOrder.map(String) : [],
|
|
424
|
+
...(Object.keys(boardWorktrees).length > 0 ? { boardWorktrees } : {}),
|
|
411
425
|
};
|
|
412
426
|
} catch {
|
|
413
427
|
return { activeBoardId: null, boardOrder: [] };
|
|
@@ -138,9 +138,15 @@ export interface BoardExecutionSummary {
|
|
|
138
138
|
// Workspace (workspace.json)
|
|
139
139
|
// ============================================================================
|
|
140
140
|
|
|
141
|
+
export interface BoardWorktreeEntry {
|
|
142
|
+
path: string;
|
|
143
|
+
branch: string;
|
|
144
|
+
}
|
|
145
|
+
|
|
141
146
|
export interface Workspace {
|
|
142
147
|
activeBoardId: string | null;
|
|
143
148
|
boardOrder: string[];
|
|
149
|
+
boardWorktrees?: Record<string, BoardWorktreeEntry>;
|
|
144
150
|
}
|
|
145
151
|
|
|
146
152
|
// ============================================================================
|
|
@@ -111,9 +111,30 @@ export function handleFileExplorerMessage(ctx: HandlerContext, ws: WSContext, ms
|
|
|
111
111
|
handleRenameFile(ctx, ws, msg, tabId, workingDir);
|
|
112
112
|
},
|
|
113
113
|
notifyFileOpened: () => handleNotifyFileOpened(ctx, ws, msg, workingDir),
|
|
114
|
-
searchFileContents: () =>
|
|
114
|
+
searchFileContents: () => {
|
|
115
|
+
if (isSandboxed && msg.data?.query) {
|
|
116
|
+
const searchPath = msg.data.path || msg.data.dirPath;
|
|
117
|
+
if (searchPath) {
|
|
118
|
+
const validation = validatePathWithinWorkingDir(searchPath, workingDir);
|
|
119
|
+
if (!validation.valid) {
|
|
120
|
+
ctx.send(ws, { type: 'contentSearchError', tabId, data: { error: 'Sandboxed: search path outside project directory' } });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
handleSearchFileContents(ctx, ws, msg, tabId, workingDir);
|
|
126
|
+
},
|
|
115
127
|
cancelSearch: () => handleCancelSearch(ctx, tabId),
|
|
116
|
-
findDefinition: () =>
|
|
128
|
+
findDefinition: () => {
|
|
129
|
+
if (isSandboxed && msg.data?.filePath) {
|
|
130
|
+
const validation = validatePathWithinWorkingDir(msg.data.filePath, workingDir);
|
|
131
|
+
if (!validation.valid) {
|
|
132
|
+
ctx.send(ws, { type: 'definitionResult', tabId, data: { definitions: [], symbol: msg.data.symbol || '' } });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
handleFindDefinition(ctx, ws, msg, tabId, workingDir);
|
|
137
|
+
},
|
|
117
138
|
};
|
|
118
139
|
const handler = handlers[msg.type];
|
|
119
140
|
if (!handler) return;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
3
|
|
|
4
|
+
import { resolve } from 'node:path';
|
|
4
5
|
import { loadSkillPrompt } from '../plan/agent-loader.js';
|
|
5
6
|
import { handleGitCheckout, handleGitCreateBranch, handleGitDeleteBranch, handleGitListBranches } from './git-branch-handlers.js';
|
|
6
7
|
import { handleGitCommitDiff, handleGitDiff, handleGitShowCommit } from './git-diff-handlers.js';
|
|
@@ -120,6 +121,16 @@ async function handleGitStage(ctx: HandlerContext, ws: WSContext, msg: WebSocket
|
|
|
120
121
|
return;
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
if (!stageAll && paths) {
|
|
125
|
+
const resolvedRoot = resolve(workingDir);
|
|
126
|
+
for (const p of paths) {
|
|
127
|
+
if (!resolve(workingDir, p).startsWith(resolvedRoot)) {
|
|
128
|
+
ctx.send(ws, { type: 'gitError', tabId, data: { error: `Path traversal not allowed: ${p}` } });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
123
134
|
try {
|
|
124
135
|
const args = stageAll ? ['add', '-A'] : ['add', '--', ...paths!];
|
|
125
136
|
const result = await executeGitCommand(args, workingDir);
|
|
@@ -154,12 +165,18 @@ async function handleGitUnstage(ctx: HandlerContext, ws: WSContext, msg: WebSock
|
|
|
154
165
|
}
|
|
155
166
|
}
|
|
156
167
|
|
|
168
|
+
const MAX_COMMIT_MESSAGE_LENGTH = 10_000;
|
|
169
|
+
|
|
157
170
|
async function handleGitCommit(ctx: HandlerContext, ws: WSContext, msg: WebSocketMessage, tabId: string, workingDir: string): Promise<void> {
|
|
158
171
|
const message = msg.data?.message as string | undefined;
|
|
159
172
|
if (!message) {
|
|
160
173
|
ctx.send(ws, { type: 'gitError', tabId, data: { error: 'Commit message is required' } });
|
|
161
174
|
return;
|
|
162
175
|
}
|
|
176
|
+
if (message.length > MAX_COMMIT_MESSAGE_LENGTH) {
|
|
177
|
+
ctx.send(ws, { type: 'gitError', tabId, data: { error: `Commit message too long (${message.length} chars, max ${MAX_COMMIT_MESSAGE_LENGTH})` } });
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
163
180
|
|
|
164
181
|
try {
|
|
165
182
|
const result = await executeGitCommand(['commit', '-m', message], workingDir);
|