soloforge 1.4.12 → 1.4.13
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -528,7 +528,7 @@ export async function checkLocalAcceptanceGate(params) {
|
|
|
528
528
|
const HIGH_IMPACT_KEYWORDS = /架构|技术选型|数据库|框架|多端|跨模块|高影响|高风险|migration|技术路线|选型|rework/i;
|
|
529
529
|
const UNCERTAINTY_KEYWORDS = /不确定|方案选择|多选项|权衡|脑暴|brainstorm|多方案|选型|比较/i;
|
|
530
530
|
const DETAIL_INTENSIVE_KEYWORDS = /多步骤|复杂|跨模块|高风险|多端|分布式|微服务/i;
|
|
531
|
-
const LOW_RISK_ROUTES = new Set(["skip_chat", "direct_answer", "operation", "planning", "review", "source_extraction"]);
|
|
531
|
+
const LOW_RISK_ROUTES = new Set(["skip_chat", "direct_answer", "operation", "planning", "review", "source_extraction", "acceptance"]);
|
|
532
532
|
/** 技术选型/架构/数据库/框架/高影响决策 → 需 decision sovereignty gate */
|
|
533
533
|
export function requiresDecisionSovereignty(ctx, route) {
|
|
534
534
|
if (!ctx)
|
|
@@ -1835,226 +1835,231 @@ export async function registerTools(server, deps) {
|
|
|
1835
1835
|
}
|
|
1836
1836
|
}
|
|
1837
1837
|
}
|
|
1838
|
-
// ── S4 gates:
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
if (!detailGate.allowed) {
|
|
1857
|
-
return {
|
|
1858
|
-
result: {
|
|
1859
|
-
error: detailGate.reason_zh,
|
|
1860
|
-
missing_details: detailGate.missing_details,
|
|
1861
|
-
status: "blocked",
|
|
1862
|
-
recovery: "多步骤/复杂任务缺 detail_discipline_contract,请提供后重新 sf_expand",
|
|
1863
|
-
},
|
|
1864
|
-
};
|
|
1838
|
+
// ── S4 gates: 轻量路径(acceptance/review/read_only)整体跳过 ──
|
|
1839
|
+
const isLightweightRoute = expansionRoute === "acceptance" || expansionRoute === "review"
|
|
1840
|
+
|| expansionRoute === "direct_answer" || expansionRoute === "analysis";
|
|
1841
|
+
if (!isLightweightRoute) {
|
|
1842
|
+
// ── S4 gates: 独立于 hasInstructionContract,由 requires* 触发判定 ──
|
|
1843
|
+
// 问题十六: 技术选型决策主权 gate — 高影响技术决策缺证据时 blocked
|
|
1844
|
+
{
|
|
1845
|
+
const decisionGate = await checkDecisionSovereigntyGate({ ctx, route: expansionRoute });
|
|
1846
|
+
if (!decisionGate.allowed) {
|
|
1847
|
+
return {
|
|
1848
|
+
result: {
|
|
1849
|
+
error: decisionGate.reason_zh,
|
|
1850
|
+
status: "blocked",
|
|
1851
|
+
expected_schema: decisionGate.expected_schema,
|
|
1852
|
+
recovery: decisionGate.requires_human_gate ? "请提供技术决策确认证据(human_gate_evidence)" : "技术选型决策校验失败,请按照 expected_schema 格式提供 technology_decision_contract",
|
|
1853
|
+
},
|
|
1854
|
+
};
|
|
1855
|
+
}
|
|
1865
1856
|
}
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
};
|
|
1857
|
+
// 问题二十六: 细节纪律 gate — 复杂任务缺关键细节时 blocked
|
|
1858
|
+
{
|
|
1859
|
+
const detailGate = await checkDetailDisciplineGate({ ctx, route: expansionRoute });
|
|
1860
|
+
if (!detailGate.allowed) {
|
|
1861
|
+
return {
|
|
1862
|
+
result: {
|
|
1863
|
+
error: detailGate.reason_zh,
|
|
1864
|
+
missing_details: detailGate.missing_details,
|
|
1865
|
+
status: "blocked",
|
|
1866
|
+
recovery: "多步骤/复杂任务缺 detail_discipline_contract,请提供后重新 sf_expand",
|
|
1867
|
+
},
|
|
1868
|
+
};
|
|
1869
|
+
}
|
|
1880
1870
|
}
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
}
|
|
1894
|
-
}
|
|
1871
|
+
// 问题二十七: 第一性原理 gate — 高影响任务缺推理时 blocked
|
|
1872
|
+
{
|
|
1873
|
+
const fpGate = await checkFirstPrinciplesGate({ ctx, route: expansionRoute });
|
|
1874
|
+
if (!fpGate.allowed) {
|
|
1875
|
+
return {
|
|
1876
|
+
result: {
|
|
1877
|
+
error: fpGate.reason_zh,
|
|
1878
|
+
failures: fpGate.failures,
|
|
1879
|
+
expected_schema: fpGate.expected_schema,
|
|
1880
|
+
status: "blocked",
|
|
1881
|
+
recovery: "高影响任务缺 first_principles_frame,请按照 expected_schema 格式提供后重新 sf_expand",
|
|
1882
|
+
},
|
|
1883
|
+
};
|
|
1884
|
+
}
|
|
1895
1885
|
}
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
const traceReport = isImplementationRoute
|
|
1911
|
-
? traceabilityModule.auditDesignImplementationTraceability(projectPath)
|
|
1912
|
-
: {
|
|
1913
|
-
passed: true,
|
|
1914
|
-
matrix_exists: false,
|
|
1915
|
-
findings: [],
|
|
1916
|
-
checked_files: [],
|
|
1917
|
-
matrix_path: traceabilityModule.DEFAULT_DESIGN_IMPLEMENTATION_TRACEABILITY_PATH,
|
|
1918
|
-
};
|
|
1919
|
-
if (isImplementationRoute && !traceReport.passed) {
|
|
1920
|
-
ctx.traceability_binding = {
|
|
1921
|
-
requirement_ids: [],
|
|
1922
|
-
prototype_ids: [],
|
|
1923
|
-
architecture_ids: [],
|
|
1924
|
-
detail_design_ids: [],
|
|
1925
|
-
phase_ids: [],
|
|
1926
|
-
slice_ids: [],
|
|
1927
|
-
acceptance_ids: [],
|
|
1928
|
-
status: "needs_backfill",
|
|
1929
|
-
findings: traceReport.findings.map((finding) => `${finding.code}: ${finding.message_zh}`),
|
|
1930
|
-
};
|
|
1931
|
-
await taskContext.save(ctx);
|
|
1932
|
-
return {
|
|
1933
|
-
result: {
|
|
1934
|
-
error: "需求/原型/设计/切片/验收追踪链路未闭合,不得进入编码实现",
|
|
1935
|
-
status: "blocked",
|
|
1936
|
-
diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityMissing,
|
|
1937
|
-
traceability_findings: traceReport.findings,
|
|
1938
|
-
checked_files: traceReport.checked_files,
|
|
1939
|
-
matrix_path: traceReport.matrix_path,
|
|
1940
|
-
template_path: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH,
|
|
1941
|
-
recovery_command: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_COMMAND,
|
|
1942
|
-
recovery: `${traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_GUIDANCE}。不得取消任务后直接写代码,不得改用 Bash 绕过追踪矩阵。`,
|
|
1943
|
-
},
|
|
1944
|
-
};
|
|
1886
|
+
// 问题四十二(brainstorm): 脑暴契约 gate — 不确定项缺方案探索时 blocked
|
|
1887
|
+
{
|
|
1888
|
+
const brainstormGate = await checkBrainstormGate({ ctx, route: expansionRoute });
|
|
1889
|
+
if (!brainstormGate.allowed) {
|
|
1890
|
+
return {
|
|
1891
|
+
result: {
|
|
1892
|
+
error: brainstormGate.reason_zh,
|
|
1893
|
+
violations: brainstormGate.violations,
|
|
1894
|
+
expected_schema: brainstormGate.expected_schema,
|
|
1895
|
+
status: "blocked",
|
|
1896
|
+
recovery: "不确定项/方案选择缺 brainstorm_session,请按照 expected_schema 格式提供后重新 sf_expand",
|
|
1897
|
+
},
|
|
1898
|
+
};
|
|
1899
|
+
}
|
|
1945
1900
|
}
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1901
|
+
// 问题六十六/六十七/六十八: 编码前工程约束必须聚合返回。
|
|
1902
|
+
// 不能让 OOD 或后端工程门禁抢先返回,遮蔽用户项目的注释/日志契约。
|
|
1903
|
+
{
|
|
1904
|
+
const preImplementationBlocks = [];
|
|
1905
|
+
const preImplementationPayload = {};
|
|
1906
|
+
const artifactDesignIntent = expansionRoute === "artifact_generation"
|
|
1907
|
+
|| ["architecture_design", "database_design", "api_design", "detailed_design"].includes(String(workflowIntent))
|
|
1908
|
+
|| /(?:架构|数据库|API|接口|OpenAPI).{0,12}(?:设计|规格|文档)|(?:设计|规格|文档).{0,12}(?:API|接口|OpenAPI)/i.test(ctx.intent);
|
|
1909
|
+
const isImplementationRoute = !artifactDesignIntent && (expansionRoute === "code_change"
|
|
1910
|
+
|| String(workflowIntent) === "backend_api_implementation"
|
|
1911
|
+
|| String(workflowIntent) === "frontend_business_logic"
|
|
1912
|
+
|| /编码|实现|开发|controller|service|component/i.test(ctx.intent));
|
|
1913
|
+
const traceabilityModule = await lazyTraceability();
|
|
1914
|
+
const traceReport = isImplementationRoute
|
|
1915
|
+
? traceabilityModule.auditDesignImplementationTraceability(projectPath)
|
|
1916
|
+
: {
|
|
1917
|
+
passed: true,
|
|
1918
|
+
matrix_exists: false,
|
|
1919
|
+
findings: [],
|
|
1920
|
+
checked_files: [],
|
|
1921
|
+
matrix_path: traceabilityModule.DEFAULT_DESIGN_IMPLEMENTATION_TRACEABILITY_PATH,
|
|
1922
|
+
};
|
|
1923
|
+
if (isImplementationRoute && !traceReport.passed) {
|
|
1950
1924
|
ctx.traceability_binding = {
|
|
1951
|
-
requirement_ids:
|
|
1952
|
-
prototype_ids:
|
|
1953
|
-
architecture_ids:
|
|
1954
|
-
detail_design_ids:
|
|
1955
|
-
phase_ids:
|
|
1956
|
-
slice_ids:
|
|
1957
|
-
acceptance_ids:
|
|
1958
|
-
status: "
|
|
1959
|
-
findings:
|
|
1925
|
+
requirement_ids: [],
|
|
1926
|
+
prototype_ids: [],
|
|
1927
|
+
architecture_ids: [],
|
|
1928
|
+
detail_design_ids: [],
|
|
1929
|
+
phase_ids: [],
|
|
1930
|
+
slice_ids: [],
|
|
1931
|
+
acceptance_ids: [],
|
|
1932
|
+
status: "needs_backfill",
|
|
1933
|
+
findings: traceReport.findings.map((finding) => `${finding.code}: ${finding.message_zh}`),
|
|
1960
1934
|
};
|
|
1961
1935
|
await taskContext.save(ctx);
|
|
1962
1936
|
return {
|
|
1963
1937
|
result: {
|
|
1964
|
-
error: "
|
|
1965
|
-
status: "
|
|
1966
|
-
diagnostic_code: TOOL_DIAGNOSTIC_CODES.
|
|
1967
|
-
|
|
1938
|
+
error: "需求/原型/设计/切片/验收追踪链路未闭合,不得进入编码实现",
|
|
1939
|
+
status: "blocked",
|
|
1940
|
+
diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityMissing,
|
|
1941
|
+
traceability_findings: traceReport.findings,
|
|
1942
|
+
checked_files: traceReport.checked_files,
|
|
1968
1943
|
matrix_path: traceReport.matrix_path,
|
|
1969
1944
|
template_path: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH,
|
|
1970
|
-
recovery_command:
|
|
1971
|
-
recovery:
|
|
1945
|
+
recovery_command: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_COMMAND,
|
|
1946
|
+
recovery: `${traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_RECOVERY_GUIDANCE}。不得取消任务后直接写代码,不得改用 Bash 绕过追踪矩阵。`,
|
|
1972
1947
|
},
|
|
1973
1948
|
};
|
|
1974
1949
|
}
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
1950
|
+
const traceBindingIds = traceabilityModule.extractTraceabilityBindingIds(ctx);
|
|
1951
|
+
if (traceReport.matrix_exists && isImplementationRoute) {
|
|
1952
|
+
const missingPrefixes = ["PHASE", "SLICE", "DD", "AC"].filter((prefix) => !traceBindingIds.some((id) => id.startsWith(`${prefix}-`)));
|
|
1953
|
+
if (missingPrefixes.length > 0) {
|
|
1954
|
+
ctx.traceability_binding = {
|
|
1955
|
+
requirement_ids: traceBindingIds.filter((id) => id.startsWith("REQ-")),
|
|
1956
|
+
prototype_ids: traceBindingIds.filter((id) => id.startsWith("PROTO-")),
|
|
1957
|
+
architecture_ids: traceBindingIds.filter((id) => id.startsWith("ARCH-")),
|
|
1958
|
+
detail_design_ids: traceBindingIds.filter((id) => id.startsWith("DD-")),
|
|
1959
|
+
phase_ids: traceBindingIds.filter((id) => id.startsWith("PHASE-")),
|
|
1960
|
+
slice_ids: traceBindingIds.filter((id) => id.startsWith("SLICE-")),
|
|
1961
|
+
acceptance_ids: traceBindingIds.filter((id) => id.startsWith("AC-")),
|
|
1962
|
+
status: "missing",
|
|
1963
|
+
findings: missingPrefixes.map((prefix) => `编码前缺少 ${prefix}-* 绑定`),
|
|
1964
|
+
};
|
|
1965
|
+
await taskContext.save(ctx);
|
|
1966
|
+
return {
|
|
1967
|
+
result: {
|
|
1968
|
+
error: "编码任务必须先绑定阶段、切片、详细设计和验收 ID",
|
|
1969
|
+
status: "awaiting_traceability_binding",
|
|
1970
|
+
diagnostic_code: TOOL_DIAGNOSTIC_CODES.traceabilityBindingMissing,
|
|
1971
|
+
missing_prefixes: missingPrefixes,
|
|
1972
|
+
matrix_path: traceReport.matrix_path,
|
|
1973
|
+
template_path: traceabilityModule.DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH,
|
|
1974
|
+
recovery_command: "sf_expand",
|
|
1975
|
+
recovery: "在任务上下文或指令中明确本次实现对应的 PHASE-*、SLICE-*、DD-*、AC-*,再重新调用 sf_expand;不得脱离已确认设计直接编码,不得取消任务后改用 Bash/Edit/Write 直接实现",
|
|
1976
|
+
},
|
|
1977
|
+
};
|
|
1978
|
+
}
|
|
1979
|
+
ctx.traceability_binding = {
|
|
1980
|
+
requirement_ids: traceBindingIds.filter((id) => id.startsWith("REQ-")),
|
|
1981
|
+
prototype_ids: traceBindingIds.filter((id) => id.startsWith("PROTO-")),
|
|
1982
|
+
architecture_ids: traceBindingIds.filter((id) => id.startsWith("ARCH-")),
|
|
1983
|
+
detail_design_ids: traceBindingIds.filter((id) => id.startsWith("DD-")),
|
|
1984
|
+
phase_ids: traceBindingIds.filter((id) => id.startsWith("PHASE-")),
|
|
1985
|
+
slice_ids: traceBindingIds.filter((id) => id.startsWith("SLICE-")),
|
|
1986
|
+
acceptance_ids: traceBindingIds.filter((id) => id.startsWith("AC-")),
|
|
1987
|
+
status: "bound",
|
|
1988
|
+
findings: [],
|
|
1989
|
+
};
|
|
1990
|
+
preImplementationPayload.traceability_binding = ctx.traceability_binding;
|
|
1991
|
+
}
|
|
1992
|
+
const oodModule = await lazyOodSolid();
|
|
1993
|
+
const oodGate = oodModule.evaluateOodDesignGate({
|
|
1994
|
+
task_id: args.task_id,
|
|
1995
|
+
intent: ctx.intent,
|
|
1996
|
+
route: expansionRoute,
|
|
1997
|
+
summary: ctx.ood_solid_summary,
|
|
2020
1998
|
});
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
1999
|
+
if (oodGate.applicable) {
|
|
2000
|
+
ctx.ood_solid_summary = oodGate.required_summary;
|
|
2001
|
+
preImplementationPayload.ood_solid_summary = oodGate.required_summary;
|
|
2002
|
+
}
|
|
2003
|
+
if (!oodGate.allowed) {
|
|
2004
|
+
preImplementationBlocks.push({
|
|
2005
|
+
code: TOOL_DIAGNOSTIC_CODES.oodMissingSummary,
|
|
2006
|
+
reason_zh: oodGate.reason_zh,
|
|
2007
|
+
});
|
|
2008
|
+
}
|
|
2009
|
+
const backendModule = await lazyBackendImplementation();
|
|
2010
|
+
const backendGate = backendModule.evaluateBackendImplementationGate({
|
|
2025
2011
|
task_id: args.task_id,
|
|
2026
2012
|
intent: ctx.intent,
|
|
2027
2013
|
route: expansionRoute,
|
|
2028
|
-
|
|
2029
|
-
work_package: ctx.code_observability_work_package,
|
|
2014
|
+
work_package: ctx.backend_implementation_work_package,
|
|
2030
2015
|
});
|
|
2031
|
-
if (
|
|
2032
|
-
ctx.
|
|
2033
|
-
preImplementationPayload.
|
|
2016
|
+
if (backendGate.applicable) {
|
|
2017
|
+
ctx.backend_implementation_work_package = backendGate.work_package;
|
|
2018
|
+
preImplementationPayload.backend_implementation_work_package = backendGate.work_package;
|
|
2034
2019
|
}
|
|
2035
|
-
if (!
|
|
2020
|
+
if (!backendGate.allowed) {
|
|
2036
2021
|
preImplementationBlocks.push({
|
|
2037
|
-
code: TOOL_DIAGNOSTIC_CODES.
|
|
2038
|
-
reason_zh:
|
|
2022
|
+
code: TOOL_DIAGNOSTIC_CODES.backendMissingSummary,
|
|
2023
|
+
reason_zh: backendGate.reason_zh,
|
|
2039
2024
|
});
|
|
2040
2025
|
}
|
|
2026
|
+
if (ctx.classification.task_type !== "scaffold") {
|
|
2027
|
+
const obsModule = await lazyCodeObservability();
|
|
2028
|
+
const obsGate = obsModule.evaluateCodeObservabilityGate({
|
|
2029
|
+
task_id: args.task_id,
|
|
2030
|
+
intent: ctx.intent,
|
|
2031
|
+
route: expansionRoute,
|
|
2032
|
+
changed_files: ctx.execution?.changed_files,
|
|
2033
|
+
work_package: ctx.code_observability_work_package,
|
|
2034
|
+
});
|
|
2035
|
+
if (obsGate.applicable) {
|
|
2036
|
+
ctx.code_observability_work_package = obsGate.work_package;
|
|
2037
|
+
preImplementationPayload.code_observability_work_package = obsGate.work_package;
|
|
2038
|
+
}
|
|
2039
|
+
if (!obsGate.allowed) {
|
|
2040
|
+
preImplementationBlocks.push({
|
|
2041
|
+
code: TOOL_DIAGNOSTIC_CODES.codeObservabilityWorkPackage,
|
|
2042
|
+
reason_zh: obsGate.reason_zh,
|
|
2043
|
+
});
|
|
2044
|
+
}
|
|
2045
|
+
}
|
|
2046
|
+
if (Object.keys(preImplementationPayload).length > 0) {
|
|
2047
|
+
await taskContext.save(ctx);
|
|
2048
|
+
}
|
|
2049
|
+
if (preImplementationBlocks.length > 0) {
|
|
2050
|
+
return {
|
|
2051
|
+
result: {
|
|
2052
|
+
error: "编码前工程契约未全部确认,不得开始实现",
|
|
2053
|
+
status: "awaiting_implementation_contracts",
|
|
2054
|
+
diagnostic_codes: preImplementationBlocks.map((b) => b.code),
|
|
2055
|
+
blocking_findings: preImplementationBlocks,
|
|
2056
|
+
...preImplementationPayload,
|
|
2057
|
+
recovery: "请同时确认 OOD/SOLID、后端工程边界、代码注释与日志契约后重新调用 sf_expand",
|
|
2058
|
+
},
|
|
2059
|
+
};
|
|
2060
|
+
}
|
|
2041
2061
|
}
|
|
2042
|
-
|
|
2043
|
-
await taskContext.save(ctx);
|
|
2044
|
-
}
|
|
2045
|
-
if (preImplementationBlocks.length > 0) {
|
|
2046
|
-
return {
|
|
2047
|
-
result: {
|
|
2048
|
-
error: "编码前工程契约未全部确认,不得开始实现",
|
|
2049
|
-
status: "awaiting_implementation_contracts",
|
|
2050
|
-
diagnostic_codes: preImplementationBlocks.map((b) => b.code),
|
|
2051
|
-
blocking_findings: preImplementationBlocks,
|
|
2052
|
-
...preImplementationPayload,
|
|
2053
|
-
recovery: "请同时确认 OOD/SOLID、后端工程边界、代码注释与日志契约后重新调用 sf_expand",
|
|
2054
|
-
},
|
|
2055
|
-
};
|
|
2056
|
-
}
|
|
2057
|
-
}
|
|
2062
|
+
} // end if (!isLightweightRoute) — 轻量路径跳过 S4 gates + 编码前工程约束
|
|
2058
2063
|
// Input Material Contract: 处理 hard-blocking 结果
|
|
2059
2064
|
// Privacy Gate: 隐私/敏感信息策略阻断
|
|
2060
2065
|
const isBlocked = expansion.prompt.startsWith("## 阻塞:输入材料禁止读取")
|
|
@@ -2205,44 +2210,9 @@ export async function registerTools(server, deps) {
|
|
|
2205
2210
|
if (!decisionContract.passed) {
|
|
2206
2211
|
advisories.decision_contract_advisory = decisionContract.advisory;
|
|
2207
2212
|
}
|
|
2208
|
-
// 设置 plan_proposal_gate — sf_expand 成功后必须设置,否则 sf_verify 等写工具会被阻断
|
|
2209
|
-
{
|
|
2210
|
-
const { evaluatePlanProposalGate, inferPlanGateTaskType } = await import("../../engine/plan_proposal_gate.js");
|
|
2211
|
-
const routeForGate = expansion.workflow_trace?.route ?? expansionRoute ?? "code_change";
|
|
2212
|
-
const taskTypeForGate = inferPlanGateTaskType(ctx.intent);
|
|
2213
|
-
// 轻量路径(acceptance/review/read_only)自动通过
|
|
2214
|
-
const isLightweight = routeForGate === "acceptance" || routeForGate === "review"
|
|
2215
|
-
|| routeForGate === "direct_answer" || routeForGate === "analysis";
|
|
2216
|
-
if (isLightweight) {
|
|
2217
|
-
await taskContext.setPlanProposalGate(args.task_id, {
|
|
2218
|
-
passed: true,
|
|
2219
|
-
plan_gate_status: "passed",
|
|
2220
|
-
required_level: "brief_plan",
|
|
2221
|
-
reason_zh: "轻量路径自动通过",
|
|
2222
|
-
violations: [],
|
|
2223
|
-
evidence_refs: [],
|
|
2224
|
-
blocked_actions: [],
|
|
2225
|
-
});
|
|
2226
|
-
}
|
|
2227
|
-
else {
|
|
2228
|
-
const gateResult = evaluatePlanProposalGate({
|
|
2229
|
-
task_id: args.task_id,
|
|
2230
|
-
task_type: taskTypeForGate,
|
|
2231
|
-
user_intent: ctx.intent,
|
|
2232
|
-
plan_level: "execution_plan",
|
|
2233
|
-
plan_summary_zh: ctx.intent.slice(0, 200),
|
|
2234
|
-
proposed_steps: [expansionRoute ?? "execute"],
|
|
2235
|
-
verification_plan: (expansion.acceptance?.automated ?? []).map((a) => a.description ?? String(a)),
|
|
2236
|
-
risks: [],
|
|
2237
|
-
evidence_refs: expansion.matched_knowledge ?? [],
|
|
2238
|
-
});
|
|
2239
|
-
await taskContext.setPlanProposalGate(args.task_id, gateResult);
|
|
2240
|
-
}
|
|
2241
|
-
}
|
|
2242
2213
|
// 存储膨胀结果
|
|
2243
2214
|
try {
|
|
2244
2215
|
await taskContext.setExpansion(args.task_id, expansion);
|
|
2245
|
-
// 存储产物记录
|
|
2246
2216
|
if (expansion.output_artifact_record) {
|
|
2247
2217
|
await taskContext.setArtifact(args.task_id, expansion.output_artifact_record);
|
|
2248
2218
|
}
|
|
@@ -2277,6 +2247,46 @@ export async function registerTools(server, deps) {
|
|
|
2277
2247
|
}
|
|
2278
2248
|
throw updateErr;
|
|
2279
2249
|
}
|
|
2250
|
+
// 设置 plan_proposal_gate — 必须在 setExpansion/setArtifact/updateStatus 之后
|
|
2251
|
+
// 这些操作各自 load-save 会覆盖之前的写入,所以 plan_proposal_gate 必须最后设置
|
|
2252
|
+
{
|
|
2253
|
+
const { evaluatePlanProposalGate, inferPlanGateTaskType } = await import("../../engine/plan_proposal_gate.js");
|
|
2254
|
+
const routeForGate = expansion.workflow_trace?.route ?? expansionRoute ?? "code_change";
|
|
2255
|
+
const taskTypeForGate = inferPlanGateTaskType(ctx.intent);
|
|
2256
|
+
const isLightweight = routeForGate === "acceptance" || routeForGate === "review"
|
|
2257
|
+
|| routeForGate === "direct_answer" || routeForGate === "analysis";
|
|
2258
|
+
try {
|
|
2259
|
+
if (isLightweight) {
|
|
2260
|
+
await taskContext.setPlanProposalGate(args.task_id, {
|
|
2261
|
+
passed: true,
|
|
2262
|
+
plan_gate_status: "passed",
|
|
2263
|
+
required_level: "brief_plan",
|
|
2264
|
+
reason_zh: "轻量路径自动通过",
|
|
2265
|
+
violations: [],
|
|
2266
|
+
evidence_refs: [],
|
|
2267
|
+
blocked_actions: [],
|
|
2268
|
+
});
|
|
2269
|
+
}
|
|
2270
|
+
else {
|
|
2271
|
+
const gateResult = evaluatePlanProposalGate({
|
|
2272
|
+
task_id: args.task_id,
|
|
2273
|
+
task_type: taskTypeForGate,
|
|
2274
|
+
user_intent: ctx.intent,
|
|
2275
|
+
plan_level: "execution_plan",
|
|
2276
|
+
plan_summary_zh: ctx.intent.slice(0, 200),
|
|
2277
|
+
proposed_steps: [expansionRoute ?? "execute"],
|
|
2278
|
+
verification_plan: (expansion.acceptance?.automated ?? []).map((a) => a.description ?? String(a)),
|
|
2279
|
+
risks: [],
|
|
2280
|
+
evidence_refs: expansion.matched_knowledge ?? [],
|
|
2281
|
+
});
|
|
2282
|
+
await taskContext.setPlanProposalGate(args.task_id, gateResult);
|
|
2283
|
+
}
|
|
2284
|
+
}
|
|
2285
|
+
catch (gateErr) {
|
|
2286
|
+
// gate 设置失败不阻断主流程,后续写工具会重新检查
|
|
2287
|
+
console.error(`[sf_expand] plan_proposal_gate 设置失败: ${gateErr.message}`);
|
|
2288
|
+
}
|
|
2289
|
+
}
|
|
2280
2290
|
const expandPayload = Object.keys(advisories).length > 0
|
|
2281
2291
|
? { ...expansion, advisories }
|
|
2282
2292
|
: expansion;
|