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,321 @@
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_TASK_AGE_DAYS = 30;
6
+ const MAX_TASKS = 100;
7
+ const MAX_REWORK = 3;
8
+ const VALID_TRANSITIONS = {
9
+ classifying: ["expanding", "failed"],
10
+ expanding: ["executing", "failed"],
11
+ executing: ["verifying", "retrying", "reworking", "failed"],
12
+ verifying: ["learning", "retrying", "reworking", "done", "failed"],
13
+ retrying: ["executing", "reworking", "failed"],
14
+ reworking: ["expanding", "executing", "failed"],
15
+ learning: ["done", "retrying", "reworking", "failed"],
16
+ done: [],
17
+ failed: [],
18
+ };
19
+ export class TaskContextManager {
20
+ stateDir;
21
+ constructor(stateDir) {
22
+ this.stateDir = stateDir;
23
+ fss.mkdirSync(stateDir, { recursive: true });
24
+ }
25
+ getStateDir() {
26
+ return this.stateDir;
27
+ }
28
+ async create(intent, productProfile) {
29
+ const taskId = `task-${crypto.randomUUID().slice(0, 8)}`;
30
+ const ctx = {
31
+ task_id: taskId,
32
+ created_at: new Date().toISOString(),
33
+ intent,
34
+ product_profile: productProfile,
35
+ status: "classifying",
36
+ };
37
+ await this.save(ctx);
38
+ await this.writeCurrentPointer(taskId);
39
+ return ctx;
40
+ }
41
+ async load(taskId) {
42
+ const filePath = this.taskFilePath(taskId);
43
+ try {
44
+ const data = await fs.readFile(filePath, "utf-8");
45
+ return JSON.parse(data);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ async save(ctx) {
52
+ const filePath = this.taskFilePath(ctx.task_id);
53
+ const tmpPath = `${filePath}.tmp`;
54
+ await fs.writeFile(tmpPath, JSON.stringify(ctx, null, 2));
55
+ await fs.rename(tmpPath, filePath);
56
+ }
57
+ async updateStatus(taskId, status) {
58
+ const ctx = await this.load(taskId);
59
+ if (!ctx)
60
+ return null;
61
+ if (!VALID_TRANSITIONS[ctx.status].includes(status)) {
62
+ throw new Error(`无效状态转换: ${ctx.status} → ${status}`);
63
+ }
64
+ ctx.status = status;
65
+ await this.save(ctx);
66
+ return ctx;
67
+ }
68
+ async setClassification(taskId, result) {
69
+ const ctx = await this.load(taskId);
70
+ if (!ctx)
71
+ return null;
72
+ ctx.classification = result;
73
+ await this.save(ctx);
74
+ return ctx;
75
+ }
76
+ async setExpansion(taskId, result) {
77
+ const ctx = await this.load(taskId);
78
+ if (!ctx)
79
+ return null;
80
+ ctx.expansion = result;
81
+ await this.save(ctx);
82
+ return ctx;
83
+ }
84
+ async setExecution(taskId, changedFiles, failure) {
85
+ const ctx = await this.load(taskId);
86
+ if (!ctx)
87
+ return null;
88
+ if (!ctx.execution) {
89
+ ctx.execution = {
90
+ changed_files: [],
91
+ attempt_count: 0,
92
+ max_attempts: 3,
93
+ failure_history: [],
94
+ };
95
+ }
96
+ ctx.execution.changed_files = [
97
+ ...new Set([...ctx.execution.changed_files, ...changedFiles]),
98
+ ];
99
+ if (failure) {
100
+ ctx.execution.attempt_count++;
101
+ ctx.execution.failure_history.push(failure);
102
+ }
103
+ await this.save(ctx);
104
+ return ctx;
105
+ }
106
+ async setVerification(taskId, result) {
107
+ const ctx = await this.load(taskId);
108
+ if (!ctx)
109
+ return null;
110
+ ctx.verification = result;
111
+ await this.save(ctx);
112
+ return ctx;
113
+ }
114
+ async getCurrentTask() {
115
+ try {
116
+ const data = await fs.readFile(this.pointerPath, "utf-8");
117
+ const { task_id } = JSON.parse(data);
118
+ return this.load(task_id);
119
+ }
120
+ catch {
121
+ return null;
122
+ }
123
+ }
124
+ async cancel(taskId) {
125
+ const ctx = await this.load(taskId);
126
+ if (!ctx)
127
+ return false;
128
+ if (ctx.status === "done" || ctx.status === "failed")
129
+ return false;
130
+ ctx.status = "failed";
131
+ await this.save(ctx);
132
+ return true;
133
+ }
134
+ isResumable(ctx) {
135
+ return !["done", "failed", "classifying"].includes(ctx.status);
136
+ }
137
+ getResumeHint(ctx) {
138
+ const hints = {
139
+ expanding: "意图膨胀未完成,需重新执行 sf_expand",
140
+ executing: "代码执行中断,需重新执行代码修改",
141
+ verifying: "验证未完成,需调用 sf_verify",
142
+ retrying: "重试中断,需继续修复",
143
+ learning: "自进化未完成,需调用 sf_learn",
144
+ reworking: "返工中,需回溯到上游阶段重新执行",
145
+ };
146
+ return hints[ctx.status] || "未知状态";
147
+ }
148
+ async listRecent(limit = 10) {
149
+ const files = await fs.readdir(this.stateDir);
150
+ const taskFiles = files.filter((f) => f.startsWith("task-") && f.endsWith(".json"));
151
+ const tasks = await Promise.all(taskFiles.map(async (f) => {
152
+ const data = await fs.readFile(path.join(this.stateDir, f), "utf-8");
153
+ const ctx = JSON.parse(data);
154
+ return {
155
+ task_id: ctx.task_id,
156
+ intent: ctx.intent,
157
+ status: ctx.status,
158
+ created_at: ctx.created_at,
159
+ };
160
+ }));
161
+ return tasks
162
+ .sort((a, b) => b.created_at.localeCompare(a.created_at))
163
+ .slice(0, limit);
164
+ }
165
+ async cleanup() {
166
+ const files = await fs.readdir(this.stateDir);
167
+ const taskFiles = files.filter((f) => f.startsWith("task-") && f.endsWith(".json"));
168
+ const now = Date.now();
169
+ const maxAge = MAX_TASK_AGE_DAYS * 24 * 60 * 60 * 1000;
170
+ let removed = 0;
171
+ // 删除超过 MAX_TASK_AGE_DAYS 的任务(基于 created_at,而非 mtime)
172
+ // 同时也考虑 mtime 作为兼容:取 created_at 和 mtime 中较早的时间
173
+ for (const f of taskFiles) {
174
+ try {
175
+ const filePath = path.join(this.stateDir, f);
176
+ const content = await fs.readFile(filePath, "utf-8");
177
+ const ctx = JSON.parse(content);
178
+ const stat = await fs.stat(filePath);
179
+ // Use the earlier of created_at or mtime for age comparison
180
+ const createdAt = ctx.created_at ? new Date(ctx.created_at).getTime() : Infinity;
181
+ const earliestTime = Math.min(createdAt, stat.mtimeMs);
182
+ if (now - earliestTime > maxAge) {
183
+ await fs.unlink(filePath);
184
+ removed++;
185
+ }
186
+ }
187
+ catch {
188
+ // 跳过无法删除的文件
189
+ }
190
+ }
191
+ // 如果仍然过多,删除最旧的已完成/已失败任务
192
+ const remaining = await this.listRecent(MAX_TASKS + 1);
193
+ if (remaining.length > MAX_TASKS) {
194
+ const toDelete = remaining.slice(MAX_TASKS).filter((t) => t.status === "done" || t.status === "failed");
195
+ for (const t of toDelete) {
196
+ try {
197
+ await fs.unlink(this.taskFilePath(t.task_id));
198
+ removed++;
199
+ }
200
+ catch (e) {
201
+ console.debug("[soloforge]", e);
202
+ }
203
+ }
204
+ }
205
+ return removed;
206
+ }
207
+ async setPlanning(taskId, result) {
208
+ const ctx = await this.load(taskId);
209
+ if (!ctx)
210
+ return null;
211
+ ctx.planning = result;
212
+ await this.save(ctx);
213
+ return ctx;
214
+ }
215
+ async setCodeReview(taskId, result) {
216
+ const ctx = await this.load(taskId);
217
+ if (!ctx)
218
+ return null;
219
+ ctx.code_review = result;
220
+ // 能力 6: 基于审查结果计算阶段指令
221
+ ctx.phase_directive = computePhaseDirective(ctx);
222
+ await this.save(ctx);
223
+ return ctx;
224
+ }
225
+ async setDelivery(taskId, result) {
226
+ const ctx = await this.load(taskId);
227
+ if (!ctx)
228
+ return null;
229
+ ctx.delivery = result;
230
+ await this.save(ctx);
231
+ return ctx;
232
+ }
233
+ // ── 能力 3: 修复循环追踪 ──
234
+ async updateRepairLoop(taskId, failurePhase, autoRepairable, escalationReason) {
235
+ const ctx = await this.load(taskId);
236
+ if (!ctx || !ctx.execution)
237
+ return null;
238
+ if (!ctx.execution.repair_loop) {
239
+ ctx.execution.repair_loop = {
240
+ attempt: 0,
241
+ max_attempts: 3,
242
+ phase_origin: failurePhase,
243
+ auto_repairable: true,
244
+ recurrence_count: 0,
245
+ };
246
+ }
247
+ ctx.execution.repair_loop.attempt++;
248
+ ctx.execution.repair_loop.phase_origin = failurePhase;
249
+ ctx.execution.repair_loop.auto_repairable = autoRepairable;
250
+ ctx.execution.repair_loop.escalation_reason = escalationReason;
251
+ // 复发计数
252
+ const samePhaseFailures = ctx.execution.failure_history.filter((f) => f.phase === failurePhase);
253
+ ctx.execution.repair_loop.recurrence_count = samePhaseFailures.length;
254
+ await this.save(ctx);
255
+ return ctx;
256
+ }
257
+ // ── 能力 6: 返工历史追踪 ──
258
+ async recordRework(taskId, fromPhase, toPhase, reason) {
259
+ const ctx = await this.load(taskId);
260
+ if (!ctx)
261
+ return null;
262
+ if (!ctx.rework_history)
263
+ ctx.rework_history = [];
264
+ // 返工阈值检查
265
+ const reworkCount = ctx.rework_history.length;
266
+ if (reworkCount >= MAX_REWORK) {
267
+ ctx.phase_directive = "stop_escalate";
268
+ await this.save(ctx);
269
+ return ctx;
270
+ }
271
+ ctx.rework_history.push({
272
+ from_phase: fromPhase,
273
+ to_phase: toPhase,
274
+ reason,
275
+ timestamp: new Date().toISOString(),
276
+ });
277
+ await this.save(ctx);
278
+ return ctx;
279
+ }
280
+ // ── 内部方法 ──
281
+ taskFilePath(taskId) {
282
+ return path.join(this.stateDir, `${taskId}.json`);
283
+ }
284
+ get pointerPath() {
285
+ return path.join(this.stateDir, "current-task.json");
286
+ }
287
+ async writeCurrentPointer(taskId) {
288
+ await fs.writeFile(this.pointerPath, JSON.stringify({ task_id: taskId }));
289
+ }
290
+ }
291
+ // ── 能力 6: 阶段指令计算 ──
292
+ function computePhaseDirective(ctx) {
293
+ // 审查通过 → 完成
294
+ if (ctx.code_review && ctx.code_review.findings.length === 0) {
295
+ return "completed";
296
+ }
297
+ // 有 critical 发现 → 需要修复后重验证
298
+ if (ctx.code_review) {
299
+ const criticalCount = ctx.code_review.findings.filter((f) => f.severity === "critical").length;
300
+ if (criticalCount > 0) {
301
+ // 检查返工历史
302
+ const reworkCount = ctx.rework_history?.length ?? 0;
303
+ if (reworkCount >= MAX_REWORK) {
304
+ return "stop_escalate";
305
+ }
306
+ return "repair_reverify";
307
+ }
308
+ }
309
+ // 验证失败 → 根据修复循环状态决定
310
+ if (ctx.execution?.repair_loop) {
311
+ const loop = ctx.execution.repair_loop;
312
+ if (!loop.auto_repairable) {
313
+ return "rework_upstream";
314
+ }
315
+ if (loop.attempt >= loop.max_attempts) {
316
+ return "rework_upstream";
317
+ }
318
+ }
319
+ return "advance_next";
320
+ }
321
+ //# sourceMappingURL=task_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task_context.js","sourceRoot":"","sources":["../../src/engine/task_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,iBAAiB,GAA2D;IAChF,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpC,SAAS,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IAClC,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC3D,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;IAClE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC9C,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;IACrD,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,MAAM,OAAO,kBAAkB;IACrB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,cAAsB;QACjD,MAAM,MAAM,GAAG,QAAQ,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,GAAgB;YACvB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM;YACN,eAAe,EAAE,cAAc;YAC/B,MAAM,EAAE,aAAa;SACtB,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAgB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;QAClC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAA6B;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACf,CAAC;IAEC,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,MAAsB;QAC5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC;QAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAoB;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,YAAsB,EACtB,OAAuB;QAEvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,GAAG,CAAC,SAAS,GAAG;gBACd,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,CAAC;gBAChB,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,EAAE;aACpB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,aAAa,GAAG;YAC5B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,YAAY,CAAC,CAAC;SAC9D,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,MAAoB;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEnE,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,GAAgB;QAC1B,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,GAAgB;QAC5B,MAAM,KAAK,GAA2B;YACpC,SAAS,EAAE,yBAAyB;YACpC,SAAS,EAAE,kBAAkB;YAC7B,SAAS,EAAE,qBAAqB;YAChC,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,qBAAqB;YAC/B,SAAS,EAAE,kBAAkB;SAC9B,CAAC;QACF,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;QAGzB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpD,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,GAAG,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,KAAK;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACxD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpD,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,qDAAqD;QACrD,+CAA+C;QAC/C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;gBAC3D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrC,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACjF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,GAAG,GAAG,YAAY,GAAG,MAAM,EAAE,CAAC;oBAChC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CACpD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC9C,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAkB;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,MAAwB;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;QAEzB,qBAAqB;QACrB,GAAG,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAsB;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IAErB,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,YAAoB,EAAE,cAAuB,EAAE,gBAAyB;QAC7G,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAExC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG;gBAC1B,OAAO,EAAE,CAAC;gBACV,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,YAAY;gBAC1B,eAAe,EAAE,IAAI;gBACrB,gBAAgB,EAAE,CAAC;aACpB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACpC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;QACtD,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,GAAG,cAAc,CAAC;QAC3D,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE/D,OAAO;QACP,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAChC,CAAC;QACF,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAEtE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IAErB,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAe,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,cAAc;YAAE,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC;QAEjD,SAAS;QACT,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;QAC9C,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;YACtC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;YACtB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;YACjB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa;IAEL,YAAY,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,MAAc;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF;AAED,qBAAqB;AAErB,SAAS,qBAAqB,CAAC,GAAgB;IAC7C,YAAY;IACZ,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CACjC,CAAC,MAAM,CAAC;QACT,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS;YACT,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC;YACpD,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;gBAC9B,OAAO,eAAe,CAAC;YACzB,CAAC;YACD,OAAO,iBAAiB,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,OAAO,iBAAiB,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ClassifyResult, PlanResult } from "../types.js";
2
+ import type { ProjectConfig } from "../types.js";
3
+ import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
4
+ export interface PlanInput {
5
+ intent: string;
6
+ classification: ClassifyResult;
7
+ config: ProjectConfig;
8
+ knowledgeIndex: KnowledgeIndexManager;
9
+ }
10
+ export declare function planTask(input: PlanInput): PlanResult;
11
+ //# sourceMappingURL=task_planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task_planner.d.ts","sourceRoot":"","sources":["../../src/engine/task_planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAW,UAAU,EAAc,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAsFrD"}
@@ -0,0 +1,267 @@
1
+ export function planTask(input) {
2
+ const { intent, classification, config, knowledgeIndex } = input;
3
+ if (!shouldPlan(classification)) {
4
+ return {
5
+ task_id: "",
6
+ original_intent: intent,
7
+ sub_tasks: [],
8
+ execution_order: [],
9
+ parallel_groups: [],
10
+ summary: `不拆解: ${classification.complexity === "high" ? "非全流程策略" : "复杂度不足以触发拆解"}`,
11
+ skipped_reason: `触发条件不满足(complexity=${classification.complexity}, strategy=${classification.strategy})`,
12
+ current_step_index: 0,
13
+ };
14
+ }
15
+ // 查询 pipeline_procedure 知识(流程指引)
16
+ const pipelineProcedures = knowledgeIndex.query({
17
+ scope: classification.affected_repos,
18
+ products: [config.product_profile],
19
+ type: "pipeline_procedure",
20
+ keywords: extractKeywords(intent),
21
+ });
22
+ // 查询普通 procedure 知识(流程补充)
23
+ const procedures = knowledgeIndex.query({
24
+ scope: classification.affected_repos,
25
+ products: [config.product_profile],
26
+ type: "procedure",
27
+ keywords: extractKeywords(intent),
28
+ });
29
+ // 查询可用的 acceptance_template(输出格式模板)
30
+ const templates = knowledgeIndex.query({
31
+ scope: classification.affected_repos,
32
+ products: [config.product_profile],
33
+ type: "acceptance_template",
34
+ keywords: [],
35
+ });
36
+ // 根据知识情况选择拆分策略
37
+ if (pipelineProcedures.length > 0) {
38
+ // 有 pipeline_procedure → 知识驱动的多阶段计划
39
+ return buildKnowledgeDrivenPlan(intent, classification, config, pipelineProcedures, templates);
40
+ }
41
+ // 无 pipeline_procedure → 按仓库边界拆分(原有逻辑)
42
+ const subTasks = splitByRepoBoundary(intent, classification, config);
43
+ if (procedures.length > 0) {
44
+ mergeProcedureHints(subTasks, procedures.map((p) => p.name));
45
+ }
46
+ if (subTasks.length <= 1) {
47
+ const single = subTasks[0] ?? {
48
+ id: "st-1",
49
+ title: intent,
50
+ description: "无法自动拆解,建议人工细化",
51
+ intent,
52
+ depends_on: [],
53
+ affected_repos: classification.affected_repos,
54
+ estimated_complexity: "medium",
55
+ };
56
+ return {
57
+ task_id: "",
58
+ original_intent: intent,
59
+ sub_tasks: [single],
60
+ execution_order: [single.id],
61
+ parallel_groups: [[single.id]],
62
+ summary: `无法自动拆解,建议人工细化子任务`,
63
+ current_step_index: 0,
64
+ };
65
+ }
66
+ const { order, parallelGroups } = buildExecutionOrder(subTasks, classification.affected_repos);
67
+ return {
68
+ task_id: "",
69
+ original_intent: intent,
70
+ sub_tasks: subTasks,
71
+ execution_order: order,
72
+ parallel_groups: parallelGroups,
73
+ summary: `拆解为 ${subTasks.length} 个子任务,${parallelGroups.length} 个执行阶段`,
74
+ current_step_index: 0,
75
+ };
76
+ }
77
+ /**
78
+ * 基于知识驱动的多阶段计划生成。
79
+ * 读取 pipeline_procedure 知识条目的步骤定义,结合可用模板,生成带模板绑定的子任务。
80
+ */
81
+ function buildKnowledgeDrivenPlan(intent, classification, config, pipelineProcedures, templates) {
82
+ const procedure = pipelineProcedures[0];
83
+ const templateMap = new Map(templates.map((t) => [t.name, t.file_path]));
84
+ // 从 pipeline_procedure body 中提取步骤
85
+ const steps = parsePipelineSteps(procedure.body || procedure.when);
86
+ const subTasks = steps.map((step, idx) => {
87
+ return {
88
+ id: `st-${idx + 1}`,
89
+ title: step.title,
90
+ description: step.description,
91
+ intent: step.title,
92
+ depends_on: idx > 0 ? [`st-${idx}`] : [],
93
+ affected_repos: classification.affected_repos,
94
+ estimated_complexity: inferComplexity(intent),
95
+ output_template: step.template_name || undefined,
96
+ output_path: step.output_path || `.soloforge/output/${String(idx + 1).padStart(2, "0")}-${step.title}.md`,
97
+ suggested_tools: step.tools || undefined,
98
+ };
99
+ });
100
+ const { order, parallelGroups } = buildExecutionOrder(subTasks, classification.affected_repos);
101
+ return {
102
+ task_id: "",
103
+ original_intent: intent,
104
+ sub_tasks: subTasks,
105
+ execution_order: order,
106
+ parallel_groups: parallelGroups,
107
+ summary: `按 "${procedure.name}" 流程拆解为 ${subTasks.length} 个阶段`,
108
+ current_step_index: 0,
109
+ };
110
+ }
111
+ /**
112
+ * 从 pipeline_procedure 知识条目的 Markdown body 中提取步骤定义。
113
+ * 识别 "### 第X步" 或 "### 步骤X" 格式的标题,提取:
114
+ * - 标题
115
+ * - 描述(标题下的文字)
116
+ * - 模板引用("模板:XXX" 或 "template: XXX")
117
+ * - 输出路径("产出保存到:XXX" 或 "output: XXX")
118
+ * - 工具建议("使用 XXX 工具" 或 "tools: XXX")
119
+ */
120
+ function parsePipelineSteps(body) {
121
+ const steps = [];
122
+ const sections = body.split(/^### /m).slice(1);
123
+ for (const section of sections) {
124
+ const lines = section.split("\n");
125
+ const title = lines[0].replace(/^第\d+[步阶段][::]\s*/, "").replace(/^步骤\d+[::]\s*/, "").trim();
126
+ if (!title)
127
+ continue;
128
+ const description = [];
129
+ let templateName;
130
+ let outputPath;
131
+ const tools = [];
132
+ for (const line of lines.slice(1)) {
133
+ const trimmed = line.trim();
134
+ if (!trimmed || trimmed.startsWith("#"))
135
+ continue;
136
+ // 匹配模板引用
137
+ const templateMatch = trimmed.match(/(?:模板|template)[::]\s*(.+)/i);
138
+ if (templateMatch) {
139
+ templateName = templateMatch[1].trim();
140
+ continue;
141
+ }
142
+ // 匹配输出路径
143
+ const outputMatch = trimmed.match(/(?:产出保存到|输出到|output)[::]\s*(.+)/i);
144
+ if (outputMatch) {
145
+ outputPath = outputMatch[1].trim();
146
+ continue;
147
+ }
148
+ // 匹配工具建议
149
+ const toolsMatch = trimmed.match(/(?:使用|工具|tools)[::]\s*(.+)/i);
150
+ if (toolsMatch) {
151
+ tools.push(...toolsMatch[1].split(/[,,、]/).map((t) => t.trim()).filter(Boolean));
152
+ continue;
153
+ }
154
+ description.push(trimmed);
155
+ }
156
+ steps.push({
157
+ title,
158
+ description: description.join("\n"),
159
+ template_name: templateName,
160
+ output_path: outputPath,
161
+ tools: tools.length > 0 ? tools : undefined,
162
+ });
163
+ }
164
+ return steps;
165
+ }
166
+ function shouldPlan(classification) {
167
+ return classification.complexity === "high" && classification.strategy === "full_pipeline";
168
+ }
169
+ function splitByRepoBoundary(intent, classification, config) {
170
+ const repos = classification.affected_repos;
171
+ if (repos.length <= 1)
172
+ return [];
173
+ const tasks = [];
174
+ let idx = 1;
175
+ for (const repo of repos) {
176
+ const repoLabel = repo === "backend" ? "后端" : repo === "frontend" ? "前端" : repo;
177
+ const repoIntent = buildRepoIntent(intent, repo, repos);
178
+ tasks.push({
179
+ id: `st-${idx++}`,
180
+ title: `${repoLabel}: ${repoIntent}`,
181
+ description: `${intent} 的 ${repoLabel} 部分`,
182
+ intent: repoIntent,
183
+ depends_on: repo === "frontend" && repos.includes("backend") ? ["st-1"] : [],
184
+ affected_repos: [repo],
185
+ estimated_complexity: inferComplexity(repoIntent),
186
+ });
187
+ }
188
+ return tasks;
189
+ }
190
+ function buildRepoIntent(intent, repo, allRepos) {
191
+ if (repo === "backend" && allRepos.includes("frontend")) {
192
+ return intent.replace(/前后端|联调|全链路/g, "后端接口");
193
+ }
194
+ if (repo === "frontend" && allRepos.includes("backend")) {
195
+ return intent.replace(/前后端|联调|全链路/g, "前端对接");
196
+ }
197
+ return intent;
198
+ }
199
+ function mergeProcedureHints(tasks, procedureNames) {
200
+ if (tasks.length === 0)
201
+ return;
202
+ const hint = `参考流程: ${procedureNames.join(", ")}`;
203
+ for (const task of tasks) {
204
+ task.description += `\n${hint}`;
205
+ }
206
+ }
207
+ function buildExecutionOrder(subTasks, _affectedRepos) {
208
+ const visited = new Set();
209
+ const visiting = new Set();
210
+ const order = [];
211
+ const taskMap = new Map(subTasks.map((t) => [t.id, t]));
212
+ function visit(id) {
213
+ if (visited.has(id))
214
+ return;
215
+ if (visiting.has(id))
216
+ return; // cycle detected — skip edge
217
+ visiting.add(id);
218
+ const task = taskMap.get(id);
219
+ if (task) {
220
+ for (const dep of task.depends_on)
221
+ visit(dep);
222
+ }
223
+ visiting.delete(id);
224
+ visited.add(id);
225
+ order.push(id);
226
+ }
227
+ for (const task of subTasks)
228
+ visit(task.id);
229
+ const parallelGroups = [];
230
+ const scheduled = new Set();
231
+ for (const id of order) {
232
+ const task = taskMap.get(id);
233
+ if (!task)
234
+ continue;
235
+ const depsReady = task.depends_on.every((d) => scheduled.has(d));
236
+ if (depsReady) {
237
+ const lastGroup = parallelGroups[parallelGroups.length - 1];
238
+ // Tasks can join the last group if they have no deps OR none of their deps
239
+ // are in the last group (meaning all deps were completed in earlier groups).
240
+ // This allows B(dep A) and C(dep A) to run in parallel after A completes.
241
+ const hasNoDeps = task.depends_on.length === 0;
242
+ const noDepsInLastGroup = !task.depends_on.some((d) => lastGroup.includes(d));
243
+ const canParallel = lastGroup && (hasNoDeps || noDepsInLastGroup);
244
+ if (canParallel) {
245
+ lastGroup.push(id);
246
+ }
247
+ else {
248
+ parallelGroups.push([id]);
249
+ }
250
+ scheduled.add(id);
251
+ }
252
+ }
253
+ return { order, parallelGroups };
254
+ }
255
+ function extractKeywords(intent) {
256
+ return intent
257
+ .split(/[\s,,、::]+/)
258
+ .filter((w) => w.length >= 2);
259
+ }
260
+ function inferComplexity(intent) {
261
+ if (/加.*查询|改.*名称|修.*typo/.test(intent))
262
+ return "low";
263
+ if (/多个|批量|跨|联调|前后端|全链路/.test(intent))
264
+ return "high";
265
+ return "medium";
266
+ }
267
+ //# sourceMappingURL=task_planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task_planner.js","sourceRoot":"","sources":["../../src/engine/task_planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ProjectConfig, TeamStatusResult } from "../types.js";
2
+ import type { GitOperations } from "./git_deps.js";
3
+ import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
4
+ export interface TeamAwarenessInput {
5
+ projectPath: string;
6
+ config: ProjectConfig;
7
+ since?: string;
8
+ gitOps: GitOperations;
9
+ knowledgeIndex?: KnowledgeIndexManager;
10
+ }
11
+ export declare function getTeamStatus(input: TeamAwarenessInput): Promise<TeamStatusResult>;
12
+ //# sourceMappingURL=team_awareness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team_awareness.d.ts","sourceRoot":"","sources":["../../src/engine/team_awareness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwGxF"}