soloforge 1.1.44 → 1.1.46

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 (289) hide show
  1. package/README.md +3 -3
  2. package/dist/context/contracts/lifecycle_knowledge_contract.d.ts.map +1 -1
  3. package/dist/context/contracts/lifecycle_knowledge_contract.js +2 -2
  4. package/dist/context/contracts/lifecycle_knowledge_contract.js.map +1 -1
  5. package/dist/core/task_context/manager.d.ts +0 -8
  6. package/dist/core/task_context/manager.d.ts.map +1 -1
  7. package/dist/core/task_context/manager.js +1 -19
  8. package/dist/core/task_context/manager.js.map +1 -1
  9. package/dist/core/task_context/state_fact_classifier.d.ts +0 -8
  10. package/dist/core/task_context/state_fact_classifier.d.ts.map +1 -1
  11. package/dist/core/task_context/state_fact_classifier.js +0 -36
  12. package/dist/core/task_context/state_fact_classifier.js.map +1 -1
  13. package/dist/domain/contracts/design_artifact_pack.d.ts +0 -1
  14. package/dist/domain/contracts/design_artifact_pack.d.ts.map +1 -1
  15. package/dist/domain/contracts/design_artifact_pack.js +1 -4
  16. package/dist/domain/contracts/design_artifact_pack.js.map +1 -1
  17. package/dist/domain/index.d.ts +1 -1
  18. package/dist/domain/index.d.ts.map +1 -1
  19. package/dist/domain/registry.d.ts +2 -2
  20. package/dist/domain/registry.d.ts.map +1 -1
  21. package/dist/domain/types.d.ts +1 -12
  22. package/dist/domain/types.d.ts.map +1 -1
  23. package/dist/domain/types.js +3 -0
  24. package/dist/domain/types.js.map +1 -1
  25. package/dist/gate/contracts/capability_registry.d.ts.map +1 -1
  26. package/dist/gate/contracts/capability_registry.js +0 -26
  27. package/dist/gate/contracts/capability_registry.js.map +1 -1
  28. package/dist/gate/contracts/control_plane_contract.d.ts +1 -1
  29. package/dist/gate/contracts/control_plane_contract.d.ts.map +1 -1
  30. package/dist/gate/contracts/control_plane_contract.js +1 -10
  31. package/dist/gate/contracts/control_plane_contract.js.map +1 -1
  32. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts +1 -0
  33. package/dist/gate/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
  34. package/dist/gate/contracts/tool_invocation_contract_registry.js +1 -1
  35. package/dist/gate/contracts/tool_invocation_contract_registry.js.map +1 -1
  36. package/dist/gate/executors/executors_annotation.d.ts.map +1 -1
  37. package/dist/gate/executors/executors_annotation.js +8 -1
  38. package/dist/gate/executors/executors_annotation.js.map +1 -1
  39. package/dist/gate/executors/executors_artifact.d.ts +1 -1
  40. package/dist/gate/executors/executors_artifact.d.ts.map +1 -1
  41. package/dist/gate/executors/executors_artifact.js +18 -7
  42. package/dist/gate/executors/executors_artifact.js.map +1 -1
  43. package/dist/gate/executors/executors_deploy.d.ts.map +1 -1
  44. package/dist/gate/executors/executors_deploy.js +3 -2
  45. package/dist/gate/executors/executors_deploy.js.map +1 -1
  46. package/dist/gate/executors/executors_openapi_sync.d.ts.map +1 -1
  47. package/dist/gate/executors/executors_openapi_sync.js +15 -2
  48. package/dist/gate/executors/executors_openapi_sync.js.map +1 -1
  49. package/dist/gate/executors/executors_regex_scan.d.ts.map +1 -1
  50. package/dist/gate/executors/executors_regex_scan.js +9 -0
  51. package/dist/gate/executors/executors_regex_scan.js.map +1 -1
  52. package/dist/gate/executors/executors_trace.d.ts.map +1 -1
  53. package/dist/gate/executors/executors_trace.js +12 -2
  54. package/dist/gate/executors/executors_trace.js.map +1 -1
  55. package/dist/gate/index.d.ts +0 -2
  56. package/dist/gate/index.d.ts.map +1 -1
  57. package/dist/gate/index.js +0 -1
  58. package/dist/gate/index.js.map +1 -1
  59. package/dist/server/tools/index.d.ts.map +1 -1
  60. package/dist/server/tools/index.js +1 -3
  61. package/dist/server/tools/index.js.map +1 -1
  62. package/dist/server/tools/lazy_loaders.d.ts +0 -23
  63. package/dist/server/tools/lazy_loaders.d.ts.map +1 -1
  64. package/dist/server/tools/lazy_loaders.js +2 -33
  65. package/dist/server/tools/lazy_loaders.js.map +1 -1
  66. package/dist/server/tools/middleware.d.ts +2 -5
  67. package/dist/server/tools/middleware.d.ts.map +1 -1
  68. package/dist/server/tools/middleware.js +3 -33
  69. package/dist/server/tools/middleware.js.map +1 -1
  70. package/dist/server/tools/sf_task.d.ts.map +1 -1
  71. package/dist/server/tools/sf_task.js +9 -8
  72. package/dist/server/tools/sf_task.js.map +1 -1
  73. package/dist/server/tools/types.d.ts +0 -2
  74. package/dist/server/tools/types.d.ts.map +1 -1
  75. package/dist/types/pipeline_types.d.ts +1 -9
  76. package/dist/types/pipeline_types.d.ts.map +1 -1
  77. package/dist/verify/audit/verifier.d.ts.map +1 -1
  78. package/dist/verify/audit/verifier.js +0 -33
  79. package/dist/verify/audit/verifier.js.map +1 -1
  80. package/dist/verify/index.d.ts +1 -4
  81. package/dist/verify/index.d.ts.map +1 -1
  82. package/dist/verify/index.js +0 -3
  83. package/dist/verify/index.js.map +1 -1
  84. package/dist/verify/types.d.ts +0 -21
  85. package/dist/verify/types.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/templates/shared//345/206/263/347/255/226/347/275/221/345/205/263.md +7 -21
  88. package/dist/context/engine/dependency_scanner.d.ts +0 -23
  89. package/dist/context/engine/dependency_scanner.d.ts.map +0 -1
  90. package/dist/context/engine/dependency_scanner.js +0 -309
  91. package/dist/context/engine/dependency_scanner.js.map +0 -1
  92. package/dist/context/engine/exploration.d.ts +0 -194
  93. package/dist/context/engine/exploration.d.ts.map +0 -1
  94. package/dist/context/engine/exploration.js +0 -712
  95. package/dist/context/engine/exploration.js.map +0 -1
  96. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts +0 -42
  97. package/dist/context/knowledge/knowledge_acceptance_registry.d.ts.map +0 -1
  98. package/dist/context/knowledge/knowledge_acceptance_registry.js +0 -249
  99. package/dist/context/knowledge/knowledge_acceptance_registry.js.map +0 -1
  100. package/dist/context/knowledge/knowledge_scenario_registry.d.ts +0 -26
  101. package/dist/context/knowledge/knowledge_scenario_registry.d.ts.map +0 -1
  102. package/dist/context/knowledge/knowledge_scenario_registry.js +0 -267
  103. package/dist/context/knowledge/knowledge_scenario_registry.js.map +0 -1
  104. package/dist/context/knowledge/knowledge_sovereignty.d.ts +0 -65
  105. package/dist/context/knowledge/knowledge_sovereignty.d.ts.map +0 -1
  106. package/dist/context/knowledge/knowledge_sovereignty.js +0 -199
  107. package/dist/context/knowledge/knowledge_sovereignty.js.map +0 -1
  108. package/dist/context/team_awareness.d.ts +0 -42
  109. package/dist/context/team_awareness.d.ts.map +0 -1
  110. package/dist/context/team_awareness.js +0 -154
  111. package/dist/context/team_awareness.js.map +0 -1
  112. package/dist/context/templates/template_asset_visibility.d.ts +0 -116
  113. package/dist/context/templates/template_asset_visibility.d.ts.map +0 -1
  114. package/dist/context/templates/template_asset_visibility.js +0 -310
  115. package/dist/context/templates/template_asset_visibility.js.map +0 -1
  116. package/dist/gate/conflict_gate.d.ts +0 -53
  117. package/dist/gate/conflict_gate.d.ts.map +0 -1
  118. package/dist/gate/conflict_gate.js +0 -96
  119. package/dist/gate/conflict_gate.js.map +0 -1
  120. package/dist/gate/contracts/capability_action_advisor.d.ts +0 -34
  121. package/dist/gate/contracts/capability_action_advisor.d.ts.map +0 -1
  122. package/dist/gate/contracts/capability_action_advisor.js +0 -165
  123. package/dist/gate/contracts/capability_action_advisor.js.map +0 -1
  124. package/dist/gate/contracts/capability_state_store.d.ts +0 -121
  125. package/dist/gate/contracts/capability_state_store.d.ts.map +0 -1
  126. package/dist/gate/contracts/capability_state_store.js +0 -188
  127. package/dist/gate/contracts/capability_state_store.js.map +0 -1
  128. package/dist/gate/contracts/contract_guard.d.ts +0 -50
  129. package/dist/gate/contracts/contract_guard.d.ts.map +0 -1
  130. package/dist/gate/contracts/contract_guard.js +0 -611
  131. package/dist/gate/contracts/contract_guard.js.map +0 -1
  132. package/dist/gate/contracts/escape_report.d.ts +0 -103
  133. package/dist/gate/contracts/escape_report.d.ts.map +0 -1
  134. package/dist/gate/contracts/escape_report.js +0 -145
  135. package/dist/gate/contracts/escape_report.js.map +0 -1
  136. package/dist/gate/feasibility_checker.d.ts +0 -27
  137. package/dist/gate/feasibility_checker.d.ts.map +0 -1
  138. package/dist/gate/feasibility_checker.js +0 -114
  139. package/dist/gate/feasibility_checker.js.map +0 -1
  140. package/dist/gate/migration_guard.d.ts +0 -22
  141. package/dist/gate/migration_guard.d.ts.map +0 -1
  142. package/dist/gate/migration_guard.js +0 -277
  143. package/dist/gate/migration_guard.js.map +0 -1
  144. package/dist/gate/scope_lease.d.ts +0 -94
  145. package/dist/gate/scope_lease.d.ts.map +0 -1
  146. package/dist/gate/scope_lease.js +0 -180
  147. package/dist/gate/scope_lease.js.map +0 -1
  148. package/dist/git/git_deps.d.ts +0 -85
  149. package/dist/git/git_deps.d.ts.map +0 -1
  150. package/dist/git/git_deps.js +0 -22
  151. package/dist/git/git_deps.js.map +0 -1
  152. package/dist/git/operations.d.ts +0 -173
  153. package/dist/git/operations.d.ts.map +0 -1
  154. package/dist/git/operations.js +0 -350
  155. package/dist/git/operations.js.map +0 -1
  156. package/dist/server/tools/gate_engine.d.ts +0 -17
  157. package/dist/server/tools/gate_engine.d.ts.map +0 -1
  158. package/dist/server/tools/gate_engine.js +0 -17
  159. package/dist/server/tools/gate_engine.js.map +0 -1
  160. package/dist/server/tools/middleware/budget_check.d.ts +0 -35
  161. package/dist/server/tools/middleware/budget_check.d.ts.map +0 -1
  162. package/dist/server/tools/middleware/budget_check.js +0 -69
  163. package/dist/server/tools/middleware/budget_check.js.map +0 -1
  164. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts +0 -16
  165. package/dist/shared/contracts/contract_registry/builtin_contracts_core.d.ts.map +0 -1
  166. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js +0 -306
  167. package/dist/shared/contracts/contract_registry/builtin_contracts_core.js.map +0 -1
  168. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts +0 -16
  169. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.d.ts.map +0 -1
  170. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js +0 -304
  171. package/dist/shared/contracts/contract_registry/builtin_contracts_core_2.js.map +0 -1
  172. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts +0 -16
  173. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.d.ts.map +0 -1
  174. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js +0 -434
  175. package/dist/shared/contracts/contract_registry/builtin_contracts_extended.js.map +0 -1
  176. package/dist/shared/contracts/contract_registry/index.d.ts +0 -8
  177. package/dist/shared/contracts/contract_registry/index.d.ts.map +0 -1
  178. package/dist/shared/contracts/contract_registry/index.js +0 -7
  179. package/dist/shared/contracts/contract_registry/index.js.map +0 -1
  180. package/dist/shared/contracts/contract_registry/registry.d.ts +0 -62
  181. package/dist/shared/contracts/contract_registry/registry.d.ts.map +0 -1
  182. package/dist/shared/contracts/contract_registry/registry.js +0 -191
  183. package/dist/shared/contracts/contract_registry/registry.js.map +0 -1
  184. package/dist/shared/contracts/contract_registry/registry_internal.d.ts +0 -19
  185. package/dist/shared/contracts/contract_registry/registry_internal.d.ts.map +0 -1
  186. package/dist/shared/contracts/contract_registry/registry_internal.js +0 -54
  187. package/dist/shared/contracts/contract_registry/registry_internal.js.map +0 -1
  188. package/dist/shared/contracts/contract_registry/types.d.ts +0 -47
  189. package/dist/shared/contracts/contract_registry/types.d.ts.map +0 -1
  190. package/dist/shared/contracts/contract_registry/types.js +0 -5
  191. package/dist/shared/contracts/contract_registry/types.js.map +0 -1
  192. package/dist/shared/contracts/contract_registry/validation.d.ts +0 -25
  193. package/dist/shared/contracts/contract_registry/validation.d.ts.map +0 -1
  194. package/dist/shared/contracts/contract_registry/validation.js +0 -363
  195. package/dist/shared/contracts/contract_registry/validation.js.map +0 -1
  196. package/dist/shared/llm_gateway.d.ts +0 -186
  197. package/dist/shared/llm_gateway.d.ts.map +0 -1
  198. package/dist/shared/llm_gateway.js +0 -393
  199. package/dist/shared/llm_gateway.js.map +0 -1
  200. package/dist/verify/audit/audit_sampler.d.ts +0 -29
  201. package/dist/verify/audit/audit_sampler.d.ts.map +0 -1
  202. package/dist/verify/audit/audit_sampler.js +0 -42
  203. package/dist/verify/audit/audit_sampler.js.map +0 -1
  204. package/dist/verify/audit/debt_reporter.d.ts +0 -22
  205. package/dist/verify/audit/debt_reporter.d.ts.map +0 -1
  206. package/dist/verify/audit/debt_reporter.js +0 -107
  207. package/dist/verify/audit/debt_reporter.js.map +0 -1
  208. package/dist/verify/audit/debugger.d.ts +0 -25
  209. package/dist/verify/audit/debugger.d.ts.map +0 -1
  210. package/dist/verify/audit/debugger.js +0 -429
  211. package/dist/verify/audit/debugger.js.map +0 -1
  212. package/dist/verify/audit/degradation.d.ts +0 -62
  213. package/dist/verify/audit/degradation.d.ts.map +0 -1
  214. package/dist/verify/audit/degradation.js +0 -78
  215. package/dist/verify/audit/degradation.js.map +0 -1
  216. package/dist/verify/audit/developer_sovereignty.d.ts +0 -29
  217. package/dist/verify/audit/developer_sovereignty.d.ts.map +0 -1
  218. package/dist/verify/audit/developer_sovereignty.js +0 -137
  219. package/dist/verify/audit/developer_sovereignty.js.map +0 -1
  220. package/dist/verify/audit/failure_report.d.ts +0 -76
  221. package/dist/verify/audit/failure_report.d.ts.map +0 -1
  222. package/dist/verify/audit/failure_report.js +0 -145
  223. package/dist/verify/audit/failure_report.js.map +0 -1
  224. package/dist/verify/audit/governance_report.d.ts +0 -110
  225. package/dist/verify/audit/governance_report.d.ts.map +0 -1
  226. package/dist/verify/audit/governance_report.js +0 -194
  227. package/dist/verify/audit/governance_report.js.map +0 -1
  228. package/dist/verify/audit/mutation_audit.d.ts +0 -40
  229. package/dist/verify/audit/mutation_audit.d.ts.map +0 -1
  230. package/dist/verify/audit/mutation_audit.js +0 -154
  231. package/dist/verify/audit/mutation_audit.js.map +0 -1
  232. package/dist/verify/audit/risk_sampler.d.ts +0 -44
  233. package/dist/verify/audit/risk_sampler.d.ts.map +0 -1
  234. package/dist/verify/audit/risk_sampler.js +0 -80
  235. package/dist/verify/audit/risk_sampler.js.map +0 -1
  236. package/dist/verify/audit/runtime_safety.d.ts +0 -89
  237. package/dist/verify/audit/runtime_safety.d.ts.map +0 -1
  238. package/dist/verify/audit/runtime_safety.js +0 -209
  239. package/dist/verify/audit/runtime_safety.js.map +0 -1
  240. package/dist/verify/audit/semantic_evidence.d.ts +0 -36
  241. package/dist/verify/audit/semantic_evidence.d.ts.map +0 -1
  242. package/dist/verify/audit/semantic_evidence.js +0 -90
  243. package/dist/verify/audit/semantic_evidence.js.map +0 -1
  244. package/dist/verify/audit/test_generator.d.ts +0 -23
  245. package/dist/verify/audit/test_generator.d.ts.map +0 -1
  246. package/dist/verify/audit/test_generator.js +0 -278
  247. package/dist/verify/audit/test_generator.js.map +0 -1
  248. package/dist/verify/audit/test_quality.d.ts +0 -49
  249. package/dist/verify/audit/test_quality.d.ts.map +0 -1
  250. package/dist/verify/audit/test_quality.js +0 -684
  251. package/dist/verify/audit/test_quality.js.map +0 -1
  252. package/dist/verify/change_coordinator.d.ts +0 -45
  253. package/dist/verify/change_coordinator.d.ts.map +0 -1
  254. package/dist/verify/change_coordinator.js +0 -168
  255. package/dist/verify/change_coordinator.js.map +0 -1
  256. package/dist/verify/contracts/decision_contract.d.ts +0 -51
  257. package/dist/verify/contracts/decision_contract.d.ts.map +0 -1
  258. package/dist/verify/contracts/decision_contract.js +0 -70
  259. package/dist/verify/contracts/decision_contract.js.map +0 -1
  260. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts +0 -17
  261. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.d.ts.map +0 -1
  262. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js +0 -428
  263. package/dist/verify/contracts/mechanism_contract_registry/contracts-audit.js.map +0 -1
  264. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts +0 -17
  265. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.d.ts.map +0 -1
  266. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js +0 -429
  267. package/dist/verify/contracts/mechanism_contract_registry/contracts-governance.js.map +0 -1
  268. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts +0 -17
  269. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.d.ts.map +0 -1
  270. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js +0 -194
  271. package/dist/verify/contracts/mechanism_contract_registry/contracts-pipeline.js.map +0 -1
  272. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts +0 -17
  273. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.d.ts.map +0 -1
  274. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js +0 -365
  275. package/dist/verify/contracts/mechanism_contract_registry/contracts-platform.js.map +0 -1
  276. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts +0 -19
  277. package/dist/verify/contracts/mechanism_contract_registry/index.d.ts.map +0 -1
  278. package/dist/verify/contracts/mechanism_contract_registry/index.js +0 -21
  279. package/dist/verify/contracts/mechanism_contract_registry/index.js.map +0 -1
  280. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts +0 -33
  281. package/dist/verify/contracts/mechanism_contract_registry/types.d.ts.map +0 -1
  282. package/dist/verify/contracts/mechanism_contract_registry/types.js +0 -5
  283. package/dist/verify/contracts/mechanism_contract_registry/types.js.map +0 -1
  284. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts +0 -38
  285. package/dist/verify/contracts/mechanism_contract_registry/validation.d.ts.map +0 -1
  286. package/dist/verify/contracts/mechanism_contract_registry/validation.js +0 -136
  287. package/dist/verify/contracts/mechanism_contract_registry/validation.js.map +0 -1
  288. package/templates/shared/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +0 -54
  289. package/templates/shared//346/265/201/345/274/217/345/277/203/350/267/263.md +0 -64
@@ -1,393 +0,0 @@
1
- /**
2
- * Llm Gateway — 核心基础层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:CircuitState 等 核心基础层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:引擎各子模块、管线层
9
- * 调用谁:knowledge_config_loader、logger
10
- *
11
- * 数据流:底层能力请求 → 处理 → 返回结果
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { loadKnowledgeConfig, extractNumberRule } from "./knowledge_config_loader.js";
15
- import { debug } from "./logger.js";
16
- // ── 操作配置表 ──
17
- /** 各 AI 操作类型的 Token 估算和级别配置 */
18
- const OPERATION_PROFILES = {
19
- intent_refinement: { tier: "medium", estimated_tokens: 2000, description: "意图理解深化" },
20
- solution_brainstorm: { tier: "heavy", estimated_tokens: 6000, description: "方案脑暴推演" },
21
- verification_reasoning: { tier: "heavy", estimated_tokens: 5000, description: "复杂验证推理" },
22
- code_generation: { tier: "heavy", estimated_tokens: 10000, description: "代码生成(含规则注入+门禁+instruction)" },
23
- test_generation: { tier: "medium", estimated_tokens: 5000, description: "测试用例生成" },
24
- review_deep_analysis: { tier: "heavy", estimated_tokens: 8000, description: "深度审查分析(含12+审查规则注入)" },
25
- debug_analysis: { tier: "medium", estimated_tokens: 4000, description: "排障推理" },
26
- };
27
- /**
28
- * 从知识库 决策网关.md 读取阈值,文件不存在时使用硬编码兜底。
29
- * @param projectPath - 可选的项目路径
30
- * @returns 网关配置参数
31
- */
32
- function loadGatewayConfig(projectPath) {
33
- const config = loadKnowledgeConfig("shared/决策网关.md", projectPath);
34
- const body = config?.body ?? "";
35
- return {
36
- budget_total: extractNumberRule(body, "Budget_Total") ?? 500_000,
37
- task_budget: extractNumberRule(body, "Task_Budget") ?? 100_000,
38
- circuit_breaker_ratio: extractNumberRule(body, "Circuit_Breaker_Ratio") ?? 0.9,
39
- heartbeat_interval: extractNumberRule(body, "Heartbeat_Interval") ?? 5000,
40
- confidence_threshold: extractNumberRule(body, "Confidence_Threshold") ?? 0.95,
41
- };
42
- }
43
- // CORE-005修复: 默认配置改为延迟加载,避免 import 时触发文件读取和 debug 输出
44
- let _defaultConfig = null;
45
- function getDefaultConfig() {
46
- if (!_defaultConfig)
47
- _defaultConfig = loadGatewayConfig();
48
- return _defaultConfig;
49
- }
50
- // ── 网关核心 ──
51
- /**
52
- * LLM 统一网关 — 管理 Token 预算、熔断和调用审计。
53
- */
54
- export class LLMGateway {
55
- budgetTotal;
56
- budgetUsed = 0;
57
- taskBudget;
58
- taskTokensUsed = 0;
59
- currentTaskId = null;
60
- callCount = 0;
61
- blockedCount = 0;
62
- auditLog = [];
63
- circuitState = "closed";
64
- /** 熔断器进入 open 状态的时间戳,用于 half-open 超时恢复 */
65
- circuitOpenedAt = 0;
66
- /** half-open 状态下允许的探测请求次数 */
67
- halfOpenProbeBudget = 1;
68
- /** half-open 探测已用次数(当前周期) */
69
- halfOpenProbeUsed = 0;
70
- /** 当前时间函数 — 生产环境用 Date.now,测试可注入 */
71
- now;
72
- heartbeatTimer = null;
73
- heartbeatCallback = null;
74
- operationStart = 0;
75
- currentOperation = null;
76
- config = getDefaultConfig();
77
- /**
78
- * 创建 LLM 网关实例。
79
- * @param budget - 可选,Token 总预算,默认从配置读取
80
- * @param taskBudget - 可选,单任务 Token 预算,默认从配置读取
81
- */
82
- constructor(budget, taskBudget) {
83
- debug("llm_gateway", "LLM 统一网关实例已创建");
84
- const resolvedBudget = budget ?? this.config.budget_total;
85
- const resolvedTaskBudget = taskBudget ?? this.config.task_budget;
86
- // 安全校验: 预算必须为有限正数,防止 NaN/Infinity/负值导致熔断逻辑失效
87
- if (!Number.isFinite(resolvedBudget) || resolvedBudget < 0) {
88
- throw new RangeError(`LLMGateway: budgetTotal 必须为有限非负数,收到 ${resolvedBudget}`);
89
- }
90
- if (!Number.isFinite(resolvedTaskBudget) || resolvedTaskBudget < 0) {
91
- throw new RangeError(`LLMGateway: taskBudget 必须为有限非负数,收到 ${resolvedTaskBudget}`);
92
- }
93
- this.budgetTotal = resolvedBudget;
94
- this.taskBudget = resolvedTaskBudget;
95
- this.now = () => Date.now();
96
- }
97
- /** 设置心跳回调(用于 stdio 输出进度) */
98
- setHeartbeatCallback(cb) {
99
- this.heartbeatCallback = cb;
100
- }
101
- /**
102
- * 开始新任务的 Token 计量。
103
- * @param taskId - 任务 ID
104
- */
105
- beginTask(taskId) {
106
- this.currentTaskId = taskId;
107
- this.taskTokensUsed = 0;
108
- debug("llm_gateway", `任务 ${taskId} 开始,Token 计量已重置`);
109
- }
110
- /** 结束任务计量,停止心跳 */
111
- endTask() {
112
- this.currentTaskId = null;
113
- this.taskTokensUsed = 0;
114
- this.stopHeartbeat();
115
- }
116
- /**
117
- * 请求 AI 操作许可 — 检查 Token 预算和熔断状态。
118
- * 被拦截时返回原因说明。
119
- *
120
- * @param operation - AI 操作类型
121
- * @param taskId - 可选的任务 ID
122
- * @returns 许可结果,包含是否允许、剩余预算和拦截原因
123
- */
124
- request(operation, taskId) {
125
- const profile = OPERATION_PROFILES[operation];
126
- const tid = taskId ?? this.currentTaskId ?? undefined;
127
- const entry = {
128
- operation,
129
- estimated_tokens: profile.estimated_tokens,
130
- timestamp: new Date().toISOString(),
131
- blocked: false,
132
- task_id: tid,
133
- };
134
- // 单任务阈值检查
135
- if (this.taskTokensUsed + profile.estimated_tokens > this.taskBudget) {
136
- this.blockedCount++;
137
- entry.blocked = true;
138
- this.auditLog.push(entry);
139
- debug("llm_gateway", `单任务 Token 阈值触发 — ${profile.description} 被拦截`);
140
- return {
141
- allowed: false,
142
- estimated_tokens: profile.estimated_tokens,
143
- remaining_budget: this.budgetTotal - this.budgetUsed,
144
- remaining_task_budget: this.taskBudget - this.taskTokensUsed,
145
- reason: `单任务 Token 阈值触发: 当前任务已使用 ${this.taskTokensUsed}/${this.taskBudget},${profile.description} 需要 ~${profile.estimated_tokens}。建议拆分任务或减少范围`,
146
- };
147
- }
148
- // 全局熔断检查(支持 half-open 探测恢复)
149
- // 仅在从 closed/half-open 转换时记录 openedAt,避免重置计时器
150
- if ((this.budgetUsed / this.budgetTotal) >= this.config.circuit_breaker_ratio) {
151
- if (this.circuitState !== "open") {
152
- this.circuitOpenedAt = this.now();
153
- }
154
- this.circuitState = "open";
155
- }
156
- if (this.circuitState === "open") {
157
- // 检查是否超过 half-open 超时(默认 60 秒)
158
- const halfOpenTimeout = 60_000; // 60 秒后允许探测
159
- if (this.now() - this.circuitOpenedAt >= halfOpenTimeout) {
160
- this.circuitState = "half-open";
161
- this.halfOpenProbeUsed = 0;
162
- debug("llm_gateway", "熔断器进入 half-open 状态,允许探测请求");
163
- }
164
- }
165
- if (this.circuitState === "open") {
166
- this.blockedCount++;
167
- entry.blocked = true;
168
- this.auditLog.push(entry);
169
- debug("llm_gateway", `全局熔断器已开启 — ${profile.description} 被拦截`);
170
- return {
171
- allowed: false,
172
- estimated_tokens: profile.estimated_tokens,
173
- remaining_budget: this.budgetTotal - this.budgetUsed,
174
- remaining_task_budget: this.taskBudget - this.taskTokensUsed,
175
- reason: `Token 预告警: 已使用 ${this.budgetUsed}/${this.budgetTotal}(${((this.budgetUsed / this.budgetTotal) * 100).toFixed(0)}%)。${profile.description} 需要 ~${profile.estimated_tokens} Token,超出安全阈值`,
176
- };
177
- }
178
- if (this.circuitState === "half-open") {
179
- // half-open 状态下只允许有限次探测请求
180
- if (this.halfOpenProbeUsed >= this.halfOpenProbeBudget) {
181
- this.blockedCount++;
182
- entry.blocked = true;
183
- this.auditLog.push(entry);
184
- debug("llm_gateway", `half-open 探测配额已用尽 — ${profile.description} 被拦截`);
185
- return {
186
- allowed: false,
187
- estimated_tokens: profile.estimated_tokens,
188
- remaining_budget: this.budgetTotal - this.budgetUsed,
189
- remaining_task_budget: this.taskBudget - this.taskTokensUsed,
190
- reason: `half-open 探测配额已用尽,等待探测结果后决定恢复或继续熔断`,
191
- };
192
- }
193
- this.halfOpenProbeUsed++;
194
- debug("llm_gateway", `half-open 探测请求放行 (${this.halfOpenProbeUsed}/${this.halfOpenProbeBudget})`);
195
- }
196
- if (this.budgetUsed + profile.estimated_tokens > this.budgetTotal) {
197
- this.blockedCount++;
198
- entry.blocked = true;
199
- this.auditLog.push(entry);
200
- debug("llm_gateway", `Token 预算不足 — ${profile.description} 被拦截`);
201
- return {
202
- allowed: false,
203
- estimated_tokens: profile.estimated_tokens,
204
- remaining_budget: this.budgetTotal - this.budgetUsed,
205
- remaining_task_budget: this.taskBudget - this.taskTokensUsed,
206
- reason: `Token 预算不足: 剩余 ${this.budgetTotal - this.budgetUsed},需要 ~${profile.estimated_tokens}`,
207
- };
208
- }
209
- this.budgetUsed += profile.estimated_tokens;
210
- this.taskTokensUsed += profile.estimated_tokens;
211
- this.callCount++;
212
- this.auditLog.push(entry);
213
- // 重型操作启动心跳
214
- if (profile.tier === "heavy") {
215
- this.startHeartbeat(operation);
216
- }
217
- debug("llm_gateway", `${profile.description} 已放行(预估 ${profile.estimated_tokens} Token)`);
218
- return {
219
- allowed: true,
220
- estimated_tokens: profile.estimated_tokens,
221
- remaining_budget: this.budgetTotal - this.budgetUsed,
222
- remaining_task_budget: this.taskBudget - this.taskTokensUsed,
223
- };
224
- }
225
- /**
226
- * 置信度闸口: 低于阈值禁止执行代码,必须触发头脑风暴流程。
227
- * @param confidence - 当前置信度
228
- * @returns 闸口结果,包含是否允许和阈值
229
- */
230
- confidenceGate(confidence) {
231
- const threshold = this.config.confidence_threshold;
232
- if (confidence < threshold) {
233
- debug("llm_gateway", `置信度 ${confidence.toFixed(2)} 低于阈值 ${threshold},禁止直接执行`);
234
- return {
235
- allowed: false,
236
- threshold,
237
- reason: `置信度 ${confidence.toFixed(2)} 低于阈值 ${threshold},禁止直接输出执行代码,必须触发头脑风暴流程展示三轨方案`,
238
- };
239
- }
240
- return { allowed: true, threshold };
241
- }
242
- /**
243
- * 标记操作失败 — half-open 状态下探测失败时回退到 open 状态。
244
- * 防止故障未恢复时大量请求涌入。
245
- */
246
- failOperation() {
247
- this.stopHeartbeat();
248
- this.currentOperation = null;
249
- if (this.circuitState === "half-open") {
250
- this.circuitState = "open";
251
- this.circuitOpenedAt = this.now();
252
- debug("llm_gateway", "half-open 探测失败,熔断器回退到 open 状态");
253
- }
254
- }
255
- /** 标记操作完成,停止心跳。half-open 状态下探测成功则关闭熔断器 */
256
- completeOperation() {
257
- this.stopHeartbeat();
258
- this.currentOperation = null;
259
- // half-open 探测成功 → 关闭熔断器
260
- if (this.circuitState === "half-open") {
261
- this.circuitState = "closed";
262
- debug("llm_gateway", "half-open 探测成功,熔断器已关闭");
263
- }
264
- }
265
- /**
266
- * 报告实际 Token 用量 — 根据估算与实际的差值调整预算计数。
267
- * 差值为正时增加消耗,为负时回退多计部分。熔断器根据实际消耗重新评估。
268
- * @param operation - 操作类型
269
- * @param actualTokens - 实际消耗的 Token 数
270
- */
271
- reportActualUsage(operation, actualTokens) {
272
- // 安全校验: actualTokens 必须为有限非负数,防止 NaN/Infinity 污染预算计数
273
- if (!Number.isFinite(actualTokens) || actualTokens < 0) {
274
- throw new RangeError(`LLMGateway.reportActualUsage(): actualTokens 必须为有限非负数,收到 ${actualTokens}`);
275
- }
276
- const profile = OPERATION_PROFILES[operation];
277
- const diff = actualTokens - profile.estimated_tokens;
278
- if (diff > 0) {
279
- this.budgetUsed += diff;
280
- this.taskTokensUsed += diff;
281
- if ((this.budgetUsed / this.budgetTotal) >= this.config.circuit_breaker_ratio) {
282
- this.circuitState = "open";
283
- this.circuitOpenedAt = this.now();
284
- debug("llm_gateway", `实际用量超阈值,熔断器已开启`);
285
- }
286
- }
287
- else {
288
- this.budgetUsed = Math.max(0, this.budgetUsed + diff);
289
- this.taskTokensUsed = Math.max(0, this.taskTokensUsed + diff);
290
- }
291
- }
292
- /**
293
- * 获取网关当前状态快照。
294
- * @returns 网关状态,包含预算、调用统计和审计日志
295
- */
296
- getStatus() {
297
- return {
298
- budget_total: this.budgetTotal,
299
- budget_used: this.budgetUsed,
300
- budget_remaining: this.budgetTotal - this.budgetUsed,
301
- usage_ratio: this.budgetUsed / this.budgetTotal,
302
- circuit_open: this.circuitState !== "closed",
303
- circuit_state: this.circuitState,
304
- call_count: this.callCount,
305
- blocked_count: this.blockedCount,
306
- task_tokens_used: this.taskTokensUsed,
307
- audit_log: [...this.auditLog],
308
- };
309
- }
310
- /**
311
- * 重置网关状态 — 清零所有计数器、审计日志和熔断器。
312
- * @param budget - 可选的新 Token 总预算
313
- */
314
- reset(budget) {
315
- const resolvedBudget = budget ?? this.config.budget_total;
316
- // 安全校验: 重置时预算必须为有限正数
317
- if (!Number.isFinite(resolvedBudget) || resolvedBudget < 0) {
318
- throw new RangeError(`LLMGateway.reset(): budget 必须为有限非负数,收到 ${resolvedBudget}`);
319
- }
320
- this.budgetTotal = resolvedBudget;
321
- this.budgetUsed = 0;
322
- this.callCount = 0;
323
- this.blockedCount = 0;
324
- this.auditLog = [];
325
- this.circuitState = "closed";
326
- this.circuitOpenedAt = 0;
327
- this.halfOpenProbeUsed = 0;
328
- this.taskTokensUsed = 0;
329
- this.stopHeartbeat();
330
- debug("llm_gateway", "网关状态已重置");
331
- }
332
- /**
333
- * 判断操作是否为本地操作(不需要 LLM 算力)。
334
- * @param op - 操作名称
335
- * @returns 是否为本地操作
336
- */
337
- static isLocalOperation(op) {
338
- const LOCAL_OPS = [
339
- "classify", "scope_resolve", "knowledge_match", "pattern_extract",
340
- "drift_detect", "mutation_test", "coverage_scan", "dependency_scan",
341
- "migration_check", "contract_check", "debt_scan", "build_run",
342
- ];
343
- return LOCAL_OPS.includes(op);
344
- }
345
- /**
346
- * 判断操作是否为 AI 操作。
347
- * @param op - 操作类型
348
- * @returns 是否为 AI 操作
349
- */
350
- static isAIOperation(op) {
351
- return op in OPERATION_PROFILES;
352
- }
353
- /**
354
- * 获取操作类型的配置信息。
355
- * @param op - 操作类型
356
- * @returns 操作配置(级别、Token 估算、描述)
357
- */
358
- static getProfile(op) {
359
- return OPERATION_PROFILES[op];
360
- }
361
- // ── 流式心跳 ──
362
- /**
363
- * 启动流式心跳 — 重型操作期间定期发送进度报告,防止客户端超时断连。
364
- * @param operation - 当前 AI 操作类型
365
- */
366
- startHeartbeat(operation) {
367
- this.stopHeartbeat();
368
- this.operationStart = this.now();
369
- this.currentOperation = operation;
370
- if (!this.heartbeatCallback)
371
- return;
372
- this.heartbeatTimer = setInterval(() => {
373
- if (!this.heartbeatCallback || !this.currentOperation)
374
- return;
375
- const elapsed = this.now() - this.operationStart;
376
- const profile = OPERATION_PROFILES[this.currentOperation];
377
- this.heartbeatCallback({
378
- elapsed_ms: elapsed,
379
- tokens_used: this.taskTokensUsed,
380
- operation: this.currentOperation,
381
- message: `[SoloForge Heartbeat] ${profile.description} 执行中... 已耗时 ${(elapsed / 1000).toFixed(0)}s,当前任务已用 ${this.taskTokensUsed}/${this.taskBudget} Token`,
382
- });
383
- }, this.config.heartbeat_interval);
384
- }
385
- /** 停止流式心跳计时器 */
386
- stopHeartbeat() {
387
- if (this.heartbeatTimer) {
388
- clearInterval(this.heartbeatTimer);
389
- this.heartbeatTimer = null;
390
- }
391
- }
392
- }
393
- //# sourceMappingURL=llm_gateway.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm_gateway.js","sourceRoot":"","sources":["../../src/shared/llm_gateway.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Audit Sampler — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:AuditSampleResult 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:audit_pool、risk_sampler、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { AuditItem } from "./audit_pool.js";
15
- import { type SamplingDecision } from "./risk_sampler.js";
16
- export interface AuditSampleResult {
17
- seed: number;
18
- total_items: number;
19
- sampled_count: number;
20
- skipped_count: number;
21
- decisions: SamplingDecision[];
22
- }
23
- /**
24
- * 从审计池按风险加权抽样,返回需要人工审查的任务列表。
25
- * @param options - 抽样选项,包含种子和数量
26
- * @returns 抽样结果列表
27
- */
28
- export declare function sampleAuditItems(items: AuditItem[], seed?: number): AuditSampleResult;
29
- //# sourceMappingURL=audit_sampler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit_sampler.d.ts","sourceRoot":"","sources":["../../../src/verify/audit/audit_sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,GAAE,MAAU,GACf,iBAAiB,CA0BnB"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Audit Sampler — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:AuditSampleResult 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:audit_pool、risk_sampler、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { shouldSample } from "./risk_sampler.js";
15
- import { debug } from "../../shared/logger.js";
16
- /**
17
- * 从审计池按风险加权抽样,返回需要人工审查的任务列表。
18
- * @param options - 抽样选项,包含种子和数量
19
- * @returns 抽样结果列表
20
- */
21
- export function sampleAuditItems(items, seed = 0) {
22
- debug("audit_sampler", "sampleAuditItems() 开始执行");
23
- const decisions = [];
24
- for (const item of items) {
25
- const decision = shouldSample({
26
- task_id: item.task_id,
27
- risk: item.risk,
28
- changed_files: item.changed_files,
29
- capability_refs: item.capability_refs,
30
- }, seed);
31
- decisions.push(decision);
32
- }
33
- const sampledCount = decisions.filter((d) => d.should_sample).length;
34
- return {
35
- seed,
36
- total_items: decisions.length,
37
- sampled_count: sampledCount,
38
- skipped_count: decisions.length - sampledCount,
39
- decisions,
40
- };
41
- }
42
- //# sourceMappingURL=audit_sampler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit_sampler.js","sourceRoot":"","sources":["../../../src/verify/audit/audit_sampler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,YAAY,EAAyB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAU/C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,OAAe,CAAC;IAEd,KAAK,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;IACpD,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,YAAY,CAC3B;YACE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,EACD,IAAI,CACL,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IAErE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,SAAS,CAAC,MAAM;QAC7B,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,YAAY;QAC9C,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Debt Reporter — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:Debt Reporter 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:debt_tracker、index、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { DebtTracker } from "./debt_tracker.js";
15
- import type { DebtReport } from "../../types/index.js";
16
- /**
17
- * 生成完整的技术债务报告,包含分组统计、趋势数据和优先级排序。
18
- * @param tracker - 技术债务追踪器实例
19
- * @returns 债务报告,包含总数、分类统计、严重程度分布、最久未解决天数、趋势和中文摘要
20
- */
21
- export declare function generateDebtReport(tracker: DebtTracker): Promise<DebtReport>;
22
- //# sourceMappingURL=debt_reporter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debt_reporter.d.ts","sourceRoot":"","sources":["../../../src/verify/audit/debt_reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AA6CjE;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA6DlF"}
@@ -1,107 +0,0 @@
1
- /**
2
- * Debt Reporter — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:Debt Reporter 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:debt_tracker、index、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { debug } from "../../shared/logger.js";
15
- /**
16
- * 技术债务报告生成模块 — 基于债务追踪器数据,生成聚合统计报告。
17
- * 包括按类别/严重程度分组、最久未解决天数、趋势分析和优先级排序。
18
- */
19
- /** 严重程度权重映射,用于优先级评分 */
20
- const SEVERITY_SCORE = {
21
- critical: 4,
22
- warning: 3,
23
- info: 1,
24
- };
25
- /** 影响程度权重映射,用于优先级评分 */
26
- const IMPACT_SCORE = {
27
- high: 3,
28
- medium: 2,
29
- low: 1,
30
- };
31
- /**
32
- * 计算两个 ISO 日期字符串之间的天数差。
33
- * @param a - 起始日期字符串(ISO 格式)
34
- * @param b - 结束日期字符串(ISO 格式)
35
- * @returns 间隔天数,最小值为 0
36
- */
37
- function daysBetween(a, b) {
38
- const msPerDay = 86400_000;
39
- // 向下取整并确保不返回负值
40
- return Math.max(0, Math.floor((Date.parse(b) - Date.parse(a)) / msPerDay));
41
- }
42
- /**
43
- * 计算单条债务的优先级评分。分数 = 严重程度权重 x 影响程度权重。
44
- * @param item - 债务条目
45
- * @returns 优先级评分(1~12,越高越紧急)
46
- */
47
- function computePriorityScore(item) {
48
- const sev = SEVERITY_SCORE[item.severity] ?? 1;
49
- const imp = IMPACT_SCORE[item.impact ?? "medium"];
50
- return sev * imp;
51
- }
52
- /**
53
- * 生成完整的技术债务报告,包含分组统计、趋势数据和优先级排序。
54
- * @param tracker - 技术债务追踪器实例
55
- * @returns 债务报告,包含总数、分类统计、严重程度分布、最久未解决天数、趋势和中文摘要
56
- */
57
- export async function generateDebtReport(tracker) {
58
- debug("技术债务", "开始生成技术债务报告");
59
- const openItems = await tracker.listOpen();
60
- // 未解决的债务总数
61
- const total_open = openItems.length;
62
- // 按类别分组统计
63
- const by_category = {};
64
- for (const item of openItems) {
65
- const cat = item.category ?? "other";
66
- by_category[cat] = (by_category[cat] ?? 0) + 1;
67
- }
68
- // 按严重程度分组统计
69
- const by_severity = {};
70
- for (const item of openItems) {
71
- by_severity[item.severity] = (by_severity[item.severity] ?? 0) + 1;
72
- }
73
- // 计算最久未解决的债务天数
74
- let oldest_debt_days = 0;
75
- const now = new Date().toISOString();
76
- for (const item of openItems) {
77
- const days = daysBetween(item.discovered_at, now);
78
- if (days > oldest_debt_days)
79
- oldest_debt_days = days;
80
- }
81
- // 获取近 30 天的债务增减趋势
82
- const trend_30d = await tracker.getTrend(30);
83
- // 按优先级评分降序排列,取前 5 条作为最高优先级条目
84
- // 最高优先级条目(按 严重程度 x 影响程度 降序排列,取前 5 条)
85
- const sorted = [...openItems].sort((a, b) => computePriorityScore(b) - computePriorityScore(a));
86
- const top_priority = sorted.slice(0, 5);
87
- // 生成中文摘要
88
- const criticalCount = by_severity["critical"] ?? 0;
89
- const warningCount = by_severity["warning"] ?? 0;
90
- const infoCount = by_severity["info"] ?? 0;
91
- const parts = [];
92
- parts.push(`共 ${total_open} 条未解决技术债务`);
93
- parts.push(`${criticalCount} critical, ${warningCount} warning, ${infoCount} info`);
94
- parts.push(`最久未解决: ${oldest_debt_days} 天`);
95
- const summary = parts.join(";") + "。";
96
- debug("技术债务", `生成完成 — ${summary}`);
97
- return {
98
- total_open,
99
- by_category,
100
- by_severity,
101
- oldest_debt_days,
102
- trend_30d,
103
- top_priority,
104
- summary,
105
- };
106
- }
107
- //# sourceMappingURL=debt_reporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debt_reporter.js","sourceRoot":"","sources":["../../../src/verify/audit/debt_reporter.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Debugger — 审计层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:debugError 等 审计层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:发布门禁、质量检查
9
- * 调用谁:index、node:crypto、logger
10
- *
11
- * 数据流:审计输入(代码/配置) → 检查 → 评分/报告
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { DebugSession } from "../../types/index.js";
15
- /**
16
- * 执行完整的六步调试流水线。
17
- * 依次执行错误解析、调用链提取、根因分析、修复建议和测试补充,
18
- * 将结果组装为完整的调试会话对象。
19
- * @param errorOutput - 原始错误输出文本
20
- * @param taskId - 关联的任务 ID
21
- * @param projectScope - 可选的项目路径范围(用于过滤调用链帧)
22
- * @returns 完整的调试会话对象
23
- */
24
- export declare function debugError(errorOutput: string, taskId: string, projectScope?: string[]): DebugSession;
25
- //# sourceMappingURL=debugger.d.ts.map