soloforge 1.2.7 → 1.2.9

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 (406) hide show
  1. package/README.md +105 -321
  2. package/dist/adapters/claude_code/claude_md.d.ts +5 -0
  3. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/claude_md.js +6 -0
  5. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  6. package/dist/adapters/claude_code/hooks.d.ts +4 -0
  7. package/dist/adapters/claude_code/hooks.d.ts.map +1 -1
  8. package/dist/adapters/claude_code/hooks.js +5 -0
  9. package/dist/adapters/claude_code/hooks.js.map +1 -1
  10. package/dist/adapters/claude_code/server.d.ts.map +1 -1
  11. package/dist/adapters/claude_code/server.js +9 -21
  12. package/dist/adapters/claude_code/server.js.map +1 -1
  13. package/dist/adapters/claude_code/tools.d.ts +5 -0
  14. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  15. package/dist/adapters/claude_code/tools.js +619 -205
  16. package/dist/adapters/claude_code/tools.js.map +1 -1
  17. package/dist/adapters/codex/codex_config.d.ts +9 -0
  18. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  19. package/dist/adapters/codex/codex_config.js +11 -3
  20. package/dist/adapters/codex/codex_config.js.map +1 -1
  21. package/dist/adapters/codex/codex_rules.d.ts +5 -0
  22. package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
  23. package/dist/adapters/codex/codex_rules.js +8 -1
  24. package/dist/adapters/codex/codex_rules.js.map +1 -1
  25. package/dist/adapters/shared/workflow_template.d.ts +5 -0
  26. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  27. package/dist/adapters/shared/workflow_template.js +32 -79
  28. package/dist/adapters/shared/workflow_template.js.map +1 -1
  29. package/dist/adapters/trae/trae_config.d.ts +4 -0
  30. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  31. package/dist/adapters/trae/trae_config.js +5 -7
  32. package/dist/adapters/trae/trae_config.js.map +1 -1
  33. package/dist/adapters/trae/trae_rules.d.ts +5 -0
  34. package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
  35. package/dist/adapters/trae/trae_rules.js +7 -1
  36. package/dist/adapters/trae/trae_rules.js.map +1 -1
  37. package/dist/bin/config_commands.d.ts +33 -0
  38. package/dist/bin/config_commands.d.ts.map +1 -0
  39. package/dist/bin/config_commands.js +222 -0
  40. package/dist/bin/config_commands.js.map +1 -0
  41. package/dist/bin/soloforge.js +609 -119
  42. package/dist/bin/soloforge.js.map +1 -1
  43. package/dist/engine/artifact_contract_registry.d.ts +138 -0
  44. package/dist/engine/artifact_contract_registry.d.ts.map +1 -0
  45. package/dist/engine/artifact_contract_registry.js +427 -0
  46. package/dist/engine/artifact_contract_registry.js.map +1 -0
  47. package/dist/engine/audit_pool.d.ts +40 -0
  48. package/dist/engine/audit_pool.d.ts.map +1 -1
  49. package/dist/engine/audit_pool.js +37 -1
  50. package/dist/engine/audit_pool.js.map +1 -1
  51. package/dist/engine/audit_sampler.d.ts +5 -0
  52. package/dist/engine/audit_sampler.d.ts.map +1 -1
  53. package/dist/engine/audit_sampler.js +6 -0
  54. package/dist/engine/audit_sampler.js.map +1 -1
  55. package/dist/engine/audit_verifier.d.ts.map +1 -1
  56. package/dist/engine/audit_verifier.js +5 -1
  57. package/dist/engine/audit_verifier.js.map +1 -1
  58. package/dist/engine/batch1_manifest.d.ts +61 -0
  59. package/dist/engine/batch1_manifest.d.ts.map +1 -0
  60. package/dist/engine/batch1_manifest.js +220 -0
  61. package/dist/engine/batch1_manifest.js.map +1 -0
  62. package/dist/engine/batch1_reality_gate.d.ts +40 -0
  63. package/dist/engine/batch1_reality_gate.d.ts.map +1 -0
  64. package/dist/engine/batch1_reality_gate.js +290 -0
  65. package/dist/engine/batch1_reality_gate.js.map +1 -0
  66. package/dist/engine/batch1_scenario_registry.d.ts +62 -0
  67. package/dist/engine/batch1_scenario_registry.d.ts.map +1 -0
  68. package/dist/engine/batch1_scenario_registry.js +392 -0
  69. package/dist/engine/batch1_scenario_registry.js.map +1 -0
  70. package/dist/engine/batch1_scenario_runners.d.ts +42 -0
  71. package/dist/engine/batch1_scenario_runners.d.ts.map +1 -0
  72. package/dist/engine/batch1_scenario_runners.js +292 -0
  73. package/dist/engine/batch1_scenario_runners.js.map +1 -0
  74. package/dist/engine/capability_action_advisor.d.ts +3 -0
  75. package/dist/engine/capability_action_advisor.d.ts.map +1 -1
  76. package/dist/engine/capability_action_advisor.js +10 -0
  77. package/dist/engine/capability_action_advisor.js.map +1 -1
  78. package/dist/engine/capability_registry.d.ts +21 -0
  79. package/dist/engine/capability_registry.d.ts.map +1 -1
  80. package/dist/engine/capability_registry.js +113 -0
  81. package/dist/engine/capability_registry.js.map +1 -1
  82. package/dist/engine/capability_state_store.d.ts +63 -0
  83. package/dist/engine/capability_state_store.d.ts.map +1 -1
  84. package/dist/engine/capability_state_store.js +49 -1
  85. package/dist/engine/capability_state_store.js.map +1 -1
  86. package/dist/engine/change_coordinator.d.ts.map +1 -1
  87. package/dist/engine/change_coordinator.js +5 -4
  88. package/dist/engine/change_coordinator.js.map +1 -1
  89. package/dist/engine/classifier.d.ts +15 -5
  90. package/dist/engine/classifier.d.ts.map +1 -1
  91. package/dist/engine/classifier.js +70 -69
  92. package/dist/engine/classifier.js.map +1 -1
  93. package/dist/engine/code_reviewer.d.ts +14 -0
  94. package/dist/engine/code_reviewer.d.ts.map +1 -1
  95. package/dist/engine/code_reviewer.js +109 -10
  96. package/dist/engine/code_reviewer.js.map +1 -1
  97. package/dist/engine/cognitive_anchor.d.ts +14 -0
  98. package/dist/engine/cognitive_anchor.d.ts.map +1 -1
  99. package/dist/engine/cognitive_anchor.js +26 -2
  100. package/dist/engine/cognitive_anchor.js.map +1 -1
  101. package/dist/engine/command_execution_contract.d.ts +226 -0
  102. package/dist/engine/command_execution_contract.d.ts.map +1 -0
  103. package/dist/engine/command_execution_contract.js +571 -0
  104. package/dist/engine/command_execution_contract.js.map +1 -0
  105. package/dist/engine/confidence_scorer.d.ts.map +1 -1
  106. package/dist/engine/confidence_scorer.js +1 -0
  107. package/dist/engine/confidence_scorer.js.map +1 -1
  108. package/dist/engine/config_precedence_contract.d.ts +269 -0
  109. package/dist/engine/config_precedence_contract.d.ts.map +1 -0
  110. package/dist/engine/config_precedence_contract.js +948 -0
  111. package/dist/engine/config_precedence_contract.js.map +1 -0
  112. package/dist/engine/conflict_gate.d.ts +13 -0
  113. package/dist/engine/conflict_gate.d.ts.map +1 -1
  114. package/dist/engine/conflict_gate.js +20 -2
  115. package/dist/engine/conflict_gate.js.map +1 -1
  116. package/dist/engine/consumable_asset_registry.d.ts +46 -0
  117. package/dist/engine/consumable_asset_registry.d.ts.map +1 -0
  118. package/dist/engine/consumable_asset_registry.js +758 -0
  119. package/dist/engine/consumable_asset_registry.js.map +1 -0
  120. package/dist/engine/contract_guard.d.ts +4 -0
  121. package/dist/engine/contract_guard.d.ts.map +1 -1
  122. package/dist/engine/contract_guard.js +15 -7
  123. package/dist/engine/contract_guard.js.map +1 -1
  124. package/dist/engine/convention_detector.d.ts.map +1 -1
  125. package/dist/engine/convention_detector.js +5 -2
  126. package/dist/engine/convention_detector.js.map +1 -1
  127. package/dist/engine/core_engineering_principles.d.ts +155 -0
  128. package/dist/engine/core_engineering_principles.d.ts.map +1 -0
  129. package/dist/engine/core_engineering_principles.js +426 -0
  130. package/dist/engine/core_engineering_principles.js.map +1 -0
  131. package/dist/engine/debt_reporter.d.ts.map +1 -1
  132. package/dist/engine/debt_reporter.js +3 -1
  133. package/dist/engine/debt_reporter.js.map +1 -1
  134. package/dist/engine/debt_tracker.d.ts.map +1 -1
  135. package/dist/engine/debt_tracker.js +9 -3
  136. package/dist/engine/debt_tracker.js.map +1 -1
  137. package/dist/engine/debugger.d.ts.map +1 -1
  138. package/dist/engine/debugger.js +2 -0
  139. package/dist/engine/debugger.js.map +1 -1
  140. package/dist/engine/decision_contract.d.ts +11 -2
  141. package/dist/engine/decision_contract.d.ts.map +1 -1
  142. package/dist/engine/decision_contract.js +17 -2
  143. package/dist/engine/decision_contract.js.map +1 -1
  144. package/dist/engine/delivery.d.ts +7 -0
  145. package/dist/engine/delivery.d.ts.map +1 -1
  146. package/dist/engine/delivery.js +89 -36
  147. package/dist/engine/delivery.js.map +1 -1
  148. package/dist/engine/dependency_scanner.d.ts.map +1 -1
  149. package/dist/engine/dependency_scanner.js +14 -9
  150. package/dist/engine/dependency_scanner.js.map +1 -1
  151. package/dist/engine/developer_sovereignty.d.ts.map +1 -1
  152. package/dist/engine/developer_sovereignty.js +8 -2
  153. package/dist/engine/developer_sovereignty.js.map +1 -1
  154. package/dist/engine/diff_ownership.d.ts.map +1 -1
  155. package/dist/engine/diff_ownership.js +8 -0
  156. package/dist/engine/diff_ownership.js.map +1 -1
  157. package/dist/engine/diff_ownership_store.d.ts +26 -10
  158. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  159. package/dist/engine/diff_ownership_store.js +47 -20
  160. package/dist/engine/diff_ownership_store.js.map +1 -1
  161. package/dist/engine/dual_layer_mechanism_registry.d.ts +66 -0
  162. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -0
  163. package/dist/engine/dual_layer_mechanism_registry.js +1077 -0
  164. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -0
  165. package/dist/engine/escape_report.d.ts +50 -0
  166. package/dist/engine/escape_report.d.ts.map +1 -1
  167. package/dist/engine/escape_report.js +38 -0
  168. package/dist/engine/escape_report.js.map +1 -1
  169. package/dist/engine/evolver.d.ts.map +1 -1
  170. package/dist/engine/evolver.js +12 -2
  171. package/dist/engine/evolver.js.map +1 -1
  172. package/dist/engine/exploration.d.ts.map +1 -1
  173. package/dist/engine/exploration.js +87 -0
  174. package/dist/engine/exploration.js.map +1 -1
  175. package/dist/engine/failure_classifier.d.ts.map +1 -1
  176. package/dist/engine/failure_classifier.js +8 -0
  177. package/dist/engine/failure_classifier.js.map +1 -1
  178. package/dist/engine/feasibility_checker.d.ts +8 -0
  179. package/dist/engine/feasibility_checker.d.ts.map +1 -1
  180. package/dist/engine/feasibility_checker.js +12 -0
  181. package/dist/engine/feasibility_checker.js.map +1 -1
  182. package/dist/engine/git_deps.d.ts +4 -1
  183. package/dist/engine/git_deps.d.ts.map +1 -1
  184. package/dist/engine/git_deps.js +5 -1
  185. package/dist/engine/git_deps.js.map +1 -1
  186. package/dist/engine/governance_report.d.ts +57 -1
  187. package/dist/engine/governance_report.d.ts.map +1 -1
  188. package/dist/engine/governance_report.js +91 -1
  189. package/dist/engine/governance_report.js.map +1 -1
  190. package/dist/engine/impact_analyzer.d.ts.map +1 -1
  191. package/dist/engine/impact_analyzer.js +5 -1
  192. package/dist/engine/impact_analyzer.js.map +1 -1
  193. package/dist/engine/implementation_roadmap_registry.d.ts +105 -0
  194. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -0
  195. package/dist/engine/implementation_roadmap_registry.js +813 -0
  196. package/dist/engine/implementation_roadmap_registry.js.map +1 -0
  197. package/dist/engine/input_material_contract_registry.d.ts +185 -0
  198. package/dist/engine/input_material_contract_registry.d.ts.map +1 -0
  199. package/dist/engine/input_material_contract_registry.js +563 -0
  200. package/dist/engine/input_material_contract_registry.js.map +1 -0
  201. package/dist/engine/intent_expander.d.ts +8 -27
  202. package/dist/engine/intent_expander.d.ts.map +1 -1
  203. package/dist/engine/intent_expander.js +1170 -139
  204. package/dist/engine/intent_expander.js.map +1 -1
  205. package/dist/engine/intent_router.d.ts +82 -0
  206. package/dist/engine/intent_router.d.ts.map +1 -0
  207. package/dist/engine/intent_router.js +458 -0
  208. package/dist/engine/intent_router.js.map +1 -0
  209. package/dist/engine/io_controller.d.ts.map +1 -1
  210. package/dist/engine/io_controller.js +25 -13
  211. package/dist/engine/io_controller.js.map +1 -1
  212. package/dist/engine/java_quality_guard.d.ts.map +1 -1
  213. package/dist/engine/java_quality_guard.js +8 -4
  214. package/dist/engine/java_quality_guard.js.map +1 -1
  215. package/dist/engine/job_manager.d.ts +35 -0
  216. package/dist/engine/job_manager.d.ts.map +1 -1
  217. package/dist/engine/job_manager.js +53 -9
  218. package/dist/engine/job_manager.js.map +1 -1
  219. package/dist/engine/knowledge_config_loader.d.ts +12 -1
  220. package/dist/engine/knowledge_config_loader.d.ts.map +1 -1
  221. package/dist/engine/knowledge_config_loader.js +50 -10
  222. package/dist/engine/knowledge_config_loader.js.map +1 -1
  223. package/dist/engine/knowledge_injection_boundary.d.ts +56 -0
  224. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -0
  225. package/dist/engine/knowledge_injection_boundary.js +561 -0
  226. package/dist/engine/knowledge_injection_boundary.js.map +1 -0
  227. package/dist/engine/knowledge_manager.d.ts +73 -0
  228. package/dist/engine/knowledge_manager.d.ts.map +1 -1
  229. package/dist/engine/knowledge_manager.js +163 -21
  230. package/dist/engine/knowledge_manager.js.map +1 -1
  231. package/dist/engine/knowledge_sovereignty.d.ts +1 -0
  232. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -1
  233. package/dist/engine/knowledge_sovereignty.js +8 -3
  234. package/dist/engine/knowledge_sovereignty.js.map +1 -1
  235. package/dist/engine/llm_gateway.d.ts +74 -3
  236. package/dist/engine/llm_gateway.d.ts.map +1 -1
  237. package/dist/engine/llm_gateway.js +75 -4
  238. package/dist/engine/llm_gateway.js.map +1 -1
  239. package/dist/engine/main_path_integration_contract.d.ts +383 -0
  240. package/dist/engine/main_path_integration_contract.d.ts.map +1 -0
  241. package/dist/engine/main_path_integration_contract.js +1581 -0
  242. package/dist/engine/main_path_integration_contract.js.map +1 -0
  243. package/dist/engine/mechanism_contract_registry.d.ts +59 -0
  244. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -0
  245. package/dist/engine/mechanism_contract_registry.js +484 -0
  246. package/dist/engine/mechanism_contract_registry.js.map +1 -0
  247. package/dist/engine/migration_guard.d.ts.map +1 -1
  248. package/dist/engine/migration_guard.js +24 -15
  249. package/dist/engine/migration_guard.js.map +1 -1
  250. package/dist/engine/mutation_audit.d.ts +10 -0
  251. package/dist/engine/mutation_audit.d.ts.map +1 -1
  252. package/dist/engine/mutation_audit.js +19 -2
  253. package/dist/engine/mutation_audit.js.map +1 -1
  254. package/dist/engine/observability.d.ts.map +1 -1
  255. package/dist/engine/observability.js +17 -6
  256. package/dist/engine/observability.js.map +1 -1
  257. package/dist/engine/onboarding.d.ts.map +1 -1
  258. package/dist/engine/onboarding.js +20 -4
  259. package/dist/engine/onboarding.js.map +1 -1
  260. package/dist/engine/policy_drift_detector.d.ts +6 -0
  261. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  262. package/dist/engine/policy_drift_detector.js +16 -0
  263. package/dist/engine/policy_drift_detector.js.map +1 -1
  264. package/dist/engine/privacy_secret_contract.d.ts +320 -0
  265. package/dist/engine/privacy_secret_contract.d.ts.map +1 -0
  266. package/dist/engine/privacy_secret_contract.js +874 -0
  267. package/dist/engine/privacy_secret_contract.js.map +1 -0
  268. package/dist/engine/regression_matrix.d.ts +21 -8
  269. package/dist/engine/regression_matrix.d.ts.map +1 -1
  270. package/dist/engine/regression_matrix.js +37 -8
  271. package/dist/engine/regression_matrix.js.map +1 -1
  272. package/dist/engine/risk_sampler.d.ts +6 -0
  273. package/dist/engine/risk_sampler.d.ts.map +1 -1
  274. package/dist/engine/risk_sampler.js +9 -0
  275. package/dist/engine/risk_sampler.js.map +1 -1
  276. package/dist/engine/runtime_safety.d.ts.map +1 -1
  277. package/dist/engine/runtime_safety.js +7 -3
  278. package/dist/engine/runtime_safety.js.map +1 -1
  279. package/dist/engine/scaffolder.d.ts.map +1 -1
  280. package/dist/engine/scaffolder.js +7 -1
  281. package/dist/engine/scaffolder.js.map +1 -1
  282. package/dist/engine/scope_controller.d.ts.map +1 -1
  283. package/dist/engine/scope_controller.js +12 -1
  284. package/dist/engine/scope_controller.js.map +1 -1
  285. package/dist/engine/scope_lease.d.ts +43 -0
  286. package/dist/engine/scope_lease.d.ts.map +1 -1
  287. package/dist/engine/scope_lease.js +44 -0
  288. package/dist/engine/scope_lease.js.map +1 -1
  289. package/dist/engine/semantic_evidence.d.ts +6 -0
  290. package/dist/engine/semantic_evidence.d.ts.map +1 -1
  291. package/dist/engine/semantic_evidence.js +9 -0
  292. package/dist/engine/semantic_evidence.js.map +1 -1
  293. package/dist/engine/task_context.d.ts +36 -1
  294. package/dist/engine/task_context.d.ts.map +1 -1
  295. package/dist/engine/task_context.js +252 -13
  296. package/dist/engine/task_context.js.map +1 -1
  297. package/dist/engine/task_planner.d.ts.map +1 -1
  298. package/dist/engine/task_planner.js +13 -3
  299. package/dist/engine/task_planner.js.map +1 -1
  300. package/dist/engine/team_awareness.d.ts.map +1 -1
  301. package/dist/engine/team_awareness.js +8 -7
  302. package/dist/engine/team_awareness.js.map +1 -1
  303. package/dist/engine/template_mechanism_auditor.d.ts +93 -0
  304. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -0
  305. package/dist/engine/template_mechanism_auditor.js +622 -0
  306. package/dist/engine/template_mechanism_auditor.js.map +1 -0
  307. package/dist/engine/test_generator.d.ts.map +1 -1
  308. package/dist/engine/test_generator.js +6 -0
  309. package/dist/engine/test_generator.js.map +1 -1
  310. package/dist/engine/test_quality.d.ts +6 -0
  311. package/dist/engine/test_quality.d.ts.map +1 -1
  312. package/dist/engine/test_quality.js +26 -10
  313. package/dist/engine/test_quality.js.map +1 -1
  314. package/dist/engine/tool_invocation_contract_registry.d.ts +136 -0
  315. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -0
  316. package/dist/engine/tool_invocation_contract_registry.js +731 -0
  317. package/dist/engine/tool_invocation_contract_registry.js.map +1 -0
  318. package/dist/engine/traceability.d.ts +3 -0
  319. package/dist/engine/traceability.d.ts.map +1 -1
  320. package/dist/engine/traceability.js +12 -4
  321. package/dist/engine/traceability.js.map +1 -1
  322. package/dist/engine/user_feedback_contract.d.ts +162 -0
  323. package/dist/engine/user_feedback_contract.d.ts.map +1 -0
  324. package/dist/engine/user_feedback_contract.js +356 -0
  325. package/dist/engine/user_feedback_contract.js.map +1 -0
  326. package/dist/engine/verifier.d.ts +6 -1
  327. package/dist/engine/verifier.d.ts.map +1 -1
  328. package/dist/engine/verifier.js +114 -1
  329. package/dist/engine/verifier.js.map +1 -1
  330. package/dist/engine/workflow_contract_registry.d.ts +70 -0
  331. package/dist/engine/workflow_contract_registry.d.ts.map +1 -0
  332. package/dist/engine/workflow_contract_registry.js +501 -0
  333. package/dist/engine/workflow_contract_registry.js.map +1 -0
  334. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  335. package/dist/engine/workspace_resumer.js +8 -0
  336. package/dist/engine/workspace_resumer.js.map +1 -1
  337. package/dist/engine/zero_config_init.d.ts +67 -2
  338. package/dist/engine/zero_config_init.d.ts.map +1 -1
  339. package/dist/engine/zero_config_init.js +410 -28
  340. package/dist/engine/zero_config_init.js.map +1 -1
  341. package/dist/git/operations.d.ts +101 -0
  342. package/dist/git/operations.d.ts.map +1 -1
  343. package/dist/git/operations.js +125 -9
  344. package/dist/git/operations.js.map +1 -1
  345. package/dist/index.d.ts +1 -1
  346. package/dist/index.js +16 -5
  347. package/dist/index.js.map +1 -1
  348. package/dist/knowledge/conflict_detector.d.ts +6 -0
  349. package/dist/knowledge/conflict_detector.d.ts.map +1 -1
  350. package/dist/knowledge/conflict_detector.js +7 -0
  351. package/dist/knowledge/conflict_detector.js.map +1 -1
  352. package/dist/knowledge/health_checker.d.ts +16 -0
  353. package/dist/knowledge/health_checker.d.ts.map +1 -1
  354. package/dist/knowledge/health_checker.js +24 -1
  355. package/dist/knowledge/health_checker.js.map +1 -1
  356. package/dist/knowledge/index_manager.d.ts +140 -2
  357. package/dist/knowledge/index_manager.d.ts.map +1 -1
  358. package/dist/knowledge/index_manager.js +186 -26
  359. package/dist/knowledge/index_manager.js.map +1 -1
  360. package/dist/knowledge/loader.d.ts +8 -1
  361. package/dist/knowledge/loader.d.ts.map +1 -1
  362. package/dist/knowledge/loader.js +56 -2
  363. package/dist/knowledge/loader.js.map +1 -1
  364. package/dist/knowledge/writer.d.ts +49 -1
  365. package/dist/knowledge/writer.d.ts.map +1 -1
  366. package/dist/knowledge/writer.js +55 -1
  367. package/dist/knowledge/writer.js.map +1 -1
  368. package/dist/types.d.ts +255 -1
  369. package/dist/types.d.ts.map +1 -1
  370. package/dist/utils/logger.d.ts +3 -0
  371. package/dist/utils/logger.d.ts.map +1 -0
  372. package/dist/utils/logger.js +29 -0
  373. package/dist/utils/logger.js.map +1 -0
  374. package/package.json +7 -7
  375. package/templates/knowledge/acceptance_templates//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +30 -2
  376. package/templates/knowledge/checklists//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
  377. package/templates/knowledge/checklists//345/267/245/344/275/234/346/265/201/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
  378. package/templates/knowledge/checklists//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/351/252/214/346/224/266/346/270/205/345/215/225.md +43 -0
  379. package/templates/knowledge/checklists//347/237/245/350/257/206/346/263/250/345/205/245/351/252/214/346/224/266/346/270/205/345/215/225.md +17 -0
  380. package/templates/knowledge/checklists//351/232/220/347/247/201/345/256/241/346/237/245/346/270/205/345/215/225.md +15 -0
  381. package/templates/knowledge/checklists//351/252/214/350/257/201/351/252/214/346/224/266/346/270/205/345/215/225.md +16 -0
  382. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +1 -0
  383. package/templates/knowledge/procedures//344/270/273/351/223/276/350/267/257/346/216/245/345/205/245/351/252/214/350/257/201/346/265/201/347/250/213.md +23 -0
  384. package/templates/knowledge/procedures//345/221/275/344/273/244/346/211/247/350/241/214/346/265/201/347/250/213.md +19 -0
  385. package/templates/knowledge/procedures//345/267/245/345/205/267/350/260/203/347/224/250/346/265/201/347/250/213.md +15 -0
  386. package/templates/knowledge/procedures//346/204/217/345/233/276/350/267/257/347/224/261/346/265/201/347/250/213.md +15 -0
  387. package/templates/knowledge/procedures/{Figma → /346/272/220/347/240/201/345/216/237/345/236/213}/344/272/244/344/273/230/346/265/201/347/250/213.md +5 -5
  388. package/templates/knowledge/procedures//347/274/226/347/240/201/345/211/215/346/276/204/346/270/205/346/265/201/347/250/213.md +53 -0
  389. package/templates/knowledge/rules//344/272/247/347/211/251/345/245/221/347/272/246/350/247/204/345/210/231.md +21 -0
  390. package/templates/knowledge/rules//345/221/275/344/273/244/346/211/247/350/241/214/350/247/204/345/210/231.md +25 -0
  391. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/245/221/347/272/246/350/247/204/345/210/231.md +20 -0
  392. package/templates/knowledge/rules//345/267/245/345/205/267/350/260/203/347/224/250/350/247/204/345/210/231.md +25 -0
  393. package/templates/knowledge/rules//346/204/217/345/233/276/350/267/257/347/224/261/350/247/204/345/210/231.md +26 -0
  394. package/templates/knowledge/rules//346/211/247/350/241/214/345/256/210/345/215/253/350/257/204/344/274/260/350/247/204/345/210/231.md +24 -0
  395. package/templates/knowledge/rules//346/225/217/346/204/237/344/277/241/346/201/257/345/244/204/347/220/206/350/247/204/345/210/231.md +20 -0
  396. package/templates/knowledge/rules//346/240/270/345/277/203/345/267/245/347/250/213/346/211/247/350/241/214/345/216/237/345/210/231.md +125 -0
  397. package/templates/knowledge/rules//346/263/250/345/206/214/350/241/250/345/237/272/347/241/200/350/256/276/346/226/275/350/247/204/345/210/231.md +26 -0
  398. package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +22 -0
  399. package/templates/knowledge/rules//347/237/245/350/257/206/346/263/250/345/205/245/350/276/271/347/225/214/350/247/204/345/210/231.md +25 -0
  400. package/templates/knowledge/rules//350/276/223/345/205/245/346/235/220/346/226/231/345/245/221/347/272/246/350/247/204/345/210/231.md +27 -0
  401. package/templates/knowledge/rules//351/205/215/347/275/256/344/274/230/345/205/210/347/272/247/350/247/204/345/210/231.md +22 -0
  402. package/templates/knowledge/rules//351/230/262/345/255/244/345/262/233/345/256/236/347/216/260/350/247/204/345/210/231.md +24 -0
  403. package/templates/knowledge/rules//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226/350/247/204/345/210/231.md +28 -0
  404. package/templates/knowledge/rules//351/252/214/350/257/201/345/245/221/347/272/246/350/247/204/345/210/231.md +25 -0
  405. package/templates/knowledge/templates/{review_summary.md → /345/256/241/346/237/245/346/221/230/350/246/201.md} +1 -1
  406. package/templates/config.yaml +0 -53
@@ -0,0 +1,458 @@
1
+ import { classifyIngestionStatus } from "./input_material_contract_registry.js";
2
+ console.error("[soloForge] 意图路由: 模块已加载");
3
+ // ── 规则表 ──
4
+ /** 跳过类模式(闲聊、日常问答等不需要进入 SoloForge 的意图) */
5
+ const SKIP_PATTERNS = [
6
+ { pattern: /^(你好|hi|hello|hey|嗨|早上好|下午好|晚上好)[\s!!.。]*$/i, reason: "greeting" },
7
+ { pattern: /^(今天|现在|几号|什么时候|什么时候了)/, reason: "casual_question" },
8
+ { pattern: /不用\s*(soloForge|solo\s*forge)/i, reason: "explicit_skip" },
9
+ { pattern: /直接(告诉|说|回答|给)/, reason: "explicit_skip" },
10
+ ];
11
+ /** 通用知识问答模式(不需要代码执行) */
12
+ const GENERAL_QA_PATTERNS = [
13
+ /(?:什么(?:是|叫|意思))\s*(?:REST|API|DTO|DAO|SOA|DDD|TDD|BDD|CI\/CD|SQL|NoSQL|TypeScript|JavaScript|Java|Python|Go|Docker|K8s|Kubernetes|React|Vue|Spring|Node|Nginx|Redis|MySQL|MongoDB|GraphQL|gRPC|WebSocket|OAuth|JWT|SOLID|DRY|KISS|YAGNI)/i,
14
+ /^(?:TypeScript|Java|Python|Go|React|Vue|Spring)\s*(?:union type|泛型|接口|类|装饰器|闭包|协程|通道|组件|生命周期|状态管理|中间件)/i,
15
+ ];
16
+ /** 纯解释类模式 */
17
+ const PURE_EXPLAIN_PATTERNS = [
18
+ /(?:解释|说明)(?:一下|下)?\s*(?:这个|这|这模块|这代码|这段|这个模块)\s*(?:怎么|如何|是什么|是什么意思|的|了)/,
19
+ /^(?:解释|说明)(?:一下|下)?\s/,
20
+ /^(?:这个|这)\s*(?:是|什么)/,
21
+ ];
22
+ /** 产物信号规则表 */
23
+ const ARTIFACT_SIGNALS = [
24
+ { pattern: /原型(?:说明|规约|描述|文档|报告|spec)/, artifactKind: "prototype_spec", defaultName: "原型说明", template: "原型说明模版.md" },
25
+ { pattern: /接口(?:设计|清单|文档|spec)/, artifactKind: "api_spec", defaultName: "接口设计" },
26
+ { pattern: /(?:架构设计|详细设计)/, artifactKind: "design_doc", defaultName: "设计文档" },
27
+ { pattern: /测试计划/, artifactKind: "test_plan", defaultName: "测试计划" },
28
+ { pattern: /迁移(?:方案|评估|计划)/, artifactKind: "migration_plan", defaultName: "迁移方案" },
29
+ { pattern: /审查报告|代码审查/, artifactKind: "review_report", defaultName: "审查报告" },
30
+ { pattern: /(?:任务拆解|开发任务|拆.*任务)/, artifactKind: "task_breakdown", defaultName: "任务拆解" },
31
+ { pattern: /根因(?:分析|报告)/, artifactKind: "root_cause", defaultName: "根因分析" },
32
+ { pattern: /故障复盘|故障分析|复盘报告/, artifactKind: "incident_review", defaultName: "故障复盘" },
33
+ { pattern: /验收(?:清单|标准|checklist)/, artifactKind: "acceptance_checklist", defaultName: "验收清单" },
34
+ { pattern: /交互(?:规约|规范|说明)/, artifactKind: "interaction_spec", defaultName: "交互规约" },
35
+ { pattern: /领域(?:模型|图)/, artifactKind: "domain_model", defaultName: "领域模型" },
36
+ { pattern: /设计(?:文档|方案|说明)/, artifactKind: "design_doc", defaultName: "设计文档" },
37
+ ];
38
+ /** 产物动词: 只有明确表达"产出/生成"意图的才算 */
39
+ const ARTIFACT_VERBS = [
40
+ /生成/, /输出/, /抓取/, /提取/, /整理成/, /写成/,
41
+ /梳理.*(?:成|为|出)/,
42
+ /拆(?:成|分为)/,
43
+ /导出/, /输出为/, /保存为/, /产出到/, /做一份/, /写一份/, /生成一份/,
44
+ /做成/, /形成/, /制作/, /从.*(?:生成|输出|提取|抓取)/,
45
+ ];
46
+ /** 源码提取信号: 只有明确从外部材料读取的才算 */
47
+ const SOURCE_EXTRACTION_PATTERNS = [
48
+ { pattern: /\.(zip|tar|gz|rar|7z|jar|war)/i, inputKind: "archive" },
49
+ { pattern: /源码包|压缩包|zip包|包文件/, inputKind: "archive" },
50
+ { pattern: /从\s*(?:源码包|压缩包|源码|代码包)/, inputKind: "archive" },
51
+ { pattern: /(?:logs?\/|\.log|日志(?:文件|目录|路径))/i, inputKind: "log" },
52
+ { pattern: /从报错日志/, inputKind: "log" },
53
+ ];
54
+ /** 提取类动词: "从X提取/读取" 信号优先于 artifact_generation */
55
+ const EXTRACTION_VERB_PATTERNS = [
56
+ /从\s+.*(?:提取|抽取)/,
57
+ /读取\s+.*生成/,
58
+ /抓取.*(?:源码|源代码|原型)/,
59
+ ];
60
+ /** 代码修改模式 */
61
+ const CODE_CHANGE_PATTERNS = [
62
+ /修复/, /fix/i, /bug/i, /错误修复/, /异常处理/,
63
+ /报错.*(?:修复|解决|处理)/,
64
+ /新增(?:功能|接口|页面|模块|字段|按钮|服务|路由|组件|一个|一个后台)/,
65
+ /加(?:一个|个|上|载)\s*(?:接口|功能|模块|页面|字段|按钮|服务|路由|组件)/,
66
+ /加(?:一个|个)?\s*(?:导出|查询|校验|权限|配置|逻辑|规则|支持|特性)/,
67
+ /新增用户/, /新增一个/,
68
+ /重构/, /优化结构/, /实现/, /开发/, /补(?:单元)?测试/, /写测试/,
69
+ /删除/, /添加/, /修改/, /变更/, /移除/, /替换/,
70
+ /脚手架/, /scaffold/i, /新建模块/,
71
+ ];
72
+ /** 分析类模式 */
73
+ const ANALYSIS_PATTERNS = [
74
+ /分析.*(?:模块|系统|架构|性能|安全|风险|影响)/,
75
+ /评估.*(?:风险|可行性|影响|质量)/,
76
+ /梳理.*(?:模型|架构|流程|依赖)/,
77
+ /看看.*(?:风险|问题|有没有)/,
78
+ /影响(?:哪些|范围)/,
79
+ /为什么(?:容易|总是|频繁)/,
80
+ /(?:报错|错误).*(?:是什么意思|怎么回事)/,
81
+ /分析.*(?:报错|错误|异常).*(?:意思|原因|为什么)/,
82
+ ];
83
+ /** 审查类模式 */
84
+ const REVIEW_PATTERNS = [
85
+ /审查/, /\breview\b/i, /检查代码/, /代码质量/,
86
+ ];
87
+ /** 规划类模式 */
88
+ const PLANNING_PATTERNS = [
89
+ /拆(?:成|分为)\s*(?:任务|阶段|步骤|模块)/,
90
+ /(?:实施|开发|发布)\s*计划/,
91
+ /排期/, /里程碑/,
92
+ ];
93
+ /** 全流程信号模式 */
94
+ const FULL_PIPELINE_SIGNALS = [
95
+ /从.*(?:到|至).*(?:交付|完成|上线|部署)/,
96
+ /全流程/, /端到端/, /完整流水/, /整套完成/,
97
+ /从设计到交付/, /从头到尾/,
98
+ ];
99
+ /** 操作类模式 */
100
+ const OPERATION_PATTERNS = [
101
+ /运行测试/, /执行构建/, /\bbuild\b/i, /\bci\b/i, /\bcd\b/i,
102
+ /跑测试/,
103
+ /准备.*(?:发布前|检查清单)/,
104
+ /发布前(?:检查|准备)/,
105
+ ];
106
+ /**
107
+ * 从意图文本中提取输入路径。
108
+ * 支持绝对路径和相对路径。相对路径保留原文不截断。
109
+ *
110
+ * @param intent - 用户意图文本
111
+ * @returns 提取到的路径列表,包含类型和摄取状态
112
+ */
113
+ function extractInputPaths(intent) {
114
+ const paths = [];
115
+ const seen = new Set();
116
+ function addPath(p, kind) {
117
+ if (seen.has(p))
118
+ return;
119
+ seen.add(p);
120
+ // 规范化 ~/ 路径用于策略检查,但保留原始路径
121
+ const normalizedForPolicy = p.replace(/^~\//, (process.env.HOME || "/") + "/");
122
+ const status = classifyIngestionStatus(normalizedForPolicy);
123
+ paths.push({ kind, path: p, ingestion_status: status });
124
+ }
125
+ // 收集所有绝对路径的 span(start, end),用于后续排除重叠的相对匹配
126
+ const absoluteSpans = [];
127
+ function recordAbsoluteSpan(match) {
128
+ absoluteSpans.push({ start: match.index, end: match.index + match[0].length });
129
+ }
130
+ function overlapsAbsolute(start, end) {
131
+ return absoluteSpans.some((s) => start >= s.start && start < s.end);
132
+ }
133
+ // 0. ~/ 路径(home 目录相对路径)
134
+ const tildeArchive = intent.match(/(~\/[\w.\-]+)+\.(?:zip|tar\.gz|gz|rar|7z|jar|war)/i);
135
+ if (tildeArchive) {
136
+ addPath(tildeArchive[0], "archive");
137
+ recordAbsoluteSpan(tildeArchive);
138
+ }
139
+ const tildeFileMatches = intent.matchAll(/(?<![\w\/])(~\/[\w.\-]+)+\.(?:log|md|txt|doc|docx|pdf|java|py|ts|tsx|js|jsx|go|rs|json|yaml|yml|toml|pem|key|rsa)/gi);
140
+ for (const m of tildeFileMatches) {
141
+ const p = m[0];
142
+ if (/\.log$/i.test(p))
143
+ addPath(p, "log");
144
+ else if (/\.(md|txt|doc|pdf|docx)$/i.test(p))
145
+ addPath(p, "doc");
146
+ else
147
+ addPath(p, "file");
148
+ recordAbsoluteSpan(m);
149
+ }
150
+ const tildeDirMatches = intent.matchAll(/(?<![\w\/])(~\/[\w.\-]+)+(?=\/?(?:\s|$|,|,|\)|\]|的|下|中|里))/g);
151
+ for (const m of tildeDirMatches) {
152
+ addPath(m[0], "directory");
153
+ recordAbsoluteSpan(m);
154
+ }
155
+ // 通用 ~/ 路径匹配(未被上述特定模式捕获的路径,如 ~/.ssh/id_rsa)
156
+ const tildeGenericMatches = intent.matchAll(/(~\/[\w.\-\/]+)/g);
157
+ for (const m of tildeGenericMatches) {
158
+ const p = m[0];
159
+ if (!seen.has(p))
160
+ addPath(p, "file");
161
+ recordAbsoluteSpan(m);
162
+ }
163
+ // 1. 绝对 archive: /xxx/yyy.zip — 跳过与 ~/ 路径重叠的
164
+ const absoluteArchive = intent.match(/(\/[\w.\-]+)+\.(?:zip|tar\.gz|gz|rar|7z|jar|war)/i);
165
+ if (absoluteArchive && !overlapsAbsolute(absoluteArchive.index, absoluteArchive.index + absoluteArchive[0].length)) {
166
+ addPath(absoluteArchive[0], "archive");
167
+ recordAbsoluteSpan(absoluteArchive);
168
+ }
169
+ // 2. 绝对文件路径: /tmp/error.log, /Users/Charlie/docs/api.md 等
170
+ const absoluteFileMatches = intent.matchAll(/(?<![\w\/])(\/[\w.\-]+)+\.(?:log|md|txt|doc|docx|pdf|java|py|ts|tsx|js|jsx|go|rs|json|yaml|yml|toml)/gi);
171
+ for (const m of absoluteFileMatches) {
172
+ if (overlapsAbsolute(m.index, m.index + m[0].length))
173
+ continue;
174
+ const p = m[0];
175
+ if (/\.log$/i.test(p))
176
+ addPath(p, "log");
177
+ else if (/\.(md|txt|doc|pdf|docx)$/i.test(p))
178
+ addPath(p, "doc");
179
+ else
180
+ addPath(p, "file");
181
+ recordAbsoluteSpan(m);
182
+ }
183
+ // 3. 绝对目录路径: /Users/Charlie/project/src 等
184
+ const absoluteDirMatches = intent.matchAll(/(?<![\w\/])(\/[\w.\-]+)+(?=\/?(?:\s|$|,|,|\)|\]|的|下|中|里))/g);
185
+ for (const m of absoluteDirMatches) {
186
+ const p = m[0];
187
+ if (overlapsAbsolute(m.index, m.index + m[0].length) || seen.has(p))
188
+ continue;
189
+ addPath(p, "directory");
190
+ recordAbsoluteSpan(m);
191
+ }
192
+ // 4. 相对文件路径: xxx/yyy.ext — 跳过与绝对路径重叠的
193
+ const fileMatches = intent.matchAll(/([\w][\w.\-]*(?:\/[\w.\-]+)+\.[\w]+)/g);
194
+ for (const m of fileMatches) {
195
+ if (overlapsAbsolute(m.index, m.index + m[0].length))
196
+ continue;
197
+ const p = m[1];
198
+ if (/\.log$/i.test(p))
199
+ addPath(p, "log");
200
+ else if (/\.(md|txt|doc|pdf|docx)$/i.test(p))
201
+ addPath(p, "doc");
202
+ else if (/\.(zip|tar\.gz|gz|rar|7z|jar|war)$/i.test(p))
203
+ addPath(p, "archive");
204
+ else
205
+ addPath(p, "file");
206
+ }
207
+ // 5. 相对目录路径: xxx/src, old-system/src, docs/api — 跳过与绝对路径重叠的
208
+ const dirMatches = intent.matchAll(/([\w.\-]+(?:\/[\w.\-]+)*\/(?:src|old-[\w]+|docs?|logs?))/g);
209
+ for (const m of dirMatches) {
210
+ if (overlapsAbsolute(m.index, m.index + m[0].length))
211
+ continue;
212
+ addPath(m[1], "directory");
213
+ }
214
+ return paths;
215
+ }
216
+ /**
217
+ * 从意图文本中检测产物信号。
218
+ * @param intent - 用户意图文本
219
+ * @param taskId - 可选的任务 ID,用于生成产物路径
220
+ * @returns 产物信息,未检测到时返回 undefined
221
+ */
222
+ function detectArtifact(intent, taskId) {
223
+ const id = taskId || "01";
224
+ for (const signal of ARTIFACT_SIGNALS) {
225
+ if (signal.pattern.test(intent)) {
226
+ return {
227
+ kind: signal.artifactKind,
228
+ path: `.soloforge/output/${id}/01-${signal.defaultName}.md`,
229
+ template: signal.template,
230
+ taskId,
231
+ };
232
+ }
233
+ }
234
+ if (/(?:文档|方案|规约|计划|清单|报告|说明文档)$/.test(intent)) {
235
+ const match = intent.match(/([一-龥]+(?:文档|方案|规约|计划|清单|报告|说明文档))$/);
236
+ const name = match ? match[1] : "产物";
237
+ return { kind: "unknown", path: `.soloforge/output/${id}/01-${name}.md`, taskId };
238
+ }
239
+ return undefined;
240
+ }
241
+ /** 检查意图文本中是否包含产物动词 */
242
+ function hasArtifactVerb(intent) {
243
+ return ARTIFACT_VERBS.some((p) => p.test(intent));
244
+ }
245
+ /** 检查意图文本中是否包含产物名词 */
246
+ function hasArtifactNoun(intent) {
247
+ return ARTIFACT_SIGNALS.some((s) => s.pattern.test(intent))
248
+ || /(?:文档|方案|规约|计划|清单|报告|说明文档)$/.test(intent);
249
+ }
250
+ /**
251
+ * 推断缺失材料的语义类型和澄清提示。
252
+ * @param intent - 用户意图文本
253
+ * @param hasPath - 意图文本中是否已包含路径
254
+ * @returns 材料列表和缺失提示信息
255
+ */
256
+ function inferMissingInputs(intent, hasPath) {
257
+ if (hasPath)
258
+ return { materials: [], missing: [] };
259
+ const missing = [];
260
+ const materials = [];
261
+ if (/源码包|压缩包|zip包|包文件|源码/.test(intent)) {
262
+ materials.push({ kind: "archive", required: true });
263
+ missing.push("请提供源码包 zip 或已解压源码目录路径");
264
+ }
265
+ else if (/报错日志|日志/.test(intent)) {
266
+ materials.push({ kind: "log", required: true });
267
+ missing.push("请提供日志文件路径或内容");
268
+ }
269
+ else {
270
+ materials.push({ kind: "archive", required: true });
271
+ missing.push("请提供输入材料路径");
272
+ }
273
+ return { materials, missing };
274
+ }
275
+ /**
276
+ * 主路由函数 — 根据用户意图文本确定语义路由和执行形态。
277
+ * 采用分层匹配策略,优先级从高到低: 跳过类 > 源码提取 > 规划 > 操作 > 分析 > 产物生成 > 代码修改 > 审查 > 通用分析 > 灰区 > 纯解释 > 兜底。
278
+ *
279
+ * @param input - 路由输入参数,包含意图文本和可选的项目路径/任务 ID
280
+ * @returns 意图路由决策,包含路由类型、执行形态和置信度
281
+ */
282
+ export function routeIntent(input) {
283
+ const { intent, task_id: taskId } = input;
284
+ const normalized = intent.toLowerCase();
285
+ console.error("[soloForge] 意图路由: 开始意图路由");
286
+ // 层 0: 跳过类
287
+ for (const sp of SKIP_PATTERNS) {
288
+ if (sp.pattern.test(intent)) {
289
+ console.error(`[soloForge] 意图路由: 匹配跳过模式 (${sp.reason}),路由到 skip_chat`);
290
+ return mk("skip_chat", "none", false, [], [], undefined, undefined, 0.95);
291
+ }
292
+ }
293
+ if (GENERAL_QA_PATTERNS.some((p) => p.test(intent))) {
294
+ console.error("[soloForge] 意图路由: 匹配通用问答模式,路由到 direct_answer");
295
+ return mk("direct_answer", "none", false, [], [], undefined, undefined, 0.9);
296
+ }
297
+ const artifactVerbPresent = hasArtifactVerb(intent);
298
+ const hasArtifactSignal = artifactVerbPresent && hasArtifactNoun(intent);
299
+ const artifact = detectArtifact(intent, taskId);
300
+ const inputPaths = extractInputPaths(intent);
301
+ const hasInputPaths = inputPaths.length > 0;
302
+ // 源码提取信号 = archive/log 显式模式 OR 提取类动词 + 输入路径/源码
303
+ const hasArchiveLogSignal = SOURCE_EXTRACTION_PATTERNS.some((s) => s.pattern.test(intent));
304
+ const hasExtractionVerb = EXTRACTION_VERB_PATTERNS.some((p) => p.test(intent));
305
+ const hasSourceExtraction = hasArchiveLogSignal
306
+ || (hasExtractionVerb && (hasInputPaths || /源码/.test(intent)));
307
+ const isFullPipeline = FULL_PIPELINE_SIGNALS.some((p) => p.test(intent));
308
+ // 层 1: 源码/材料提取 (明确的外部材料提取 + 产物信号)
309
+ if (hasSourceExtraction && (hasArtifactSignal || artifact)) {
310
+ console.error("[soloForge] 意图路由: 路由到 source_extraction");
311
+ const materials = inputPaths.length > 0
312
+ ? inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: true, ingestion_status: p.ingestion_status }))
313
+ : inferMissingInputs(intent, false).materials;
314
+ const missing = inputPaths.length > 0
315
+ ? []
316
+ : inferMissingInputs(intent, false).missing;
317
+ return mk("source_extraction", "single_artifact", false, materials, missing, artifact ?? { kind: "custom", path: `.soloforge/output/${taskId ?? "01"}/01-提取产物.md`, taskId }, inferPipelineHint(intent, artifact?.kind), 0.8);
318
+ }
319
+ // 层 2: 规划 (必须在产物生成之前,"拆成N阶段"优先级高于产物信号)
320
+ if (PLANNING_PATTERNS.some((p) => p.test(normalized)) || isFullPipeline) {
321
+ console.error("[soloForge] 意图路由: 路由到 planning");
322
+ if (isFullPipeline) {
323
+ return mk("planning", "multi_stage_plan", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], artifact, inferPipelineHint(intent, artifact?.kind), 0.75);
324
+ }
325
+ return mk("planning", "single_artifact", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], { kind: "task_breakdown", path: `.soloforge/output/${taskId ?? "01"}/01-任务拆解.md`, taskId }, undefined, 0.8);
326
+ }
327
+ // 层 3: 操作 (必须在产物生成之前,"发布前检查"优先级高于"清单"产物)
328
+ if (OPERATION_PATTERNS.some((p) => p.test(normalized))) {
329
+ console.error("[soloForge] 意图路由: 路由到 operation");
330
+ return mk("operation", "verification_only", false, [], [], undefined, undefined, 0.8);
331
+ }
332
+ // 层 3.5: 分析 (在产物生成之前,当有分析动词但无产物动词时优先走分析)
333
+ if (ANALYSIS_PATTERNS.some((p) => p.test(normalized)) && !artifactVerbPresent) {
334
+ console.error("[soloForge] 意图路由: 路由到 analysis(分析优先)");
335
+ return mk("analysis", "read_only_analysis", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.8);
336
+ }
337
+ // 层 4: 产物生成 (必须有产物动词 + 产物名词,或产物动词 + artifact 且非解释型)
338
+ if (hasArtifactSignal || (artifactVerbPresent && artifact && !PURE_EXPLAIN_PATTERNS.some((p) => p.test(intent)))) {
339
+ console.error("[soloForge] 意图路由: 路由到 artifact_generation");
340
+ const missing = [];
341
+ if (/根据\s*(?:PRD|需求文档|原型|接口文档|设计文档|源码)/i.test(intent) && inputPaths.length === 0) {
342
+ const refMatch = intent.match(/根据\s*(PRD|需求文档|原型|接口文档|设计文档|源码)/i);
343
+ if (refMatch)
344
+ missing.push(`请提供 ${refMatch[1]} 文件路径或内容`);
345
+ }
346
+ return mk("artifact_generation", "single_artifact", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), missing, artifact ?? { kind: "custom", path: `.soloforge/output/${taskId ?? "01"}/01-产物.md`, taskId }, inferPipelineHint(intent, artifact?.kind), 0.8);
347
+ }
348
+ // 层 5: 代码修改
349
+ if (CODE_CHANGE_PATTERNS.some((p) => p.test(normalized))) {
350
+ console.error("[soloForge] 意图路由: 路由到 code_change");
351
+ return mk("code_change", "code_execution", true, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.85);
352
+ }
353
+ // 层 6: 审查
354
+ if (REVIEW_PATTERNS.some((p) => p.test(normalized))) {
355
+ console.error("[soloForge] 意图路由: 路由到 review");
356
+ return mk("review", "read_only_analysis", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.85);
357
+ }
358
+ // 层 7: 分析 (通用分析检查)
359
+ if (ANALYSIS_PATTERNS.some((p) => p.test(normalized))) {
360
+ console.error("[soloForge] 意图路由: 路由到 analysis(通用)");
361
+ return mk("analysis", "read_only_analysis", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.8);
362
+ }
363
+ // 层 8: 灰区
364
+ if (/整理(?:一下|下)?/.test(intent)) {
365
+ if (!hasArtifactNoun(intent)) {
366
+ return mk("direct_answer", "none", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.6);
367
+ }
368
+ }
369
+ // 层 9: 纯解释
370
+ if (PURE_EXPLAIN_PATTERNS.some((p) => p.test(intent))) {
371
+ if (/(?:这个|这|项目里|项目中的|当前|现有)/.test(intent)) {
372
+ return mk("analysis", "read_only_analysis", false, [], [], undefined, undefined, 0.7);
373
+ }
374
+ return mk("direct_answer", "none", false, [], [], undefined, undefined, 0.85);
375
+ }
376
+ // 层 10: "看看" 灰区
377
+ if (/看看|看下/.test(intent)) {
378
+ if (/(?:风险|问题|有没有)/.test(intent)) {
379
+ return mk("review", "read_only_analysis", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.7);
380
+ }
381
+ return mk("direct_answer", "none", false, inputPaths.map((p) => ({ kind: p.kind, path: p.path, required: false, ingestion_status: p.ingestion_status })), [], undefined, undefined, 0.6);
382
+ }
383
+ // 兜底
384
+ console.error("[soloForge] 意图路由: 未匹配任何规则,兜底路由到 direct_answer");
385
+ return mk("direct_answer", "none", false, [], [], undefined, undefined, 0.3);
386
+ }
387
+ /**
388
+ * 构造路由决策对象。
389
+ * @param route - 路由类型
390
+ * @param execution_shape - 执行形态
391
+ * @param mutation_allowed - 是否允许变更
392
+ * @param input_materials - 输入材料列表
393
+ * @param missing - 缺失输入列表
394
+ * @param output_artifact - 输出产物
395
+ * @param pipeline_hint - 流水线提示
396
+ * @param confidence - 置信度
397
+ * @returns 意图路由决策
398
+ */
399
+ function mk(route, execution_shape, mutation_allowed, input_materials, missing, output_artifact, pipeline_hint, confidence) {
400
+ return {
401
+ route, execution_shape, mutation_allowed, input_materials,
402
+ output_artifact, pipeline_hint, missing_required_inputs: missing, confidence,
403
+ };
404
+ }
405
+ /**
406
+ * 推断流水线提示 — 根据意图文本和产物类型推断适用的流水线阶段。
407
+ * @param intent - 用户意图文本
408
+ * @param artifactKind - 可选的产物类型
409
+ * @returns 流水线提示字符串,无法推断时返回 undefined
410
+ */
411
+ function inferPipelineHint(intent, artifactKind) {
412
+ if (/源码.*原型|原型.*源码|源码包.*原型|prototype/i.test(intent)) {
413
+ return "source-prototype-to-delivery:step-1";
414
+ }
415
+ if (/从.*(?:设计|需求|原型).*到.*(?:交付|完成)/.test(intent)) {
416
+ return "source-prototype-to-delivery";
417
+ }
418
+ switch (artifactKind) {
419
+ case "prototype_spec": return "source-prototype-to-delivery:step-1";
420
+ case "api_spec": return "source-prototype-to-delivery:step-4";
421
+ case "design_doc": return "source-prototype-to-delivery:step-3";
422
+ case "test_plan": return "source-prototype-to-delivery:step-5";
423
+ default: return undefined;
424
+ }
425
+ }
426
+ /**
427
+ * 判断是否应进入 SoloForge 流程。
428
+ * skip_chat 和 direct_answer 路由不进入 SoloForge。
429
+ *
430
+ * @param decision - 意图路由决策
431
+ * @returns 是否应进入 SoloForge
432
+ */
433
+ export function shouldEnterSoloForge(decision) {
434
+ console.error("[soloForge] 意图路由: 判断是否进入 SoloForge,当前路由: " + decision.route);
435
+ return decision.route !== "skip_chat" && decision.route !== "direct_answer";
436
+ }
437
+ /**
438
+ * 根据路由决策选择对应的 Prompt 模板。
439
+ * @param decision - 意图路由决策
440
+ * @returns Prompt 模板名称
441
+ */
442
+ export function selectPromptTemplate(decision) {
443
+ console.error("[soloForge] 意图路由: 选择 Prompt 模板,路由: " + decision.route + ", 执行形态: " + decision.execution_shape);
444
+ if (decision.route === "source_extraction")
445
+ return "source_extraction_prompt";
446
+ if (decision.route === "direct_answer")
447
+ return "direct_answer_prompt";
448
+ switch (decision.execution_shape) {
449
+ case "code_execution": return "code_execution_prompt";
450
+ case "single_artifact": return "single_artifact_prompt";
451
+ case "read_only_analysis": return "read_only_analysis_prompt";
452
+ case "verification_only": return "verification_only_prompt";
453
+ case "multi_stage_plan": return "single_artifact_prompt";
454
+ case "none": return "direct_answer_prompt";
455
+ default: return "code_execution_prompt";
456
+ }
457
+ }
458
+ //# sourceMappingURL=intent_router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent_router.js","sourceRoot":"","sources":["../../src/engine/intent_router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"io_controller.d.ts","sourceRoot":"","sources":["../../src/engine/io_controller.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;GAeG;AAIH,WAAW;AACX,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAWD,WAAW;AACX,MAAM,WAAW,wBAAwB;IACvC,kBAAkB;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,eAAe;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB;IAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,YAAY;IACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGtB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,MAAM,EAAE,MAAM;CAajB;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,MAAM;IAK/B;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BnF;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAgDjD;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YAQnE,QAAQ;YASR,aAAa;YAmBb,kBAAkB;CAejC"}
1
+ {"version":3,"file":"io_controller.d.ts","sourceRoot":"","sources":["../../src/engine/io_controller.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;GAeG;AAIH,WAAW;AACX,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAWD,WAAW;AACX,MAAM,WAAW,wBAAwB;IACvC,kBAAkB;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,eAAe;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB;IAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,YAAY;IACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGtB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,MAAM,EAAE,MAAM;CAajB;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,MAAM;IAK/B;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnF;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAiDjD;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAclC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YASnE,QAAQ;YASR,aAAa;YAmBb,kBAAkB;CAejC"}
@@ -39,14 +39,10 @@ export class IOController {
39
39
  * @param reason - 加锁原因
40
40
  */
41
41
  async acquire(taskId, targetFiles, reason) {
42
- // 检查是否已有锁
43
- const existing = await this.readLock();
44
- if (existing) {
45
- throw new Error(`工作区已被任务 ${existing.task_id} 锁定(原因: ${existing.reason},时间: ${existing.acquired_at})。请等待完成或手动删除 ${this.lockPath}`);
46
- }
47
- // 生成 Git 工作树 Hash
42
+ console.error("[soloForge] IOController: 获取工作区锁", { taskId, reason, targetFileCount: targetFiles.length });
43
+ // 原子获取锁:直接尝试创建锁文件(O_EXCL),避免 TOCTOU 竞态
44
+ // 先准备锁数据
48
45
  const gitHash = await this.computeGitTreeHash();
49
- // 扫描目标文件快照
50
46
  const snapshots = await this.snapshotFiles(targetFiles);
51
47
  const lock = {
52
48
  task_id: taskId,
@@ -55,10 +51,21 @@ export class IOController {
55
51
  git_tree_hash: gitHash,
56
52
  file_snapshots: snapshots,
57
53
  };
58
- // 原子写入锁文件
59
- const tmpPath = `${this.lockPath}.tmp`;
60
- await fs.writeFile(tmpPath, JSON.stringify(lock, null, 2));
61
- await fs.rename(tmpPath, this.lockPath);
54
+ try {
55
+ // O_EXCL (wx): 原子创建锁文件 — 文件已存在时抛出 EEXIST,消除 check-then-create 竞态窗口
56
+ const handle = await fs.open(this.lockPath, "wx");
57
+ await handle.writeFile(JSON.stringify(lock, null, 2));
58
+ await handle.close();
59
+ }
60
+ catch (e) {
61
+ if (e instanceof Error && "code" in e && e.code === "EEXIST") {
62
+ // 锁文件已存在 — 读取现有锁信息给出友好提示
63
+ const existing = await this.readLock();
64
+ console.error("[soloForge] IOController: 工作区已被锁定", { existingTaskId: existing?.task_id });
65
+ throw new Error(`工作区已被任务 ${existing?.task_id} 锁定(原因: ${existing?.reason},时间: ${existing?.acquired_at})。请等待完成或手动删除 ${this.lockPath}`);
66
+ }
67
+ throw e;
68
+ }
62
69
  }
63
70
  /**
64
71
  * 校验工作区完整性 — 写入前必须调用。
@@ -66,6 +73,7 @@ export class IOController {
66
73
  * @throws DirtyWorkspaceError 当检测到外部修改时
67
74
  */
68
75
  async verify() {
76
+ console.error("[soloForge] IOController: 校验工作区完整性");
69
77
  const lock = await this.readLock();
70
78
  if (!lock) {
71
79
  return { clean: true, dirty_files: [], git_changed: false, message: "无活跃锁" };
@@ -112,8 +120,10 @@ export class IOController {
112
120
  * @throws DirtyWorkspaceError
113
121
  */
114
122
  async assertClean() {
123
+ console.error("[soloForge] IOController: 写入前强制校验工作区");
115
124
  const result = await this.verify();
116
125
  if (!result.clean) {
126
+ console.error("[soloForge] IOController: 工作区不干净,抛出 DirtyWorkspaceError", { dirtyFiles: result.dirty_files });
117
127
  const lock = await this.readLock();
118
128
  throw new DirtyWorkspaceError(result.dirty_files, lock?.file_snapshots ?? {}, lock?.task_id ?? "unknown");
119
129
  }
@@ -122,6 +132,7 @@ export class IOController {
122
132
  * 释放工作区锁 — 任务完成或取消后调用。
123
133
  */
124
134
  async release() {
135
+ console.error("[soloForge] IOController: 释放工作区锁");
125
136
  try {
126
137
  await fs.unlink(this.lockPath);
127
138
  }
@@ -133,6 +144,7 @@ export class IOController {
133
144
  * 检查工作区是否被锁定。
134
145
  */
135
146
  async isLocked() {
147
+ console.error("[soloForge] IOController: 检查工作区锁定状态");
136
148
  const lock = await this.readLock();
137
149
  if (!lock)
138
150
  return { locked: false };
@@ -169,8 +181,8 @@ export class IOController {
169
181
  }
170
182
  async computeGitTreeHash() {
171
183
  try {
172
- const { execSync } = await import("node:child_process");
173
- const diff = execSync("git diff HEAD --stat", {
184
+ const { execFileSync } = await import("node:child_process");
185
+ const diff = execFileSync("git", ["diff", "HEAD", "--stat"], {
174
186
  cwd: this.projectPath,
175
187
  encoding: "utf-8",
176
188
  timeout: 5000,
@@ -1 +1 @@
1
- {"version":3,"file":"io_controller.js","sourceRoot":"","sources":["../../src/engine/io_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AAkDjC;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,eAAe;IACN,UAAU,CAAW;IAC9B,gBAAgB;IACP,iBAAiB,CAA+B;IACzD,YAAY;IACH,MAAM,CAAS;IAExB,YACE,UAAoB,EACpB,SAAuC,EACvC,MAAc;QAEd,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC;YACrC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,MAAM,CAAC;QACtE,KAAK,CACH,gBAAgB,QAAQ,wBAAwB,CACjD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,aAAa;AAEb,MAAM,OAAO,YAAY;IACf,WAAW,CAAS;IACpB,QAAQ,CAAS;IAEzB,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,WAAqB,EAAE,MAAc;QACjE,UAAU;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,WAAW,QAAQ,CAAC,OAAO,WAAW,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,WAAW,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CACjH,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhD,WAAW;QACX,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,IAAI,GAAa;YACrB,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM;YACN,aAAa,EAAE,OAAO;YACtB,cAAc,EAAE,SAAS;SAC1B,CAAC;QAEF,UAAU;QACV,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,QAAQ,MAAM,CAAC;QACvC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC/E,CAAC;QAED,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,WAAW;QACX,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAElC,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACjE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW;gBACX,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,aAAa;QACb,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,cAAc,KAAK,IAAI,CAAC,aAAa,CAAC;QAEzD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAErD,IAAI,OAAe,CAAC;QACpB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,GAAG,aAAa,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,GAAG,aAAa,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC1D,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,mBAAmB,CAC3B,MAAM,CAAC,WAAW,EAClB,IAAI,EAAE,cAAc,IAAI,EAAE,EAC1B,IAAI,EAAE,OAAO,IAAI,SAAS,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;IAED,aAAa;IAEL,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAe;QACzC,MAAM,SAAS,GAAiC,EAAE,CAAC;QACnD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5C,SAAS,CAAC,QAAQ,CAAC,GAAG;oBACpB,QAAQ,EAAE,IAAI,CAAC,OAAO;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;iBAC3B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE;gBAC5C,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YACH,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;YAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;CACF;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"io_controller.js","sourceRoot":"","sources":["../../src/engine/io_controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"java_quality_guard.d.ts","sourceRoot":"","sources":["../../src/engine/java_quality_guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAiDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,EAAE,CAuBjF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,WAAW,EAAO,GAC/B,kBAAkB,CA2DpB"}
1
+ {"version":3,"file":"java_quality_guard.d.ts","sourceRoot":"","sources":["../../src/engine/java_quality_guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAiDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,EAAE,CAwBjF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,WAAW,EAAO,GAC/B,kBAAkB,CAgEpB"}