mstro-app 0.4.39 → 0.4.44

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 (202) hide show
  1. package/PRIVACY.md +1 -3
  2. package/bin/commands/login.js +17 -7
  3. package/bin/commands/logout.js +14 -6
  4. package/bin/commands/status.js +9 -3
  5. package/bin/commands/whoami.js +10 -4
  6. package/bin/mstro.js +11 -1
  7. package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -1
  8. package/dist/server/cli/headless/claude-invoker-stream.js +1 -0
  9. package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -1
  10. package/dist/server/cli/headless/index.d.ts +1 -0
  11. package/dist/server/cli/headless/index.d.ts.map +1 -1
  12. package/dist/server/cli/headless/index.js +2 -0
  13. package/dist/server/cli/headless/index.js.map +1 -1
  14. package/dist/server/cli/headless/resilient-runner.d.ts +47 -0
  15. package/dist/server/cli/headless/resilient-runner.d.ts.map +1 -0
  16. package/dist/server/cli/headless/resilient-runner.js +234 -0
  17. package/dist/server/cli/headless/resilient-runner.js.map +1 -0
  18. package/dist/server/cli/headless/retry-strategies.d.ts +44 -0
  19. package/dist/server/cli/headless/retry-strategies.d.ts.map +1 -0
  20. package/dist/server/cli/headless/retry-strategies.js +262 -0
  21. package/dist/server/cli/headless/retry-strategies.js.map +1 -0
  22. package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
  23. package/dist/server/cli/headless/stall-assessor.js +5 -0
  24. package/dist/server/cli/headless/stall-assessor.js.map +1 -1
  25. package/dist/server/cli/headless/tool-watchdog.d.ts +2 -0
  26. package/dist/server/cli/headless/tool-watchdog.d.ts.map +1 -1
  27. package/dist/server/cli/headless/tool-watchdog.js +31 -4
  28. package/dist/server/cli/headless/tool-watchdog.js.map +1 -1
  29. package/dist/server/cli/improvisation-retry.d.ts.map +1 -1
  30. package/dist/server/cli/improvisation-retry.js +1 -30
  31. package/dist/server/cli/improvisation-retry.js.map +1 -1
  32. package/dist/server/cli/improvisation-session-manager.d.ts +1 -0
  33. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  34. package/dist/server/cli/improvisation-session-manager.js +16 -3
  35. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  36. package/dist/server/cli/prompt-builders.d.ts.map +1 -1
  37. package/dist/server/cli/prompt-builders.js +31 -13
  38. package/dist/server/cli/prompt-builders.js.map +1 -1
  39. package/dist/server/index.js +1 -9
  40. package/dist/server/index.js.map +1 -1
  41. package/dist/server/mcp/bouncer-cli.js +5 -4
  42. package/dist/server/mcp/bouncer-cli.js.map +1 -1
  43. package/dist/server/mcp/bouncer-haiku.js +1 -1
  44. package/dist/server/mcp/bouncer-haiku.js.map +1 -1
  45. package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
  46. package/dist/server/mcp/bouncer-integration.js +14 -8
  47. package/dist/server/mcp/bouncer-integration.js.map +1 -1
  48. package/dist/server/mcp/security-patterns.js +1 -1
  49. package/dist/server/mcp/security-patterns.js.map +1 -1
  50. package/dist/server/services/plan/composer.d.ts.map +1 -1
  51. package/dist/server/services/plan/composer.js +19 -9
  52. package/dist/server/services/plan/composer.js.map +1 -1
  53. package/dist/server/services/plan/executor.d.ts +6 -1
  54. package/dist/server/services/plan/executor.d.ts.map +1 -1
  55. package/dist/server/services/plan/executor.js +163 -77
  56. package/dist/server/services/plan/executor.js.map +1 -1
  57. package/dist/server/services/plan/front-matter.d.ts +1 -0
  58. package/dist/server/services/plan/front-matter.d.ts.map +1 -1
  59. package/dist/server/services/plan/front-matter.js +6 -0
  60. package/dist/server/services/plan/front-matter.js.map +1 -1
  61. package/dist/server/services/plan/issue-classification.d.ts +11 -0
  62. package/dist/server/services/plan/issue-classification.d.ts.map +1 -0
  63. package/dist/server/services/plan/issue-classification.js +20 -0
  64. package/dist/server/services/plan/issue-classification.js.map +1 -0
  65. package/dist/server/services/plan/issue-prompt-builder.d.ts.map +1 -1
  66. package/dist/server/services/plan/issue-prompt-builder.js +7 -4
  67. package/dist/server/services/plan/issue-prompt-builder.js.map +1 -1
  68. package/dist/server/services/plan/issue-retry.d.ts +0 -5
  69. package/dist/server/services/plan/issue-retry.d.ts.map +1 -1
  70. package/dist/server/services/plan/issue-retry.js +12 -241
  71. package/dist/server/services/plan/issue-retry.js.map +1 -1
  72. package/dist/server/services/plan/parser-core.d.ts.map +1 -1
  73. package/dist/server/services/plan/parser-core.js +1 -0
  74. package/dist/server/services/plan/parser-core.js.map +1 -1
  75. package/dist/server/services/plan/review-gate.d.ts.map +1 -1
  76. package/dist/server/services/plan/review-gate.js +9 -6
  77. package/dist/server/services/plan/review-gate.js.map +1 -1
  78. package/dist/server/services/plan/types.d.ts +1 -0
  79. package/dist/server/services/plan/types.d.ts.map +1 -1
  80. package/dist/server/services/platform-credentials.d.ts.map +1 -1
  81. package/dist/server/services/platform-credentials.js +11 -4
  82. package/dist/server/services/platform-credentials.js.map +1 -1
  83. package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
  84. package/dist/server/services/terminal/pty-manager.js +7 -1
  85. package/dist/server/services/terminal/pty-manager.js.map +1 -1
  86. package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -1
  87. package/dist/server/services/websocket/file-search-handlers.js +4 -0
  88. package/dist/server/services/websocket/file-search-handlers.js.map +1 -1
  89. package/dist/server/services/websocket/handler-context.d.ts +2 -0
  90. package/dist/server/services/websocket/handler-context.d.ts.map +1 -1
  91. package/dist/server/services/websocket/handler.d.ts +2 -0
  92. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  93. package/dist/server/services/websocket/handler.js +18 -7
  94. package/dist/server/services/websocket/handler.js.map +1 -1
  95. package/dist/server/services/websocket/plan-execution-handlers.js +6 -6
  96. package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -1
  97. package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -1
  98. package/dist/server/services/websocket/quality-fix-agent.js +90 -42
  99. package/dist/server/services/websocket/quality-fix-agent.js.map +1 -1
  100. package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
  101. package/dist/server/services/websocket/quality-handlers.js +48 -7
  102. package/dist/server/services/websocket/quality-handlers.js.map +1 -1
  103. package/dist/server/services/websocket/quality-persistence.d.ts +22 -0
  104. package/dist/server/services/websocket/quality-persistence.d.ts.map +1 -1
  105. package/dist/server/services/websocket/quality-persistence.js +48 -1
  106. package/dist/server/services/websocket/quality-persistence.js.map +1 -1
  107. package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
  108. package/dist/server/services/websocket/quality-review-agent.js +74 -32
  109. package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
  110. package/dist/server/services/websocket/quality-tools.d.ts.map +1 -1
  111. package/dist/server/services/websocket/quality-tools.js +18 -18
  112. package/dist/server/services/websocket/quality-tools.js.map +1 -1
  113. package/dist/server/services/websocket/skill-handlers.d.ts +3 -1
  114. package/dist/server/services/websocket/skill-handlers.d.ts.map +1 -1
  115. package/dist/server/services/websocket/skill-handlers.js +52 -41
  116. package/dist/server/services/websocket/skill-handlers.js.map +1 -1
  117. package/dist/server/services/websocket/skill-watcher.d.ts +17 -0
  118. package/dist/server/services/websocket/skill-watcher.d.ts.map +1 -0
  119. package/dist/server/services/websocket/skill-watcher.js +85 -0
  120. package/dist/server/services/websocket/skill-watcher.js.map +1 -0
  121. package/dist/server/services/websocket/types.d.ts +2 -268
  122. package/dist/server/services/websocket/types.d.ts.map +1 -1
  123. package/dist/server/services/websocket/types.js +0 -4
  124. package/dist/server/services/websocket/types.js.map +1 -1
  125. package/package.json +1 -1
  126. package/server/cli/headless/claude-invoker-stream.ts +1 -0
  127. package/server/cli/headless/index.ts +2 -0
  128. package/server/cli/headless/resilient-runner.ts +354 -0
  129. package/server/cli/headless/retry-strategies.ts +330 -0
  130. package/server/cli/headless/stall-assessor.ts +5 -0
  131. package/server/cli/headless/tool-watchdog.ts +40 -4
  132. package/server/cli/improvisation-retry.ts +1 -32
  133. package/server/cli/improvisation-session-manager.ts +17 -3
  134. package/server/cli/prompt-builders.ts +33 -12
  135. package/server/index.ts +1 -9
  136. package/server/mcp/bouncer-cli.ts +5 -4
  137. package/server/mcp/bouncer-haiku.ts +1 -1
  138. package/server/mcp/bouncer-integration.ts +15 -8
  139. package/server/mcp/security-patterns.ts +1 -1
  140. package/server/services/plan/agents/code-review.md +109 -0
  141. package/server/services/plan/agents/commit-message.md +26 -0
  142. package/server/services/plan/agents/fix-quality.md +24 -0
  143. package/server/services/plan/agents/pr-description.md +28 -0
  144. package/server/services/plan/composer.ts +20 -9
  145. package/server/services/plan/executor.ts +165 -77
  146. package/server/services/plan/front-matter.ts +7 -0
  147. package/server/services/plan/issue-classification.ts +21 -0
  148. package/server/services/plan/issue-prompt-builder.ts +8 -4
  149. package/server/services/plan/issue-retry.ts +15 -330
  150. package/server/services/plan/parser-core.ts +1 -0
  151. package/server/services/plan/review-gate.ts +9 -6
  152. package/server/services/plan/types.ts +3 -0
  153. package/server/services/platform-credentials.ts +10 -4
  154. package/server/services/terminal/pty-manager.ts +7 -1
  155. package/server/services/websocket/file-search-handlers.ts +2 -0
  156. package/server/services/websocket/handler-context.ts +2 -0
  157. package/server/services/websocket/handler.ts +18 -8
  158. package/server/services/websocket/plan-execution-handlers.ts +7 -7
  159. package/server/services/websocket/quality-fix-agent.ts +86 -44
  160. package/server/services/websocket/quality-handlers.ts +48 -7
  161. package/server/services/websocket/quality-persistence.ts +75 -1
  162. package/server/services/websocket/quality-review-agent.ts +70 -31
  163. package/server/services/websocket/quality-tools.ts +16 -14
  164. package/server/services/websocket/skill-handlers.ts +50 -40
  165. package/server/services/websocket/skill-watcher.ts +79 -0
  166. package/server/services/websocket/types.ts +0 -311
  167. package/dist/server/services/deploy/ai-broker.d.ts +0 -63
  168. package/dist/server/services/deploy/ai-broker.d.ts.map +0 -1
  169. package/dist/server/services/deploy/ai-broker.js +0 -360
  170. package/dist/server/services/deploy/ai-broker.js.map +0 -1
  171. package/dist/server/services/deploy/board-execution-handler.d.ts +0 -114
  172. package/dist/server/services/deploy/board-execution-handler.d.ts.map +0 -1
  173. package/dist/server/services/deploy/board-execution-handler.js +0 -621
  174. package/dist/server/services/deploy/board-execution-handler.js.map +0 -1
  175. package/dist/server/services/deploy/credentials.d.ts +0 -35
  176. package/dist/server/services/deploy/credentials.d.ts.map +0 -1
  177. package/dist/server/services/deploy/credentials.js +0 -177
  178. package/dist/server/services/deploy/credentials.js.map +0 -1
  179. package/dist/server/services/deploy/deploy-ai-service.d.ts +0 -107
  180. package/dist/server/services/deploy/deploy-ai-service.d.ts.map +0 -1
  181. package/dist/server/services/deploy/deploy-ai-service.js +0 -294
  182. package/dist/server/services/deploy/deploy-ai-service.js.map +0 -1
  183. package/dist/server/services/deploy/headless-session-handler.d.ts +0 -94
  184. package/dist/server/services/deploy/headless-session-handler.d.ts.map +0 -1
  185. package/dist/server/services/deploy/headless-session-handler.js +0 -266
  186. package/dist/server/services/deploy/headless-session-handler.js.map +0 -1
  187. package/dist/server/services/websocket/deploy-handlers.d.ts +0 -14
  188. package/dist/server/services/websocket/deploy-handlers.d.ts.map +0 -1
  189. package/dist/server/services/websocket/deploy-handlers.js +0 -409
  190. package/dist/server/services/websocket/deploy-handlers.js.map +0 -1
  191. package/dist/server/services/websocket/handlers/deploy-handlers.d.ts +0 -11
  192. package/dist/server/services/websocket/handlers/deploy-handlers.d.ts.map +0 -1
  193. package/dist/server/services/websocket/handlers/deploy-handlers.js +0 -176
  194. package/dist/server/services/websocket/handlers/deploy-handlers.js.map +0 -1
  195. package/server/cli/headless/RESEARCH.md +0 -627
  196. package/server/services/deploy/ai-broker.ts +0 -512
  197. package/server/services/deploy/board-execution-handler.ts +0 -847
  198. package/server/services/deploy/credentials.ts +0 -200
  199. package/server/services/deploy/deploy-ai-service.ts +0 -401
  200. package/server/services/deploy/headless-session-handler.ts +0 -414
  201. package/server/services/websocket/deploy-handlers.ts +0 -544
  202. package/server/services/websocket/handlers/deploy-handlers.ts +0 -228
@@ -8,7 +8,7 @@ import { fileURLToPath } from 'node:url';
8
8
  import { findSkillsDir } from '../../utils/paths.js';
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
10
  const SYSTEM_AGENTS_DIR = join(__dirname, '..', 'plan', 'agents');
11
- const USER_SKILLS_DIR = join(homedir(), '.claude', 'skills');
11
+ export const USER_SKILLS_DIR = join(homedir(), '.claude', 'skills');
12
12
  const PLATFORM_COMMANDS = [
13
13
  {
14
14
  name: 'board',
@@ -128,24 +128,37 @@ function scanSystemAgents(agentsDir, seen) {
128
128
  }
129
129
  return entries;
130
130
  }
131
- export function handleListSkills(ctx, ws, workingDir) {
132
- const skills = [...PLATFORM_COMMANDS];
133
- const seen = new Set(skills.map(s => s.name));
131
+ export function collectAllSkills(workingDir) {
132
+ const skills = [];
133
+ const seen = new Set();
134
+ // 1. Project skills (highest priority — override everything)
134
135
  const projectSkillsDir = findSkillsDir(workingDir);
135
136
  if (projectSkillsDir) {
136
- const projectSkills = scanProjectSkills(projectSkillsDir);
137
- for (const s of projectSkills) {
137
+ for (const s of scanProjectSkills(projectSkillsDir)) {
138
138
  if (!seen.has(s.name)) {
139
139
  skills.push(s);
140
140
  seen.add(s.name);
141
141
  }
142
142
  }
143
143
  }
144
+ // 2. User skills (override platform commands and system agents)
144
145
  skills.push(...scanUserSkills(USER_SKILLS_DIR, seen));
145
146
  for (const s of skills)
146
147
  seen.add(s.name);
148
+ // 3. Platform commands (only if not overridden by an external skill)
149
+ for (const cmd of PLATFORM_COMMANDS) {
150
+ if (!seen.has(cmd.name)) {
151
+ skills.push(cmd);
152
+ seen.add(cmd.name);
153
+ }
154
+ }
155
+ // 4. System agents (lowest priority)
147
156
  skills.push(...scanSystemAgents(SYSTEM_AGENTS_DIR, seen));
148
157
  skills.sort((a, b) => a.name.localeCompare(b.name));
158
+ return skills;
159
+ }
160
+ export function handleListSkills(ctx, ws, workingDir) {
161
+ const skills = collectAllSkills(workingDir);
149
162
  ctx.send(ws, { type: 'skillsList', data: { skills } });
150
163
  }
151
164
  /**
@@ -159,41 +172,38 @@ function extractSkillContent(fileContent) {
159
172
  return fileContent;
160
173
  return fileContent.slice(endIdx + 3).trim();
161
174
  }
175
+ function tryReadSkillFile(filePath, skillDir, userInvocableOnly, source) {
176
+ if (!existsSync(filePath))
177
+ return null;
178
+ try {
179
+ const content = readFileSync(filePath, 'utf-8');
180
+ if (userInvocableOnly && parseFrontmatter(content)['user-invocable'] === 'false')
181
+ return null;
182
+ return { content, skillDir, source };
183
+ }
184
+ catch {
185
+ return null;
186
+ }
187
+ }
162
188
  /**
163
- * Find and read a skill's SKILL.md by name. Checks project skills first, then system agents.
164
- * Returns the raw file content and the skill directory, or null if not found.
189
+ * Find and read a skill's SKILL.md by name. Checks project skills first, then user skills, then system agents.
190
+ * When `userInvocableOnly` is true, skips entries with `user-invocable: false` and continues
191
+ * to the next source — this ensures internal-only project skills don't shadow user skills.
165
192
  */
166
- function findSkillContent(skillName, workingDir) {
167
- // Project skills: .claude/skills/<name>/SKILL.md
193
+ function findSkillContent(skillName, workingDir, userInvocableOnly = false) {
168
194
  const projectSkillsDir = findSkillsDir(workingDir);
169
195
  if (projectSkillsDir) {
170
196
  const skillDir = join(projectSkillsDir, skillName);
171
- const skillFile = join(skillDir, 'SKILL.md');
172
- if (existsSync(skillFile)) {
173
- try {
174
- return { content: readFileSync(skillFile, 'utf-8'), skillDir };
175
- }
176
- catch { /* fall through */ }
177
- }
197
+ const found = tryReadSkillFile(join(skillDir, 'SKILL.md'), skillDir, userInvocableOnly, 'project');
198
+ if (found)
199
+ return found;
178
200
  }
179
- // User skills: ~/.claude/skills/<name>/SKILL.md
180
201
  const userSkillDir = join(USER_SKILLS_DIR, skillName);
181
- const userSkillFile = join(userSkillDir, 'SKILL.md');
182
- if (existsSync(userSkillFile)) {
183
- try {
184
- return { content: readFileSync(userSkillFile, 'utf-8'), skillDir: userSkillDir };
185
- }
186
- catch { /* fall through */ }
187
- }
188
- // System agents: <agents-dir>/<name>.md
202
+ const found = tryReadSkillFile(join(userSkillDir, 'SKILL.md'), userSkillDir, userInvocableOnly, 'user');
203
+ if (found)
204
+ return found;
189
205
  const agentFile = join(SYSTEM_AGENTS_DIR, `${skillName}.md`);
190
- if (existsSync(agentFile)) {
191
- try {
192
- return { content: readFileSync(agentFile, 'utf-8'), skillDir: SYSTEM_AGENTS_DIR };
193
- }
194
- catch { /* fall through */ }
195
- }
196
- return null;
206
+ return tryReadSkillFile(agentFile, SYSTEM_AGENTS_DIR, userInvocableOnly, 'system');
197
207
  }
198
208
  /**
199
209
  * Fill in {{mustache}} template variables in skill content.
@@ -254,7 +264,9 @@ function fillArgumentVariables(content, userArgs) {
254
264
  * Also handles fenced ```! blocks for multi-line commands.
255
265
  * Runs in the skill's working directory with a short timeout.
256
266
  */
257
- function executeInlineShellCommands(content, workingDir) {
267
+ function executeInlineShellCommands(content, workingDir, source) {
268
+ if (source !== 'system' && source !== 'user')
269
+ return content;
258
270
  // Fenced ```! blocks — multi-line shell execution
259
271
  let result = content.replace(/```!\n([\s\S]*?)```/g, (_, block) => {
260
272
  const cmd = block.trim();
@@ -298,7 +310,7 @@ function parseSlashCommand(trimmed) {
298
310
  }
299
311
  const CLAUDE_SKILL_DIR_RE = /\$\{CLAUDE_SKILL_DIR}/g;
300
312
  const CLAUDE_SESSION_ID_RE = /\$\{CLAUDE_SESSION_ID}/g;
301
- function processSkillContent(rawContent, userArgs, skillDir, workingDir) {
313
+ function processSkillContent(rawContent, userArgs, skillDir, workingDir, source) {
302
314
  let content = extractSkillContent(rawContent);
303
315
  content = fillTemplateVariables(content, {
304
316
  dirPath: userArgs || workingDir,
@@ -311,7 +323,7 @@ function processSkillContent(rawContent, userArgs, skillDir, workingDir) {
311
323
  content = content.replace(CLAUDE_SKILL_DIR_RE, skillDir);
312
324
  content = content.replace(CLAUDE_SESSION_ID_RE, `mstro-${Date.now()}`);
313
325
  if (/!`[^`]+`/.test(content) || /```!\n/.test(content)) {
314
- content = executeInlineShellCommands(content, workingDir);
326
+ content = executeInlineShellCommands(content, workingDir, source);
315
327
  }
316
328
  if (userArgs && !hasArgumentsPlaceholder && !rawContent.includes('{{dirPath}}')) {
317
329
  content = `${content}\n\nARGUMENTS: ${userArgs}`;
@@ -322,13 +334,12 @@ export function resolveSkillPrompt(prompt, workingDir) {
322
334
  const parsed = parseSlashCommand(prompt.trim());
323
335
  if (!parsed)
324
336
  return null;
325
- const found = findSkillContent(parsed.skillName, workingDir);
337
+ // Only resolve user-invocable skills — internal-only skills (user-invocable: false)
338
+ // are skipped so they don't shadow external skills with the same name.
339
+ const found = findSkillContent(parsed.skillName, workingDir, true);
326
340
  if (!found)
327
341
  return null;
328
- const fm = parseFrontmatter(found.content);
329
- if (fm['user-invocable'] === 'false')
330
- return null;
331
- const skillPrompt = processSkillContent(found.content, parsed.userArgs, found.skillDir, workingDir);
342
+ const skillPrompt = processSkillContent(found.content, parsed.userArgs, found.skillDir, workingDir, found.source);
332
343
  return { prompt: skillPrompt, skillName: parsed.skillName, userArgs: parsed.userArgs };
333
344
  }
334
345
  //# sourceMappingURL=skill-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/skill-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/skill-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { HandlerContext } from './handler-context.js';
2
+ export declare class SkillsWatcher {
3
+ private readonly workingDir;
4
+ private readonly ctx;
5
+ private userWatcher;
6
+ private projectWatcher;
7
+ private debounceTimer;
8
+ private lastSkillsHash;
9
+ private started;
10
+ constructor(workingDir: string, ctx: HandlerContext);
11
+ start(): void;
12
+ stop(): void;
13
+ private debounce;
14
+ private handleChange;
15
+ private computeHash;
16
+ }
17
+ //# sourceMappingURL=skill-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-watcher.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/skill-watcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IARtB,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAGL,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,cAAc;IAGtC,KAAK,IAAI,IAAI;IA2Bb,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,WAAW;CAIpB"}
@@ -0,0 +1,85 @@
1
+ // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
+ // Licensed under the MIT License. See LICENSE file for details.
3
+ import { watch } from 'node:fs';
4
+ import { findSkillsDir } from '../../utils/paths.js';
5
+ import { collectAllSkills, USER_SKILLS_DIR } from './skill-handlers.js';
6
+ export class SkillsWatcher {
7
+ workingDir;
8
+ ctx;
9
+ userWatcher = null;
10
+ projectWatcher = null;
11
+ debounceTimer = null;
12
+ lastSkillsHash = '';
13
+ started = false;
14
+ constructor(workingDir, ctx) {
15
+ this.workingDir = workingDir;
16
+ this.ctx = ctx;
17
+ }
18
+ start() {
19
+ if (this.started)
20
+ return;
21
+ this.lastSkillsHash = this.computeHash();
22
+ try {
23
+ this.userWatcher = watch(USER_SKILLS_DIR, { recursive: true }, (_event, filename) => {
24
+ if (!filename || !filename.endsWith('.md'))
25
+ return;
26
+ this.debounce();
27
+ });
28
+ this.userWatcher.on('error', () => { });
29
+ }
30
+ catch { /* directory missing or recursive watch unsupported */ }
31
+ const projectSkillsDir = findSkillsDir(this.workingDir);
32
+ if (projectSkillsDir) {
33
+ try {
34
+ this.projectWatcher = watch(projectSkillsDir, { recursive: true }, (_event, filename) => {
35
+ if (!filename || !filename.endsWith('.md'))
36
+ return;
37
+ this.debounce();
38
+ });
39
+ this.projectWatcher.on('error', () => { });
40
+ }
41
+ catch { /* directory missing or recursive watch unsupported */ }
42
+ }
43
+ this.started = true;
44
+ }
45
+ stop() {
46
+ if (this.userWatcher) {
47
+ this.userWatcher.close();
48
+ this.userWatcher = null;
49
+ }
50
+ if (this.projectWatcher) {
51
+ this.projectWatcher.close();
52
+ this.projectWatcher = null;
53
+ }
54
+ if (this.debounceTimer) {
55
+ clearTimeout(this.debounceTimer);
56
+ this.debounceTimer = null;
57
+ }
58
+ this.started = false;
59
+ }
60
+ debounce() {
61
+ if (this.debounceTimer)
62
+ clearTimeout(this.debounceTimer);
63
+ this.debounceTimer = setTimeout(() => {
64
+ this.handleChange();
65
+ }, 250);
66
+ }
67
+ handleChange() {
68
+ try {
69
+ const skills = collectAllSkills(this.workingDir);
70
+ const hash = JSON.stringify(skills.map(s => `${s.name}:${s.source}:${s.description}`));
71
+ if (hash === this.lastSkillsHash)
72
+ return;
73
+ this.lastSkillsHash = hash;
74
+ this.ctx.broadcastToAll({ type: 'skillsList', data: { skills } });
75
+ }
76
+ catch {
77
+ // Ignore errors from partial writes or missing files
78
+ }
79
+ }
80
+ computeHash() {
81
+ const skills = collectAllSkills(this.workingDir);
82
+ return JSON.stringify(skills.map(s => `${s.name}:${s.source}:${s.description}`));
83
+ }
84
+ }
85
+ //# sourceMappingURL=skill-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-watcher.js","sourceRoot":"","sources":["../../../../server/services/websocket/skill-watcher.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,8 @@ declare const FileUploadMessages: readonly ["fileUploadStart", "fileUploadChunk"
30
30
  declare const PlanMessages: readonly ["planInit", "planGetState", "planListIssues", "planGetIssue", "planGetSprint", "planGetMilestone", "planCreateIssue", "planUpdateIssue", "planDeleteIssue", "planScaffold", "planPrompt", "planExecute", "planExecuteEpic", "planPause", "planStop", "planResume"];
31
31
  declare const PlanBoardMessages: readonly ["planCreateBoard", "planUpdateBoard", "planArchiveBoard", "planGetBoard", "planGetBoardState", "planReorderBoards", "planSetActiveBoard", "planGetBoardArtifacts"];
32
32
  declare const PlanSprintMessages: readonly ["planCreateSprint", "planActivateSprint", "planCompleteSprint", "planGetSprintArtifacts"];
33
- declare const DeployMessages: readonly ["deployCreate", "deployStop", "deployResume", "deployDelete", "deployList", "deployGetStatus", "deployUpdateConfig", "deploySetApiKey", "deployValidateApiKey"];
34
- declare const DeployRelayMessages: readonly ["deployHttpRequest", "deployUsageReport", "deployAiHealthUpdate"];
35
33
  declare const SkillMessages: readonly ["listSkills", "chatToBoard"];
36
- type WebSocketMessageType = typeof CoreMessages[number] | typeof TerminalMessages[number] | typeof FileExplorerMessages[number] | typeof GitMessages[number] | typeof GitBranchMessages[number] | typeof GitDiffMessages[number] | typeof GitTagMessages[number] | typeof GitWorktreeMessages[number] | typeof GitMergeMessages[number] | typeof SessionSyncMessages[number] | typeof SettingsMessages[number] | typeof QualityMessages[number] | typeof FileUploadMessages[number] | typeof PlanMessages[number] | typeof PlanBoardMessages[number] | typeof PlanSprintMessages[number] | typeof DeployMessages[number] | typeof DeployRelayMessages[number] | typeof SkillMessages[number];
34
+ type WebSocketMessageType = typeof CoreMessages[number] | typeof TerminalMessages[number] | typeof FileExplorerMessages[number] | typeof GitMessages[number] | typeof GitBranchMessages[number] | typeof GitDiffMessages[number] | typeof GitTagMessages[number] | typeof GitWorktreeMessages[number] | typeof GitMergeMessages[number] | typeof SessionSyncMessages[number] | typeof SettingsMessages[number] | typeof QualityMessages[number] | typeof FileUploadMessages[number] | typeof PlanMessages[number] | typeof PlanBoardMessages[number] | typeof PlanSprintMessages[number] | typeof SkillMessages[number];
37
35
  export interface WebSocketMessage {
38
36
  type: WebSocketMessageType;
39
37
  tabId?: string;
@@ -58,10 +56,8 @@ declare const FileUploadResponseMessages: readonly ["fileUploadAck", "fileUpload
58
56
  declare const PlanResponseMessages: readonly ["planState", "planIssueList", "planIssue", "planSprint", "planMilestone", "planNotFound", "planStateUpdated", "planIssueUpdated", "planIssueCreated", "planIssueDeleted", "planScaffolded", "planPromptStreaming", "planPromptProgress", "planPromptResponse", "planExecutionStarted", "planExecutionProgress", "planExecutionOutput", "planExecutionMetrics", "planExecutionComplete", "planExecutionError", "planError"];
59
57
  declare const PlanBoardResponseMessages: readonly ["planBoardCreated", "planBoardUpdated", "planBoardArchived", "planBoardState", "planBoardArtifacts", "planWorkspaceUpdated"];
60
58
  declare const PlanSprintResponseMessages: readonly ["planSprintCreated", "planSprintUpdated", "planSprintCompleted", "planSprintArtifacts", "planReviewProgress"];
61
- declare const DeployResponseMessages: readonly ["deployCreated", "deployStopped", "deployResumed", "deployDeleted", "deployListResult", "deployStatusResult", "deployConfigUpdated", "deployApiKeyStatus", "deployError"];
62
- declare const DeployRelayResponseMessages: readonly ["deployHttpResponse", "deployHttpResponseChunk", "deployStatus", "deployUsageReportAck", "deployAiHealthAck"];
63
59
  declare const SkillResponseMessages: readonly ["skillsList", "chatToBoardCreated"];
64
- type WebSocketResponseType = typeof CoreResponseMessages[number] | typeof TerminalResponseMessages[number] | typeof FileExplorerResponseMessages[number] | typeof GitResponseMessages[number] | typeof GitBranchResponseMessages[number] | typeof GitDiffResponseMessages[number] | typeof GitTagResponseMessages[number] | typeof GitWorktreeResponseMessages[number] | typeof GitMergeResponseMessages[number] | typeof SessionSyncResponseMessages[number] | typeof SettingsResponseMessages[number] | typeof QualityResponseMessages[number] | typeof FileUploadResponseMessages[number] | typeof PlanResponseMessages[number] | typeof PlanBoardResponseMessages[number] | typeof PlanSprintResponseMessages[number] | typeof DeployResponseMessages[number] | typeof DeployRelayResponseMessages[number] | typeof SkillResponseMessages[number];
60
+ type WebSocketResponseType = typeof CoreResponseMessages[number] | typeof TerminalResponseMessages[number] | typeof FileExplorerResponseMessages[number] | typeof GitResponseMessages[number] | typeof GitBranchResponseMessages[number] | typeof GitDiffResponseMessages[number] | typeof GitTagResponseMessages[number] | typeof GitWorktreeResponseMessages[number] | typeof GitMergeResponseMessages[number] | typeof SessionSyncResponseMessages[number] | typeof SettingsResponseMessages[number] | typeof QualityResponseMessages[number] | typeof FileUploadResponseMessages[number] | typeof PlanResponseMessages[number] | typeof PlanBoardResponseMessages[number] | typeof PlanSprintResponseMessages[number] | typeof SkillResponseMessages[number];
65
61
  export interface WebSocketResponse {
66
62
  type: WebSocketResponseType;
67
63
  tabId?: string;
@@ -332,267 +328,5 @@ export interface WorktreeMergeResult {
332
328
  /** List of conflicting files (if conflicts) */
333
329
  conflictFiles?: string[];
334
330
  }
335
- /**
336
- * Deployment status
337
- */
338
- export type DeploymentStatus = 'running' | 'stopped' | 'error' | 'starting' | 'stopping';
339
- /**
340
- * Deployment configuration
341
- */
342
- export interface DeployConfig {
343
- /** Subdomain for the deployment (e.g. "my-app" -> my-app.mstro.app) */
344
- subdomain: string;
345
- /** Local port to expose */
346
- port: number;
347
- /** Whether AI features are enabled for this deployment */
348
- aiEnabled: boolean;
349
- /** Custom domain if configured */
350
- customDomain?: string;
351
- }
352
- /**
353
- * Deployment info returned in responses
354
- */
355
- export interface DeploymentInfo {
356
- /** Unique deployment identifier */
357
- deploymentId: string;
358
- /** Deployment configuration */
359
- config: DeployConfig;
360
- /** Current deployment status */
361
- status: DeploymentStatus;
362
- /** Public URL of the deployment */
363
- url: string;
364
- /** When the deployment was created (ISO string) */
365
- createdAt: string;
366
- /** When the deployment was last updated (ISO string) */
367
- updatedAt: string;
368
- }
369
- /**
370
- * Message data for deployCreate request
371
- */
372
- export interface DeployCreateData {
373
- /** Subdomain for the deployment */
374
- subdomain: string;
375
- /** Local port to expose */
376
- port: number;
377
- /** Whether AI features are enabled */
378
- aiEnabled: boolean;
379
- }
380
- /**
381
- * Message data for deployStop request
382
- */
383
- export interface DeployStopData {
384
- /** ID of the deployment to stop */
385
- deploymentId: string;
386
- }
387
- /**
388
- * Message data for deployResume request
389
- */
390
- export interface DeployResumeData {
391
- /** ID of the deployment to resume */
392
- deploymentId: string;
393
- }
394
- /**
395
- * Message data for deployDelete request
396
- */
397
- export interface DeployDeleteData {
398
- /** ID of the deployment to delete */
399
- deploymentId: string;
400
- }
401
- /**
402
- * Message data for deployGetStatus request
403
- */
404
- export interface DeployGetStatusData {
405
- /** ID of the deployment to get status for */
406
- deploymentId: string;
407
- }
408
- /**
409
- * Message data for deployUpdateConfig request
410
- */
411
- export interface DeployUpdateConfigData {
412
- /** ID of the deployment to update */
413
- deploymentId: string;
414
- /** Partial config to update */
415
- config: Partial<DeployConfig>;
416
- }
417
- /**
418
- * Message data for deploySetApiKey request
419
- * Note: API key transits via WSS but is never stored or logged by the server relay
420
- */
421
- export interface DeploySetApiKeyData {
422
- /** The API key to set */
423
- apiKey: string;
424
- }
425
- /**
426
- * Response data for deployCreated
427
- */
428
- export interface DeployCreatedResponse {
429
- /** The created deployment */
430
- deployment: DeploymentInfo;
431
- }
432
- /**
433
- * Response data for deployStopped
434
- */
435
- export interface DeployStoppedResponse {
436
- /** ID of the stopped deployment */
437
- deploymentId: string;
438
- }
439
- /**
440
- * Response data for deployResumed
441
- */
442
- export interface DeployResumedResponse {
443
- /** ID of the resumed deployment */
444
- deploymentId: string;
445
- }
446
- /**
447
- * Response data for deployDeleted
448
- */
449
- export interface DeployDeletedResponse {
450
- /** ID of the deleted deployment */
451
- deploymentId: string;
452
- }
453
- /**
454
- * Response data for deployListResult
455
- */
456
- export interface DeployListResultResponse {
457
- /** All deployments for this orchestra */
458
- deployments: DeploymentInfo[];
459
- }
460
- /**
461
- * Response data for deployStatusResult
462
- */
463
- export interface DeployStatusResultResponse {
464
- /** The requested deployment */
465
- deployment: DeploymentInfo;
466
- }
467
- /**
468
- * Response data for deployConfigUpdated
469
- */
470
- export interface DeployConfigUpdatedResponse {
471
- /** The updated deployment */
472
- deployment: DeploymentInfo;
473
- }
474
- /**
475
- * Response data for deployApiKeyStatus
476
- * Note: Never includes the full API key — only the last four characters
477
- */
478
- export interface DeployApiKeyStatusResponse {
479
- /** Validation status of the API key */
480
- status: 'valid' | 'invalid' | 'missing' | 'rate_limited';
481
- /** Last four characters of the API key (for display) */
482
- lastFour?: string;
483
- /** Where the key was detected from */
484
- source?: 'env' | 'stored';
485
- }
486
- /**
487
- * Response data for deployError
488
- */
489
- export interface DeployErrorResponse {
490
- /** Error message */
491
- error: string;
492
- /** The deployment ID that caused the error, if applicable */
493
- deploymentId?: string;
494
- }
495
- /**
496
- * Message data for deployHttpRequest (server→cli)
497
- * Represents an inbound HTTP request to be handled by the CLI
498
- */
499
- export interface DeployHttpRequestData {
500
- /** UUID for correlating this request with its response */
501
- requestId: string;
502
- /** HTTP method (GET, POST, PUT, DELETE, etc.) */
503
- method: string;
504
- /** Request URL path with query string (e.g. "/api/hello?name=world") */
505
- url: string;
506
- /** HTTP request headers */
507
- headers: Record<string, string>;
508
- /** HTTP request body (may be undefined for GET/HEAD) */
509
- body?: string;
510
- /** ID of the deployment this request is for */
511
- deploymentId: string;
512
- /** Local port of the developer's server to proxy to */
513
- port: number;
514
- }
515
- /**
516
- * Response data for deployHttpResponse (cli→server)
517
- * The CLI's response to a proxied HTTP request
518
- */
519
- export interface DeployHttpResponseData {
520
- /** UUID matching the original deployHttpRequest */
521
- requestId: string;
522
- /** HTTP status code */
523
- status: number;
524
- /** HTTP response headers */
525
- headers: Record<string, string>;
526
- /** HTTP response body */
527
- body?: string;
528
- }
529
- /**
530
- * Response data for deployHttpResponseChunk (cli→server)
531
- * A chunk of a large HTTP response streamed over multiple WebSocket messages
532
- */
533
- export interface DeployHttpResponseChunkData {
534
- /** UUID matching the original deployHttpRequest */
535
- requestId: string;
536
- /** Zero-based index of this chunk */
537
- chunkIndex: number;
538
- /** Total number of chunks (known after reading the full response) */
539
- totalChunks: number;
540
- /** Base64-encoded chunk data */
541
- data: string;
542
- /** Whether this is the last chunk */
543
- isLast: boolean;
544
- /** HTTP status code (sent with first chunk) */
545
- status?: number;
546
- /** HTTP response headers (sent with first chunk) */
547
- headers?: Record<string, string>;
548
- }
549
- /**
550
- * Response data for deployStatus (cli→server)
551
- * Status update for a deployment
552
- */
553
- export interface DeployStatusData {
554
- /** ID of the deployment */
555
- deploymentId: string;
556
- /** Current status of the deployment */
557
- status: DeploymentStatus;
558
- }
559
- /**
560
- * Message data for deployUsageReport (cli→server)
561
- * Sent after each AI execution. Contains metadata only — never prompts or responses.
562
- */
563
- export interface DeployUsageReportData {
564
- /** ID of the deployment */
565
- deploymentId: string;
566
- /** End user who triggered the execution */
567
- endUserId: string;
568
- /** AI capability used */
569
- capability: 'headless' | 'pm-board';
570
- /** Total tokens consumed (input + output) */
571
- tokensUsed: number;
572
- /** Model used for execution */
573
- model: string;
574
- /** Execution duration in milliseconds */
575
- durationMs: number;
576
- /** Optional board ID if capability was pm-board */
577
- boardId?: string;
578
- }
579
- /**
580
- * AI health status values
581
- */
582
- export type DeployAiHealthStatus = 'healthy' | 'invalid_key' | 'no_credits' | 'rate_limited' | 'unknown_error';
583
- /**
584
- * Message data for deployAiHealthUpdate (cli→server)
585
- * Sent when the CLI detects an API key or AI service issue.
586
- */
587
- export interface DeployAiHealthUpdateData {
588
- /** ID of the deployment */
589
- deploymentId: string;
590
- /** Current AI health status */
591
- status: DeployAiHealthStatus;
592
- /** Human-readable error message */
593
- message: string;
594
- /** Whether AI features are currently disabled locally */
595
- aiDisabled: boolean;
596
- }
597
331
  export {};
598
332
  //# sourceMappingURL=types.d.ts.map