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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 SoloForge Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,203 @@
1
+ # SoloForge
2
+
3
+ AI 驱动的开发工作流系统 — 一个人干五个人的活。
4
+
5
+ SoloForge 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器,为 AI 编程助手(Claude Code、Cursor、Trae)提供结构化的、知识驱动的开发工作流。它作为规则引擎和模板系统,通过知识模式、验证管线和自动化代码审查来保障工程质量。
6
+
7
+ ## 快速开始
8
+
9
+ ```bash
10
+ # 全局安装
11
+ npm install -g soloforge
12
+
13
+ # 或直接使用
14
+ npx soloforge init
15
+ ```
16
+
17
+ `init` 命令会生成项目配置(`.soloforge/config.yaml`)、初始化知识模板、并为你的 AI 工具生成适配配置。
18
+
19
+ ## 工作原理
20
+
21
+ SoloForge 以 MCP Server(stdio 传输)运行。AI 助手在开发过程中调用 SoloForge 工具:
22
+
23
+ ```
24
+ 开发者 → AI 助手 (Claude Code/Cursor) → SoloForge MCP Server
25
+ ← 知识、规则、模板
26
+ ```
27
+
28
+ SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供结构、规则和知识。
29
+
30
+ ## MCP 工具(27 个)
31
+
32
+ ### 核心管线(Phase 1)
33
+
34
+ | 工具 | 说明 |
35
+ |------|------|
36
+ | `sf_classify` | 分类任务意图、风险、复杂度;确定执行模式 |
37
+ | `sf_expand` | 意图膨胀 + 知识匹配 + 作用域控制 + 验收标准 |
38
+ | `sf_verify` | 生成构建/测试验证命令,收集证据 |
39
+ | `sf_learn` | 从已完成任务提取模式,更新知识库 |
40
+ | `sf_status` | 查询任务状态,恢复中断的工作流 |
41
+
42
+ ### 质量与规划(Phase 2)
43
+
44
+ | 工具 | 说明 |
45
+ |------|------|
46
+ | `sf_plan` | 复杂意图拆解为子任务,分析依赖关系 |
47
+ | `sf_plan_advance` | 高级任务规划:知识驱动的多步骤规划 |
48
+ | `sf_analyze` | 影响范围分析,与声明范围对比 |
49
+ | `sf_scaffold` | 脚手架生成(Controller/Service/DTO 等) |
50
+ | `sf_review` | 五维代码审查(质量/安全/性能/技术债务/架构) |
51
+
52
+ ### 团队协作(Phase 3)
53
+
54
+ | 工具 | 说明 |
55
+ |------|------|
56
+ | `sf_deliver` | 自动提交 → 推送 → PR → 变更日志 |
57
+ | `sf_coord_check` | 预测性冲突检测,跨仓库关联提示 |
58
+ | `sf_team_status` | 活动流、工作负载可视化、过期分支告警 |
59
+ | `sf_contract_check` | 检测接口契约的破坏性变更 |
60
+ | `sf_onboard` | 引导式入职:项目概览 → 代码导览 → 首任务 |
61
+
62
+ ### 自维护(仅 SoloForge 自身项目)
63
+
64
+ | 工具 | 说明 |
65
+ |------|------|
66
+ | `sf_knowledge_add` | 新增知识条目,返回行业探索指引 |
67
+ | `sf_knowledge_update` | 更新知识条目内容 |
68
+ | `sf_knowledge_audit` | 审计知识格式、完整性和质量 |
69
+
70
+ ### 高级能力(Phase 4)
71
+
72
+ | 工具 | 说明 |
73
+ |------|------|
74
+ | `sf_feasibility_check` | 三档可行性分析(可行/风险/不可行) |
75
+ | `sf_debug` | 智能排障:解析 → 追踪 → 根因 → 修复方案 |
76
+ | `sf_observability` | 系统指标、告警检测、周期报告 |
77
+
78
+ ### 深度能力(Phase 5)
79
+
80
+ | 工具 | 说明 |
81
+ |------|------|
82
+ | `sf_migration_check` | 分析数据库迁移文件安全性,检测破坏性操作 |
83
+ | `sf_test_guide` | 根据变更文件生成测试类型、场景和 Mock 指引 |
84
+ | `sf_test_quality` | 五维评估测试文件质量(断言/边界/命名/重复/覆盖) |
85
+ | `sf_dependency_scan` | 扫描依赖漏洞,支持 npm/maven/gradle |
86
+ | `sf_debt_report` | 技术债务聚合报告:分类、趋势、优先级 |
87
+
88
+ ## 知识体系
89
+
90
+ SoloForge 内置 **108+ 知识模板**,覆盖 6 种类型:
91
+
92
+ | 类型 | 数量 | 用途 |
93
+ |------|------|------|
94
+ | `pattern` | 50 | 决策规则 + 验收标准 |
95
+ | `procedure` | 24 | 操作流程 + 检查点 |
96
+ | `domain` | 9 | 业务规则、约束条件、例外情况 |
97
+ | `acceptance_template` | 19 | 质量门禁 + 自动化检查命令 |
98
+ | `review_rule` | 6 | 正则驱动的代码审查规则 |
99
+ | `pipeline_procedure` | — | CI/CD 流水线阶段定义 |
100
+
101
+ 知识文件采用 Markdown + YAML frontmatter 格式:
102
+
103
+ ```markdown
104
+ ---
105
+ name: crud-operation
106
+ type: pattern
107
+ when: "CRUD, 增删改查, 新增, 删除, 修改"
108
+ scope: [backend]
109
+ products: ["*"]
110
+ ---
111
+
112
+ ## 决策规则
113
+ - API 层使用 DTO,持久层使用 Entity
114
+ - 业务实体使用软删除,日志使用硬删除
115
+ ...
116
+
117
+ ## 验收项
118
+ - [AC-01] 所有 CRUD 端点返回正确的 HTTP 状态码
119
+ ...
120
+ ```
121
+
122
+ ## 项目配置
123
+
124
+ SoloForge 从 `.soloforge/config.yaml` 读取项目配置:
125
+
126
+ ```yaml
127
+ name: my-project
128
+ tech_stack:
129
+ backend:
130
+ lang: java
131
+ framework: spring-boot
132
+ version: "3.0"
133
+ frontend:
134
+ lang: typescript
135
+ framework: react
136
+ version: "18"
137
+ product_profile: default
138
+ repos:
139
+ - name: backend
140
+ path: .
141
+ lang: java
142
+ framework: spring-boot
143
+ scope: ["src/main/java"]
144
+ build_commands:
145
+ backend:
146
+ build: mvn compile -q
147
+ test: mvn test -q
148
+ full: mvn verify -q
149
+ frontend:
150
+ build: npm run build
151
+ test: npm test
152
+ full: npm run build && npm test
153
+ scope:
154
+ backend: ["src/main/java"]
155
+ frontend: ["src/main/react"]
156
+ ```
157
+
158
+ ## 架构
159
+
160
+ ```
161
+ 知识层 机制层 适配层
162
+ +------------------+ +---------------------+ +------------------+
163
+ | 108+ 知识模板 | | 分类器 | | Claude Code |
164
+ | 6 种知识类型 | | 意图膨胀器 | | Cursor |
165
+ | 产品 Profile | | 验证器 | | Trae |
166
+ | | | 代码审查器 | | CLI |
167
+ | 项目专属知识 | | 任务规划器 | | |
168
+ | | | 脚手架生成器 | | |
169
+ | | | 自动交付 | | |
170
+ | | | + 20+ 个引擎模块 | | |
171
+ +------------------+ +---------------------+ +------------------+
172
+ ```
173
+
174
+ ## 开发
175
+
176
+ ```bash
177
+ # 安装依赖
178
+ npm install
179
+
180
+ # 构建
181
+ npm run build
182
+
183
+ # 运行测试(447 个测试)
184
+ npm test
185
+
186
+ # 类型检查
187
+ npm run lint
188
+
189
+ # 监听模式
190
+ npm run dev
191
+ ```
192
+
193
+ ## 技术栈
194
+
195
+ - TypeScript (ESM)
196
+ - Node.js >= 18
197
+ - MCP SDK (`@modelcontextprotocol/sdk`)
198
+ - Handlebars(模板引擎)
199
+ - Vitest(测试框架)
200
+
201
+ ## 许可证
202
+
203
+ MIT
@@ -0,0 +1,3 @@
1
+ import type { ProjectConfig } from "../../types.js";
2
+ export declare function generateClaudeMd(config: ProjectConfig): string;
3
+ //# sourceMappingURL=claude_md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude_md.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6E9D"}
@@ -0,0 +1,79 @@
1
+ export function generateClaudeMd(config) {
2
+ return `# SoloForge 集成规则
3
+
4
+ ## 强制工作流
5
+
6
+ 当收到开发指令时(非纯对话/提问),必须按以下顺序执行:
7
+
8
+ ### 步骤 1: 分类
9
+ 调用 \`sf_classify\` 工具,传入用户意图和当前项目路径。
10
+
11
+ ### 步骤 1.5: 任务拆解(建议)
12
+ 如果分类结果 complexity=high 且 strategy=full_pipeline,调用 \`sf_plan\` 查看拆解建议。
13
+ 如果 \`sf_plan\` 返回多阶段计划(sub_tasks > 1),则按阶段执行:
14
+ 1. 调用 \`sf_expand\` 获取当前阶段指令(自动注入模板和前序产出)
15
+ 2. 执行该阶段任务
16
+ 3. 调用 \`sf_plan_advance\` 推进到下一阶段
17
+ 4. 重复直到所有阶段完成
18
+
19
+ ### 步骤 2: 根据分类结果执行
20
+ - task_type = "scaffold" → 调用 \`sf_scaffold\` 生成代码骨架,然后填充业务逻辑
21
+ - strategy = "full_pipeline" → 调用 \`sf_expand\`,然后按 expand 的 prompt 执行
22
+ - strategy = "quick_fix" → 调用 \`sf_expand\`(简化版),然后执行
23
+ - strategy = "skip_soloForge" → 直接处理,不调用 SoloForge 工具
24
+
25
+ ### 步骤 2.5: 影响分析(建议)
26
+ 执行 \`sf_expand\` 后,可选择调用 \`sf_analyze\` 查看影响范围分析。如果提示范围不足,可扩大作用域或确认范围。
27
+
28
+ ### 步骤 3: 代码修改后验证
29
+ 所有代码修改完成后,调用 \`sf_verify\` 获取验证命令。
30
+ 通过 Bash 工具执行 \`sf_verify\` 返回的验证命令。
31
+
32
+ ### 步骤 3.5: 代码审查(建议)
33
+ 验证通过后,可选择调用 \`sf_review\` 进行代码审查。hotfix 场景自动跳过。
34
+ 审查结果包含质量、安全、性能、架构、技术债务五个维度。支持知识驱动审查规则。技术债务自动记录,不强制修复。
35
+
36
+ ### 步骤 3.6: 契约检查(建议)
37
+ 如果变更涉及 API 路由、DTO、接口文件,可调用 \`sf_contract_check\` 检测破坏性变更和跨服务影响。
38
+
39
+ ### 步骤 4: 学习
40
+ 验证完成后(无论通过或失败),调用 \`sf_learn\` 传入验证结果。
41
+ 如果 \`sf_learn\` 返回 \`retry_hint\`,表示需要修复后重试,回到步骤 3 重新验证。
42
+
43
+ ### 步骤 5: 结果汇报
44
+ 向开发者展示:
45
+ - 验证结果摘要
46
+ - 自动化验收通过/失败项
47
+ - 需人工确认的项(如有)
48
+
49
+ ### 步骤 5.5: 变更协调检查(建议)
50
+ 推送前可调用 \`sf_coord_check\` 检查潜在冲突和跨仓库影响。
51
+
52
+ ### 步骤 5.6: 自动交付(可选)
53
+ 调用 \`sf_deliver\` 自动提交代码、推送、创建 PR 和生成变更日志。
54
+ 新人加入项目时,使用 \`sf_onboard\` 进行分步引导。
55
+ 需要查看团队状态时,调用 \`sf_team_status\`。
56
+
57
+ ### 步骤 5.7: 知识维护(可选)
58
+ 定期调用 \`sf_knowledge_audit\` 审计知识库健康度。
59
+ 发现需要新增的知识条目时,调用 \`sf_knowledge_add\` 生成草稿(默认保存到 drafts/,需人工确认)。
60
+ 需要更新已有条目时,调用 \`sf_knowledge_update\`(自动创建备份)。
61
+
62
+ ## 任务管理
63
+
64
+ 使用 \`sf_status\` 工具管理任务生命周期:
65
+ - \`sf_status action=current\` — 查看当前任务状态
66
+ - \`sf_status action=recent\` — 列出近期任务
67
+ - \`sf_status action=resume task_id=xxx\` — 恢复中断的任务
68
+ - \`sf_status action=cancel task_id=xxx\` — 取消未完成的任务
69
+
70
+ 对话中断后,先用 \`sf_status action=current\` 检查是否有未完成任务。
71
+
72
+ ## 项目信息
73
+
74
+ - 产品: ${config.product_profile}
75
+ - 后端: ${config.tech_stack.backend.framework} ${config.tech_stack.backend.version}
76
+ - 前端: ${config.tech_stack.frontend.framework} ${config.tech_stack.frontend.version}
77
+ `;
78
+ }
79
+ //# sourceMappingURL=claude_md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude_md.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/claude_md.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwED,MAAM,CAAC,eAAe;QACtB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;QACxE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;CACjF,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { generateClaudeMd } from "./claude_md.js";
2
+ export declare function generateHooksConfig(soloforgeBinPath: string): object;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CA2BpE"}
@@ -0,0 +1,30 @@
1
+ export { generateClaudeMd } from "./claude_md.js";
2
+ export function generateHooksConfig(soloforgeBinPath) {
3
+ return {
4
+ hooks: {
5
+ PreToolUse: [
6
+ {
7
+ matcher: "Edit|Write",
8
+ hooks: [
9
+ {
10
+ type: "command",
11
+ command: `node ${soloforgeBinPath} check-write`,
12
+ },
13
+ ],
14
+ },
15
+ ],
16
+ PostToolUse: [
17
+ {
18
+ matcher: "Bash",
19
+ hooks: [
20
+ {
21
+ type: "command",
22
+ command: `node ${soloforgeBinPath} post-bash`,
23
+ },
24
+ ],
25
+ },
26
+ ],
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,mBAAmB,CAAC,gBAAwB;IAC1D,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,gBAAgB,cAAc;yBAChD;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,gBAAgB,YAAY;yBAC9C;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ProjectConfig } from "../../types.js";
2
+ import { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
3
+ import { TaskContextManager } from "../../engine/task_context.js";
4
+ export interface ServerDeps {
5
+ config: ProjectConfig;
6
+ knowledgeIndex: KnowledgeIndexManager;
7
+ taskContext: TaskContextManager;
8
+ }
9
+ export declare function startServer(deps: ServerDeps): Promise<void>;
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAcD,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDjE"}
@@ -0,0 +1,75 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ import { registerTools } from "./tools.js";
6
+ function isSoloForgeProject(config) {
7
+ const projectPath = config._projectPath || process.cwd();
8
+ try {
9
+ const pkgPath = path.join(projectPath, "package.json");
10
+ const raw = fs.readFileSync(pkgPath, "utf-8");
11
+ const pkg = JSON.parse(raw);
12
+ return pkg.name === "soloforge";
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ export async function startServer(deps) {
19
+ const { config, knowledgeIndex, taskContext } = deps;
20
+ const server = new McpServer({
21
+ name: "soloforge",
22
+ version: "0.1.0",
23
+ });
24
+ registerTools(server, { config, knowledgeIndex, taskContext }, {
25
+ isSelfProject: isSoloForgeProject(config),
26
+ });
27
+ const transport = new StdioServerTransport();
28
+ await server.connect(transport);
29
+ let shuttingDown = false;
30
+ const shutdown = async () => {
31
+ if (shuttingDown)
32
+ return;
33
+ shuttingDown = true;
34
+ try {
35
+ if (knowledgeIndex)
36
+ await knowledgeIndex.close();
37
+ await transport.close?.();
38
+ }
39
+ catch (e) {
40
+ console.debug("[soloforge]", e);
41
+ }
42
+ process.exit(0);
43
+ };
44
+ process.on("SIGTERM", shutdown);
45
+ process.on("SIGINT", shutdown);
46
+ process.on("SIGPIPE", () => {
47
+ // 客户端断开连接,优雅退出
48
+ shutdown();
49
+ });
50
+ process.on("uncaughtException", async (err) => {
51
+ console.error("SoloForge 未捕获异常:", err);
52
+ try {
53
+ if (knowledgeIndex)
54
+ await knowledgeIndex.close();
55
+ await transport.close?.();
56
+ }
57
+ catch (e) {
58
+ console.debug("[soloforge]", e);
59
+ }
60
+ process.exit(1);
61
+ });
62
+ process.on("unhandledRejection", async (reason) => {
63
+ console.error("SoloForge 未处理的 Promise 拒绝:", reason);
64
+ try {
65
+ if (knowledgeIndex)
66
+ await knowledgeIndex.close();
67
+ await transport.close?.();
68
+ }
69
+ catch (e) {
70
+ console.debug("[soloforge]", e);
71
+ }
72
+ process.exit(1);
73
+ });
74
+ }
75
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ProjectConfig } from "../../types.js";
3
+ import type { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
4
+ import type { TaskContextManager } from "../../engine/task_context.js";
5
+ export interface SoloForgeDeps {
6
+ config: ProjectConfig;
7
+ knowledgeIndex: KnowledgeIndexManager;
8
+ taskContext: TaskContextManager;
9
+ }
10
+ export interface RegisterToolsOptions {
11
+ /** When true, registers self-maintenance tools (sf_knowledge_audit/add/update) */
12
+ isSelfProject?: boolean;
13
+ }
14
+ export declare function registerTools(server: McpServer, deps: SoloForgeDeps, options?: RegisterToolsOptions): void;
15
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA0BvE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAkHD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAy3B1G"}