soloforge 1.2.1 → 1.2.3
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 +78 -18
- package/dist/adapters/claude_code/server.d.ts.map +1 -1
- package/dist/adapters/claude_code/server.js +2 -25
- package/dist/adapters/claude_code/server.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts +8 -13
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +508 -87
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/codex/codex_rules.d.ts.map +1 -1
- package/dist/adapters/codex/codex_rules.js +23 -1
- package/dist/adapters/codex/codex_rules.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +25 -0
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/bin/soloforge.js +169 -18
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/audit_pool.d.ts +36 -0
- package/dist/engine/audit_pool.d.ts.map +1 -0
- package/dist/engine/audit_pool.js +83 -0
- package/dist/engine/audit_pool.js.map +1 -0
- package/dist/engine/audit_sampler.d.ts +15 -0
- package/dist/engine/audit_sampler.d.ts.map +1 -0
- package/dist/engine/audit_sampler.js +26 -0
- package/dist/engine/audit_sampler.js.map +1 -0
- package/dist/engine/audit_verifier.d.ts +1 -1
- package/dist/engine/audit_verifier.js +1 -1
- package/dist/engine/audit_verifier.js.map +1 -1
- package/dist/engine/capability_action_advisor.d.ts +24 -0
- package/dist/engine/capability_action_advisor.d.ts.map +1 -0
- package/dist/engine/capability_action_advisor.js +147 -0
- package/dist/engine/capability_action_advisor.js.map +1 -0
- package/dist/engine/capability_registry.d.ts +58 -0
- package/dist/engine/capability_registry.d.ts.map +1 -0
- package/dist/engine/capability_registry.js +625 -0
- package/dist/engine/capability_registry.js.map +1 -0
- package/dist/engine/capability_state_store.d.ts +50 -0
- package/dist/engine/capability_state_store.d.ts.map +1 -0
- package/dist/engine/capability_state_store.js +123 -0
- package/dist/engine/capability_state_store.js.map +1 -0
- package/dist/engine/cognitive_anchor.d.ts +59 -0
- package/dist/engine/cognitive_anchor.d.ts.map +1 -0
- package/dist/engine/cognitive_anchor.js +68 -0
- package/dist/engine/cognitive_anchor.js.map +1 -0
- package/dist/engine/conflict_gate.d.ts +36 -0
- package/dist/engine/conflict_gate.d.ts.map +1 -0
- package/dist/engine/conflict_gate.js +73 -0
- package/dist/engine/conflict_gate.js.map +1 -0
- package/dist/engine/decision_contract.d.ts +29 -0
- package/dist/engine/decision_contract.d.ts.map +1 -0
- package/dist/engine/decision_contract.js +41 -0
- package/dist/engine/decision_contract.js.map +1 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +83 -0
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/developer_sovereignty.d.ts +62 -0
- package/dist/engine/developer_sovereignty.d.ts.map +1 -0
- package/dist/engine/developer_sovereignty.js +134 -0
- package/dist/engine/developer_sovereignty.js.map +1 -0
- package/dist/engine/diff_ownership.d.ts +74 -0
- package/dist/engine/diff_ownership.d.ts.map +1 -0
- package/dist/engine/diff_ownership.js +143 -0
- package/dist/engine/diff_ownership.js.map +1 -0
- package/dist/engine/diff_ownership_store.d.ts +76 -0
- package/dist/engine/diff_ownership_store.d.ts.map +1 -0
- package/dist/engine/diff_ownership_store.js +264 -0
- package/dist/engine/diff_ownership_store.js.map +1 -0
- package/dist/engine/escape_report.d.ts +45 -0
- package/dist/engine/escape_report.d.ts.map +1 -0
- package/dist/engine/escape_report.js +97 -0
- package/dist/engine/escape_report.js.map +1 -0
- package/dist/engine/exploration.d.ts +54 -0
- package/dist/engine/exploration.d.ts.map +1 -1
- package/dist/engine/exploration.js +138 -0
- package/dist/engine/exploration.js.map +1 -1
- package/dist/engine/governance_report.d.ts +36 -0
- package/dist/engine/governance_report.d.ts.map +1 -0
- package/dist/engine/governance_report.js +79 -0
- package/dist/engine/governance_report.js.map +1 -0
- package/dist/engine/java_quality_guard.d.ts +52 -0
- package/dist/engine/java_quality_guard.d.ts.map +1 -0
- package/dist/engine/java_quality_guard.js +237 -0
- package/dist/engine/java_quality_guard.js.map +1 -0
- package/dist/engine/job_manager.d.ts +76 -0
- package/dist/engine/job_manager.d.ts.map +1 -0
- package/dist/engine/job_manager.js +225 -0
- package/dist/engine/job_manager.js.map +1 -0
- package/dist/engine/knowledge_config_loader.d.ts +1 -1
- package/dist/engine/knowledge_config_loader.js +1 -1
- package/dist/engine/knowledge_sovereignty.d.ts +61 -0
- package/dist/engine/knowledge_sovereignty.d.ts.map +1 -0
- package/dist/engine/knowledge_sovereignty.js +190 -0
- package/dist/engine/knowledge_sovereignty.js.map +1 -0
- package/dist/engine/llm_gateway.js +2 -2
- package/dist/engine/llm_gateway.js.map +1 -1
- package/dist/engine/mutation_audit.d.ts +43 -0
- package/dist/engine/mutation_audit.d.ts.map +1 -0
- package/dist/engine/mutation_audit.js +118 -0
- package/dist/engine/mutation_audit.js.map +1 -0
- package/dist/engine/policy_drift_detector.d.ts +46 -0
- package/dist/engine/policy_drift_detector.d.ts.map +1 -0
- package/dist/engine/policy_drift_detector.js +181 -0
- package/dist/engine/policy_drift_detector.js.map +1 -0
- package/dist/engine/regression_matrix.d.ts +102 -0
- package/dist/engine/regression_matrix.d.ts.map +1 -0
- package/dist/engine/regression_matrix.js +380 -0
- package/dist/engine/regression_matrix.js.map +1 -0
- package/dist/engine/risk_sampler.d.ts +37 -0
- package/dist/engine/risk_sampler.d.ts.map +1 -0
- package/dist/engine/risk_sampler.js +69 -0
- package/dist/engine/risk_sampler.js.map +1 -0
- package/dist/engine/runtime_safety.d.ts +80 -0
- package/dist/engine/runtime_safety.d.ts.map +1 -0
- package/dist/engine/runtime_safety.js +195 -0
- package/dist/engine/runtime_safety.js.map +1 -0
- package/dist/engine/scope_lease.d.ts +45 -0
- package/dist/engine/scope_lease.d.ts.map +1 -0
- package/dist/engine/scope_lease.js +122 -0
- package/dist/engine/scope_lease.js.map +1 -0
- package/dist/engine/semantic_evidence.d.ts +23 -0
- package/dist/engine/semantic_evidence.d.ts.map +1 -0
- package/dist/engine/semantic_evidence.js +81 -0
- package/dist/engine/semantic_evidence.js.map +1 -0
- package/dist/engine/task_context.d.ts +16 -0
- package/dist/engine/task_context.d.ts.map +1 -1
- package/dist/engine/task_context.js +59 -1
- package/dist/engine/task_context.js.map +1 -1
- package/dist/engine/test_quality.js +2 -2
- package/dist/engine/test_quality.js.map +1 -1
- package/dist/engine/verifier.d.ts.map +1 -1
- package/dist/engine/verifier.js +113 -20
- package/dist/engine/verifier.js.map +1 -1
- package/dist/engine/workspace_resumer.d.ts +43 -0
- package/dist/engine/workspace_resumer.d.ts.map +1 -1
- package/dist/engine/workspace_resumer.js +119 -4
- package/dist/engine/workspace_resumer.js.map +1 -1
- package/dist/engine/zero_config_init.d.ts +87 -0
- package/dist/engine/zero_config_init.d.ts.map +1 -0
- package/dist/engine/zero_config_init.js +427 -0
- package/dist/engine/zero_config_init.js.map +1 -0
- package/dist/knowledge/index_manager.d.ts +19 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +31 -0
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +1 -0
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/types.d.ts +61 -85
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/knowledge/domain//345/256/241/350/256/241/346/227/245/345/277/227.md +6 -7
- package/templates/knowledge/domain//345/257/274/345/205/245/345/257/274/345/207/272/350/247/204/345/210/231.md +3 -3
- package/templates/knowledge/domain//351/200/232/347/224/250/346/234/272/346/242/260/346/235/241/346/254/276.md +24 -14
- package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +47 -0
- package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +46 -0
- package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +46 -0
- package/templates/knowledge/patterns/core//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +47 -0
- package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +47 -0
- package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +46 -0
- package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +47 -0
- package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +47 -0
- package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +52 -0
- package/templates/knowledge/patterns/core/{mutation_audit.md → /345/217/230/345/274/202/345/256/241/350/256/241.md} +20 -0
- package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +46 -0
- package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +44 -0
- package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +46 -0
- package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +49 -0
- package/templates/knowledge/patterns/core/{developer_constitution.md → /345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md} +20 -0
- package/templates/knowledge/patterns/core//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +45 -0
- package/templates/knowledge/patterns/core//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +48 -0
- package/templates/knowledge/patterns/core/{streaming_protocol.md → /346/265/201/345/274/217/345/277/203/350/267/263.md} +20 -0
- package/templates/knowledge/patterns/core/{authority.md → /347/237/245/350/257/206/344/270/273/346/235/203.md} +20 -0
- package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +47 -0
- package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +50 -0
- package/templates/knowledge/patterns/core//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +47 -0
- package/templates/knowledge/patterns/core//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +46 -0
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/346/260/264/347/272/277.md +1 -1
- package/templates/knowledge/procedures//347/264/247/346/200/245/344/277/256/345/244/215/346/265/201/347/250/213.md +1 -1
- package/templates/knowledge/review_rules//345/271/266/345/217/221/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/review_rules//346/200/247/350/203/275/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/review_rules//346/216/245/345/217/243/345/245/221/347/272/246/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/review_rules//346/236/266/346/236/204/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/review_rules//350/264/250/351/207/217/345/256/241/346/237/245/350/247/204/345/210/231.md +1 -1
- package/templates/knowledge/patterns/core/concurrency_lock.md +0 -36
- package/templates/knowledge/patterns/core/decision_gateway.md +0 -33
- /package/templates/knowledge/checklists/{session_recovery.md → /344/274/232/350/257/235/346/201/242/345/244/215.md"} +0 -0
package/README.md
CHANGED
|
@@ -10,14 +10,51 @@ SoloForge 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.
|
|
|
10
10
|
# 全局安装
|
|
11
11
|
npm install -g soloforge
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
13
|
+
# 初始化(默认适配器: Claude Code)
|
|
14
|
+
soloforge init
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
# Trae IDE / Codex App / 全部适配器
|
|
17
|
+
soloforge init --adapter trae
|
|
18
|
+
soloforge init --adapter codex
|
|
19
|
+
soloforge init --adapter all
|
|
20
|
+
|
|
21
|
+
# 交互式配置(引导输入项目名称、技术栈等)
|
|
22
|
+
soloforge init --interactive
|
|
23
|
+
|
|
24
|
+
# 指定项目路径
|
|
25
|
+
soloforge init --project-path /path/to/project
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`init` 会生成 `.soloforge/config.yaml`、初始化知识模板、并为你的 AI 工具生成适配配置(hooks、规则文件等)。
|
|
29
|
+
|
|
30
|
+
### 更新与重新生成
|
|
31
|
+
|
|
32
|
+
SoloForge 更新后,需要重新生成适配器配置以获取最新的 hooks 和规则:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 更新 SoloForge
|
|
17
36
|
npm update -g soloforge
|
|
37
|
+
|
|
38
|
+
# 重新生成当前适配器的配置(不会覆盖 config.yaml 和已有知识)
|
|
39
|
+
soloforge init # Claude Code: .claude/settings.json + CLAUDE.md
|
|
40
|
+
soloforge generate-hooks # 仅重新生成 hooks
|
|
41
|
+
soloforge generate-claude-md # 仅重新生成 CLAUDE.md
|
|
42
|
+
soloforge generate-trae # 仅重新生成 .trae/ 配置
|
|
43
|
+
soloforge generate-codex # 仅重新生成 .codex/ 配置 + AGENTS.md
|
|
44
|
+
|
|
45
|
+
# 查看版本
|
|
46
|
+
soloforge version
|
|
18
47
|
```
|
|
19
48
|
|
|
20
|
-
|
|
49
|
+
### 日常命令
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 验证配置和知识文件
|
|
53
|
+
soloforge validate
|
|
54
|
+
|
|
55
|
+
# 查看当前项目状态
|
|
56
|
+
soloforge status
|
|
57
|
+
```
|
|
21
58
|
|
|
22
59
|
## 工作原理
|
|
23
60
|
|
|
@@ -28,9 +65,9 @@ SoloForge 以 MCP Server(stdio 传输)运行。AI 助手在开发过程中
|
|
|
28
65
|
← 知识、规则、模板
|
|
29
66
|
```
|
|
30
67
|
|
|
31
|
-
SoloForge
|
|
68
|
+
SoloForge 引擎不直接调用 LLM API,由宿主 AI 中转。所有智能来自宿主 AI(Claude Code、Cursor、Trae),SoloForge 提供结构、规则和知识。
|
|
32
69
|
|
|
33
|
-
## MCP 工具(
|
|
70
|
+
## MCP 工具(32 个)
|
|
34
71
|
|
|
35
72
|
### 核心管线(Phase 1)
|
|
36
73
|
|
|
@@ -62,7 +99,7 @@ SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供
|
|
|
62
99
|
| `sf_contract_check` | 检测接口契约的破坏性变更 |
|
|
63
100
|
| `sf_onboard` | 引导式入职:项目概览 → 代码导览 → 首任务 |
|
|
64
101
|
|
|
65
|
-
###
|
|
102
|
+
### 知识维护
|
|
66
103
|
|
|
67
104
|
| 工具 | 说明 |
|
|
68
105
|
|------|------|
|
|
@@ -88,18 +125,27 @@ SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供
|
|
|
88
125
|
| `sf_dependency_scan` | 扫描依赖漏洞,支持 npm/maven/gradle |
|
|
89
126
|
| `sf_debt_report` | 技术债务聚合报告:分类、趋势、优先级 |
|
|
90
127
|
|
|
128
|
+
### 治理闭环
|
|
129
|
+
|
|
130
|
+
| 工具 | 说明 |
|
|
131
|
+
|------|------|
|
|
132
|
+
| `sf_audit_sample` | 按风险加权抽样,critical 100% 抽中 |
|
|
133
|
+
| `sf_escape_report` | 记录逃逸/误伤/工具故障 |
|
|
134
|
+
| `sf_governance_report` | 汇总治理健康报告 |
|
|
135
|
+
| `sf_capability_update` | 人工确认后更新能力状态 |
|
|
136
|
+
|
|
91
137
|
## 知识体系
|
|
92
138
|
|
|
93
|
-
SoloForge
|
|
139
|
+
SoloForge 内置知识模板(含全局模式),覆盖 6 种类型:
|
|
94
140
|
|
|
95
|
-
| 类型 |
|
|
96
|
-
|
|
97
|
-
| `pattern` |
|
|
98
|
-
| `procedure` |
|
|
99
|
-
| `domain` |
|
|
100
|
-
| `acceptance_template` |
|
|
101
|
-
| `review_rule` |
|
|
102
|
-
| `pipeline_procedure` |
|
|
141
|
+
| 类型 | 用途 |
|
|
142
|
+
|------|------|
|
|
143
|
+
| `pattern` | 决策规则 + 验收标准 |
|
|
144
|
+
| `procedure` | 操作流程 + 检查点 |
|
|
145
|
+
| `domain` | 业务规则、约束条件、例外情况 |
|
|
146
|
+
| `acceptance_template` | 质量门禁 + 自动化检查命令 |
|
|
147
|
+
| `review_rule` | 正则驱动的代码审查规则 |
|
|
148
|
+
| `pipeline_procedure` | CI/CD 流水线阶段定义 |
|
|
103
149
|
|
|
104
150
|
知识文件采用 Markdown + YAML frontmatter 格式:
|
|
105
151
|
|
|
@@ -163,17 +209,31 @@ scope:
|
|
|
163
209
|
```
|
|
164
210
|
知识层 机制层 适配层
|
|
165
211
|
+------------------+ +---------------------+ +------------------+
|
|
166
|
-
|
|
|
212
|
+
| 知识模板 | | 分类器 | | Claude Code |
|
|
167
213
|
| 6 种知识类型 | | 意图膨胀器 | | Cursor |
|
|
168
214
|
| 产品 Profile | | 验证器 | | Trae |
|
|
169
215
|
| | | 代码审查器 | | CLI |
|
|
170
216
|
| 项目专属知识 | | 任务规划器 | | |
|
|
171
217
|
| | | 脚手架生成器 | | |
|
|
172
218
|
| | | 自动交付 | | |
|
|
219
|
+
| | | 契约治理内核 | | |
|
|
173
220
|
| | | + 20+ 个引擎模块 | | |
|
|
174
221
|
+------------------+ +---------------------+ +------------------+
|
|
175
222
|
```
|
|
176
223
|
|
|
224
|
+
## 契约治理内核
|
|
225
|
+
|
|
226
|
+
SoloForge 的治理能力按四级状态管理,新增治理能力不伪装 hard block:
|
|
227
|
+
|
|
228
|
+
| 状态 | 含义 |
|
|
229
|
+
|------|------|
|
|
230
|
+
| `enforced` | 强制执行,阻断不合规操作 |
|
|
231
|
+
| `advisory` | 建议性告警,由开发者决策 |
|
|
232
|
+
| `experimental` | 实验性,需晋级计划才能升级 |
|
|
233
|
+
| `removed` | 已移除,不再生效 |
|
|
234
|
+
|
|
235
|
+
治理闭环:任务完成入池 → 按风险加权抽样 → 逃逸记录 → 治理报告 → 人工确认后状态更新。所有状态变更必须经 `sf_capability_update` + 人工确认,不自动执行。
|
|
236
|
+
|
|
177
237
|
## 开发
|
|
178
238
|
|
|
179
239
|
```bash
|
|
@@ -183,7 +243,7 @@ npm install
|
|
|
183
243
|
# 构建
|
|
184
244
|
npm run build
|
|
185
245
|
|
|
186
|
-
# 运行测试(
|
|
246
|
+
# 运行测试(1256 tests / 86 files)
|
|
187
247
|
npm test
|
|
188
248
|
|
|
189
249
|
# 类型检查
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDjE"}
|
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
3
|
import { registerTools } from "./tools.js";
|
|
6
|
-
/**
|
|
7
|
-
* 检查当前项目是否为 SoloForge 自身项目(内部方法)。
|
|
8
|
-
* @description 通过检查 package.json 中的 name 字段判断是否为 SoloForge 自身。
|
|
9
|
-
* SoloForge 自身项目会额外注册知识维护工具(sf_knowledge_audit/add/update)。
|
|
10
|
-
* @param config - 项目配置对象
|
|
11
|
-
* @returns 是否为 SoloForge 自身项目
|
|
12
|
-
*/
|
|
13
|
-
function isSoloForgeProject(config) {
|
|
14
|
-
const projectPath = config._projectPath || process.cwd();
|
|
15
|
-
try {
|
|
16
|
-
const pkgPath = path.join(projectPath, "package.json");
|
|
17
|
-
const raw = fs.readFileSync(pkgPath, "utf-8");
|
|
18
|
-
const pkg = JSON.parse(raw);
|
|
19
|
-
return pkg.name === "soloforge";
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
4
|
/**
|
|
26
5
|
* 启动 SoloForge MCP 服务器。
|
|
27
6
|
* @description 创建 McpServer 实例,注册工具,通过 stdio 传输连接 Claude Code,
|
|
@@ -32,11 +11,9 @@ export async function startServer(deps) {
|
|
|
32
11
|
const { config, knowledgeIndex, taskContext } = deps;
|
|
33
12
|
const server = new McpServer({
|
|
34
13
|
name: "soloforge",
|
|
35
|
-
version: "
|
|
36
|
-
});
|
|
37
|
-
registerTools(server, { config, knowledgeIndex, taskContext }, {
|
|
38
|
-
isSelfProject: isSoloForgeProject(config),
|
|
14
|
+
version: "1.2.1",
|
|
39
15
|
});
|
|
16
|
+
registerTools(server, { config, knowledgeIndex, taskContext });
|
|
40
17
|
const transport = new StdioServerTransport();
|
|
41
18
|
await server.connect(transport);
|
|
42
19
|
let shuttingDown = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/adapters/claude_code/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsB3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB;IAChD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,cAAc;gBAAE,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,IAAI,cAAc;gBAAE,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAChD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,IAAI,cAAc;gBAAE,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,17 +2,18 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import type { ProjectConfig } from "../../types.js";
|
|
3
3
|
import type { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
|
|
4
4
|
import type { TaskContextManager } from "../../engine/task_context.js";
|
|
5
|
+
import { LLMGateway } from "../../engine/llm_gateway.js";
|
|
5
6
|
/**
|
|
6
7
|
* MCP 工具注册模块。
|
|
7
8
|
* @description 将 SoloForge 的全部功能封装为 MCP 工具,注册到 McpServer 实例。
|
|
8
9
|
* 每个工具通过统一的错误处理包装器(registerSafeTool)注册,确保异常不会导致服务崩溃。
|
|
9
10
|
* 工具分为三类:核心流程工具(classify/expand/verify/learn/status)、
|
|
10
|
-
* 辅助工具(plan/review/scaffold/deliver
|
|
11
|
-
*
|
|
11
|
+
* 辅助工具(plan/review/scaffold/deliver 等)、知识维护工具(knowledge_audit/add/update/resume_workspace)。
|
|
12
|
+
* 所有工具在所有项目中均注册。
|
|
12
13
|
*/
|
|
13
14
|
/**
|
|
14
15
|
* SoloForge 核心依赖项。
|
|
15
|
-
* @description 封装所有 MCP
|
|
16
|
+
* @description 封装所有 MCP 工具共享的依赖:项目配置、知识索引、任务上下文和可选的 LLM 网关。
|
|
16
17
|
*/
|
|
17
18
|
export interface SoloForgeDeps {
|
|
18
19
|
/** 项目配置对象 */
|
|
@@ -21,13 +22,8 @@ export interface SoloForgeDeps {
|
|
|
21
22
|
knowledgeIndex: KnowledgeIndexManager;
|
|
22
23
|
/** 任务上下文管理器 */
|
|
23
24
|
taskContext: TaskContextManager;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* 工具注册选项。
|
|
27
|
-
*/
|
|
28
|
-
export interface RegisterToolsOptions {
|
|
29
|
-
/** 是否为 SoloForge 自身项目(true 时注册自维护工具) */
|
|
30
|
-
isSelfProject?: boolean;
|
|
25
|
+
/** 可选的 LLM 网关(测试时注入 depleted gateway 以验证 H1 advisory) */
|
|
26
|
+
gateway?: LLMGateway;
|
|
31
27
|
}
|
|
32
28
|
/**
|
|
33
29
|
* 注册所有 SoloForge MCP 工具。
|
|
@@ -37,10 +33,9 @@ export interface RegisterToolsOptions {
|
|
|
37
33
|
* sf_deliver、sf_coord_check、sf_team_status、sf_contract_check、
|
|
38
34
|
* sf_onboard、sf_feasibility_check、sf_debug、sf_observability、
|
|
39
35
|
* sf_migration_check、sf_test_guide、sf_test_quality、sf_dependency_scan、
|
|
40
|
-
* sf_debt_report
|
|
36
|
+
* sf_debt_report、sf_explore、sf_knowledge_audit/add/update、sf_resume_workspace。
|
|
41
37
|
* @param server - MCP 服务器实例
|
|
42
38
|
* @param deps - SoloForge 核心依赖项
|
|
43
|
-
* @param options - 注册选项(控制自维护工具是否注册)
|
|
44
39
|
*/
|
|
45
|
-
export declare function registerTools(server: McpServer, deps: SoloForgeDeps
|
|
40
|
+
export declare function registerTools(server: McpServer, deps: SoloForgeDeps): void;
|
|
46
41
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA4BvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAYzD;;;;;;;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;AA0HD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAg4C1E"}
|