@specpow/framework 0.2.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 (362) hide show
  1. package/CHANGELOG.md +307 -0
  2. package/LICENSE +21 -0
  3. package/README.md +557 -0
  4. package/agents/controller/sdd-controller.md +55 -0
  5. package/agents/execution/java-codegen-agent.md +39 -0
  6. package/agents/execution/ui-codegen-agent.md +32 -0
  7. package/agents/ops/deploy-agent.md +181 -0
  8. package/agents/planning/db-designer-agent.md +30 -0
  9. package/agents/planning/prd-agent.md +31 -0
  10. package/agents/quality/review-agent.md +36 -0
  11. package/agents/quality/test-agent.md +33 -0
  12. package/bin/specpow.js +10 -0
  13. package/dist/cli/index.d.ts +7 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +444 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/commands/apply.d.ts +14 -0
  18. package/dist/commands/apply.d.ts.map +1 -0
  19. package/dist/commands/apply.js +195 -0
  20. package/dist/commands/apply.js.map +1 -0
  21. package/dist/commands/archive.d.ts +30 -0
  22. package/dist/commands/archive.d.ts.map +1 -0
  23. package/dist/commands/archive.js +141 -0
  24. package/dist/commands/archive.js.map +1 -0
  25. package/dist/commands/channel.d.ts +61 -0
  26. package/dist/commands/channel.d.ts.map +1 -0
  27. package/dist/commands/channel.js +613 -0
  28. package/dist/commands/channel.js.map +1 -0
  29. package/dist/commands/config.d.ts +40 -0
  30. package/dist/commands/config.d.ts.map +1 -0
  31. package/dist/commands/config.js +130 -0
  32. package/dist/commands/config.js.map +1 -0
  33. package/dist/commands/debug.d.ts +45 -0
  34. package/dist/commands/debug.d.ts.map +1 -0
  35. package/dist/commands/debug.js +167 -0
  36. package/dist/commands/debug.js.map +1 -0
  37. package/dist/commands/doctor.d.ts +20 -0
  38. package/dist/commands/doctor.d.ts.map +1 -0
  39. package/dist/commands/doctor.js +121 -0
  40. package/dist/commands/doctor.js.map +1 -0
  41. package/dist/commands/execute.d.ts +25 -0
  42. package/dist/commands/execute.d.ts.map +1 -0
  43. package/dist/commands/execute.js +120 -0
  44. package/dist/commands/execute.js.map +1 -0
  45. package/dist/commands/explore.d.ts +71 -0
  46. package/dist/commands/explore.d.ts.map +1 -0
  47. package/dist/commands/explore.js +481 -0
  48. package/dist/commands/explore.js.map +1 -0
  49. package/dist/commands/init.d.ts +20 -0
  50. package/dist/commands/init.d.ts.map +1 -0
  51. package/dist/commands/init.js +146 -0
  52. package/dist/commands/init.js.map +1 -0
  53. package/dist/commands/memory.d.ts +32 -0
  54. package/dist/commands/memory.d.ts.map +1 -0
  55. package/dist/commands/memory.js +455 -0
  56. package/dist/commands/memory.js.map +1 -0
  57. package/dist/commands/propose.d.ts +13 -0
  58. package/dist/commands/propose.d.ts.map +1 -0
  59. package/dist/commands/propose.js +193 -0
  60. package/dist/commands/propose.js.map +1 -0
  61. package/dist/commands/review.d.ts +50 -0
  62. package/dist/commands/review.d.ts.map +1 -0
  63. package/dist/commands/review.js +198 -0
  64. package/dist/commands/review.js.map +1 -0
  65. package/dist/commands/schema.d.ts +22 -0
  66. package/dist/commands/schema.d.ts.map +1 -0
  67. package/dist/commands/schema.js +79 -0
  68. package/dist/commands/schema.js.map +1 -0
  69. package/dist/commands/status.d.ts +11 -0
  70. package/dist/commands/status.d.ts.map +1 -0
  71. package/dist/commands/status.js +130 -0
  72. package/dist/commands/status.js.map +1 -0
  73. package/dist/commands/store.d.ts +31 -0
  74. package/dist/commands/store.d.ts.map +1 -0
  75. package/dist/commands/store.js +109 -0
  76. package/dist/commands/store.js.map +1 -0
  77. package/dist/commands/update.d.ts +42 -0
  78. package/dist/commands/update.d.ts.map +1 -0
  79. package/dist/commands/update.js +239 -0
  80. package/dist/commands/update.js.map +1 -0
  81. package/dist/commands/verify.d.ts +39 -0
  82. package/dist/commands/verify.d.ts.map +1 -0
  83. package/dist/commands/verify.js +386 -0
  84. package/dist/commands/verify.js.map +1 -0
  85. package/dist/commands/workflow/index.d.ts +12 -0
  86. package/dist/commands/workflow/index.d.ts.map +1 -0
  87. package/dist/commands/workflow/index.js +435 -0
  88. package/dist/commands/workflow/index.js.map +1 -0
  89. package/dist/core/agent-contract.d.ts +133 -0
  90. package/dist/core/agent-contract.d.ts.map +1 -0
  91. package/dist/core/agent-contract.js +71 -0
  92. package/dist/core/agent-contract.js.map +1 -0
  93. package/dist/core/archive/delta-merger.d.ts +101 -0
  94. package/dist/core/archive/delta-merger.d.ts.map +1 -0
  95. package/dist/core/archive/delta-merger.js +398 -0
  96. package/dist/core/archive/delta-merger.js.map +1 -0
  97. package/dist/core/archive/delta-parser.d.ts +48 -0
  98. package/dist/core/archive/delta-parser.d.ts.map +1 -0
  99. package/dist/core/archive/delta-parser.js +193 -0
  100. package/dist/core/archive/delta-parser.js.map +1 -0
  101. package/dist/core/archive/engine.d.ts +136 -0
  102. package/dist/core/archive/engine.d.ts.map +1 -0
  103. package/dist/core/archive/engine.js +506 -0
  104. package/dist/core/archive/engine.js.map +1 -0
  105. package/dist/core/archive/index.d.ts +11 -0
  106. package/dist/core/archive/index.d.ts.map +1 -0
  107. package/dist/core/archive/index.js +9 -0
  108. package/dist/core/archive/index.js.map +1 -0
  109. package/dist/core/artifact-graph/graph.d.ts +48 -0
  110. package/dist/core/artifact-graph/graph.d.ts.map +1 -0
  111. package/dist/core/artifact-graph/graph.js +170 -0
  112. package/dist/core/artifact-graph/graph.js.map +1 -0
  113. package/dist/core/artifact-graph/index.d.ts +13 -0
  114. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  115. package/dist/core/artifact-graph/index.js +12 -0
  116. package/dist/core/artifact-graph/index.js.map +1 -0
  117. package/dist/core/artifact-graph/instruction-loader.d.ts +60 -0
  118. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
  119. package/dist/core/artifact-graph/instruction-loader.js +166 -0
  120. package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
  121. package/dist/core/artifact-graph/outputs.d.ts +17 -0
  122. package/dist/core/artifact-graph/outputs.d.ts.map +1 -0
  123. package/dist/core/artifact-graph/outputs.js +27 -0
  124. package/dist/core/artifact-graph/outputs.js.map +1 -0
  125. package/dist/core/artifact-graph/resolver.d.ts +34 -0
  126. package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
  127. package/dist/core/artifact-graph/resolver.js +99 -0
  128. package/dist/core/artifact-graph/resolver.js.map +1 -0
  129. package/dist/core/artifact-graph/state.d.ts +54 -0
  130. package/dist/core/artifact-graph/state.d.ts.map +1 -0
  131. package/dist/core/artifact-graph/state.js +149 -0
  132. package/dist/core/artifact-graph/state.js.map +1 -0
  133. package/dist/core/artifact-graph/types.d.ts +151 -0
  134. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  135. package/dist/core/artifact-graph/types.js +44 -0
  136. package/dist/core/artifact-graph/types.js.map +1 -0
  137. package/dist/core/channel/channel-event-log.d.ts +81 -0
  138. package/dist/core/channel/channel-event-log.d.ts.map +1 -0
  139. package/dist/core/channel/channel-event-log.js +177 -0
  140. package/dist/core/channel/channel-event-log.js.map +1 -0
  141. package/dist/core/channel/channel-inbox.d.ts +70 -0
  142. package/dist/core/channel/channel-inbox.d.ts.map +1 -0
  143. package/dist/core/channel/channel-inbox.js +122 -0
  144. package/dist/core/channel/channel-inbox.js.map +1 -0
  145. package/dist/core/channel/channel-runtime.d.ts +81 -0
  146. package/dist/core/channel/channel-runtime.d.ts.map +1 -0
  147. package/dist/core/channel/channel-runtime.js +291 -0
  148. package/dist/core/channel/channel-runtime.js.map +1 -0
  149. package/dist/core/channel/channel-supervisor.d.ts +72 -0
  150. package/dist/core/channel/channel-supervisor.d.ts.map +1 -0
  151. package/dist/core/channel/channel-supervisor.js +189 -0
  152. package/dist/core/channel/channel-supervisor.js.map +1 -0
  153. package/dist/core/channel/channel-types.d.ts +169 -0
  154. package/dist/core/channel/channel-types.d.ts.map +1 -0
  155. package/dist/core/channel/channel-types.js +26 -0
  156. package/dist/core/channel/channel-types.js.map +1 -0
  157. package/dist/core/channel/index.d.ts +21 -0
  158. package/dist/core/channel/index.d.ts.map +1 -0
  159. package/dist/core/channel/index.js +23 -0
  160. package/dist/core/channel/index.js.map +1 -0
  161. package/dist/core/command-generation/index.d.ts +225 -0
  162. package/dist/core/command-generation/index.d.ts.map +1 -0
  163. package/dist/core/command-generation/index.js +462 -0
  164. package/dist/core/command-generation/index.js.map +1 -0
  165. package/dist/core/config/config-schema.d.ts +745 -0
  166. package/dist/core/config/config-schema.d.ts.map +1 -0
  167. package/dist/core/config/config-schema.js +108 -0
  168. package/dist/core/config/config-schema.js.map +1 -0
  169. package/dist/core/config/global-config.d.ts +73 -0
  170. package/dist/core/config/global-config.d.ts.map +1 -0
  171. package/dist/core/config/global-config.js +225 -0
  172. package/dist/core/config/global-config.js.map +1 -0
  173. package/dist/core/config/index.d.ts +8 -0
  174. package/dist/core/config/index.d.ts.map +1 -0
  175. package/dist/core/config/index.js +8 -0
  176. package/dist/core/config/index.js.map +1 -0
  177. package/dist/core/hooks/hook-registry.d.ts +55 -0
  178. package/dist/core/hooks/hook-registry.d.ts.map +1 -0
  179. package/dist/core/hooks/hook-registry.js +172 -0
  180. package/dist/core/hooks/hook-registry.js.map +1 -0
  181. package/dist/core/hooks/hook-types.d.ts +87 -0
  182. package/dist/core/hooks/hook-types.d.ts.map +1 -0
  183. package/dist/core/hooks/hook-types.js +11 -0
  184. package/dist/core/hooks/hook-types.js.map +1 -0
  185. package/dist/core/hooks/index.d.ts +28 -0
  186. package/dist/core/hooks/index.d.ts.map +1 -0
  187. package/dist/core/hooks/index.js +28 -0
  188. package/dist/core/hooks/index.js.map +1 -0
  189. package/dist/core/hooks/post-tool-call-hook.d.ts +21 -0
  190. package/dist/core/hooks/post-tool-call-hook.d.ts.map +1 -0
  191. package/dist/core/hooks/post-tool-call-hook.js +191 -0
  192. package/dist/core/hooks/post-tool-call-hook.js.map +1 -0
  193. package/dist/core/hooks/pre-tool-call-hook.d.ts +31 -0
  194. package/dist/core/hooks/pre-tool-call-hook.d.ts.map +1 -0
  195. package/dist/core/hooks/pre-tool-call-hook.js +122 -0
  196. package/dist/core/hooks/pre-tool-call-hook.js.map +1 -0
  197. package/dist/core/hooks/session-start-hook.d.ts +25 -0
  198. package/dist/core/hooks/session-start-hook.d.ts.map +1 -0
  199. package/dist/core/hooks/session-start-hook.js +226 -0
  200. package/dist/core/hooks/session-start-hook.js.map +1 -0
  201. package/dist/core/hooks/workflow-state-hook.d.ts +18 -0
  202. package/dist/core/hooks/workflow-state-hook.d.ts.map +1 -0
  203. package/dist/core/hooks/workflow-state-hook.js +181 -0
  204. package/dist/core/hooks/workflow-state-hook.js.map +1 -0
  205. package/dist/core/init/engine.d.ts +69 -0
  206. package/dist/core/init/engine.d.ts.map +1 -0
  207. package/dist/core/init/engine.js +211 -0
  208. package/dist/core/init/engine.js.map +1 -0
  209. package/dist/core/init/template-hash.d.ts +86 -0
  210. package/dist/core/init/template-hash.d.ts.map +1 -0
  211. package/dist/core/init/template-hash.js +228 -0
  212. package/dist/core/init/template-hash.js.map +1 -0
  213. package/dist/core/memory/adapters/json-adapter.d.ts +50 -0
  214. package/dist/core/memory/adapters/json-adapter.d.ts.map +1 -0
  215. package/dist/core/memory/adapters/json-adapter.js +273 -0
  216. package/dist/core/memory/adapters/json-adapter.js.map +1 -0
  217. package/dist/core/memory/adapters/sqlite-adapter.d.ts +26 -0
  218. package/dist/core/memory/adapters/sqlite-adapter.d.ts.map +1 -0
  219. package/dist/core/memory/adapters/sqlite-adapter.js +230 -0
  220. package/dist/core/memory/adapters/sqlite-adapter.js.map +1 -0
  221. package/dist/core/memory/index.d.ts +38 -0
  222. package/dist/core/memory/index.d.ts.map +1 -0
  223. package/dist/core/memory/index.js +40 -0
  224. package/dist/core/memory/index.js.map +1 -0
  225. package/dist/core/memory/memory-indexer.d.ts +39 -0
  226. package/dist/core/memory/memory-indexer.d.ts.map +1 -0
  227. package/dist/core/memory/memory-indexer.js +213 -0
  228. package/dist/core/memory/memory-indexer.js.map +1 -0
  229. package/dist/core/memory/memory-manager.d.ts +59 -0
  230. package/dist/core/memory/memory-manager.d.ts.map +1 -0
  231. package/dist/core/memory/memory-manager.js +194 -0
  232. package/dist/core/memory/memory-manager.js.map +1 -0
  233. package/dist/core/memory/memory-store.d.ts +31 -0
  234. package/dist/core/memory/memory-store.d.ts.map +1 -0
  235. package/dist/core/memory/memory-store.js +148 -0
  236. package/dist/core/memory/memory-store.js.map +1 -0
  237. package/dist/core/memory/memory-types.d.ts +154 -0
  238. package/dist/core/memory/memory-types.d.ts.map +1 -0
  239. package/dist/core/memory/memory-types.js +13 -0
  240. package/dist/core/memory/memory-types.js.map +1 -0
  241. package/dist/core/migration/index.d.ts +80 -0
  242. package/dist/core/migration/index.d.ts.map +1 -0
  243. package/dist/core/migration/index.js +361 -0
  244. package/dist/core/migration/index.js.map +1 -0
  245. package/dist/core/parsers/index.d.ts +95 -0
  246. package/dist/core/parsers/index.d.ts.map +1 -0
  247. package/dist/core/parsers/index.js +367 -0
  248. package/dist/core/parsers/index.js.map +1 -0
  249. package/dist/core/sdd-engine/ai-caller.d.ts +118 -0
  250. package/dist/core/sdd-engine/ai-caller.d.ts.map +1 -0
  251. package/dist/core/sdd-engine/ai-caller.js +624 -0
  252. package/dist/core/sdd-engine/ai-caller.js.map +1 -0
  253. package/dist/core/sdd-engine/controller.d.ts +107 -0
  254. package/dist/core/sdd-engine/controller.d.ts.map +1 -0
  255. package/dist/core/sdd-engine/controller.js +357 -0
  256. package/dist/core/sdd-engine/controller.js.map +1 -0
  257. package/dist/core/sdd-engine/dispatcher.d.ts +69 -0
  258. package/dist/core/sdd-engine/dispatcher.d.ts.map +1 -0
  259. package/dist/core/sdd-engine/dispatcher.js +146 -0
  260. package/dist/core/sdd-engine/dispatcher.js.map +1 -0
  261. package/dist/core/sdd-engine/git-ops.d.ts +73 -0
  262. package/dist/core/sdd-engine/git-ops.d.ts.map +1 -0
  263. package/dist/core/sdd-engine/git-ops.js +326 -0
  264. package/dist/core/sdd-engine/git-ops.js.map +1 -0
  265. package/dist/core/sdd-engine/index.d.ts +17 -0
  266. package/dist/core/sdd-engine/index.d.ts.map +1 -0
  267. package/dist/core/sdd-engine/index.js +15 -0
  268. package/dist/core/sdd-engine/index.js.map +1 -0
  269. package/dist/core/sdd-engine/ledger.d.ts +92 -0
  270. package/dist/core/sdd-engine/ledger.d.ts.map +1 -0
  271. package/dist/core/sdd-engine/ledger.js +273 -0
  272. package/dist/core/sdd-engine/ledger.js.map +1 -0
  273. package/dist/core/sdd-engine/model-selector.d.ts +49 -0
  274. package/dist/core/sdd-engine/model-selector.d.ts.map +1 -0
  275. package/dist/core/sdd-engine/model-selector.js +76 -0
  276. package/dist/core/sdd-engine/model-selector.js.map +1 -0
  277. package/dist/core/sdd-engine/parallel-dispatcher.d.ts +99 -0
  278. package/dist/core/sdd-engine/parallel-dispatcher.d.ts.map +1 -0
  279. package/dist/core/sdd-engine/parallel-dispatcher.js +350 -0
  280. package/dist/core/sdd-engine/parallel-dispatcher.js.map +1 -0
  281. package/dist/core/sdd-engine/review-loop.d.ts +61 -0
  282. package/dist/core/sdd-engine/review-loop.d.ts.map +1 -0
  283. package/dist/core/sdd-engine/review-loop.js +139 -0
  284. package/dist/core/sdd-engine/review-loop.js.map +1 -0
  285. package/dist/core/sdd-engine/types.d.ts +104 -0
  286. package/dist/core/sdd-engine/types.d.ts.map +1 -0
  287. package/dist/core/sdd-engine/types.js +7 -0
  288. package/dist/core/sdd-engine/types.js.map +1 -0
  289. package/dist/core/store/index.d.ts +78 -0
  290. package/dist/core/store/index.d.ts.map +1 -0
  291. package/dist/core/store/index.js +182 -0
  292. package/dist/core/store/index.js.map +1 -0
  293. package/dist/core/templates/index.d.ts +58 -0
  294. package/dist/core/templates/index.d.ts.map +1 -0
  295. package/dist/core/templates/index.js +158 -0
  296. package/dist/core/templates/index.js.map +1 -0
  297. package/dist/core/validation/index.d.ts +34 -0
  298. package/dist/core/validation/index.d.ts.map +1 -0
  299. package/dist/core/validation/index.js +153 -0
  300. package/dist/core/validation/index.js.map +1 -0
  301. package/dist/core/workflow-state.d.ts +96 -0
  302. package/dist/core/workflow-state.d.ts.map +1 -0
  303. package/dist/core/workflow-state.js +284 -0
  304. package/dist/core/workflow-state.js.map +1 -0
  305. package/dist/index.d.ts +18 -0
  306. package/dist/index.d.ts.map +1 -0
  307. package/dist/index.js +21 -0
  308. package/dist/index.js.map +1 -0
  309. package/dist/utils/index.d.ts +48 -0
  310. package/dist/utils/index.d.ts.map +1 -0
  311. package/dist/utils/index.js +119 -0
  312. package/dist/utils/index.js.map +1 -0
  313. package/hooks/hooks.json +30 -0
  314. package/hooks/run-hook.cmd +19 -0
  315. package/hooks/session-start +62 -0
  316. package/hooks/workflow-state +150 -0
  317. package/package.json +122 -0
  318. package/schemas/bug-fix/schema.yaml +64 -0
  319. package/schemas/bug-fix/templates/analysis.md +43 -0
  320. package/schemas/bug-fix/templates/fix-plan.md +19 -0
  321. package/schemas/bug-fix/templates/proposal.md +30 -0
  322. package/schemas/crud-module/schema.yaml +65 -0
  323. package/schemas/crud-module/templates/design.md +36 -0
  324. package/schemas/crud-module/templates/proposal.md +30 -0
  325. package/schemas/crud-module/templates/spec.md +33 -0
  326. package/schemas/crud-module/templates/tasks.md +57 -0
  327. package/schemas/spec-driven/schema.yaml +87 -0
  328. package/schemas/spec-driven/templates/design.md +54 -0
  329. package/schemas/spec-driven/templates/proposal.md +31 -0
  330. package/schemas/spec-driven/templates/spec.md +44 -0
  331. package/schemas/spec-driven/templates/tasks.md +98 -0
  332. package/skills/business-code-review/SKILL.md +78 -0
  333. package/skills/business-db-design/SKILL.md +74 -0
  334. package/skills/business-deploy-check/SKILL.md +72 -0
  335. package/skills/business-doc-sync/SKILL.md +72 -0
  336. package/skills/business-java-codegen/SKILL.md +97 -0
  337. package/skills/business-menu-register/SKILL.md +63 -0
  338. package/skills/business-prd-writer/SKILL.md +80 -0
  339. package/skills/business-test-gen/SKILL.md +82 -0
  340. package/skills/business-ui-codegen/SKILL.md +104 -0
  341. package/skills/execution-finish-branch/SKILL.md +58 -0
  342. package/skills/execution-git-worktrees/SKILL.md +48 -0
  343. package/skills/execution-parallel-agents/SKILL.md +51 -0
  344. package/skills/execution-receiving-review/SKILL.md +47 -0
  345. package/skills/execution-requesting-review/SKILL.md +51 -0
  346. package/skills/execution-subagent-driven-dev/SKILL.md +148 -0
  347. package/skills/execution-systematic-debugging/SKILL.md +95 -0
  348. package/skills/execution-tdd/SKILL.md +74 -0
  349. package/skills/execution-verification-before-completion/SKILL.md +75 -0
  350. package/skills/meta-create-skill/SKILL.md +374 -0
  351. package/skills/meta-using-skills/SKILL.md +97 -0
  352. package/skills/meta-writing-skills/SKILL.md +66 -0
  353. package/skills/planning-apply-change/SKILL.md +199 -0
  354. package/skills/planning-archive-change/SKILL.md +43 -0
  355. package/skills/planning-explore/SKILL.md +108 -0
  356. package/skills/planning-onboard/SKILL.md +60 -0
  357. package/skills/planning-propose/SKILL.md +145 -0
  358. package/skills/planning-update-change/SKILL.md +45 -0
  359. package/skills/planning-verify-change/SKILL.md +58 -0
  360. package/skills/planning-write-design/SKILL.md +59 -0
  361. package/skills/planning-write-plans/SKILL.md +55 -0
  362. package/skills/planning-write-specs/SKILL.md +73 -0
@@ -0,0 +1,40 @@
1
+ /**
2
+ * config 命令 — 项目配置管理
3
+ *
4
+ * 委托给 core/config/global-config.ts 的 GlobalConfigManager
5
+ * 保持向后兼容的导出接口(readConfig/writeConfig/getConfigValue/setConfigValue/listConfig)
6
+ */
7
+ import type { GlobalConfig } from '../core/config/config-schema.js';
8
+ /**
9
+ * 向后兼容的配置类型
10
+ * 映射到 GlobalConfig(core 层的 Zod 验证类型)
11
+ * 使用 passthrough 保留旧配置中的额外字段
12
+ */
13
+ export type SpecPowConfig = GlobalConfig & Record<string, unknown>;
14
+ /**
15
+ * 读取配置 — 委托给 GlobalConfigManager
16
+ * 补充向后兼容字段(defaultSchema、defaultTool、paths)
17
+ */
18
+ export declare function readConfig(projectRoot: string): SpecPowConfig;
19
+ /**
20
+ * 写入配置 — 委托给 GlobalConfigManager
21
+ */
22
+ export declare function writeConfig(projectRoot: string, config: SpecPowConfig): void;
23
+ /**
24
+ * 获取单个配置值 — 支持点号路径和向后兼容字段
25
+ */
26
+ export declare function getConfigValue(projectRoot: string, key: string): unknown;
27
+ /**
28
+ * 设置单个配置值 — 委托给 GlobalConfigManager.set()
29
+ * 支持点号路径和自动类型强制转换
30
+ */
31
+ export declare function setConfigValue(projectRoot: string, key: string, value: unknown): void;
32
+ /**
33
+ * 列出所有配置 — 返回完整配置对象(向后兼容)
34
+ */
35
+ export declare function listConfig(projectRoot: string): SpecPowConfig;
36
+ /**
37
+ * CLI 入口:管理配置
38
+ */
39
+ export declare function manageConfig(action: string, key?: string, value?: string): Promise<void>;
40
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAoB7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAG5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGrF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAE7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD9F"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * config 命令 — 项目配置管理
3
+ *
4
+ * 委托给 core/config/global-config.ts 的 GlobalConfigManager
5
+ * 保持向后兼容的导出接口(readConfig/writeConfig/getConfigValue/setConfigValue/listConfig)
6
+ */
7
+ import { GlobalConfigManager } from '../core/config/global-config.js';
8
+ /**
9
+ * 读取配置 — 委托给 GlobalConfigManager
10
+ * 补充向后兼容字段(defaultSchema、defaultTool、paths)
11
+ */
12
+ export function readConfig(projectRoot) {
13
+ const mgr = new GlobalConfigManager(projectRoot);
14
+ const config = mgr.load();
15
+ // 使用 Record<string, unknown> 安全访问 passthrough 保留的旧字段
16
+ const raw = config;
17
+ const artifactGraph = raw.artifactGraph;
18
+ const tools = raw.tools;
19
+ // 向后兼容:从新结构映射旧字段
20
+ return {
21
+ ...config,
22
+ defaultSchema: raw.defaultSchema || artifactGraph?.schema || 'spec-driven',
23
+ defaultTool: raw.defaultTool || tools?.[0]?.toolId || 'codebuddy',
24
+ paths: raw.paths || {
25
+ openspecDir: 'openspec',
26
+ schemasDir: 'schemas',
27
+ skillsDir: 'skills',
28
+ },
29
+ };
30
+ }
31
+ /**
32
+ * 写入配置 — 委托给 GlobalConfigManager
33
+ */
34
+ export function writeConfig(projectRoot, config) {
35
+ const mgr = new GlobalConfigManager(projectRoot);
36
+ mgr.save(config);
37
+ }
38
+ /**
39
+ * 获取单个配置值 — 支持点号路径和向后兼容字段
40
+ */
41
+ export function getConfigValue(projectRoot, key) {
42
+ // 先尝试从向后兼容的完整配置中查找
43
+ const config = readConfig(projectRoot);
44
+ const keys = key.split('.');
45
+ let value = config;
46
+ for (const k of keys) {
47
+ if (value && typeof value === 'object') {
48
+ value = value[k];
49
+ }
50
+ else {
51
+ return undefined;
52
+ }
53
+ }
54
+ if (value !== undefined)
55
+ return value;
56
+ // 回退到核心配置管理器
57
+ const mgr = new GlobalConfigManager(projectRoot);
58
+ return mgr.get(key);
59
+ }
60
+ /**
61
+ * 设置单个配置值 — 委托给 GlobalConfigManager.set()
62
+ * 支持点号路径和自动类型强制转换
63
+ */
64
+ export function setConfigValue(projectRoot, key, value) {
65
+ const mgr = new GlobalConfigManager(projectRoot);
66
+ mgr.set(key, value);
67
+ }
68
+ /**
69
+ * 列出所有配置 — 返回完整配置对象(向后兼容)
70
+ */
71
+ export function listConfig(projectRoot) {
72
+ return readConfig(projectRoot);
73
+ }
74
+ /**
75
+ * CLI 入口:管理配置
76
+ */
77
+ export async function manageConfig(action, key, value) {
78
+ const projectRoot = process.cwd();
79
+ console.log(`\n⚙️ 配置管理\n`);
80
+ switch (action) {
81
+ case 'get':
82
+ if (!key) {
83
+ console.error('❌ 请指定配置键');
84
+ return;
85
+ }
86
+ const val = getConfigValue(projectRoot, key);
87
+ console.log(`${key} = ${JSON.stringify(val)}`);
88
+ break;
89
+ case 'set':
90
+ if (!key || value === undefined) {
91
+ console.error('❌ 请指定配置键和值');
92
+ return;
93
+ }
94
+ let parsedValue = value;
95
+ try {
96
+ parsedValue = JSON.parse(value);
97
+ }
98
+ catch {
99
+ // 保持字符串
100
+ }
101
+ setConfigValue(projectRoot, key, parsedValue);
102
+ console.log(`✓ 已设置 ${key} = ${JSON.stringify(parsedValue)}`);
103
+ break;
104
+ case 'delete':
105
+ if (!key) {
106
+ console.error('❌ 请指定配置键');
107
+ return;
108
+ }
109
+ const mgr = new GlobalConfigManager(projectRoot);
110
+ const deleted = mgr.delete(key);
111
+ if (deleted) {
112
+ console.log(`✓ 已删除 ${key}`);
113
+ }
114
+ else {
115
+ console.log(`⚠ ${key} 不存在`);
116
+ }
117
+ break;
118
+ case 'reset':
119
+ const resetMgr = new GlobalConfigManager(projectRoot);
120
+ resetMgr.reset();
121
+ console.log('✓ 配置已重置为默认值');
122
+ break;
123
+ case 'list':
124
+ default:
125
+ const config = listConfig(projectRoot);
126
+ console.log(JSON.stringify(config, null, 2));
127
+ break;
128
+ }
129
+ }
130
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAUtE;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE1B,qDAAqD;IACrD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,aAAa,GAAG,GAAG,CAAC,aAAoD,CAAC;IAC/E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAmD,CAAC;IAEtE,iBAAiB;IACjB,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAG,GAAG,CAAC,aAAwB,IAAI,aAAa,EAAE,MAAgB,IAAI,aAAa;QAChG,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAgB,IAAI,WAAW;QACvF,KAAK,EAAG,GAAG,CAAC,KAAgC,IAAI;YAC9C,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,QAAQ;SACpB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,MAAqB;IACpE,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,GAAW;IAC7D,mBAAmB;IACnB,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAA4B,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAY,MAAM,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,KAAK,GAAI,KAAiC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,aAAa;IACb,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,GAAW,EAAE,KAAc;IAC7E,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,GAAY,EAAE,KAAc;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE5B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM;QAER,KAAK,KAAK;YACR,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,IAAI,WAAW,GAAY,KAAK,CAAC;YACjC,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ;YACV,CAAC;YACD,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM;QAER,KAAK,OAAO;YACV,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACtD,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM;QAER,KAAK,MAAM,CAAC;QACZ;YACE,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * debug 命令 — 系统化调试辅助
3
+ *
4
+ * 4 阶段根因分析流程:
5
+ * 1. 调查 — 收集日志、堆栈、复现步骤
6
+ * 2. 模式分析 — 识别错误模式
7
+ * 3. 假设测试 — 提出并验证根因假设
8
+ * 4. 实现修复 — 修复并验证
9
+ */
10
+ export interface DebugSession {
11
+ id: string;
12
+ startTime: string;
13
+ phase: 'investigation' | 'pattern-analysis' | 'hypothesis' | 'fix';
14
+ evidence: Evidence[];
15
+ hypotheses: Hypothesis[];
16
+ conclusion?: string;
17
+ fix?: string;
18
+ }
19
+ export interface Evidence {
20
+ type: 'log' | 'stack' | 'reproduction' | 'code' | 'config';
21
+ source: string;
22
+ content: string;
23
+ timestamp: string;
24
+ }
25
+ export interface Hypothesis {
26
+ id: string;
27
+ description: string;
28
+ confidence: 'low' | 'medium' | 'high';
29
+ evidence: string[];
30
+ verified: boolean;
31
+ verificationMethod?: string;
32
+ }
33
+ /**
34
+ * 启动调试会话
35
+ */
36
+ export declare function startDebugSession(projectRoot: string, description: string): Promise<DebugSession>;
37
+ /**
38
+ * 生成调试报告
39
+ */
40
+ export declare function generateDebugReport(session: DebugSession): string;
41
+ /**
42
+ * CLI 入口:系统化调试
43
+ */
44
+ export declare function systematicDebug(description: string): Promise<void>;
45
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,GAAG,kBAAkB,GAAG,YAAY,GAAG,KAAK,CAAC;IACnE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAwBvB;AA8DD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAqDjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxE"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * debug 命令 — 系统化调试辅助
3
+ *
4
+ * 4 阶段根因分析流程:
5
+ * 1. 调查 — 收集日志、堆栈、复现步骤
6
+ * 2. 模式分析 — 识别错误模式
7
+ * 3. 假设测试 — 提出并验证根因假设
8
+ * 4. 实现修复 — 修复并验证
9
+ */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ import { execFileSync } from 'child_process';
13
+ /**
14
+ * 启动调试会话
15
+ */
16
+ export async function startDebugSession(projectRoot, description) {
17
+ const session = {
18
+ id: `debug-${Date.now()}`,
19
+ startTime: new Date().toISOString(),
20
+ phase: 'investigation',
21
+ evidence: [],
22
+ hypotheses: [],
23
+ };
24
+ // 保存描述为初始证据
25
+ if (description) {
26
+ session.evidence.push({
27
+ type: 'code',
28
+ source: 'user-description',
29
+ content: description,
30
+ timestamp: new Date().toISOString(),
31
+ });
32
+ }
33
+ // 自动收集证据
34
+ const autoEvidence = await collectAutoEvidence(projectRoot);
35
+ session.evidence.push(...autoEvidence);
36
+ return session;
37
+ }
38
+ /**
39
+ * 自动收集证据
40
+ */
41
+ async function collectAutoEvidence(projectRoot) {
42
+ const evidence = [];
43
+ const now = new Date().toISOString();
44
+ // 1. 最近的 git log
45
+ try {
46
+ const gitLog = execFileSync('git', ['log', '--oneline', '-10'], {
47
+ cwd: projectRoot,
48
+ encoding: 'utf-8',
49
+ });
50
+ evidence.push({
51
+ type: 'code',
52
+ source: 'git log',
53
+ content: gitLog,
54
+ timestamp: now,
55
+ });
56
+ }
57
+ catch {
58
+ // git 不可用
59
+ }
60
+ // 2. 最近的 git diff
61
+ try {
62
+ const gitDiff = execFileSync('git', ['diff', '--stat', 'HEAD~3'], {
63
+ cwd: projectRoot,
64
+ encoding: 'utf-8',
65
+ });
66
+ evidence.push({
67
+ type: 'code',
68
+ source: 'git diff',
69
+ content: gitDiff,
70
+ timestamp: now,
71
+ });
72
+ }
73
+ catch {
74
+ // 忽略
75
+ }
76
+ // 3. 检查错误日志文件
77
+ const logFiles = ['error.log', 'app.log', 'logs/error.log', 'logs/app.log'];
78
+ for (const logFile of logFiles) {
79
+ const logPath = path.join(projectRoot, logFile);
80
+ if (fs.existsSync(logPath)) {
81
+ const stats = fs.statSync(logPath);
82
+ const content = fs.readFileSync(logPath, 'utf-8');
83
+ // 取最后 50 行
84
+ const lastLines = content.split('\n').slice(-50).join('\n');
85
+ evidence.push({
86
+ type: 'log',
87
+ source: logFile,
88
+ content: lastLines,
89
+ timestamp: stats.mtime.toISOString(),
90
+ });
91
+ }
92
+ }
93
+ return evidence;
94
+ }
95
+ /**
96
+ * 生成调试报告
97
+ */
98
+ export function generateDebugReport(session) {
99
+ const lines = [];
100
+ lines.push('# 调试报告');
101
+ lines.push('');
102
+ lines.push(`**会话 ID**: ${session.id}`);
103
+ lines.push(`**开始时间**: ${session.startTime}`);
104
+ lines.push(`**当前阶段**: ${session.phase}`);
105
+ lines.push('');
106
+ // 证据
107
+ lines.push('## 收集的证据');
108
+ lines.push('');
109
+ for (const e of session.evidence) {
110
+ lines.push(`### ${e.type} — ${e.source}`);
111
+ lines.push(`时间: ${e.timestamp}`);
112
+ lines.push('```');
113
+ lines.push(e.content.substring(0, 1000));
114
+ lines.push('```');
115
+ lines.push('');
116
+ }
117
+ // 假设
118
+ if (session.hypotheses.length > 0) {
119
+ lines.push('## 根因假设');
120
+ lines.push('');
121
+ for (const h of session.hypotheses) {
122
+ const status = h.verified ? '✅ 已验证' : '⏳ 待验证';
123
+ lines.push(`### ${h.id}: ${h.description} [${h.confidence}] ${status}`);
124
+ if (h.verificationMethod) {
125
+ lines.push(`验证方法: ${h.verificationMethod}`);
126
+ }
127
+ lines.push('');
128
+ }
129
+ }
130
+ // 结论
131
+ if (session.conclusion) {
132
+ lines.push('## 结论');
133
+ lines.push('');
134
+ lines.push(session.conclusion);
135
+ lines.push('');
136
+ }
137
+ // 修复
138
+ if (session.fix) {
139
+ lines.push('## 修复方案');
140
+ lines.push('');
141
+ lines.push(session.fix);
142
+ lines.push('');
143
+ }
144
+ return lines.join('\n');
145
+ }
146
+ /**
147
+ * CLI 入口:系统化调试
148
+ */
149
+ export async function systematicDebug(description) {
150
+ const projectRoot = process.cwd();
151
+ console.log(`\n🐛 系统化调试\n`);
152
+ console.log(`问题描述: ${description}\n`);
153
+ const session = await startDebugSession(projectRoot, description);
154
+ console.log(`📊 调试会话: ${session.id}`);
155
+ console.log(`阶段: ${session.phase}`);
156
+ console.log(`收集证据: ${session.evidence.length} 项\n`);
157
+ session.evidence.forEach((e, i) => {
158
+ console.log(` ${i + 1}. [${e.type}] ${e.source}`);
159
+ console.log(` 时间: ${e.timestamp}`);
160
+ console.log(` 内容预览: ${e.content.substring(0, 100)}...`);
161
+ console.log();
162
+ });
163
+ const report = generateDebugReport(session);
164
+ console.log(report);
165
+ console.log(`\n💡 提示: 运行 'specpow debug --report' 生成完整报告`);
166
+ }
167
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * doctor 命令 — 项目健康检查
3
+ *
4
+ * 检查 SpecPow 安装状态、配置正确性、依赖完整性
5
+ */
6
+ export interface DoctorCheck {
7
+ name: string;
8
+ status: 'ok' | 'warn' | 'error';
9
+ message: string;
10
+ fix?: string;
11
+ }
12
+ /**
13
+ * 执行项目健康检查
14
+ */
15
+ export declare function runDoctor(projectRoot: string): Promise<DoctorCheck[]>;
16
+ /**
17
+ * CLI 入口:诊断
18
+ */
19
+ export declare function diagnose(): Promise<void>;
20
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+E3E;AAYD;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B9C"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * doctor 命令 — 项目健康检查
3
+ *
4
+ * 检查 SpecPow 安装状态、配置正确性、依赖完整性
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ /**
9
+ * 执行项目健康检查
10
+ */
11
+ export async function runDoctor(projectRoot) {
12
+ const checks = [];
13
+ // 1. 检查 openspec 目录
14
+ const openspecDir = path.join(projectRoot, 'openspec');
15
+ checks.push({
16
+ name: 'OpenSpec 目录',
17
+ status: fs.existsSync(openspecDir) ? 'ok' : 'error',
18
+ message: fs.existsSync(openspecDir) ? 'openspec/ 目录存在' : 'openspec/ 目录不存在',
19
+ fix: fs.existsSync(openspecDir) ? undefined : '运行 specpow init 初始化',
20
+ });
21
+ // 2. 检查 Schema 文件
22
+ const schemaDir = path.join(projectRoot, 'schemas');
23
+ const hasSchema = fs.existsSync(path.join(schemaDir, 'spec-driven', 'schema.yaml'));
24
+ checks.push({
25
+ name: '默认 Schema',
26
+ status: hasSchema ? 'ok' : 'warn',
27
+ message: hasSchema ? 'spec-driven Schema 已安装' : '未找到默认 Schema',
28
+ fix: hasSchema ? undefined : '运行 specpow init 重新安装',
29
+ });
30
+ // 3. 检查技能文件
31
+ const skillsDir = path.join(projectRoot, 'skills');
32
+ const skillCount = countSkillFiles(skillsDir);
33
+ checks.push({
34
+ name: '技能文件',
35
+ status: skillCount > 0 ? 'ok' : 'warn',
36
+ message: `找到 ${skillCount} 个技能文件`,
37
+ fix: skillCount === 0 ? '运行 specpow init 安装技能' : undefined,
38
+ });
39
+ // 4. 检查 AI 工具配置
40
+ const tools = [
41
+ { name: 'Claude Code', dir: '.claude/commands' },
42
+ { name: 'Cursor', dir: '.cursor/rules' },
43
+ { name: 'CodeBuddy', dir: '.codebuddy/rules' },
44
+ { name: 'Copilot', dir: '.github/copilot-instructions.md' },
45
+ ];
46
+ for (const tool of tools) {
47
+ const toolPath = path.join(projectRoot, tool.dir);
48
+ const exists = fs.existsSync(toolPath);
49
+ checks.push({
50
+ name: `${tool.name} 配置`,
51
+ status: exists ? 'ok' : 'warn',
52
+ message: exists ? `${tool.name} 命令已安装` : `${tool.name} 未配置`,
53
+ fix: exists ? undefined : `运行 specpow init --tool ${tool.name.toLowerCase().split(' ')[0]}`,
54
+ });
55
+ }
56
+ // 5. 检查 Hook 配置
57
+ const hooksFile = path.join(projectRoot, 'hooks', 'hooks.json');
58
+ checks.push({
59
+ name: 'Hook 配置',
60
+ status: fs.existsSync(hooksFile) ? 'ok' : 'warn',
61
+ message: fs.existsSync(hooksFile) ? 'Hook 配置存在' : '未找到 Hook 配置',
62
+ });
63
+ // 6. 检查 Node.js 版本
64
+ const nodeVersion = process.version;
65
+ const major = parseInt(nodeVersion.slice(1).split('.')[0]);
66
+ checks.push({
67
+ name: 'Node.js 版本',
68
+ status: major >= 20 ? 'ok' : 'error',
69
+ message: `当前版本: ${nodeVersion}`,
70
+ fix: major < 20 ? '升级到 Node.js >= 20.19.0' : undefined,
71
+ });
72
+ // 7. 检查依赖安装
73
+ const nodeModules = path.join(projectRoot, 'node_modules');
74
+ checks.push({
75
+ name: '依赖安装',
76
+ status: fs.existsSync(nodeModules) ? 'ok' : 'error',
77
+ message: fs.existsSync(nodeModules) ? 'node_modules 存在' : '依赖未安装',
78
+ fix: fs.existsSync(nodeModules) ? undefined : '运行 pnpm install',
79
+ });
80
+ return checks;
81
+ }
82
+ function countSkillFiles(dir) {
83
+ if (!fs.existsSync(dir))
84
+ return 0;
85
+ let count = 0;
86
+ const entries = fs.readdirSync(dir, { recursive: true, withFileTypes: true });
87
+ for (const entry of entries) {
88
+ if (entry.isFile() && entry.name === 'SKILL.md')
89
+ count++;
90
+ }
91
+ return count;
92
+ }
93
+ /**
94
+ * CLI 入口:诊断
95
+ */
96
+ export async function diagnose() {
97
+ const projectRoot = process.cwd();
98
+ console.log(`\n🏥 项目健康检查\n`);
99
+ const checks = await runDoctor(projectRoot);
100
+ checks.forEach(check => {
101
+ const icon = check.status === 'ok' ? '✓' : check.status === 'warn' ? '⚠' : '✗';
102
+ console.log(`${icon} ${check.name}: ${check.message}`);
103
+ if (check.fix) {
104
+ console.log(` 修复: ${check.fix}`);
105
+ }
106
+ });
107
+ const okCount = checks.filter(c => c.status === 'ok').length;
108
+ const warnCount = checks.filter(c => c.status === 'warn').length;
109
+ const errorCount = checks.filter(c => c.status === 'error').length;
110
+ console.log(`\n📊 汇总: ${okCount} 通过, ${warnCount} 警告, ${errorCount} 错误`);
111
+ if (errorCount > 0) {
112
+ console.log(`\n❌ 发现 ${errorCount} 个错误,请修复后重试`);
113
+ }
114
+ else if (warnCount > 0) {
115
+ console.log(`\n⚠️ 发现 ${warnCount} 个警告,建议处理`);
116
+ }
117
+ else {
118
+ console.log(`\n✅ 项目健康状态良好`);
119
+ }
120
+ }
121
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * execute 命令 — 直接执行任务(跳过规范流程)
3
+ *
4
+ * 用于快速执行单个任务,不经过完整的 propose → apply 流程
5
+ * 适用于:紧急修复、小改动、实验性修改
6
+ */
7
+ export interface ExecuteOptions {
8
+ task: string;
9
+ files?: string[];
10
+ model?: string;
11
+ dryRun?: boolean;
12
+ }
13
+ /**
14
+ * 直接执行任务
15
+ */
16
+ export declare function executeTask(projectRoot: string, options: ExecuteOptions): Promise<void>;
17
+ /**
18
+ * CLI 入口:执行 SDD
19
+ */
20
+ export declare function executeSDD(planFile: string, options: {
21
+ model?: string;
22
+ maxFixRounds?: string;
23
+ parallel?: boolean;
24
+ }): Promise<void>;
25
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/commands/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACrE,OAAO,CAAC,IAAI,CAAC,CA4Ef"}