soloforge 1.1.35 → 1.1.37
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.
- package/dist/engine/audit/evolver.d.ts.map +1 -1
- package/dist/engine/audit/evolver.js +29 -2
- package/dist/engine/audit/evolver.js.map +1 -1
- package/dist/engine/contracts/architecture_decision_workshop.d.ts +6 -1
- package/dist/engine/contracts/architecture_decision_workshop.d.ts.map +1 -1
- package/dist/engine/contracts/architecture_decision_workshop.js +5 -1
- package/dist/engine/contracts/architecture_decision_workshop.js.map +1 -1
- package/dist/engine/knowledge/knowledge_injection_boundary.d.ts.map +1 -1
- package/dist/engine/knowledge/knowledge_injection_boundary.js +7 -3
- package/dist/engine/knowledge/knowledge_injection_boundary.js.map +1 -1
- package/dist/engine/pipeline/classifier.js +6 -4
- package/dist/engine/pipeline/classifier.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge.js +17 -8
- package/dist/engine/pipeline/intent_expander/knowledge.js.map +1 -1
- package/dist/engine/pipeline/intent_expander/templates.d.ts +1 -0
- package/dist/engine/pipeline/intent_expander/templates.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/templates.js +73 -0
- package/dist/engine/pipeline/intent_expander/templates.js.map +1 -1
- package/dist/engine/pipeline/intent_router.d.ts +22 -1
- package/dist/engine/pipeline/intent_router.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_router.js +130 -0
- package/dist/engine/pipeline/intent_router.js.map +1 -1
- package/dist/engine/pipeline/intent_signal_extractor.d.ts +2 -2
- package/dist/engine/pipeline/intent_signal_extractor.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_signal_extractor.js +77 -3
- package/dist/engine/pipeline/intent_signal_extractor.js.map +1 -1
- package/dist/engine/pipeline/task_context/manager.d.ts +39 -0
- package/dist/engine/pipeline/task_context/manager.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/manager.js +293 -109
- package/dist/engine/pipeline/task_context/manager.js.map +1 -1
- package/dist/engine/pipeline/task_context/manager_setters.d.ts +23 -1
- package/dist/engine/pipeline/task_context/manager_setters.d.ts.map +1 -1
- package/dist/engine/pipeline/task_context/manager_setters.js +237 -119
- package/dist/engine/pipeline/task_context/manager_setters.js.map +1 -1
- package/dist/engine/pipeline/task_stage_detector.d.ts.map +1 -1
- package/dist/engine/pipeline/task_stage_detector.js +13 -0
- package/dist/engine/pipeline/task_stage_detector.js.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map +1 -1
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js +84 -2
- package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.js.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/procedures_part2.d.ts.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/procedures_part2.js +17 -0
- package/dist/engine/templates/explicit_asset_registry/procedures_part2.js.map +1 -1
- package/dist/engine/workflow/legacy_type_migration.d.ts.map +1 -1
- package/dist/engine/workflow/legacy_type_migration.js +5 -0
- package/dist/engine/workflow/legacy_type_migration.js.map +1 -1
- package/dist/engine/workflow/project_stage_detector.d.ts.map +1 -1
- package/dist/engine/workflow/project_stage_detector.js +9 -7
- package/dist/engine/workflow/project_stage_detector.js.map +1 -1
- package/dist/engine/workflow/workflow_contract_registry.d.ts.map +1 -1
- package/dist/engine/workflow/workflow_contract_registry.js +24 -0
- package/dist/engine/workflow/workflow_contract_registry.js.map +1 -1
- package/dist/knowledge/index_manager.d.ts +6 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +168 -55
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/writer.d.ts +10 -0
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +40 -0
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/server/tools/gate_checks.d.ts +9 -0
- package/dist/server/tools/gate_checks.d.ts.map +1 -1
- package/dist/server/tools/gate_checks.js +55 -1
- package/dist/server/tools/gate_checks.js.map +1 -1
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +444 -381
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/schemas.d.ts +38 -5
- package/dist/server/tools/schemas.d.ts.map +1 -1
- package/dist/server/tools/schemas.js +23 -7
- package/dist/server/tools/schemas.js.map +1 -1
- package/dist/server/tools/tool_groups/expand_handler.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/expand_handler.js +40 -50
- package/dist/server/tools/tool_groups/expand_handler.js.map +1 -1
- package/dist/server/tools/tool_groups/status_plan_analyze_review.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/status_plan_analyze_review.js +26 -0
- package/dist/server/tools/tool_groups/status_plan_analyze_review.js.map +1 -1
- package/dist/server/tools/tool_groups/verify_learn.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/verify_learn.js +155 -7
- package/dist/server/tools/tool_groups/verify_learn.js.map +1 -1
- package/dist/types/pipeline.d.ts +2 -2
- package/dist/types/pipeline.d.ts.map +1 -1
- package/dist/types/task.d.ts +26 -0
- package/dist/types/task.d.ts.map +1 -1
- package/package.json +3 -3
- package/templates/procedures//350/256/276/350/256/241/345/256/241/350/256/241/346/265/201/347/250/213.md +186 -0
|
@@ -7,62 +7,117 @@
|
|
|
7
7
|
import { validateTransition } from "../../contracts/artifact_contract_registry.js";
|
|
8
8
|
import { MAX_REWORK } from "./constants.js";
|
|
9
9
|
import { computePhaseDirective } from "./phase_directive.js";
|
|
10
|
-
|
|
10
|
+
import { debug } from "../../core/logger.js";
|
|
11
|
+
/**
|
|
12
|
+
* P2-B1: 当 phase_directive 指示回退时,调用 rollback_router 解析目标阶段并写入 rollback_directive。
|
|
13
|
+
* 由 setCodeReview / setVerification 等触发回退的 setter 内联调用。
|
|
14
|
+
* 失败时静默 — rollback 是 best-effort,不应阻断主路径。
|
|
15
|
+
*/
|
|
16
|
+
export async function maybeApplyRollbackDirective(ctx) {
|
|
17
|
+
if (ctx.phase_directive !== "回退" && ctx.phase_directive !== "回退并标注") {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
// 动态导入避免循环依赖
|
|
22
|
+
const { resolveRollbackTarget } = await import("../rollback_router.js");
|
|
23
|
+
const { detectTaskStage } = await import("../task_stage_detector.js");
|
|
24
|
+
const currentStage = detectTaskStage(ctx);
|
|
25
|
+
if (!currentStage)
|
|
26
|
+
return;
|
|
27
|
+
// P2-B1: TaskContext 不持有 systemType 字段,默认走"新系统"路径。
|
|
28
|
+
// 老系统任务由 caller 在 setCodeReview 后再次校准 rollback_directive(如有必要)。
|
|
29
|
+
const systemType = "新系统";
|
|
30
|
+
const target = resolveRollbackTarget(currentStage, systemType, ctx.phase_directive === "回退并标注" ? "回退并标注问题" : undefined);
|
|
31
|
+
if (!target)
|
|
32
|
+
return;
|
|
33
|
+
ctx.rollback_directive = {
|
|
34
|
+
from_stage: target.from_stage,
|
|
35
|
+
to_stage: target.to_stage,
|
|
36
|
+
kind: target.kind,
|
|
37
|
+
reason_zh: target.reason_zh,
|
|
38
|
+
directive: target.kind === "rollback_annotate" ? "回退并标注" : "回退",
|
|
39
|
+
triggered_at: new Date().toISOString(),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
if (typeof console !== "undefined" && typeof console.warn === "function") {
|
|
44
|
+
debug("rollback", "解析回退目标失败: " + (e instanceof Error ? e.message : String(e)));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* P0-B1: 所有 setter 通过 withLock 串行化 load-modify-save,防止并发写入丢失数据。
|
|
50
|
+
*/
|
|
51
|
+
export function createSetterMethods(load, save, withLock) {
|
|
11
52
|
return {
|
|
12
53
|
async setPlanning(taskId, result) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
54
|
+
return withLock(taskId, async () => {
|
|
55
|
+
const ctx = await load(taskId);
|
|
56
|
+
if (!ctx)
|
|
57
|
+
return null;
|
|
58
|
+
ctx.planning = result;
|
|
59
|
+
await save(ctx);
|
|
60
|
+
return ctx;
|
|
61
|
+
});
|
|
19
62
|
},
|
|
20
63
|
async setCodeReview(taskId, result) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
64
|
+
return withLock(taskId, async () => {
|
|
65
|
+
const ctx = await load(taskId);
|
|
66
|
+
if (!ctx)
|
|
67
|
+
return null;
|
|
68
|
+
ctx.code_review = result;
|
|
69
|
+
ctx.phase_directive = computePhaseDirective(ctx);
|
|
70
|
+
// P2-B1: phase_directive 触发回退时,调用 rollback_router 填充 rollback_directive
|
|
71
|
+
await maybeApplyRollbackDirective(ctx);
|
|
72
|
+
await save(ctx);
|
|
73
|
+
return ctx;
|
|
74
|
+
});
|
|
28
75
|
},
|
|
29
76
|
async setDelivery(taskId, result) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
77
|
+
return withLock(taskId, async () => {
|
|
78
|
+
const ctx = await load(taskId);
|
|
79
|
+
if (!ctx)
|
|
80
|
+
return null;
|
|
81
|
+
ctx.delivery = result;
|
|
82
|
+
await save(ctx);
|
|
83
|
+
return ctx;
|
|
84
|
+
});
|
|
36
85
|
},
|
|
37
86
|
async setToolTrace(taskId, trace, violations) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
87
|
+
return withLock(taskId, async () => {
|
|
88
|
+
const ctx = await load(taskId);
|
|
89
|
+
if (!ctx)
|
|
90
|
+
return null;
|
|
91
|
+
ctx.last_tool_trace = trace;
|
|
92
|
+
// violations === undefined: 未提供,保留旧值(向后兼容)
|
|
93
|
+
// violations 为数组(含空数组): 显式设置或清除
|
|
94
|
+
// 避免旧 violations 残留导致 stale detector 误判
|
|
95
|
+
if (violations !== undefined) {
|
|
96
|
+
ctx.invocation_violations = violations.length > 0 ? violations : undefined;
|
|
97
|
+
}
|
|
98
|
+
await save(ctx);
|
|
99
|
+
return ctx;
|
|
100
|
+
});
|
|
50
101
|
},
|
|
51
102
|
async setPlanProposalGate(taskId, gate, existingCtx) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
103
|
+
return withLock(taskId, async () => {
|
|
104
|
+
const ctx = existingCtx ?? await load(taskId);
|
|
105
|
+
if (!ctx)
|
|
106
|
+
return null;
|
|
107
|
+
ctx.plan_proposal_gate = gate;
|
|
108
|
+
await save(ctx);
|
|
109
|
+
return ctx;
|
|
110
|
+
});
|
|
58
111
|
},
|
|
59
112
|
async setPlanProposalEvidence(taskId, evidence) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
113
|
+
return withLock(taskId, async () => {
|
|
114
|
+
const ctx = await load(taskId);
|
|
115
|
+
if (!ctx)
|
|
116
|
+
return null;
|
|
117
|
+
ctx.plan_proposal_evidence = evidence;
|
|
118
|
+
await save(ctx);
|
|
119
|
+
return ctx;
|
|
120
|
+
});
|
|
66
121
|
},
|
|
67
122
|
checkPlanGateBeforeWrite(ctx) {
|
|
68
123
|
const gate = ctx.plan_proposal_gate;
|
|
@@ -78,92 +133,155 @@ export function createSetterMethods(load, save) {
|
|
|
78
133
|
return { allowed: true, reason_zh: "Plan Gate 通过" };
|
|
79
134
|
},
|
|
80
135
|
async setArtifact(taskId, artifact, existingCtx) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
136
|
+
return withLock(taskId, async () => {
|
|
137
|
+
const ctx = existingCtx ?? await load(taskId);
|
|
138
|
+
if (!ctx)
|
|
139
|
+
return null;
|
|
140
|
+
ctx.artifact_output = artifact;
|
|
141
|
+
await save(ctx);
|
|
142
|
+
return ctx;
|
|
143
|
+
});
|
|
87
144
|
},
|
|
88
145
|
async updateArtifactStatus(taskId, params) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
146
|
+
return withLock(taskId, async () => {
|
|
147
|
+
const p = typeof params === "string"
|
|
148
|
+
? { status: params }
|
|
149
|
+
: params;
|
|
150
|
+
const ctx = await load(taskId);
|
|
151
|
+
if (!ctx || !ctx.artifact_output)
|
|
152
|
+
return null;
|
|
153
|
+
const artifact = ctx.artifact_output;
|
|
154
|
+
const findings = validateTransition(artifact, p.status, p.hasVerification ?? false, p.hasAcceptance ?? false);
|
|
155
|
+
const hardFails = findings.filter(f => f.severity === "hard_fail");
|
|
156
|
+
if (hardFails.length > 0) {
|
|
157
|
+
const err = new Error(`updateArtifactStatus blocked: ${hardFails.map(f => f.message).join("; ")}`);
|
|
158
|
+
err.findings = findings;
|
|
159
|
+
throw err;
|
|
160
|
+
}
|
|
161
|
+
artifact.status = p.status;
|
|
162
|
+
if (p.evidenceRef) {
|
|
163
|
+
artifact.evidence_refs = [...(artifact.evidence_refs ?? []), p.evidenceRef];
|
|
164
|
+
}
|
|
165
|
+
await save(ctx);
|
|
166
|
+
return ctx;
|
|
167
|
+
});
|
|
109
168
|
},
|
|
110
169
|
async updateRepairLoop(taskId, failurePhase, autoRepairable, escalationReason) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
ctx.execution.repair_loop
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
170
|
+
return withLock(taskId, async () => {
|
|
171
|
+
const ctx = await load(taskId);
|
|
172
|
+
if (!ctx || !ctx.execution)
|
|
173
|
+
return null;
|
|
174
|
+
if (!ctx.execution.repair_loop) {
|
|
175
|
+
ctx.execution.repair_loop = {
|
|
176
|
+
attempt: 0,
|
|
177
|
+
max_attempts: 3,
|
|
178
|
+
phase_origin: failurePhase,
|
|
179
|
+
auto_repairable: true,
|
|
180
|
+
recurrence_count: 0,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
ctx.execution.repair_loop.attempt++;
|
|
184
|
+
ctx.execution.repair_loop.phase_origin = failurePhase;
|
|
185
|
+
ctx.execution.repair_loop.auto_repairable = autoRepairable;
|
|
186
|
+
ctx.execution.repair_loop.escalation_reason = escalationReason;
|
|
187
|
+
const samePhaseFailures = ctx.execution.failure_history.filter((f) => f.phase === failurePhase);
|
|
188
|
+
ctx.execution.repair_loop.recurrence_count = samePhaseFailures.length;
|
|
189
|
+
await save(ctx);
|
|
190
|
+
return ctx;
|
|
191
|
+
});
|
|
131
192
|
},
|
|
132
193
|
async setEvidenceGroundingResult(taskId, payload) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
194
|
+
return withLock(taskId, async () => {
|
|
195
|
+
const ctx = await load(taskId);
|
|
196
|
+
if (!ctx)
|
|
197
|
+
return null;
|
|
198
|
+
if (payload.evidence_matrix)
|
|
199
|
+
ctx.evidence_matrix = payload.evidence_matrix;
|
|
200
|
+
if (payload.evidence_gate_result)
|
|
201
|
+
ctx.evidence_gate_result = payload.evidence_gate_result;
|
|
202
|
+
if (payload.unsupported_claims)
|
|
203
|
+
ctx.unsupported_claims = payload.unsupported_claims;
|
|
204
|
+
if (payload.conflict_resolutions)
|
|
205
|
+
ctx.conflict_resolutions = payload.conflict_resolutions;
|
|
206
|
+
await save(ctx);
|
|
207
|
+
return ctx;
|
|
208
|
+
});
|
|
146
209
|
},
|
|
147
210
|
async recordRework(taskId, fromPhase, toPhase, reason) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
ctx.rework_history
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
211
|
+
return withLock(taskId, async () => {
|
|
212
|
+
const ctx = await load(taskId);
|
|
213
|
+
if (!ctx)
|
|
214
|
+
return null;
|
|
215
|
+
if (!ctx.rework_history)
|
|
216
|
+
ctx.rework_history = [];
|
|
217
|
+
const reworkCount = ctx.rework_history.length;
|
|
218
|
+
if (reworkCount >= MAX_REWORK) {
|
|
219
|
+
ctx.phase_directive = "停止升级";
|
|
220
|
+
await save(ctx);
|
|
221
|
+
return ctx;
|
|
222
|
+
}
|
|
223
|
+
ctx.rework_history.push({
|
|
224
|
+
from_phase: fromPhase,
|
|
225
|
+
to_phase: toPhase,
|
|
226
|
+
reason,
|
|
227
|
+
timestamp: new Date().toISOString(),
|
|
228
|
+
});
|
|
156
229
|
await save(ctx);
|
|
157
230
|
return ctx;
|
|
158
|
-
}
|
|
159
|
-
ctx.rework_history.push({
|
|
160
|
-
from_phase: fromPhase,
|
|
161
|
-
to_phase: toPhase,
|
|
162
|
-
reason,
|
|
163
|
-
timestamp: new Date().toISOString(),
|
|
164
231
|
});
|
|
165
|
-
|
|
166
|
-
|
|
232
|
+
},
|
|
233
|
+
// P1-B3: expand 阶段事务化 — 单次锁内合并四项变更,失败时回滚到事务前快照
|
|
234
|
+
async applyExpansionTransaction(taskId, ops) {
|
|
235
|
+
return withLock(taskId, async () => {
|
|
236
|
+
const ctx = await load(taskId);
|
|
237
|
+
if (!ctx)
|
|
238
|
+
return null;
|
|
239
|
+
// 事务开始前快照(深拷贝核心字段,用于失败回滚)
|
|
240
|
+
const snapshot = {
|
|
241
|
+
expansion: ctx.expansion,
|
|
242
|
+
artifact_output: ctx.artifact_output,
|
|
243
|
+
status: ctx.status,
|
|
244
|
+
plan_proposal_gate: ctx.plan_proposal_gate,
|
|
245
|
+
};
|
|
246
|
+
try {
|
|
247
|
+
// 1. 写入 expansion
|
|
248
|
+
if (ops.expansion !== undefined) {
|
|
249
|
+
ctx.expansion = ops.expansion;
|
|
250
|
+
}
|
|
251
|
+
// 2. 写入 artifact
|
|
252
|
+
if (ops.artifact !== undefined) {
|
|
253
|
+
ctx.artifact_output = ops.artifact;
|
|
254
|
+
}
|
|
255
|
+
// 3. 状态转换
|
|
256
|
+
if (ops.nextStatus !== undefined) {
|
|
257
|
+
ctx.status = ops.nextStatus;
|
|
258
|
+
}
|
|
259
|
+
// 4. plan_proposal_gate
|
|
260
|
+
if (ops.planProposalGate !== undefined) {
|
|
261
|
+
ctx.plan_proposal_gate = ops.planProposalGate;
|
|
262
|
+
}
|
|
263
|
+
// 单次 save — 全部变更原子化落盘
|
|
264
|
+
await save(ctx);
|
|
265
|
+
return ctx;
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
// 回滚到事务前快照
|
|
269
|
+
ctx.expansion = snapshot.expansion;
|
|
270
|
+
ctx.artifact_output = snapshot.artifact_output;
|
|
271
|
+
ctx.status = snapshot.status;
|
|
272
|
+
ctx.plan_proposal_gate = snapshot.plan_proposal_gate;
|
|
273
|
+
try {
|
|
274
|
+
await save(ctx);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// 回滚 save 失败只能记录,不能再抛
|
|
278
|
+
if (typeof console !== "undefined" && typeof console.warn === "function") {
|
|
279
|
+
debug("applyExpansionTransaction", "回滚 save 失败: " + (err instanceof Error ? err.message : String(err)));
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
throw err;
|
|
283
|
+
}
|
|
284
|
+
});
|
|
167
285
|
},
|
|
168
286
|
};
|
|
169
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager_setters.js","sourceRoot":"","sources":["../../../../src/engine/pipeline/task_context/manager_setters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAGnF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager_setters.js","sourceRoot":"","sources":["../../../../src/engine/pipeline/task_context/manager_setters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task_stage_detector.d.ts","sourceRoot":"","sources":["../../../src/engine/pipeline/task_stage_detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"task_stage_detector.d.ts","sourceRoot":"","sources":["../../../src/engine/pipeline/task_stage_detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/F;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,CAoF3D;AAmED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CASnE"}
|
|
@@ -31,12 +31,21 @@ export function detectTaskStage(ctx) {
|
|
|
31
31
|
}
|
|
32
32
|
// expanding / clarifying → 设计阶段细分
|
|
33
33
|
if (status === "expanding" || status === "clarifying") {
|
|
34
|
+
// P2-A: workflow_intent=detail_design 优先识别为"详细设计"阶段
|
|
35
|
+
const workflowIntent = ctx.route_decision?.workflow_intent ?? ctx.classification?.route_decision?.workflow_intent;
|
|
36
|
+
if (workflowIntent === "detail_design") {
|
|
37
|
+
return "详细设计";
|
|
38
|
+
}
|
|
34
39
|
if (ctx.design_artifact_pack) {
|
|
35
40
|
const packStatus = ctx.design_artifact_pack.status;
|
|
36
41
|
// 设计产物包等待决策 → 现有系统分析(老系统管线)
|
|
37
42
|
if (packStatus === "awaiting_decisions") {
|
|
38
43
|
return "现有系统分析";
|
|
39
44
|
}
|
|
45
|
+
// 架构已 ready 且有详细设计产物 → 详细设计阶段
|
|
46
|
+
if (packStatus === "implementation_ready" && ctx.design_artifact_pack.paths?.optional_detail_design_document) {
|
|
47
|
+
return "详细设计";
|
|
48
|
+
}
|
|
40
49
|
return "架构设计";
|
|
41
50
|
}
|
|
42
51
|
// 老系统管线且无设计产物包 → 现有系统分析
|
|
@@ -49,6 +58,10 @@ export function detectTaskStage(ctx) {
|
|
|
49
58
|
}
|
|
50
59
|
return "需求分析";
|
|
51
60
|
}
|
|
61
|
+
// P2-A: 任务规划阶段检测 — ctx.planning 由 sf_plan 写入,此时已离开 expanding
|
|
62
|
+
if (ctx.planning && !ctx.execution?.changed_files?.length) {
|
|
63
|
+
return "任务规划";
|
|
64
|
+
}
|
|
52
65
|
// executing / retrying → 编码与单元测试
|
|
53
66
|
if (status === "executing" || status === "retrying") {
|
|
54
67
|
return "编码与单元测试";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task_stage_detector.js","sourceRoot":"","sources":["../../../src/engine/pipeline/task_stage_detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task_stage_detector.js","sourceRoot":"","sources":["../../../src/engine/pipeline/task_stage_detector.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/release/release_issue_scenario_registry/scenarios_template_contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarios_template_contract.d.ts","sourceRoot":"","sources":["../../../../src/engine/release/release_issue_scenario_registry/scenarios_template_contract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,eAAO,MAAM,2BAA2B,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"scenarios_template_contract.d.ts","sourceRoot":"","sources":["../../../../src/engine/release/release_issue_scenario_registry/scenarios_template_contract.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,eAAO,MAAM,2BAA2B,EAAE,aAAa,EAiVtD,CAAC"}
|
|
@@ -184,9 +184,58 @@ export const TEMPLATE_CONTRACT_SCENARIOS = [
|
|
|
184
184
|
"paths:", " /users:", " get:", " responses:", " '200':",
|
|
185
185
|
" description: OK",
|
|
186
186
|
].join("\n"), "utf-8");
|
|
187
|
+
// 完整 api_spec 内容 — 必须覆盖:
|
|
188
|
+
// 1. tpl-api-spec contract 的 required_sections/tables/fields(接口概览/请求响应规范 + 请求字段表/响应字段表 + 字段名等 8 列)
|
|
189
|
+
// 2. artifact_schema_registry 中 api_spec schema 的 required_sections/tables(9 章节 + 9 表)
|
|
190
|
+
// 3. field_check 检查的是文档中【第一个】表格的表头 — 必须含全部 8 列
|
|
191
|
+
// 否则 contract 或 omission scan 会阻断 ver2,directive clear 闭环无法走通
|
|
192
|
+
// 完整 api_spec 内容 — 必须同时满足:
|
|
193
|
+
// 1. tpl-api-spec contract:required_sections(接口概览/请求响应规范) + required_tables(请求字段表/响应字段表) + 8 列 field_check
|
|
194
|
+
// 2. api_spec schema:9 个 required_sections(每个 >= 50 字符正文) + 9 个 required_tables(table_check 按 \|.*keywords 匹配)
|
|
195
|
+
// 3. field_check 仅检查【第一张表】表头 — 故首张表必须含全部 8 列
|
|
196
|
+
// 4. table_check 在全文范围内查找 \|.*{tableName前8字符} — 故每张表内嵌入一行 caption 含表名
|
|
187
197
|
const compliantApiContent = [
|
|
188
|
-
"# API 接口规格
|
|
189
|
-
|
|
198
|
+
"# API 接口规格 — 用户列表查询",
|
|
199
|
+
// ── contract 必填章节 ──
|
|
200
|
+
"## 接口概览",
|
|
201
|
+
"提供分页用户列表查询接口,支持按多条件过滤与排序,主要用于后台管理系统的用户分页浏览场景。",
|
|
202
|
+
"## 请求响应规范",
|
|
203
|
+
"本接口遵循 RESTful 规范,采用 JSON 格式交换数据;详细字段、错误码与验收场景见后续章节。",
|
|
204
|
+
"### GET /users",
|
|
205
|
+
// ── schema 9 个必填章节 ──
|
|
206
|
+
// 章节顺序:把含 8 列表头的"请求 Header 字段"放最前,让 field_check 用其作为第一张表
|
|
207
|
+
"## 请求 Header 字段",
|
|
208
|
+
"客户端调用本接口须在请求头携带身份认证与追踪字段,所有 Header 字段定义如下表所列。",
|
|
209
|
+
"### 请求Header字段表",
|
|
210
|
+
"| 字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
211
|
+
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
212
|
+
"| Authorization | string | 是 | header | 认证令牌 | Bearer xxx | 必填 | 未授权 |",
|
|
213
|
+
"| _表格: 请求Header字段表_ | | | | | | | |",
|
|
214
|
+
"## 基本信息",
|
|
215
|
+
"本节给出接口的元数据描述,包括端点标识、用途、调用端、权限要求与幂等性等核心属性。",
|
|
216
|
+
"### 基本信息表",
|
|
217
|
+
"| 字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
218
|
+
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
219
|
+
"| endpoint_id | string | 是 | meta | 端点标识 | GET /users | 必填 | 缺失 |",
|
|
220
|
+
"| _表格: 基本信息_ | | | | | | | |",
|
|
221
|
+
"## 请求 Path",
|
|
222
|
+
"本接口支持通过 URL 路径与查询参数承载分页、过滤与排序语义,对应字段定义见下表。",
|
|
223
|
+
"### 请求Path/Query字段表",
|
|
224
|
+
"| 字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
225
|
+
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
226
|
+
"| page | number | 否 | query | 页码 | 1 | >= 1 | 页码无效 |",
|
|
227
|
+
"| _表格: 请求Path/Query字段表_ | | | | | | | |",
|
|
228
|
+
"## 请求体字段",
|
|
229
|
+
"本接口为 GET 方法,无请求体;为保持结构与一致性,仍以空表占位说明请求体字段约定。",
|
|
230
|
+
"### 请求体字段表",
|
|
231
|
+
"| 字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
232
|
+
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
233
|
+
"| (空) | - | - | body | GET 无请求体 | - | - | - |",
|
|
234
|
+
"| _表格: 请求体字段_ | | | | | | | |",
|
|
235
|
+
"## 响应体字段",
|
|
236
|
+
"响应体承载用户列表数据,包含分页元信息与数据条目;下方四张表分别按 contract 与 schema 规范列出。",
|
|
237
|
+
// ── contract 必填表格 "请求字段表"/"响应字段表"(关键字匹配,必须出现在 ## 响应体字段 后) ──
|
|
238
|
+
"#### 请求字段表",
|
|
190
239
|
"| 请求字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
191
240
|
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
192
241
|
"| page | number | 否 | query | 页码 | 1 | >= 1 | 页码无效 |",
|
|
@@ -194,6 +243,39 @@ export const TEMPLATE_CONTRACT_SCENARIOS = [
|
|
|
194
243
|
"| 响应字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
195
244
|
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
196
245
|
"| data | array | 是 | response | 用户列表 | [] | array | 无 |",
|
|
246
|
+
"### 响应体字段表",
|
|
247
|
+
"| 字段名 | 类型 | 必填 | 来源 | 说明 | 示例 | 校验规则 | 错误语义 |",
|
|
248
|
+
"| --- | --- | --- | --- | --- | --- | --- | --- |",
|
|
249
|
+
"| data | array | 是 | response | 用户列表 | [] | array | 无 |",
|
|
250
|
+
"| _表格: 响应体字段表_ | | | | | | | |",
|
|
251
|
+
"## 错误与副作用",
|
|
252
|
+
"本节列出接口可能返回的错误码、错误语义、对应处理策略,以及成功调用所触发的副作用说明。",
|
|
253
|
+
"### 错误与副作用表",
|
|
254
|
+
"| 错误码 | 含义 | 处理 |",
|
|
255
|
+
"| --- | --- | --- |",
|
|
256
|
+
"| 400 | 参数错误 | 返回详细错误 |",
|
|
257
|
+
"| _表格: 错误与副作用_ | | |",
|
|
258
|
+
"## 验收场景",
|
|
259
|
+
"针对本接口的验收测试场景,覆盖默认分页、空数据、过滤条件等关键路径,确保行为符合预期。",
|
|
260
|
+
"### 验收场景表",
|
|
261
|
+
"| 场景 | 输入 | 期望输出 |",
|
|
262
|
+
"| --- | --- | --- |",
|
|
263
|
+
"| 默认分页 | page=1 | 20 条记录 |",
|
|
264
|
+
"| _表格: 验收场景_ | | |",
|
|
265
|
+
"## 枚举值定义",
|
|
266
|
+
"本接口涉及的枚举值统一在此处声明,便于前后端共享;当前接口暂未引入业务枚举值定义。",
|
|
267
|
+
"### 枚举值定义表",
|
|
268
|
+
"| 枚举 | 值 | 说明 |",
|
|
269
|
+
"| --- | --- | --- |",
|
|
270
|
+
"| (无) | - | - |",
|
|
271
|
+
"| _表格: 枚举值定义_ | | |",
|
|
272
|
+
"## 页面交互映射",
|
|
273
|
+
"本接口在前端页面中的触发位置与交互入口映射关系如下表,便于产品与测试团队对照。",
|
|
274
|
+
"### 页面交互映射表",
|
|
275
|
+
"| 页面 | 接口 | 触发 |",
|
|
276
|
+
"| --- | --- | --- |",
|
|
277
|
+
"| UserListPage | GET /users | 进入页面 |",
|
|
278
|
+
"| _表格: 页面交互映射_ | | |",
|
|
197
279
|
].join("\n");
|
|
198
280
|
fs.writeFileSync(artifactAbs, `draft\n\n${compliantApiContent}`, "utf-8");
|
|
199
281
|
await harness.setupPlanGate(taskId);
|