openspec-mcp 0.3.1 → 0.3.2

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 (103) hide show
  1. package/README.md +22 -6
  2. package/README.zh.md +36 -1
  3. package/dist/api/routes/changes.d.ts.map +1 -1
  4. package/dist/api/routes/changes.js +42 -0
  5. package/dist/api/routes/changes.js.map +1 -1
  6. package/dist/api/routes/context.d.ts +8 -0
  7. package/dist/api/routes/context.d.ts.map +1 -0
  8. package/dist/api/routes/context.js +45 -0
  9. package/dist/api/routes/context.js.map +1 -0
  10. package/dist/api/routes/kanban.d.ts +8 -0
  11. package/dist/api/routes/kanban.d.ts.map +1 -0
  12. package/dist/api/routes/kanban.js +181 -0
  13. package/dist/api/routes/kanban.js.map +1 -0
  14. package/dist/api/routes/qa.d.ts +8 -0
  15. package/dist/api/routes/qa.d.ts.map +1 -0
  16. package/dist/api/routes/qa.js +98 -0
  17. package/dist/api/routes/qa.js.map +1 -0
  18. package/dist/api/server.d.ts +1 -0
  19. package/dist/api/server.d.ts.map +1 -1
  20. package/dist/api/server.js +7 -0
  21. package/dist/api/server.js.map +1 -1
  22. package/dist/core/approval-manager.d.ts.map +1 -1
  23. package/dist/core/approval-manager.js +9 -1
  24. package/dist/core/approval-manager.js.map +1 -1
  25. package/dist/core/approval-manager.test.js +14 -0
  26. package/dist/core/approval-manager.test.js.map +1 -1
  27. package/dist/core/context-analyzer.d.ts +116 -0
  28. package/dist/core/context-analyzer.d.ts.map +1 -0
  29. package/dist/core/context-analyzer.js +495 -0
  30. package/dist/core/context-analyzer.js.map +1 -0
  31. package/dist/core/prompt-manager.d.ts +50 -0
  32. package/dist/core/prompt-manager.d.ts.map +1 -0
  33. package/dist/core/prompt-manager.js +186 -0
  34. package/dist/core/prompt-manager.js.map +1 -0
  35. package/dist/core/qa-runner.d.ts +134 -0
  36. package/dist/core/qa-runner.d.ts.map +1 -0
  37. package/dist/core/qa-runner.js +299 -0
  38. package/dist/core/qa-runner.js.map +1 -0
  39. package/dist/core/spec-critic.d.ts +118 -0
  40. package/dist/core/spec-critic.d.ts.map +1 -0
  41. package/dist/core/spec-critic.js +478 -0
  42. package/dist/core/spec-critic.js.map +1 -0
  43. package/dist/core/spec-critic.test.d.ts +5 -0
  44. package/dist/core/spec-critic.test.d.ts.map +1 -0
  45. package/dist/core/spec-critic.test.js +152 -0
  46. package/dist/core/spec-critic.test.js.map +1 -0
  47. package/dist/index.js +33 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/server/tools/ai-context.d.ts +13 -0
  50. package/dist/server/tools/ai-context.d.ts.map +1 -0
  51. package/dist/server/tools/ai-context.js +212 -0
  52. package/dist/server/tools/ai-context.js.map +1 -0
  53. package/dist/server/tools/approval.d.ts.map +1 -1
  54. package/dist/server/tools/approval.js +33 -18
  55. package/dist/server/tools/approval.js.map +1 -1
  56. package/dist/server/tools/archive.d.ts.map +1 -1
  57. package/dist/server/tools/archive.js +9 -6
  58. package/dist/server/tools/archive.js.map +1 -1
  59. package/dist/server/tools/context.d.ts +12 -0
  60. package/dist/server/tools/context.d.ts.map +1 -0
  61. package/dist/server/tools/context.js +145 -0
  62. package/dist/server/tools/context.js.map +1 -0
  63. package/dist/server/tools/critique.d.ts +12 -0
  64. package/dist/server/tools/critique.d.ts.map +1 -0
  65. package/dist/server/tools/critique.js +194 -0
  66. package/dist/server/tools/critique.js.map +1 -0
  67. package/dist/server/tools/cross-service.d.ts.map +1 -1
  68. package/dist/server/tools/cross-service.js +11 -5
  69. package/dist/server/tools/cross-service.js.map +1 -1
  70. package/dist/server/tools/generator.d.ts.map +1 -1
  71. package/dist/server/tools/generator.js +27 -18
  72. package/dist/server/tools/generator.js.map +1 -1
  73. package/dist/server/tools/guides.d.ts.map +1 -1
  74. package/dist/server/tools/guides.js +8 -2
  75. package/dist/server/tools/guides.js.map +1 -1
  76. package/dist/server/tools/hooks.d.ts.map +1 -1
  77. package/dist/server/tools/hooks.js +7 -4
  78. package/dist/server/tools/hooks.js.map +1 -1
  79. package/dist/server/tools/management.d.ts.map +1 -1
  80. package/dist/server/tools/management.js +26 -14
  81. package/dist/server/tools/management.js.map +1 -1
  82. package/dist/server/tools/qa.d.ts +12 -0
  83. package/dist/server/tools/qa.d.ts.map +1 -0
  84. package/dist/server/tools/qa.js +248 -0
  85. package/dist/server/tools/qa.js.map +1 -0
  86. package/dist/server/tools/reviews.d.ts.map +1 -1
  87. package/dist/server/tools/reviews.js +55 -37
  88. package/dist/server/tools/reviews.js.map +1 -1
  89. package/dist/server/tools/tasks.d.ts.map +1 -1
  90. package/dist/server/tools/tasks.js +29 -17
  91. package/dist/server/tools/tasks.js.map +1 -1
  92. package/dist/server/tools/templates.d.ts.map +1 -1
  93. package/dist/server/tools/templates.js +26 -17
  94. package/dist/server/tools/templates.js.map +1 -1
  95. package/dist/server/tools/validation.d.ts.map +1 -1
  96. package/dist/server/tools/validation.js +31 -22
  97. package/dist/server/tools/validation.js.map +1 -1
  98. package/package.json +1 -1
  99. package/web/dist/assets/index-Bf5mzJti.css +1 -0
  100. package/web/dist/assets/index-W9UMaaAn.js +244 -0
  101. package/web/dist/index.html +2 -2
  102. package/web/dist/assets/index-CCYunmpc.css +0 -1
  103. package/web/dist/assets/index-wgGN6sVJ.js +0 -244
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Context Tools - MCP 工具注册
3
+ *
4
+ * 提供项目上下文分析相关的 MCP 工具
5
+ */
6
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ import { ContextAnalyzer } from '../../core/context-analyzer.js';
8
+ /**
9
+ * 注册 Context 相关工具
10
+ */
11
+ export declare function registerContextTools(server: McpServer, analyzer: ContextAnalyzer): void;
12
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAgC,MAAM,gCAAgC,CAAC;AAE/F;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CA4EvF"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Context Tools - MCP 工具注册
3
+ *
4
+ * 提供项目上下文分析相关的 MCP 工具
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * 注册 Context 相关工具
9
+ */
10
+ export function registerContextTools(server, analyzer) {
11
+ // 分析项目上下文
12
+ server.registerTool('openspec_analyze_context', {
13
+ description: '分析项目上下文(技术栈、目录结构、代码模式)',
14
+ inputSchema: {
15
+ refresh: z.boolean().optional().describe('是否强制刷新缓存,默认 false'),
16
+ },
17
+ }, async ({ refresh = false }) => {
18
+ try {
19
+ const context = refresh
20
+ ? await analyzer.refreshContext()
21
+ : await analyzer.analyze();
22
+ const output = formatContext(context);
23
+ return {
24
+ content: [{ type: 'text', text: output }],
25
+ };
26
+ }
27
+ catch (error) {
28
+ return {
29
+ content: [{
30
+ type: 'text',
31
+ text: `分析失败: ${error instanceof Error ? error.message : 'Unknown error'}`,
32
+ }],
33
+ };
34
+ }
35
+ });
36
+ // 获取上下文摘要
37
+ server.registerTool('openspec_get_context_summary', {
38
+ description: '获取项目上下文摘要(技术栈和统计)',
39
+ inputSchema: {},
40
+ }, async () => {
41
+ try {
42
+ const cached = await analyzer.getCachedContext();
43
+ if (!cached) {
44
+ return {
45
+ content: [{ type: 'text', text: '没有缓存的上下文,请先运行 openspec_analyze_context' }],
46
+ };
47
+ }
48
+ const lines = [
49
+ `# 项目: ${cached.projectName}`,
50
+ '',
51
+ `**技术栈**: ${cached.stack.frameworks.join(', ') || '未检测到'}`,
52
+ `**语言**: ${cached.stack.languages.slice(0, 3).map((l) => `${l.name} (${l.percentage}%)`).join(', ')}`,
53
+ `**包管理**: ${cached.stack.packageManager}`,
54
+ `**测试框架**: ${cached.stack.testFramework || '未检测到'}`,
55
+ '',
56
+ `**文件数**: ${cached.stats.totalFiles}`,
57
+ `**预估行数**: ${cached.stats.totalLines.toLocaleString()}`,
58
+ '',
59
+ `*分析时间: ${cached.analyzedAt}*`,
60
+ ];
61
+ return {
62
+ content: [{ type: 'text', text: lines.join('\n') }],
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ content: [{
68
+ type: 'text',
69
+ text: `获取摘要失败: ${error instanceof Error ? error.message : 'Unknown error'}`,
70
+ }],
71
+ };
72
+ }
73
+ });
74
+ }
75
+ /**
76
+ * 格式化上下文输出
77
+ */
78
+ function formatContext(ctx) {
79
+ const lines = [];
80
+ // 标题
81
+ lines.push(`# 📊 项目上下文: ${ctx.projectName}`);
82
+ lines.push('');
83
+ lines.push(`> 分析时间: ${ctx.analyzedAt}`);
84
+ lines.push(`> 项目路径: ${ctx.projectRoot}`);
85
+ lines.push('');
86
+ // 技术栈
87
+ lines.push('## 🛠️ 技术栈');
88
+ lines.push('');
89
+ // 语言分布
90
+ lines.push('### 语言分布');
91
+ lines.push('');
92
+ lines.push('| 语言 | 占比 | 文件数 |');
93
+ lines.push('|------|------|--------|');
94
+ for (const lang of ctx.stack.languages.slice(0, 6)) {
95
+ const bar = '█'.repeat(Math.round(lang.percentage / 10)) + '░'.repeat(10 - Math.round(lang.percentage / 10));
96
+ lines.push(`| ${lang.name} | ${bar} ${lang.percentage}% | ${lang.fileCount} |`);
97
+ }
98
+ lines.push('');
99
+ // 框架和工具
100
+ if (ctx.stack.frameworks.length > 0) {
101
+ lines.push(`**框架**: ${ctx.stack.frameworks.join(', ')}`);
102
+ }
103
+ if (ctx.stack.buildTools.length > 0) {
104
+ lines.push(`**构建工具**: ${ctx.stack.buildTools.join(', ')}`);
105
+ }
106
+ lines.push(`**包管理器**: ${ctx.stack.packageManager}`);
107
+ if (ctx.stack.testFramework) {
108
+ lines.push(`**测试框架**: ${ctx.stack.testFramework}`);
109
+ }
110
+ lines.push('');
111
+ // 目录结构
112
+ lines.push('## 📁 目录结构');
113
+ lines.push('');
114
+ if (ctx.structure.mainDirectories.length > 0) {
115
+ lines.push('| 目录 | 用途 | 文件数 |');
116
+ lines.push('|------|------|--------|');
117
+ for (const dir of ctx.structure.mainDirectories.slice(0, 8)) {
118
+ lines.push(`| \`${dir.name}/\` | ${dir.purpose} | ${dir.fileCount} |`);
119
+ }
120
+ lines.push('');
121
+ }
122
+ if (ctx.structure.entryPoints.length > 0) {
123
+ lines.push(`**入口点**: ${ctx.structure.entryPoints.map((e) => `\`${e}\``).join(', ')}`);
124
+ lines.push('');
125
+ }
126
+ // 代码模式
127
+ lines.push('## 🧩 代码模式');
128
+ lines.push('');
129
+ lines.push(`**架构**: ${ctx.patterns.architecture}`);
130
+ if (ctx.patterns.codeStyle.length > 0) {
131
+ lines.push(`**代码风格**: ${ctx.patterns.codeStyle.join(', ')}`);
132
+ }
133
+ if (ctx.patterns.conventions.length > 0) {
134
+ lines.push(`**项目约定**: ${ctx.patterns.conventions.join(', ')}`);
135
+ }
136
+ lines.push('');
137
+ // 统计
138
+ lines.push('## 📈 统计');
139
+ lines.push('');
140
+ lines.push(`- **总文件数**: ${ctx.stats.totalFiles.toLocaleString()}`);
141
+ lines.push(`- **预估总行数**: ${ctx.stats.totalLines.toLocaleString()}`);
142
+ lines.push('');
143
+ return lines.join('\n');
144
+ }
145
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/tools/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,QAAyB;IAC/E,UAAU;IACV,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;SAC9D;KACF,EACD,KAAK,EAAE,EAAE,OAAO,GAAG,KAAK,EAAE,EAA+D,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO;gBACrB,CAAC,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE;gBACjC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE7B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAEtC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC1E,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,UAAU;IACV,MAAM,CAAC,YAAY,CACjB,8BAA8B,EAC9B;QACE,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAiE,EAAE;QACtE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;iBAC5E,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG;gBACZ,SAAS,MAAM,CAAC,WAAW,EAAE;gBAC7B,EAAE;gBACF,YAAY,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;gBAC1D,WAAW,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACnH,YAAY,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;gBACzC,aAAa,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,EAAE;gBACnD,EAAE;gBACF,YAAY,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;gBACrC,aAAa,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE;gBACvD,EAAE;gBACF,UAAU,MAAM,CAAC,UAAU,GAAG;aAC/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACpD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC5E,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAmB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK;IACL,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM;IACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO;IACP,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7G,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,QAAQ;IACR,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO;IACP,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;IACP,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK;IACL,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Critique Tools - MCP 工具注册
3
+ *
4
+ * 提供规格自审相关的 MCP 工具
5
+ */
6
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ import { SpecCritic } from '../../core/spec-critic.js';
8
+ /**
9
+ * 注册 Critique 相关工具
10
+ */
11
+ export declare function registerCritiqueTools(server: McpServer, critic: SpecCritic): void;
12
+ //# sourceMappingURL=critique.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critique.d.ts","sourceRoot":"","sources":["../../../src/server/tools/critique.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAA4B,MAAM,2BAA2B,CAAC;AAEjF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAsHjF"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Critique Tools - MCP 工具注册
3
+ *
4
+ * 提供规格自审相关的 MCP 工具
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * 注册 Critique 相关工具
9
+ */
10
+ export function registerCritiqueTools(server, critic) {
11
+ // 评审 Proposal/Design
12
+ server.registerTool('openspec_critique_proposal', {
13
+ description: '评审 proposal 或 design 文档,识别潜在问题(完整性、可行性、安全、边界条件、清晰度)',
14
+ inputSchema: {
15
+ changeName: z.string().describe('变更 ID'),
16
+ documentType: z.enum(['proposal', 'design', 'all']).optional().describe('文档类型,默认 proposal'),
17
+ },
18
+ }, async ({ changeName, documentType = 'proposal' }) => {
19
+ try {
20
+ let result;
21
+ switch (documentType) {
22
+ case 'design':
23
+ result = await critic.critiqueDesign(changeName);
24
+ break;
25
+ case 'all':
26
+ result = await critic.critiqueAll(changeName);
27
+ break;
28
+ default:
29
+ result = await critic.critiqueProposal(changeName);
30
+ }
31
+ // 格式化输出
32
+ const output = formatCritiqueResult(result);
33
+ return {
34
+ content: [{ type: 'text', text: output }],
35
+ };
36
+ }
37
+ catch (error) {
38
+ return {
39
+ content: [{
40
+ type: 'text',
41
+ text: `评审失败: ${error instanceof Error ? error.message : 'Unknown error'}`,
42
+ }],
43
+ };
44
+ }
45
+ });
46
+ // 获取评审历史
47
+ server.registerTool('openspec_get_critique_history', {
48
+ description: '获取变更的评审历史记录',
49
+ inputSchema: {
50
+ changeName: z.string().describe('变更 ID'),
51
+ limit: z.number().optional().describe('返回记录数量限制,默认 5'),
52
+ },
53
+ }, async ({ changeName, limit = 5 }) => {
54
+ try {
55
+ const history = await critic.getCritiqueHistory(changeName);
56
+ const limited = history.slice(0, limit);
57
+ if (limited.length === 0) {
58
+ return {
59
+ content: [{ type: 'text', text: `没有找到 ${changeName} 的评审历史` }],
60
+ };
61
+ }
62
+ const output = limited.map((r, i) => {
63
+ return `## ${i + 1}. ${r.documentType} (${r.createdAt})
64
+ - 总分: ${r.overallScore}/10
65
+ - 问题: ${r.summary.total} (Critical: ${r.summary.critical}, Warning: ${r.summary.warning}, Info: ${r.summary.info})`;
66
+ }).join('\n\n');
67
+ return {
68
+ content: [{ type: 'text', text: `# ${changeName} 评审历史\n\n${output}` }],
69
+ };
70
+ }
71
+ catch (error) {
72
+ return {
73
+ content: [{
74
+ type: 'text',
75
+ text: `获取历史失败: ${error instanceof Error ? error.message : 'Unknown error'}`,
76
+ }],
77
+ };
78
+ }
79
+ });
80
+ // 获取最新评审结果
81
+ server.registerTool('openspec_get_latest_critique', {
82
+ description: '获取变更的最新评审结果',
83
+ inputSchema: {
84
+ changeName: z.string().describe('变更 ID'),
85
+ },
86
+ }, async ({ changeName }) => {
87
+ try {
88
+ const result = await critic.getLatestCritique(changeName);
89
+ if (!result) {
90
+ return {
91
+ content: [{ type: 'text', text: `没有找到 ${changeName} 的评审记录,请先运行 openspec_critique_proposal` }],
92
+ };
93
+ }
94
+ const output = formatCritiqueResult(result);
95
+ return {
96
+ content: [{ type: 'text', text: output }],
97
+ };
98
+ }
99
+ catch (error) {
100
+ return {
101
+ content: [{
102
+ type: 'text',
103
+ text: `获取失败: ${error instanceof Error ? error.message : 'Unknown error'}`,
104
+ }],
105
+ };
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * 格式化评审结果
111
+ */
112
+ function formatCritiqueResult(result) {
113
+ const lines = [];
114
+ // 标题和总分
115
+ lines.push(`# 📋 ${result.changeName} 评审报告`);
116
+ lines.push('');
117
+ lines.push(`- **文档类型**: ${result.documentType}`);
118
+ lines.push(`- **评审时间**: ${result.createdAt}`);
119
+ lines.push(`- **总分**: ${getScoreEmoji(result.overallScore)} **${result.overallScore}/10**`);
120
+ lines.push('');
121
+ // 统计摘要
122
+ lines.push('## 📊 统计摘要');
123
+ lines.push('');
124
+ lines.push(`| 类别 | 数量 |`);
125
+ lines.push(`|------|------|`);
126
+ lines.push(`| 🔴 Critical | ${result.summary.critical} |`);
127
+ lines.push(`| 🟡 Warning | ${result.summary.warning} |`);
128
+ lines.push(`| 🔵 Info | ${result.summary.info} |`);
129
+ lines.push(`| **总计** | **${result.summary.total}** |`);
130
+ lines.push('');
131
+ // 按类别分组展示问题
132
+ if (result.critiques.length > 0) {
133
+ lines.push('## 🔍 发现的问题');
134
+ lines.push('');
135
+ const bySeverity = {
136
+ critical: result.critiques.filter((c) => c.severity === 'critical'),
137
+ warning: result.critiques.filter((c) => c.severity === 'warning'),
138
+ info: result.critiques.filter((c) => c.severity === 'info'),
139
+ };
140
+ for (const [severity, critiques] of Object.entries(bySeverity)) {
141
+ if (critiques.length === 0)
142
+ continue;
143
+ const emoji = severity === 'critical' ? '🔴' : severity === 'warning' ? '🟡' : '🔵';
144
+ for (const c of critiques) {
145
+ lines.push(`### ${emoji} ${c.title}`);
146
+ lines.push('');
147
+ lines.push(`**类别**: ${getCategoryLabel(c.category)}`);
148
+ lines.push('');
149
+ lines.push(c.description);
150
+ if (c.suggestion) {
151
+ lines.push('');
152
+ lines.push(`> 💡 **建议**: ${c.suggestion}`);
153
+ }
154
+ lines.push('');
155
+ }
156
+ }
157
+ }
158
+ else {
159
+ lines.push('## ✅ 没有发现问题');
160
+ lines.push('');
161
+ lines.push('文档通过所有检查规则。');
162
+ lines.push('');
163
+ }
164
+ // 综合建议
165
+ if (result.suggestions.length > 0) {
166
+ lines.push('## 💡 改进建议');
167
+ lines.push('');
168
+ for (const s of result.suggestions) {
169
+ lines.push(`- ${s}`);
170
+ }
171
+ lines.push('');
172
+ }
173
+ return lines.join('\n');
174
+ }
175
+ function getScoreEmoji(score) {
176
+ if (score >= 8)
177
+ return '✅';
178
+ if (score >= 6)
179
+ return '⚠️';
180
+ if (score >= 4)
181
+ return '🟡';
182
+ return '❌';
183
+ }
184
+ function getCategoryLabel(category) {
185
+ const labels = {
186
+ completeness: '完整性',
187
+ feasibility: '技术可行性',
188
+ security: '安全考量',
189
+ edge_case: '边界条件',
190
+ clarity: '清晰度',
191
+ };
192
+ return labels[category] || category;
193
+ }
194
+ //# sourceMappingURL=critique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critique.js","sourceRoot":"","sources":["../../../src/server/tools/critique.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-service.d.ts","sourceRoot":"","sources":["../../../src/server/tools/cross-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG1E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,mBAAmB,EAAE,mBAAmB,GACvC,IAAI,CA+EN"}
1
+ {"version":3,"file":"cross-service.d.ts","sourceRoot":"","sources":["../../../src/server/tools/cross-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG1E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,mBAAmB,EAAE,mBAAmB,GACvC,IAAI,CAmFN"}
@@ -7,8 +7,11 @@ export function registerCrossServiceTools(server, crossServiceManager) {
7
7
  /**
8
8
  * 列出跨服务文档
9
9
  */
10
- server.tool('openspec_list_cross_service_docs', 'List cross-service documents for a change proposal. Returns documents defined in proposal.md frontmatter crossService config.', {
11
- changeId: z.string().describe('Change ID to get cross-service documents for'),
10
+ server.registerTool('openspec_list_cross_service_docs', {
11
+ description: 'List cross-service documents for a change proposal. Returns documents defined in proposal.md frontmatter crossService config.',
12
+ inputSchema: {
13
+ changeId: z.string().describe('Change ID to get cross-service documents for'),
14
+ },
12
15
  }, async ({ changeId }) => {
13
16
  const info = await crossServiceManager.getCrossServiceInfo(changeId);
14
17
  if (!info) {
@@ -39,9 +42,12 @@ export function registerCrossServiceTools(server, crossServiceManager) {
39
42
  /**
40
43
  * 读取单个跨服务文档
41
44
  */
42
- server.tool('openspec_read_cross_service_doc', 'Read a specific cross-service document content. Use openspec_list_cross_service_docs first to see available documents.', {
43
- changeId: z.string().describe('Change ID'),
44
- docName: z.string().describe('Document name (e.g., design.md, flows.md)'),
45
+ server.registerTool('openspec_read_cross_service_doc', {
46
+ description: 'Read a specific cross-service document content. Use openspec_list_cross_service_docs first to see available documents.',
47
+ inputSchema: {
48
+ changeId: z.string().describe('Change ID'),
49
+ docName: z.string().describe('Document name (e.g., design.md, flows.md)'),
50
+ },
45
51
  }, async ({ changeId, docName }) => {
46
52
  const doc = await crossServiceManager.readDocument(changeId, docName);
47
53
  if (!doc) {
@@ -1 +1 @@
1
- {"version":3,"file":"cross-service.js","sourceRoot":"","sources":["../../../src/server/tools/cross-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,mBAAwC;IAExC;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,kCAAkC,EAClC,+HAA+H,EAC/H;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oDAAoD,QAAQ,gOAAgO;qBACnS;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;aAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;QACzC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kCAAkC,QAAQ,6BAA6B,IAAI,CAAC,MAAM,CAAC,QAAQ,uBAAuB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,mBAAmB,OAAO,IAAI,wBAAwB,EAAE;iBACxN;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,iCAAiC,EACjC,wHAAwH,EACxH;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC1E,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,OAAO,sEAAsE;qBAC3G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,GAAG,aAAa,WAAW,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,EAAE;iBACnF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cross-service.js","sourceRoot":"","sources":["../../../src/server/tools/cross-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,mBAAwC;IAExC;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,kCAAkC,EAClC;QACE,WAAW,EAAE,+HAA+H;QAC5I,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;SAC9E;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oDAAoD,QAAQ,gOAAgO;qBACnS;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;aAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;QACzC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kCAAkC,QAAQ,6BAA6B,IAAI,CAAC,MAAM,CAAC,QAAQ,uBAAuB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,mBAAmB,OAAO,IAAI,wBAAwB,EAAE;iBACxN;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,WAAW,EAAE,wHAAwH;QACrI,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SAC1E;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,OAAO,sEAAsE;qBAC3G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,GAAG,aAAa,WAAW,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,EAAE;iBACnF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/server/tools/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CAyIN"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/server/tools/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CA+IN"}
@@ -7,10 +7,13 @@ export function registerGeneratorTools(server, proposalGenerator) {
7
7
  /**
8
8
  * 准备生成 proposal(返回 prompt 供 AI 使用)
9
9
  */
10
- server.tool('openspec_prepare_proposal', 'Prepare context and prompt for generating a proposal from a requirement', {
11
- requirement: z
12
- .string()
13
- .describe('Description of the feature or change requirement'),
10
+ server.registerTool('openspec_prepare_proposal', {
11
+ description: 'Prepare context and prompt for generating a proposal from a requirement',
12
+ inputSchema: {
13
+ requirement: z
14
+ .string()
15
+ .describe('Description of the feature or change requirement'),
16
+ },
14
17
  }, async ({ requirement }) => {
15
18
  const result = await proposalGenerator.prepareGeneration(requirement);
16
19
  let text = `# Proposal Generation Prepared\n\n`;
@@ -27,12 +30,15 @@ export function registerGeneratorTools(server, proposalGenerator) {
27
30
  /**
28
31
  * 保存生成的 proposal
29
32
  */
30
- server.tool('openspec_save_proposal', 'Save a generated proposal and tasks to a new change', {
31
- changeId: z
32
- .string()
33
- .describe('Change ID (kebab-case, e.g., add-user-auth)'),
34
- proposal: z.string().describe('Content of proposal.md'),
35
- tasks: z.string().describe('Content of tasks.md'),
33
+ server.registerTool('openspec_save_proposal', {
34
+ description: 'Save a generated proposal and tasks to a new change',
35
+ inputSchema: {
36
+ changeId: z
37
+ .string()
38
+ .describe('Change ID (kebab-case, e.g., add-user-auth)'),
39
+ proposal: z.string().describe('Content of proposal.md'),
40
+ tasks: z.string().describe('Content of tasks.md'),
41
+ },
36
42
  }, async ({ changeId, proposal, tasks }) => {
37
43
  const result = await proposalGenerator.saveDraft(changeId, proposal, tasks);
38
44
  if (result.success) {
@@ -60,14 +66,17 @@ export function registerGeneratorTools(server, proposalGenerator) {
60
66
  /**
61
67
  * 一站式生成并保存(返回示例,需 AI 填充内容)
62
68
  */
63
- server.tool('openspec_generate_proposal', 'Generate a proposal from requirement description (returns template for AI to complete)', {
64
- requirement: z
65
- .string()
66
- .describe('Description of the feature or change requirement'),
67
- changeId: z
68
- .string()
69
- .optional()
70
- .describe('Optional custom change ID'),
69
+ server.registerTool('openspec_generate_proposal', {
70
+ description: 'Generate a proposal from requirement description (returns template for AI to complete)',
71
+ inputSchema: {
72
+ requirement: z
73
+ .string()
74
+ .describe('Description of the feature or change requirement'),
75
+ changeId: z
76
+ .string()
77
+ .optional()
78
+ .describe('Optional custom change ID'),
79
+ },
71
80
  }, async ({ requirement, changeId }) => {
72
81
  const preparation = await proposalGenerator.prepareGeneration(requirement);
73
82
  const finalId = changeId || preparation.suggestedId;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/server/tools/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/server/tools/generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guides.d.ts","sourceRoot":"","sources":["../../../src/server/tools/guides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA8B7E"}
1
+ {"version":3,"file":"guides.d.ts","sourceRoot":"","sources":["../../../src/server/tools/guides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAkC7E"}
@@ -6,7 +6,10 @@ export function registerGuidesTools(server, cli) {
6
6
  /**
7
7
  * 获取 OpenSpec 使用指南 (AGENTS.md)
8
8
  */
9
- server.tool('openspec_get_instructions', 'Get OpenSpec usage instructions from AGENTS.md', {}, async () => {
9
+ server.registerTool('openspec_get_instructions', {
10
+ description: 'Get OpenSpec usage instructions from AGENTS.md',
11
+ inputSchema: {},
12
+ }, async () => {
10
13
  const content = await cli.getInstructions();
11
14
  return {
12
15
  content: [{ type: 'text', text: content }],
@@ -15,7 +18,10 @@ export function registerGuidesTools(server, cli) {
15
18
  /**
16
19
  * 获取项目上下文 (project.md)
17
20
  */
18
- server.tool('openspec_get_project_context', 'Get project context from project.md', {}, async () => {
21
+ server.registerTool('openspec_get_project_context', {
22
+ description: 'Get project context from project.md',
23
+ inputSchema: {},
24
+ }, async () => {
19
25
  const content = await cli.getProjectContext();
20
26
  return {
21
27
  content: [{ type: 'text', text: content }],
@@ -1 +1 @@
1
- {"version":3,"file":"guides.js","sourceRoot":"","sources":["../../../src/server/tools/guides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAgB;IACrE;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,gDAAgD,EAChD,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,qCAAqC,EACrC,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"guides.js","sourceRoot":"","sources":["../../../src/server/tools/guides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAgB;IACrE;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,8BAA8B,EAC9B;QACE,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/server/tools/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAwFtF"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/server/tools/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CA0FtF"}
@@ -7,10 +7,13 @@ export function registerHooksTools(server, hooksManager) {
7
7
  /**
8
8
  * 安装 Git hooks
9
9
  */
10
- server.tool('openspec_setup_hooks', 'Install or uninstall OpenSpec Git hooks', {
11
- action: z
12
- .enum(['install', 'uninstall', 'status'])
13
- .describe('Action to perform'),
10
+ server.registerTool('openspec_setup_hooks', {
11
+ description: 'Install or uninstall OpenSpec Git hooks',
12
+ inputSchema: {
13
+ action: z
14
+ .enum(['install', 'uninstall', 'status'])
15
+ .describe('Action to perform'),
16
+ },
14
17
  }, async ({ action }) => {
15
18
  if (action === 'status') {
16
19
  const isGit = await hooksManager.isGitRepo();
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/server/tools/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,YAA0B;IAC9E;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yCAAyC,EACzC;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aACxC,QAAQ,CAAC,mBAAmB,CAAC;KACjC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;oBAC3D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACzD,IAAI,IAAI,GAAG,4BAA4B,CAAC;YACxC,IAAI,IAAI,8BAA8B,CAAC;YAEvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,IAAI,oBAAoB,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,gCAAgC,CAAC;gBACzC,IAAI,IAAI,6CAA6C,CAAC;YACxD,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,IAAI,GAAG,8CAA8C,CAAC;gBAC1D,IAAI,IAAI,cAAc,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1B,CAAC;gBACD,IAAI,IAAI,iBAAiB,CAAC;gBAC1B,IAAI,IAAI,4CAA4C,CAAC;gBACrD,IAAI,IAAI,uDAAuD,CAAC;gBAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC9D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;YAE9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,IAAI,GAAG,+BAA+B,CAAC;gBAC3C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,IAAI,IAAI,YAAY,CAAC;oBACrB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAClC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;oBAC1B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,4BAA4B,CAAC;gBACvC,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC9D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;YACnD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/server/tools/hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../../src/server/tools/management.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAiKjF"}
1
+ {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../../src/server/tools/management.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAyKjF"}