soloforge 1.0.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 (329) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -0
  3. package/dist/adapters/claude_code/claude_md.d.ts +3 -0
  4. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -0
  5. package/dist/adapters/claude_code/claude_md.js +79 -0
  6. package/dist/adapters/claude_code/claude_md.js.map +1 -0
  7. package/dist/adapters/claude_code/hooks.d.ts +3 -0
  8. package/dist/adapters/claude_code/hooks.d.ts.map +1 -0
  9. package/dist/adapters/claude_code/hooks.js +30 -0
  10. package/dist/adapters/claude_code/hooks.js.map +1 -0
  11. package/dist/adapters/claude_code/server.d.ts +10 -0
  12. package/dist/adapters/claude_code/server.d.ts.map +1 -0
  13. package/dist/adapters/claude_code/server.js +75 -0
  14. package/dist/adapters/claude_code/server.js.map +1 -0
  15. package/dist/adapters/claude_code/tools.d.ts +15 -0
  16. package/dist/adapters/claude_code/tools.d.ts.map +1 -0
  17. package/dist/adapters/claude_code/tools.js +758 -0
  18. package/dist/adapters/claude_code/tools.js.map +1 -0
  19. package/dist/adapters/trae/trae_config.d.ts +2 -0
  20. package/dist/adapters/trae/trae_config.d.ts.map +1 -0
  21. package/dist/adapters/trae/trae_config.js +22 -0
  22. package/dist/adapters/trae/trae_config.js.map +1 -0
  23. package/dist/adapters/trae/trae_rules.d.ts +3 -0
  24. package/dist/adapters/trae/trae_rules.d.ts.map +1 -0
  25. package/dist/adapters/trae/trae_rules.js +85 -0
  26. package/dist/adapters/trae/trae_rules.js.map +1 -0
  27. package/dist/bin/soloforge.d.ts +3 -0
  28. package/dist/bin/soloforge.d.ts.map +1 -0
  29. package/dist/bin/soloforge.js +353 -0
  30. package/dist/bin/soloforge.js.map +1 -0
  31. package/dist/engine/adr_recorder.d.ts +13 -0
  32. package/dist/engine/adr_recorder.d.ts.map +1 -0
  33. package/dist/engine/adr_recorder.js +132 -0
  34. package/dist/engine/adr_recorder.js.map +1 -0
  35. package/dist/engine/change_coordinator.d.ts +17 -0
  36. package/dist/engine/change_coordinator.d.ts.map +1 -0
  37. package/dist/engine/change_coordinator.js +138 -0
  38. package/dist/engine/change_coordinator.js.map +1 -0
  39. package/dist/engine/classifier.d.ts +7 -0
  40. package/dist/engine/classifier.d.ts.map +1 -0
  41. package/dist/engine/classifier.js +135 -0
  42. package/dist/engine/classifier.js.map +1 -0
  43. package/dist/engine/code_reviewer.d.ts +15 -0
  44. package/dist/engine/code_reviewer.d.ts.map +1 -0
  45. package/dist/engine/code_reviewer.js +371 -0
  46. package/dist/engine/code_reviewer.js.map +1 -0
  47. package/dist/engine/confidence_scorer.d.ts +11 -0
  48. package/dist/engine/confidence_scorer.d.ts.map +1 -0
  49. package/dist/engine/confidence_scorer.js +30 -0
  50. package/dist/engine/confidence_scorer.js.map +1 -0
  51. package/dist/engine/contract_guard.d.ts +10 -0
  52. package/dist/engine/contract_guard.d.ts.map +1 -0
  53. package/dist/engine/contract_guard.js +471 -0
  54. package/dist/engine/contract_guard.js.map +1 -0
  55. package/dist/engine/convention_detector.d.ts +7 -0
  56. package/dist/engine/convention_detector.d.ts.map +1 -0
  57. package/dist/engine/convention_detector.js +93 -0
  58. package/dist/engine/convention_detector.js.map +1 -0
  59. package/dist/engine/debt_reporter.d.ts +4 -0
  60. package/dist/engine/debt_reporter.d.ts.map +1 -0
  61. package/dist/engine/debt_reporter.js +67 -0
  62. package/dist/engine/debt_reporter.js.map +1 -0
  63. package/dist/engine/debt_tracker.d.ts +20 -0
  64. package/dist/engine/debt_tracker.d.ts.map +1 -0
  65. package/dist/engine/debt_tracker.js +152 -0
  66. package/dist/engine/debt_tracker.js.map +1 -0
  67. package/dist/engine/debugger.d.ts +3 -0
  68. package/dist/engine/debugger.d.ts.map +1 -0
  69. package/dist/engine/debugger.js +291 -0
  70. package/dist/engine/debugger.js.map +1 -0
  71. package/dist/engine/delivery.d.ts +15 -0
  72. package/dist/engine/delivery.d.ts.map +1 -0
  73. package/dist/engine/delivery.js +182 -0
  74. package/dist/engine/delivery.js.map +1 -0
  75. package/dist/engine/dependency_scanner.d.ts +13 -0
  76. package/dist/engine/dependency_scanner.d.ts.map +1 -0
  77. package/dist/engine/dependency_scanner.js +275 -0
  78. package/dist/engine/dependency_scanner.js.map +1 -0
  79. package/dist/engine/evolver.d.ts +15 -0
  80. package/dist/engine/evolver.d.ts.map +1 -0
  81. package/dist/engine/evolver.js +167 -0
  82. package/dist/engine/evolver.js.map +1 -0
  83. package/dist/engine/failure_classifier.d.ts +11 -0
  84. package/dist/engine/failure_classifier.d.ts.map +1 -0
  85. package/dist/engine/failure_classifier.js +120 -0
  86. package/dist/engine/failure_classifier.js.map +1 -0
  87. package/dist/engine/feasibility_checker.d.ts +6 -0
  88. package/dist/engine/feasibility_checker.d.ts.map +1 -0
  89. package/dist/engine/feasibility_checker.js +88 -0
  90. package/dist/engine/feasibility_checker.js.map +1 -0
  91. package/dist/engine/git_deps.d.ts +37 -0
  92. package/dist/engine/git_deps.d.ts.map +1 -0
  93. package/dist/engine/git_deps.js +3 -0
  94. package/dist/engine/git_deps.js.map +1 -0
  95. package/dist/engine/impact_analyzer.d.ts +10 -0
  96. package/dist/engine/impact_analyzer.d.ts.map +1 -0
  97. package/dist/engine/impact_analyzer.js +171 -0
  98. package/dist/engine/impact_analyzer.js.map +1 -0
  99. package/dist/engine/intent_expander.d.ts +17 -0
  100. package/dist/engine/intent_expander.d.ts.map +1 -0
  101. package/dist/engine/intent_expander.js +447 -0
  102. package/dist/engine/intent_expander.js.map +1 -0
  103. package/dist/engine/knowledge_manager.d.ts +76 -0
  104. package/dist/engine/knowledge_manager.d.ts.map +1 -0
  105. package/dist/engine/knowledge_manager.js +781 -0
  106. package/dist/engine/knowledge_manager.js.map +1 -0
  107. package/dist/engine/migration_guard.d.ts +3 -0
  108. package/dist/engine/migration_guard.d.ts.map +1 -0
  109. package/dist/engine/migration_guard.js +235 -0
  110. package/dist/engine/migration_guard.js.map +1 -0
  111. package/dist/engine/observability.d.ts +33 -0
  112. package/dist/engine/observability.d.ts.map +1 -0
  113. package/dist/engine/observability.js +312 -0
  114. package/dist/engine/observability.js.map +1 -0
  115. package/dist/engine/onboarding.d.ts +27 -0
  116. package/dist/engine/onboarding.d.ts.map +1 -0
  117. package/dist/engine/onboarding.js +362 -0
  118. package/dist/engine/onboarding.js.map +1 -0
  119. package/dist/engine/prompt_experiment.d.ts +18 -0
  120. package/dist/engine/prompt_experiment.d.ts.map +1 -0
  121. package/dist/engine/prompt_experiment.js +127 -0
  122. package/dist/engine/prompt_experiment.js.map +1 -0
  123. package/dist/engine/resilience.d.ts +20 -0
  124. package/dist/engine/resilience.d.ts.map +1 -0
  125. package/dist/engine/resilience.js +210 -0
  126. package/dist/engine/resilience.js.map +1 -0
  127. package/dist/engine/scaffolder.d.ts +9 -0
  128. package/dist/engine/scaffolder.d.ts.map +1 -0
  129. package/dist/engine/scaffolder.js +222 -0
  130. package/dist/engine/scaffolder.js.map +1 -0
  131. package/dist/engine/scope_controller.d.ts +3 -0
  132. package/dist/engine/scope_controller.d.ts.map +1 -0
  133. package/dist/engine/scope_controller.js +121 -0
  134. package/dist/engine/scope_controller.js.map +1 -0
  135. package/dist/engine/task_context.d.ts +34 -0
  136. package/dist/engine/task_context.d.ts.map +1 -0
  137. package/dist/engine/task_context.js +321 -0
  138. package/dist/engine/task_context.js.map +1 -0
  139. package/dist/engine/task_planner.d.ts +11 -0
  140. package/dist/engine/task_planner.d.ts.map +1 -0
  141. package/dist/engine/task_planner.js +267 -0
  142. package/dist/engine/task_planner.js.map +1 -0
  143. package/dist/engine/team_awareness.d.ts +12 -0
  144. package/dist/engine/team_awareness.d.ts.map +1 -0
  145. package/dist/engine/team_awareness.js +121 -0
  146. package/dist/engine/team_awareness.js.map +1 -0
  147. package/dist/engine/test_generator.d.ts +9 -0
  148. package/dist/engine/test_generator.d.ts.map +1 -0
  149. package/dist/engine/test_generator.js +241 -0
  150. package/dist/engine/test_generator.js.map +1 -0
  151. package/dist/engine/test_quality.d.ts +9 -0
  152. package/dist/engine/test_quality.d.ts.map +1 -0
  153. package/dist/engine/test_quality.js +256 -0
  154. package/dist/engine/test_quality.js.map +1 -0
  155. package/dist/engine/traceability.d.ts +3 -0
  156. package/dist/engine/traceability.d.ts.map +1 -0
  157. package/dist/engine/traceability.js +137 -0
  158. package/dist/engine/traceability.js.map +1 -0
  159. package/dist/engine/verifier.d.ts +3 -0
  160. package/dist/engine/verifier.d.ts.map +1 -0
  161. package/dist/engine/verifier.js +202 -0
  162. package/dist/engine/verifier.js.map +1 -0
  163. package/dist/engine/workspace_manager.d.ts +29 -0
  164. package/dist/engine/workspace_manager.d.ts.map +1 -0
  165. package/dist/engine/workspace_manager.js +77 -0
  166. package/dist/engine/workspace_manager.js.map +1 -0
  167. package/dist/git/operations.d.ts +57 -0
  168. package/dist/git/operations.d.ts.map +1 -0
  169. package/dist/git/operations.js +215 -0
  170. package/dist/git/operations.js.map +1 -0
  171. package/dist/index.d.ts +3 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +24 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/knowledge/conflict_detector.d.ts +6 -0
  176. package/dist/knowledge/conflict_detector.d.ts.map +1 -0
  177. package/dist/knowledge/conflict_detector.js +19 -0
  178. package/dist/knowledge/conflict_detector.js.map +1 -0
  179. package/dist/knowledge/health_checker.d.ts +10 -0
  180. package/dist/knowledge/health_checker.d.ts.map +1 -0
  181. package/dist/knowledge/health_checker.js +61 -0
  182. package/dist/knowledge/health_checker.js.map +1 -0
  183. package/dist/knowledge/index_manager.d.ts +35 -0
  184. package/dist/knowledge/index_manager.d.ts.map +1 -0
  185. package/dist/knowledge/index_manager.js +209 -0
  186. package/dist/knowledge/index_manager.js.map +1 -0
  187. package/dist/knowledge/loader.d.ts +13 -0
  188. package/dist/knowledge/loader.d.ts.map +1 -0
  189. package/dist/knowledge/loader.js +161 -0
  190. package/dist/knowledge/loader.js.map +1 -0
  191. package/dist/knowledge/writer.d.ts +15 -0
  192. package/dist/knowledge/writer.d.ts.map +1 -0
  193. package/dist/knowledge/writer.js +98 -0
  194. package/dist/knowledge/writer.js.map +1 -0
  195. package/dist/types.d.ts +724 -0
  196. package/dist/types.d.ts.map +1 -0
  197. package/dist/types.js +3 -0
  198. package/dist/types.js.map +1 -0
  199. package/package.json +54 -0
  200. package/templates/config.yaml +53 -0
  201. package/templates/knowledge/acceptance_templates/Bug/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
  202. package/templates/knowledge/acceptance_templates/POC/347/273/223/350/256/272/346/250/241/347/211/210.md +39 -0
  203. package/templates/knowledge/acceptance_templates//345/211/215/347/253/257/351/241/265/351/235/242/351/252/214/346/224/266/346/270/205/345/215/225.md +27 -0
  204. package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +180 -0
  205. package/templates/knowledge/acceptance_templates//345/220/216/347/253/257API/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
  206. package/templates/knowledge/acceptance_templates//345/256/211/345/205/250/345/256/241/350/256/241/346/250/241/347/211/210.md +51 -0
  207. package/templates/knowledge/acceptance_templates//346/200/247/350/203/275/345/210/206/346/236/220/346/250/241/347/211/210.md +45 -0
  208. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
  209. package/templates/knowledge/acceptance_templates//346/216/245/345/217/243/350/256/276/350/256/241/346/250/241/347/211/210.md +58 -0
  210. package/templates/knowledge/acceptance_templates//346/225/205/351/232/234/345/244/215/347/233/230/346/250/241/347/211/210.md +53 -0
  211. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +45 -0
  212. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/351/252/214/346/224/266/346/270/205/345/215/225.md +24 -0
  213. package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +42 -0
  214. package/templates/knowledge/acceptance_templates//346/265/213/350/257/225/350/256/241/345/210/222/346/250/241/347/211/210.md +39 -0
  215. package/templates/knowledge/acceptance_templates//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +40 -0
  216. package/templates/knowledge/acceptance_templates//350/277/201/347/247/273/350/257/204/344/274/260/346/250/241/347/211/210.md +42 -0
  217. package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +26 -0
  218. package/templates/knowledge/acceptance_templates//351/207/215/346/236/204/346/226/271/346/241/210/346/250/241/347/211/210.md +47 -0
  219. package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/210/206/346/236/220/346/250/241/347/211/210.md +44 -0
  220. package/templates/knowledge/domain//345/244/232/347/247/237/346/210/267.md +35 -0
  221. package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +34 -0
  222. package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +37 -0
  223. package/templates/knowledge/domain//345/267/245/344/275/234/346/265/201/345/274/225/346/223/216.md +37 -0
  224. package/templates/knowledge/domain//346/212/245/350/241/250/347/273/237/350/256/241.md +36 -0
  225. package/templates/knowledge/domain//346/224/257/344/273/230/350/247/204/345/210/231.md +38 -0
  226. package/templates/knowledge/domain//346/225/260/346/215/256/346/235/203/351/231/220.md +34 -0
  227. package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +24 -0
  228. package/templates/knowledge/domain//351/200/232/347/237/245/350/247/204/345/210/231.md +36 -0
  229. package/templates/knowledge/procedures/Figma/344/272/244/344/273/230/346/265/201/347/250/213.md +35 -0
  230. package/templates/knowledge/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +28 -0
  231. package/templates/knowledge/procedures//344/273/243/347/240/201/351/227/250/347/246/201/346/265/201/347/250/213.md +33 -0
  232. package/templates/knowledge/procedures//344/273/273/345/212/241/346/213/206/350/247/243/346/265/201/347/250/213.md +31 -0
  233. package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +37 -0
  234. package/templates/knowledge/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +43 -0
  235. package/templates/knowledge/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +27 -0
  236. package/templates/knowledge/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +46 -0
  237. package/templates/knowledge/procedures//346/225/260/346/215/256/345/272/223/350/277/201/347/247/273/346/265/201/347/250/213.md +38 -0
  238. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/346/265/201/347/250/213.md +30 -0
  239. package/templates/knowledge/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +24 -0
  240. package/templates/knowledge/procedures//347/237/245/350/257/206/347/273/264/346/212/244/346/265/201/346/260/264/347/272/277.md +40 -0
  241. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +45 -0
  242. package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +33 -0
  243. package/templates/knowledge/procedures//347/274/272/351/231/267/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +28 -0
  244. package/templates/knowledge/procedures//350/257/246/347/273/206/350/256/276/350/256/241/346/265/201/347/250/213.md +29 -0
  245. package/templates/knowledge/procedures//350/260/203/350/257/225/346/216/222/346/237/245/346/265/201/347/250/213.md +43 -0
  246. package/templates/knowledge/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +27 -0
  247. package/templates/knowledge/procedures//351/203/250/347/275/262/345/217/221/345/270/203/346/265/201/347/250/213.md +45 -0
  248. package/templates/knowledge/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +27 -0
  249. package/templates/knowledge/procedures//351/233/206/346/210/220/351/252/214/350/257/201/346/265/201/347/250/213.md +36 -0
  250. package/templates/knowledge/procedures//351/234/200/346/261/202/346/276/204/346/270/205/346/265/201/347/250/213.md +32 -0
  251. package/templates/knowledge/procedures//351/252/214/346/224/266/346/265/213/350/257/225/350/247/204/345/210/222.md +40 -0
  252. package/templates/knowledge/procedures//351/252/214/350/257/201/350/256/241/345/210/222/346/265/201/347/250/213.md +32 -0
  253. package/templates/knowledge/product_profiles/b2b-internal.yaml +35 -0
  254. package/templates/knowledge/product_profiles/b2c.yaml +37 -0
  255. package/templates/knowledge/product_profiles/saas.yaml +35 -0
  256. package/templates/knowledge/review_rules//345/256/211/345/205/250/345/256/241/346/237/245/350/247/204/345/210/231.md +79 -0
  257. package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
  258. package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +61 -0
  259. package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +67 -0
  260. package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +62 -0
  261. package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +80 -0
  262. package/templates/patterns/API/350/256/276/350/256/241/350/247/204/350/214/203.md +31 -0
  263. package/templates/patterns/Docker/351/203/250/347/275/262/350/247/204/350/214/203.md +31 -0
  264. package/templates/patterns/Git/346/223/215/344/275/234/350/247/204/350/214/203.md +31 -0
  265. package/templates/patterns/N/345/212/2401/346/237/245/350/257/242/350/247/204/350/214/203.md +32 -0
  266. package/templates/patterns/React/345/210/227/350/241/250/350/241/250/346/240/274/350/247/204/350/214/203.md +29 -0
  267. package/templates/patterns/React/346/216/245/345/217/243/351/233/206/346/210/220/350/247/204/350/214/203.md +28 -0
  268. package/templates/patterns/React/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
  269. package/templates/patterns/React/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
  270. package/templates/patterns/React/350/241/250/345/215/225/350/247/204/350/214/203.md +29 -0
  271. package/templates/patterns/React/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
  272. package/templates/patterns/Schema/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
  273. package/templates/patterns/Vue/347/212/266/346/200/201/347/256/241/347/220/206/350/247/204/350/214/203.md +28 -0
  274. package/templates/patterns/Vue/347/273/204/344/273/266/350/247/204/350/214/203.md +28 -0
  275. package/templates/patterns/Vue/350/267/257/347/224/261/350/247/204/350/214/203.md +29 -0
  276. package/templates/patterns//344/272/213/344/273/266/351/251/261/345/212/250/350/247/204/350/214/203.md +32 -0
  277. package/templates/patterns//344/272/213/345/212/241/346/250/241/345/274/217/350/247/204/350/214/203.md +28 -0
  278. package/templates/patterns//344/274/230/351/233/205/345/201/234/346/234/272/350/247/204/350/214/203.md +30 -0
  279. package/templates/patterns//345/205/250/346/240/210/346/265/201/347/250/213/344/277/256/345/244/215.md +31 -0
  280. package/templates/patterns//345/210/206/351/241/265/346/237/245/350/257/242/350/247/204/350/214/203.md +27 -0
  281. package/templates/patterns//345/211/215/347/253/257/346/200/247/350/203/275/350/247/204/350/214/203.md +33 -0
  282. package/templates/patterns//345/221/275/345/220/215/350/247/204/350/214/203.md +32 -0
  283. package/templates/patterns//345/233/275/351/231/205/345/214/226/350/247/204/350/214/203.md +31 -0
  284. package/templates/patterns//345/242/236/345/210/240/346/224/271/346/237/245/350/247/204/350/214/203.md +31 -0
  285. package/templates/patterns//345/244/226/351/203/250/344/276/235/350/265/226/350/247/204/350/214/203.md +29 -0
  286. package/templates/patterns//345/245/221/347/272/246/345/205/274/345/256/271/350/247/204/350/214/203.md +28 -0
  287. package/templates/patterns//345/256/232/346/227/266/344/273/273/345/212/241/350/247/204/350/214/203.md +25 -0
  288. package/templates/patterns//345/256/236/346/227/266/346/216/250/351/200/201/350/247/204/350/214/203.md +33 -0
  289. package/templates/patterns//345/267/245/347/250/213/347/272/252/345/276/213.md +39 -0
  290. package/templates/patterns//345/271/266/345/217/221/346/216/247/345/210/266/350/247/204/350/214/203.md +34 -0
  291. package/templates/patterns//345/274/202/346/255/245/345/257/274/345/207/272/350/247/204/350/214/203.md +27 -0
  292. package/templates/patterns//346/216/245/345/217/243/345/245/221/347/272/246/350/247/204/350/214/203.md +30 -0
  293. package/templates/patterns//346/220/234/347/264/242/346/250/241/345/274/217/350/247/204/350/214/203.md +32 -0
  294. package/templates/patterns//346/225/260/346/215/256/351/232/220/347/247/201/350/247/204/350/214/203.md +31 -0
  295. package/templates/patterns//346/226/207/344/273/266/344/270/212/344/274/240/350/247/204/350/214/203.md +31 -0
  296. package/templates/patterns//346/227/240/351/232/234/347/242/215/350/247/204/350/214/203.md +33 -0
  297. package/templates/patterns//346/227/245/345/277/227/350/247/204/350/214/203.md +31 -0
  298. package/templates/patterns//346/235/203/351/231/220/350/256/244/350/257/201/350/247/204/350/214/203.md +35 -0
  299. package/templates/patterns//346/236/266/346/236/204/347/272/242/347/272/277.md +30 -0
  300. package/templates/patterns//346/265/213/350/257/225/350/264/250/351/207/217/350/247/204/350/214/203.md +30 -0
  301. package/templates/patterns//347/206/224/346/226/255/351/231/215/347/272/247/350/247/204/350/214/203.md +33 -0
  302. package/templates/patterns//347/212/266/346/200/201/346/265/201/350/275/254/350/247/204/350/214/203.md +29 -0
  303. package/templates/patterns//347/272/246/346/235/237/345/256/236/347/216/260/350/247/204/350/214/203.md +32 -0
  304. package/templates/patterns//347/274/223/345/255/230/347/255/226/347/225/245/350/247/204/350/214/203.md +31 -0
  305. package/templates/patterns//347/274/226/347/240/201/350/264/250/351/207/217/350/247/204/350/214/203.md +31 -0
  306. package/templates/patterns//347/274/272/351/231/267/347/256/241/347/220/206/350/247/204/350/214/203.md +30 -0
  307. package/templates/patterns//350/260/203/350/257/225/346/226/271/346/263/225/350/256/272.md +28 -0
  308. package/templates/patterns//350/276/223/345/205/245/346/240/241/351/252/214/350/247/204/350/214/203.md +30 -0
  309. package/templates/patterns//351/224/231/350/257/257/345/244/204/347/220/206/350/247/204/350/214/203.md +32 -0
  310. package/templates/patterns//351/224/231/350/257/257/350/276/271/347/225/214/350/247/204/350/214/203.md +24 -0
  311. package/templates/patterns//351/242/206/345/237/237/351/251/261/345/212/250/350/256/276/350/256/241/350/247/204/350/214/203.md +29 -0
  312. package/templates/scaffolds/react/Form.tsx.hbs +16 -0
  313. package/templates/scaffolds/react/List.tsx.hbs +28 -0
  314. package/templates/scaffolds/react/Page.test.tsx.hbs +10 -0
  315. package/templates/scaffolds/react/Page.tsx.hbs +14 -0
  316. package/templates/scaffolds/react/README.md.hbs +44 -0
  317. package/templates/scaffolds/react/service.ts.hbs +37 -0
  318. package/templates/scaffolds/react/types.ts.hbs +6 -0
  319. package/templates/scaffolds/react/use{{ModuleName}}.ts.hbs +88 -0
  320. package/templates/scaffolds/spring-boot/ApiContract.md.hbs +110 -0
  321. package/templates/scaffolds/spring-boot/Controller.java.hbs +43 -0
  322. package/templates/scaffolds/spring-boot/DTO.java.hbs +9 -0
  323. package/templates/scaffolds/spring-boot/Entity.java.hbs +12 -0
  324. package/templates/scaffolds/spring-boot/ErrorCode.java.hbs +28 -0
  325. package/templates/scaffolds/spring-boot/Mapper.java.hbs +9 -0
  326. package/templates/scaffolds/spring-boot/PageResponse.java.hbs +29 -0
  327. package/templates/scaffolds/spring-boot/Service.java.hbs +12 -0
  328. package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +48 -0
  329. package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +22 -0
@@ -0,0 +1,67 @@
1
+ const SEVERITY_SCORE = {
2
+ critical: 4,
3
+ warning: 3,
4
+ info: 1,
5
+ };
6
+ const IMPACT_SCORE = {
7
+ high: 3,
8
+ medium: 2,
9
+ low: 1,
10
+ };
11
+ function daysBetween(a, b) {
12
+ const msPerDay = 86400_000;
13
+ return Math.max(0, Math.floor((Date.parse(b) - Date.parse(a)) / msPerDay));
14
+ }
15
+ function computePriorityScore(item) {
16
+ const sev = SEVERITY_SCORE[item.severity] ?? 1;
17
+ const imp = IMPACT_SCORE[item.impact ?? "medium"];
18
+ return sev * imp;
19
+ }
20
+ export async function generateDebtReport(tracker) {
21
+ const openItems = await tracker.listOpen();
22
+ // Total open count
23
+ const total_open = openItems.length;
24
+ // Group by category
25
+ const by_category = {};
26
+ for (const item of openItems) {
27
+ const cat = item.category ?? "other";
28
+ by_category[cat] = (by_category[cat] ?? 0) + 1;
29
+ }
30
+ // Group by severity
31
+ const by_severity = {};
32
+ for (const item of openItems) {
33
+ by_severity[item.severity] = (by_severity[item.severity] ?? 0) + 1;
34
+ }
35
+ // Oldest debt in days
36
+ let oldest_debt_days = 0;
37
+ const now = new Date().toISOString();
38
+ for (const item of openItems) {
39
+ const days = daysBetween(item.discovered_at, now);
40
+ if (days > oldest_debt_days)
41
+ oldest_debt_days = days;
42
+ }
43
+ // Trend over last 30 days
44
+ const trend_30d = await tracker.getTrend(30);
45
+ // Top priority items (sorted by severity * impact, top 5)
46
+ const sorted = [...openItems].sort((a, b) => computePriorityScore(b) - computePriorityScore(a));
47
+ const top_priority = sorted.slice(0, 5);
48
+ // Summary in Chinese
49
+ const criticalCount = by_severity["critical"] ?? 0;
50
+ const warningCount = by_severity["warning"] ?? 0;
51
+ const infoCount = by_severity["info"] ?? 0;
52
+ const parts = [];
53
+ parts.push(`共 ${total_open} 条未解决技术债务`);
54
+ parts.push(`${criticalCount} critical, ${warningCount} warning, ${infoCount} info`);
55
+ parts.push(`最久未解决: ${oldest_debt_days} 天`);
56
+ const summary = parts.join(";") + "。";
57
+ return {
58
+ total_open,
59
+ by_category,
60
+ by_severity,
61
+ oldest_debt_days,
62
+ trend_30d,
63
+ top_priority,
64
+ summary,
65
+ };
66
+ }
67
+ //# sourceMappingURL=debt_reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debt_reporter.js","sourceRoot":"","sources":["../../src/engine/debt_reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ReviewFinding, DebtItem } from "../types.js";
2
+ export declare class DebtTracker {
3
+ private debtDir;
4
+ constructor(projectPath: string);
5
+ ensureDir(): Promise<void>;
6
+ recordDebt(finding: ReviewFinding, taskId: string): Promise<string>;
7
+ listOpen(): Promise<DebtItem[]>;
8
+ acknowledge(debtId: string): Promise<void>;
9
+ resolve(debtId: string): Promise<void>;
10
+ getStats(): Promise<Record<string, number>>;
11
+ getTrend(sinceDays: number): Promise<{
12
+ created: number;
13
+ resolved: number;
14
+ net: number;
15
+ }>;
16
+ prioritize(): Promise<DebtItem[]>;
17
+ cleanup(): Promise<number>;
18
+ private updateStatus;
19
+ }
20
+ //# sourceMappingURL=debt_tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debt_tracker.d.ts","sourceRoot":"","sources":["../../src/engine/debt_tracker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAkB,MAAM,aAAa,CAAC;AAI3E,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,WAAW,EAAE,MAAM;IAIzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCnE,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiB/B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAU3C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBxF,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWjC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YA4BlB,YAAY;CAe3B"}
@@ -0,0 +1,152 @@
1
+ import fs from "node:fs/promises";
2
+ import fss from "node:fs";
3
+ import path from "node:path";
4
+ import crypto from "node:crypto";
5
+ const MAX_DEBT_AGE_DAYS = 30;
6
+ export class DebtTracker {
7
+ debtDir;
8
+ constructor(projectPath) {
9
+ this.debtDir = path.join(projectPath, ".soloforge", "state", "debt");
10
+ }
11
+ async ensureDir() {
12
+ await fs.mkdir(this.debtDir, { recursive: true });
13
+ }
14
+ async recordDebt(finding, taskId) {
15
+ await this.ensureDir();
16
+ const id = `debt-${crypto.randomUUID().slice(0, 8)}`;
17
+ // Map ReviewFinding.dimension to DebtItem.category
18
+ const dimensionToCategory = {
19
+ quality: "other",
20
+ security: "security",
21
+ performance: "performance",
22
+ debt: "other",
23
+ architecture: "other",
24
+ };
25
+ const item = {
26
+ id,
27
+ task_id: taskId,
28
+ file: finding.file,
29
+ line: finding.line,
30
+ title: finding.title,
31
+ description: finding.description,
32
+ severity: finding.severity,
33
+ category: dimensionToCategory[finding.dimension] ?? "other",
34
+ discovered_at: new Date().toISOString(),
35
+ status: "open",
36
+ };
37
+ const filePath = path.join(this.debtDir, `${id}.json`);
38
+ const tmpPath = `${filePath}.tmp`;
39
+ await fs.writeFile(tmpPath, JSON.stringify(item, null, 2));
40
+ await fs.rename(tmpPath, filePath);
41
+ return id;
42
+ }
43
+ async listOpen() {
44
+ await this.ensureDir();
45
+ const files = await fs.readdir(this.debtDir);
46
+ const items = [];
47
+ for (const file of files) {
48
+ if (!file.endsWith(".json"))
49
+ continue;
50
+ try {
51
+ const content = await fs.readFile(path.join(this.debtDir, file), "utf-8");
52
+ const item = JSON.parse(content);
53
+ if (item.status === "open")
54
+ items.push(item);
55
+ }
56
+ catch (e) {
57
+ console.debug("[soloforge]", e);
58
+ }
59
+ }
60
+ return items.sort((a, b) => a.discovered_at.localeCompare(b.discovered_at));
61
+ }
62
+ async acknowledge(debtId) {
63
+ await this.updateStatus(debtId, "acknowledged");
64
+ }
65
+ async resolve(debtId) {
66
+ await this.updateStatus(debtId, "resolved", new Date().toISOString());
67
+ }
68
+ async getStats() {
69
+ const openItems = await this.listOpen();
70
+ const stats = {};
71
+ for (const item of openItems) {
72
+ const cat = item.category ?? "other";
73
+ stats[cat] = (stats[cat] ?? 0) + 1;
74
+ }
75
+ return stats;
76
+ }
77
+ async getTrend(sinceDays) {
78
+ await this.ensureDir();
79
+ const cutoff = new Date();
80
+ cutoff.setDate(cutoff.getDate() - sinceDays);
81
+ const cutoffStr = cutoff.toISOString();
82
+ let created = 0;
83
+ let resolved = 0;
84
+ const files = await fs.readdir(this.debtDir);
85
+ for (const file of files) {
86
+ if (!file.endsWith(".json"))
87
+ continue;
88
+ try {
89
+ const content = await fs.readFile(path.join(this.debtDir, file), "utf-8");
90
+ const item = JSON.parse(content);
91
+ if (item.discovered_at >= cutoffStr)
92
+ created++;
93
+ if (item.status === "resolved" && item.resolved_at && item.resolved_at >= cutoffStr)
94
+ resolved++;
95
+ }
96
+ catch (e) {
97
+ console.debug("[soloforge]", e);
98
+ }
99
+ }
100
+ return { created, resolved, net: created - resolved };
101
+ }
102
+ async prioritize() {
103
+ const openItems = await this.listOpen();
104
+ const sevScore = { critical: 4, warning: 3, info: 1 };
105
+ const impScore = { high: 3, medium: 2, low: 1 };
106
+ return [...openItems].sort((a, b) => {
107
+ const sa = (sevScore[a.severity] ?? 1) * (impScore[a.impact ?? "medium"] ?? 2);
108
+ const sb = (sevScore[b.severity] ?? 1) * (impScore[b.impact ?? "medium"] ?? 2);
109
+ return sb - sa;
110
+ });
111
+ }
112
+ async cleanup() {
113
+ await this.ensureDir();
114
+ const files = await fs.readdir(this.debtDir);
115
+ const cutoff = new Date();
116
+ cutoff.setDate(cutoff.getDate() - MAX_DEBT_AGE_DAYS);
117
+ let removed = 0;
118
+ for (const file of files) {
119
+ if (!file.endsWith(".json"))
120
+ continue;
121
+ try {
122
+ const filePath = path.join(this.debtDir, file);
123
+ const content = await fs.readFile(filePath, "utf-8");
124
+ const item = JSON.parse(content);
125
+ if (item.status === "resolved" &&
126
+ item.resolved_at &&
127
+ new Date(item.resolved_at) < cutoff) {
128
+ await fs.unlink(filePath);
129
+ removed++;
130
+ }
131
+ }
132
+ catch (e) {
133
+ console.debug("[soloforge]", e);
134
+ }
135
+ }
136
+ return removed;
137
+ }
138
+ async updateStatus(debtId, status, resolvedAt) {
139
+ const filePath = path.join(this.debtDir, `${debtId}.json`);
140
+ if (!fss.existsSync(filePath))
141
+ return;
142
+ const content = await fs.readFile(filePath, "utf-8");
143
+ const item = JSON.parse(content);
144
+ item.status = status;
145
+ if (resolvedAt)
146
+ item.resolved_at = resolvedAt;
147
+ const tmpPath = `${filePath}.tmp`;
148
+ await fs.writeFile(tmpPath, JSON.stringify(item, null, 2));
149
+ await fs.rename(tmpPath, filePath);
150
+ }
151
+ }
152
+ //# sourceMappingURL=debt_tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debt_tracker.js","sourceRoot":"","sources":["../../src/engine/debt_tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DebugSession } from "../types.js";
2
+ export declare function debugError(errorOutput: string, taskId: string, projectScope?: string[]): DebugSession;
3
+ //# sourceMappingURL=debugger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../src/engine/debugger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAQV,YAAY,EACb,MAAM,aAAa,CAAC;AAgVrB,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,YAAY,CAgBd"}
@@ -0,0 +1,291 @@
1
+ // ── 上游阶段检测模式(复用 failure_classifier.ts 的规则) ──
2
+ const PHASE_ORIGIN_PATTERNS = [
3
+ { pattern: /requirement|需求|spec/i, phase: "requirement" },
4
+ { pattern: /design|架构|设计|DDL|表结构|接口定义/i, phase: "design" },
5
+ { pattern: /permission|权限|角色|授权/i, phase: "permission" },
6
+ { pattern: /migration|数据库变更|schema/i, phase: "ddl" },
7
+ { pattern: /api.*contract|接口契约|swagger/i, phase: "api_contract" },
8
+ ];
9
+ // ── Step 1: 错误解析 ──
10
+ const COMPILATION_PATTERNS = [
11
+ /error TS\d+/,
12
+ /error:/,
13
+ /Cannot find/,
14
+ /Type '.*' is not assignable/,
15
+ ];
16
+ const TEST_FAILURE_PATTERNS = [
17
+ /FAIL|✕|×|AssertionError|expect\(/,
18
+ /Test suite failed/,
19
+ ];
20
+ const RUNTIME_PATTERNS = [
21
+ /Error:/,
22
+ /Exception:/,
23
+ /TypeError:/,
24
+ /ReferenceError:/,
25
+ /throw new/,
26
+ ];
27
+ const FILE_LINE_PATTERN = /(?:src\/[^\s:(]+|\.\/[^\s:(]+)\.(?:ts|tsx|js|jsx)[\s(]*(\d+)/;
28
+ function parseError(errorOutput) {
29
+ const lines = errorOutput.split("\n");
30
+ const stack_frames = [];
31
+ for (const line of lines) {
32
+ if (/^\s*at\s+/.test(line)) {
33
+ stack_frames.push(line.trim());
34
+ }
35
+ }
36
+ // 编译错误
37
+ for (const pattern of COMPILATION_PATTERNS) {
38
+ if (pattern.test(errorOutput)) {
39
+ const fileLineMatch = FILE_LINE_PATTERN.exec(errorOutput);
40
+ const filePathMatch = /(?:src\/[^\s:(]+|\.\/[^\s:(]+)\.(?:ts|tsx|js|jsx)/.exec(errorOutput);
41
+ return {
42
+ error_type: "compilation",
43
+ file: filePathMatch ? filePathMatch[0] : undefined,
44
+ line: fileLineMatch ? parseInt(fileLineMatch[1], 10) : undefined,
45
+ message: extractErrorMessage(errorOutput),
46
+ stack_frames,
47
+ };
48
+ }
49
+ }
50
+ // 测试失败
51
+ for (const pattern of TEST_FAILURE_PATTERNS) {
52
+ if (pattern.test(errorOutput)) {
53
+ const testNameMatch = /✕\s+(.+)/.exec(errorOutput) || /FAIL\s+(.+)/.exec(errorOutput);
54
+ const assertionMatch = /AssertionError:\s*(.+)/.exec(errorOutput);
55
+ return {
56
+ error_type: "test_failure",
57
+ message: assertionMatch
58
+ ? assertionMatch[1].trim()
59
+ : testNameMatch
60
+ ? testNameMatch[1].trim()
61
+ : extractErrorMessage(errorOutput),
62
+ stack_frames,
63
+ };
64
+ }
65
+ }
66
+ // 运行时异常
67
+ for (const pattern of RUNTIME_PATTERNS) {
68
+ if (pattern.test(errorOutput)) {
69
+ const exceptionMatch = /(TypeError|ReferenceError|Error|Exception|RangeError|SyntaxError):\s*(.+)/.exec(errorOutput);
70
+ return {
71
+ error_type: "runtime",
72
+ message: exceptionMatch
73
+ ? `${exceptionMatch[1]}: ${exceptionMatch[2].trim()}`
74
+ : extractErrorMessage(errorOutput),
75
+ stack_frames,
76
+ };
77
+ }
78
+ }
79
+ // 未知错误
80
+ return {
81
+ error_type: "unknown",
82
+ message: extractErrorMessage(errorOutput),
83
+ stack_frames,
84
+ };
85
+ }
86
+ function extractErrorMessage(errorOutput) {
87
+ // 尝试提取错误行(通常包含 "error" 或 "Error" 关键词)
88
+ const lines = errorOutput.split("\n").filter((l) => l.trim().length > 0);
89
+ for (const line of lines) {
90
+ const trimmed = line.trim();
91
+ if (/error|Error|FAIL|fail|throw|panic/i.test(trimmed)) {
92
+ // 截取合理长度
93
+ return trimmed.length > 300 ? trimmed.substring(0, 300) + "..." : trimmed;
94
+ }
95
+ }
96
+ // 回退到第一行非空内容
97
+ const first = lines[0]?.trim() ?? "";
98
+ return first.length > 300 ? first.substring(0, 300) + "..." : first;
99
+ }
100
+ // ── Step 2: 调用链提取 ──
101
+ const STACK_FRAME_PATTERN = /at\s+(.+?)\s+\((.+?):(\d+):(\d+)\)/;
102
+ function extractCallChain(errorOutput, projectScope) {
103
+ const chain = [];
104
+ const scope = projectScope ?? [];
105
+ const lines = errorOutput.split("\n");
106
+ for (const line of lines) {
107
+ const match = STACK_FRAME_PATTERN.exec(line.trim());
108
+ if (!match)
109
+ continue;
110
+ const [, funcName, filePath, lineNum] = match;
111
+ const lineNumber = parseInt(lineNum, 10);
112
+ // 如果指定了项目范围,只保留范围内的帧
113
+ if (scope.length > 0) {
114
+ const inScope = scope.some((scopePath) => filePath.includes(scopePath));
115
+ if (!inScope)
116
+ continue;
117
+ }
118
+ chain.push({
119
+ file: filePath,
120
+ function: funcName,
121
+ line: lineNumber,
122
+ });
123
+ }
124
+ return chain;
125
+ }
126
+ // ── Step 4: 根因分析 ──
127
+ function analyzeRootCause(errorOutput, parsedError) {
128
+ // 规则 1: 检测上游阶段关键词
129
+ for (const { pattern, phase } of PHASE_ORIGIN_PATTERNS) {
130
+ if (pattern.test(errorOutput)) {
131
+ return {
132
+ failure_type: "deterministic",
133
+ phase_origin: phase,
134
+ summary: `根因追溯至 ${phase} 阶段,禁止自动修复`,
135
+ confidence: 0.85,
136
+ };
137
+ }
138
+ }
139
+ // 规则 2: 编译错误 → 可修复
140
+ if (parsedError.error_type === "compilation") {
141
+ return {
142
+ failure_type: "fixable",
143
+ summary: "编译错误,类型定义或导入路径问题",
144
+ confidence: 0.7,
145
+ };
146
+ }
147
+ // 规则 3: 测试失败 → 可修复
148
+ if (parsedError.error_type === "test_failure") {
149
+ return {
150
+ failure_type: "fixable",
151
+ summary: "测试失败,需检查断言条件或测试数据",
152
+ confidence: 0.6,
153
+ };
154
+ }
155
+ // 规则 4: 错误重复 3+ 次(仅对非编译/非测试类型) → 确定性缺陷
156
+ const errorLines = errorOutput.split("\n").filter((l) => l.trim().length > 0);
157
+ const firstErrorLine = errorLines[0]?.trim() ?? "";
158
+ const repeatCount = errorLines.filter((l) => l.trim() === firstErrorLine).length;
159
+ if (repeatCount >= 3) {
160
+ return {
161
+ failure_type: "deterministic",
162
+ summary: `同一错误重复出现 ${repeatCount} 次,判定为确定性缺陷`,
163
+ confidence: 0.9,
164
+ };
165
+ }
166
+ // 规则 5: 默认
167
+ return {
168
+ failure_type: "fixable",
169
+ summary: "通用可修复错误,需要进一步上下文分析",
170
+ confidence: 0.5,
171
+ };
172
+ }
173
+ // ── Step 5: 修复建议 ──
174
+ function proposeFix(parsedError, callChain, _rootCause) {
175
+ switch (parsedError.error_type) {
176
+ case "compilation": {
177
+ const filesToCheck = [];
178
+ if (parsedError.file) {
179
+ filesToCheck.push(parsedError.file);
180
+ }
181
+ return {
182
+ description: "检查类型定义和导入路径",
183
+ files_to_check: filesToCheck,
184
+ approach: "逐步修复类型错误,从最上层的依赖开始",
185
+ risk: "low",
186
+ };
187
+ }
188
+ case "test_failure": {
189
+ const filesToCheck = callChain
190
+ .map((item) => item.file)
191
+ .filter((f, i, arr) => arr.indexOf(f) === i);
192
+ return {
193
+ description: "检查断言条件和测试数据",
194
+ files_to_check: filesToCheck,
195
+ approach: "对比预期与实际输出,定位差异根因",
196
+ risk: "medium",
197
+ };
198
+ }
199
+ case "runtime": {
200
+ const filesToCheck = callChain
201
+ .map((item) => item.file)
202
+ .filter((f, i, arr) => arr.indexOf(f) === i);
203
+ return {
204
+ description: "定位异常抛出位置,检查边界条件",
205
+ files_to_check: filesToCheck,
206
+ approach: "添加空值检查和异常处理",
207
+ risk: "medium",
208
+ };
209
+ }
210
+ case "unknown":
211
+ default: {
212
+ return {
213
+ description: "收集更多错误上下文信息",
214
+ files_to_check: [],
215
+ approach: "增加日志输出以获取更多诊断信息",
216
+ risk: "high",
217
+ };
218
+ }
219
+ }
220
+ }
221
+ // ── Step 6: 测试补充建议 ──
222
+ function suggestTests(errorType) {
223
+ switch (errorType) {
224
+ case "compilation":
225
+ return [
226
+ {
227
+ scenario: "类型安全测试",
228
+ covers: "确保类型定义与实际使用一致",
229
+ priority: "high",
230
+ },
231
+ {
232
+ scenario: "编译时边界检查",
233
+ covers: "验证极端类型场景和类型转换",
234
+ priority: "medium",
235
+ },
236
+ ];
237
+ case "test_failure":
238
+ return [
239
+ {
240
+ scenario: "回归测试覆盖失败场景",
241
+ covers: "防止已修复问题再次出现",
242
+ priority: "high",
243
+ },
244
+ {
245
+ scenario: "等价类划分测试",
246
+ covers: "覆盖输入空间的典型和边界情况",
247
+ priority: "medium",
248
+ },
249
+ ];
250
+ case "runtime":
251
+ return [
252
+ {
253
+ scenario: "空值/边界条件测试",
254
+ covers: "验证对 undefined、null、空数组等边界值的处理",
255
+ priority: "high",
256
+ },
257
+ {
258
+ scenario: "异常处理路径测试",
259
+ covers: "确保异常被正确捕获和恢复",
260
+ priority: "high",
261
+ },
262
+ ];
263
+ case "unknown":
264
+ default:
265
+ return [
266
+ {
267
+ scenario: "探索性测试用例",
268
+ covers: "通过手动和自动化手段探索潜在问题区域",
269
+ priority: "medium",
270
+ },
271
+ ];
272
+ }
273
+ }
274
+ // ── 主入口:六步调试流水线 ──
275
+ export function debugError(errorOutput, taskId, projectScope) {
276
+ const parsed_error = parseError(errorOutput);
277
+ const call_chain = extractCallChain(errorOutput, projectScope);
278
+ const root_cause = analyzeRootCause(errorOutput, parsed_error);
279
+ const fix_proposal = proposeFix(parsed_error, call_chain, root_cause);
280
+ const test_supplement = suggestTests(parsed_error.error_type);
281
+ return {
282
+ task_id: taskId,
283
+ error_output: errorOutput,
284
+ parsed_error,
285
+ call_chain,
286
+ root_cause,
287
+ fix_proposal,
288
+ test_supplement,
289
+ };
290
+ }
291
+ //# sourceMappingURL=debugger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/engine/debugger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { TaskContext, ProjectConfig, DeliveryResult, ChangelogEntry } from "../types.js";
2
+ import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
3
+ import type { GitOperations } from "./git_deps.js";
4
+ export interface DeliveryInput {
5
+ taskContext: TaskContext;
6
+ config: ProjectConfig;
7
+ knowledgeIndex: KnowledgeIndexManager;
8
+ projectPath: string;
9
+ gitOps: GitOperations;
10
+ skipPush?: boolean;
11
+ skipPr?: boolean;
12
+ }
13
+ export declare function deliver(input: DeliveryInput): Promise<DeliveryResult>;
14
+ export declare function generateChangelogEntry(taskContext: TaskContext): ChangelogEntry;
15
+ //# sourceMappingURL=delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/engine/delivery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAEb,cAAc,EAEd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAyI3E;AAID,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAkB/E"}