soloforge 1.1.40 → 1.1.42
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 +57 -0
- package/dist/adapters/shared/workflow_template.js +1 -1
- package/dist/bin/commands/check_write.d.ts +1 -1
- package/dist/bin/commands/check_write.d.ts.map +1 -1
- package/dist/bin/commands/check_write.js +13 -34
- package/dist/bin/commands/check_write.js.map +1 -1
- package/dist/bin/commands/modify.d.ts +2 -1
- package/dist/bin/commands/modify.d.ts.map +1 -1
- package/dist/bin/commands/modify.js +29 -15
- package/dist/bin/commands/modify.js.map +1 -1
- package/dist/bin/commands/review.d.ts +3 -2
- package/dist/bin/commands/review.d.ts.map +1 -1
- package/dist/bin/commands/review.js +179 -46
- package/dist/bin/commands/review.js.map +1 -1
- package/dist/bin/soloforge.js +0 -18
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/context_engine/companion_injector.d.ts +16 -3
- package/dist/engine/context_engine/companion_injector.d.ts.map +1 -1
- package/dist/engine/context_engine/companion_injector.js +228 -35
- package/dist/engine/context_engine/companion_injector.js.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.d.ts +1 -43
- package/dist/engine/contracts/artifact_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_contract_registry.js +24 -100
- package/dist/engine/contracts/artifact_contract_registry.js.map +1 -1
- package/dist/engine/contracts/artifact_process_rules.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_process_rules.js +0 -12
- package/dist/engine/contracts/artifact_process_rules.js.map +1 -1
- package/dist/engine/contracts/artifact_schema_registry.d.ts.map +1 -1
- package/dist/engine/contracts/artifact_schema_registry.js +0 -24
- package/dist/engine/contracts/artifact_schema_registry.js.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts +29 -0
- package/dist/engine/contracts/tool_invocation_contract_registry.d.ts.map +1 -1
- package/dist/engine/contracts/tool_invocation_contract_registry.js +32 -21
- package/dist/engine/contracts/tool_invocation_contract_registry.js.map +1 -1
- package/dist/engine/core/paths.d.ts +0 -2
- package/dist/engine/core/paths.d.ts.map +1 -1
- package/dist/engine/core/paths.js +0 -2
- package/dist/engine/core/paths.js.map +1 -1
- package/dist/engine/knowledge/knowledge_writer.js +1 -1
- package/dist/engine/pipeline/artifact_aliases.d.ts +56 -3
- package/dist/engine/pipeline/artifact_aliases.d.ts.map +1 -1
- package/dist/engine/pipeline/artifact_aliases.js +377 -24
- package/dist/engine/pipeline/artifact_aliases.js.map +1 -1
- package/dist/engine/pipeline/artifact_resolver.d.ts +82 -0
- package/dist/engine/pipeline/artifact_resolver.d.ts.map +1 -0
- package/dist/engine/pipeline/artifact_resolver.js +458 -0
- package/dist/engine/pipeline/artifact_resolver.js.map +1 -0
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts +2 -2
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.d.ts.map +1 -1
- package/dist/engine/pipeline/intent_expander/knowledge_resolution.js.map +1 -1
- package/dist/engine/pipeline/orchestrate_single_artifact.d.ts +185 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.d.ts.map +1 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.js +772 -0
- package/dist/engine/pipeline/orchestrate_single_artifact.js.map +1 -0
- package/dist/engine/pipeline/scope_resolver.js +1 -1
- package/dist/engine/pipeline/scope_resolver.js.map +1 -1
- package/dist/engine/pipeline/state_machine/certainty_gate.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/certainty_gate.js +122 -9
- package/dist/engine/pipeline/state_machine/certainty_gate.js.map +1 -1
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts +1 -13
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.js +65 -73
- package/dist/engine/pipeline/state_machine/pipeline_state_machine.js.map +1 -1
- package/dist/engine/pipeline/state_machine/sf_command_parser.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/sf_command_parser.js +24 -19
- package/dist/engine/pipeline/state_machine/sf_command_parser.js.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_command_registry.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_command_registry.js +7 -0
- package/dist/engine/pipeline/state_machine/stage_command_registry.js.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_executor.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/stage_executor.js +5 -11
- package/dist/engine/pipeline/state_machine/stage_executor.js.map +1 -1
- package/dist/engine/pipeline/state_machine/static_route_table.d.ts +2 -0
- package/dist/engine/pipeline/state_machine/static_route_table.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/static_route_table.js +2 -0
- package/dist/engine/pipeline/state_machine/static_route_table.js.map +1 -1
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts +25 -0
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.d.ts.map +1 -1
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.js +18 -0
- package/dist/engine/pipeline/state_machine/uncertainty_bridge.js.map +1 -1
- package/dist/engine/pipeline/target_classifier.d.ts +48 -0
- package/dist/engine/pipeline/target_classifier.d.ts.map +1 -0
- package/dist/engine/pipeline/target_classifier.js +129 -0
- package/dist/engine/pipeline/target_classifier.js.map +1 -0
- package/dist/engine/pipeline/task_planner.js +1 -1
- package/dist/engine/pipeline/task_planner.js.map +1 -1
- package/dist/engine/release/foundation_scenario_registry.js +1 -1
- package/dist/engine/release/foundation_scenario_registry.js.map +1 -1
- package/dist/engine/templates/asset_manifest.d.ts.map +1 -1
- package/dist/engine/templates/asset_manifest.js +1 -0
- package/dist/engine/templates/asset_manifest.js.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/rules_shared.d.ts.map +1 -1
- package/dist/engine/templates/explicit_asset_registry/rules_shared.js +22 -0
- package/dist/engine/templates/explicit_asset_registry/rules_shared.js.map +1 -1
- package/dist/server/tools/cep_assessment.d.ts +6 -0
- package/dist/server/tools/cep_assessment.d.ts.map +1 -1
- package/dist/server/tools/cep_assessment.js +23 -0
- package/dist/server/tools/cep_assessment.js.map +1 -1
- package/dist/server/tools/middleware.d.ts.map +1 -1
- package/dist/server/tools/middleware.js +78 -1
- package/dist/server/tools/middleware.js.map +1 -1
- package/dist/server/tools/tool_groups/product_operations.d.ts +5 -3
- package/dist/server/tools/tool_groups/product_operations.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/product_operations.js +5 -105
- package/dist/server/tools/tool_groups/product_operations.js.map +1 -1
- package/dist/server/tools/tool_groups/state_machine.d.ts +34 -3
- package/dist/server/tools/tool_groups/state_machine.d.ts.map +1 -1
- package/dist/server/tools/tool_groups/state_machine.js +454 -236
- package/dist/server/tools/tool_groups/state_machine.js.map +1 -1
- package/dist/server/tools/tool_names.d.ts +0 -3
- package/dist/server/tools/tool_names.d.ts.map +1 -1
- package/dist/server/tools/tool_names.js +1 -4
- package/dist/server/tools/tool_names.js.map +1 -1
- package/dist/types/state_machine.d.ts +28 -1
- package/dist/types/state_machine.d.ts.map +1 -1
- package/dist/types/state_machine.js +1 -1
- package/dist/types/state_machine.js.map +1 -1
- package/package.json +1 -1
- package/templates/artifacts/existing-system//344/270/200/351/224/256/345/274/200/345/205/263/351/205/215/347/275/256/346/250/241/347/211/210.json +2 -1
- package/templates/artifacts/existing-system//345/216/206/345/217/262/346/225/260/346/215/256/346/270/205/346/264/227/350/204/232/346/234/254/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//345/216/206/345/217/262/351/201/227/347/225/231/351/233/267/345/214/272/346/270/205/345/215/225/346/250/241/347/211/210.md +3 -1
- package/templates/artifacts/existing-system//345/220/221/345/220/216/345/205/274/345/256/271/346/200/247/345/220/210/350/247/204/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//345/242/236/351/207/217/350/276/271/347/225/214/347/225/214/345/256/232/346/226/207/346/241/243/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//346/224/271/351/200/240/345/275/261/345/223/215/350/214/203/345/233/264/350/257/204/344/274/260/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/existing-system//346/225/260/346/215/256/350/241/200/347/274/230/345/233/276/346/250/241/347/211/210.md +3 -2
- package/templates/artifacts/existing-system//346/226/260/350/200/201/351/200/273/350/276/221/346/257/224/345/257/271/346/227/245/345/277/227/346/250/241/347/211/210.md +3 -1
- package/templates/artifacts/existing-system//347/264/247/346/200/245/345/233/236/346/273/232/346/211/213/345/206/214/346/250/241/347/211/210.md +3 -2
- package/templates/artifacts/existing-system//351/232/224/347/246/273/351/200/202/351/205/215/345/231/250/346/226/271/346/241/210/346/250/241/347/211/210.md +1 -0
- package/templates/artifacts/shared/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 +3 -3
- package/templates/artifacts/shared//344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212/346/250/241/347/211/210.md +1 -1
- package/templates/artifacts/shared//345/210/207/347/211/207/350/256/241/345/210/222/346/250/241/347/211/210.md +6 -2
- package/templates/artifacts/shared//345/216/237/345/236/213/350/257/264/346/230/216/346/250/241/347/211/210.md +5 -3
- package/templates/artifacts/shared//346/216/245/345/217/243/345/257/271/346/216/245/346/226/271/346/241/210/346/250/241/347/211/210.md +2 -2
- package/templates/artifacts/shared//346/225/260/346/215/256/345/272/223/345/217/230/346/233/264/346/226/271/346/241/210/346/250/241/347/211/210.md +2 -2
- package/templates/artifacts/shared//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 +2 -2
- package/templates/artifacts/shared//346/236/266/346/236/204/350/256/276/350/256/241/346/250/241/347/211/210.md +6 -3
- package/templates/artifacts/shared//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 +5 -5
- package/templates/artifacts/shared//350/257/246/347/273/206/350/256/276/350/256/241/346/250/241/347/211/210.md +3 -3
- package/templates/artifacts/shared//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +7 -6
- package/templates/checklists//344/274/232/350/257/235/346/201/242/345/244/215.md +1 -1
- package/templates/gates/shared/gate-/344/273/243/347/240/201/345/256/241/346/237/245.yaml +7 -0
- package/templates/gates/shared/gate-/345/210/207/347/211/207/345/256/241/346/237/245.yaml +14 -2
- package/templates/gates/shared/gate-/347/274/226/347/240/201/345/256/236/347/216/260.yaml +12 -0
- package/templates/internal/patterns/Hook/345/261/202/344/272/247/347/211/251/347/273/223/346/236/204/346/240/241/351/252/214.md +1 -1
- package/templates/procedures/Schema/345/217/230/346/233/264/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//345/256/211/345/205/250/345/212/240/345/233/272/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/200/247/350/203/275/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/216/245/345/217/243/351/233/206/346/210/220/346/265/201/346/260/264/347/272/277.md +1 -1
- package/templates/procedures//346/236/266/346/236/204/350/256/276/350/256/241/345/267/245/344/275/234/346/265/201.md +1 -2
- package/templates/procedures//346/246/202/345/277/265/351/252/214/350/257/201/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//346/272/220/347/240/201/345/216/237/345/236/213/344/272/244/344/273/230/346/265/201/347/250/213.md +2 -2
- package/templates/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//350/277/201/347/247/273/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/procedures//351/207/215/346/236/204/346/265/201/346/260/264/347/272/277.md +2 -2
- package/templates/rules/shared//344/273/243/347/240/201/345/217/257/347/273/264/346/212/244/346/200/247/344/270/216/345/217/257/350/247/202/346/265/213/346/200/247/345/256/241/346/237/245.md +21 -3
- package/templates/rules/shared//344/273/243/347/240/201/346/263/250/351/207/212/344/270/216/346/227/245/345/277/227/345/245/221/347/272/246/350/247/204/345/210/231.md +122 -0
package/README.md
CHANGED
|
@@ -364,6 +364,63 @@ SoloForge 在运行时执行以下强制护栏:
|
|
|
364
364
|
|
|
365
365
|
例如让 AI “从 `/tmp/prototype.zip` 抓取原型说明”,SoloForge 会把它作为只读外部材料处理,要求产物写入 `.soloforge/output/**`,而不是修改项目源码。
|
|
366
366
|
|
|
367
|
+
## 产物目录规范
|
|
368
|
+
|
|
369
|
+
SoloForge 采用固定的 `docs/` 目录结构管理项目产物。每个产物有明确的存放位置和上下游依赖,系统直接按固定路径查找,无需猜测。
|
|
370
|
+
|
|
371
|
+
### 目录结构
|
|
372
|
+
|
|
373
|
+
```text
|
|
374
|
+
docs/
|
|
375
|
+
├── context/ # 输入材料
|
|
376
|
+
│ ├── 需求文档.md ← requirement_analysis
|
|
377
|
+
│ └── 原型源码包/ ← source_code_package(含各端 zip)
|
|
378
|
+
├── analyze/ # 分析产物
|
|
379
|
+
│ └── 01-原型说明.md ← prototype_spec
|
|
380
|
+
├── architecture/ # 设计产物
|
|
381
|
+
│ ├── 00-架构决策记录.md ← tech_decision_record
|
|
382
|
+
│ ├── 01-架构设计文档.md ← design_doc
|
|
383
|
+
│ ├── 02-数据库设计文档.md ← database_design
|
|
384
|
+
│ ├── 03-API接口规格文档.md ← api_spec
|
|
385
|
+
│ ├── 04-开发切片计划.md ← task_plan
|
|
386
|
+
│ └── 05-详细设计文档.md ← detailed_design(可选)
|
|
387
|
+
├── traceability/ # 追踪产物
|
|
388
|
+
│ └── 01-需求原型设计实现追踪矩阵.md ← traceability_matrix
|
|
389
|
+
├── api/ # API 定义
|
|
390
|
+
│ └── openapi.yaml
|
|
391
|
+
├── review/ # 审查报告
|
|
392
|
+
│ └── 99-设计一致性验收报告.md
|
|
393
|
+
└── db/ # 数据库资产
|
|
394
|
+
└── migration/
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### 节点依赖表
|
|
398
|
+
|
|
399
|
+
每个产物的固定路径、输入依赖和触发命令:
|
|
400
|
+
|
|
401
|
+
| 产物(kind) | 固定路径 | 输入(consumes) | 触发命令示例 |
|
|
402
|
+
|---|---|---|---|
|
|
403
|
+
| 需求分析 `requirement_analysis` | `docs/context/需求文档.md` | — | `[sf]审查需求` |
|
|
404
|
+
| 原型源码包 `source_code_package` | `docs/context/原型源码包/` | — | 输入材料,非产出 |
|
|
405
|
+
| 原型说明 `prototype_spec` | `docs/analyze/*/01-原型说明.md` | 需求分析 + 原型源码包 | `[sf]审查原型说明` |
|
|
406
|
+
| 架构决策 `tech_decision_record` | `docs/architecture/00-架构决策记录.md` | — | `[sf]审查决策记录` |
|
|
407
|
+
| 架构设计 `design_doc` | `docs/architecture/01-架构设计文档.md` | 需求分析 + 原型说明 + 决策记录 | `[sf]审查架构设计` |
|
|
408
|
+
| 数据库设计 `database_design` | `docs/architecture/02-数据库设计文档.md` | 决策记录 + 架构设计 | `[sf]审查数据库设计` |
|
|
409
|
+
| 接口设计 `api_spec` | `docs/architecture/03-API接口规格文档.md` | 决策记录 + 架构设计 + 数据库设计 | `[sf]审查接口设计` |
|
|
410
|
+
| 切片计划 `task_plan` | `docs/architecture/04-开发切片计划.md` | 数据库设计 + 接口设计 | `[sf]审查切片计划` |
|
|
411
|
+
| 详细设计 `detailed_design` | `docs/architecture/05-详细设计文档.md` | 架构设计 + 数据库设计 | `[sf]审查详细设计` |
|
|
412
|
+
| 追踪矩阵 `traceability_matrix` | `docs/traceability/01-需求原型设计实现追踪矩阵.md` | 需求 + 原型 + 架构 + 数据库 + 接口 + 切片 | `[sf]审查追踪矩阵` |
|
|
413
|
+
|
|
414
|
+
### 新项目初始化
|
|
415
|
+
|
|
416
|
+
按上述结构创建目录和文件即可:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
mkdir -p docs/context docs/analyze docs/architecture docs/traceability docs/api docs/review docs/db/migration
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
SoloForge 在执行 `[sf]审查` 命令时,会按固定路径查找上游产物。如果某个产物缺失,系统会返回 `missing_upstream` 状态并提示需要先产出的产物及其模板。
|
|
423
|
+
|
|
367
424
|
## Cursor 说明
|
|
368
425
|
|
|
369
426
|
Cursor 暂无内置适配器。可以先生成 `.mcp.json`,再手动复制到 `.cursor/mcp.json`:
|
|
@@ -13,7 +13,7 @@ import { getWorkflowRuleMechanismIds as _getWorkflowRuleMechanismIds } from "../
|
|
|
13
13
|
// 从 engine 层 re-export 以保持向后兼容
|
|
14
14
|
export { generateWorkflowRules, getWorkflowRuleMechanismIds, EMBEDDED_CHECKSUM } from "../../engine/templates/workflow_rule_generator.js";
|
|
15
15
|
/** 当前嵌入的权威规则校验和 — 由 `npm run update-workflow-checksum` 更新。 */
|
|
16
|
-
const EMBEDDED_CHECKSUM = "
|
|
16
|
+
const EMBEDDED_CHECKSUM = "49fd996b2af722a2";
|
|
17
17
|
/**
|
|
18
18
|
* 计算所有权威规则资产的第一行非注释内容组合的 SHA256 校验和。
|
|
19
19
|
* 权威规则内容变化时校验和必然变化。
|
|
@@ -21,7 +21,7 @@ export declare function hasDesignArtifacts(projectPath: string): boolean;
|
|
|
21
21
|
*
|
|
22
22
|
* 匹配策略:
|
|
23
23
|
* 1. 路径中包含 ARTIFACT_ALIASES 的 defaultName 关键词
|
|
24
|
-
* 2.
|
|
24
|
+
* 2. docs/ 路径下的 .md 文件
|
|
25
25
|
*/
|
|
26
26
|
export declare function inferArtifactKindFromPath(relativeFilePath: string): ArtifactKind | undefined;
|
|
27
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check_write.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAQ,MAAM,YAAY,CAAC;AAUtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAsB,aAAa,kBAqLlC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAkBtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAsB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0BhI;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB/D;AAID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"check_write.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAQ,MAAM,YAAY,CAAC;AAUtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAsB,aAAa,kBAqLlC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAI5E;AAED,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAkBtE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQnD;AAED,wBAAsB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0BhI;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAgB/D;AAID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQ5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB;IAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiC/D"}
|
|
@@ -310,7 +310,7 @@ export function hasDesignArtifacts(projectPath) {
|
|
|
310
310
|
*
|
|
311
311
|
* 匹配策略:
|
|
312
312
|
* 1. 路径中包含 ARTIFACT_ALIASES 的 defaultName 关键词
|
|
313
|
-
* 2.
|
|
313
|
+
* 2. docs/ 路径下的 .md 文件
|
|
314
314
|
*/
|
|
315
315
|
export function inferArtifactKindFromPath(relativeFilePath) {
|
|
316
316
|
// 策略 1:通过 ARTIFACT_ALIASES 的 defaultName 关键词匹配
|
|
@@ -319,17 +319,6 @@ export function inferArtifactKindFromPath(relativeFilePath) {
|
|
|
319
319
|
return alias.kind;
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
|
-
// 策略 2:.soloforge/output/ 路径下的 .md 文件,从文件名提取 kind
|
|
323
|
-
const outputMatch = relativeFilePath.match(/\.soloforge\/output\/\d+-(.+)\.md$/);
|
|
324
|
-
if (outputMatch) {
|
|
325
|
-
const slug = outputMatch[1];
|
|
326
|
-
for (const alias of ARTIFACT_ALIASES) {
|
|
327
|
-
const nameSlug = alias.defaultName.replace(/\s+/g, "-").toLowerCase();
|
|
328
|
-
if (slug.includes(nameSlug) || nameSlug.includes(slug)) {
|
|
329
|
-
return alias.kind;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
322
|
return undefined;
|
|
334
323
|
}
|
|
335
324
|
/**
|
|
@@ -353,35 +342,25 @@ export function evaluateArtifactStructure(relativeFilePath, content, projectPath
|
|
|
353
342
|
if (!kind || !hasArtifactSchema(kind))
|
|
354
343
|
return { severity: "pass" };
|
|
355
344
|
// ── 增强检测:遗漏扫描(空洞章节 + 占位符 + 空表格) ──
|
|
345
|
+
// 写入门禁中文档类产物允许增量完善,遗漏扫描结果降为 warning。
|
|
346
|
+
// hard_fail 行为仅在 sf_gate_check(显式质量门禁)时生效。
|
|
356
347
|
const omissionResult = scanArtifactForOmissions(kind, content);
|
|
357
|
-
if (
|
|
358
|
-
|
|
359
|
-
const hardFails = omissionResult.findings.filter((f) => f.severity === "hard_fail");
|
|
360
|
-
const reasons = hardFails.map((f) => f.message).join(";");
|
|
348
|
+
if (omissionResult.findings.length > 0) {
|
|
349
|
+
const reasons = omissionResult.findings.map((f) => f.message).join(";");
|
|
361
350
|
return {
|
|
362
|
-
severity: "
|
|
363
|
-
reason:
|
|
351
|
+
severity: "warning",
|
|
352
|
+
reason: `产物遗漏扫描发现(${kind}):${reasons}`,
|
|
364
353
|
};
|
|
365
354
|
}
|
|
366
355
|
// ── 基础检测:verifyOutputAgainstSchema(字段级/附属产物级) ──
|
|
367
356
|
const result = verifyOutputAgainstSchema(kind, content, projectPath);
|
|
368
|
-
if (result.passed) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
return {
|
|
374
|
-
severity: "warning",
|
|
375
|
-
reason: `产物结构建议(${kind}):${reasons}`,
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
return { severity: "pass" };
|
|
357
|
+
if (!result.passed) {
|
|
358
|
+
return {
|
|
359
|
+
severity: "warning",
|
|
360
|
+
reason: `产物结构建议(${kind}):${result.messages.join("; ")}`,
|
|
361
|
+
};
|
|
379
362
|
}
|
|
380
|
-
|
|
381
|
-
return {
|
|
382
|
-
severity: "warning",
|
|
383
|
-
reason: `产物结构建议(${kind}):${result.messages.join("; ")}`,
|
|
384
|
-
};
|
|
363
|
+
return { severity: "pass" };
|
|
385
364
|
}
|
|
386
365
|
/**
|
|
387
366
|
* D22: 检查写入文件是否在当前切片范围内。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check_write.js","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check_write.js","sourceRoot":"","sources":["../../../src/bin/commands/check_write.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"modify.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6E/C"}
|
|
@@ -5,7 +5,8 @@ import { resolveProjectPath, args } from "../args.js";
|
|
|
5
5
|
/**
|
|
6
6
|
* soloforge modify <产物路径>
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* 场景 C CLI 入口:委托共享内核完成四层编排修改。
|
|
9
|
+
* 读取 stdin 作为新内容,应用 execute 规则约束。
|
|
9
10
|
*/
|
|
10
11
|
export async function cmdModify() {
|
|
11
12
|
debug("CLI", "执行 cmdModify");
|
|
@@ -32,22 +33,29 @@ export async function cmdModify() {
|
|
|
32
33
|
content = await readStdin();
|
|
33
34
|
}
|
|
34
35
|
try {
|
|
35
|
-
const {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
|
|
37
|
+
const { inferArtifactKindFromPath, inferArtifactKindFallback } = await import("../../engine/pipeline/artifact_resolver.js");
|
|
38
|
+
// 从文件路径推断 artifact kind(先精确匹配 canonical_path,再兜底关键词匹配)
|
|
39
|
+
const relPath = path.relative(projectPath, productPath);
|
|
40
|
+
const kind = inferArtifactKindFromPath(relPath) ?? inferArtifactKindFallback(relPath);
|
|
41
|
+
// 委托共享内核获取 execute 规则约束(kind 识别失败时跳过编排)
|
|
42
|
+
let appliedRules = [];
|
|
43
|
+
let appliedGates = [];
|
|
44
|
+
let injectionText;
|
|
45
|
+
if (kind) {
|
|
46
|
+
const orchestrateResult = await orchestrateSingleArtifact({
|
|
47
|
+
kind,
|
|
48
|
+
operation: "fix",
|
|
49
|
+
projectPath,
|
|
50
|
+
original_command: `soloforge modify ${relPath}`,
|
|
51
|
+
});
|
|
52
|
+
appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
|
|
53
|
+
appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
|
|
54
|
+
injectionText = orchestrateResult.injection_text;
|
|
48
55
|
}
|
|
56
|
+
// 写入新内容
|
|
49
57
|
fs.writeFileSync(productPath, content, "utf-8");
|
|
50
|
-
const result = { success: true, applied_rules: appliedRules };
|
|
58
|
+
const result = { success: true, applied_rules: appliedRules, applied_gates: appliedGates, target_kind: kind };
|
|
51
59
|
if (isJson) {
|
|
52
60
|
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
53
61
|
}
|
|
@@ -56,6 +64,12 @@ export async function cmdModify() {
|
|
|
56
64
|
if (appliedRules.length > 0) {
|
|
57
65
|
userInfo(`已应用 execute 规则: ${appliedRules.join(", ")}`);
|
|
58
66
|
}
|
|
67
|
+
if (appliedGates.length > 0) {
|
|
68
|
+
userInfo(`已应用门禁: ${appliedGates.join(", ")}`);
|
|
69
|
+
}
|
|
70
|
+
if (injectionText) {
|
|
71
|
+
userInfo(`\n规则注入文本已生成,可附在后续 prompt 中指导验证`);
|
|
72
|
+
}
|
|
59
73
|
}
|
|
60
74
|
}
|
|
61
75
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../../src/bin/commands/modify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* soloforge review
|
|
2
|
+
* soloforge review <产物路径 | SLICE-XX>
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 场景 C CLI 入口:委托共享内核完成四层编排审查。
|
|
5
|
+
* 支持:产物文件路径、切片 ID(SLICE-01)。
|
|
5
6
|
*/
|
|
6
7
|
export declare function cmdReview(): Promise<void>;
|
|
7
8
|
//# sourceMappingURL=review.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/review.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/review.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkG/C"}
|
|
@@ -2,10 +2,13 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { debug, userInfo, userError } from "../../engine/core/logger.js";
|
|
4
4
|
import { resolveProjectPath, args } from "../args.js";
|
|
5
|
+
/** 切片 ID 正则 — 匹配 SLICE-01、slice-5 等 */
|
|
6
|
+
const SLICE_PATTERN = /^SLICE[-_]?(\d+)$/i;
|
|
5
7
|
/**
|
|
6
|
-
* soloforge review
|
|
8
|
+
* soloforge review <产物路径 | SLICE-XX>
|
|
7
9
|
*
|
|
8
|
-
*
|
|
10
|
+
* 场景 C CLI 入口:委托共享内核完成四层编排审查。
|
|
11
|
+
* 支持:产物文件路径、切片 ID(SLICE-01)。
|
|
9
12
|
*/
|
|
10
13
|
export async function cmdReview() {
|
|
11
14
|
debug("CLI", "执行 cmdReview");
|
|
@@ -13,67 +16,197 @@ export async function cmdReview() {
|
|
|
13
16
|
const positional = args.filter((a) => !a.startsWith("--"));
|
|
14
17
|
const isJson = args.includes("--json");
|
|
15
18
|
if (positional.length === 0) {
|
|
16
|
-
userError("用法: soloforge review
|
|
19
|
+
userError("用法: soloforge review <产物路径 | SLICE-XX> [--json]");
|
|
17
20
|
process.exit(1);
|
|
18
21
|
}
|
|
19
|
-
const
|
|
22
|
+
const target = positional[0];
|
|
23
|
+
// ── 切片目标路由 ──
|
|
24
|
+
if (SLICE_PATTERN.test(target)) {
|
|
25
|
+
await reviewSlice(target, projectPath, isJson);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// ── 产物文件路径 ──
|
|
29
|
+
const productPath = path.resolve(projectPath, target);
|
|
20
30
|
if (!fs.existsSync(productPath)) {
|
|
21
31
|
userError(`文件不存在: ${productPath}`);
|
|
22
32
|
process.exit(1);
|
|
23
33
|
}
|
|
24
34
|
try {
|
|
25
|
-
const {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
|
|
36
|
+
const { inferArtifactKindFromPath, inferArtifactKindFallback } = await import("../../engine/pipeline/artifact_resolver.js");
|
|
37
|
+
// 从文件路径推断 artifact kind(先精确匹配 canonical_path,再兜底关键词匹配)
|
|
38
|
+
const relPath = path.relative(projectPath, productPath);
|
|
39
|
+
const kind = inferArtifactKindFromPath(relPath) ?? inferArtifactKindFallback(relPath);
|
|
40
|
+
if (!kind) {
|
|
41
|
+
// 无法推断 kind → 退回基础审查逻辑(仅结构检查)
|
|
42
|
+
const findings = basicStructuralCheck(productPath);
|
|
43
|
+
const hasFail = findings.some((f) => f.status === "fail");
|
|
44
|
+
const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
|
|
45
|
+
const result = { overall, findings, applied_rules: [], note: "未识别产物类型,跳过四层编排" };
|
|
46
|
+
outputResult(result, isJson);
|
|
47
|
+
return;
|
|
38
48
|
}
|
|
39
|
-
//
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
// 委托共享内核完成四层编排审查
|
|
50
|
+
const orchestrateResult = await orchestrateSingleArtifact({
|
|
51
|
+
kind,
|
|
52
|
+
operation: "review",
|
|
53
|
+
projectPath,
|
|
54
|
+
original_command: `soloforge review ${relPath}`,
|
|
55
|
+
});
|
|
56
|
+
if (orchestrateResult.status === "error" || orchestrateResult.status === "no_template") {
|
|
57
|
+
// 内核无法编排 → 退回基础审查
|
|
58
|
+
const findings = basicStructuralCheck(productPath);
|
|
59
|
+
const hasFail = findings.some((f) => f.status === "fail");
|
|
60
|
+
const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
|
|
61
|
+
const result = { overall, findings, applied_rules: [], note: orchestrateResult.error };
|
|
62
|
+
outputResult(result, isJson);
|
|
63
|
+
return;
|
|
44
64
|
}
|
|
45
|
-
//
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
65
|
+
// 收集内核编排结果
|
|
66
|
+
const appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
|
|
67
|
+
const missingRules = orchestrateResult.missing_rules ?? [];
|
|
68
|
+
const appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
|
|
69
|
+
const missingGates = orchestrateResult.missing_gates ?? [];
|
|
70
|
+
// 基础结构检查
|
|
71
|
+
const findings = basicStructuralCheck(productPath);
|
|
72
|
+
// 缺失规则/门禁也作为 findings
|
|
73
|
+
for (const mr of missingRules) {
|
|
74
|
+
findings.push({ dimension: "completeness", status: "warning", detail: `缺失 review 规则: ${mr}` });
|
|
75
|
+
}
|
|
76
|
+
for (const mg of missingGates) {
|
|
77
|
+
findings.push({ dimension: "completeness", status: "warning", detail: `缺失门禁: ${mg}` });
|
|
56
78
|
}
|
|
57
79
|
const hasFail = findings.some((f) => f.status === "fail");
|
|
58
80
|
const overall = hasFail ? "fail" : findings.length > 0 ? "warning" : "pass";
|
|
59
|
-
const result = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
81
|
+
const result = {
|
|
82
|
+
overall,
|
|
83
|
+
findings,
|
|
84
|
+
applied_rules: appliedRules,
|
|
85
|
+
applied_gates: appliedGates,
|
|
86
|
+
target_kind: kind,
|
|
87
|
+
upstream_inputs: orchestrateResult.upstream_inputs?.map((i) => ({ ref: i.ref, missing: i.missing })),
|
|
88
|
+
injection_text: orchestrateResult.injection_text,
|
|
89
|
+
};
|
|
90
|
+
outputResult(result, isJson);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
userError(`审查失败: ${err instanceof Error ? err.message : String(err)}`);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 切片级审查 — 加载切片文件列表,限定审查范围。
|
|
99
|
+
*
|
|
100
|
+
* 使用 source_code_package 产物模板 + 编码阶段 gate 文件。
|
|
101
|
+
*/
|
|
102
|
+
async function reviewSlice(sliceTarget, projectPath, isJson) {
|
|
103
|
+
const normalizedId = sliceTarget.toUpperCase().replace(/[-_]/g, "-");
|
|
104
|
+
// 规范化为 SLICE-XX 格式
|
|
105
|
+
const match = normalizedId.match(/^SLICE[-_]?(\d+)$/i);
|
|
106
|
+
const sliceId = match ? `SLICE-${match[1].padStart(2, "0")}` : normalizedId;
|
|
107
|
+
// 加载切片文件列表
|
|
108
|
+
let files = [];
|
|
109
|
+
try {
|
|
110
|
+
const YAML = await import("yaml");
|
|
111
|
+
const slicePlanPath = path.join(projectPath, ".soloforge", "output", "slice_plan.yaml");
|
|
112
|
+
if (fs.existsSync(slicePlanPath)) {
|
|
113
|
+
const content = fs.readFileSync(slicePlanPath, "utf-8");
|
|
114
|
+
const plan = YAML.parse(content);
|
|
115
|
+
if (plan?.slices && Array.isArray(plan.slices)) {
|
|
116
|
+
const slice = plan.slices.find((s) => String(s.id ?? s.slice_id ?? "").toUpperCase().replace(/[-_]/g, "-") === sliceId);
|
|
117
|
+
if (slice)
|
|
118
|
+
files = (slice.files ?? slice.scope ?? []);
|
|
71
119
|
}
|
|
72
120
|
}
|
|
73
121
|
}
|
|
122
|
+
catch { /* 解析失败降级 */ }
|
|
123
|
+
if (files.length === 0) {
|
|
124
|
+
const result = {
|
|
125
|
+
overall: "warning",
|
|
126
|
+
findings: [{ dimension: "scope", status: "warning", detail: `未找到切片 ${sliceId} 的文件列表,请检查 .soloforge/output/slice_plan.yaml` }],
|
|
127
|
+
applied_rules: [],
|
|
128
|
+
applied_gates: [],
|
|
129
|
+
note: "运行 [sf] 审查 SLICE-XX 可通过四层编排自动修复",
|
|
130
|
+
};
|
|
131
|
+
outputResult(result, isJson);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const { orchestrateSingleArtifact } = await import("../../engine/pipeline/orchestrate_single_artifact.js");
|
|
136
|
+
const orchestrateResult = await orchestrateSingleArtifact({
|
|
137
|
+
kind: "source_code_package",
|
|
138
|
+
operation: "review",
|
|
139
|
+
projectPath,
|
|
140
|
+
original_command: `soloforge review ${sliceTarget}`,
|
|
141
|
+
});
|
|
142
|
+
const appliedRules = orchestrateResult.rules?.map((r) => r.name) ?? [];
|
|
143
|
+
const appliedGates = orchestrateResult.gates?.map((g) => g.name) ?? [];
|
|
144
|
+
const findings = [
|
|
145
|
+
...files.map((f) => ({ dimension: "scope", status: "info", detail: `审查文件: ${f}` })),
|
|
146
|
+
...(orchestrateResult.missing_rules ?? []).map((mr) => ({ dimension: "completeness", status: "warning", detail: `缺失 review 规则: ${mr}` })),
|
|
147
|
+
...(orchestrateResult.missing_gates ?? []).map((mg) => ({ dimension: "completeness", status: "warning", detail: `缺失门禁: ${mg}` })),
|
|
148
|
+
];
|
|
149
|
+
const hasFail = findings.some((f) => f.status === "fail");
|
|
150
|
+
const overall = hasFail ? "fail" : findings.some((f) => f.status === "warning") ? "warning" : "pass";
|
|
151
|
+
const result = {
|
|
152
|
+
overall,
|
|
153
|
+
findings,
|
|
154
|
+
applied_rules: appliedRules,
|
|
155
|
+
applied_gates: appliedGates,
|
|
156
|
+
slice_id: sliceId,
|
|
157
|
+
slice_files: files,
|
|
158
|
+
note: "运行 [sf] 审查 SLICE-XX 可通过四层编排自动修复",
|
|
159
|
+
};
|
|
160
|
+
outputResult(result, isJson);
|
|
161
|
+
}
|
|
74
162
|
catch (err) {
|
|
75
|
-
userError(
|
|
163
|
+
userError(`切片审查失败: ${err instanceof Error ? err.message : String(err)}`);
|
|
76
164
|
process.exit(1);
|
|
77
165
|
}
|
|
78
166
|
}
|
|
167
|
+
/** 基础结构检查 — 空文件和空洞章节检测 */
|
|
168
|
+
function basicStructuralCheck(productPath) {
|
|
169
|
+
const findings = [];
|
|
170
|
+
const content = fs.readFileSync(productPath, "utf-8");
|
|
171
|
+
const body = content.replace(/^---\n[\s\S]*?\n---\n*/, "");
|
|
172
|
+
if (body.trim().length === 0) {
|
|
173
|
+
findings.push({ dimension: "structure", status: "fail", detail: "产物正文为空" });
|
|
174
|
+
}
|
|
175
|
+
// 检查空洞章节
|
|
176
|
+
const sectionRegex = /^## .+$/gm;
|
|
177
|
+
const sections = body.match(sectionRegex) || [];
|
|
178
|
+
for (const section of sections) {
|
|
179
|
+
const sectionTitle = section.replace(/^## /, "");
|
|
180
|
+
const sectionStart = body.indexOf(section);
|
|
181
|
+
const nextSection = body.indexOf("\n## ", sectionStart + 1);
|
|
182
|
+
const sectionBody = body.substring(sectionStart + section.length, nextSection > 0 ? nextSection : body.length);
|
|
183
|
+
if (sectionBody.trim().length === 0) {
|
|
184
|
+
findings.push({ dimension: "completeness", status: "warning", detail: `空洞章节: ${sectionTitle}` });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return findings;
|
|
188
|
+
}
|
|
189
|
+
/** 输出审查结果 */
|
|
190
|
+
function outputResult(result, isJson) {
|
|
191
|
+
if (isJson) {
|
|
192
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const overall = result.overall;
|
|
196
|
+
const icon = overall === "pass" ? "✅" : overall === "warning" ? "⚠️" : "❌";
|
|
197
|
+
userInfo(`${icon} 审查结论: ${overall}`);
|
|
198
|
+
const appliedRules = result.applied_rules;
|
|
199
|
+
if (appliedRules && appliedRules.length > 0) {
|
|
200
|
+
userInfo(`已应用 review 规则: ${appliedRules.join(", ")}`);
|
|
201
|
+
}
|
|
202
|
+
const appliedGates = result.applied_gates;
|
|
203
|
+
if (appliedGates && appliedGates.length > 0) {
|
|
204
|
+
userInfo(`已应用门禁: ${appliedGates.join(", ")}`);
|
|
205
|
+
}
|
|
206
|
+
const findings = result.findings;
|
|
207
|
+
for (const f of findings) {
|
|
208
|
+
userInfo(` [${f.status}] ${f.dimension}: ${f.detail}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
79
212
|
//# sourceMappingURL=review.js.map
|