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 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/engine/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,0CAA0C;AAE1C,MAAM,eAAe,GAA2B;IAC9C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAQrC,KAAK,UAAU,SAAS,CAAC,QAAgB;IACvC,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;YAClD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC1F,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB,EAAE,GAAW,EAAE,WAAoB;IAC1E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IAEpD,qFAAqF;IACrF,kFAAkF;IAClF,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,IAAI,WAAW,GAAG,OAAO,EAAE,CAAC;QACnE,OAAO,WAAW,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,kDAAkD;IAClD,OAAO,GAAG,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,mBAAmB;AAEnB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YACtC,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,CAAC;YAClB,kBAAkB,EAAE,CAAC;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAE3B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;IAEnC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAC5F,CAAC,MAAM,CAAC;IACT,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,CAAC;IAEvC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAEjE,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC,iBAAiB,IAAI,CAAC,CAAC,SAAU,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CACnF,CAAC,MAAM,CAAC;IACT,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3G,OAAO;QACL,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACtC,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI;QAC7C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI;QAC/C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACxC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI;KAC/D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAyB;IACnD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,oCAAoC;IACpC,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;YAC3D,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;IACL,CAAC;IACD,qCAAqC;SAChC,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;YAC3D,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,IAAI,QAAQ,CAAC,eAAe,GAAG,OAAO,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,QAAQ,CAAC,eAAe;YACjC,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,IAAI,QAAQ,CAAC,kBAAkB,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE,QAAQ,CAAC,kBAAkB;YACpC,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,aAAqB,EAAE;IAEvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC1B,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;KACvB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAErC,4DAA4D;IAC5D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,QAAQ,IAAI,KAAK,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;YACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEjC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QACnE,cAAc,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAC5F,CAAC,MAAM,CAAC;QACT,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3F,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAoB,EAAE,KAAK,EAAG,CAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvH,iBAAiB,CAAC,IAAI,CACpB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAgD;QAC1D,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE;QAC/C,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE;QACjD,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE;KACzD,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,KAAK,UAAU,QAAQ,QAAQ,CAAC,WAAW,YAAY,WAAW,SAAS,YAAY,WAAW,gBAAgB,GAAG,CAAC;IAEtI,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExC,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;QAC7D,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;QACpE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;QAC7D,KAAK,IAAI,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACrE,CAAC;AAED,6BAA6B;AAE7B,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAkB;IACxE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAQ/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;QAC7D,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;QACpE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3C,wCAAwC;IACxC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;YAC7D,YAAY,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;QACtE,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;YAC7D,aAAa,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;QACvE,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,SAAS,WAAW,CAClB,MAA2B,EAC3B,IAAY,EACZ,KAAa;QAEb,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACvB,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QAE3B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,UAAU;gBACjB,MAAM;gBACN,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,IAAI,CAAC,cAAc,EAAE,MAAM,KAAK,CAAC,cAAc,EAAE,GAAG;aAChJ,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,MAAM;gBACN,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,MAAM,KAAK,CAAC,cAAc,EAAE,GAAG;aAC3K,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC5D,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/D,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,OAAe,EAAE;IAEjB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExC,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,MAAM,GAAG,QAAQ;YAAE,SAAS;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC;QAC7D,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC;QACpE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,iCAAiC;IACjC,MAAM,MAAM,GAAsD,EAAE,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG;YACT,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ProjectConfig, OnboardingResult, OnboardingStep } from "../types.js";
2
+ import type { GitOperations } from "./git_deps.js";
3
+ import type { KnowledgeIndexManager } from "../knowledge/index_manager.js";
4
+ export interface OnboardingInput {
5
+ config: ProjectConfig;
6
+ projectPath: string;
7
+ gitOps: GitOperations;
8
+ knowledgeIndex?: KnowledgeIndexManager;
9
+ currentStep?: OnboardingStep;
10
+ completedSteps?: OnboardingStep[];
11
+ }
12
+ /** Input for the public `onboard` function used by the MCP tool layer. */
13
+ export interface OnboardToolInput {
14
+ config: ProjectConfig;
15
+ projectPath: string;
16
+ gitOps: GitOperations;
17
+ knowledgeIndex?: KnowledgeIndexManager;
18
+ currentStep?: OnboardingStep;
19
+ reset?: boolean;
20
+ }
21
+ export declare function runOnboarding(input: OnboardingInput): Promise<OnboardingResult>;
22
+ export declare function onboard(input: OnboardToolInput): Promise<OnboardingResult>;
23
+ export declare function loadOnboardingSession(projectPath: string): Promise<{
24
+ current_step: OnboardingStep;
25
+ completed_steps: OnboardingStep[];
26
+ } | null>;
27
+ //# sourceMappingURL=onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/engine/onboarding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAA4B,MAAM,aAAa,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAI3E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgCD,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgErF;AAID,wBAAsB,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAehF;AA0SD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,YAAY,EAAE,cAAc,CAAC;IAAC,eAAe,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAYrF"}
@@ -0,0 +1,362 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ // ── Constants ──
4
+ const ALL_STEPS = ["project_overview", "code_tour", "knowledge_review", "first_task"];
5
+ const KEY_DIRECTORY_PATTERNS = [
6
+ "controller", "controllers",
7
+ "service", "services",
8
+ "component", "components",
9
+ "page", "pages",
10
+ "route", "routes", "router", "routers",
11
+ "handler", "handlers",
12
+ "model", "models",
13
+ ];
14
+ const ENTRY_POINT_PATTERNS = [
15
+ /^index\.\w+$/,
16
+ /^main\.\w+$/,
17
+ /^app\.\w+$/,
18
+ /^server\.\w+$/,
19
+ ];
20
+ const STEP_DESCRIPTIONS = {
21
+ project_overview: "项目概览",
22
+ code_tour: "代码游览",
23
+ knowledge_review: "知识库复习",
24
+ first_task: "首次任务",
25
+ };
26
+ // ── Main function ──
27
+ export async function runOnboarding(input) {
28
+ const { config, projectPath, gitOps, knowledgeIndex } = input;
29
+ const completedSteps = [...(input.completedSteps ?? [])];
30
+ // Determine which step to execute
31
+ let currentStep;
32
+ if (input.currentStep && !completedSteps.includes(input.currentStep)) {
33
+ currentStep = input.currentStep;
34
+ }
35
+ else {
36
+ const nextStep = ALL_STEPS.find((s) => !completedSteps.includes(s));
37
+ if (nextStep) {
38
+ currentStep = nextStep;
39
+ }
40
+ else {
41
+ // All completed -- return final state
42
+ return {
43
+ current_step: "first_task",
44
+ completed_steps: [...ALL_STEPS],
45
+ next_action_hint: "引导已完成!您可以开始使用 SoloForge。",
46
+ };
47
+ }
48
+ }
49
+ const result = {
50
+ current_step: currentStep,
51
+ completed_steps: [...completedSteps],
52
+ next_action_hint: "",
53
+ };
54
+ // Execute current step
55
+ switch (currentStep) {
56
+ case "project_overview":
57
+ result.project_overview = await buildProjectOverview(config, projectPath);
58
+ break;
59
+ case "code_tour":
60
+ result.code_tour = await buildCodeTour(config, projectPath, gitOps);
61
+ break;
62
+ case "knowledge_review":
63
+ result.knowledge_summary = buildKnowledgeSummary(knowledgeIndex);
64
+ break;
65
+ case "first_task":
66
+ result.first_task_suggestion = await buildFirstTaskSuggestion(projectPath, gitOps);
67
+ break;
68
+ }
69
+ // Mark step as completed
70
+ if (!completedSteps.includes(currentStep)) {
71
+ completedSteps.push(currentStep);
72
+ }
73
+ result.completed_steps = [...completedSteps];
74
+ // Set next action hint
75
+ const remaining = ALL_STEPS.filter((s) => !completedSteps.includes(s));
76
+ if (remaining.length > 0) {
77
+ result.next_action_hint = `下一步:${STEP_DESCRIPTIONS[remaining[0]]}(${remaining[0]})`;
78
+ }
79
+ else {
80
+ result.next_action_hint = "引导已完成!您可以开始使用 SoloForge。";
81
+ }
82
+ // Best-effort session persistence
83
+ await persistSession(projectPath, currentStep, completedSteps).catch(() => {
84
+ /* ignore IO errors */
85
+ });
86
+ return result;
87
+ }
88
+ // ── Public entry point for MCP tool (sf_onboard) ──
89
+ export async function onboard(input) {
90
+ const { config, projectPath, gitOps, knowledgeIndex, currentStep, reset } = input;
91
+ let completedSteps = [];
92
+ if (reset) {
93
+ await deleteSessionFile(projectPath).catch(() => { });
94
+ }
95
+ else {
96
+ const session = await loadOnboardingSession(projectPath);
97
+ if (session) {
98
+ completedSteps = session.completed_steps;
99
+ }
100
+ }
101
+ return runOnboarding({ config, projectPath, gitOps, knowledgeIndex, currentStep, completedSteps });
102
+ }
103
+ // ── Step: project_overview ──
104
+ async function buildProjectOverview(config, projectPath) {
105
+ const { backend, frontend } = config.tech_stack;
106
+ const techStack = `backend: ${backend.framework} ${backend.version}, frontend: ${frontend.framework} ${frontend.version}`;
107
+ const repos = config.repos.map((r) => ({
108
+ name: r.name,
109
+ lang: r.lang,
110
+ framework: r.framework,
111
+ }));
112
+ let conventions = [];
113
+ if (config.conventions_file) {
114
+ try {
115
+ const conventionsPath = path.isAbsolute(config.conventions_file)
116
+ ? config.conventions_file
117
+ : path.join(projectPath, config.conventions_file);
118
+ const content = await fs.readFile(conventionsPath, "utf-8");
119
+ conventions = content
120
+ .split("\n")
121
+ .map((line) => line.trim())
122
+ .filter((line) => line.length > 0 && !line.startsWith("#"));
123
+ }
124
+ catch {
125
+ /* conventions file not found or unreadable */
126
+ }
127
+ }
128
+ return {
129
+ name: config.name,
130
+ tech_stack: techStack,
131
+ repos,
132
+ conventions,
133
+ };
134
+ }
135
+ // ── Step: code_tour ──
136
+ async function buildCodeTour(config, projectPath, gitOps) {
137
+ const keyModules = [];
138
+ const allScopePaths = [...config.scope.backend, ...config.scope.frontend];
139
+ // Walk scope paths for key directories
140
+ for (const scopeGlob of allScopePaths) {
141
+ // Extract directory prefix from glob patterns like "src/**", "web/pages/*"
142
+ const dirPrefix = scopeGlob.replace(/\/\*\*?$/, "").replace(/\/\*$/, "");
143
+ const absDir = path.resolve(projectPath, dirPrefix);
144
+ try {
145
+ const entries = await fs.readdir(absDir, { withFileTypes: true });
146
+ for (const entry of entries) {
147
+ if (entry.isDirectory() && KEY_DIRECTORY_PATTERNS.includes(entry.name.toLowerCase())) {
148
+ keyModules.push({
149
+ path: path.join(dirPrefix, entry.name),
150
+ description: `${entry.name} 模块`,
151
+ });
152
+ }
153
+ }
154
+ }
155
+ catch {
156
+ /* directory not found or unreadable */
157
+ }
158
+ }
159
+ // Use git log to find most active areas
160
+ try {
161
+ const log = await gitOps.getLog(projectPath, { maxCount: 5 });
162
+ const touchedFiles = new Set();
163
+ for (const entry of log) {
164
+ // Extract file references from commit messages
165
+ const matches = entry.message.matchAll(/[\w/.-]+\.\w{1,5}/g);
166
+ for (const m of matches) {
167
+ touchedFiles.add(m[0]);
168
+ }
169
+ }
170
+ // Add top-level directories from touched files that aren't already in keyModules
171
+ for (const file of touchedFiles) {
172
+ const parts = file.split("/");
173
+ if (parts.length >= 2) {
174
+ const dir = parts.slice(0, 2).join("/");
175
+ if (!keyModules.some((km) => km.path.startsWith(dir))) {
176
+ // Only add if the directory looks meaningful (not just file references)
177
+ const dirName = parts[1];
178
+ if (KEY_DIRECTORY_PATTERNS.some((p) => dirName.toLowerCase().includes(p))) {
179
+ keyModules.push({
180
+ path: dir,
181
+ description: `近期活跃区域(来自提交记录)`,
182
+ });
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+ catch {
189
+ /* git log may fail */
190
+ }
191
+ // Find entry points in scope root directories
192
+ const entryPoints = [];
193
+ for (const scopeGlob of allScopePaths) {
194
+ const dirPrefix = scopeGlob.replace(/\/\*\*?$/, "").replace(/\/\*$/, "");
195
+ const absDir = path.resolve(projectPath, dirPrefix);
196
+ try {
197
+ const entries = await fs.readdir(absDir, { withFileTypes: true });
198
+ for (const entry of entries) {
199
+ if (entry.isFile() && ENTRY_POINT_PATTERNS.some((pattern) => pattern.test(entry.name))) {
200
+ const entryPath = path.join(dirPrefix, entry.name);
201
+ if (!entryPoints.includes(entryPath)) {
202
+ entryPoints.push(entryPath);
203
+ }
204
+ }
205
+ }
206
+ }
207
+ catch {
208
+ /* directory not found */
209
+ }
210
+ }
211
+ return {
212
+ key_modules: keyModules,
213
+ entry_points: entryPoints,
214
+ };
215
+ }
216
+ // ── Step: knowledge_review ──
217
+ function buildKnowledgeSummary(knowledgeIndex) {
218
+ if (!knowledgeIndex) {
219
+ return {
220
+ total: 0,
221
+ patterns: 0,
222
+ procedures: 0,
223
+ key_topics: [],
224
+ };
225
+ }
226
+ try {
227
+ const allEntries = knowledgeIndex.getAllEntries();
228
+ const combined = [...allEntries.global, ...allEntries.project];
229
+ let patterns = 0;
230
+ let procedures = 0;
231
+ const keyTopics = new Set();
232
+ for (const entry of combined) {
233
+ if (entry.status !== "active" && entry.status !== "staged")
234
+ continue;
235
+ switch (entry.type) {
236
+ case "pattern":
237
+ patterns++;
238
+ break;
239
+ case "procedure":
240
+ procedures++;
241
+ break;
242
+ }
243
+ keyTopics.add(entry.name);
244
+ }
245
+ return {
246
+ total: combined.filter((e) => e.status === "active" || e.status === "staged").length,
247
+ patterns,
248
+ procedures,
249
+ key_topics: [...keyTopics].slice(0, 10),
250
+ };
251
+ }
252
+ catch {
253
+ return {
254
+ total: 0,
255
+ patterns: 0,
256
+ procedures: 0,
257
+ key_topics: [],
258
+ };
259
+ }
260
+ }
261
+ // ── Step: first_task ──
262
+ async function buildFirstTaskSuggestion(projectPath, gitOps) {
263
+ const suggestions = [];
264
+ // Check for uncommitted changes
265
+ try {
266
+ const status = await gitOps.getStatus(projectPath);
267
+ if (status.length > 0) {
268
+ suggestions.push({
269
+ intent: "提交当前工作区变更",
270
+ reason: `工作区有 ${status.length} 个未提交的变更`,
271
+ difficulty: "low",
272
+ });
273
+ }
274
+ }
275
+ catch {
276
+ /* status may fail */
277
+ }
278
+ // Analyze recent commit history for task ideas
279
+ try {
280
+ const log = await gitOps.getLog(projectPath, { maxCount: 10 });
281
+ const recentMessages = log.map((e) => e.message.toLowerCase());
282
+ // Check if tests are mentioned
283
+ const hasTestMentions = recentMessages.some((m) => m.includes("test"));
284
+ if (!hasTestMentions) {
285
+ suggestions.push({
286
+ intent: "补充测试覆盖率",
287
+ reason: "近期提交中未发现测试相关变更,建议补充测试",
288
+ difficulty: "low",
289
+ });
290
+ }
291
+ // Check for docs
292
+ const hasDocMentions = recentMessages.some((m) => m.includes("doc") || m.includes("readme"));
293
+ if (!hasDocMentions) {
294
+ suggestions.push({
295
+ intent: "补充项目文档",
296
+ reason: "近期提交中未发现文档相关变更,建议补充文档",
297
+ difficulty: "low",
298
+ });
299
+ }
300
+ // Check for lint/fix
301
+ const hasLintFixes = recentMessages.some((m) => m.includes("lint") || m.includes("style") || m.includes("format"));
302
+ if (!hasLintFixes) {
303
+ suggestions.push({
304
+ intent: "修复 lint 警告",
305
+ reason: "近期提交中未发现代码风格修复,建议运行 lint 检查",
306
+ difficulty: "low",
307
+ });
308
+ }
309
+ // If there are recent commits, suggest reviewing them
310
+ if (log.length > 0) {
311
+ suggestions.push({
312
+ intent: "阅读近期提交,熟悉代码风格",
313
+ reason: `最近有 ${log.length} 次提交,阅读它们有助于了解项目开发节奏`,
314
+ difficulty: "low",
315
+ });
316
+ }
317
+ }
318
+ catch {
319
+ /* git log may fail */
320
+ }
321
+ // Default suggestion if nothing else
322
+ if (suggestions.length === 0) {
323
+ suggestions.push({
324
+ intent: "阅读项目配置和入口文件",
325
+ reason: "从了解项目基本结构开始",
326
+ difficulty: "low",
327
+ });
328
+ }
329
+ // Return the first suggestion
330
+ return suggestions[0];
331
+ }
332
+ async function deleteSessionFile(projectPath) {
333
+ const sessionFile = path.join(projectPath, ".soloforge", "state", "onboarding-session.json");
334
+ await fs.unlink(sessionFile);
335
+ }
336
+ async function persistSession(projectPath, currentStep, completedSteps) {
337
+ const stateDir = path.join(projectPath, ".soloforge", "state");
338
+ const sessionFile = path.join(stateDir, "onboarding-session.json");
339
+ // Ensure directory exists
340
+ await fs.mkdir(stateDir, { recursive: true });
341
+ const session = {
342
+ current_step: currentStep,
343
+ completed_steps: completedSteps,
344
+ updated_at: new Date().toISOString(),
345
+ };
346
+ await fs.writeFile(sessionFile, JSON.stringify(session, null, 2), "utf-8");
347
+ }
348
+ export async function loadOnboardingSession(projectPath) {
349
+ const sessionFile = path.join(projectPath, ".soloforge", "state", "onboarding-session.json");
350
+ try {
351
+ const content = await fs.readFile(sessionFile, "utf-8");
352
+ const session = JSON.parse(content);
353
+ return {
354
+ current_step: session.current_step,
355
+ completed_steps: session.completed_steps,
356
+ };
357
+ }
358
+ catch {
359
+ return null;
360
+ }
361
+ }
362
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/engine/onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { PromptExperiment, ExperimentResult, TaskContext } from "../types.js";
2
+ /**
3
+ * Create a new prompt experiment (A/B test) comparing two prompt variants.
4
+ */
5
+ export declare function createExperiment(entry: string, variantB: string): PromptExperiment;
6
+ /**
7
+ * Evaluate an experiment by comparing two groups of TaskContexts.
8
+ *
9
+ * Metrics:
10
+ * - pass_rate: higher is better
11
+ * - avg_retry_count: lower is better
12
+ * - avg_duration_ms: lower is better
13
+ *
14
+ * Winner is determined by majority vote across metrics.
15
+ * Confidence is the average of absolute normalized differences.
16
+ */
17
+ export declare function evaluateExperiment(experiment: PromptExperiment, tasksA: TaskContext[], tasksB: TaskContext[]): ExperimentResult;
18
+ //# sourceMappingURL=prompt_experiment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt_experiment.d.ts","sourceRoot":"","sources":["../../src/engine/prompt_experiment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAUlF;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,EAAE,GACpB,gBAAgB,CAuElB"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Create a new prompt experiment (A/B test) comparing two prompt variants.
3
+ */
4
+ export function createExperiment(entry, variantB) {
5
+ return {
6
+ id: `EXP-${Date.now().toString(36).toUpperCase()}`,
7
+ knowledge_entry: entry,
8
+ variant_a: "current",
9
+ variant_b: variantB,
10
+ metrics: ["pass_rate", "avg_retry_count", "avg_duration_ms"],
11
+ status: "draft",
12
+ created_at: new Date().toISOString(),
13
+ };
14
+ }
15
+ function computeGroupMetrics(tasks) {
16
+ if (tasks.length === 0) {
17
+ return {
18
+ pass_rate: 0,
19
+ avg_retry_count: 0,
20
+ avg_duration_ms: 0,
21
+ };
22
+ }
23
+ const total = tasks.length;
24
+ // pass_rate: tasks with status "done" / total
25
+ const doneCount = tasks.filter((t) => t.status === "done").length;
26
+ const passRate = doneCount / total;
27
+ // avg_retry_count: average of execution.failure_history.length
28
+ let totalRetries = 0;
29
+ for (const task of tasks) {
30
+ if (task.execution?.failure_history) {
31
+ totalRetries += task.execution.failure_history.length;
32
+ }
33
+ }
34
+ const avgRetryCount = totalRetries / total;
35
+ // avg_duration_ms: average time from created_at to now
36
+ const now = Date.now();
37
+ let totalDuration = 0;
38
+ for (const task of tasks) {
39
+ const created = new Date(task.created_at).getTime();
40
+ totalDuration += now - created;
41
+ }
42
+ const avgDurationMs = totalDuration / total;
43
+ return {
44
+ pass_rate: Math.round(passRate * 1000) / 1000,
45
+ avg_retry_count: Math.round(avgRetryCount * 1000) / 1000,
46
+ avg_duration_ms: Math.round(avgDurationMs),
47
+ };
48
+ }
49
+ /**
50
+ * Evaluate an experiment by comparing two groups of TaskContexts.
51
+ *
52
+ * Metrics:
53
+ * - pass_rate: higher is better
54
+ * - avg_retry_count: lower is better
55
+ * - avg_duration_ms: lower is better
56
+ *
57
+ * Winner is determined by majority vote across metrics.
58
+ * Confidence is the average of absolute normalized differences.
59
+ */
60
+ export function evaluateExperiment(experiment, tasksA, tasksB) {
61
+ const metricsA = computeGroupMetrics(tasksA);
62
+ const metricsB = computeGroupMetrics(tasksB);
63
+ const directions = {
64
+ pass_rate: "higher_better",
65
+ avg_retry_count: "lower_better",
66
+ avg_duration_ms: "lower_better",
67
+ };
68
+ let winsA = 0;
69
+ let winsB = 0;
70
+ const diffs = [];
71
+ for (const metric of experiment.metrics) {
72
+ const valA = metricsA[metric] ?? 0;
73
+ const valB = metricsB[metric] ?? 0;
74
+ const dir = directions[metric];
75
+ // Normalized difference: |A - B| / max(A, B, 1) to avoid division by zero
76
+ const maxVal = Math.max(valA, valB, 1);
77
+ const absDiff = Math.abs(valA - valB) / maxVal;
78
+ diffs.push(absDiff);
79
+ if (dir === "higher_better") {
80
+ if (valA > valB)
81
+ winsA++;
82
+ else if (valB > valA)
83
+ winsB++;
84
+ }
85
+ else {
86
+ // lower_better
87
+ if (valA < valB)
88
+ winsA++;
89
+ else if (valB < valA)
90
+ winsB++;
91
+ }
92
+ }
93
+ // Determine winner by majority
94
+ let winner;
95
+ if (winsA >= 2) {
96
+ winner = "a";
97
+ }
98
+ else if (winsB >= 2) {
99
+ winner = "b";
100
+ }
101
+ else {
102
+ winner = "inconclusive";
103
+ }
104
+ // Confidence: average of absolute normalized differences (0.0 to 1.0)
105
+ const confidence = diffs.length > 0 ? Math.round((diffs.reduce((a, b) => a + b, 0) / diffs.length) * 1000) / 1000 : 0;
106
+ // Build summary in Chinese
107
+ let summary;
108
+ const passRateDiff = Math.round(Math.abs(metricsA.pass_rate - metricsB.pass_rate) * 10000) / 100;
109
+ if (winner === "inconclusive") {
110
+ summary = "实验结果不显著";
111
+ }
112
+ else if (winner === "a") {
113
+ summary = `实验完成:变体 A 胜出(胜率 ${passRateDiff}%)`;
114
+ }
115
+ else {
116
+ summary = `实验完成:变体 B 胜出(胜率 ${passRateDiff}%)`;
117
+ }
118
+ return {
119
+ experiment_id: experiment.id,
120
+ variant_a_metrics: metricsA,
121
+ variant_b_metrics: metricsB,
122
+ winner,
123
+ confidence,
124
+ summary,
125
+ };
126
+ }
127
+ //# sourceMappingURL=prompt_experiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt_experiment.js","sourceRoot":"","sources":["../../src/engine/prompt_experiment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { TaskContext, DegradationStatus } from "../types.js";
2
+ /**
3
+ * Analyzes a single TaskContext and returns degradation status for each component.
4
+ *
5
+ * This is a diagnostic function -- the actual degradation behavior is embedded
6
+ * in each component. Components that must never degrade (scope_controller,
7
+ * secret_detection) always return "full".
8
+ */
9
+ export declare function checkDegradation(context: TaskContext): DegradationStatus[];
10
+ /**
11
+ * Takes multiple TaskContexts (e.g., recent tasks) and determines overall system
12
+ * degradation by taking the worst level for each component across all contexts.
13
+ *
14
+ * Returns the aggregated component statuses and a human-readable summary in Chinese.
15
+ */
16
+ export declare function checkSystemDegradation(contexts: TaskContext[]): {
17
+ components: DegradationStatus[];
18
+ summary: string;
19
+ };
20
+ //# sourceMappingURL=resilience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../../src/engine/resilience.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwLpF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IAC/D,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB,CAsDA"}