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,267 +0,0 @@
1
- /**
2
- * Knowledge Scenario Registry — 知识层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:ScenarioRunResult 等 知识层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:管线知识阶段、知识注入
9
- * 调用谁:knowledge_template_contracts、knowledge_lifecycle、knowledge_evolution、template_sync、adapter_prompt_contract
10
- *
11
- * 数据流:项目文件 → 知识提取 → 结构化数据 → 注入管线
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import { evaluatePromotion, checkKnowledgeHealth } from "./knowledge_lifecycle.js";
15
- import { evaluateCandidateTrust, validateAiInferenceWrite } from "./knowledge_evolution.js";
16
- import { executeSync, validateSyncSafety } from "../../context/templates/template_sync.js";
17
- import { validateAdapterPrompt, REQUIRED_ADAPTER_SECTIONS } from "../../context/adapter_prompt_contract.js";
18
- import { getCurrentCompatibility, checkProjectCompatibility, createMigrationPlan } from "./release_compatibility.js";
19
- import { getLanguagePolicyConfig, detectSemanticPollution } from "./language_policy.js";
20
- import { evaluateSemanticPriority } from "./chinese_semantic_priority.js";
21
- import { validateDesignDocEligibility } from "./documentation_governance.js";
22
- // ── 场景定义 ──
23
- export const KNOWLEDGE_SCENARIOS = [
24
- {
25
- id: "scenario-A", name: "知识晋级阻断",
26
- fixture: "AI inference / drift_detection / human 晋级请求",
27
- command_or_entry: "evaluatePromotion",
28
- expected_evidence: ["AI inference 阻断 active", "AI inference 阻断 core", "人工确认通过"],
29
- pass_fail_rules: ["AI inference 不得晋级 active", "AI inference 不得设 core"],
30
- },
31
- {
32
- id: "scenario-B", name: "用户模板保护",
33
- fixture: "outdated_modified / outdated_unmodified / core knowledge 资产",
34
- command_or_entry: "executeSync / validateSyncSafety",
35
- expected_evidence: ["用户修改被保护", "core knowledge 被保护", "dry-run 只读"],
36
- pass_fail_rules: ["用户修改资产不被覆盖", "core knowledge 不被同步"],
37
- },
38
- {
39
- id: "scenario-C", name: "适配器 Prompt 合规",
40
- fixture: "合规/不合规适配器契约",
41
- command_or_entry: "validateAdapterPrompt",
42
- expected_evidence: ["forbidden claim 被检测", "缺少章节被检测"],
43
- pass_fail_rules: ["含 forbidden claim 不合规", "缺少章节不合规"],
44
- },
45
- {
46
- id: "scenario-E", name: "发布安全",
47
- fixture: "兼容/不兼容项目 schema",
48
- command_or_entry: "createMigrationPlan / validateMigrationSafety",
49
- expected_evidence: ["migrate apply 无确认被阻断", "兼容项目通过"],
50
- pass_fail_rules: ["migrate 默认 dry-run", "apply 需确认"],
51
- },
52
- {
53
- id: "scenario-F", name: "语言策略覆盖",
54
- fixture: "zh_first / en_first / bilingual / source_preserving 配置",
55
- command_or_entry: "getLanguagePolicyConfig / detectSemanticPollution",
56
- expected_evidence: ["zh_first 默认正确", "污染检测正确", "en_first 不检测污染"],
57
- pass_fail_rules: ["英文项目可配置", "中文项目不被英文模板污染"],
58
- },
59
- {
60
- id: "scenario-G", name: "知识-模板同步联动",
61
- fixture: "sovereignty=core 模板清单 + outdated_unmodified 资产",
62
- command_or_entry: "executeSync + manifest",
63
- expected_evidence: ["core 资产不被同步", "deprecated 知识被检测"],
64
- pass_fail_rules: ["模板同步受知识主权约束"],
65
- },
66
- {
67
- id: "scenario-H", name: "生命周期-健康-污染联动",
68
- fixture: "知识条目 + 语言配置 + 文档策略",
69
- command_or_entry: "checkKnowledgeHealth + evaluateSemanticPriority + validateDesignDocEligibility",
70
- expected_evidence: ["active 无证据警告", "zh_first 域合规", "proposed 不准入"],
71
- pass_fail_rules: ["active 无证据警告", "zh_first 域合规", "proposed 不准入"],
72
- },
73
- ];
74
- // ── 场景运行器 ──
75
- function runScenarioA() {
76
- const evidence = [];
77
- const failures = [];
78
- const r1 = evaluatePromotion({
79
- entry_id: "g1", from_status: "draft", to_status: "active",
80
- from_sovereignty: "normal", to_sovereignty: "normal",
81
- evidence_ids: ["ev-1"], requested_by: "ai_inference",
82
- });
83
- if (!r1.allowed)
84
- evidence.push("AI inference 阻断 active");
85
- else
86
- failures.push("AI inference 应被阻断晋级 active");
87
- const r2 = evaluatePromotion({
88
- entry_id: "g2", from_status: "draft", to_status: "draft",
89
- from_sovereignty: "normal", to_sovereignty: "core",
90
- evidence_ids: [], requested_by: "ai_inference",
91
- });
92
- if (!r2.allowed)
93
- evidence.push("AI inference 阻断 core");
94
- else
95
- failures.push("AI inference 应被阻断设 core");
96
- const r3 = evaluatePromotion({
97
- entry_id: "g3", from_status: "draft", to_status: "active",
98
- from_sovereignty: "normal", to_sovereignty: "normal",
99
- evidence_ids: ["ev-1"], requested_by: "human",
100
- });
101
- if (r3.allowed)
102
- evidence.push("人工确认通过");
103
- else
104
- failures.push("人工确认应被允许晋级");
105
- const trust = evaluateCandidateTrust("ai_inference");
106
- if (trust.allowed_max_status === "draft")
107
- evidence.push("ai_inference 信任上限=draft");
108
- else
109
- failures.push(`ai_inference 信任上限应为 draft,实际 ${trust.allowed_max_status}`);
110
- const w1 = validateAiInferenceWrite("ai_inference", "core", "draft");
111
- if (!w1.allowed)
112
- evidence.push("AI 推理写入 core 被阻断");
113
- else
114
- failures.push("AI 推理应被阻断写入 core");
115
- return { scenario_id: "scenario-A", scenario_name: "知识晋级阻断", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
116
- }
117
- function runScenarioB() {
118
- const evidence = [];
119
- const failures = [];
120
- const a1 = {
121
- asset_id: "a-1", source_path: "t/r.md", target_path: ".soloforge/r.md",
122
- asset_kind: "knowledge_template", template_version: "1.0",
123
- source_hash: "new", installed_hash: "old",
124
- user_modified: true, template_asset_status: "outdated_modified",
125
- };
126
- const s1 = validateSyncSafety([a1]);
127
- if (!s1.safe)
128
- evidence.push("用户修改被保护");
129
- else
130
- failures.push("用户修改资产应被保护");
131
- const r2 = executeSync({ dry_run: true, apply: false, project_path: "/tmp", source_path: "/src" }, [a1], []);
132
- if (r2.dry_run && r2.success)
133
- evidence.push("dry-run 只读");
134
- else
135
- failures.push("dry-run 应为只读成功");
136
- const r3 = executeSync({ dry_run: false, apply: true, project_path: "/tmp", source_path: "/src" }, [], []);
137
- if (!r3.success)
138
- evidence.push("apply 无确认被阻断");
139
- else
140
- failures.push("apply 无确认应被阻断");
141
- return { scenario_id: "scenario-B", scenario_name: "用户模板保护", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
142
- }
143
- function runScenarioC() {
144
- const evidence = [];
145
- const failures = [];
146
- const good = {
147
- adapter_id: "good", host_type: "claude_code",
148
- required_sections: [...REQUIRED_ADAPTER_SECTIONS],
149
- forbidden_claims: [], sync_required: true,
150
- next_allowed_tools: ["sf_work"], generated_from_contract_version: "1",
151
- };
152
- const r1 = validateAdapterPrompt(good);
153
- if (r1.compliant)
154
- evidence.push("合规适配器通过");
155
- else
156
- failures.push(`合规适配器不应失败: ${r1.findings.map(f => f.message_zh).join("; ")}`);
157
- const bad = { ...good, adapter_id: "bad", forbidden_claims: ["可以自由选择任意 sf_* 工具"], next_allowed_tools: [] };
158
- const r2 = validateAdapterPrompt(bad);
159
- if (!r2.compliant && r2.detected_forbidden_claims.length > 0)
160
- evidence.push("forbidden claim 被检测");
161
- else
162
- failures.push("forbidden claim 应被检测");
163
- const incomplete = { ...good, adapter_id: "inc", required_sections: ["when_to_use_soloforge"] };
164
- const r3 = validateAdapterPrompt(incomplete);
165
- if (!r3.compliant && r3.missing_sections.length > 0)
166
- evidence.push("缺少章节被检测");
167
- else
168
- failures.push("缺少章节应被检测");
169
- return { scenario_id: "scenario-C", scenario_name: "适配器 Prompt 合规", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
170
- }
171
- function runScenarioE() {
172
- const evidence = [];
173
- const failures = [];
174
- const compat = getCurrentCompatibility();
175
- const c1 = checkProjectCompatibility("1", compat);
176
- if (c1 === "compatible")
177
- evidence.push("兼容项目通过");
178
- else
179
- failures.push(`当前 schema 应兼容,实际 ${c1}`);
180
- const r2 = createMigrationPlan({ dry_run: true, apply: false, project_path: "/tmp", from_version: "1", to_version: "2" }, compat);
181
- if (r2.dry_run)
182
- evidence.push("migrate 默认 dry-run");
183
- else
184
- failures.push("migrate 应默认 dry-run");
185
- const r3 = createMigrationPlan({ dry_run: false, apply: true, confirm: false, project_path: "/tmp", from_version: "1", to_version: "2" }, compat);
186
- if (!r3.success)
187
- evidence.push("migrate apply 无确认被阻断");
188
- else
189
- failures.push("migrate apply 无确认应被阻断");
190
- return { scenario_id: "scenario-E", scenario_name: "发布安全", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
191
- }
192
- function runScenarioF() {
193
- const evidence = [];
194
- const failures = [];
195
- const zh = getLanguagePolicyConfig("zh_first");
196
- if (zh.default === "zh_first")
197
- evidence.push("zh_first 默认正确");
198
- else
199
- failures.push("zh_first 默认配置不正确");
200
- const poll = detectSemanticPollution(zh, [{ id: "e-1", content: "This is completely English text for testing pollution detection" }]);
201
- if (poll.length > 0 && poll[0].status === "polluted")
202
- evidence.push("污染检测正确");
203
- else
204
- failures.push("英文内容应被检测为污染");
205
- const en = getLanguagePolicyConfig("en_first");
206
- const poll2 = detectSemanticPollution(en, [{ id: "e-2", content: "This is completely English text" }]);
207
- if (poll2.length === 0)
208
- evidence.push("en_first 不检测污染");
209
- else
210
- failures.push("en_first 项目不应检测英文污染");
211
- return { scenario_id: "scenario-F", scenario_name: "语言策略覆盖", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
212
- }
213
- async function runScenarioG() {
214
- const evidence = [];
215
- const failures = [];
216
- const coreManifest = [{
217
- asset_id: "core-1", asset_kind: "core_knowledge",
218
- source_path: "t/core.md", target_path: ".soloforge/core.md",
219
- template_version: "1.0", source_hash: "old", installed_hash: "old",
220
- installed_at: new Date().toISOString(), sovereignty: "core",
221
- }];
222
- const r1 = executeSync({ dry_run: false, apply: true, confirm: true, project_path: "/tmp", source_path: "/src" }, [{ asset_id: "core-1", source_path: "t/core.md", target_path: ".soloforge/core.md", asset_kind: "core_knowledge", template_version: "1.0", source_hash: "new", installed_hash: "old", user_modified: false, template_asset_status: "outdated_unmodified" }], coreManifest);
223
- if (!r1.report.updated.includes("core-1"))
224
- evidence.push("core 资产不被同步");
225
- else
226
- failures.push("core 资产不应被同步");
227
- const h2 = await checkKnowledgeHealth([{
228
- id: "k-dep", knowledge_lifecycle_status: "deprecated",
229
- sovereignty: "normal", knowledge_write_stage: "committed",
230
- created_at: new Date().toISOString(), updated_at: new Date().toISOString(),
231
- }], new Map());
232
- if (h2.some(h => h.category === "lifecycle"))
233
- evidence.push("deprecated 知识被检测");
234
- else
235
- failures.push("deprecated 知识应被检测");
236
- return { scenario_id: "scenario-G", scenario_name: "知识-模板同步联动", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
237
- }
238
- async function runScenarioH() {
239
- const evidence = [];
240
- const failures = [];
241
- const h1 = await checkKnowledgeHealth([{
242
- id: "k-noev", knowledge_lifecycle_status: "active",
243
- sovereignty: "normal", knowledge_write_stage: "committed",
244
- created_at: new Date().toISOString(), updated_at: new Date().toISOString(),
245
- }], new Map());
246
- if (h1.some(h => h.category === "evidence"))
247
- evidence.push("active 无证据警告");
248
- else
249
- failures.push("active 无证据应产生警告");
250
- const config = getLanguagePolicyConfig("zh_first");
251
- const r2 = evaluateSemanticPriority(config, [{ domain: "business_semantics", content: "这是一个业务语义描述", id: "zh-1" }]);
252
- if (r2.compliant)
253
- evidence.push("zh_first 域合规");
254
- else
255
- failures.push("中文内容应合规");
256
- const r3 = validateDesignDocEligibility({ decision_id: "dec-1", doc_eligibility_status: "proposed", evidence_refs: ["ev-1"] });
257
- if (!r3.allowed)
258
- evidence.push("proposed 不准入");
259
- else
260
- failures.push("proposed 决策不应准入");
261
- return { scenario_id: "scenario-H", scenario_name: "生命周期-健康-污染联动", status: failures.length === 0 ? "PASS" : "FAIL", evidence, failures };
262
- }
263
- /** 运行全部场景(scenario-D 随 CLI 契约漂移机制一并删除) */
264
- export async function runAllKnowledgeScenarios() {
265
- return [runScenarioA(), runScenarioB(), runScenarioC(), runScenarioE(), runScenarioF(), await runScenarioG(), await runScenarioH()];
266
- }
267
- //# sourceMappingURL=knowledge_scenario_registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge_scenario_registry.js","sourceRoot":"","sources":["../../../src/context/knowledge/knowledge_scenario_registry.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Knowledge Sovereignty — 知识层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:DEFAULT_QUARANTINE_DAYS 等 知识层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:管线知识阶段、知识注入
9
- * 调用谁:promises、node:fs、node:path、gray-matter、logger
10
- *
11
- * 数据流:项目文件 → 知识提取 → 结构化数据 → 注入管线
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- /** 默认隔离天数 */
15
- export declare const DEFAULT_QUARANTINE_DAYS = 7;
16
- export type KnowledgeTier = "draft" | "quarantine" | "core";
17
- export interface KnowledgeSovereigntyEntry {
18
- name: string;
19
- file_path: string;
20
- tier: KnowledgeTier;
21
- quarantined_at: string | null;
22
- quarantine_expires_at: string | null;
23
- can_reference: boolean;
24
- advisory: string;
25
- }
26
- export interface SovereigntyReport {
27
- total_entries: number;
28
- by_tier: Record<KnowledgeTier, number>;
29
- quarantine_entries: KnowledgeSovereigntyEntry[];
30
- can_promote_to_core: Array<{
31
- name: string;
32
- file_path: string;
33
- }>;
34
- summary: string;
35
- }
36
- /**
37
- * 检查条目是否在 quarantine 期 — advisory only, 不 hard block。
38
- * quarantine 期间条目可被引用,但标记为 advisory。
39
- */
40
- export declare function quarantineGate(entry: KnowledgeSovereigntyEntry): {
41
- allowed: boolean;
42
- advisory: string;
43
- };
44
- /**
45
- * 将 drafts 中的条目晋升到 quarantine — 自动,不需要人工确认。
46
- */
47
- export declare function promoteToQuarantine(draftPath: string, knowledgeDir: string, quarantineDays?: number): Promise<KnowledgeSovereigntyEntry | null>;
48
- /**
49
- * 将 quarantine 中的条目晋级到 core — 需要人工确认。
50
- * confirm=false 时只返回预览,不执行晋级。
51
- */
52
- export declare function promoteToCore(quarantinePath: string, knowledgeDir: string, confirm: {
53
- confirmed: boolean;
54
- confirmed_by: string;
55
- reason: string;
56
- }): Promise<{
57
- success: boolean;
58
- target_path: string;
59
- advisory: string;
60
- }>;
61
- /**
62
- * 扫描 knowledge 目录,生成主权报告。
63
- */
64
- export declare function generateSovereigntyReport(knowledgeDir: string): Promise<SovereigntyReport>;
65
- //# sourceMappingURL=knowledge_sovereignty.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge_sovereignty.d.ts","sourceRoot":"","sources":["../../../src/context/knowledge/knowledge_sovereignty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,aAAa;AACb,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;IAChD,mBAAmB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,yBAAyB,GAC/B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAgCxC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,cAAc,SAA0B,GACvC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAoC3C;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACP,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA2DtE;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA2D5B"}
@@ -1,199 +0,0 @@
1
- /**
2
- * Knowledge Sovereignty — 知识层模块。
3
- *
4
- * 职责边界:
5
- * - 负责:DEFAULT_QUARANTINE_DAYS 等 知识层职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:管线知识阶段、知识注入
9
- * 调用谁:promises、node:fs、node:path、gray-matter、logger
10
- *
11
- * 数据流:项目文件 → 知识提取 → 结构化数据 → 注入管线
12
- * 持久化:读写本地文件(详见代码内路径)
13
- */
14
- import fs from "node:fs/promises";
15
- import fss from "node:fs";
16
- import path from "node:path";
17
- import matter from "gray-matter";
18
- import { debug } from "../../shared/logger.js";
19
- /** 默认隔离天数 */
20
- export const DEFAULT_QUARANTINE_DAYS = 7;
21
- /**
22
- * 检查条目是否在 quarantine 期 — advisory only, 不 hard block。
23
- * quarantine 期间条目可被引用,但标记为 advisory。
24
- */
25
- export function quarantineGate(entry) {
26
- if (entry.tier === "core") {
27
- return { allowed: true, advisory: "core tier, unrestricted" };
28
- }
29
- if (entry.tier === "draft") {
30
- return {
31
- allowed: true,
32
- advisory: "advisory: draft tier, not yet quarantined — reference with caution",
33
- };
34
- }
35
- if (entry.tier === "quarantine") {
36
- if (!entry.quarantine_expires_at) {
37
- return { allowed: false, advisory: "quarantine 条目不允许注入(无过期时间),需先提升到 active" };
38
- }
39
- const now = Date.now();
40
- const expires = new Date(entry.quarantine_expires_at).getTime();
41
- if (now < expires) {
42
- const daysLeft = Math.ceil((expires - now) / (24 * 60 * 60 * 1000));
43
- return {
44
- allowed: false,
45
- advisory: `quarantine 条目不允许注入(剩余 ${daysLeft} 天隔离期),需先提升到 active`,
46
- };
47
- }
48
- return {
49
- allowed: false,
50
- advisory: "quarantine 已过期,需人工审查后放行",
51
- };
52
- }
53
- return { allowed: true, advisory: "unknown tier" };
54
- }
55
- /**
56
- * 将 drafts 中的条目晋升到 quarantine — 自动,不需要人工确认。
57
- */
58
- export async function promoteToQuarantine(draftPath, knowledgeDir, quarantineDays = DEFAULT_QUARANTINE_DAYS) {
59
- if (!fss.existsSync(draftPath))
60
- return null;
61
- debug("知识主权", "晋升草稿到 quarantine", draftPath, "隔离期:", quarantineDays, "天");
62
- const raw = await fs.readFile(draftPath, "utf-8");
63
- const { data: frontmatter, content: body } = matter(raw);
64
- const quarantineDir = path.join(knowledgeDir, "quarantine");
65
- fss.mkdirSync(quarantineDir, { recursive: true });
66
- const now = new Date();
67
- const expires = new Date(now.getTime() + quarantineDays * 24 * 60 * 60 * 1000);
68
- frontmatter.tier = "quarantine";
69
- frontmatter.quarantined_at = now.toISOString();
70
- frontmatter.quarantine_expires_at = expires.toISOString();
71
- const filename = path.basename(draftPath);
72
- const targetPath = path.join(quarantineDir, filename);
73
- const updated = matter.stringify(body, frontmatter);
74
- const tmpPath = `${targetPath}.tmp`;
75
- await fs.writeFile(tmpPath, updated, "utf-8");
76
- await fs.rename(tmpPath, targetPath);
77
- await fs.unlink(draftPath).catch((e) => { debug("知识主权", "清理文件失败", e); });
78
- return {
79
- name: frontmatter.name ?? filename,
80
- file_path: targetPath,
81
- tier: "quarantine",
82
- quarantined_at: now.toISOString(),
83
- quarantine_expires_at: expires.toISOString(),
84
- can_reference: true,
85
- advisory: "newly quarantined, reference with caution",
86
- };
87
- }
88
- /**
89
- * 将 quarantine 中的条目晋级到 core — 需要人工确认。
90
- * confirm=false 时只返回预览,不执行晋级。
91
- */
92
- export async function promoteToCore(quarantinePath, knowledgeDir, confirm) {
93
- if (!fss.existsSync(quarantinePath)) {
94
- return {
95
- success: false,
96
- target_path: "",
97
- advisory: `file not found: ${quarantinePath}`,
98
- };
99
- }
100
- if (!confirm.confirmed || !confirm.confirmed_by) {
101
- return {
102
- success: false,
103
- target_path: quarantinePath,
104
- advisory: "core promotion requires human confirmation (confirmed=true, confirmed_by non-empty)",
105
- };
106
- }
107
- const raw = await fs.readFile(quarantinePath, "utf-8");
108
- const { data: frontmatter, content: body } = matter(raw);
109
- // 检查 quarantine 期是否已过期
110
- if (frontmatter.quarantine_expires_at) {
111
- const now = Date.now();
112
- const expires = new Date(frontmatter.quarantine_expires_at).getTime();
113
- if (now < expires) {
114
- return {
115
- success: false,
116
- target_path: quarantinePath,
117
- advisory: "quarantine period not yet expired, cannot promote to core",
118
- };
119
- }
120
- }
121
- const coreDir = path.join(knowledgeDir, "patterns", "core");
122
- fss.mkdirSync(coreDir, { recursive: true });
123
- frontmatter.tier = "core";
124
- debug("知识主权", "晋级 quarantine 到 core", quarantinePath, "确认人:", confirm.confirmed_by);
125
- frontmatter.promoted_at = new Date().toISOString();
126
- frontmatter.promoted_by = confirm.confirmed_by;
127
- frontmatter.promotion_reason = confirm.reason;
128
- delete frontmatter.quarantine_expires_at;
129
- delete frontmatter.quarantined_at;
130
- const filename = path.basename(quarantinePath);
131
- const targetPath = path.join(coreDir, filename);
132
- const updated = matter.stringify(body, frontmatter);
133
- const tmpPath = `${targetPath}.tmp`;
134
- await fs.writeFile(tmpPath, updated, "utf-8");
135
- await fs.rename(tmpPath, targetPath);
136
- await fs.unlink(quarantinePath).catch((e) => { debug("知识主权", "清理文件失败", e); });
137
- return {
138
- success: true,
139
- target_path: targetPath,
140
- advisory: `promoted to core by ${confirm.confirmed_by}: ${confirm.reason}`,
141
- };
142
- }
143
- /**
144
- * 扫描 knowledge 目录,生成主权报告。
145
- */
146
- export async function generateSovereigntyReport(knowledgeDir) {
147
- const entries = [];
148
- const tiers = ["draft", "quarantine", "core"];
149
- const tierDirs = {
150
- draft: path.join(knowledgeDir, "drafts"),
151
- quarantine: path.join(knowledgeDir, "quarantine"),
152
- core: path.join(knowledgeDir, "patterns", "core"),
153
- };
154
- const tierCounts = { draft: 0, quarantine: 0, core: 0 };
155
- debug("知识主权", "扫描知识目录", knowledgeDir);
156
- const canPromoteToCore = [];
157
- for (const tier of tiers) {
158
- const dir = tierDirs[tier];
159
- if (!fss.existsSync(dir))
160
- continue;
161
- const files = await fs.readdir(dir);
162
- for (const f of files.filter((f) => f.endsWith(".md"))) {
163
- const filePath = path.join(dir, f);
164
- try {
165
- const raw = await fs.readFile(filePath, "utf-8");
166
- const { data } = matter(raw);
167
- const entry = {
168
- name: data.name ?? f,
169
- file_path: filePath,
170
- tier,
171
- quarantined_at: data.quarantined_at ?? null,
172
- quarantine_expires_at: data.quarantine_expires_at ?? null,
173
- can_reference: true,
174
- advisory: "",
175
- };
176
- tierCounts[tier]++;
177
- if (tier === "quarantine" && data.quarantine_expires_at) {
178
- const expires = new Date(data.quarantine_expires_at).getTime();
179
- if (Date.now() >= expires) {
180
- canPromoteToCore.push({ name: entry.name, file_path: filePath });
181
- }
182
- }
183
- entries.push(entry);
184
- }
185
- catch (e) {
186
- debug("知识主权", "知识条目解析失败 —", e);
187
- // 跳过无法解析的文件
188
- }
189
- }
190
- }
191
- return {
192
- total_entries: entries.length,
193
- by_tier: tierCounts,
194
- quarantine_entries: entries.filter((e) => e.tier === "quarantine"),
195
- can_promote_to_core: canPromoteToCore,
196
- summary: `${entries.length} entries (${tierCounts.draft} drafts, ${tierCounts.quarantine} quarantine, ${tierCounts.core} core)`,
197
- };
198
- }
199
- //# sourceMappingURL=knowledge_sovereignty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge_sovereignty.js","sourceRoot":"","sources":["../../../src/context/knowledge/knowledge_sovereignty.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Team Awareness — 模块模块。
3
- *
4
- * 职责边界:
5
- * - 负责:TeamAwarenessInput 等 模块职责
6
- * - 不负责:不属于本模块的职责由对应模块承担
7
- *
8
- * 被谁调用:上层模块按需调用
9
- * 调用谁:index、git_deps、index_manager、logger
10
- *
11
- * 数据流:输入 → TeamAwarenessInput 处理 → 输出
12
- * 持久化:无持久化(纯计算/内存态)
13
- */
14
- import type { ProjectConfig, TeamStatusResult } from "../types/index.js";
15
- import type { GitOperations } from "../git/git_deps.js";
16
- import type { KnowledgeIndexManager } from "./knowledge/index_manager.js";
17
- /**
18
- * 团队态势感知模块 — 采集团队活动信息、成员工作负载、过期分支和知识更新。
19
- * 基于 Git 日志和知识索引聚合团队协作状态,帮助了解项目整体活跃度。
20
- */
21
- /**
22
- * 团队态势感知的输入参数。
23
- * @property projectPath - 项目根目录路径
24
- * @property config - 项目配置
25
- * @property since - 可选的起始日期(ISO 格式),不传则默认近 7 天
26
- * @property gitOps - Git 操作封装
27
- * @property knowledgeIndex - 可选的知识索引管理器,用于获取知识更新记录
28
- */
29
- export interface TeamAwarenessInput {
30
- projectPath: string;
31
- config: ProjectConfig;
32
- since?: string;
33
- gitOps: GitOperations;
34
- knowledgeIndex?: KnowledgeIndexManager;
35
- }
36
- /**
37
- * 获取完整的团队态势信息,包括活动流、成员工作负载、过期分支和知识更新。
38
- * @param input - 团队态势感知输入参数
39
- * @returns 团队状态结果,包含活动流、成员工作量、过期分支、知识更新和中文摘要
40
- */
41
- export declare function getTeamStatus(input: TeamAwarenessInput): Promise<TeamStatusResult>;
42
- //# sourceMappingURL=team_awareness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team_awareness.d.ts","sourceRoot":"","sources":["../../src/context/team_awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2GxF"}