soloforge 1.4.6 → 1.4.7
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/README.md +40 -4
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +85 -3
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/engine/extension_platform_contracts.d.ts +6 -0
- package/dist/engine/extension_platform_contracts.d.ts.map +1 -1
- package/dist/engine/extension_platform_contracts.js.map +1 -1
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +15 -0
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -78,7 +78,43 @@ soloforge init --adapter all # 同时生成所有适配器配置
|
|
|
78
78
|
| `.codex/config.toml` / `.codex/hooks.json` / `AGENTS.md` | Codex App 配置 |
|
|
79
79
|
| `.trae/mcp.json` / `.trae/rules/project_rules.md` | Trae IDE 配置 |
|
|
80
80
|
|
|
81
|
-
SoloForge
|
|
81
|
+
SoloForge 不会覆盖已有知识文件。旧项目补齐新模板或适配器时,优先使用 `sync-templates` 和 `sync-adapters`,不要把 `init` 当作升级命令。
|
|
82
|
+
|
|
83
|
+
## 更新与旧项目同步
|
|
84
|
+
|
|
85
|
+
用户升级已发布的全局 CLI:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm update -g soloforge
|
|
89
|
+
# 或强制安装最新发布版
|
|
90
|
+
npm install -g soloforge@latest
|
|
91
|
+
|
|
92
|
+
soloforge --version
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
旧项目补齐新增模板、规则或适配器文件:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
cd /path/to/my-project
|
|
99
|
+
|
|
100
|
+
soloforge sync-templates
|
|
101
|
+
soloforge sync-adapters
|
|
102
|
+
|
|
103
|
+
soloforge sync-templates --apply --confirm
|
|
104
|
+
soloforge sync-adapters --apply --confirm
|
|
105
|
+
|
|
106
|
+
soloforge doctor
|
|
107
|
+
soloforge audit-design-artifacts
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
存量设计产物需要升级到当前标准时,单独使用设计产物升级命令:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
soloforge upgrade-design-artifacts
|
|
114
|
+
soloforge upgrade-design-artifacts --apply --confirm
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
只有新项目首次接入 SoloForge 时才运行 `soloforge init`。已经有 `.soloforge/` 的旧项目,优先用同步和审计命令;如果只是 AI 工具配置缺失,可按 `doctor` 输出的恢复命令处理。
|
|
82
118
|
|
|
83
119
|
## 日常命令
|
|
84
120
|
|
|
@@ -272,13 +308,13 @@ soloforge doctor
|
|
|
272
308
|
|
|
273
309
|
如果 doctor 报告 MCP 配置缺失、hook 漂移、旧任务指针或恢复路径问题,先按输出的恢复命令处理。SoloForge 不建议手动删除 `.soloforge/state`;需要恢复陈旧任务时应使用受控命令或 MCP 工具。
|
|
274
310
|
|
|
275
|
-
###
|
|
311
|
+
### 想补齐或修复配置
|
|
276
312
|
|
|
277
313
|
```bash
|
|
278
|
-
soloforge
|
|
314
|
+
soloforge doctor
|
|
279
315
|
```
|
|
280
316
|
|
|
281
|
-
|
|
317
|
+
先按 `doctor` 输出的恢复命令处理。旧项目需要补齐新增模板或适配器文件时,使用 `sync-templates` / `sync-adapters`;新项目首次接入时才运行 `soloforge init`。
|
|
282
318
|
|
|
283
319
|
如果 `status` 提示 `version` 数字/字符串、`scope` 字符串/数组或 `config.evidence.json` 过期,这属于机械配置问题,不需要逐字段人工确认:
|
|
284
320
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAOL,KAAK,UAAU,EAKhB,MAAM,mDAAmD,CAAC;AAmH3D;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc;IACd,cAAc,EAAE,qBAAqB,CAAC;IACtC,eAAe;IACf,WAAW,EAAE,kBAAkB,CAAC;IAChC,yDAAyD;IACzD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,6 +127,12 @@ const ExpandSchema = {
|
|
|
127
127
|
input_material_confirmations: z.array(z.string()).optional().describe("已确认安全的输入材料路径列表"),
|
|
128
128
|
architecture_decision_workshop: z.unknown().optional().describe("架构设计前已讨论并确认的六域决策记录"),
|
|
129
129
|
decision_workshop: z.unknown().optional().describe("通用决策研讨合同(技术选型/数据迁移/安全策略/部署/重构/第三方集成等)"),
|
|
130
|
+
technology_decision_contract: z.unknown().optional().describe("技术决策主权契约,含选项、推荐、证据、回滚计划和 human_gate_evidence"),
|
|
131
|
+
technology_decision_record: z.unknown().optional().describe("技术决策执行记录,记录已批准/已实现等显式决策状态"),
|
|
132
|
+
detail_discipline_contract: z.unknown().optional().describe("细节纪律契约,声明必须覆盖的边界、失败路径、回滚和证据维度"),
|
|
133
|
+
provided_details: z.unknown().optional().describe("细节纪律已提供证据,按 required_dimensions 映射为字符串数组"),
|
|
134
|
+
first_principles_frame: z.unknown().optional().describe("高影响任务的第一性原理框架"),
|
|
135
|
+
brainstorm_session: z.unknown().optional().describe("不确定项/方案选择的脑暴与方案探索会话"),
|
|
130
136
|
design_artifact_pack: z.unknown().optional().describe("设计产物包路径映射或已复验状态"),
|
|
131
137
|
ood_solid_summary: z.unknown().optional().describe("复杂编码任务的 OOD/SOLID 设计摘要"),
|
|
132
138
|
backend_implementation_work_package: z.unknown().optional().describe("后端接口实现的工程工作包"),
|
|
@@ -1462,11 +1468,47 @@ export async function registerTools(server, deps) {
|
|
|
1462
1468
|
if (existingDecisionWorkshop.error) {
|
|
1463
1469
|
return { result: { error: existingDecisionWorkshop.error, status: "invalid_input" } };
|
|
1464
1470
|
}
|
|
1471
|
+
const existingTechnologyDecisionContract = parseContractObject(ctx.technology_decision_contract, "technology_decision_contract");
|
|
1472
|
+
if (existingTechnologyDecisionContract.error) {
|
|
1473
|
+
return { result: { error: existingTechnologyDecisionContract.error, status: "invalid_input" } };
|
|
1474
|
+
}
|
|
1475
|
+
const existingTechnologyDecisionRecord = parseContractObject(ctx.technology_decision_record, "technology_decision_record");
|
|
1476
|
+
if (existingTechnologyDecisionRecord.error) {
|
|
1477
|
+
return { result: { error: existingTechnologyDecisionRecord.error, status: "invalid_input" } };
|
|
1478
|
+
}
|
|
1479
|
+
const existingDetailContract = parseContractObject(ctx.detail_discipline_contract, "detail_discipline_contract");
|
|
1480
|
+
if (existingDetailContract.error) {
|
|
1481
|
+
return { result: { error: existingDetailContract.error, status: "invalid_input" } };
|
|
1482
|
+
}
|
|
1483
|
+
const existingProvidedDetails = parseContractObject(ctx.provided_details, "provided_details");
|
|
1484
|
+
if (existingProvidedDetails.error) {
|
|
1485
|
+
return { result: { error: existingProvidedDetails.error, status: "invalid_input" } };
|
|
1486
|
+
}
|
|
1487
|
+
const existingFirstPrinciplesFrame = parseContractObject(ctx.first_principles_frame, "first_principles_frame");
|
|
1488
|
+
if (existingFirstPrinciplesFrame.error) {
|
|
1489
|
+
return { result: { error: existingFirstPrinciplesFrame.error, status: "invalid_input" } };
|
|
1490
|
+
}
|
|
1491
|
+
const existingBrainstormSession = parseContractObject(ctx.brainstorm_session, "brainstorm_session");
|
|
1492
|
+
if (existingBrainstormSession.error) {
|
|
1493
|
+
return { result: { error: existingBrainstormSession.error, status: "invalid_input" } };
|
|
1494
|
+
}
|
|
1465
1495
|
if (existingArchitectureWorkshop.value)
|
|
1466
1496
|
ctx.architecture_decision_workshop = existingArchitectureWorkshop.value;
|
|
1467
1497
|
if (existingDecisionWorkshop.value) {
|
|
1468
1498
|
ctx.decision_workshop = (await lazyDecisionWorkshop()).normalizeDecisionWorkshopContract(existingDecisionWorkshop.value, args.task_id) ?? existingDecisionWorkshop.value;
|
|
1469
1499
|
}
|
|
1500
|
+
if (existingTechnologyDecisionContract.value)
|
|
1501
|
+
ctx.technology_decision_contract = existingTechnologyDecisionContract.value;
|
|
1502
|
+
if (existingTechnologyDecisionRecord.value)
|
|
1503
|
+
ctx.technology_decision_record = existingTechnologyDecisionRecord.value;
|
|
1504
|
+
if (existingDetailContract.value)
|
|
1505
|
+
ctx.detail_discipline_contract = existingDetailContract.value;
|
|
1506
|
+
if (existingProvidedDetails.value)
|
|
1507
|
+
ctx.provided_details = existingProvidedDetails.value;
|
|
1508
|
+
if (existingFirstPrinciplesFrame.value)
|
|
1509
|
+
ctx.first_principles_frame = existingFirstPrinciplesFrame.value;
|
|
1510
|
+
if (existingBrainstormSession.value)
|
|
1511
|
+
ctx.brainstorm_session = existingBrainstormSession.value;
|
|
1470
1512
|
if (args.architecture_decision_workshop) {
|
|
1471
1513
|
const parsed = parseContractObject(args.architecture_decision_workshop, "architecture_decision_workshop");
|
|
1472
1514
|
if (parsed.error)
|
|
@@ -1479,6 +1521,42 @@ export async function registerTools(server, deps) {
|
|
|
1479
1521
|
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1480
1522
|
ctx.decision_workshop = (await lazyDecisionWorkshop()).normalizeDecisionWorkshopContract(parsed.value, args.task_id) ?? parsed.value;
|
|
1481
1523
|
}
|
|
1524
|
+
if (args.technology_decision_contract) {
|
|
1525
|
+
const parsed = parseContractObject(args.technology_decision_contract, "technology_decision_contract");
|
|
1526
|
+
if (parsed.error)
|
|
1527
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1528
|
+
ctx.technology_decision_contract = parsed.value;
|
|
1529
|
+
}
|
|
1530
|
+
if (args.technology_decision_record) {
|
|
1531
|
+
const parsed = parseContractObject(args.technology_decision_record, "technology_decision_record");
|
|
1532
|
+
if (parsed.error)
|
|
1533
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1534
|
+
ctx.technology_decision_record = parsed.value;
|
|
1535
|
+
}
|
|
1536
|
+
if (args.detail_discipline_contract) {
|
|
1537
|
+
const parsed = parseContractObject(args.detail_discipline_contract, "detail_discipline_contract");
|
|
1538
|
+
if (parsed.error)
|
|
1539
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1540
|
+
ctx.detail_discipline_contract = parsed.value;
|
|
1541
|
+
}
|
|
1542
|
+
if (args.provided_details) {
|
|
1543
|
+
const parsed = parseContractObject(args.provided_details, "provided_details");
|
|
1544
|
+
if (parsed.error)
|
|
1545
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1546
|
+
ctx.provided_details = parsed.value;
|
|
1547
|
+
}
|
|
1548
|
+
if (args.first_principles_frame) {
|
|
1549
|
+
const parsed = parseContractObject(args.first_principles_frame, "first_principles_frame");
|
|
1550
|
+
if (parsed.error)
|
|
1551
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1552
|
+
ctx.first_principles_frame = parsed.value;
|
|
1553
|
+
}
|
|
1554
|
+
if (args.brainstorm_session) {
|
|
1555
|
+
const parsed = parseContractObject(args.brainstorm_session, "brainstorm_session");
|
|
1556
|
+
if (parsed.error)
|
|
1557
|
+
return { result: { error: parsed.error, status: "invalid_input" } };
|
|
1558
|
+
ctx.brainstorm_session = parsed.value;
|
|
1559
|
+
}
|
|
1482
1560
|
if (args.design_artifact_pack) {
|
|
1483
1561
|
ctx.design_artifact_pack = args.design_artifact_pack;
|
|
1484
1562
|
}
|
|
@@ -1491,7 +1569,11 @@ export async function registerTools(server, deps) {
|
|
|
1491
1569
|
if (args.code_observability_work_package) {
|
|
1492
1570
|
ctx.code_observability_work_package = args.code_observability_work_package;
|
|
1493
1571
|
}
|
|
1494
|
-
if (args.architecture_decision_workshop || args.decision_workshop
|
|
1572
|
+
if (args.architecture_decision_workshop || args.decision_workshop
|
|
1573
|
+
|| args.technology_decision_contract || args.technology_decision_record
|
|
1574
|
+
|| args.detail_discipline_contract || args.provided_details
|
|
1575
|
+
|| args.first_principles_frame || args.brainstorm_session
|
|
1576
|
+
|| args.design_artifact_pack
|
|
1495
1577
|
|| args.ood_solid_summary || args.backend_implementation_work_package || args.code_observability_work_package) {
|
|
1496
1578
|
await taskContext.save(ctx);
|
|
1497
1579
|
}
|
|
@@ -1648,7 +1730,7 @@ export async function registerTools(server, deps) {
|
|
|
1648
1730
|
});
|
|
1649
1731
|
}
|
|
1650
1732
|
}
|
|
1651
|
-
const tdc = ctx
|
|
1733
|
+
const tdc = ctx.technology_decision_contract;
|
|
1652
1734
|
if (tdc?.human_gate_evidence) {
|
|
1653
1735
|
evg.registry.register({
|
|
1654
1736
|
source_type: "user_confirmation",
|
|
@@ -2083,7 +2165,7 @@ export async function registerTools(server, deps) {
|
|
|
2083
2165
|
}
|
|
2084
2166
|
}
|
|
2085
2167
|
// 技术决策契约含 human_gate_evidence → 注册为 user_confirmation(真实项目证据)
|
|
2086
|
-
const _tdc = ctx
|
|
2168
|
+
const _tdc = ctx.technology_decision_contract;
|
|
2087
2169
|
if (_tdc?.human_gate_evidence) {
|
|
2088
2170
|
_evg.registry.register({
|
|
2089
2171
|
source_type: "user_confirmation",
|