@chenmk/superflow 0.3.0 → 0.5.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 (261) hide show
  1. package/INSTALL.en.md +54 -12
  2. package/INSTALL.md +59 -33
  3. package/README.md +192 -49
  4. package/README.zh-CN.md +166 -46
  5. package/assets/brand/managed-review-loop.png +0 -0
  6. package/assets/manifest.json +15 -9
  7. package/assets/prompts/superflow-design.md +3 -0
  8. package/assets/prompts/superflow-docs.md +4 -1
  9. package/assets/scripts/superflow-coding-ready.mjs +135 -0
  10. package/assets/scripts/superflow-dependency-update-hook.sh +81 -8
  11. package/assets/scripts/superflow-document-audit.mjs +240 -0
  12. package/assets/scripts/superflow-environment-preflight.mjs +398 -0
  13. package/assets/scripts/superflow-hook-guard.sh +40 -1
  14. package/assets/scripts/superflow-managed-command-guard.py +309 -0
  15. package/assets/scripts/superflow-managed-executor-preflight.mjs +421 -0
  16. package/assets/scripts/superflow-managed-owner-verification.sh +117 -0
  17. package/assets/scripts/superflow-managed-work-check.mjs +455 -0
  18. package/assets/scripts/superflow-managed-work-guard.sh +17 -0
  19. package/assets/skills/openspec-propose/SKILL.md +11 -0
  20. package/assets/skills/superflow-clarify/SKILL.md +14 -0
  21. package/assets/skills/superflow-design/SKILL.md +46 -12
  22. package/assets/skills/superflow-docs/SKILL.md +109 -2
  23. package/assets/skills/superflow-pipeline/SKILL.md +205 -2
  24. package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +17 -9
  25. package/assets/skills/superflow-pipeline/references/document-readiness.md +157 -0
  26. package/assets/skills/superflow-pipeline/references/document-templates.md +17 -5
  27. package/assets/skills/superflow-pipeline/references/feature-gated-workflow.md +14 -0
  28. package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +20 -11
  29. package/assets/skills/superflow-pipeline/references/managed-work.md +166 -0
  30. package/assets/skills/superflow-pipeline/references/orchestration.md +2 -2
  31. package/assets/skills/superflow-pipeline/references/p0-baseline-template.md +3 -2
  32. package/assets/skills/superflow-pipeline/references/quality-gate.md +8 -5
  33. package/assets/skills/superflow-pipeline/references/reviewer-checklist.md +7 -0
  34. package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +10 -0
  35. package/assets/skills/superflow-pipeline/scripts/superflow-archive.sh +1 -1
  36. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +282 -16
  37. package/assets/skills/superflow-pipeline/scripts/superflow-handoff.sh +7 -4
  38. package/assets/skills/superflow-requirement-review/SKILL.md +178 -0
  39. package/assets/skills/superflow-requirement-review/agents/openai.yaml +4 -0
  40. package/assets/skills-en/openspec-propose/SKILL.md +14 -0
  41. package/assets/skills-en/superflow-clarify/SKILL.md +17 -0
  42. package/assets/skills-en/superflow-design/SKILL.md +40 -11
  43. package/assets/skills-en/superflow-docs/SKILL.md +115 -0
  44. package/assets/skills-en/superflow-pipeline/SKILL.md +202 -0
  45. package/assets/skills-en/superflow-pipeline/references/batch-prompt-template.md +4 -0
  46. package/assets/skills-en/superflow-pipeline/references/document-readiness.md +125 -0
  47. package/assets/skills-en/superflow-pipeline/references/document-templates.md +15 -0
  48. package/assets/skills-en/superflow-pipeline/references/feature-gated-workflow.md +7 -0
  49. package/assets/skills-en/superflow-pipeline/references/implementation-prompt-template.md +7 -0
  50. package/assets/skills-en/superflow-pipeline/references/managed-work.md +184 -0
  51. package/assets/skills-en/superflow-pipeline/references/quality-gate.md +20 -0
  52. package/assets/skills-en/superflow-pipeline/references/reviewer-checklist.md +7 -0
  53. package/assets/skills-en/superflow-pipeline/references/superpower-technical-design-template.md +11 -0
  54. package/assets/skills-en/superflow-pipeline/scripts/superflow-archive.sh +1 -1
  55. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +279 -14
  56. package/assets/skills-en/superflow-pipeline/scripts/superflow-handoff.sh +7 -4
  57. package/assets/skills-en/superflow-requirement-review/SKILL.md +99 -0
  58. package/assets/skills-en/superflow-requirement-review/agents/openai.yaml +4 -0
  59. package/dist/app/cli.js +176 -103
  60. package/dist/app/cli.js.map +1 -1
  61. package/dist/app/commands/change-guard.js +19 -2
  62. package/dist/app/commands/change-guard.js.map +1 -1
  63. package/dist/app/commands/check.js +107 -45
  64. package/dist/app/commands/check.js.map +1 -1
  65. package/dist/app/commands/docs.js +7 -3
  66. package/dist/app/commands/docs.js.map +1 -1
  67. package/dist/app/commands/doctor.js +174 -198
  68. package/dist/app/commands/doctor.js.map +1 -1
  69. package/dist/app/commands/eval.js +64 -0
  70. package/dist/app/commands/eval.js.map +1 -0
  71. package/dist/app/commands/implement.js +7 -3
  72. package/dist/app/commands/implement.js.map +1 -1
  73. package/dist/app/commands/init.js +16 -24
  74. package/dist/app/commands/init.js.map +1 -1
  75. package/dist/app/commands/managed-service.js +5 -0
  76. package/dist/app/commands/managed-service.js.map +1 -0
  77. package/dist/app/commands/mcp.js +167 -0
  78. package/dist/app/commands/mcp.js.map +1 -0
  79. package/dist/app/commands/pipeline.js +757 -3
  80. package/dist/app/commands/pipeline.js.map +1 -1
  81. package/dist/app/commands/requirement-review.js +6 -0
  82. package/dist/app/commands/requirement-review.js.map +1 -0
  83. package/dist/app/commands/status.js +262 -77
  84. package/dist/app/commands/status.js.map +1 -1
  85. package/dist/app/commands/uninstall.js +8 -5
  86. package/dist/app/commands/uninstall.js.map +1 -1
  87. package/dist/app/commands/update.js +114 -15
  88. package/dist/app/commands/update.js.map +1 -1
  89. package/dist/domains/agent.js +3 -11
  90. package/dist/domains/agent.js.map +1 -1
  91. package/dist/domains/config/cli-help.js +145 -73
  92. package/dist/domains/config/cli-help.js.map +1 -1
  93. package/dist/domains/config/i18n.js +6 -8
  94. package/dist/domains/config/i18n.js.map +1 -1
  95. package/dist/domains/config/manifest.js +0 -3
  96. package/dist/domains/config/manifest.js.map +1 -1
  97. package/dist/domains/deps.js +70 -8
  98. package/dist/domains/deps.js.map +1 -1
  99. package/dist/domains/hook.js +71 -38
  100. package/dist/domains/hook.js.map +1 -1
  101. package/dist/domains/managed-work/completion-policy.js +174 -0
  102. package/dist/domains/managed-work/completion-policy.js.map +1 -0
  103. package/dist/domains/managed-work/context-manifest.js +208 -0
  104. package/dist/domains/managed-work/context-manifest.js.map +1 -0
  105. package/dist/domains/managed-work/contract.js +349 -0
  106. package/dist/domains/managed-work/contract.js.map +1 -0
  107. package/dist/domains/managed-work/control-signals.js +34 -0
  108. package/dist/domains/managed-work/control-signals.js.map +1 -0
  109. package/dist/domains/managed-work/control.js +628 -0
  110. package/dist/domains/managed-work/control.js.map +1 -0
  111. package/dist/domains/managed-work/evaluation.js +497 -0
  112. package/dist/domains/managed-work/evaluation.js.map +1 -0
  113. package/dist/domains/managed-work/evidence-path.js +14 -0
  114. package/dist/domains/managed-work/evidence-path.js.map +1 -0
  115. package/dist/domains/managed-work/execution-contract.js +167 -0
  116. package/dist/domains/managed-work/execution-contract.js.map +1 -0
  117. package/dist/domains/managed-work/executor-policy.js +65 -0
  118. package/dist/domains/managed-work/executor-policy.js.map +1 -0
  119. package/dist/domains/managed-work/failure.js +65 -0
  120. package/dist/domains/managed-work/failure.js.map +1 -0
  121. package/dist/domains/managed-work/host-review.js +77 -0
  122. package/dist/domains/managed-work/host-review.js.map +1 -0
  123. package/dist/domains/managed-work/human-messages.js +31 -0
  124. package/dist/domains/managed-work/human-messages.js.map +1 -0
  125. package/dist/domains/managed-work/i18n.js +12 -0
  126. package/dist/domains/managed-work/i18n.js.map +1 -0
  127. package/dist/domains/managed-work/input.js +137 -0
  128. package/dist/domains/managed-work/input.js.map +1 -0
  129. package/dist/domains/managed-work/journal.js +196 -0
  130. package/dist/domains/managed-work/journal.js.map +1 -0
  131. package/dist/domains/managed-work/lock.js +106 -0
  132. package/dist/domains/managed-work/lock.js.map +1 -0
  133. package/dist/domains/managed-work/notifications.js +38 -0
  134. package/dist/domains/managed-work/notifications.js.map +1 -0
  135. package/dist/domains/managed-work/pair-admission.js +108 -0
  136. package/dist/domains/managed-work/pair-admission.js.map +1 -0
  137. package/dist/domains/managed-work/paths.js +18 -0
  138. package/dist/domains/managed-work/paths.js.map +1 -0
  139. package/dist/domains/managed-work/prompts.js +453 -0
  140. package/dist/domains/managed-work/prompts.js.map +1 -0
  141. package/dist/domains/managed-work/redaction.js +90 -0
  142. package/dist/domains/managed-work/redaction.js.map +1 -0
  143. package/dist/domains/managed-work/review-convergence.js +41 -0
  144. package/dist/domains/managed-work/review-convergence.js.map +1 -0
  145. package/dist/domains/managed-work/review-facts.js +181 -0
  146. package/dist/domains/managed-work/review-facts.js.map +1 -0
  147. package/dist/domains/managed-work/rule-selection.js +84 -0
  148. package/dist/domains/managed-work/rule-selection.js.map +1 -0
  149. package/dist/domains/managed-work/runner.js +2418 -0
  150. package/dist/domains/managed-work/runner.js.map +1 -0
  151. package/dist/domains/managed-work/schemas.js +155 -0
  152. package/dist/domains/managed-work/schemas.js.map +1 -0
  153. package/dist/domains/managed-work/service.js +190 -0
  154. package/dist/domains/managed-work/service.js.map +1 -0
  155. package/dist/domains/managed-work/state.js +280 -0
  156. package/dist/domains/managed-work/state.js.map +1 -0
  157. package/dist/domains/managed-work/storage.js +223 -0
  158. package/dist/domains/managed-work/storage.js.map +1 -0
  159. package/dist/domains/managed-work/types.js +19 -0
  160. package/dist/domains/managed-work/types.js.map +1 -0
  161. package/dist/domains/managed-work/verification-categories.js +39 -0
  162. package/dist/domains/managed-work/verification-categories.js.map +1 -0
  163. package/dist/domains/managed-work/verification-policy.js +116 -0
  164. package/dist/domains/managed-work/verification-policy.js.map +1 -0
  165. package/dist/domains/managed-work/wait.js +58 -0
  166. package/dist/domains/managed-work/wait.js.map +1 -0
  167. package/dist/domains/managed-work/workspace-binding.js +133 -0
  168. package/dist/domains/managed-work/workspace-binding.js.map +1 -0
  169. package/dist/domains/sdd-readiness.js +44 -0
  170. package/dist/domains/sdd-readiness.js.map +1 -0
  171. package/dist/domains/skill/deploy.js +0 -6
  172. package/dist/domains/skill/deploy.js.map +1 -1
  173. package/dist/domains/skill/scripts.js +0 -8
  174. package/dist/domains/skill/scripts.js.map +1 -1
  175. package/dist/domains/state.js +1 -2
  176. package/dist/domains/state.js.map +1 -1
  177. package/dist/mcp/runtime-identity.js +21 -0
  178. package/dist/mcp/runtime-identity.js.map +1 -0
  179. package/dist/mcp/server.js +369 -0
  180. package/dist/mcp/server.js.map +1 -0
  181. package/dist/platform/agent-process.js +769 -0
  182. package/dist/platform/agent-process.js.map +1 -0
  183. package/dist/platform/executable.js +28 -0
  184. package/dist/platform/executable.js.map +1 -0
  185. package/dist/platform/paths.js +1 -17
  186. package/dist/platform/paths.js.map +1 -1
  187. package/dist/platform/process-liveness.js +10 -0
  188. package/dist/platform/process-liveness.js.map +1 -0
  189. package/dist/platform/process-tree.js +44 -0
  190. package/dist/platform/process-tree.js.map +1 -0
  191. package/dist/platform/process.js +1 -1
  192. package/dist/platform/process.js.map +1 -1
  193. package/dist/platform/version-check.js +30 -9
  194. package/dist/platform/version-check.js.map +1 -1
  195. package/package.json +16 -7
  196. package/scripts/check-design-principles.mjs +107 -0
  197. package/scripts/check-managed-work-design.mjs +507 -0
  198. package/scripts/clean-dist.js +9 -0
  199. package/scripts/ensure-bin-modes.js +11 -0
  200. package/dist/cli/index.js +0 -193
  201. package/dist/cli/index.js.map +0 -1
  202. package/dist/commands/archive.js +0 -6
  203. package/dist/commands/archive.js.map +0 -1
  204. package/dist/commands/clarify.js +0 -6
  205. package/dist/commands/clarify.js.map +0 -1
  206. package/dist/commands/design.js +0 -28
  207. package/dist/commands/design.js.map +0 -1
  208. package/dist/commands/docs.js +0 -6
  209. package/dist/commands/docs.js.map +0 -1
  210. package/dist/commands/doctor.js +0 -494
  211. package/dist/commands/doctor.js.map +0 -1
  212. package/dist/commands/implement.js +0 -6
  213. package/dist/commands/implement.js.map +0 -1
  214. package/dist/commands/init.js +0 -520
  215. package/dist/commands/init.js.map +0 -1
  216. package/dist/commands/pipeline.js +0 -6
  217. package/dist/commands/pipeline.js.map +0 -1
  218. package/dist/commands/scan.js +0 -63
  219. package/dist/commands/scan.js.map +0 -1
  220. package/dist/commands/status.js +0 -173
  221. package/dist/commands/status.js.map +0 -1
  222. package/dist/commands/uninstall.js +0 -214
  223. package/dist/commands/uninstall.js.map +0 -1
  224. package/dist/commands/update.js +0 -193
  225. package/dist/commands/update.js.map +0 -1
  226. package/dist/commands/verify.js +0 -6
  227. package/dist/commands/verify.js.map +0 -1
  228. package/dist/core/assets.js +0 -27
  229. package/dist/core/assets.js.map +0 -1
  230. package/dist/core/cli-help.js +0 -98
  231. package/dist/core/cli-help.js.map +0 -1
  232. package/dist/core/context.js +0 -123
  233. package/dist/core/context.js.map +0 -1
  234. package/dist/core/dependencies.js +0 -146
  235. package/dist/core/dependencies.js.map +0 -1
  236. package/dist/core/detect.js +0 -64
  237. package/dist/core/detect.js.map +0 -1
  238. package/dist/core/i18n.js +0 -105
  239. package/dist/core/i18n.js.map +0 -1
  240. package/dist/core/integrity.js +0 -46
  241. package/dist/core/integrity.js.map +0 -1
  242. package/dist/core/manifest.js +0 -21
  243. package/dist/core/manifest.js.map +0 -1
  244. package/dist/core/prompts.js +0 -20
  245. package/dist/core/prompts.js.map +0 -1
  246. package/dist/core/registry.js +0 -134
  247. package/dist/core/registry.js.map +0 -1
  248. package/dist/core/rules.js +0 -17
  249. package/dist/core/rules.js.map +0 -1
  250. package/dist/core/scripts.js +0 -48
  251. package/dist/core/scripts.js.map +0 -1
  252. package/dist/core/skill-check.js +0 -32
  253. package/dist/core/skill-check.js.map +0 -1
  254. package/dist/core/skills.js +0 -62
  255. package/dist/core/skills.js.map +0 -1
  256. package/dist/core/state.js +0 -54
  257. package/dist/core/state.js.map +0 -1
  258. package/dist/utils/path.js +0 -11
  259. package/dist/utils/path.js.map +0 -1
  260. package/dist/utils/shell.js +0 -29
  261. package/dist/utils/shell.js.map +0 -1
@@ -5,6 +5,10 @@ import { runCommand } from '../../platform/process.js';
5
5
  import { getPlatformPaths } from '../../platform/paths.js';
6
6
  import { parseAgentSelection, parseInstallScope, resolveAgents, } from '../../domains/agent.js';
7
7
  import { ALL_RULES, ALL_SKILLS, CODEX_PROMPTS, hookScriptsForAgent, scriptsForAgent, } from '../../domains/skill/assets.js';
8
+ import { resolveRuntimeLanguage } from '../../domains/config/cli-help.js';
9
+ import { managedText } from '../../domains/managed-work/i18n.js';
10
+ import { missingCodexSuperpowerSkills, REQUIRED_CODEX_SUPERPOWER_SKILLS, } from '../../domains/deps.js';
11
+ import { resolveMcpServerPath } from './mcp.js';
8
12
  const VALID_STATE_FIELDS = new Set([
9
13
  'workflow',
10
14
  'phase',
@@ -58,168 +62,99 @@ const REQUIRED_STATE_FIELDS = [
58
62
  'updated_at',
59
63
  ];
60
64
  export async function doctorCommand(options = {}) {
65
+ const language = resolveRuntimeLanguage(options.language);
66
+ const result = await collectDoctor({ ...options, language });
61
67
  if (options.json) {
62
- const result = await collectDoctor(options);
63
68
  console.log(JSON.stringify(result, null, 2));
64
69
  if (result.failed)
65
70
  process.exit(1);
66
71
  return;
67
72
  }
68
- let failed = false;
69
- const agents = resolveAgents(parseAgentSelection(options.agent));
70
- const scope = parseDoctorScope(options.scope);
71
- const projectPath = path.resolve(options.targetPath ?? process.cwd());
72
- console.log('[CLI]');
73
- const which = await runCommand('which', ['superflow']).catch(() => ({ code: 1, stdout: '', stderr: '' }));
74
- if (which.code === 0) {
75
- console.log(' ✓ superflow CLI 在 PATH');
76
- }
77
- else {
78
- console.log(' ✗ superflow CLI 不在 PATH(FAIL)');
79
- failed = true;
80
- }
81
- console.log('\n[第三方依赖]');
82
- const openspec = await runCommand('which', ['openspec']).catch(() => ({ code: 1, stdout: '', stderr: '' }));
83
- if (openspec.code === 0) {
84
- console.log(' ✓ openspec CLI 在 PATH');
85
- }
86
- else {
87
- console.log(' ✗ openspec CLI 缺失(FAIL)');
88
- failed = true;
89
- }
90
- const openspecProjectChecks = collectOpenSpecProjectChecks(projectPath);
91
- for (const check of openspecProjectChecks) {
92
- if (check.status === 'pass') {
93
- console.log(` ✓ ${check.check}: ${check.message}`);
94
- }
95
- else {
96
- console.log(` ✗ ${check.check}: ${check.message}`);
97
- failed = true;
98
- }
99
- }
100
- for (const agent of agents) {
101
- failed = checkAgentDependencies(agent, failed, firstInstallScope(scope), projectPath);
102
- }
103
- for (const currentScope of scopesForDoctor(scope)) {
104
- for (const agent of agents) {
105
- const platform = getPlatformPaths(agent, currentScope, projectPath);
106
- console.log(`\n[脚本: ${platform.name}]`);
107
- if (existsSync(platform.scriptsDir)) {
108
- for (const hook of scriptsForAgent(agent)) {
109
- if (existsSync(path.join(platform.scriptsDir, hook))) {
110
- console.log(` ✓ ${hook}`);
111
- }
112
- else {
113
- console.log(` ✗ ${hook} 缺失(FAIL)`);
114
- failed = true;
115
- }
116
- }
117
- if (hookScriptsForAgent(agent).length === 0) {
118
- console.log(` ⚠ ${platform.name} 未注册自动 hook;使用 /superflow-* command 显式运行门禁(WARN)`);
119
- }
120
- else {
121
- failed = checkHookRegistration(platform.settingsFile, agent, failed);
122
- }
123
- }
124
- else {
125
- console.log(` ✗ ${platform.scriptsDir} 缺失(FAIL)`);
126
- failed = true;
127
- }
128
- console.log(`\n[Skills: ${platform.name}]`);
129
- for (const skill of ALL_SKILLS) {
130
- if (existsSync(path.join(platform.skillsDir, skill, 'SKILL.md'))) {
131
- console.log(` ✓ ${skill}`);
132
- }
133
- else {
134
- console.log(` ✗ ${skill} 缺失(FAIL)`);
135
- failed = true;
136
- }
137
- }
138
- if (agent === 'codex' || agent === 'opencode') {
139
- console.log(`\n[${agent === 'opencode' ? 'Command Alias' : 'Prompt Alias'}: ${platform.name}]`);
140
- for (const prompt of CODEX_PROMPTS) {
141
- if (existsSync(path.join(platform.promptsDir, prompt))) {
142
- console.log(` ✓ /${prompt.replace(/\.md$/, '')}`);
143
- }
144
- else {
145
- console.log(` ✗ /${prompt.replace(/\.md$/, '')} 缺失(FAIL)`);
146
- failed = true;
147
- }
148
- }
149
- }
150
- console.log(`\n[Rules: ${platform.name}]`);
151
- for (const rule of ALL_RULES) {
152
- if (existsSync(path.join(platform.rulesDir, rule))) {
153
- console.log(` ✓ ${rule}`);
154
- }
155
- else {
156
- console.log(` ✗ ${rule} 缺失(FAIL)`);
157
- failed = true;
158
- }
159
- }
160
- }
161
- }
162
- const stateChecks = collectSddStateChecks(projectPath);
163
- if (stateChecks.length > 0) {
164
- console.log('\n[SuperBridge Flow State]');
165
- for (const check of stateChecks) {
166
- if (check.status === 'pass') {
167
- console.log(` ✓ ${check.check}: ${check.message}`);
168
- }
169
- else if (check.status === 'warn') {
170
- console.log(` ⚠ ${check.check}: ${check.message}`);
171
- }
172
- else {
173
- console.log(` ✗ ${check.check}: ${check.message}`);
174
- failed = true;
175
- }
73
+ console.log(managedText(language, '[Superflow 健康诊断]', '[Superflow health check]'));
74
+ for (const check of result.checks) {
75
+ const symbol = check.status === 'pass' ? '✓' : check.status === 'warn' ? '⚠' : '✗';
76
+ console.log(` ${symbol} ${check.check}: ${check.message}`);
77
+ if (check.remediation) {
78
+ console.log(` → ${check.remediation}`);
176
79
  }
177
80
  }
178
81
  console.log('');
179
- if (failed) {
180
- console.log('→ Exit code: 1 (FAIL)');
82
+ if (result.failed) {
83
+ console.log(managedText(language, '→ 退出码:1(失败)', '→ Exit code: 1 (FAIL)'));
181
84
  process.exit(1);
182
85
  }
183
86
  else {
184
- console.log('→ Exit code: 0 (PASS / 仅 WARN)');
87
+ console.log(managedText(language, '→ 退出码:0(通过或仅警告)', '→ Exit code: 0 (PASS / warnings only)'));
185
88
  }
186
89
  }
187
- export async function collectDoctor(options = {}) {
90
+ export async function collectDoctor(options = {}, runtime = {}) {
91
+ const language = resolveRuntimeLanguage(options.language);
92
+ const run = runtime.runCommand ?? runCommand;
188
93
  const agents = resolveAgents(parseAgentSelection(options.agent));
189
94
  const scope = parseDoctorScope(options.scope);
190
95
  const scopesChecked = scopesForDoctor(scope);
191
96
  const projectPath = path.resolve(options.projectPath ?? options.targetPath ?? process.cwd());
192
97
  const checks = [];
193
- const which = await runCommand('which', ['superflow']).catch(() => ({ code: 1, stdout: '', stderr: '' }));
194
- checks.push({
195
- check: 'superflow CLI',
196
- status: which.code === 0 ? 'pass' : 'fail',
197
- message: which.code === 0 ? 'available in PATH' : 'missing from PATH',
198
- });
199
- const openspec = await runCommand('which', ['openspec']).catch(() => ({ code: 1, stdout: '', stderr: '' }));
98
+ checks.push(await executableCheck('superflow', language, run));
99
+ checks.push(await executableCheck('openspec', language, run));
100
+ checks.push(...collectOpenSpecProjectChecks(projectPath, language));
101
+ const serverPath = runtime.mcpServerPath ?? resolveMcpServerPath();
200
102
  checks.push({
201
- check: 'openspec CLI',
202
- status: openspec.code === 0 ? 'pass' : 'fail',
203
- message: openspec.code === 0 ? 'available in PATH' : 'missing from PATH',
103
+ check: 'managed:mcp-server',
104
+ status: existsSync(serverPath) ? 'pass' : 'fail',
105
+ message: existsSync(serverPath)
106
+ ? serverPath
107
+ : managedText(language, `MCP Server 文件缺失:${serverPath}`, `MCP server file is missing: ${serverPath}`),
108
+ ...(existsSync(serverPath)
109
+ ? {}
110
+ : { remediation: managedText(language, '重新安装或更新 Superflow', 'Reinstall or update Superflow') }),
204
111
  });
205
- checks.push(...collectOpenSpecProjectChecks(projectPath));
112
+ for (const agent of agents) {
113
+ const executable = await executableCheck(agent, language, run);
114
+ checks.push(executable);
115
+ checks.push(await mcpCheck(agent, serverPath, executable.status, language, run));
116
+ const superpowers = hasSuperpowers(agent);
117
+ checks.push({
118
+ check: `superpowers:${agent}`,
119
+ status: superpowers ? 'pass' : 'warn',
120
+ message: superpowers
121
+ ? managedText(language, '已检测', 'detected')
122
+ : managedText(language, '未检测', 'not detected'),
123
+ });
124
+ if (agent === 'codex') {
125
+ const missingSkills = new Set(missingCodexSuperpowerSkills());
126
+ for (const skill of REQUIRED_CODEX_SUPERPOWER_SKILLS) {
127
+ const available = !missingSkills.has(skill);
128
+ checks.push({
129
+ check: `superpowers:codex:${skill}`,
130
+ status: available ? 'pass' : 'fail',
131
+ message: available
132
+ ? managedText(language, '已检测;新会话可加载', 'detected; available to new sessions')
133
+ : managedText(language, '缺失', 'missing'),
134
+ ...(available ? {} : {
135
+ remediation: managedText(language, '运行 superflow update --agent codex --scope global,并重启 Codex Host', 'Run superflow update --agent codex --scope global, then restart the Codex host'),
136
+ }),
137
+ });
138
+ }
139
+ }
140
+ const understand = hasUnderstand(agent);
141
+ checks.push({
142
+ check: `understand-anything:${agent}`,
143
+ status: understand ? 'pass' : 'warn',
144
+ message: understand
145
+ ? managedText(language, '已检测', 'detected')
146
+ : managedText(language, '未检测', 'not detected'),
147
+ });
148
+ }
206
149
  for (const currentScope of scopesChecked) {
207
150
  for (const agent of agents) {
208
151
  const platform = getPlatformPaths(agent, currentScope, projectPath);
209
- checks.push({
210
- check: `superpowers:${agent}`,
211
- status: hasSuperpowers(agent) ? 'pass' : 'warn',
212
- message: hasSuperpowers(agent) ? 'detected' : 'not detected',
213
- });
214
- checks.push({
215
- check: `understand-anything:${agent}`,
216
- status: hasUnderstand(agent) ? 'pass' : 'warn',
217
- message: hasUnderstand(agent) ? 'detected' : 'not detected',
218
- });
219
152
  checks.push({
220
153
  check: `api-doc-changelog:${agent}`,
221
154
  status: existsSync(path.join(platform.skillsDir, 'api-doc-changelog', 'SKILL.md')) ? 'pass' : 'warn',
222
- message: existsSync(path.join(platform.skillsDir, 'api-doc-changelog', 'SKILL.md')) ? 'detected' : 'missing',
155
+ message: existsSync(path.join(platform.skillsDir, 'api-doc-changelog', 'SKILL.md'))
156
+ ? managedText(language, '已检测', 'detected')
157
+ : managedText(language, '缺失', 'missing'),
223
158
  });
224
159
  for (const script of scriptsForAgent(agent)) {
225
160
  const scriptPath = path.join(platform.scriptsDir, script);
@@ -234,16 +169,31 @@ export async function collectDoctor(options = {}) {
234
169
  checks.push({
235
170
  check: `hooks:${agent}:${currentScope}`,
236
171
  status: 'warn',
237
- message: 'native hook registration is not supported; use command aliases',
172
+ message: managedText(language, '平台不支持原生 Hook 注册,请使用命令别名', 'native hook registration is not supported; use command aliases'),
238
173
  });
239
174
  }
240
175
  else {
241
- const hookCount = countSddHookCommands(platform.settingsFile, agent);
242
- checks.push({
243
- check: `hooks:${agent}:${currentScope}`,
244
- status: hookCount >= 7 ? 'pass' : 'fail',
245
- message: `${hookCount} command(s) registered`,
246
- });
176
+ try {
177
+ const hookCount = countSddHookCommands(platform.settingsFile, agent);
178
+ checks.push({
179
+ check: `hooks:${agent}:${currentScope}`,
180
+ status: hookCount >= 7 ? 'pass' : 'fail',
181
+ message: managedText(language, `已注册 ${hookCount} 条命令`, `${hookCount} command(s) registered`),
182
+ ...(hookCount >= 7
183
+ ? {}
184
+ : {
185
+ remediation: managedText(language, '运行 superflow update 重新注册 Hook', 'Run superflow update to register hooks again'),
186
+ }),
187
+ });
188
+ }
189
+ catch (error) {
190
+ checks.push({
191
+ check: `hooks:${agent}:${currentScope}`,
192
+ status: 'fail',
193
+ message: managedText(language, `配置文件无法解析:${error.message}`, `settings file cannot be parsed: ${error.message}`),
194
+ remediation: managedText(language, '修复配置 JSON 后运行 superflow update', 'Repair the settings JSON, then run superflow update'),
195
+ });
196
+ }
247
197
  }
248
198
  for (const skill of ALL_SKILLS) {
249
199
  const skillPath = path.join(platform.skillsDir, skill, 'SKILL.md');
@@ -253,7 +203,7 @@ export async function collectDoctor(options = {}) {
253
203
  message: skillPath,
254
204
  });
255
205
  }
256
- if (agent === 'codex' || agent === 'opencode') {
206
+ if (agent === 'codex') {
257
207
  for (const prompt of CODEX_PROMPTS) {
258
208
  const promptPath = path.join(platform.promptsDir, prompt);
259
209
  checks.push({
@@ -273,7 +223,7 @@ export async function collectDoctor(options = {}) {
273
223
  }
274
224
  }
275
225
  }
276
- checks.push(...collectSddStateChecks(projectPath));
226
+ checks.push(...collectSddStateChecks(projectPath, language));
277
227
  return {
278
228
  agents,
279
229
  scope,
@@ -283,7 +233,7 @@ export async function collectDoctor(options = {}) {
283
233
  checks,
284
234
  };
285
235
  }
286
- function collectOpenSpecProjectChecks(projectPath) {
236
+ function collectOpenSpecProjectChecks(projectPath, language) {
287
237
  const changesDir = path.join(projectPath, 'openspec', 'changes');
288
238
  const specsDir = path.join(projectPath, 'openspec', 'specs');
289
239
  const missing = [
@@ -294,11 +244,11 @@ function collectOpenSpecProjectChecks(projectPath) {
294
244
  check: 'openspec project',
295
245
  status: missing.length > 0 ? 'fail' : 'pass',
296
246
  message: missing.length > 0
297
- ? `missing ${missing.join(', ')}; run superflow init or openspec init`
298
- : 'openspec/changes and openspec/specs detected',
247
+ ? managedText(language, `缺少 ${missing.join('、')};请运行 superflow init 或 openspec init`, `missing ${missing.join(', ')}; run superflow init or openspec init`)
248
+ : managedText(language, '已检测 openspec/changes 和 openspec/specs', 'openspec/changes and openspec/specs detected'),
299
249
  }];
300
250
  }
301
- function collectSddStateChecks(projectPath) {
251
+ function collectSddStateChecks(projectPath, language) {
302
252
  const changesDir = path.join(projectPath, 'openspec', 'changes');
303
253
  if (!existsSync(changesDir))
304
254
  return [];
@@ -314,16 +264,22 @@ function collectSddStateChecks(projectPath) {
314
264
  const keys = collectTopLevelYamlKeys(state);
315
265
  const unknown = keys.filter((key) => !VALID_STATE_FIELDS.has(key));
316
266
  const missing = REQUIRED_STATE_FIELDS.filter((key) => !keys.includes(key));
317
- const invalidHash = invalidHandoffHash(state);
267
+ const invalidHash = invalidHandoffHash(state, language);
318
268
  const problems = [
319
- unknown.length > 0 ? `unknown field(s): ${unknown.join(', ')}` : '',
320
- missing.length > 0 ? `missing field(s): ${missing.join(', ')}` : '',
269
+ unknown.length > 0
270
+ ? managedText(language, `未知字段:${unknown.join('、')}`, `unknown field(s): ${unknown.join(', ')}`)
271
+ : '',
272
+ missing.length > 0
273
+ ? managedText(language, `缺少字段:${missing.join('、')}`, `missing field(s): ${missing.join(', ')}`)
274
+ : '',
321
275
  invalidHash,
322
276
  ].filter(Boolean);
323
277
  checks.push({
324
278
  check: `superflow-state:${entry}`,
325
279
  status: problems.length > 0 ? 'fail' : 'pass',
326
- message: problems.length > 0 ? problems.join('; ') : 'valid',
280
+ message: problems.length > 0
281
+ ? problems.join('; ')
282
+ : managedText(language, '有效', 'valid'),
327
283
  });
328
284
  }
329
285
  return checks;
@@ -342,7 +298,7 @@ function collectTopLevelYamlKeys(content) {
342
298
  }
343
299
  return keys;
344
300
  }
345
- function invalidHandoffHash(content) {
301
+ function invalidHandoffHash(content, language) {
346
302
  const match = content.match(/^handoff_hash:\s*(.*)$/m);
347
303
  if (!match)
348
304
  return '';
@@ -351,7 +307,7 @@ function invalidHandoffHash(content) {
351
307
  return '';
352
308
  return /^[a-f0-9]{64}$/.test(value)
353
309
  ? ''
354
- : `handoff_hash is not sha256: ${value}`;
310
+ : managedText(language, `handoff_hash 不是 sha256:${value}`, `handoff_hash is not sha256: ${value}`);
355
311
  }
356
312
  function safeIsDirectory(target) {
357
313
  try {
@@ -369,49 +325,65 @@ function parseDoctorScope(value) {
369
325
  function scopesForDoctor(scope) {
370
326
  return scope === 'auto' ? ['project', 'global'] : [scope];
371
327
  }
372
- function firstInstallScope(scope) {
373
- return scope === 'auto' ? 'global' : scope;
328
+ async function executableCheck(executable, language, run) {
329
+ const result = await run(executable, ['--version'], { timeout: 8_000 }).catch(() => ({ code: 1, stdout: '', stderr: '' }));
330
+ const version = [result.stdout, result.stderr]
331
+ .join('\n')
332
+ .split(/\r?\n/)
333
+ .map((line) => line.trim())
334
+ .find(Boolean);
335
+ return {
336
+ check: `${executable} CLI`,
337
+ status: result.code === 0 ? 'pass' : 'fail',
338
+ message: result.code === 0
339
+ ? managedText(language, `可用${version ? `(${version})` : ''}`, `available${version ? ` (${version})` : ''}`)
340
+ : managedText(language, '不可执行或不在 PATH', 'not executable or missing from PATH'),
341
+ ...(result.code === 0
342
+ ? {}
343
+ : {
344
+ remediation: managedText(language, `安装 ${executable} 并确认 --version 可执行`, `Install ${executable} and verify that --version succeeds`),
345
+ }),
346
+ };
374
347
  }
375
- function checkAgentDependencies(agent, failed, scope, projectPath) {
376
- const platform = getPlatformPaths(agent, scope, projectPath);
377
- const label = agent === 'claude'
378
- ? 'Claude'
379
- : agent === 'codex'
380
- ? 'Codex'
381
- : 'OpenCode';
382
- if (hasSuperpowers(agent)) {
383
- console.log(` ✓ superpowers (${label})`);
348
+ async function mcpCheck(agent, serverPath, executableStatus, language, run) {
349
+ const remediation = managedText(language, `运行 superflow mcp install --agent ${agent}`, `Run superflow mcp install --agent ${agent}`);
350
+ if (executableStatus === 'fail') {
351
+ return {
352
+ check: `managed:mcp:${agent}`,
353
+ status: 'fail',
354
+ message: managedText(language, 'Agent CLI 不可用,无法检查 MCP', 'Agent CLI is unavailable; MCP cannot be checked'),
355
+ remediation,
356
+ };
384
357
  }
385
- else {
386
- console.log(` ⚠ superpowers 未检测到(${label},WARN)`);
358
+ const args = ['mcp', 'get', 'superflow'];
359
+ const result = await run(agent, args, { timeout: 8_000 }).catch(() => ({
360
+ code: 1,
361
+ stdout: '',
362
+ stderr: '',
363
+ }));
364
+ if (result.code !== 0 || !/superflow/i.test(`${result.stdout}\n${result.stderr}`)) {
365
+ return {
366
+ check: `managed:mcp:${agent}`,
367
+ status: 'fail',
368
+ message: managedText(language, 'Superflow MCP 未配置', 'Superflow MCP is not configured'),
369
+ remediation,
370
+ };
387
371
  }
388
- if (hasUnderstand(agent)) {
389
- console.log(` ✓ understand-anything (${label})`);
390
- }
391
- else {
392
- console.log(` ⚠ understand-anything 未检测到(${label},WARN)`);
372
+ const output = `${result.stdout}\n${result.stderr}`.replaceAll('\\', '/');
373
+ const expected = serverPath.replaceAll('\\', '/');
374
+ if (!output.includes(expected)) {
375
+ return {
376
+ check: `managed:mcp:${agent}`,
377
+ status: 'warn',
378
+ message: managedText(language, 'MCP 已配置,但无法确认它指向当前 Server 文件', 'MCP is configured, but its current server path could not be verified'),
379
+ remediation,
380
+ };
393
381
  }
394
- if (existsSync(path.join(platform.skillsDir, 'api-doc-changelog', 'SKILL.md'))) {
395
- console.log(` ✓ api-doc-changelog (${label})`);
396
- }
397
- else {
398
- console.log(` ⚠ api-doc-changelog 缺失(${label},WARN)`);
399
- }
400
- return failed;
401
- }
402
- function checkHookRegistration(settingsFile, agent, failed) {
403
- if (!existsSync(settingsFile)) {
404
- console.log(` ✗ ${settingsFile} 不存在,无法检查 hook 注册(FAIL)`);
405
- return true;
406
- }
407
- const settings = JSON.parse(readFileSync(settingsFile, 'utf-8'));
408
- const sddCommands = countSddHookCommands(settingsFile, agent, settings);
409
- if (sddCommands >= 7) {
410
- console.log(` ✓ ${sddCommands} workflow hook command 已注册到 ${settingsFile}`);
411
- return failed;
412
- }
413
- console.log(` ✗ ${settingsFile} 只有 ${sddCommands} workflow hook command(FAIL,需要 7+)`);
414
- return true;
382
+ return {
383
+ check: `managed:mcp:${agent}`,
384
+ status: 'pass',
385
+ message: managedText(language, '已配置且运行路径一致', 'configured with the current runtime path'),
386
+ };
415
387
  }
416
388
  export function countSddHookCommands(settingsFile, agent, parsedSettings) {
417
389
  if (!existsSync(settingsFile))
@@ -444,10 +416,12 @@ function hasSuperpowers(agent) {
444
416
  path.join(home, '.codex', 'plugins', 'cache'),
445
417
  path.join(home, '.codex', '.tmp', 'plugins'),
446
418
  ]
447
- : [
448
- path.join(home, '.claude', 'plugins'),
449
- path.join(home, '.claude', 'plugins', 'cache'),
450
- ];
419
+ : agent === 'claude'
420
+ ? [
421
+ path.join(home, '.claude', 'plugins'),
422
+ path.join(home, '.claude', 'plugins', 'cache'),
423
+ ]
424
+ : [];
451
425
  return roots.some((root) => containsPathSegment(root, 'superpowers'));
452
426
  }
453
427
  function hasUnderstand(agent) {
@@ -458,7 +432,9 @@ function hasUnderstand(agent) {
458
432
  if (agent === 'codex') {
459
433
  return existsSync(path.join(home, '.agents', 'skills', 'understand', 'SKILL.md'));
460
434
  }
461
- return existsSync(pluginSkill);
435
+ if (agent === 'claude')
436
+ return existsSync(pluginSkill);
437
+ return false;
462
438
  }
463
439
  function containsPathSegment(root, segment) {
464
440
  if (!existsSync(root))
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/app/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/app/commands/doctor.ts"],"names":[],"mappings":"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"}