soloforge 1.3.0 → 1.3.2

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 (165) hide show
  1. package/README.md +15 -2
  2. package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
  3. package/dist/adapters/claude_code/claude_md.js +4 -0
  4. package/dist/adapters/claude_code/claude_md.js.map +1 -1
  5. package/dist/adapters/claude_code/tools.d.ts +36 -9
  6. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  7. package/dist/adapters/claude_code/tools.js +828 -19
  8. package/dist/adapters/claude_code/tools.js.map +1 -1
  9. package/dist/adapters/shared/workflow_template.d.ts +26 -0
  10. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  11. package/dist/adapters/shared/workflow_template.js +139 -40
  12. package/dist/adapters/shared/workflow_template.js.map +1 -1
  13. package/dist/bin/soloforge.d.ts.map +1 -1
  14. package/dist/bin/soloforge.js +220 -45
  15. package/dist/bin/soloforge.js.map +1 -1
  16. package/dist/engine/architecture_decision_workshop.d.ts +58 -0
  17. package/dist/engine/architecture_decision_workshop.d.ts.map +1 -0
  18. package/dist/engine/architecture_decision_workshop.js +118 -0
  19. package/dist/engine/architecture_decision_workshop.js.map +1 -0
  20. package/dist/engine/asset_manifest.d.ts +7 -1
  21. package/dist/engine/asset_manifest.d.ts.map +1 -1
  22. package/dist/engine/asset_manifest.js +36 -15
  23. package/dist/engine/asset_manifest.js.map +1 -1
  24. package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
  25. package/dist/engine/consumable_asset_registry.js +90 -1
  26. package/dist/engine/consumable_asset_registry.js.map +1 -1
  27. package/dist/engine/consumption_trace_store.d.ts +8 -8
  28. package/dist/engine/consumption_trace_store.d.ts.map +1 -1
  29. package/dist/engine/consumption_trace_store.js +11 -7
  30. package/dist/engine/consumption_trace_store.js.map +1 -1
  31. package/dist/engine/decision_workshop.d.ts +160 -0
  32. package/dist/engine/decision_workshop.d.ts.map +1 -0
  33. package/dist/engine/decision_workshop.js +279 -0
  34. package/dist/engine/decision_workshop.js.map +1 -0
  35. package/dist/engine/design_artifact_pack.d.ts +44 -0
  36. package/dist/engine/design_artifact_pack.d.ts.map +1 -0
  37. package/dist/engine/design_artifact_pack.js +167 -0
  38. package/dist/engine/design_artifact_pack.js.map +1 -0
  39. package/dist/engine/dual_layer_mechanism_registry.d.ts.map +1 -1
  40. package/dist/engine/dual_layer_mechanism_registry.js +294 -0
  41. package/dist/engine/dual_layer_mechanism_registry.js.map +1 -1
  42. package/dist/engine/evidence_grounding_contract.d.ts +137 -0
  43. package/dist/engine/evidence_grounding_contract.d.ts.map +1 -0
  44. package/dist/engine/evidence_grounding_contract.js +410 -0
  45. package/dist/engine/evidence_grounding_contract.js.map +1 -0
  46. package/dist/engine/explicit_asset_registry.d.ts +30 -0
  47. package/dist/engine/explicit_asset_registry.d.ts.map +1 -0
  48. package/dist/engine/explicit_asset_registry.js +3508 -0
  49. package/dist/engine/explicit_asset_registry.js.map +1 -0
  50. package/dist/engine/implementation_roadmap_registry.d.ts +2 -2
  51. package/dist/engine/implementation_roadmap_registry.d.ts.map +1 -1
  52. package/dist/engine/implementation_roadmap_registry.js +163 -6
  53. package/dist/engine/implementation_roadmap_registry.js.map +1 -1
  54. package/dist/engine/instruction_contract.d.ts +8 -1
  55. package/dist/engine/instruction_contract.d.ts.map +1 -1
  56. package/dist/engine/instruction_contract.js +63 -1
  57. package/dist/engine/instruction_contract.js.map +1 -1
  58. package/dist/engine/intent_expander.d.ts.map +1 -1
  59. package/dist/engine/intent_expander.js +60 -2
  60. package/dist/engine/intent_expander.js.map +1 -1
  61. package/dist/engine/intent_router.d.ts +1 -1
  62. package/dist/engine/intent_router.d.ts.map +1 -1
  63. package/dist/engine/intent_router.js +2 -1
  64. package/dist/engine/intent_router.js.map +1 -1
  65. package/dist/engine/knowledge_injection_boundary.d.ts +3 -0
  66. package/dist/engine/knowledge_injection_boundary.d.ts.map +1 -1
  67. package/dist/engine/knowledge_injection_boundary.js +48 -5
  68. package/dist/engine/knowledge_injection_boundary.js.map +1 -1
  69. package/dist/engine/mechanism_contract_registry.d.ts +1 -1
  70. package/dist/engine/mechanism_contract_registry.d.ts.map +1 -1
  71. package/dist/engine/mechanism_contract_registry.js +138 -0
  72. package/dist/engine/mechanism_contract_registry.js.map +1 -1
  73. package/dist/engine/observed_consumption.d.ts +54 -0
  74. package/dist/engine/observed_consumption.d.ts.map +1 -0
  75. package/dist/engine/observed_consumption.js +377 -0
  76. package/dist/engine/observed_consumption.js.map +1 -0
  77. package/dist/engine/platform_context.d.ts.map +1 -1
  78. package/dist/engine/platform_context.js +6 -2
  79. package/dist/engine/platform_context.js.map +1 -1
  80. package/dist/engine/release_gate_scenario_registry.d.ts +16 -1
  81. package/dist/engine/release_gate_scenario_registry.d.ts.map +1 -1
  82. package/dist/engine/release_gate_scenario_registry.js +205 -2
  83. package/dist/engine/release_gate_scenario_registry.js.map +1 -1
  84. package/dist/engine/release_issue_scenario_registry.d.ts +64 -0
  85. package/dist/engine/release_issue_scenario_registry.d.ts.map +1 -0
  86. package/dist/engine/release_issue_scenario_registry.js +1349 -0
  87. package/dist/engine/release_issue_scenario_registry.js.map +1 -0
  88. package/dist/engine/release_readiness_gate.d.ts +8 -0
  89. package/dist/engine/release_readiness_gate.d.ts.map +1 -1
  90. package/dist/engine/release_readiness_gate.js +1144 -6
  91. package/dist/engine/release_readiness_gate.js.map +1 -1
  92. package/dist/engine/release_tool_harness.d.ts +71 -0
  93. package/dist/engine/release_tool_harness.d.ts.map +1 -0
  94. package/dist/engine/release_tool_harness.js +161 -0
  95. package/dist/engine/release_tool_harness.js.map +1 -0
  96. package/dist/engine/scaffolder.d.ts.map +1 -1
  97. package/dist/engine/scaffolder.js +144 -7
  98. package/dist/engine/scaffolder.js.map +1 -1
  99. package/dist/engine/standard_asset_contract.d.ts +75 -0
  100. package/dist/engine/standard_asset_contract.d.ts.map +1 -0
  101. package/dist/engine/standard_asset_contract.js +388 -0
  102. package/dist/engine/standard_asset_contract.js.map +1 -0
  103. package/dist/engine/standard_asset_coverage.d.ts +45 -0
  104. package/dist/engine/standard_asset_coverage.d.ts.map +1 -0
  105. package/dist/engine/standard_asset_coverage.js +220 -0
  106. package/dist/engine/standard_asset_coverage.js.map +1 -0
  107. package/dist/engine/task_context.d.ts +9 -2
  108. package/dist/engine/task_context.d.ts.map +1 -1
  109. package/dist/engine/task_context.js +49 -12
  110. package/dist/engine/task_context.js.map +1 -1
  111. package/dist/engine/template_asset_contract_registry.d.ts +162 -0
  112. package/dist/engine/template_asset_contract_registry.d.ts.map +1 -0
  113. package/dist/engine/template_asset_contract_registry.js +598 -0
  114. package/dist/engine/template_asset_contract_registry.js.map +1 -0
  115. package/dist/engine/template_asset_visibility.d.ts +109 -0
  116. package/dist/engine/template_asset_visibility.d.ts.map +1 -0
  117. package/dist/engine/template_asset_visibility.js +321 -0
  118. package/dist/engine/template_asset_visibility.js.map +1 -0
  119. package/dist/engine/template_init_sync.d.ts +68 -0
  120. package/dist/engine/template_init_sync.d.ts.map +1 -0
  121. package/dist/engine/template_init_sync.js +218 -0
  122. package/dist/engine/template_init_sync.js.map +1 -0
  123. package/dist/engine/template_manifest_io.d.ts +10 -0
  124. package/dist/engine/template_manifest_io.d.ts.map +1 -1
  125. package/dist/engine/template_manifest_io.js +63 -30
  126. package/dist/engine/template_manifest_io.js.map +1 -1
  127. package/dist/engine/template_mechanism_auditor.d.ts +3 -1
  128. package/dist/engine/template_mechanism_auditor.d.ts.map +1 -1
  129. package/dist/engine/template_mechanism_auditor.js +27 -24
  130. package/dist/engine/template_mechanism_auditor.js.map +1 -1
  131. package/dist/engine/tool_invocation_contract_registry.d.ts.map +1 -1
  132. package/dist/engine/tool_invocation_contract_registry.js +11 -1
  133. package/dist/engine/tool_invocation_contract_registry.js.map +1 -1
  134. package/dist/engine/verifier.d.ts.map +1 -1
  135. package/dist/engine/verifier.js +3 -40
  136. package/dist/engine/verifier.js.map +1 -1
  137. package/dist/engine/workflow_contract_registry.d.ts.map +1 -1
  138. package/dist/engine/workflow_contract_registry.js +4 -3
  139. package/dist/engine/workflow_contract_registry.js.map +1 -1
  140. package/dist/knowledge/index_manager.d.ts +20 -0
  141. package/dist/knowledge/index_manager.d.ts.map +1 -1
  142. package/dist/knowledge/index_manager.js +234 -3
  143. package/dist/knowledge/index_manager.js.map +1 -1
  144. package/dist/types.d.ts +47 -0
  145. package/dist/types.d.ts.map +1 -1
  146. package/package.json +5 -4
  147. package/templates/knowledge/acceptance_templates/API/346/216/245/345/217/243/350/247/204/346/240/274/346/226/207/346/241/243/346/250/241/347/211/210.md +74 -0
  148. package/templates/knowledge/acceptance_templates//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/346/226/207/346/241/243/346/250/241/347/211/210.md +59 -0
  149. package/templates/knowledge/acceptance_templates//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +27 -7
  150. package/templates/knowledge/acceptance_templates//350/256/276/350/256/241/344/270/200/350/207/264/346/200/247/351/252/214/346/224/266/346/212/245/345/221/212/346/250/241/347/211/210.md +47 -0
  151. package/templates/knowledge/procedures//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/345/267/245/344/275/234/346/265/201.md +51 -0
  152. package/templates/knowledge/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +16 -7
  153. package/templates/knowledge/procedures//350/256/276/350/256/241/344/272/247/347/211/251/347/224/237/346/210/220/344/270/216/345/244/215/351/252/214/345/267/245/344/275/234/346/265/201.md +45 -0
  154. package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/346/250/241/346/235/277/345/214/205/350/247/204/345/210/231.md +10 -0
  155. package/templates/knowledge/rules//346/211/251/345/261/225/347/224/237/345/221/275/345/221/250/346/234/237/350/247/204/345/210/231.md +10 -0
  156. package/templates/knowledge/rules//346/226/275/345/267/245/346/214/207/344/273/244/345/245/221/347/272/246/350/247/204/345/210/231.md +33 -4
  157. package/templates/knowledge/rules//346/236/266/346/236/204/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +49 -0
  158. package/templates/knowledge/rules//346/240/207/345/207/206/350/265/204/344/272/247/350/246/206/347/233/226/350/247/204/345/210/231.md +29 -0
  159. package/templates/knowledge/rules//346/250/241/346/235/277/350/265/204/344/272/247/345/217/257/350/247/201/346/200/247/350/247/204/345/210/231.md +27 -0
  160. package/templates/knowledge/rules//347/224/250/346/210/267/345/217/215/351/246/210/345/245/221/347/272/246/350/247/204/345/210/231.md +62 -1
  161. package/templates/knowledge/rules//350/256/276/350/256/241/344/272/247/347/211/251/345/214/205/350/247/204/345/210/231.md +55 -0
  162. package/templates/knowledge/rules//350/257/201/346/215/256/351/251/261/345/212/250/344/270/216/345/217/215/345/271/273/350/247/211/350/247/204/345/210/231.md +75 -0
  163. package/templates/knowledge/rules//350/267/250/345/271/263/345/217/260/350/267/257/345/276/204/345/256/211/345/205/250/350/247/204/345/210/231.md +10 -0
  164. package/templates/knowledge/rules//351/200/232/347/224/250/345/206/263/347/255/226/347/240/224/350/256/250/350/247/204/345/210/231.md +30 -0
  165. package/templates/knowledge/rules//351/252/214/346/224/266/346/250/241/346/235/277/350/276/223/345/207/272/345/245/221/347/272/246/350/247/204/345/210/231.md +50 -0
@@ -0,0 +1,160 @@
1
+ /**
2
+ * 通用决策研讨机制 — 覆盖所有高影响/不确定任务的决策前置确认。
3
+ *
4
+ * 问题六十一要求:
5
+ * - DecisionPackRegistry 支持独立、可组合的决策包
6
+ * - business_process 和 delivery_validation 可独立触发
7
+ * - 同一任务可组合多个 pack
8
+ * - 架构决策六域作为 builtin 子包
9
+ */
10
+ import { type ArchitectureDecisionWorkshopContract, type ArchitectureDecisionDomain, type ArchitectureDecisionStatus, type ArchitectureProjectContext } from "./architecture_decision_workshop.js";
11
+ export declare const DECISION_PACKS: {
12
+ readonly architecture: {
13
+ readonly pack_id: "architecture";
14
+ readonly domains: string[];
15
+ readonly trigger_patterns: readonly [RegExp];
16
+ readonly trigger_intent: readonly ["architecture_design"];
17
+ readonly reason: "架构设计任务需要六域决策研讨";
18
+ };
19
+ readonly technology_selection: {
20
+ readonly pack_id: "technology_selection";
21
+ readonly domains: readonly ["technology_selection"];
22
+ readonly trigger_patterns: readonly [RegExp];
23
+ readonly trigger_intent: readonly [];
24
+ readonly reason: "技术选型需要决策研讨与用户确认";
25
+ };
26
+ readonly data_migration: {
27
+ readonly pack_id: "data_migration";
28
+ readonly domains: readonly ["data_migration"];
29
+ readonly trigger_patterns: readonly [RegExp];
30
+ readonly trigger_intent: readonly [];
31
+ readonly reason: "数据迁移需要决策研讨";
32
+ };
33
+ readonly security_policy: {
34
+ readonly pack_id: "security_policy";
35
+ readonly domains: readonly ["security_policy"];
36
+ readonly trigger_patterns: readonly [RegExp];
37
+ readonly trigger_intent: readonly [];
38
+ readonly reason: "安全策略变更需要决策研讨";
39
+ };
40
+ readonly deployment_infrastructure: {
41
+ readonly pack_id: "deployment_infrastructure";
42
+ readonly domains: readonly ["deployment_infrastructure"];
43
+ readonly trigger_patterns: readonly [RegExp];
44
+ readonly trigger_intent: readonly [];
45
+ readonly reason: "部署基础设施变更需要决策研讨";
46
+ };
47
+ readonly product_scope: {
48
+ readonly pack_id: "product_scope";
49
+ readonly domains: readonly ["product_scope"];
50
+ readonly trigger_patterns: readonly [RegExp];
51
+ readonly trigger_intent: readonly [];
52
+ readonly reason: "产品范围变更需要决策研讨";
53
+ };
54
+ readonly business_process: {
55
+ readonly pack_id: "business_process";
56
+ readonly domains: readonly ["business_process"];
57
+ readonly trigger_patterns: readonly [RegExp];
58
+ readonly trigger_intent: readonly [];
59
+ readonly reason: "业务流程变更需要决策研讨";
60
+ };
61
+ readonly delivery_validation: {
62
+ readonly pack_id: "delivery_validation";
63
+ readonly domains: readonly ["delivery_validation"];
64
+ readonly trigger_patterns: readonly [RegExp];
65
+ readonly trigger_intent: readonly [];
66
+ readonly reason: "交付验证策略需要决策研讨";
67
+ };
68
+ readonly refactor_migration: {
69
+ readonly pack_id: "refactor_migration";
70
+ readonly domains: readonly ["refactor_migration"];
71
+ readonly trigger_patterns: readonly [RegExp];
72
+ readonly trigger_intent: readonly [];
73
+ readonly reason: "重构/迁移需要决策研讨";
74
+ };
75
+ readonly third_party_integration: {
76
+ readonly pack_id: "third_party_integration";
77
+ readonly domains: readonly ["third_party_integration", "security_policy"];
78
+ readonly trigger_patterns: readonly [RegExp];
79
+ readonly trigger_intent: readonly [];
80
+ readonly reason: "第三方集成需要决策研讨";
81
+ };
82
+ };
83
+ export type DecisionPackId = keyof typeof DECISION_PACKS;
84
+ export declare const EXTENDED_DECISION_DOMAINS: readonly ["technology_selection", "data_migration", "security_policy", "deployment_infrastructure", "product_scope", "business_process", "delivery_validation", "refactor_migration", "third_party_integration"];
85
+ export type ExtendedDecisionDomain = typeof EXTENDED_DECISION_DOMAINS[number];
86
+ export type DecisionDomain = ArchitectureDecisionDomain | ExtendedDecisionDomain;
87
+ export interface DecisionRecord {
88
+ decision_id: string;
89
+ domain: DecisionDomain;
90
+ status: ArchitectureDecisionStatus;
91
+ required: boolean;
92
+ facts_and_constraints: string[];
93
+ evidence_refs: string[];
94
+ options: Array<{
95
+ option_id: string;
96
+ summary: string;
97
+ benefits: string[];
98
+ risks: string[];
99
+ rejected_reason?: string;
100
+ }>;
101
+ recommendation?: {
102
+ option_id: string;
103
+ rationale: string[];
104
+ };
105
+ user_confirmation_ref?: string;
106
+ not_applicable_reason?: string;
107
+ deferred_impact?: string[];
108
+ }
109
+ export interface DecisionWorkshopContract {
110
+ task_id: string;
111
+ /** 已激活的决策包列表(可组合多个) */
112
+ activated_packs: DecisionPackId[];
113
+ status: "draft" | "awaiting_confirmation" | "confirmed" | "rework_required" | "blocked";
114
+ project_context: ArchitectureProjectContext;
115
+ /** 架构子包 — 当 activated_packs 包含 architecture 时使用 */
116
+ architecture_subpack?: ArchitectureDecisionWorkshopContract;
117
+ /** 扩展域记录(所有激活包的域合并) */
118
+ extended_domains: Partial<Record<ExtendedDecisionDomain, DecisionRecord>>;
119
+ /** 触发原因 */
120
+ trigger_reason: string;
121
+ prerequisite_evidence_refs: string[];
122
+ generation_allowed: boolean;
123
+ blocking_findings: string[];
124
+ }
125
+ /** @deprecated 使用 activated_packs 替代 */
126
+ export type DecisionWorkshopType = "architecture" | "technology_selection" | "data_migration" | "security_policy" | "deployment" | "product_scope" | "refactor" | "third_party_integration" | "multi_domain";
127
+ export interface DecisionWorkshopGateResult {
128
+ allowed: boolean;
129
+ status: DecisionWorkshopContract["status"];
130
+ blocking_findings: string[];
131
+ missing_domains: string[];
132
+ next_domain?: string;
133
+ }
134
+ export declare function matchDecisionPacks(params: {
135
+ workflow_intent?: string;
136
+ intent?: string;
137
+ route_decision?: string;
138
+ task_type?: string;
139
+ }): {
140
+ packs: DecisionPackId[];
141
+ reasons: string[];
142
+ };
143
+ /**
144
+ * 旧接口兼容 — 返回第一个匹配的包类型。
145
+ * 新代码应使用 matchDecisionPacks 获取所有匹配包。
146
+ */
147
+ export declare function requiresDecisionWorkshop(params: {
148
+ workflow_intent?: string;
149
+ intent?: string;
150
+ route_decision?: string;
151
+ task_type?: string;
152
+ }): {
153
+ required: boolean;
154
+ workshop_type: DecisionWorkshopType;
155
+ reason: string;
156
+ };
157
+ export declare function createDecisionWorkshop(taskId: string, activatedPacks: DecisionPackId | DecisionPackId[], projectContext?: ArchitectureProjectContext, triggerReason?: string): DecisionWorkshopContract;
158
+ export declare function evaluateDecisionWorkshop(contract: DecisionWorkshopContract | undefined): DecisionWorkshopGateResult;
159
+ export declare function applyDecisionWorkshopGate(contract: DecisionWorkshopContract | undefined): DecisionWorkshopContract | undefined;
160
+ //# sourceMappingURL=decision_workshop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision_workshop.d.ts","sourceRoot":"","sources":["../../src/engine/decision_workshop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ /**
2
+ * 通用决策研讨机制 — 覆盖所有高影响/不确定任务的决策前置确认。
3
+ *
4
+ * 问题六十一要求:
5
+ * - DecisionPackRegistry 支持独立、可组合的决策包
6
+ * - business_process 和 delivery_validation 可独立触发
7
+ * - 同一任务可组合多个 pack
8
+ * - 架构决策六域作为 builtin 子包
9
+ */
10
+ import { evaluateArchitectureDecisionWorkshop, } from "./architecture_decision_workshop.js";
11
+ // ── 决策包定义 ──
12
+ export const DECISION_PACKS = {
13
+ architecture: {
14
+ pack_id: "architecture",
15
+ domains: [], // 架构使用子包六域
16
+ trigger_patterns: [
17
+ /架构设计|总体架构|技术架构|系统设计|architecture\s+design/i,
18
+ ],
19
+ trigger_intent: ["architecture_design"],
20
+ reason: "架构设计任务需要六域决策研讨",
21
+ },
22
+ technology_selection: {
23
+ pack_id: "technology_selection",
24
+ domains: ["technology_selection"],
25
+ trigger_patterns: [
26
+ /技术选型|技术栈选择|技术方案|technology\s+selection|技术决策/i,
27
+ ],
28
+ trigger_intent: [],
29
+ reason: "技术选型需要决策研讨与用户确认",
30
+ },
31
+ data_migration: {
32
+ pack_id: "data_migration",
33
+ domains: ["data_migration"],
34
+ trigger_patterns: [
35
+ /数据迁移|数据库迁移|data\s+migration|schema\s+migration/i,
36
+ ],
37
+ trigger_intent: [],
38
+ reason: "数据迁移需要决策研讨",
39
+ },
40
+ security_policy: {
41
+ pack_id: "security_policy",
42
+ domains: ["security_policy"],
43
+ trigger_patterns: [
44
+ /安全策略|认证授权|权限模型|security\s+policy|auth.*strategy/i,
45
+ ],
46
+ trigger_intent: [],
47
+ reason: "安全策略变更需要决策研讨",
48
+ },
49
+ deployment_infrastructure: {
50
+ pack_id: "deployment_infrastructure",
51
+ domains: ["deployment_infrastructure"],
52
+ trigger_patterns: [
53
+ /部署方案|基础设施|容器化|CI\/CD|deployment|infrastructure/i,
54
+ ],
55
+ trigger_intent: [],
56
+ reason: "部署基础设施变更需要决策研讨",
57
+ },
58
+ product_scope: {
59
+ pack_id: "product_scope",
60
+ domains: ["product_scope"],
61
+ trigger_patterns: [
62
+ /产品范围|需求边界|功能范围|product\s+scope/i,
63
+ ],
64
+ trigger_intent: [],
65
+ reason: "产品范围变更需要决策研讨",
66
+ },
67
+ business_process: {
68
+ pack_id: "business_process",
69
+ domains: ["business_process"],
70
+ trigger_patterns: [
71
+ /业务流程|流程变更|业务规则|business\s+process|流程重构/i,
72
+ ],
73
+ trigger_intent: [],
74
+ reason: "业务流程变更需要决策研讨",
75
+ },
76
+ delivery_validation: {
77
+ pack_id: "delivery_validation",
78
+ domains: ["delivery_validation"],
79
+ trigger_patterns: [
80
+ /交付验证|验收标准|发布策略|delivery\s+validation|release\s+strategy/i,
81
+ ],
82
+ trigger_intent: [],
83
+ reason: "交付验证策略需要决策研讨",
84
+ },
85
+ refactor_migration: {
86
+ pack_id: "refactor_migration",
87
+ domains: ["refactor_migration"],
88
+ trigger_patterns: [
89
+ /重构|迁移方案|refactor|rewrite|migration\s+plan/i,
90
+ ],
91
+ trigger_intent: [],
92
+ reason: "重构/迁移需要决策研讨",
93
+ },
94
+ third_party_integration: {
95
+ pack_id: "third_party_integration",
96
+ domains: ["third_party_integration", "security_policy"],
97
+ trigger_patterns: [
98
+ /第三方集成|外部服务|SDK.*集成|third.?party.*integration/i,
99
+ ],
100
+ trigger_intent: [],
101
+ reason: "第三方集成需要决策研讨",
102
+ },
103
+ };
104
+ export const EXTENDED_DECISION_DOMAINS = [
105
+ "technology_selection",
106
+ "data_migration",
107
+ "security_policy",
108
+ "deployment_infrastructure",
109
+ "product_scope",
110
+ "business_process",
111
+ "delivery_validation",
112
+ "refactor_migration",
113
+ "third_party_integration",
114
+ ];
115
+ // ── 触发条件 — 返回所有匹配的决策包(可组合) ──
116
+ export function matchDecisionPacks(params) {
117
+ const { workflow_intent, intent } = params;
118
+ const intentStr = `${workflow_intent ?? ""} ${intent ?? ""}`;
119
+ const matchedPacks = [];
120
+ const reasons = [];
121
+ for (const [packId, pack] of Object.entries(DECISION_PACKS)) {
122
+ const intentMatch = pack.trigger_patterns.some((p) => p.test(intentStr));
123
+ const workflowMatch = pack.trigger_intent.some((wi) => wi === workflow_intent);
124
+ if (intentMatch || workflowMatch) {
125
+ matchedPacks.push(packId);
126
+ reasons.push(pack.reason);
127
+ }
128
+ }
129
+ return { packs: matchedPacks, reasons };
130
+ }
131
+ /**
132
+ * 旧接口兼容 — 返回第一个匹配的包类型。
133
+ * 新代码应使用 matchDecisionPacks 获取所有匹配包。
134
+ */
135
+ export function requiresDecisionWorkshop(params) {
136
+ const { packs, reasons } = matchDecisionPacks(params);
137
+ if (packs.length === 0) {
138
+ return { required: false, workshop_type: "architecture", reason: "" };
139
+ }
140
+ // 将第一个匹配的 pack 映射为旧 workshop_type
141
+ const packIdToType = {
142
+ architecture: "architecture",
143
+ technology_selection: "technology_selection",
144
+ data_migration: "data_migration",
145
+ security_policy: "security_policy",
146
+ deployment_infrastructure: "deployment",
147
+ product_scope: "product_scope",
148
+ business_process: "multi_domain",
149
+ delivery_validation: "multi_domain",
150
+ refactor_migration: "refactor",
151
+ third_party_integration: "third_party_integration",
152
+ };
153
+ const firstPack = packs[0];
154
+ return {
155
+ required: true,
156
+ workshop_type: packIdToType[firstPack] ?? "multi_domain",
157
+ reason: reasons.join(";"),
158
+ };
159
+ }
160
+ // ── 创建研讨合同(支持组合包) ──
161
+ export function createDecisionWorkshop(taskId, activatedPacks, projectContext = "new_system", triggerReason = "") {
162
+ const packs = Array.isArray(activatedPacks) ? activatedPacks : [activatedPacks];
163
+ const extendedDomains = {};
164
+ // 合并所有激活包的域
165
+ for (const packId of packs) {
166
+ const pack = DECISION_PACKS[packId];
167
+ if (!pack)
168
+ continue;
169
+ for (const domain of pack.domains) {
170
+ if (!extendedDomains[domain]) {
171
+ extendedDomains[domain] = {
172
+ decision_id: `${taskId}-${domain}`,
173
+ domain: domain,
174
+ status: "not_started",
175
+ required: true,
176
+ facts_and_constraints: [],
177
+ evidence_refs: [],
178
+ options: [],
179
+ };
180
+ }
181
+ }
182
+ }
183
+ return {
184
+ task_id: taskId,
185
+ activated_packs: packs,
186
+ status: "draft",
187
+ project_context: projectContext,
188
+ extended_domains: extendedDomains,
189
+ trigger_reason: triggerReason,
190
+ prerequisite_evidence_refs: [],
191
+ generation_allowed: false,
192
+ blocking_findings: [],
193
+ };
194
+ }
195
+ // ── 收集所有必须域 ──
196
+ function collectRequiredDomains(packs) {
197
+ const domains = new Set();
198
+ for (const packId of packs) {
199
+ const pack = DECISION_PACKS[packId];
200
+ if (!pack)
201
+ continue;
202
+ for (const d of pack.domains) {
203
+ domains.add(d);
204
+ }
205
+ }
206
+ return [...domains];
207
+ }
208
+ // ── 评估研讨门禁 ──
209
+ export function evaluateDecisionWorkshop(contract) {
210
+ if (!contract) {
211
+ return {
212
+ allowed: false,
213
+ status: "blocked",
214
+ blocking_findings: ["缺少决策研讨记录"],
215
+ missing_domains: [],
216
+ };
217
+ }
218
+ const findings = [...contract.blocking_findings];
219
+ const missingDomains = [];
220
+ // 现有系统必须提供前置证据
221
+ if (contract.project_context === "existing_system" && contract.prerequisite_evidence_refs.length === 0) {
222
+ findings.push("现有系统缺少现状分析和差距分析证据");
223
+ }
224
+ // 架构子包检查
225
+ if (contract.activated_packs.includes("architecture")) {
226
+ const archResult = evaluateArchitectureDecisionWorkshop(contract.architecture_subpack);
227
+ if (!archResult.allowed) {
228
+ findings.push(...archResult.blocking_findings);
229
+ missingDomains.push(...archResult.missing_domains);
230
+ }
231
+ }
232
+ // 所有激活包的域检查
233
+ const requiredDomains = collectRequiredDomains(contract.activated_packs);
234
+ for (const domain of requiredDomains) {
235
+ const record = contract.extended_domains[domain];
236
+ if (!record) {
237
+ missingDomains.push(domain);
238
+ findings.push(`缺少决策域记录: ${domain}`);
239
+ continue;
240
+ }
241
+ if (!isTerminalStatus(record.status)) {
242
+ missingDomains.push(domain);
243
+ findings.push(`决策域 ${domain} 尚未确认 (${record.status})`);
244
+ }
245
+ if (record.status === "confirmed" && !record.user_confirmation_ref) {
246
+ missingDomains.push(domain);
247
+ findings.push(`决策域 ${domain} 标记 confirmed 但缺少用户确认引用`);
248
+ }
249
+ if (record.status === "not_applicable_with_reason" && !record.not_applicable_reason) {
250
+ missingDomains.push(domain);
251
+ findings.push(`决策域 ${domain} 标记不适用但缺少理由`);
252
+ }
253
+ }
254
+ return {
255
+ allowed: findings.length === 0,
256
+ status: findings.length === 0 ? "confirmed" : "awaiting_confirmation",
257
+ blocking_findings: findings,
258
+ missing_domains: [...new Set(missingDomains)],
259
+ next_domain: missingDomains[0],
260
+ };
261
+ }
262
+ function isTerminalStatus(status) {
263
+ return status === "confirmed" ||
264
+ status === "not_applicable_with_reason" ||
265
+ status === "deferred_with_impact";
266
+ }
267
+ // ── 应用门禁结果 ──
268
+ export function applyDecisionWorkshopGate(contract) {
269
+ if (!contract)
270
+ return undefined;
271
+ const gate = evaluateDecisionWorkshop(contract);
272
+ return {
273
+ ...contract,
274
+ status: gate.status,
275
+ generation_allowed: gate.allowed,
276
+ blocking_findings: gate.blocking_findings,
277
+ };
278
+ }
279
+ //# sourceMappingURL=decision_workshop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision_workshop.js","sourceRoot":"","sources":["../../src/engine/decision_workshop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 设计产物包真实复验。
3
+ *
4
+ * 本模块读取用户项目中的真实设计资产,检查权威文件存在性、
5
+ * API 字段级合同、SQL 显著不可执行语法和跨文档关键冲突。
6
+ */
7
+ export type DesignArtifactPackStatus = "draft" | "awaiting_decisions" | "needs_revalidation" | "awaiting_upgrade_confirmation" | "verification_failed" | "confirmed" | "implementation_ready" | "superseded" | "blocked";
8
+ export interface DesignArtifactPaths {
9
+ decision_record: string;
10
+ architecture_document: string;
11
+ database_document: string;
12
+ api_document: string;
13
+ consistency_report: string;
14
+ openapi: string;
15
+ sql_roots: string[];
16
+ }
17
+ export interface DesignArtifactFinding {
18
+ code: string;
19
+ severity: "hard_fail" | "advisory";
20
+ file?: string;
21
+ message_zh: string;
22
+ }
23
+ export interface DesignArtifactPackContract {
24
+ task_id: string;
25
+ standard_version: string;
26
+ status: DesignArtifactPackStatus;
27
+ paths: DesignArtifactPaths;
28
+ baseline_hashes: Record<string, string>;
29
+ decision_workshop_ref?: string;
30
+ user_confirmation_ref?: string;
31
+ findings: DesignArtifactFinding[];
32
+ verified_at?: string;
33
+ }
34
+ export interface DesignArtifactVerificationResult {
35
+ passed: boolean;
36
+ status: DesignArtifactPackStatus;
37
+ findings: DesignArtifactFinding[];
38
+ checked_files: string[];
39
+ hashes: Record<string, string>;
40
+ }
41
+ export declare function defaultDesignArtifactPaths(): DesignArtifactPaths;
42
+ export declare function createDesignArtifactPack(taskId: string, paths?: Partial<DesignArtifactPaths>): DesignArtifactPackContract;
43
+ export declare function verifyDesignArtifactPack(rootDir: string, contract: DesignArtifactPackContract): DesignArtifactVerificationResult;
44
+ //# sourceMappingURL=design_artifact_pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design_artifact_pack.d.ts","sourceRoot":"","sources":["../../src/engine/design_artifact_pack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,MAAM,wBAAwB,GAChC,OAAO,GACP,oBAAoB,GACpB,oBAAoB,GACpB,+BAA+B,GAC/B,qBAAqB,GACrB,WAAW,GACX,sBAAsB,GACtB,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;IACjC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,0BAA0B,IAAI,mBAAmB,CAUhE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAAG,0BAA0B,CAS7H;AAsFD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,0BAA0B,GACnC,gCAAgC,CA6DlC"}