@chenmk/superflow 0.4.0 → 0.5.1

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 (242) hide show
  1. package/INSTALL.en.md +58 -12
  2. package/INSTALL.md +62 -33
  3. package/README.md +181 -54
  4. package/README.zh-CN.md +158 -51
  5. package/assets/brand/managed-review-loop.png +0 -0
  6. package/assets/manifest.json +10 -5
  7. package/assets/scripts/superflow-coding-ready.mjs +135 -0
  8. package/assets/scripts/superflow-dependency-update-hook.sh +81 -8
  9. package/assets/scripts/superflow-document-audit.mjs +240 -0
  10. package/assets/scripts/superflow-environment-preflight.mjs +398 -0
  11. package/assets/scripts/superflow-hook-guard.sh +40 -1
  12. package/assets/scripts/superflow-managed-command-guard.py +309 -0
  13. package/assets/scripts/superflow-managed-executor-preflight.mjs +421 -0
  14. package/assets/scripts/superflow-managed-owner-verification.sh +117 -0
  15. package/assets/scripts/superflow-managed-work-check.mjs +287 -26
  16. package/assets/scripts/superflow-managed-work-guard.sh +6 -92
  17. package/assets/skills/superflow-clarify/SKILL.md +14 -0
  18. package/assets/skills/superflow-design/SKILL.md +38 -13
  19. package/assets/skills/superflow-docs/SKILL.md +93 -2
  20. package/assets/skills/superflow-pipeline/SKILL.md +167 -10
  21. package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +17 -9
  22. package/assets/skills/superflow-pipeline/references/document-readiness.md +157 -0
  23. package/assets/skills/superflow-pipeline/references/document-templates.md +9 -5
  24. package/assets/skills/superflow-pipeline/references/feature-gated-workflow.md +14 -0
  25. package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +20 -11
  26. package/assets/skills/superflow-pipeline/references/managed-work.md +123 -15
  27. package/assets/skills/superflow-pipeline/references/orchestration.md +2 -2
  28. package/assets/skills/superflow-pipeline/references/p0-baseline-template.md +3 -2
  29. package/assets/skills/superflow-pipeline/references/quality-gate.md +7 -5
  30. package/assets/skills/superflow-pipeline/references/reviewer-checklist.md +7 -0
  31. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +205 -9
  32. package/assets/skills/superflow-pipeline/scripts/superflow-handoff.sh +7 -4
  33. package/assets/skills/superflow-requirement-review/SKILL.md +178 -0
  34. package/assets/skills/superflow-requirement-review/agents/openai.yaml +4 -0
  35. package/assets/skills-en/superflow-clarify/SKILL.md +17 -0
  36. package/assets/skills-en/superflow-design/SKILL.md +31 -12
  37. package/assets/skills-en/superflow-docs/SKILL.md +99 -0
  38. package/assets/skills-en/superflow-pipeline/SKILL.md +163 -9
  39. package/assets/skills-en/superflow-pipeline/references/batch-prompt-template.md +4 -0
  40. package/assets/skills-en/superflow-pipeline/references/document-readiness.md +125 -0
  41. package/assets/skills-en/superflow-pipeline/references/document-templates.md +10 -0
  42. package/assets/skills-en/superflow-pipeline/references/feature-gated-workflow.md +7 -0
  43. package/assets/skills-en/superflow-pipeline/references/implementation-prompt-template.md +7 -0
  44. package/assets/skills-en/superflow-pipeline/references/managed-work.md +160 -10
  45. package/assets/skills-en/superflow-pipeline/references/quality-gate.md +12 -0
  46. package/assets/skills-en/superflow-pipeline/references/reviewer-checklist.md +7 -0
  47. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +205 -9
  48. package/assets/skills-en/superflow-pipeline/scripts/superflow-handoff.sh +7 -4
  49. package/assets/skills-en/superflow-requirement-review/SKILL.md +99 -0
  50. package/assets/skills-en/superflow-requirement-review/agents/openai.yaml +4 -0
  51. package/dist/app/cli.js +64 -9
  52. package/dist/app/cli.js.map +1 -1
  53. package/dist/app/commands/change-guard.js +19 -2
  54. package/dist/app/commands/change-guard.js.map +1 -1
  55. package/dist/app/commands/check.js +107 -45
  56. package/dist/app/commands/check.js.map +1 -1
  57. package/dist/app/commands/docs.js +7 -3
  58. package/dist/app/commands/docs.js.map +1 -1
  59. package/dist/app/commands/doctor.js +174 -198
  60. package/dist/app/commands/doctor.js.map +1 -1
  61. package/dist/app/commands/eval.js +64 -0
  62. package/dist/app/commands/eval.js.map +1 -0
  63. package/dist/app/commands/implement.js +7 -3
  64. package/dist/app/commands/implement.js.map +1 -1
  65. package/dist/app/commands/init.js +12 -24
  66. package/dist/app/commands/init.js.map +1 -1
  67. package/dist/app/commands/mcp.js +167 -0
  68. package/dist/app/commands/mcp.js.map +1 -0
  69. package/dist/app/commands/pipeline.js +652 -18
  70. package/dist/app/commands/pipeline.js.map +1 -1
  71. package/dist/app/commands/requirement-review.js +6 -0
  72. package/dist/app/commands/requirement-review.js.map +1 -0
  73. package/dist/app/commands/status.js +66 -3
  74. package/dist/app/commands/status.js.map +1 -1
  75. package/dist/app/commands/uninstall.js +3 -3
  76. package/dist/app/commands/uninstall.js.map +1 -1
  77. package/dist/app/commands/update.js +83 -9
  78. package/dist/app/commands/update.js.map +1 -1
  79. package/dist/domains/agent.js +3 -11
  80. package/dist/domains/agent.js.map +1 -1
  81. package/dist/domains/config/cli-help.js +54 -12
  82. package/dist/domains/config/cli-help.js.map +1 -1
  83. package/dist/domains/config/i18n.js +6 -8
  84. package/dist/domains/config/i18n.js.map +1 -1
  85. package/dist/domains/config/manifest.js +0 -3
  86. package/dist/domains/config/manifest.js.map +1 -1
  87. package/dist/domains/deps.js +68 -7
  88. package/dist/domains/deps.js.map +1 -1
  89. package/dist/domains/managed-work/completion-policy.js +174 -0
  90. package/dist/domains/managed-work/completion-policy.js.map +1 -0
  91. package/dist/domains/managed-work/context-manifest.js +208 -0
  92. package/dist/domains/managed-work/context-manifest.js.map +1 -0
  93. package/dist/domains/managed-work/contract.js +135 -4
  94. package/dist/domains/managed-work/contract.js.map +1 -1
  95. package/dist/domains/managed-work/control-signals.js +34 -0
  96. package/dist/domains/managed-work/control-signals.js.map +1 -0
  97. package/dist/domains/managed-work/control.js +628 -0
  98. package/dist/domains/managed-work/control.js.map +1 -0
  99. package/dist/domains/managed-work/evaluation.js +497 -0
  100. package/dist/domains/managed-work/evaluation.js.map +1 -0
  101. package/dist/domains/managed-work/evidence-path.js +14 -0
  102. package/dist/domains/managed-work/evidence-path.js.map +1 -0
  103. package/dist/domains/managed-work/execution-contract.js +167 -0
  104. package/dist/domains/managed-work/execution-contract.js.map +1 -0
  105. package/dist/domains/managed-work/executor-policy.js +65 -0
  106. package/dist/domains/managed-work/executor-policy.js.map +1 -0
  107. package/dist/domains/managed-work/failure.js +65 -0
  108. package/dist/domains/managed-work/failure.js.map +1 -0
  109. package/dist/domains/managed-work/host-review.js +77 -0
  110. package/dist/domains/managed-work/host-review.js.map +1 -0
  111. package/dist/domains/managed-work/human-messages.js +31 -0
  112. package/dist/domains/managed-work/human-messages.js.map +1 -0
  113. package/dist/domains/managed-work/input.js +29 -3
  114. package/dist/domains/managed-work/input.js.map +1 -1
  115. package/dist/domains/managed-work/journal.js +77 -3
  116. package/dist/domains/managed-work/journal.js.map +1 -1
  117. package/dist/domains/managed-work/lock.js +67 -1
  118. package/dist/domains/managed-work/lock.js.map +1 -1
  119. package/dist/domains/managed-work/notifications.js +0 -15
  120. package/dist/domains/managed-work/notifications.js.map +1 -1
  121. package/dist/domains/managed-work/pair-admission.js +108 -0
  122. package/dist/domains/managed-work/pair-admission.js.map +1 -0
  123. package/dist/domains/managed-work/prompts.js +257 -22
  124. package/dist/domains/managed-work/prompts.js.map +1 -1
  125. package/dist/domains/managed-work/redaction.js +90 -0
  126. package/dist/domains/managed-work/redaction.js.map +1 -0
  127. package/dist/domains/managed-work/review-convergence.js +41 -0
  128. package/dist/domains/managed-work/review-convergence.js.map +1 -0
  129. package/dist/domains/managed-work/review-facts.js +181 -0
  130. package/dist/domains/managed-work/review-facts.js.map +1 -0
  131. package/dist/domains/managed-work/rule-selection.js +84 -0
  132. package/dist/domains/managed-work/rule-selection.js.map +1 -0
  133. package/dist/domains/managed-work/runner.js +1967 -175
  134. package/dist/domains/managed-work/runner.js.map +1 -1
  135. package/dist/domains/managed-work/schemas.js +72 -2
  136. package/dist/domains/managed-work/schemas.js.map +1 -1
  137. package/dist/domains/managed-work/service.js +82 -13
  138. package/dist/domains/managed-work/service.js.map +1 -1
  139. package/dist/domains/managed-work/state.js +195 -5
  140. package/dist/domains/managed-work/state.js.map +1 -1
  141. package/dist/domains/managed-work/storage.js +66 -24
  142. package/dist/domains/managed-work/storage.js.map +1 -1
  143. package/dist/domains/managed-work/types.js +12 -9
  144. package/dist/domains/managed-work/types.js.map +1 -1
  145. package/dist/domains/managed-work/verification-categories.js +39 -0
  146. package/dist/domains/managed-work/verification-categories.js.map +1 -0
  147. package/dist/domains/managed-work/verification-policy.js +116 -0
  148. package/dist/domains/managed-work/verification-policy.js.map +1 -0
  149. package/dist/domains/managed-work/wait.js +21 -3
  150. package/dist/domains/managed-work/wait.js.map +1 -1
  151. package/dist/domains/managed-work/workspace-binding.js +133 -0
  152. package/dist/domains/managed-work/workspace-binding.js.map +1 -0
  153. package/dist/domains/sdd-readiness.js +44 -0
  154. package/dist/domains/sdd-readiness.js.map +1 -0
  155. package/dist/domains/skill/deploy.js +0 -6
  156. package/dist/domains/skill/deploy.js.map +1 -1
  157. package/dist/domains/skill/scripts.js +0 -8
  158. package/dist/domains/skill/scripts.js.map +1 -1
  159. package/dist/domains/state.js +1 -2
  160. package/dist/domains/state.js.map +1 -1
  161. package/dist/mcp/runtime-identity.js +21 -0
  162. package/dist/mcp/runtime-identity.js.map +1 -0
  163. package/dist/mcp/server.js +369 -0
  164. package/dist/mcp/server.js.map +1 -0
  165. package/dist/platform/agent-process.js +499 -38
  166. package/dist/platform/agent-process.js.map +1 -1
  167. package/dist/platform/executable.js +28 -0
  168. package/dist/platform/executable.js.map +1 -0
  169. package/dist/platform/paths.js +1 -17
  170. package/dist/platform/paths.js.map +1 -1
  171. package/dist/platform/process-tree.js +44 -0
  172. package/dist/platform/process-tree.js.map +1 -0
  173. package/dist/platform/process.js +1 -1
  174. package/dist/platform/process.js.map +1 -1
  175. package/package.json +17 -7
  176. package/scripts/check-design-principles.mjs +107 -0
  177. package/scripts/check-managed-work-design.mjs +507 -0
  178. package/scripts/clean-dist.js +9 -0
  179. package/scripts/ensure-bin-modes.js +11 -0
  180. package/scripts/preinstall.js +57 -0
  181. package/dist/cli/index.js +0 -193
  182. package/dist/cli/index.js.map +0 -1
  183. package/dist/commands/archive.js +0 -6
  184. package/dist/commands/archive.js.map +0 -1
  185. package/dist/commands/clarify.js +0 -6
  186. package/dist/commands/clarify.js.map +0 -1
  187. package/dist/commands/design.js +0 -28
  188. package/dist/commands/design.js.map +0 -1
  189. package/dist/commands/docs.js +0 -6
  190. package/dist/commands/docs.js.map +0 -1
  191. package/dist/commands/doctor.js +0 -494
  192. package/dist/commands/doctor.js.map +0 -1
  193. package/dist/commands/implement.js +0 -6
  194. package/dist/commands/implement.js.map +0 -1
  195. package/dist/commands/init.js +0 -520
  196. package/dist/commands/init.js.map +0 -1
  197. package/dist/commands/pipeline.js +0 -6
  198. package/dist/commands/pipeline.js.map +0 -1
  199. package/dist/commands/scan.js +0 -63
  200. package/dist/commands/scan.js.map +0 -1
  201. package/dist/commands/status.js +0 -173
  202. package/dist/commands/status.js.map +0 -1
  203. package/dist/commands/uninstall.js +0 -214
  204. package/dist/commands/uninstall.js.map +0 -1
  205. package/dist/commands/update.js +0 -193
  206. package/dist/commands/update.js.map +0 -1
  207. package/dist/commands/verify.js +0 -6
  208. package/dist/commands/verify.js.map +0 -1
  209. package/dist/core/assets.js +0 -27
  210. package/dist/core/assets.js.map +0 -1
  211. package/dist/core/cli-help.js +0 -98
  212. package/dist/core/cli-help.js.map +0 -1
  213. package/dist/core/context.js +0 -123
  214. package/dist/core/context.js.map +0 -1
  215. package/dist/core/dependencies.js +0 -146
  216. package/dist/core/dependencies.js.map +0 -1
  217. package/dist/core/detect.js +0 -64
  218. package/dist/core/detect.js.map +0 -1
  219. package/dist/core/i18n.js +0 -105
  220. package/dist/core/i18n.js.map +0 -1
  221. package/dist/core/integrity.js +0 -46
  222. package/dist/core/integrity.js.map +0 -1
  223. package/dist/core/manifest.js +0 -21
  224. package/dist/core/manifest.js.map +0 -1
  225. package/dist/core/prompts.js +0 -20
  226. package/dist/core/prompts.js.map +0 -1
  227. package/dist/core/registry.js +0 -134
  228. package/dist/core/registry.js.map +0 -1
  229. package/dist/core/rules.js +0 -17
  230. package/dist/core/rules.js.map +0 -1
  231. package/dist/core/scripts.js +0 -48
  232. package/dist/core/scripts.js.map +0 -1
  233. package/dist/core/skill-check.js +0 -32
  234. package/dist/core/skill-check.js.map +0 -1
  235. package/dist/core/skills.js +0 -62
  236. package/dist/core/skills.js.map +0 -1
  237. package/dist/core/state.js +0 -54
  238. package/dist/core/state.js.map +0 -1
  239. package/dist/utils/path.js +0 -11
  240. package/dist/utils/path.js.map +0 -1
  241. package/dist/utils/shell.js +0 -29
  242. package/dist/utils/shell.js.map +0 -1
@@ -1,27 +0,0 @@
1
- import { getManifestHooks, getManifestRules, getManifestScripts, getManifestSkillNames, } from './manifest.js';
2
- export const ALL_SKILLS = getManifestSkillNames();
3
- export const ALL_RULES = getManifestRules();
4
- export const CODEX_PROMPTS = [
5
- 'superflow-pipeline.md',
6
- 'superflow-clarify.md',
7
- 'superflow-docs.md',
8
- 'superflow-design.md',
9
- 'superflow-implement.md',
10
- 'superflow-verify.md',
11
- 'superflow-archive.md',
12
- ];
13
- export const LEGACY_CODEX_PROMPTS = [
14
- 'sdd.md',
15
- 'sdd-spec-pipeline.md',
16
- ];
17
- export const COMMON_SCRIPTS = getManifestScripts('codex')
18
- .filter((script) => script !== 'codex-auto-backup-hook.sh');
19
- export const COMMON_HOOK_SCRIPTS = getManifestHooks('codex')
20
- .filter((script) => script !== 'codex-auto-backup-hook.sh');
21
- export function scriptsForAgent(agent) {
22
- return getManifestScripts(agent);
23
- }
24
- export function hookScriptsForAgent(agent) {
25
- return getManifestHooks(agent);
26
- }
27
- //# sourceMappingURL=assets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/core/assets.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,uBAAuB;IACvB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,sBAAsB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC;KACtD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,2BAA2B,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC;KACzD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,2BAA2B,CAAC,CAAC;AAE9D,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAY;IAC9C,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -1,98 +0,0 @@
1
- import { normalizeLanguage } from './i18n.js';
2
- const CLI_TEXT = {
3
- en: {
4
- programDescription: 'SuperBridge Flow - SDD/TDD workflow CLI',
5
- initDescription: 'Install and configure SuperBridge Flow',
6
- scanDescription: 'Rerun project context scaffolding and understand-anything check',
7
- clarifyDescription: 'Check SuperBridge Flow clarify skill deployment',
8
- docsDescription: 'Check SuperBridge Flow docs skill deployment',
9
- designDescription: 'Check SuperBridge Flow design skill deployment',
10
- implementDescription: 'Check SuperBridge Flow implement skill deployment',
11
- pipelineDescription: 'Check SuperBridge Flow pipeline skill deployment',
12
- verifyDescription: 'Check SuperBridge Flow verify skill deployment',
13
- archiveDescription: 'Check SuperBridge Flow archive skill deployment',
14
- statusDescription: 'Show active SuperBridge Flow changes and next commands',
15
- updateDescription: 'Update installed SuperBridge Flow skills, scripts, and hooks',
16
- doctorDescription: 'Diagnose SuperBridge Flow installation health',
17
- uninstallDescription: 'Uninstall skills, scripts, and hooks managed by SuperBridge Flow',
18
- dryRun: 'Print the plan without writing files',
19
- agentOption: 'Install/check target: claude | codex | opencode | both | all',
20
- scopeOption: 'Install scope: global | project',
21
- updateScopeOption: 'Update scope: auto | global | project',
22
- commandScopeOption: 'Scope: auto | global | project',
23
- languageOption: 'Language: en | zh',
24
- yesOption: 'Run non-interactively with defaults',
25
- jsonOption: 'Output JSON',
26
- resumeOption: 'Resume from the failed step',
27
- skipExistingOption: 'Keep existing skills/scripts unchanged',
28
- overwriteOption: 'Overwrite existing skills without creating backups',
29
- noHooksOption: 'Install skills and scripts only; skip hook registration',
30
- noOpenspecInitOption: 'Skip native OpenSpec initialization for this project',
31
- noScanOption: 'Skip project context scaffolding and scan hints',
32
- forceOption: 'Overwrite existing docs/sdd-context files',
33
- noHooksUpdateOption: 'Skip hook re-registration',
34
- withPackageOption: 'Also run npm update for @chenmk/superflow',
35
- uninstallForceOption: 'Skip confirmation prompt',
36
- withDepsOption: 'Also uninstall OpenSpec, Superpowers, and Understand dependencies',
37
- },
38
- zh: {
39
- programDescription: 'SuperBridge Flow - SDD/TDD 工作流 CLI',
40
- initDescription: '一站式安装 SuperBridge Flow(detect / deps / skills / scripts / hooks / 项目扫描)',
41
- scanDescription: '单独重跑项目扫描(脚手架 docs/sdd-context/ + understand-anything)',
42
- clarifyDescription: '校验 SuperBridge Flow clarify 阶段技能部署状态',
43
- docsDescription: '校验 SuperBridge Flow docs 阶段技能部署状态',
44
- designDescription: '校验 SuperBridge Flow design 阶段技能部署状态',
45
- implementDescription: '校验 SuperBridge Flow implement 阶段技能部署状态',
46
- pipelineDescription: '校验 SuperBridge Flow pipeline 阶段技能部署状态',
47
- verifyDescription: '校验 SuperBridge Flow verify 阶段技能部署状态',
48
- archiveDescription: '校验 SuperBridge Flow archive 阶段技能部署状态',
49
- statusDescription: '查看当前项目 active SuperBridge Flow changes 和下一步 superflow 命令',
50
- updateDescription: '更新已安装的 SuperBridge Flow skills、scripts 和 hooks',
51
- doctorDescription: '诊断 SuperBridge Flow 安装健康',
52
- uninstallDescription: '卸载 SuperBridge Flow 管理的技能、脚本和 hook 注册',
53
- dryRun: '只打印计划不执行',
54
- agentOption: '安装/校验目标:claude | codex | opencode | both | all',
55
- scopeOption: '安装作用域:global | project',
56
- updateScopeOption: '更新作用域:auto | global | project',
57
- commandScopeOption: '作用域:auto | global | project',
58
- languageOption: '语言:en | zh',
59
- yesOption: '非交互确认安装(默认参数)',
60
- jsonOption: '输出 JSON',
61
- resumeOption: '从失败步骤继续',
62
- skipExistingOption: '已存在的 skill/script 保持不动',
63
- overwriteOption: '已存在的 skill 直接覆盖,不额外生成 backup',
64
- noHooksOption: '只装技能 + 脚本,跳过 hook 注册(hook 手工配)',
65
- noOpenspecInitOption: '跳过当前项目 OpenSpec 原生初始化',
66
- noScanOption: '跳过项目上下文脚手架和扫描提示',
67
- forceOption: '覆盖现有 docs/sdd-context 文件',
68
- noHooksUpdateOption: '跳过 hook 重新注册',
69
- withPackageOption: '同时执行 npm update 更新 @chenmk/superflow 包',
70
- uninstallForceOption: '跳过确认提示',
71
- withDepsOption: '同时卸载 OpenSpec、Superpowers、Understand 依赖',
72
- },
73
- };
74
- export function cliText(language) {
75
- return CLI_TEXT[language];
76
- }
77
- export function resolveCliLanguage(argv = process.argv, env = process.env) {
78
- const fromArg = languageFromArgv(argv);
79
- if (fromArg)
80
- return fromArg;
81
- return normalizeLanguage(env.SUPERFLOW_LANG) ?? 'zh';
82
- }
83
- function languageFromArgv(argv) {
84
- for (let i = 0; i < argv.length; i++) {
85
- const arg = argv[i];
86
- if (arg === '--language' || arg === '--lang') {
87
- return normalizeLanguage(argv[i + 1]);
88
- }
89
- if (arg.startsWith('--language=')) {
90
- return normalizeLanguage(arg.slice('--language='.length));
91
- }
92
- if (arg.startsWith('--lang=')) {
93
- return normalizeLanguage(arg.slice('--lang='.length));
94
- }
95
- }
96
- return null;
97
- }
98
- //# sourceMappingURL=cli-help.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../../src/core/cli-help.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import path from 'path';
3
- import { fileURLToPath } from 'url';
4
- const __filename = fileURLToPath(import.meta.url);
5
- const __dirname = path.dirname(__filename);
6
- // dist/core/context.js -> ../../assets/context-templates*
7
- const ASSETS_DIR = path.resolve(__dirname, '..', '..', 'assets');
8
- const CONTEXT_FILES = [
9
- 'business-rules.md',
10
- 'incidents.md',
11
- 'decisions.md',
12
- 'external-systems.md',
13
- ];
14
- function templatesDir(language = 'zh') {
15
- return path.join(ASSETS_DIR, language === 'en' ? 'context-templates-en' : 'context-templates');
16
- }
17
- /**
18
- * 把 4 个初始文件从 assets/context-templates/ 复制到 <cwd>/docs/sdd-context/
19
- * - 已存在则跳过(保留用户已编辑的,不覆盖)
20
- * - 目录不存在则创建
21
- */
22
- export async function scaffoldBusinessContext(cwd, language = 'zh') {
23
- const targetDir = path.join(cwd, 'docs', 'sdd-context');
24
- const copied = [];
25
- const skipped = [];
26
- // 确保目标目录存在
27
- try {
28
- await fs.mkdir(targetDir, { recursive: true });
29
- }
30
- catch (err) {
31
- throw new Error(`无法创建 ${targetDir}: ${err.message}`);
32
- }
33
- for (const filename of CONTEXT_FILES) {
34
- const target = path.join(targetDir, filename);
35
- try {
36
- await fs.access(target);
37
- // 文件已存在,跳过(保留用户编辑)
38
- skipped.push(filename);
39
- }
40
- catch {
41
- // 文件不存在,复制
42
- const source = path.join(templatesDir(language), filename);
43
- try {
44
- await fs.copyFile(source, target);
45
- copied.push(filename);
46
- }
47
- catch (err) {
48
- // 单个文件失败不阻塞,记录但继续
49
- skipped.push(`${filename} (copy failed: ${err.message})`);
50
- }
51
- }
52
- }
53
- return { copied, skipped };
54
- }
55
- /**
56
- * 检查 understand-anything 是否已扫过当前项目
57
- * (understand-anything 由 agent 技能触发,CLI 只做轻量检测)
58
- * - 扫过:返回 ok=true, graphPath 指向 .understand-anything/knowledge-graph.json
59
- * - 没扫:返回 ok=false, 提示用户在 Claude 会话中跑 /understand
60
- */
61
- export async function checkUnderstandScan(cwd) {
62
- const graphPath = path.join(cwd, '.understand-anything', 'knowledge-graph.json');
63
- try {
64
- await fs.access(graphPath);
65
- return { ok: true, reason: 'already-scanned', graphPath };
66
- }
67
- catch {
68
- return { ok: false, reason: 'not-scanned' };
69
- }
70
- }
71
- /**
72
- * 打印软提示:引导用户去看 docs/sdd-context/,并提示可让 LLM 协助补全
73
- * 末尾用换行分隔,避免紧贴下面命令输出
74
- */
75
- export function printSoftPrompt(cwd, scaffolding, understand, language = 'zh') {
76
- const zh = language === 'zh';
77
- console.log('');
78
- console.log('━'.repeat(70));
79
- console.log(zh
80
- ? '💡 已在 docs/sdd-context/ 生成 4 个初始文件'
81
- : '💡 Generated 4 starter files under docs/sdd-context/');
82
- for (const f of CONTEXT_FILES) {
83
- const status = scaffolding.copied.includes(f)
84
- ? (zh ? '✓ 复制' : '✓ copied')
85
- : scaffolding.skipped.includes(f)
86
- ? (zh ? '○ 跳过(已存在)' : '○ skipped (already exists)')
87
- : (zh ? '✗ 失败' : '✗ failed');
88
- console.log(` [${status}] ${f}`);
89
- }
90
- console.log('');
91
- console.log(zh
92
- ? '📖 建议:阅读这 4 个文件了解项目业务上下文'
93
- : '📖 Recommended: review these files and fill in project-specific context');
94
- console.log(zh
95
- ? ' 如果项目结构 / 业务规则与初始版不符,直接编辑文件即可'
96
- : ' Edit the files directly when project structure or rules differ');
97
- console.log(zh
98
- ? ' 完善后的文档能帮 sdd 技能更精确地理解你的项目'
99
- : ' Better context helps Superflow understand the project more accurately');
100
- console.log('');
101
- console.log(zh
102
- ? '🤖 LLM 协助补全:把这 4 个文件 + 项目源码 一起发给 Claude,'
103
- : '🤖 LLM-assisted backfill: ask your agent to read these files plus source code');
104
- console.log(zh
105
- ? ' 让其协助补全缺失内容'
106
- : ' and fill missing project-specific rules and integration facts');
107
- if (understand.ok) {
108
- console.log('');
109
- console.log((zh ? '🔍 understand-anything 已扫项目:' : '🔍 understand-anything graph detected: ') + understand.graphPath);
110
- }
111
- else {
112
- console.log('');
113
- console.log(zh
114
- ? '⚠️ understand-anything 还没扫(可选):'
115
- : '⚠️ understand-anything has not scanned this project yet (optional):');
116
- console.log(zh
117
- ? ' 在 Claude 会话中跑 /understand(输出 .understand-anything/knowledge-graph.json)'
118
- : ' Run /understand in an agent session to produce .understand-anything/knowledge-graph.json');
119
- }
120
- console.log('━'.repeat(70));
121
- console.log('');
122
- }
123
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
@@ -1,146 +0,0 @@
1
- import { promises as fs } from 'fs';
2
- import { homedir } from 'os';
3
- import path from 'path';
4
- import { fileURLToPath } from 'url';
5
- import { runCommand } from '../platform/process.js';
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = path.dirname(__filename);
8
- // dist/core/dependencies.js → ../../assets
9
- const ASSETS_DIR = path.resolve(__dirname, '..', '..', 'assets');
10
- function alreadyInstalled(output) {
11
- return /already\s+(installed|exists)|is\s+already\s+installed|already\s+added/i.test(output);
12
- }
13
- /**
14
- * 安装 openspec CLI(npm 全局)
15
- * 失败阻塞 init(核心依赖)
16
- */
17
- export async function installOpenspec() {
18
- const result = await runCommand('npm', ['install', '-g', '@fission-ai/openspec@latest']);
19
- if (result.code !== 0) {
20
- return { ok: false, error: `npm install failed: ${result.stderr}` };
21
- }
22
- return { ok: true };
23
- }
24
- export function openspecInitArgs(projectPath, agents, _scope, includeProfile = true) {
25
- const args = ['init', projectPath, '--tools', agents.join(',')];
26
- if (includeProfile) {
27
- args.push('--profile', 'custom');
28
- }
29
- return args;
30
- }
31
- export async function initializeOpenspec(projectPath, agents, scope) {
32
- const args = openspecInitArgs(projectPath, agents, scope);
33
- const result = await runCommand('openspec', args, {
34
- cwd: projectPath,
35
- timeout: 120_000,
36
- });
37
- if (result.code === 0)
38
- return { ok: true };
39
- const stderr = result.stderr || result.stdout;
40
- if (stderr.includes('unknown option') && stderr.includes('--profile')) {
41
- const fallback = await runCommand('openspec', openspecInitArgs(projectPath, agents, scope, false), { cwd: projectPath, timeout: 120_000 });
42
- if (fallback.code === 0)
43
- return { ok: true };
44
- return { ok: false, error: fallback.stderr || fallback.stdout };
45
- }
46
- return { ok: false, error: stderr };
47
- }
48
- /**
49
- * 安装 superpowers(claude 插件)
50
- * 失败阻塞 init(核心 HOW/TDD 依赖;已装视为成功)
51
- */
52
- export async function installSuperpowers() {
53
- const result = await runCommand('claude', [
54
- 'plugin',
55
- 'install',
56
- 'superpowers@superpowers-marketplace',
57
- ]);
58
- if (result.code !== 0) {
59
- const output = `${result.stderr}\n${result.stdout}`;
60
- if (alreadyInstalled(output))
61
- return { ok: true };
62
- return { ok: false, error: result.stderr };
63
- }
64
- return { ok: true };
65
- }
66
- /**
67
- * 安装 superpowers(Codex 插件)
68
- * 失败阻塞 init(核心 HOW/TDD 依赖;已装视为成功)
69
- */
70
- export async function installCodexSuperpowers() {
71
- const result = await runCommand('codex', [
72
- 'plugin',
73
- 'add',
74
- 'superpowers@openai-curated',
75
- ]);
76
- if (result.code !== 0) {
77
- const output = `${result.stderr}\n${result.stdout}`;
78
- if (alreadyInstalled(output))
79
- return { ok: true };
80
- return { ok: false, error: result.stderr || result.stdout };
81
- }
82
- return { ok: true };
83
- }
84
- /**
85
- * 安装 understand-anything(claude 插件)
86
- */
87
- export async function installUnderstand() {
88
- const result = await runCommand('claude', [
89
- 'plugin',
90
- 'install',
91
- 'understand-anything@understand-anything',
92
- ]);
93
- if (result.code !== 0) {
94
- return { ok: false, error: result.stderr };
95
- }
96
- return { ok: true };
97
- }
98
- /**
99
- * 安装 understand-anything(Codex / agents 技能链接)
100
- */
101
- export async function installCodexUnderstand() {
102
- const script = path.join(homedir(), '.understand-anything', 'repo', 'install.sh');
103
- const result = await runCommand('bash', [script, 'codex']);
104
- if (result.code !== 0) {
105
- const fallback = await linkCodexUnderstandSkills();
106
- if (fallback.ok)
107
- return fallback;
108
- return { ok: false, error: `${result.stderr || result.stdout}\n${fallback.error}` };
109
- }
110
- return { ok: true };
111
- }
112
- async function linkCodexUnderstandSkills() {
113
- const sourceRoot = path.join(homedir(), '.understand-anything', 'repo', 'understand-anything-plugin', 'skills');
114
- const targetRoot = path.join(homedir(), '.agents', 'skills');
115
- try {
116
- const entries = await fs.readdir(sourceRoot, { withFileTypes: true });
117
- await fs.mkdir(targetRoot, { recursive: true });
118
- for (const entry of entries) {
119
- if (!entry.isDirectory())
120
- continue;
121
- const source = path.join(sourceRoot, entry.name);
122
- const target = path.join(targetRoot, entry.name);
123
- await fs.rm(target, { recursive: true, force: true });
124
- await fs.symlink(source, target, process.platform === 'win32' ? 'junction' : 'dir');
125
- }
126
- return { ok: true };
127
- }
128
- catch (err) {
129
- return { ok: false, error: `understand-anything fallback failed: ${err.message}` };
130
- }
131
- }
132
- /**
133
- * 安装 api-doc-changelog(直接复制)
134
- */
135
- export async function installApiDocChangelog(skillsDir = path.join(homedir(), '.claude', 'skills')) {
136
- const source = path.join(ASSETS_DIR, 'skills', 'api-doc-changelog');
137
- const dest = path.join(skillsDir, 'api-doc-changelog');
138
- try {
139
- await fs.cp(source, dest, { recursive: true, force: true });
140
- return { ok: true };
141
- }
142
- catch (err) {
143
- return { ok: false, error: err.message };
144
- }
145
- }
146
- //# sourceMappingURL=dependencies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/core/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- export const DEFAULT_AGENTS = ['claude', 'codex'];
2
- export const ALL_AGENTS = ['claude', 'codex', 'opencode'];
3
- export function parseInstallScope(value) {
4
- if (value === undefined || value === null || value === '')
5
- return 'global';
6
- if (value === 'global' || value === 'project')
7
- return value;
8
- throw new Error(`--scope must be one of: global, project`);
9
- }
10
- export function resolveAgents(selection) {
11
- if (Array.isArray(selection)) {
12
- return [...new Set(selection)];
13
- }
14
- switch (selection) {
15
- case 'both':
16
- return DEFAULT_AGENTS;
17
- case 'all':
18
- return ALL_AGENTS;
19
- case 'claude':
20
- case 'codex':
21
- case 'opencode':
22
- return [selection];
23
- default:
24
- throw new Error(`Unknown agent selection: ${selection}`);
25
- }
26
- }
27
- export function parseAgentSelection(value) {
28
- if (value === undefined || value === null || value === '')
29
- return 'both';
30
- if (typeof value !== 'string') {
31
- throw new Error(`--agent must be one of: claude, codex, opencode, both, all`);
32
- }
33
- const normalized = value.trim().toLowerCase();
34
- if (normalized === 'both')
35
- return 'both';
36
- if (normalized === 'all')
37
- return 'all';
38
- const parts = normalized
39
- .split(/[,\s]+/)
40
- .map((part) => part.trim())
41
- .filter(Boolean);
42
- if (parts.length === 0)
43
- return 'both';
44
- const selected = new Set();
45
- for (const part of parts) {
46
- if (part === 'claude' || part === 'codex' || part === 'opencode') {
47
- selected.add(part);
48
- }
49
- else {
50
- throw new Error(`--agent must be one of: claude, codex, opencode, both, all`);
51
- }
52
- }
53
- const agents = [...selected];
54
- if (agents.length === 1)
55
- return agents[0];
56
- if (agents.length === DEFAULT_AGENTS.length &&
57
- DEFAULT_AGENTS.every((agent) => selected.has(agent))) {
58
- return 'both';
59
- }
60
- if (agents.length === ALL_AGENTS.length)
61
- return 'all';
62
- return agents;
63
- }
64
- //# sourceMappingURL=detect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"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"}
package/dist/core/i18n.js DELETED
@@ -1,105 +0,0 @@
1
- const TRANSLATIONS = {
2
- en: {
3
- agentPrompt: 'Select agent tools to initialize (multi-select):',
4
- agentClaude: 'Claude Code',
5
- agentCodex: 'Codex',
6
- agentOpenCode: 'OpenCode',
7
- agentBoth: 'Install Claude Code and Codex (default); use all for OpenCode too',
8
- agentAnswer: 'Enter 1,2 / 2,3 / all / a:',
9
- agentInvalid: 'Invalid input. Enter 1, 2, 3, 1,2, 2,3, claude, codex, opencode, all, or a.',
10
- languagePrompt: 'Select SuperBridge Flow language:',
11
- languageEnglish: 'English',
12
- languageChinese: 'Chinese',
13
- languageInvalid: 'Invalid input. Enter en, zh, 1, or 2.',
14
- stepDetect: 'Detect platform',
15
- stepDeps: 'Install dependencies and initialize OpenSpec',
16
- stepSkills: 'Deploy SuperBridge Flow/OpenSpec skills',
17
- stepScriptsHooks: 'Deploy scripts and register hooks',
18
- stepPrompts: 'Deploy prompt and command aliases',
19
- stepRules: 'Deploy SuperBridge Flow anti-drift rules',
20
- stepScan: 'Scaffold docs/sdd-context and check understand-anything',
21
- summaryTitle: 'superflow init summary',
22
- stateLabel: 'State',
23
- initComplete: 'superflow init complete',
24
- runResume: "Run 'superflow init --resume' to continue from this step.",
25
- noActiveChanges: 'No active SuperBridge Flow changes.',
26
- statusHeader: 'Active SuperBridge Flow changes',
27
- nextDocs: 'Current phase is docs. Continue OpenSpec/SDD contract documents.',
28
- nextDesign: 'Current phase is design. Continue Superpowers source-level technical design.',
29
- nextImplementDone: 'Implementation tasks are complete. Run pre-verify checks.',
30
- nextVerifyFailed: 'The last verify failed. Fix failures from the verification report first.',
31
- nextVerify: 'Current phase is verify. Add real evidence and run verification gates.',
32
- nextArchive: 'Verify passed; archive is waiting for explicit confirmation.',
33
- nextUnknown: 'Current phase is unknown. Inspect .sdd/state.yaml first.',
34
- riskUnknownPhase: 'phase is missing or unknown.',
35
- riskTasksMissing: 'tasks.md is missing or empty.',
36
- riskReviewMissing: 'full workflow has not selected review_mode.',
37
- riskVerifyFailed: 'The last verify failed.',
38
- riskTestReportMissing: 'verify phase is missing test-report.md.',
39
- updateTitle: 'SuperBridge Flow update',
40
- packageLabel: 'packages',
41
- skillsLabel: 'skills',
42
- rulesLabel: 'rules',
43
- scriptsLabel: 'scripts',
44
- hooksLabel: 'hooks',
45
- },
46
- zh: {
47
- agentPrompt: '请选择要初始化的 agent 工具(可多选):',
48
- agentClaude: 'Claude Code',
49
- agentCodex: 'Codex',
50
- agentOpenCode: 'OpenCode',
51
- agentBoth: '安装 Claude Code + Codex(默认);输入 all 会包含 OpenCode',
52
- agentAnswer: '输入序号,例如 1,2 / 2,3 / all / a:',
53
- agentInvalid: '输入无效,请输入 1、2、3、1,2、2,3、claude、codex、opencode、all 或 a。',
54
- languagePrompt: '请选择 SuperBridge Flow 语言:',
55
- languageEnglish: '英文',
56
- languageChinese: '中文',
57
- languageInvalid: '输入无效,请输入 en、zh、1 或 2。',
58
- stepDetect: '检测平台',
59
- stepDeps: '安装第三方依赖并初始化 OpenSpec',
60
- stepSkills: '部署 SuperBridge Flow/OpenSpec 技能',
61
- stepScriptsHooks: '部署脚本 + 注册 hook',
62
- stepPrompts: '部署 prompt/command alias',
63
- stepRules: '部署 SuperBridge Flow 防漂移规则',
64
- stepScan: '脚手架 docs/sdd-context/ + understand-anything 扫描 + 软提示',
65
- summaryTitle: 'superflow init summary',
66
- stateLabel: 'State',
67
- initComplete: 'superflow init complete',
68
- runResume: "Run 'superflow init --resume' to continue from this step.",
69
- noActiveChanges: 'No active SuperBridge Flow changes.',
70
- statusHeader: 'Active SuperBridge Flow changes',
71
- nextDocs: '当前处于 docs 阶段,继续生成或补齐 OpenSpec/SDD 合同文档。',
72
- nextDesign: '当前处于 design 阶段,继续生成 Superpowers 源码级技术详设。',
73
- nextImplementDone: 'implement 任务已完成,可以进入 verify 前检查。',
74
- nextVerifyFailed: '最近一次 verify 失败,先修复验证报告中的失败项。',
75
- nextVerify: '当前处于 verify 阶段,补齐真实验证证据并运行验收门禁。',
76
- nextArchive: 'verify 已通过后进入 archive,等待明确归档确认。',
77
- nextUnknown: '当前 phase 未知,先检查 .sdd/state.yaml。',
78
- riskUnknownPhase: 'phase 缺失或未知。',
79
- riskTasksMissing: '缺少 tasks.md 或任务清单为空。',
80
- riskReviewMissing: 'full workflow 尚未选择 review_mode。',
81
- riskVerifyFailed: '最近一次 verify 失败。',
82
- riskTestReportMissing: 'verify 阶段缺少 test-report.md。',
83
- updateTitle: 'SuperBridge Flow update',
84
- packageLabel: 'packages',
85
- skillsLabel: 'skills',
86
- rulesLabel: 'rules',
87
- scriptsLabel: 'scripts',
88
- hooksLabel: 'hooks',
89
- },
90
- };
91
- export function normalizeLanguage(value) {
92
- if (typeof value !== 'string')
93
- return null;
94
- const normalized = value.trim().toLowerCase();
95
- if (normalized === 'en' || normalized === 'english' || normalized === '1')
96
- return 'en';
97
- if (normalized === 'zh' || normalized === 'cn' || normalized === 'chinese' || normalized === '2') {
98
- return 'zh';
99
- }
100
- return null;
101
- }
102
- export function t(language, key) {
103
- return TRANSLATIONS[language][key];
104
- }
105
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"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"}