soloforge 1.2.18 → 1.2.20

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 (208) hide show
  1. package/dist/adapters/claude_code/pre_prompt_contract.js +2 -2
  2. package/dist/adapters/claude_code/pre_prompt_contract.js.map +1 -1
  3. package/dist/adapters/claude_code/server.d.ts.map +1 -1
  4. package/dist/adapters/claude_code/server.js +4 -2
  5. package/dist/adapters/claude_code/server.js.map +1 -1
  6. package/dist/adapters/claude_code/tools.d.ts +2 -2
  7. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  8. package/dist/adapters/claude_code/tools.js +348 -171
  9. package/dist/adapters/claude_code/tools.js.map +1 -1
  10. package/dist/adapters/codex/codex_config.d.ts.map +1 -1
  11. package/dist/adapters/codex/codex_config.js +16 -4
  12. package/dist/adapters/codex/codex_config.js.map +1 -1
  13. package/dist/adapters/trae/trae_config.d.ts +2 -1
  14. package/dist/adapters/trae/trae_config.d.ts.map +1 -1
  15. package/dist/adapters/trae/trae_config.js +4 -3
  16. package/dist/adapters/trae/trae_config.js.map +1 -1
  17. package/dist/bin/config_commands.d.ts +1 -1
  18. package/dist/bin/config_commands.js +4 -4
  19. package/dist/bin/config_commands.js.map +1 -1
  20. package/dist/bin/soloforge.d.ts.map +1 -1
  21. package/dist/bin/soloforge.js +85 -110
  22. package/dist/bin/soloforge.js.map +1 -1
  23. package/dist/engine/artifact_contract_registry.d.ts.map +1 -1
  24. package/dist/engine/artifact_contract_registry.js.map +1 -1
  25. package/dist/engine/audit_sampler.d.ts.map +1 -1
  26. package/dist/engine/audit_sampler.js +0 -4
  27. package/dist/engine/audit_sampler.js.map +1 -1
  28. package/dist/engine/batch1_manifest.d.ts.map +1 -1
  29. package/dist/engine/batch1_manifest.js +0 -7
  30. package/dist/engine/batch1_manifest.js.map +1 -1
  31. package/dist/engine/batch1_scenario_registry.js +7 -7
  32. package/dist/engine/batch1_scenario_registry.js.map +1 -1
  33. package/dist/engine/batch1_scenario_runners.js +32 -32
  34. package/dist/engine/batch1_scenario_runners.js.map +1 -1
  35. package/dist/engine/capability_action_advisor.js +16 -16
  36. package/dist/engine/capability_action_advisor.js.map +1 -1
  37. package/dist/engine/classifier.d.ts.map +1 -1
  38. package/dist/engine/classifier.js +4 -3
  39. package/dist/engine/classifier.js.map +1 -1
  40. package/dist/engine/code_reviewer.d.ts.map +1 -1
  41. package/dist/engine/code_reviewer.js +10 -9
  42. package/dist/engine/code_reviewer.js.map +1 -1
  43. package/dist/engine/command_execution_contract.js +14 -14
  44. package/dist/engine/command_execution_contract.js.map +1 -1
  45. package/dist/engine/contract_registry.d.ts +113 -0
  46. package/dist/engine/contract_registry.d.ts.map +1 -0
  47. package/dist/engine/contract_registry.js +1159 -0
  48. package/dist/engine/contract_registry.js.map +1 -0
  49. package/dist/engine/contract_state_store.d.ts +67 -0
  50. package/dist/engine/contract_state_store.d.ts.map +1 -0
  51. package/dist/engine/contract_state_store.js +167 -0
  52. package/dist/engine/contract_state_store.js.map +1 -0
  53. package/dist/engine/debug_log.d.ts +2 -0
  54. package/dist/engine/debug_log.d.ts.map +1 -0
  55. package/dist/engine/debug_log.js +7 -0
  56. package/dist/engine/debug_log.js.map +1 -0
  57. package/dist/engine/debugger.d.ts.map +1 -1
  58. package/dist/engine/debugger.js +30 -1
  59. package/dist/engine/debugger.js.map +1 -1
  60. package/dist/engine/degradation.d.ts +58 -0
  61. package/dist/engine/degradation.d.ts.map +1 -0
  62. package/dist/engine/degradation.js +74 -0
  63. package/dist/engine/degradation.js.map +1 -0
  64. package/dist/engine/delivery_readiness.d.ts +66 -0
  65. package/dist/engine/delivery_readiness.d.ts.map +1 -0
  66. package/dist/engine/delivery_readiness.js +176 -0
  67. package/dist/engine/delivery_readiness.js.map +1 -0
  68. package/dist/engine/deprecated_contract.d.ts +21 -0
  69. package/dist/engine/deprecated_contract.d.ts.map +1 -0
  70. package/dist/engine/deprecated_contract.js +14 -0
  71. package/dist/engine/deprecated_contract.js.map +1 -0
  72. package/dist/engine/developer_sovereignty.js +15 -15
  73. package/dist/engine/developer_sovereignty.js.map +1 -1
  74. package/dist/engine/diagnostic_registry.d.ts +64 -0
  75. package/dist/engine/diagnostic_registry.d.ts.map +1 -0
  76. package/dist/engine/diagnostic_registry.js +176 -0
  77. package/dist/engine/diagnostic_registry.js.map +1 -0
  78. package/dist/engine/diff_ownership_store.d.ts.map +1 -1
  79. package/dist/engine/diff_ownership_store.js +1 -2
  80. package/dist/engine/diff_ownership_store.js.map +1 -1
  81. package/dist/engine/dual_layer_mechanism_registry.js +1 -1
  82. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  83. package/dist/engine/enforcement_guard.d.ts +84 -0
  84. package/dist/engine/enforcement_guard.d.ts.map +1 -0
  85. package/dist/engine/enforcement_guard.js +305 -0
  86. package/dist/engine/enforcement_guard.js.map +1 -0
  87. package/dist/engine/evolver.d.ts.map +1 -1
  88. package/dist/engine/evolver.js +11 -10
  89. package/dist/engine/evolver.js.map +1 -1
  90. package/dist/engine/failure_report.d.ts +74 -0
  91. package/dist/engine/failure_report.d.ts.map +1 -0
  92. package/dist/engine/failure_report.js +143 -0
  93. package/dist/engine/failure_report.js.map +1 -0
  94. package/dist/engine/governance_report.d.ts +9 -1
  95. package/dist/engine/governance_report.d.ts.map +1 -1
  96. package/dist/engine/governance_report.js +24 -10
  97. package/dist/engine/governance_report.js.map +1 -1
  98. package/dist/engine/implementation_roadmap_registry.d.ts +1 -1
  99. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  100. package/dist/engine/implementation_roadmap_registry.js +37 -29
  101. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  102. package/dist/engine/input_material_extractor.js +3 -3
  103. package/dist/engine/input_material_extractor.js.map +1 -1
  104. package/dist/engine/intent_expander.d.ts.map +1 -1
  105. package/dist/engine/intent_expander.js +15 -14
  106. package/dist/engine/intent_expander.js.map +1 -1
  107. package/dist/engine/intent_router.d.ts.map +1 -1
  108. package/dist/engine/intent_router.js +17 -16
  109. package/dist/engine/intent_router.js.map +1 -1
  110. package/dist/engine/java_quality_guard.js +10 -10
  111. package/dist/engine/java_quality_guard.js.map +1 -1
  112. package/dist/engine/knowledge_injection_boundary.d.ts +1 -1
  113. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -1
  114. package/dist/engine/knowledge_injection_boundary.js +61 -60
  115. package/dist/engine/knowledge_injection_boundary.js.map +1 -1
  116. package/dist/engine/knowledge_lifecycle.d.ts +23 -0
  117. package/dist/engine/knowledge_lifecycle.d.ts.map +1 -0
  118. package/dist/engine/knowledge_lifecycle.js +13 -0
  119. package/dist/engine/knowledge_lifecycle.js.map +1 -0
  120. package/dist/engine/language_policy.d.ts +21 -0
  121. package/dist/engine/language_policy.d.ts.map +1 -0
  122. package/dist/engine/language_policy.js +18 -0
  123. package/dist/engine/language_policy.js.map +1 -0
  124. package/dist/engine/language_policy_contract.d.ts +52 -0
  125. package/dist/engine/language_policy_contract.d.ts.map +1 -0
  126. package/dist/engine/language_policy_contract.js +78 -0
  127. package/dist/engine/language_policy_contract.js.map +1 -0
  128. package/dist/engine/main_path_integration_contract.js +16 -16
  129. package/dist/engine/main_path_integration_contract.js.map +1 -1
  130. package/dist/engine/mechanism_contract_registry.d.ts +3 -4
  131. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  132. package/dist/engine/mechanism_contract_registry.js +23 -24
  133. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  134. package/dist/engine/mechanism_family_registry.d.ts +48 -0
  135. package/dist/engine/mechanism_family_registry.d.ts.map +1 -0
  136. package/dist/engine/mechanism_family_registry.js +197 -0
  137. package/dist/engine/mechanism_family_registry.js.map +1 -0
  138. package/dist/engine/onboarding.js +20 -20
  139. package/dist/engine/onboarding.js.map +1 -1
  140. package/dist/engine/policy_drift_detector.d.ts +20 -0
  141. package/dist/engine/policy_drift_detector.d.ts.map +1 -1
  142. package/dist/engine/policy_drift_detector.js +79 -0
  143. package/dist/engine/policy_drift_detector.js.map +1 -1
  144. package/dist/engine/privacy_secret_contract.d.ts.map +1 -1
  145. package/dist/engine/privacy_secret_contract.js +49 -48
  146. package/dist/engine/privacy_secret_contract.js.map +1 -1
  147. package/dist/engine/regression_matrix.js +21 -21
  148. package/dist/engine/regression_matrix.js.map +1 -1
  149. package/dist/engine/retention_policy.d.ts +46 -0
  150. package/dist/engine/retention_policy.d.ts.map +1 -0
  151. package/dist/engine/retention_policy.js +124 -0
  152. package/dist/engine/retention_policy.js.map +1 -0
  153. package/dist/engine/route_decision_contract_verifier.js +24 -24
  154. package/dist/engine/route_decision_contract_verifier.js.map +1 -1
  155. package/dist/engine/scope_controller.d.ts.map +1 -1
  156. package/dist/engine/scope_controller.js +4 -3
  157. package/dist/engine/scope_controller.js.map +1 -1
  158. package/dist/engine/scope_lease.d.ts.map +1 -1
  159. package/dist/engine/scope_lease.js +0 -1
  160. package/dist/engine/scope_lease.js.map +1 -1
  161. package/dist/engine/state_update_bypass.d.ts +19 -0
  162. package/dist/engine/state_update_bypass.d.ts.map +1 -0
  163. package/dist/engine/state_update_bypass.js +17 -0
  164. package/dist/engine/state_update_bypass.js.map +1 -0
  165. package/dist/engine/task_context.d.ts.map +1 -1
  166. package/dist/engine/task_context.js +11 -3
  167. package/dist/engine/task_context.js.map +1 -1
  168. package/dist/engine/test_generator.js +8 -8
  169. package/dist/engine/test_generator.js.map +1 -1
  170. package/dist/engine/test_strategy.d.ts +58 -0
  171. package/dist/engine/test_strategy.d.ts.map +1 -0
  172. package/dist/engine/test_strategy.js +93 -0
  173. package/dist/engine/test_strategy.js.map +1 -0
  174. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  175. package/dist/engine/tool_invocation_contract_registry.js +29 -19
  176. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  177. package/dist/engine/traceability.js +6 -6
  178. package/dist/engine/traceability.js.map +1 -1
  179. package/dist/engine/user_feedback_contract.js +9 -9
  180. package/dist/engine/user_feedback_contract.js.map +1 -1
  181. package/dist/engine/verification_contract.d.ts +132 -0
  182. package/dist/engine/verification_contract.d.ts.map +1 -0
  183. package/dist/engine/verification_contract.js +296 -0
  184. package/dist/engine/verification_contract.js.map +1 -0
  185. package/dist/engine/verifier.d.ts.map +1 -1
  186. package/dist/engine/verifier.js +9 -8
  187. package/dist/engine/verifier.js.map +1 -1
  188. package/dist/engine/workspace_lease.d.ts +69 -0
  189. package/dist/engine/workspace_lease.d.ts.map +1 -0
  190. package/dist/engine/workspace_lease.js +153 -0
  191. package/dist/engine/workspace_lease.js.map +1 -0
  192. package/dist/engine/zero_config_init.d.ts.map +1 -1
  193. package/dist/engine/zero_config_init.js +84 -84
  194. package/dist/engine/zero_config_init.js.map +1 -1
  195. package/dist/git/operations.js +1 -1
  196. package/dist/git/operations.js.map +1 -1
  197. package/dist/index.d.ts +4 -3
  198. package/dist/index.d.ts.map +1 -1
  199. package/dist/index.js +16 -11
  200. package/dist/index.js.map +1 -1
  201. package/dist/knowledge/index_manager.d.ts.map +1 -1
  202. package/dist/knowledge/index_manager.js +18 -17
  203. package/dist/knowledge/index_manager.js.map +1 -1
  204. package/dist/knowledge/loader.js +2 -2
  205. package/dist/knowledge/loader.js.map +1 -1
  206. package/dist/types.d.ts +13 -1
  207. package/dist/types.d.ts.map +1 -1
  208. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery_readiness.d.ts","sourceRoot":"","sources":["../../src/engine/delivery_readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAExG,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB,EAAE,uBAAuB,CAAC;IACnD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,0BAA0B,EAAE,OAAO,CAAC;IACpC,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,EAClD,aAAa,EAAE,YAAY,EAAE,EAC7B,gBAAgB,EAAE,OAAO,EACzB,gBAAgB,EAAE,OAAO,EACzB,kBAAkB,EAAE,OAAO,EAC3B,wBAAwB,EAAE,OAAO,GAChC,uBAAuB,CAyHzB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,YAAY,GAAG,QAAQ,EAChC,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E,uBAAuB,CAWzB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,uBAAuB,EAC/B,eAAe,EAAE,uBAAuB,GAAG,SAAS,GACnD,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,CAAC,CAyB7D"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 交付就绪报告 — 问题十二 (Delivery Readiness Gate)。
3
+ *
4
+ * 核心规则:
5
+ * - DeliveryReadinessReport 只判断 readiness,不隐式执行 commit/push/PR/deploy
6
+ * - delivery_allowed=true 不等于 delivery executed
7
+ * - 未验证不得 delivered
8
+ * - blocking human confirmation 存在时 delivery_allowed 必须为 false
9
+ */
10
+ /**
11
+ * 评估交付就绪状态。
12
+ * 只做判断,不执行任何交付动作。
13
+ */
14
+ export function evaluateDeliveryReadiness(taskId, verificationResult, guardFindings, scopeCheckPassed, leaseCheckPassed, privacyCheckPassed, artifactAcceptancePassed) {
15
+ const blockingFindings = [];
16
+ const warnings = [];
17
+ // 1. 验证结果检查
18
+ if (!verificationResult) {
19
+ blockingFindings.push({
20
+ rule: "verification_required",
21
+ message_zh: "无验证结果,不得交付",
22
+ });
23
+ }
24
+ else if (verificationResult.status !== "passed") {
25
+ blockingFindings.push({
26
+ rule: "verification_passed_required",
27
+ message_zh: `验证状态为 ${verificationResult.status},不是 passed,不得交付`,
28
+ });
29
+ }
30
+ else if (verificationResult.provenance !== "record_verification_execution") {
31
+ blockingFindings.push({
32
+ rule: "verification_provenance_required",
33
+ message_zh: `验证结果 provenance 为 "${verificationResult.provenance}",必须通过 recordVerificationExecution 录入,不得交付`,
34
+ });
35
+ }
36
+ else if (!verificationResult.evidence_ids || verificationResult.evidence_ids.length === 0) {
37
+ blockingFindings.push({
38
+ rule: "verification_evidence_required",
39
+ message_zh: "验证结果缺少 evidence_ids,不得交付",
40
+ });
41
+ }
42
+ else if (!verificationResult.total_commands || verificationResult.total_commands === 0) {
43
+ blockingFindings.push({
44
+ rule: "verification_commands_required",
45
+ message_zh: "验证结果 total_commands 为 0,不得交付",
46
+ });
47
+ }
48
+ else if (verificationResult.missing_commands && verificationResult.missing_commands.length > 0) {
49
+ blockingFindings.push({
50
+ rule: "verification_plan_coverage_required",
51
+ message_zh: `plan 命令未全覆盖,缺少: ${verificationResult.missing_commands.join(", ")},不得交付`,
52
+ });
53
+ }
54
+ else if (verificationResult.evidence_integrity_passed === false) {
55
+ blockingFindings.push({
56
+ rule: "verification_evidence_integrity_required",
57
+ message_zh: "证据格式校验未全部通过,不得交付",
58
+ });
59
+ }
60
+ // 2. Scope 检查
61
+ if (!scopeCheckPassed) {
62
+ blockingFindings.push({
63
+ rule: "scope_check",
64
+ message_zh: "范围检查未通过",
65
+ });
66
+ }
67
+ // 3. Lease 检查
68
+ if (!leaseCheckPassed) {
69
+ blockingFindings.push({
70
+ rule: "lease_check",
71
+ message_zh: "存在活跃 lease 冲突,不得交付",
72
+ });
73
+ }
74
+ // 4. 隐私检查
75
+ if (!privacyCheckPassed) {
76
+ blockingFindings.push({
77
+ rule: "privacy_check",
78
+ message_zh: "隐私检查未通过,存在未脱敏内容",
79
+ });
80
+ }
81
+ // 5. Artifact 检查
82
+ if (!artifactAcceptancePassed) {
83
+ blockingFindings.push({
84
+ rule: "artifact_acceptance",
85
+ message_zh: "产物验收未通过",
86
+ });
87
+ }
88
+ // 6. Guard 阻断检查
89
+ const blockedGuards = guardFindings.filter((f) => f.blocked);
90
+ for (const g of blockedGuards) {
91
+ blockingFindings.push({
92
+ rule: g.guard_id,
93
+ message_zh: g.reason_zh,
94
+ });
95
+ }
96
+ // 7. Guard warning
97
+ const warningGuards = guardFindings.filter((f) => !f.blocked && f.severity === "warning");
98
+ for (const g of warningGuards) {
99
+ warnings.push({
100
+ rule: g.guard_id,
101
+ message_zh: g.reason_zh,
102
+ });
103
+ }
104
+ // 判断就绪状态
105
+ let status;
106
+ const deliveryAllowed = blockingFindings.length === 0;
107
+ if (blockedGuards.some((g) => g.action === "require_human")) {
108
+ status = "manual_required";
109
+ }
110
+ else if (!deliveryAllowed) {
111
+ status = "blocked";
112
+ }
113
+ else if (warnings.length > 0) {
114
+ status = "ready";
115
+ }
116
+ else {
117
+ status = "ready";
118
+ }
119
+ return {
120
+ report_id: `dr-${taskId}-${Date.now()}`,
121
+ task_id: taskId,
122
+ delivery_readiness_status: status,
123
+ delivery_allowed: deliveryAllowed,
124
+ verification_result_id: verificationResult?.result_id,
125
+ scope_check_passed: scopeCheckPassed,
126
+ lease_check_passed: leaseCheckPassed,
127
+ privacy_check_passed: privacyCheckPassed,
128
+ artifact_acceptance_passed: artifactAcceptancePassed,
129
+ blocking_findings: blockingFindings,
130
+ warnings,
131
+ evaluated_at: new Date().toISOString(),
132
+ delivery_executed: false, // 就绪报告不触发执行
133
+ };
134
+ }
135
+ /**
136
+ * 创建交付执行记录。
137
+ * 必须由 sf_deliver 或手动触发,不能由 readiness 自动触发。
138
+ */
139
+ export function createDeliveryExecutionRecord(taskId, trigger, details) {
140
+ return {
141
+ execution_id: `de-${taskId}-${Date.now()}`,
142
+ task_id: taskId,
143
+ trigger,
144
+ commit_sha: details.commit_sha,
145
+ pr_url: details.pr_url,
146
+ changelog_entry: details.changelog_entry,
147
+ executed_at: new Date().toISOString(),
148
+ rolled_back: false,
149
+ };
150
+ }
151
+ /**
152
+ * 验证: delivery_readiness 不得触发 delivery_execution。
153
+ */
154
+ export function validateDeliverySeparation(report, executionRecord) {
155
+ const errors = [];
156
+ if (report.delivery_allowed && report.delivery_executed) {
157
+ errors.push({
158
+ error: "delivery_readiness 报告不应触发 delivery_execution",
159
+ severity: "hard_fail",
160
+ });
161
+ }
162
+ if (executionRecord && !report.delivery_allowed) {
163
+ errors.push({
164
+ error: "交付已执行但 delivery_readiness 未允许",
165
+ severity: "hard_fail",
166
+ });
167
+ }
168
+ if (executionRecord && executionRecord.trigger === undefined) {
169
+ errors.push({
170
+ error: "交付执行记录缺少显式触发来源",
171
+ severity: "hard_fail",
172
+ });
173
+ }
174
+ return errors;
175
+ }
176
+ //# sourceMappingURL=delivery_readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery_readiness.js","sourceRoot":"","sources":["../../src/engine/delivery_readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 废弃契约注册表 — 问题二十 (Deprecated Contract)。
3
+ *
4
+ * 管理已废弃契约的生命周期,包括废弃原因、替代方案和迁移路径。
5
+ */
6
+ /** 废弃契约条目 */
7
+ export interface DeprecatedContractEntry {
8
+ /** 契约 ID */
9
+ contract_id: string;
10
+ /** 废弃原因 */
11
+ deprecation_reason: string;
12
+ /** 推荐替代契约 ID */
13
+ replacement_id: string | null;
14
+ /** 废弃时间戳 */
15
+ deprecated_at: string;
16
+ }
17
+ /**
18
+ * 列出所有废弃契约条目。
19
+ */
20
+ export declare function listDeprecatedContracts(): DeprecatedContractEntry[];
21
+ //# sourceMappingURL=deprecated_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated_contract.d.ts","sourceRoot":"","sources":["../../src/engine/deprecated_contract.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,aAAa;AACb,MAAM,WAAW,uBAAuB;IACtC,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,EAAE,CAEnE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 废弃契约注册表 — 问题二十 (Deprecated Contract)。
3
+ *
4
+ * 管理已废弃契约的生命周期,包括废弃原因、替代方案和迁移路径。
5
+ */
6
+ // ── 注册表 ──
7
+ const DEPRECATED_CONTRACTS = [];
8
+ /**
9
+ * 列出所有废弃契约条目。
10
+ */
11
+ export function listDeprecatedContracts() {
12
+ return DEPRECATED_CONTRACTS.map((e) => ({ ...e }));
13
+ }
14
+ //# sourceMappingURL=deprecated_contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated_contract.js","sourceRoot":"","sources":["../../src/engine/deprecated_contract.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,YAAY;AAEZ,MAAM,oBAAoB,GAAuC,EAAE,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -17,7 +17,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
17
17
  const attemptCount = taskContext.execution?.attempt_count ?? 0;
18
18
  const failureCount = taskContext.execution?.failure_history?.length ?? 0;
19
19
  const risk = taskContext.classification?.risk ?? "low";
20
- // Diff summarymerge unstaged + cached diffs per file
20
+ // Diff 摘要合并 unstaged cached diff(按文件)
21
21
  const [unstaged, staged] = await Promise.all([
22
22
  gitOps.getDiff(projectPath, { cached: false }),
23
23
  gitOps.getDiff(projectPath, { cached: true }),
@@ -37,7 +37,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
37
37
  merged.set(h.file, { file_path: h.file, additions: h.additions, deletions: h.deletions });
38
38
  }
39
39
  }
40
- // For changed files not in any diff output, add zero-count entries
40
+ // 未出现在 diff 输出中的变更文件,补充零计数字段
41
41
  for (const f of changedFiles) {
42
42
  if (!merged.has(f)) {
43
43
  merged.set(f, { file_path: f, additions: 0, deletions: 0 });
@@ -52,7 +52,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
52
52
  deletions: totalDeletions,
53
53
  file_details: fileDetails,
54
54
  };
55
- // Risk summary
55
+ // 风险摘要
56
56
  const riskFactors = [];
57
57
  if (risk === "high")
58
58
  riskFactors.push(`任务风险: ${risk}`);
@@ -64,7 +64,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
64
64
  riskFactors.push(`变更文件多: ${changedFiles.length} 个`);
65
65
  const riskLevel = riskFactors.length === 0 ? "low" : riskFactors.length <= 2 ? "medium" : "high";
66
66
  console.error("[soloForge] 开发者主权: 风险评估 — level:", riskLevel, "factors:", riskFactors.join(", "));
67
- // Evidence chain
67
+ // 证据链
68
68
  const chain = buildDeliveryEvidenceChain(taskContext);
69
69
  const evidenceChain = chain
70
70
  ? {
@@ -73,7 +73,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
73
73
  uncovered_points: chain.completeness.uncovered_points,
74
74
  }
75
75
  : null;
76
- // Rollback command bound to real commit hash and branch
76
+ // 回滚命令绑定真实 commit hash branch
77
77
  let commitHash = "HEAD";
78
78
  let branch = "HEAD";
79
79
  try {
@@ -87,20 +87,20 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
87
87
  }
88
88
  catch { /* use default */ }
89
89
  const rollbackCommand = `git revert ${commitHash} --no-edit`;
90
- // can_deliver advisory logic: advisory blockers, not hard block
90
+ // can_deliver advisory 逻辑: advisory 级阻断,非 hard block
91
91
  const deliveryBlockers = [];
92
92
  if (riskLevel === "high") {
93
- deliveryBlockers.push("advisory: high risk recommend manual review before delivery");
93
+ deliveryBlockers.push("advisory: 高风险建议交付前人工审查");
94
94
  }
95
95
  if (evidenceChain && evidenceChain.uncovered_points.length > 0) {
96
- deliveryBlockers.push(`advisory: ${evidenceChain.uncovered_points.length} uncovered requirement point(s)`);
96
+ deliveryBlockers.push(`advisory: 个未覆盖的需求点`);
97
97
  }
98
98
  const hasVerification = taskContext.verification?.summary != null;
99
99
  if (!hasVerification && changedFiles.length > 0) {
100
- deliveryBlockers.push("advisory: no verification results recommend running tests before delivery");
100
+ deliveryBlockers.push("advisory: 无验证结果建议交付前运行测试");
101
101
  }
102
102
  console.error("[soloForge] 开发者主权: delivery blockers:", deliveryBlockers.length > 0 ? deliveryBlockers.join("; ") : "无");
103
- // can_deliver is always true (advisory, not hard block), but blockers inform the developer
103
+ // can_deliver 始终为 trueadvisory 模式,非 hard block),但阻断信息供开发者参考
104
104
  const canDeliver = true;
105
105
  return {
106
106
  task_id: taskContext.task_id,
@@ -109,10 +109,10 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
109
109
  risk_level: riskLevel,
110
110
  factors: riskFactors,
111
111
  advisory: riskLevel === "high"
112
- ? "advisory: high risk delivery, recommend manual review before proceeding"
112
+ ? "advisory: 高风险交付,建议人工审查后再继续"
113
113
  : riskLevel === "medium"
114
- ? "advisory: moderate risk, review changes before delivery"
115
- : "low risk, safe to proceed",
114
+ ? "advisory: 中等风险,交付前请审查变更"
115
+ : "低风险,可安全继续",
116
116
  },
117
117
  evidence_chain: evidenceChain,
118
118
  rollback_command: rollbackCommand,
@@ -120,7 +120,7 @@ export async function preDeliveryReview(taskContext, gitOps, projectPath) {
120
120
  delivery_blockers: deliveryBlockers,
121
121
  advisory: deliveryBlockers.length > 0
122
122
  ? deliveryBlockers.join("; ")
123
- : "review the diff and evidence chain before confirming delivery",
123
+ : "确认交付前请审查 diff 和证据链",
124
124
  };
125
125
  }
126
126
  /**
@@ -134,7 +134,7 @@ export function vetoDelivery(taskId, reason) {
134
134
  task_id: taskId,
135
135
  reason,
136
136
  timestamp: new Date().toISOString(),
137
- advisory: "delivery vetoed by developer no code changes were committed or pushed",
137
+ advisory: "交付已被开发者否决未提交或推送任何代码变更",
138
138
  };
139
139
  }
140
140
  //# sourceMappingURL=developer_sovereignty.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"developer_sovereignty.js","sourceRoot":"","sources":["../../src/engine/developer_sovereignty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"developer_sovereignty.js","sourceRoot":"","sources":["../../src/engine/developer_sovereignty.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 诊断码注册表 — 问题三十六 (Diagnostic Code Contract)。
3
+ *
4
+ * 核心规则:
5
+ * - 诊断码格式 SF-{AREA}-{NNNN},一旦发布不得复用
6
+ * - blocking/critical 事件没有诊断码不得输出
7
+ * - 每个 active code 必须有 title_zh、user_message_zh、recovery_hint_zh
8
+ * - deprecated/removed code 不得复用
9
+ */
10
+ export type DiagnosticSeverity = "blocking" | "critical" | "warning" | "advisory" | "info";
11
+ export type DiagnosticStatus = "active" | "deprecated" | "removed";
12
+ export type DiagnosticArea = "STATE" | "GUARD" | "VERIFY" | "DELIVER" | "FAILURE" | "DEGRADE" | "WORKSPACE" | "OBSERVE" | "DIAG" | "TEST" | "LANG" | "CONTRACT" | "PRIVACY" | "CMD";
13
+ export interface DiagnosticCodeEntry {
14
+ code: string;
15
+ area: DiagnosticArea;
16
+ severity: DiagnosticSeverity;
17
+ status: DiagnosticStatus;
18
+ title_zh: string;
19
+ user_message_zh: string;
20
+ recovery_hint_zh: string;
21
+ owner_component: string;
22
+ evidence_refs: string[];
23
+ replaced_by?: string;
24
+ }
25
+ export interface DiagnosticEvent {
26
+ code: string;
27
+ occurred_at: string;
28
+ context: Record<string, unknown>;
29
+ user_visible_message: string;
30
+ contract_id?: string;
31
+ task_id?: string;
32
+ }
33
+ /** 按 code 获取诊断码 */
34
+ export declare function getDiagnosticByCode(code: string): DiagnosticCodeEntry | undefined;
35
+ /** 列出所有诊断码 */
36
+ export declare function listAllDiagnostics(): DiagnosticCodeEntry[];
37
+ /** 按领域列出诊断码 */
38
+ export declare function listDiagnosticsByArea(area: DiagnosticArea): DiagnosticCodeEntry[];
39
+ /** 按 severity 列出诊断码 */
40
+ export declare function listDiagnosticsBySeverity(severity: DiagnosticSeverity): DiagnosticCodeEntry[];
41
+ /** 注册新诊断码(运行时) */
42
+ export declare function registerDiagnostic(entry: DiagnosticCodeEntry): {
43
+ success: boolean;
44
+ error?: string;
45
+ };
46
+ /** 创建诊断事件 */
47
+ export declare function createDiagnosticEvent(code: string, context?: Record<string, unknown>, contractId?: string, taskId?: string): DiagnosticEvent | null;
48
+ /** 验证所有 blocking/critical 事件必须有诊断码 */
49
+ export declare function validateDiagnosticCoverage(eventSeverities: Array<{
50
+ severity: DiagnosticSeverity;
51
+ has_code: boolean;
52
+ }>): Array<{
53
+ severity: DiagnosticSeverity;
54
+ error: string;
55
+ }>;
56
+ /** 重置注册表(测试用) */
57
+ export declare function resetDiagnosticRegistry(): void;
58
+ /** 获取诊断码统计 */
59
+ export declare function getDiagnosticStats(): {
60
+ total: number;
61
+ by_area: Record<string, number>;
62
+ by_severity: Record<string, number>;
63
+ };
64
+ //# sourceMappingURL=diagnostic_registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic_registry.d.ts","sourceRoot":"","sources":["../../src/engine/diagnostic_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAC3F,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AACnE,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,GACT,KAAK,CAAC;AAEV,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgGD,mBAAmB;AACnB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjF;AAED,cAAc;AACd,wBAAgB,kBAAkB,IAAI,mBAAmB,EAAE,CAE1D;AAED,eAAe;AACf,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAEjF;AAED,uBAAuB;AACvB,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,mBAAmB,EAAE,CAE7F;AAED,kBAAkB;AAClB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAanG;AAED,aAAa;AACb,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,eAAe,GAAG,IAAI,CAYxB;AAED,sCAAsC;AACtC,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAW9K;AAED,iBAAiB;AACjB,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,cAAc;AACd,wBAAgB,kBAAkB,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAS5H"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 诊断码注册表 — 问题三十六 (Diagnostic Code Contract)。
3
+ *
4
+ * 核心规则:
5
+ * - 诊断码格式 SF-{AREA}-{NNNN},一旦发布不得复用
6
+ * - blocking/critical 事件没有诊断码不得输出
7
+ * - 每个 active code 必须有 title_zh、user_message_zh、recovery_hint_zh
8
+ * - deprecated/removed code 不得复用
9
+ */
10
+ const BUILTIN_DIAGNOSTICS = [
11
+ // STATE 领域
12
+ { code: "SF-STATE-0001", area: "STATE", severity: "blocking", status: "active",
13
+ title_zh: "非法状态转移: failed → completed",
14
+ user_message_zh: "任务已失败,不能直接标记完成。需要人工确认恢复后重新验证。",
15
+ recovery_hint_zh: "检查失败原因,修复后重新执行验证流程。",
16
+ owner_component: "engine/task_context", evidence_refs: ["task_context状态机"] },
17
+ { code: "SF-STATE-0002", area: "STATE", severity: "blocking", status: "active",
18
+ title_zh: "非法状态转移: blocked → completed",
19
+ user_message_zh: "任务被阻断,不能直接标记完成。需要解除阻断条件。",
20
+ recovery_hint_zh: "检查阻断原因,解决阻断条件后重试。",
21
+ owner_component: "engine/task_context", evidence_refs: ["task_context状态机"] },
22
+ { code: "SF-STATE-0003", area: "STATE", severity: "blocking", status: "active",
23
+ title_zh: "非法状态转移: requires_human → completed",
24
+ user_message_zh: "任务需要人工确认,不能自动标记完成。",
25
+ recovery_hint_zh: "等待人工确认后继续。",
26
+ owner_component: "engine/task_context", evidence_refs: ["task_context状态机"] },
27
+ // GUARD 领域
28
+ { code: "SF-GUARD-0001", area: "GUARD", severity: "blocking", status: "active",
29
+ title_zh: "只读工作流写入业务源码",
30
+ user_message_zh: "当前工作流不允许写入业务源码,操作已阻断。",
31
+ recovery_hint_zh: "检查路由是否正确,或切换到允许写入的工作流。",
32
+ owner_component: "engine/enforcement_guard", evidence_refs: ["enforcement_guard写入护栏"] },
33
+ { code: "SF-GUARD-0002", area: "GUARD", severity: "blocking", status: "active",
34
+ title_zh: "超出 output artifact 范围写入",
35
+ user_message_zh: "source_extraction 工作流只能写入指定的 output artifact 路径。",
36
+ recovery_hint_zh: "确认输出路径是否在允许范围内。",
37
+ owner_component: "engine/enforcement_guard", evidence_refs: ["enforcement_guard范围护栏"] },
38
+ // VERIFY 领域
39
+ { code: "SF-VERIFY-0001", area: "VERIFY", severity: "critical", status: "active",
40
+ title_zh: "验证计划被当作验证证据",
41
+ user_message_zh: "检测到只有验证计划没有验证结果。计划不得替代真实执行。",
42
+ recovery_hint_zh: "执行验证命令获取真实结果。",
43
+ owner_component: "engine/verification_contract", evidence_refs: ["verification_contract分离"] },
44
+ { code: "SF-VERIFY-0002", area: "VERIFY", severity: "blocking", status: "active",
45
+ title_zh: "未验证但尝试交付",
46
+ user_message_zh: "任务未通过验证,不允许交付。",
47
+ recovery_hint_zh: "先完成验证流程,确保所有检查通过。",
48
+ owner_component: "engine/delivery_readiness", evidence_refs: ["delivery_readiness门控"] },
49
+ // FAILURE 领域
50
+ { code: "SF-FAILURE-0001", area: "FAILURE", severity: "critical", status: "active",
51
+ title_zh: "重试预算耗尽",
52
+ user_message_zh: "失败重试次数已达上限,需要人工介入。",
53
+ recovery_hint_zh: "检查错误根因,手动修复后重新执行。",
54
+ owner_component: "engine/recovery_policy", evidence_refs: ["recovery_policy预算"] },
55
+ { code: "SF-FAILURE-0002", area: "FAILURE", severity: "warning", status: "active",
56
+ title_zh: "外部副作用部分执行",
57
+ user_message_zh: "检测到外部副作用部分执行,已记录已发生动作。",
58
+ recovery_hint_zh: "检查已执行副作用,确认是否需要回滚。",
59
+ owner_component: "engine/recovery_policy", evidence_refs: ["recovery_policy副作用"] },
60
+ // DEGRADE 领域
61
+ { code: "SF-DEGRADE-0001", area: "DEGRADE", severity: "warning", status: "active",
62
+ title_zh: "验证器不可用,降级运行",
63
+ user_message_zh: "验证器不可用,当前为降级模式。结果未经验证。",
64
+ recovery_hint_zh: "等待验证器恢复后重新验证,或人工确认。",
65
+ owner_component: "engine/degradation", evidence_refs: ["degradation降级"] },
66
+ // WORKSPACE 领域
67
+ { code: "SF-WORKSPACE-0001", area: "WORKSPACE", severity: "blocking", status: "active",
68
+ title_zh: "并发写入冲突",
69
+ user_message_zh: "检测到其他任务正在写入相同文件范围,操作已阻断。",
70
+ recovery_hint_zh: "等待其他任务完成或人工协调写入顺序。",
71
+ owner_component: "engine/workspace_lease", evidence_refs: ["workspace_lease冲突"] },
72
+ // OBSERVE 领域
73
+ { code: "SF-OBSERVE-0001", area: "OBSERVE", severity: "warning", status: "active",
74
+ title_zh: "TaskContext 尝试存储敏感原文",
75
+ user_message_zh: "检测到尝试将敏感信息存入 TaskContext,已自动脱敏。",
76
+ recovery_hint_zh: "确认脱敏后的内容是否满足需求。",
77
+ owner_component: "engine/task_context", evidence_refs: ["task_context边界"] },
78
+ // CONTRACT 领域
79
+ { code: "SF-CONTRACT-0001", area: "CONTRACT", severity: "blocking", status: "active",
80
+ title_zh: "引用已废弃/已移除的契约",
81
+ user_message_zh: "工作流引用了已废弃或已移除的契约,操作已阻断。",
82
+ recovery_hint_zh: "迁移到替代契约或更新工作流配置。",
83
+ owner_component: "engine/contract_registry", evidence_refs: ["contract_registry门控"] },
84
+ // PRIVACY 领域
85
+ { code: "SF-PRIVACY-0001", area: "PRIVACY", severity: "blocking", status: "active",
86
+ title_zh: "命令输出包含敏感信息",
87
+ user_message_zh: "命令执行输出检测到敏感信息,已自动脱敏存储。",
88
+ recovery_hint_zh: "检查脱敏后内容,确认是否需要重新执行。",
89
+ owner_component: "engine/privacy_secret_contract", evidence_refs: ["privacy脱敏"] },
90
+ ];
91
+ let runtimeDiagnostics = null;
92
+ function getRegistry() {
93
+ if (!runtimeDiagnostics) {
94
+ runtimeDiagnostics = new Map();
95
+ for (const entry of BUILTIN_DIAGNOSTICS) {
96
+ runtimeDiagnostics.set(entry.code, { ...entry });
97
+ }
98
+ }
99
+ return runtimeDiagnostics;
100
+ }
101
+ /** 按 code 获取诊断码 */
102
+ export function getDiagnosticByCode(code) {
103
+ return getRegistry().get(code);
104
+ }
105
+ /** 列出所有诊断码 */
106
+ export function listAllDiagnostics() {
107
+ return [...getRegistry().values()];
108
+ }
109
+ /** 按领域列出诊断码 */
110
+ export function listDiagnosticsByArea(area) {
111
+ return [...getRegistry().values()].filter((d) => d.area === area);
112
+ }
113
+ /** 按 severity 列出诊断码 */
114
+ export function listDiagnosticsBySeverity(severity) {
115
+ return [...getRegistry().values()].filter((d) => d.severity === severity);
116
+ }
117
+ /** 注册新诊断码(运行时) */
118
+ export function registerDiagnostic(entry) {
119
+ const registry = getRegistry();
120
+ if (registry.has(entry.code)) {
121
+ return { success: false, error: `诊断码 ${entry.code} 已存在` };
122
+ }
123
+ if (!/^SF-[A-Z]+-\d{4}$/.test(entry.code)) {
124
+ return { success: false, error: `诊断码格式错误: ${entry.code},必须为 SF-{AREA}-{NNNN}` };
125
+ }
126
+ if (!entry.title_zh || !entry.user_message_zh || !entry.recovery_hint_zh) {
127
+ return { success: false, error: "诊断码必须有 title_zh、user_message_zh、recovery_hint_zh" };
128
+ }
129
+ registry.set(entry.code, { ...entry });
130
+ return { success: true };
131
+ }
132
+ /** 创建诊断事件 */
133
+ export function createDiagnosticEvent(code, context, contractId, taskId) {
134
+ const entry = getRegistry().get(code);
135
+ if (!entry)
136
+ return null;
137
+ if (entry.status === "deprecated" || entry.status === "removed")
138
+ return null;
139
+ return {
140
+ code,
141
+ occurred_at: new Date().toISOString(),
142
+ context: context ?? {},
143
+ user_visible_message: entry.user_message_zh,
144
+ contract_id: contractId,
145
+ task_id: taskId,
146
+ };
147
+ }
148
+ /** 验证所有 blocking/critical 事件必须有诊断码 */
149
+ export function validateDiagnosticCoverage(eventSeverities) {
150
+ const errors = [];
151
+ for (const event of eventSeverities) {
152
+ if ((event.severity === "blocking" || event.severity === "critical") && !event.has_code) {
153
+ errors.push({
154
+ severity: event.severity,
155
+ error: `${event.severity} 事件缺少诊断码`,
156
+ });
157
+ }
158
+ }
159
+ return errors;
160
+ }
161
+ /** 重置注册表(测试用) */
162
+ export function resetDiagnosticRegistry() {
163
+ runtimeDiagnostics = null;
164
+ }
165
+ /** 获取诊断码统计 */
166
+ export function getDiagnosticStats() {
167
+ const entries = [...getRegistry().values()];
168
+ const by_area = {};
169
+ const by_severity = {};
170
+ for (const e of entries) {
171
+ by_area[e.area] = (by_area[e.area] ?? 0) + 1;
172
+ by_severity[e.severity] = (by_severity[e.severity] ?? 0) + 1;
173
+ }
174
+ return { total: entries.length, by_area, by_severity };
175
+ }
176
+ //# sourceMappingURL=diagnostic_registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic_registry.js","sourceRoot":"","sources":["../../src/engine/diagnostic_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0CH,MAAM,mBAAmB,GAAmC;IAC1D,WAAW;IACX,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC5E,QAAQ,EAAE,4BAA4B;QACtC,eAAe,EAAE,+BAA+B;QAChD,gBAAgB,EAAE,qBAAqB;QACvC,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC9E,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC5E,QAAQ,EAAE,6BAA6B;QACvC,eAAe,EAAE,0BAA0B;QAC3C,gBAAgB,EAAE,mBAAmB;QACrC,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC9E,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC5E,QAAQ,EAAE,oCAAoC;QAC9C,eAAe,EAAE,oBAAoB;QACrC,gBAAgB,EAAE,YAAY;QAC9B,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC9E,WAAW;IACX,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC5E,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,uBAAuB;QACxC,gBAAgB,EAAE,wBAAwB;QAC1C,eAAe,EAAE,0BAA0B,EAAE,aAAa,EAAE,CAAC,uBAAuB,CAAC,EAAE;IACzF,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC5E,QAAQ,EAAE,yBAAyB;QACnC,eAAe,EAAE,kDAAkD;QACnE,gBAAgB,EAAE,iBAAiB;QACnC,eAAe,EAAE,0BAA0B,EAAE,aAAa,EAAE,CAAC,uBAAuB,CAAC,EAAE;IACzF,YAAY;IACZ,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC9E,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,6BAA6B;QAC9C,gBAAgB,EAAE,eAAe;QACjC,eAAe,EAAE,8BAA8B,EAAE,aAAa,EAAE,CAAC,yBAAyB,CAAC,EAAE;IAC/F,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC9E,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,gBAAgB;QACjC,gBAAgB,EAAE,mBAAmB;QACrC,eAAe,EAAE,2BAA2B,EAAE,aAAa,EAAE,CAAC,sBAAsB,CAAC,EAAE;IACzF,aAAa;IACb,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAChF,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,oBAAoB;QACrC,gBAAgB,EAAE,mBAAmB;QACrC,eAAe,EAAE,wBAAwB,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE;IACnF,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;QAC/E,QAAQ,EAAE,WAAW;QACrB,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,oBAAoB;QACtC,eAAe,EAAE,wBAAwB,EAAE,aAAa,EAAE,CAAC,oBAAoB,CAAC,EAAE;IACpF,aAAa;IACb,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;QAC/E,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,qBAAqB;QACvC,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,eAAe,CAAC,EAAE;IAC3E,eAAe;IACf,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QACpF,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,0BAA0B;QAC3C,gBAAgB,EAAE,oBAAoB;QACtC,eAAe,EAAE,wBAAwB,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE;IACnF,aAAa;IACb,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;QAC/E,QAAQ,EAAE,sBAAsB;QAChC,eAAe,EAAE,iCAAiC;QAClD,gBAAgB,EAAE,iBAAiB;QACnC,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC,gBAAgB,CAAC,EAAE;IAC7E,cAAc;IACd,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAClF,QAAQ,EAAE,cAAc;QACxB,eAAe,EAAE,yBAAyB;QAC1C,gBAAgB,EAAE,kBAAkB;QACpC,eAAe,EAAE,0BAA0B,EAAE,aAAa,EAAE,CAAC,qBAAqB,CAAC,EAAE;IACvF,aAAa;IACb,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAChF,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,qBAAqB;QACvC,eAAe,EAAE,gCAAgC,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE;CACpF,CAAC;AAEF,IAAI,kBAAkB,GAA4C,IAAI,CAAC;AAEvE,SAAS,WAAW;IAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;YACxC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,cAAc;AACd,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,eAAe;AACf,MAAM,UAAU,qBAAqB,CAAC,IAAoB;IACxD,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,yBAAyB,CAAC,QAA4B;IACpE,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,KAAK,CAAC,IAAI,uBAAuB,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;IACvF,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,aAAa;AACb,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAAiC,EACjC,UAAmB,EACnB,MAAe;IAEf,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,oBAAoB,EAAE,KAAK,CAAC,eAAe;QAC3C,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,0BAA0B,CAAC,eAA2E;IACpH,MAAM,MAAM,GAA2D,EAAE,CAAC;IAC1E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,UAAU;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,uBAAuB;IACrC,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,cAAc;AACd,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff_ownership_store.d.ts","sourceRoot":"","sources":["../../src/engine/diff_ownership_store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,EAAE,aAAa,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAmCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM;IAO5B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,OAAO;IAOf;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAcpE;;;;OAIG;IACH,wBAAwB,CACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,mBAAmB;IA+EtB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAa3D;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE;IA8B3D;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAM5C;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IAIlE;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B,KAAK,IAAI,IAAI;CAKd"}
1
+ {"version":3,"file":"diff_ownership_store.d.ts","sourceRoot":"","sources":["../../src/engine/diff_ownership_store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,EAAE,aAAa,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAmCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM;IAM5B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,OAAO;IAOf;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAcpE;;;;OAIG;IACH,wBAAwB,CACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,mBAAmB;IA+EtB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAa3D;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE;IA8B3D;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAM5C;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IAIlE;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B,KAAK,IAAI,IAAI;CAKd"}