@winspan/claude-forge 8.37.0 → 8.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/agents/definition.d.ts +8 -2
  2. package/dist/agents/definition.d.ts.map +1 -1
  3. package/dist/agents/definition.js.map +1 -1
  4. package/dist/agents/methodologies/agent-builder.d.ts +21 -0
  5. package/dist/agents/methodologies/agent-builder.d.ts.map +1 -0
  6. package/dist/agents/methodologies/agent-builder.js +102 -0
  7. package/dist/agents/methodologies/agent-builder.js.map +1 -0
  8. package/dist/agents/methodologies/phases/bmad/analyze.d.ts +3 -0
  9. package/dist/agents/methodologies/phases/bmad/analyze.d.ts.map +1 -0
  10. package/dist/agents/methodologies/phases/bmad/analyze.js +18 -0
  11. package/dist/agents/methodologies/phases/bmad/analyze.js.map +1 -0
  12. package/dist/agents/methodologies/phases/bmad/design.d.ts +3 -0
  13. package/dist/agents/methodologies/phases/bmad/design.d.ts.map +1 -0
  14. package/dist/agents/methodologies/phases/bmad/design.js +17 -0
  15. package/dist/agents/methodologies/phases/bmad/design.js.map +1 -0
  16. package/dist/agents/methodologies/phases/bmad/implement.d.ts +3 -0
  17. package/dist/agents/methodologies/phases/bmad/implement.d.ts.map +1 -0
  18. package/dist/agents/methodologies/phases/bmad/implement.js +16 -0
  19. package/dist/agents/methodologies/phases/bmad/implement.js.map +1 -0
  20. package/dist/agents/methodologies/phases/bmad/index.d.ts +6 -0
  21. package/dist/agents/methodologies/phases/bmad/index.d.ts.map +1 -0
  22. package/dist/agents/methodologies/phases/bmad/index.js +6 -0
  23. package/dist/agents/methodologies/phases/bmad/index.js.map +1 -0
  24. package/dist/agents/methodologies/phases/bmad/review.d.ts +3 -0
  25. package/dist/agents/methodologies/phases/bmad/review.d.ts.map +1 -0
  26. package/dist/agents/methodologies/phases/bmad/review.js +16 -0
  27. package/dist/agents/methodologies/phases/bmad/review.js.map +1 -0
  28. package/dist/agents/methodologies/phases/bmad/test.d.ts +3 -0
  29. package/dist/agents/methodologies/phases/bmad/test.d.ts.map +1 -0
  30. package/dist/agents/methodologies/phases/bmad/test.js +20 -0
  31. package/dist/agents/methodologies/phases/bmad/test.js.map +1 -0
  32. package/dist/agents/methodologies/phases/harness/fix.d.ts +3 -0
  33. package/dist/agents/methodologies/phases/harness/fix.d.ts.map +1 -0
  34. package/dist/agents/methodologies/phases/harness/fix.js +16 -0
  35. package/dist/agents/methodologies/phases/harness/fix.js.map +1 -0
  36. package/dist/agents/methodologies/phases/harness/index.d.ts +6 -0
  37. package/dist/agents/methodologies/phases/harness/index.d.ts.map +1 -0
  38. package/dist/agents/methodologies/phases/harness/index.js +6 -0
  39. package/dist/agents/methodologies/phases/harness/index.js.map +1 -0
  40. package/dist/agents/methodologies/phases/harness/reproduce.d.ts +3 -0
  41. package/dist/agents/methodologies/phases/harness/reproduce.d.ts.map +1 -0
  42. package/dist/agents/methodologies/phases/harness/reproduce.js +19 -0
  43. package/dist/agents/methodologies/phases/harness/reproduce.js.map +1 -0
  44. package/dist/agents/methodologies/phases/harness/root-cause.d.ts +3 -0
  45. package/dist/agents/methodologies/phases/harness/root-cause.d.ts.map +1 -0
  46. package/dist/agents/methodologies/phases/harness/root-cause.js +20 -0
  47. package/dist/agents/methodologies/phases/harness/root-cause.js.map +1 -0
  48. package/dist/agents/methodologies/phases/harness/safety-net.d.ts +3 -0
  49. package/dist/agents/methodologies/phases/harness/safety-net.d.ts.map +1 -0
  50. package/dist/agents/methodologies/phases/harness/safety-net.js +16 -0
  51. package/dist/agents/methodologies/phases/harness/safety-net.js.map +1 -0
  52. package/dist/agents/methodologies/phases/harness/verify.d.ts +3 -0
  53. package/dist/agents/methodologies/phases/harness/verify.d.ts.map +1 -0
  54. package/dist/agents/methodologies/phases/harness/verify.js +21 -0
  55. package/dist/agents/methodologies/phases/harness/verify.js.map +1 -0
  56. package/dist/agents/methodologies/presets.d.ts +10 -0
  57. package/dist/agents/methodologies/presets.d.ts.map +1 -0
  58. package/dist/agents/methodologies/presets.js +79 -0
  59. package/dist/agents/methodologies/presets.js.map +1 -0
  60. package/dist/agents/methodologies/types.d.ts +43 -0
  61. package/dist/agents/methodologies/types.d.ts.map +1 -0
  62. package/dist/agents/methodologies/types.js +10 -0
  63. package/dist/agents/methodologies/types.js.map +1 -0
  64. package/dist/agents/methodologies/user-config-loader.d.ts +30 -0
  65. package/dist/agents/methodologies/user-config-loader.d.ts.map +1 -0
  66. package/dist/agents/methodologies/user-config-loader.js +159 -0
  67. package/dist/agents/methodologies/user-config-loader.js.map +1 -0
  68. package/dist/agents/official-agents.d.ts.map +1 -1
  69. package/dist/agents/official-agents.js +3 -0
  70. package/dist/agents/official-agents.js.map +1 -1
  71. package/dist/agents/registry.d.ts +17 -4
  72. package/dist/agents/registry.d.ts.map +1 -1
  73. package/dist/agents/registry.js +58 -4
  74. package/dist/agents/registry.js.map +1 -1
  75. package/dist/cli/commands/agents.js +3 -3
  76. package/dist/cli/commands/agents.js.map +1 -1
  77. package/dist/cli/commands/mcp.d.ts +39 -3
  78. package/dist/cli/commands/mcp.d.ts.map +1 -1
  79. package/dist/cli/commands/mcp.js +87 -38
  80. package/dist/cli/commands/mcp.js.map +1 -1
  81. package/dist/core/storage/rows.d.ts +4 -0
  82. package/dist/core/storage/rows.d.ts.map +1 -1
  83. package/dist/core/storage/schema.sql +9 -0
  84. package/dist/core/storage/sqlite.d.ts +25 -0
  85. package/dist/core/storage/sqlite.d.ts.map +1 -1
  86. package/dist/core/storage/sqlite.js +89 -3
  87. package/dist/core/storage/sqlite.js.map +1 -1
  88. package/dist/engine/conventions/routing.yaml +160 -4
  89. package/dist/skills/tools/skill-invoke.d.ts +15 -0
  90. package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
  91. package/dist/skills/tools/skill-invoke.js +29 -0
  92. package/dist/skills/tools/skill-invoke.js.map +1 -1
  93. package/dist/web/routes/workflows.d.ts +19 -0
  94. package/dist/web/routes/workflows.d.ts.map +1 -0
  95. package/dist/web/routes/workflows.js +86 -0
  96. package/dist/web/routes/workflows.js.map +1 -0
  97. package/dist/web/server.d.ts.map +1 -1
  98. package/dist/web/server.js +2 -0
  99. package/dist/web/server.js.map +1 -1
  100. package/dist/web/static/assets/{AIConfig-D4VglzCl.js → AIConfig-R5wZ3ZKT.js} +2 -2
  101. package/dist/web/static/assets/{AIConfig-D4VglzCl.js.map → AIConfig-R5wZ3ZKT.js.map} +1 -1
  102. package/dist/web/static/assets/{Agents-ne5lXc7V.js → Agents-Beg34V1g.js} +2 -2
  103. package/dist/web/static/assets/{Agents-ne5lXc7V.js.map → Agents-Beg34V1g.js.map} +1 -1
  104. package/dist/web/static/assets/{Dashboard-D4j0Zmek.js → Dashboard-Cy1xsj1J.js} +2 -2
  105. package/dist/web/static/assets/{Dashboard-D4j0Zmek.js.map → Dashboard-Cy1xsj1J.js.map} +1 -1
  106. package/dist/web/static/assets/{Drawer-Lo5ihVP-.js → Drawer-DcU3ln98.js} +2 -2
  107. package/dist/web/static/assets/{Drawer-Lo5ihVP-.js.map → Drawer-DcU3ln98.js.map} +1 -1
  108. package/dist/web/static/assets/{Events-DBJ1B7OW.js → Events-mFhXl4zI.js} +2 -2
  109. package/dist/web/static/assets/{Events-DBJ1B7OW.js.map → Events-mFhXl4zI.js.map} +1 -1
  110. package/dist/web/static/assets/{ExecutionTrace-Du9XADc1.js → ExecutionTrace-DG901hLR.js} +2 -2
  111. package/dist/web/static/assets/{ExecutionTrace-Du9XADc1.js.map → ExecutionTrace-DG901hLR.js.map} +1 -1
  112. package/dist/web/static/assets/{Routing-BNQ09OlH.js → Routing-B7BFLfjh.js} +2 -2
  113. package/dist/web/static/assets/{Routing-BNQ09OlH.js.map → Routing-B7BFLfjh.js.map} +1 -1
  114. package/dist/web/static/assets/{SessionDetail-BPrPyMNa.js → SessionDetail-BT0l4RrK.js} +2 -2
  115. package/dist/web/static/assets/{SessionDetail-BPrPyMNa.js.map → SessionDetail-BT0l4RrK.js.map} +1 -1
  116. package/dist/web/static/assets/{Sessions-o3EXsXz9.js → Sessions-C6J_HQ_u.js} +2 -2
  117. package/dist/web/static/assets/{Sessions-o3EXsXz9.js.map → Sessions-C6J_HQ_u.js.map} +1 -1
  118. package/dist/web/static/assets/{Skills-Czt5mkyc.js → Skills-4DQWLaTv.js} +2 -2
  119. package/dist/web/static/assets/{Skills-Czt5mkyc.js.map → Skills-4DQWLaTv.js.map} +1 -1
  120. package/dist/web/static/assets/WorkflowDetail-zhNqUkBE.js +2 -0
  121. package/dist/web/static/assets/WorkflowDetail-zhNqUkBE.js.map +1 -0
  122. package/dist/web/static/assets/Workflows-Btvi-lGw.js +2 -0
  123. package/dist/web/static/assets/Workflows-Btvi-lGw.js.map +1 -0
  124. package/dist/web/static/assets/{export-C0mlC4AT.js → export-BQQZLaHV.js} +2 -2
  125. package/dist/web/static/assets/{export-C0mlC4AT.js.map → export-BQQZLaHV.js.map} +1 -1
  126. package/dist/web/static/assets/index-Cgr9qMtq.js +3 -0
  127. package/dist/web/static/assets/index-Cgr9qMtq.js.map +1 -0
  128. package/dist/web/static/assets/index-CngWb5gC.css +1 -0
  129. package/dist/web/static/assets/{lucide-Bu44HVAM.js → lucide-53bR2rki.js} +46 -31
  130. package/dist/web/static/assets/lucide-53bR2rki.js.map +1 -0
  131. package/dist/web/static/index.html +3 -3
  132. package/package.json +1 -1
  133. package/dist/web/static/assets/index-B1J7nBu0.js +0 -3
  134. package/dist/web/static/assets/index-B1J7nBu0.js.map +0 -1
  135. package/dist/web/static/assets/index-BVqk4bSO.css +0 -1
  136. package/dist/web/static/assets/lucide-Bu44HVAM.js.map +0 -1
@@ -2,11 +2,47 @@
2
2
  * cf mcp — MCP server 注册与管理命令
3
3
  *
4
4
  * 子命令:
5
- * cf mcp status — 检查 MCP server 是否已注册到 Claude Code
6
- * cf mcp register — 向 Claude Code 注册 claude-forge MCP server
7
- * cf mcp unregister — 从 Claude Code 移除注册
5
+ * cf mcp status — 检查 MCP server 是否已注册到 Claude Code
6
+ * cf mcp register — 向 Claude Code 注册 claude-forge MCP server(user scope)
7
+ * cf mcp unregister — 从 Claude Code 移除注册
8
+ *
9
+ * 实现要点:
10
+ * - claude mcp 配置存储在 ~/.claude.json(而非 ~/.claude/settings.json)
11
+ * - HTTP transport 必须显式 `--transport http`,不能用 `--url`
12
+ * - 默认注册到 user scope (`-s user`),让所有项目都能用
13
+ * - 必须把 daemon token 作为 `Authorization: Bearer ...` header 传入,
14
+ * 否则 MCP 调用会被 401 拦截
8
15
  */
9
16
  import { Command } from 'commander';
17
+ /**
18
+ * 检查 Claude Code 是否已安装(通过检查 claude CLI 是否存在)
19
+ */
20
+ export declare function isClaudeCodeInstalled(): boolean;
21
+ /**
22
+ * 检查 claude-forge MCP server 是否已注册
23
+ *
24
+ * 通过 `claude mcp get <name>` 退出码判断:成功 = 已注册
25
+ */
26
+ export declare function isMcpRegistered(): {
27
+ registered: boolean;
28
+ url?: string;
29
+ };
30
+ /**
31
+ * 获取 daemon 的 MCP server URL
32
+ */
33
+ export declare function getMcpServerUrl(): string;
34
+ /**
35
+ * cf mcp status
36
+ */
37
+ export declare function statusCommand(): void;
38
+ /**
39
+ * cf mcp register
40
+ */
41
+ export declare function registerCommand(): void;
42
+ /**
43
+ * cf mcp unregister
44
+ */
45
+ export declare function unregisterCommand(): void;
10
46
  /**
11
47
  * 注册 cf mcp 命令组
12
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0JpC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB/C"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAO/C;AAeD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAYvE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AASD;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CA2CpC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAkDtC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAwBxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB/C"}
@@ -2,9 +2,16 @@
2
2
  * cf mcp — MCP server 注册与管理命令
3
3
  *
4
4
  * 子命令:
5
- * cf mcp status — 检查 MCP server 是否已注册到 Claude Code
6
- * cf mcp register — 向 Claude Code 注册 claude-forge MCP server
7
- * cf mcp unregister — 从 Claude Code 移除注册
5
+ * cf mcp status — 检查 MCP server 是否已注册到 Claude Code
6
+ * cf mcp register — 向 Claude Code 注册 claude-forge MCP server(user scope)
7
+ * cf mcp unregister — 从 Claude Code 移除注册
8
+ *
9
+ * 实现要点:
10
+ * - claude mcp 配置存储在 ~/.claude.json(而非 ~/.claude/settings.json)
11
+ * - HTTP transport 必须显式 `--transport http`,不能用 `--url`
12
+ * - 默认注册到 user scope (`-s user`),让所有项目都能用
13
+ * - 必须把 daemon token 作为 `Authorization: Bearer ...` header 传入,
14
+ * 否则 MCP 调用会被 401 拦截
8
15
  */
9
16
  import { execSync } from 'node:child_process';
10
17
  import { existsSync, readFileSync } from 'node:fs';
@@ -13,12 +20,14 @@ import { join } from 'node:path';
13
20
  import chalk from 'chalk';
14
21
  import { ConfigManager } from '../../core/config.js';
15
22
  import { DEFAULTS } from '../../core/constants.js';
23
+ const SERVER_NAME = 'claude-forge';
24
+ const SCOPE = 'user'; // user scope: 全局可用
16
25
  /**
17
26
  * 检查 Claude Code 是否已安装(通过检查 claude CLI 是否存在)
18
27
  */
19
- function isClaudeCodeInstalled() {
28
+ export function isClaudeCodeInstalled() {
20
29
  try {
21
- execSync('which claude', { stdio: 'ignore' });
30
+ execSync('command -v claude', { stdio: 'ignore' });
22
31
  return true;
23
32
  }
24
33
  catch {
@@ -26,22 +35,33 @@ function isClaudeCodeInstalled() {
26
35
  }
27
36
  }
28
37
  /**
29
- * 检查 claude-forge MCP server 是否已注册
30
- * (通过读取 ~/.claude/settings.json 的 mcpServers 配置)
38
+ * 读取 daemon token(如果存在)
31
39
  */
32
- function isMcpRegistered() {
33
- const settingsPath = join(homedir(), '.claude', 'settings.json');
34
- if (!existsSync(settingsPath)) {
35
- return { registered: false };
40
+ function readDaemonToken() {
41
+ const tokenPath = join(homedir(), '.claude-forge', 'daemon.token');
42
+ if (!existsSync(tokenPath))
43
+ return null;
44
+ try {
45
+ return readFileSync(tokenPath, 'utf-8').trim() || null;
46
+ }
47
+ catch {
48
+ return null;
36
49
  }
50
+ }
51
+ /**
52
+ * 检查 claude-forge MCP server 是否已注册
53
+ *
54
+ * 通过 `claude mcp get <name>` 退出码判断:成功 = 已注册
55
+ */
56
+ export function isMcpRegistered() {
37
57
  try {
38
- const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
39
- const mcpServers = settings.mcpServers ?? {};
40
- const forgeServer = mcpServers['claude-forge'];
41
- if (forgeServer && forgeServer.url) {
42
- return { registered: true, url: forgeServer.url };
43
- }
44
- return { registered: false };
58
+ const output = execSync(`claude mcp get ${SERVER_NAME}`, {
59
+ stdio: ['ignore', 'pipe', 'ignore'],
60
+ encoding: 'utf-8',
61
+ });
62
+ // 从输出中尝试提取 URL(容错,匹配失败也认为已注册)
63
+ const urlMatch = output.match(/URL:\s*(\S+)/i);
64
+ return { registered: true, url: urlMatch?.[1] };
45
65
  }
46
66
  catch {
47
67
  return { registered: false };
@@ -50,43 +70,57 @@ function isMcpRegistered() {
50
70
  /**
51
71
  * 获取 daemon 的 MCP server URL
52
72
  */
53
- function getMcpServerUrl() {
73
+ export function getMcpServerUrl() {
54
74
  const config = new ConfigManager().get();
55
75
  const port = config.web.port ?? DEFAULTS.WEB_PORT;
56
76
  return `http://127.0.0.1:${port}/mcp`;
57
77
  }
78
+ /**
79
+ * 是否处于 daemon 运行中(通过 pid 文件存在性判断,松散探测)
80
+ */
81
+ function isDaemonRunning() {
82
+ return existsSync(join(homedir(), '.claude-forge', 'daemon.pid'));
83
+ }
58
84
  /**
59
85
  * cf mcp status
60
86
  */
61
- function statusCommand() {
87
+ export function statusCommand() {
62
88
  console.log(chalk.bold('🔍 MCP Server Status\n'));
63
89
  // 1. 检查 Claude Code 是否安装
64
90
  const claudeInstalled = isClaudeCodeInstalled();
65
91
  console.log(claudeInstalled
66
92
  ? chalk.green('✓ Claude Code CLI installed')
67
93
  : chalk.red('✗ Claude Code CLI not found (install from claude.ai/code)'));
94
+ if (!claudeInstalled) {
95
+ console.log(chalk.dim('\n Cannot check registration without Claude Code CLI.'));
96
+ return;
97
+ }
68
98
  // 2. 检查 MCP server 是否注册
69
99
  const { registered, url } = isMcpRegistered();
70
100
  if (registered) {
71
- console.log(chalk.green(`✓ MCP server registered: ${url}`));
101
+ console.log(chalk.green(`✓ MCP server registered${url ? `: ${url}` : ''}`));
72
102
  }
73
103
  else {
74
104
  console.log(chalk.yellow('⚠ MCP server not registered'));
75
105
  console.log(chalk.dim(' Run `cf mcp register` to register'));
76
106
  }
77
107
  // 3. 检查 daemon 是否运行
78
- const daemonRunning = existsSync(join(homedir(), '.claude-forge', 'daemon.pid'));
79
- console.log(daemonRunning
108
+ console.log(isDaemonRunning()
80
109
  ? chalk.green('✓ Daemon running')
81
110
  : chalk.yellow('⚠ Daemon not running (start with `cf daemon start`)'));
82
- // 4. 显示预期的 MCP URL
83
- const expectedUrl = getMcpServerUrl();
84
- console.log(chalk.dim(`\nExpected MCP URL: ${expectedUrl}`));
111
+ // 4. 检查 daemon token
112
+ const token = readDaemonToken();
113
+ console.log(token
114
+ ? chalk.green('✓ Daemon token present')
115
+ : chalk.yellow('⚠ Daemon token missing (start daemon at least once)'));
116
+ // 5. 显示预期的 MCP URL
117
+ console.log(chalk.dim(`\nExpected MCP URL: ${getMcpServerUrl()}`));
118
+ console.log(chalk.dim(`Scope: ${SCOPE} (available in all projects)`));
85
119
  }
86
120
  /**
87
121
  * cf mcp register
88
122
  */
89
- function registerCommand() {
123
+ export function registerCommand() {
90
124
  console.log(chalk.bold('📡 Registering MCP Server\n'));
91
125
  // 1. 检查 Claude Code CLI
92
126
  if (!isClaudeCodeInstalled()) {
@@ -97,29 +131,42 @@ function registerCommand() {
97
131
  // 2. 检查是否已注册
98
132
  const { registered, url: existingUrl } = isMcpRegistered();
99
133
  if (registered) {
100
- console.log(chalk.yellow(`⚠ MCP server already registered: ${existingUrl}`));
134
+ console.log(chalk.yellow(`⚠ MCP server already registered${existingUrl ? `: ${existingUrl}` : ''}`));
101
135
  console.log(chalk.dim(' Run `cf mcp unregister` first if you want to re-register'));
102
136
  return;
103
137
  }
104
- // 3. 获取 MCP URL
138
+ // 3. 读取 daemon token(必需,否则 MCP 调用会 401)
139
+ const token = readDaemonToken();
140
+ if (!token) {
141
+ console.error(chalk.red('✗ Daemon token not found'));
142
+ console.error(chalk.dim(' Start daemon at least once: cf daemon start'));
143
+ console.error(chalk.dim(' This generates ~/.claude-forge/daemon.token'));
144
+ process.exit(1);
145
+ }
146
+ // 4. 获取 MCP URL
105
147
  const mcpUrl = getMcpServerUrl();
106
- // 4. 执行注册命令
107
- console.log(chalk.dim(`Registering: ${mcpUrl}\n`));
148
+ // 5. 执行注册命令
149
+ // claude mcp add --transport http -s user claude-forge <url> -H "Authorization: Bearer <token>"
150
+ console.log(chalk.dim(`Registering: ${mcpUrl}`));
151
+ console.log(chalk.dim(`Scope: ${SCOPE} (all projects)`));
152
+ console.log(chalk.dim(`Token: <hidden>\n`));
108
153
  try {
109
- execSync(`claude mcp add claude-forge --url "${mcpUrl}"`, { stdio: 'inherit' });
154
+ execSync(`claude mcp add --transport http -s ${SCOPE} ${SERVER_NAME} "${mcpUrl}" -H "Authorization: Bearer ${token}"`, { stdio: 'inherit' });
110
155
  console.log(chalk.green('\n✓ MCP server registered successfully'));
111
- console.log(chalk.dim(' Restart Claude Code to apply changes'));
156
+ console.log(chalk.dim(' Restart Claude Code (or open a new session) to apply'));
112
157
  }
113
158
  catch (err) {
114
159
  console.error(chalk.red('\n✗ Registration failed'));
115
- console.error(err);
160
+ if (err instanceof Error) {
161
+ console.error(chalk.dim(err.message));
162
+ }
116
163
  process.exit(1);
117
164
  }
118
165
  }
119
166
  /**
120
167
  * cf mcp unregister
121
168
  */
122
- function unregisterCommand() {
169
+ export function unregisterCommand() {
123
170
  console.log(chalk.bold('🗑️ Unregistering MCP Server\n'));
124
171
  if (!isClaudeCodeInstalled()) {
125
172
  console.error(chalk.red('✗ Claude Code CLI not found'));
@@ -131,12 +178,14 @@ function unregisterCommand() {
131
178
  return;
132
179
  }
133
180
  try {
134
- execSync('claude mcp remove claude-forge', { stdio: 'inherit' });
181
+ execSync(`claude mcp remove -s ${SCOPE} ${SERVER_NAME}`, { stdio: 'inherit' });
135
182
  console.log(chalk.green('\n✓ MCP server unregistered'));
136
183
  }
137
184
  catch (err) {
138
185
  console.error(chalk.red('\n✗ Unregister failed'));
139
- console.error(err);
186
+ if (err instanceof Error) {
187
+ console.error(chalk.dim(err.message));
188
+ }
140
189
  process.exit(1);
141
190
  }
142
191
  }
@@ -153,7 +202,7 @@ export function register(program) {
153
202
  .action(statusCommand);
154
203
  mcp
155
204
  .command('register')
156
- .description('Register claude-forge MCP server with Claude Code')
205
+ .description('Register claude-forge MCP server with Claude Code (user scope)')
157
206
  .action(registerCommand);
158
207
  mcp
159
208
  .command('unregister')
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -122,6 +122,10 @@ export interface SkillInvocationRow {
122
122
  skill_id: string;
123
123
  invocation_type: 'static' | 'dynamic' | 'slash_command';
124
124
  reason: string | null;
125
+ workflow: string | null;
126
+ phase: string | null;
127
+ feature_slug: string | null;
128
+ artifact_path: string | null;
125
129
  depth: number;
126
130
  success: number;
127
131
  error: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/core/storage/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../../src/core/storage/rows.ts"],"names":[],"mappings":"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"}
@@ -254,6 +254,13 @@ CREATE TABLE IF NOT EXISTS skill_invocations (
254
254
  skill_id TEXT NOT NULL, -- 被调用的 Skill ID
255
255
  invocation_type TEXT NOT NULL, -- 'static' / 'dynamic' / 'slash_command'
256
256
  reason TEXT, -- Agent 提供的调用理由
257
+
258
+ -- 工作流追踪字段:从 reason 解析的 <workflow>/<phase>[:feature-slug] 元信息
259
+ workflow TEXT, -- 'bmad' / 'harness' / NULL(普通调用)
260
+ phase TEXT, -- 'analyze' / 'design' / 'safety-net' 等
261
+ feature_slug TEXT, -- 可选,用于关联同一个 feature 的多次调用
262
+ artifact_path TEXT, -- 可选,调用产出的文档路径
263
+
257
264
  depth INTEGER DEFAULT 0, -- 调用嵌套深度
258
265
  success INTEGER DEFAULT 1, -- 1 成功 / 0 失败
259
266
  error TEXT, -- 错误信息(如 skill 不存在)
@@ -265,3 +272,5 @@ CREATE INDEX IF NOT EXISTS idx_skill_invocations_route_request ON skill_invocati
265
272
  CREATE INDEX IF NOT EXISTS idx_skill_invocations_session ON skill_invocations(session_id);
266
273
  CREATE INDEX IF NOT EXISTS idx_skill_invocations_skill ON skill_invocations(skill_id);
267
274
  CREATE INDEX IF NOT EXISTS idx_skill_invocations_timestamp ON skill_invocations(timestamp DESC);
275
+ -- 工作流字段索引(workflow / feature_slug)由 runMigrations 创建,以便旧库升级时
276
+ -- 先通过 addColumnIfMissing 补列再建索引,避免 "no such column" 错误。
@@ -272,5 +272,30 @@ export declare class SQLiteStorage extends EventEmitter {
272
272
  skill_id?: string;
273
273
  limit?: number;
274
274
  }): SkillInvocationRow[];
275
+ /**
276
+ * 按 route_request_id 聚合工作流进度。
277
+ *
278
+ * 用途:Web UI 展示「某次路由 / 某个 session 走完了哪些 phase」。仅聚合
279
+ * `workflow IS NOT NULL` 的调用(工作流型 reason),普通调用不会被纳入。
280
+ *
281
+ * 返回字段:
282
+ * - `phases_completed` 已按 timestamp 升序排序,并去重;同 phase 多次调用只算一次。
283
+ * - `feature_slug` 取该 route 内首个非空的 slug;不同 slug 混用时以最早出现的为准。
284
+ * - `total_invocations` / `success_count` 仅统计有 workflow 的行。
285
+ */
286
+ queryWorkflowProgress(filter?: {
287
+ session_id?: string;
288
+ workflow?: string;
289
+ limit?: number;
290
+ }): Array<{
291
+ route_request_id: string;
292
+ workflow: string;
293
+ phases_completed: string[];
294
+ feature_slug: string | null;
295
+ total_invocations: number;
296
+ success_count: number;
297
+ first_at: number;
298
+ last_at: number;
299
+ }>;
275
300
  }
276
301
  //# sourceMappingURL=sqlite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,20 @@ export class SQLiteStorage extends EventEmitter {
84
84
  // routing_events: skill_confidence / skill_source (Skill 监控字段)
85
85
  this.addColumnIfMissing('routing_events', 'skill_confidence', 'REAL');
86
86
  this.addColumnIfMissing('routing_events', 'skill_source', 'TEXT');
87
+ // skill_invocations: 工作流追踪字段(v8.38+)
88
+ // 解析 reason 字段的 "<workflow>/<phase>[:feature-slug]" 格式后落库到独立列。
89
+ this.addColumnIfMissing('skill_invocations', 'workflow', 'TEXT');
90
+ this.addColumnIfMissing('skill_invocations', 'phase', 'TEXT');
91
+ this.addColumnIfMissing('skill_invocations', 'feature_slug', 'TEXT');
92
+ this.addColumnIfMissing('skill_invocations', 'artifact_path', 'TEXT');
93
+ // skill_invocations: 工作流字段索引(CREATE INDEX IF NOT EXISTS 天然幂等)
94
+ try {
95
+ this.db.exec(`CREATE INDEX IF NOT EXISTS idx_skill_invocations_workflow ON skill_invocations(workflow, phase);
96
+ CREATE INDEX IF NOT EXISTS idx_skill_invocations_feature ON skill_invocations(feature_slug);`);
97
+ }
98
+ catch (err) {
99
+ logger.warn(`[SQLiteStorage] migration: create skill_invocations workflow indexes failed: ${err}`);
100
+ }
87
101
  // sessions 聚合表性能索引(幂等):start_time 用于 querySessions 的 ORDER BY
88
102
  try {
89
103
  this.db.exec('CREATE INDEX IF NOT EXISTS idx_sessions_start_time ON sessions(start_time DESC)');
@@ -698,9 +712,11 @@ export class SQLiteStorage extends EventEmitter {
698
712
  // "外层路由 → Agent → 内层 Skill 调用"的证据链。
699
713
  writeSkillInvocation(row) {
700
714
  const sql = `INSERT INTO skill_invocations
701
- (id, route_request_id, session_id, agent_id, skill_id, invocation_type, reason, depth, success, error, timestamp)
702
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
703
- this.db.prepare(sql).run(row.id, row.route_request_id, row.session_id, row.agent_id, row.skill_id, row.invocation_type, row.reason, row.depth, row.success, row.error, row.timestamp);
715
+ (id, route_request_id, session_id, agent_id, skill_id, invocation_type,
716
+ reason, workflow, phase, feature_slug, artifact_path,
717
+ depth, success, error, timestamp)
718
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
719
+ this.db.prepare(sql).run(row.id, row.route_request_id, row.session_id, row.agent_id, row.skill_id, row.invocation_type, row.reason, row.workflow, row.phase, row.feature_slug, row.artifact_path, row.depth, row.success, row.error, row.timestamp);
704
720
  }
705
721
  querySkillInvocations(filter = {}) {
706
722
  const conditions = [];
@@ -722,5 +738,75 @@ export class SQLiteStorage extends EventEmitter {
722
738
  const sql = `SELECT * FROM skill_invocations ${where} ORDER BY timestamp DESC LIMIT ${limit}`;
723
739
  return this.db.prepare(sql).all(...params);
724
740
  }
741
+ /**
742
+ * 按 route_request_id 聚合工作流进度。
743
+ *
744
+ * 用途:Web UI 展示「某次路由 / 某个 session 走完了哪些 phase」。仅聚合
745
+ * `workflow IS NOT NULL` 的调用(工作流型 reason),普通调用不会被纳入。
746
+ *
747
+ * 返回字段:
748
+ * - `phases_completed` 已按 timestamp 升序排序,并去重;同 phase 多次调用只算一次。
749
+ * - `feature_slug` 取该 route 内首个非空的 slug;不同 slug 混用时以最早出现的为准。
750
+ * - `total_invocations` / `success_count` 仅统计有 workflow 的行。
751
+ */
752
+ queryWorkflowProgress(filter = {}) {
753
+ const conditions = ['workflow IS NOT NULL', 'route_request_id IS NOT NULL'];
754
+ const params = [];
755
+ if (filter.session_id) {
756
+ conditions.push('session_id = ?');
757
+ params.push(filter.session_id);
758
+ }
759
+ if (filter.workflow) {
760
+ conditions.push('workflow = ?');
761
+ params.push(filter.workflow);
762
+ }
763
+ const where = `WHERE ${conditions.join(' AND ')}`;
764
+ const limit = filter.limit ?? 100;
765
+ // 用 GROUP_CONCAT 收集 phase 序列(保留时间顺序),再在 JS 层去重。
766
+ // SQLite 的 GROUP_CONCAT 不保证子查询排序稳定,因此用一个 ORDER BY timestamp
767
+ // 的子查询固定顺序。
768
+ const sql = `
769
+ SELECT
770
+ route_request_id,
771
+ workflow,
772
+ GROUP_CONCAT(phase, '||') AS phases_raw,
773
+ MIN(feature_slug) AS feature_slug,
774
+ COUNT(*) AS total_invocations,
775
+ SUM(success) AS success_count,
776
+ MIN(timestamp) AS first_at,
777
+ MAX(timestamp) AS last_at
778
+ FROM (
779
+ SELECT * FROM skill_invocations
780
+ ${where}
781
+ ORDER BY timestamp ASC
782
+ )
783
+ GROUP BY route_request_id, workflow
784
+ ORDER BY last_at DESC
785
+ LIMIT ${limit}
786
+ `;
787
+ const rows = this.db.prepare(sql).all(...params);
788
+ return rows.map(r => {
789
+ const phases = r.phases_raw ? r.phases_raw.split('||').filter(Boolean) : [];
790
+ // 去重,保留首次出现的顺序
791
+ const seen = new Set();
792
+ const phases_completed = [];
793
+ for (const p of phases) {
794
+ if (!seen.has(p)) {
795
+ seen.add(p);
796
+ phases_completed.push(p);
797
+ }
798
+ }
799
+ return {
800
+ route_request_id: r.route_request_id,
801
+ workflow: r.workflow,
802
+ phases_completed,
803
+ feature_slug: r.feature_slug,
804
+ total_invocations: r.total_invocations,
805
+ success_count: r.success_count ?? 0,
806
+ first_at: r.first_at,
807
+ last_at: r.last_at,
808
+ };
809
+ });
810
+ }
725
811
  }
726
812
  //# sourceMappingURL=sqlite.js.map