@winspan/claude-forge 8.34.0 → 8.36.0
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 +10 -30
- package/dist/capability/index.d.ts +6 -5
- package/dist/capability/index.d.ts.map +1 -1
- package/dist/capability/index.js +6 -5
- package/dist/capability/index.js.map +1 -1
- package/dist/capability/types.d.ts +5 -74
- package/dist/capability/types.d.ts.map +1 -1
- package/dist/capability/types.js +4 -1
- package/dist/capability/types.js.map +1 -1
- package/dist/core/ai/provider.d.ts +23 -1
- package/dist/core/ai/provider.d.ts.map +1 -1
- package/dist/core/ai/provider.js +67 -1
- package/dist/core/ai/provider.js.map +1 -1
- package/dist/core/ai/types.d.ts +28 -0
- package/dist/core/ai/types.d.ts.map +1 -1
- package/dist/core/storage/rows.d.ts +0 -36
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +1 -45
- package/dist/core/storage/sqlite.d.ts +2 -79
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +3 -362
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/utils/token-tracker.d.ts +0 -1
- package/dist/core/utils/token-tracker.d.ts.map +1 -1
- package/dist/core/utils/token-tracker.js +0 -1
- package/dist/core/utils/token-tracker.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +1 -9
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +2 -99
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +1 -15
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +1 -95
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +1 -5
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +29 -99
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +9 -56
- package/dist/daemon/index.js.map +1 -1
- package/dist/engine/agent-router.d.ts +37 -0
- package/dist/engine/agent-router.d.ts.map +1 -1
- package/dist/engine/agent-router.js +58 -0
- package/dist/engine/agent-router.js.map +1 -1
- package/dist/engine/conventions/routing.yaml +31 -2
- package/dist/intelligence/classifier.d.ts +63 -43
- package/dist/intelligence/classifier.d.ts.map +1 -1
- package/dist/intelligence/classifier.js +256 -191
- package/dist/intelligence/classifier.js.map +1 -1
- package/dist/intelligence/context-gatherer.d.ts +101 -0
- package/dist/intelligence/context-gatherer.d.ts.map +1 -0
- package/dist/intelligence/context-gatherer.js +417 -0
- package/dist/intelligence/context-gatherer.js.map +1 -0
- package/dist/intelligence/cot-classifier.d.ts +95 -0
- package/dist/intelligence/cot-classifier.d.ts.map +1 -0
- package/dist/intelligence/cot-classifier.js +391 -0
- package/dist/intelligence/cot-classifier.js.map +1 -0
- package/dist/intelligence/execution-doc-builder.d.ts +90 -0
- package/dist/intelligence/execution-doc-builder.d.ts.map +1 -1
- package/dist/intelligence/execution-doc-builder.js +459 -42
- package/dist/intelligence/execution-doc-builder.js.map +1 -1
- package/dist/intelligence/intent-types.d.ts +13 -0
- package/dist/intelligence/intent-types.d.ts.map +1 -0
- package/dist/intelligence/intent-types.js +19 -0
- package/dist/intelligence/intent-types.js.map +1 -0
- package/dist/intelligence/multimodal-parser.d.ts +105 -0
- package/dist/intelligence/multimodal-parser.d.ts.map +1 -0
- package/dist/intelligence/multimodal-parser.js +425 -0
- package/dist/intelligence/multimodal-parser.js.map +1 -0
- package/dist/skills/official-skills.d.ts.map +1 -1
- package/dist/skills/official-skills.js +218 -20
- package/dist/skills/official-skills.js.map +1 -1
- package/dist/web/routes/status.d.ts.map +1 -1
- package/dist/web/routes/status.js +8 -10
- package/dist/web/routes/status.js.map +1 -1
- package/dist/web/routes/token-usage.d.ts +1 -1
- package/dist/web/routes/token-usage.d.ts.map +1 -1
- package/dist/web/routes/token-usage.js +1 -16
- package/dist/web/routes/token-usage.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -6
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/server.d.ts +0 -6
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +0 -5
- package/dist/web/server.js.map +1 -1
- package/dist/web/static/assets/{AIConfig-DiUFET_Q.js → AIConfig-D4VglzCl.js} +2 -2
- package/dist/web/static/assets/{AIConfig-DiUFET_Q.js.map → AIConfig-D4VglzCl.js.map} +1 -1
- package/dist/web/static/assets/{Agents-bNNGbQnL.js → Agents-ne5lXc7V.js} +2 -2
- package/dist/web/static/assets/{Agents-bNNGbQnL.js.map → Agents-ne5lXc7V.js.map} +1 -1
- package/dist/web/static/assets/Dashboard-D4j0Zmek.js +2 -0
- package/dist/web/static/assets/Dashboard-D4j0Zmek.js.map +1 -0
- package/dist/web/static/assets/{Drawer-DOUcx6m1.js → Drawer-Lo5ihVP-.js} +2 -2
- package/dist/web/static/assets/{Drawer-DOUcx6m1.js.map → Drawer-Lo5ihVP-.js.map} +1 -1
- package/dist/web/static/assets/{Events-DQHP6Uaq.js → Events-DBJ1B7OW.js} +2 -2
- package/dist/web/static/assets/{Events-DQHP6Uaq.js.map → Events-DBJ1B7OW.js.map} +1 -1
- package/dist/web/static/assets/{ExecutionTrace-Co8ARdg-.js → ExecutionTrace-Du9XADc1.js} +2 -2
- package/dist/web/static/assets/{ExecutionTrace-Co8ARdg-.js.map → ExecutionTrace-Du9XADc1.js.map} +1 -1
- package/dist/web/static/assets/{Routing-BW3eGD-8.js → Routing-BNQ09OlH.js} +2 -2
- package/dist/web/static/assets/{Routing-BW3eGD-8.js.map → Routing-BNQ09OlH.js.map} +1 -1
- package/dist/web/static/assets/{SessionDetail-Cbd7Jwox.js → SessionDetail-BPrPyMNa.js} +2 -2
- package/dist/web/static/assets/{SessionDetail-Cbd7Jwox.js.map → SessionDetail-BPrPyMNa.js.map} +1 -1
- package/dist/web/static/assets/{Sessions-ZQSCgXyy.js → Sessions-o3EXsXz9.js} +2 -2
- package/dist/web/static/assets/{Sessions-ZQSCgXyy.js.map → Sessions-o3EXsXz9.js.map} +1 -1
- package/dist/web/static/assets/{Skills-C5-5zOSH.js → Skills-Czt5mkyc.js} +2 -2
- package/dist/web/static/assets/{Skills-C5-5zOSH.js.map → Skills-Czt5mkyc.js.map} +1 -1
- package/dist/web/static/assets/{export-CbQTOt71.js → export-C0mlC4AT.js} +2 -2
- package/dist/web/static/assets/{export-CbQTOt71.js.map → export-C0mlC4AT.js.map} +1 -1
- package/dist/web/static/assets/index-B1J7nBu0.js +3 -0
- package/dist/web/static/assets/index-B1J7nBu0.js.map +1 -0
- package/dist/web/static/assets/index-BVqk4bSO.css +1 -0
- package/dist/web/static/assets/{lucide-BanPULT1.js → lucide-Bu44HVAM.js} +33 -73
- package/dist/web/static/assets/lucide-Bu44HVAM.js.map +1 -0
- package/dist/web/static/index.html +3 -3
- package/package.json +2 -2
- package/dist/capability/execution-manager.d.ts +0 -96
- package/dist/capability/execution-manager.d.ts.map +0 -1
- package/dist/capability/execution-manager.js +0 -260
- package/dist/capability/execution-manager.js.map +0 -1
- package/dist/capability/executor/background-executor.d.ts +0 -58
- package/dist/capability/executor/background-executor.d.ts.map +0 -1
- package/dist/capability/executor/background-executor.js +0 -322
- package/dist/capability/executor/background-executor.js.map +0 -1
- package/dist/capability/executor/foreground-executor.d.ts +0 -26
- package/dist/capability/executor/foreground-executor.d.ts.map +0 -1
- package/dist/capability/executor/foreground-executor.js +0 -82
- package/dist/capability/executor/foreground-executor.js.map +0 -1
- package/dist/capability/executor/orchestrator.d.ts +0 -38
- package/dist/capability/executor/orchestrator.d.ts.map +0 -1
- package/dist/capability/executor/orchestrator.js +0 -158
- package/dist/capability/executor/orchestrator.js.map +0 -1
- package/dist/capability/executor/stream-parser.d.ts +0 -73
- package/dist/capability/executor/stream-parser.d.ts.map +0 -1
- package/dist/capability/executor/stream-parser.js +0 -56
- package/dist/capability/executor/stream-parser.js.map +0 -1
- package/dist/capability/executor/types.d.ts +0 -44
- package/dist/capability/executor/types.d.ts.map +0 -1
- package/dist/capability/executor/types.js +0 -9
- package/dist/capability/executor/types.js.map +0 -1
- package/dist/capability/executor/worker-auth-probe.d.ts +0 -30
- package/dist/capability/executor/worker-auth-probe.d.ts.map +0 -1
- package/dist/capability/executor/worker-auth-probe.js +0 -108
- package/dist/capability/executor/worker-auth-probe.js.map +0 -1
- package/dist/capability/methodologies/bmad.yaml +0 -81
- package/dist/capability/methodologies/code-quality-audit.yaml +0 -26
- package/dist/capability/methodologies/harness-engineering.yaml +0 -75
- package/dist/capability/methodologies/test-coverage-scan.yaml +0 -26
- package/dist/capability/methodology-planner.d.ts +0 -49
- package/dist/capability/methodology-planner.d.ts.map +0 -1
- package/dist/capability/methodology-planner.js +0 -306
- package/dist/capability/methodology-planner.js.map +0 -1
- package/dist/capability/methodology-registry.d.ts +0 -32
- package/dist/capability/methodology-registry.d.ts.map +0 -1
- package/dist/capability/methodology-registry.js +0 -113
- package/dist/capability/methodology-registry.js.map +0 -1
- package/dist/daemon/handlers/methodology-formatter.d.ts +0 -16
- package/dist/daemon/handlers/methodology-formatter.d.ts.map +0 -1
- package/dist/daemon/handlers/methodology-formatter.js +0 -119
- package/dist/daemon/handlers/methodology-formatter.js.map +0 -1
- package/dist/daemon/idle-detector.d.ts +0 -35
- package/dist/daemon/idle-detector.d.ts.map +0 -1
- package/dist/daemon/idle-detector.js +0 -56
- package/dist/daemon/idle-detector.js.map +0 -1
- package/dist/daemon/idle-trigger.d.ts +0 -53
- package/dist/daemon/idle-trigger.d.ts.map +0 -1
- package/dist/daemon/idle-trigger.js +0 -153
- package/dist/daemon/idle-trigger.js.map +0 -1
- package/dist/daemon/methodology-pending-queue.d.ts +0 -33
- package/dist/daemon/methodology-pending-queue.d.ts.map +0 -1
- package/dist/daemon/methodology-pending-queue.js +0 -120
- package/dist/daemon/methodology-pending-queue.js.map +0 -1
- package/dist/web/routes/methodology.d.ts +0 -12
- package/dist/web/routes/methodology.d.ts.map +0 -1
- package/dist/web/routes/methodology.js +0 -228
- package/dist/web/routes/methodology.js.map +0 -1
- package/dist/web/static/assets/Dashboard-Ciyyw6ph.js +0 -2
- package/dist/web/static/assets/Dashboard-Ciyyw6ph.js.map +0 -1
- package/dist/web/static/assets/Methodologies-CXNrDXwG.js +0 -5
- package/dist/web/static/assets/Methodologies-CXNrDXwG.js.map +0 -1
- package/dist/web/static/assets/MethodologyDetail-rV3W1utf.js +0 -2
- package/dist/web/static/assets/MethodologyDetail-rV3W1utf.js.map +0 -1
- package/dist/web/static/assets/index-DJK5beK6.js +0 -3
- package/dist/web/static/assets/index-DJK5beK6.js.map +0 -1
- package/dist/web/static/assets/index-phpuytMI.css +0 -1
- package/dist/web/static/assets/lucide-BanPULT1.js.map +0 -1
|
@@ -12,6 +12,7 @@ export const OFFICIAL_SKILL_KEYWORDS = {
|
|
|
12
12
|
'official-refactor': ['refactor', '重构', 'cleanup', 'reorganize', 'restructure'],
|
|
13
13
|
'official-pr-review': ['review', '审查', 'pr review', 'code review'],
|
|
14
14
|
'official-harness-engineering': ['harness', 'legacy', '遗留代码', '特征测试', 'characterization'],
|
|
15
|
+
'official-bmad': ['bmad', 'agile', 'four-role', '敏捷', '四角色', 'story', 'user story', 'sprint', '迭代'],
|
|
15
16
|
'official-spec-driven-design': ['spec', 'sdd', 'spec-driven', '规格', '需求文档', 'requirements'],
|
|
16
17
|
'official-architecture-decision': ['adr', 'architecture decision', '架构决策', '技术选型'],
|
|
17
18
|
'official-api-design': ['api design', 'api 设计', 'restful', 'openapi', '接口设计'],
|
|
@@ -33,17 +34,21 @@ export const OFFICIAL_SKILL_KEYWORDS = {
|
|
|
33
34
|
export const OFFICIAL_SKILLS = [
|
|
34
35
|
{
|
|
35
36
|
name: 'official-harness-engineering',
|
|
36
|
-
version: '
|
|
37
|
-
description: 'Harness Engineering
|
|
37
|
+
version: '2.0.1',
|
|
38
|
+
description: 'Harness Engineering:为遗留代码建立测试防护网再安全修改(四阶段完整指南)',
|
|
38
39
|
keywords: ['harness', 'legacy', '遗留代码', '特征测试', 'characterization'],
|
|
39
40
|
content: `---
|
|
40
41
|
name: official-harness-engineering
|
|
41
|
-
version:
|
|
42
|
-
description: "Harness Engineering
|
|
42
|
+
version: 2.0.1
|
|
43
|
+
description: "Harness Engineering:为遗留代码建立测试防护网再安全修改(四阶段完整指南)"
|
|
43
44
|
tags: [harness, testing, legacy, refactor]
|
|
44
45
|
---
|
|
45
46
|
|
|
46
|
-
# Harness Engineering
|
|
47
|
+
# Harness Engineering 方法论
|
|
48
|
+
|
|
49
|
+
当需要重构遗留代码(尤其是缺少测试的代码)时,按以下四阶段推进。
|
|
50
|
+
|
|
51
|
+
## 核心理念
|
|
47
52
|
|
|
48
53
|
在修改任何现有代码前,先建立测试防护网(harness),确保改动不破坏现有行为。
|
|
49
54
|
|
|
@@ -51,27 +56,95 @@ tags: [harness, testing, legacy, refactor]
|
|
|
51
56
|
- TDD 用于新功能开发(先测试后实现)
|
|
52
57
|
- Harness Engineering 用于改动现有代码(先理解后保护再修改)
|
|
53
58
|
|
|
54
|
-
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 阶段 1:理解现有实现(Understand)
|
|
62
|
+
|
|
63
|
+
**目标**:深入理解代码的当前行为和依赖关系。
|
|
64
|
+
|
|
65
|
+
**步骤**:
|
|
66
|
+
1. 阅读目标代码,识别关键逻辑和边界条件
|
|
67
|
+
2. 绘制依赖关系图(哪些模块依赖这段代码)
|
|
68
|
+
3. 识别潜在的副作用和隐藏依赖
|
|
69
|
+
4. 找到所有入口点和输出点
|
|
70
|
+
5. 记录边界条件和隐含假设
|
|
71
|
+
|
|
72
|
+
**输出**:行为文档(behavior document),记录当前实际行为
|
|
73
|
+
|
|
74
|
+
**建议**:调用 \`researcher\` Agent 进行深度分析
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 阶段 2:建立特征测试(Characterize)
|
|
79
|
+
|
|
80
|
+
**目标**:为现有行为建立测试"安全网"。
|
|
81
|
+
|
|
82
|
+
**步骤**:
|
|
83
|
+
1. 编写特征测试(Characterization Tests)— 记录当前行为,无论对错
|
|
84
|
+
2. 覆盖所有已知的输入输出组合
|
|
85
|
+
3. 覆盖所有主要代码路径
|
|
86
|
+
4. 确保测试全绿(即使代码有 bug,先记录现状)
|
|
87
|
+
5. 目标覆盖率 > 80%
|
|
88
|
+
|
|
89
|
+
**关键原则**:
|
|
90
|
+
- 测试描述"代码现在做什么",不是"应该做什么"
|
|
91
|
+
- 全部通过后才能继续下一阶段
|
|
92
|
+
|
|
93
|
+
**建议**:调用 \`tester\` Agent 编写测试
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 阶段 3:安全重构(Refactor)
|
|
55
98
|
|
|
56
|
-
|
|
57
|
-
- 找到所有入口点和输出点
|
|
58
|
-
- 记录边界条件和隐含假设
|
|
99
|
+
**目标**:在测试保护下进行重构。
|
|
59
100
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
101
|
+
**步骤**:
|
|
102
|
+
1. 小步重构(每次改动后立即运行测试)
|
|
103
|
+
2. 消除重复代码、提取函数、改善命名
|
|
104
|
+
3. 保持测试全绿
|
|
105
|
+
4. 每次只改一处,改完立即运行 harness
|
|
106
|
+
5. 测试失败 = 立即回滚,不要积累未验证的变更
|
|
64
107
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
108
|
+
**重构优先级**:
|
|
109
|
+
- 消除重复代码
|
|
110
|
+
- 提取函数和模块
|
|
111
|
+
- 改善命名和注释
|
|
112
|
+
- 简化复杂逻辑
|
|
68
113
|
|
|
69
|
-
|
|
114
|
+
**建议**:调用 \`refactor-specialist\` Agent 执行重构
|
|
70
115
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 阶段 4:验证重构结果(Verify)
|
|
119
|
+
|
|
120
|
+
**目标**:确认重构没有破坏功能。
|
|
121
|
+
|
|
122
|
+
**步骤**:
|
|
123
|
+
1. 运行完整测试套件
|
|
124
|
+
2. 手动验证关键路径
|
|
125
|
+
3. Code review
|
|
126
|
+
4. 对比原始行为文档,确认行为一致性
|
|
127
|
+
5. 逐步替换:新行为用新测试覆盖,旧 harness 逐步退役
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 何时使用
|
|
132
|
+
|
|
133
|
+
- 遗留代码缺少测试
|
|
134
|
+
- 代码复杂度高,不敢直接改
|
|
135
|
+
- 需要大规模重构但风险高
|
|
74
136
|
- 接手不熟悉的代码库
|
|
137
|
+
- 修改高风险核心模块
|
|
138
|
+
|
|
139
|
+
## 决策规则
|
|
140
|
+
|
|
141
|
+
- **简单重构**(complexity: simple):跳过理解阶段,直接建立特征测试
|
|
142
|
+
- **中等重构**(complexity: moderate):完整四阶段流程
|
|
143
|
+
- **复杂迁移**(complexity: complex):完整四阶段流程,额外谨慎
|
|
144
|
+
|
|
145
|
+
## 参考
|
|
146
|
+
|
|
147
|
+
- Michael Feathers, *Working Effectively with Legacy Code*
|
|
75
148
|
`,
|
|
76
149
|
},
|
|
77
150
|
{
|
|
@@ -527,5 +600,130 @@ Antigravity Kit is an AI-powered design intelligence toolkit providing searchabl
|
|
|
527
600
|
|
|
528
601
|
\\`,
|
|
529
602
|
},
|
|
603
|
+
{
|
|
604
|
+
name: 'official-bmad',
|
|
605
|
+
version: '1.0.1',
|
|
606
|
+
description: 'BMAD 方法论:四角色敏捷协作指南(完整四阶段流程)',
|
|
607
|
+
keywords: ['bmad', 'agile', 'four-role', 'collaboration', '敏捷', '四角色', 'story', 'sprint'],
|
|
608
|
+
content: `---
|
|
609
|
+
name: official-bmad
|
|
610
|
+
version: 1.0.1
|
|
611
|
+
description: "BMAD 方法论:四角色敏捷协作指南(完整四阶段流程)"
|
|
612
|
+
tags: [bmad, agile, four-role, collaboration]
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
# BMAD 方法论(Four-Role Agile)
|
|
616
|
+
|
|
617
|
+
BMAD 是一种四角色敏捷协作模式,适用于复杂功能开发和端到端的用户故事实现。
|
|
618
|
+
|
|
619
|
+
## 核心理念
|
|
620
|
+
|
|
621
|
+
通过明确的角色划分和阶段流程,确保需求、设计、实现和评审的质量。
|
|
622
|
+
|
|
623
|
+
## 四个角色
|
|
624
|
+
|
|
625
|
+
1. **Business(业务/产品经理)**:定义需求和验收标准
|
|
626
|
+
2. **Maker(实现者/开发者)**:编写代码和实现功能
|
|
627
|
+
3. **Architect(架构师)**:设计系统结构和接口
|
|
628
|
+
4. **Developer(开发/集成者)**:集成和测试
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## 阶段 1:分析(Analyze)
|
|
633
|
+
|
|
634
|
+
**角色**:Business + Architect
|
|
635
|
+
|
|
636
|
+
**目标**:澄清需求,识别技术约束和依赖。
|
|
637
|
+
|
|
638
|
+
**步骤**:
|
|
639
|
+
1. 澄清需求(用户故事、验收标准)
|
|
640
|
+
2. 识别技术约束和依赖
|
|
641
|
+
3. 评估风险和可行性
|
|
642
|
+
4. 定义输入输出和边界条件
|
|
643
|
+
|
|
644
|
+
**输出**:需求文档(requirements document)
|
|
645
|
+
|
|
646
|
+
**建议**:调用 \`researcher\` 或 \`planner\` Agent
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
## 阶段 2:设计(Design)
|
|
651
|
+
|
|
652
|
+
**角色**:Architect + Developer
|
|
653
|
+
|
|
654
|
+
**目标**:设计技术方案和模块结构。
|
|
655
|
+
|
|
656
|
+
**步骤**:
|
|
657
|
+
1. 设计模块划分和接口
|
|
658
|
+
2. 选择技术栈和工具
|
|
659
|
+
3. 制定实施计划
|
|
660
|
+
4. 设计数据流和架构图
|
|
661
|
+
5. 定义模块间的接口契约
|
|
662
|
+
|
|
663
|
+
**输出**:设计文档(design document)
|
|
664
|
+
|
|
665
|
+
**建议**:调用 \`planner\` Agent
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
## 阶段 3:实现(Implement)
|
|
670
|
+
|
|
671
|
+
**角色**:Maker + Developer
|
|
672
|
+
|
|
673
|
+
**目标**:按设计编写代码并集成。
|
|
674
|
+
|
|
675
|
+
**步骤**:
|
|
676
|
+
1. 按设计编写代码
|
|
677
|
+
2. 编写单元测试
|
|
678
|
+
3. 遵循编码规范
|
|
679
|
+
4. 集成到主分支
|
|
680
|
+
5. 编写清晰、可维护的代码
|
|
681
|
+
|
|
682
|
+
**输出**:可运行的代码和测试
|
|
683
|
+
|
|
684
|
+
**建议**:调用 \`coder\` 或 \`feature-developer\` Agent
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## 阶段 4:评审(Review)
|
|
689
|
+
|
|
690
|
+
**角色**:全员(Tech Lead 主导)
|
|
691
|
+
|
|
692
|
+
**目标**:确保代码质量、安全性和可维护性。
|
|
693
|
+
|
|
694
|
+
**步骤**:
|
|
695
|
+
1. Code review(检查代码质量)
|
|
696
|
+
2. 功能验收(Business 验证是否满足需求)
|
|
697
|
+
3. 技术债评估(Architect 审查架构合理性)
|
|
698
|
+
4. 安全性检查
|
|
699
|
+
5. 性能评估
|
|
700
|
+
|
|
701
|
+
**输出**:评审报告(review report)
|
|
702
|
+
|
|
703
|
+
**建议**:调用 \`reviewer\` Agent
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
## 何时使用
|
|
708
|
+
|
|
709
|
+
- 跨职能团队协作
|
|
710
|
+
- 复杂功能需要多角色参与
|
|
711
|
+
- 需要明确的职责划分
|
|
712
|
+
- 用户故事级别的完整功能开发
|
|
713
|
+
- Sprint 迭代开发
|
|
714
|
+
- 端到端(end-to-end)功能实现
|
|
715
|
+
|
|
716
|
+
## 决策规则
|
|
717
|
+
|
|
718
|
+
- **简单功能**(complexity: simple):只需实现阶段
|
|
719
|
+
- **中等功能**(complexity: moderate):设计 + 实现 + 评审
|
|
720
|
+
- **复杂功能**(complexity: complex):完整四阶段流程
|
|
721
|
+
|
|
722
|
+
## 参考
|
|
723
|
+
|
|
724
|
+
- BMAD Framework: https://bmad.dev
|
|
725
|
+
- Four-Role Agile Development Methodology
|
|
726
|
+
`,
|
|
727
|
+
},
|
|
530
728
|
];
|
|
531
729
|
//# sourceMappingURL=official-skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-skills.js","sourceRoot":"","sources":["../../src/skills/official-skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC;IAC9C,gBAAgB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC/D,mBAAmB,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC;IAC/E,oBAAoB,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC;IAClE,8BAA8B,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC;IACzF,6BAA6B,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;IAC3F,gCAAgC,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;IAClF,qBAAqB,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IAC7E,2BAA2B,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC;IACtF,mCAAmC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;IAC/F,6BAA6B,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC;IACpG,4BAA4B,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;IAClF,qBAAqB,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC/E,qBAAqB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC;IAClF,iBAAiB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC;IAC1E,aAAa,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC;IAClF,gBAAgB,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,CAAC;IACvF,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;CAChF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"official-skills.js","sourceRoot":"","sources":["../../src/skills/official-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/web/routes/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/web/routes/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAuB9E"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { probeWorkerAuth } from '../../capability/executor/worker-auth-probe.js';
|
|
2
1
|
/**
|
|
3
2
|
* Status / health endpoints for the daemon and background worker.
|
|
4
3
|
*/
|
|
5
4
|
export function registerStatusRoutes(app, ctx) {
|
|
6
5
|
const { storage } = ctx;
|
|
7
|
-
// Worker auth probe:
|
|
6
|
+
// Worker auth probe: legacy endpoint kept for UI backwards-compat.
|
|
7
|
+
// The background worker subsystem was removed alongside the methodology
|
|
8
|
+
// system (v8.36.0 hard deprecation B.1); the probe now always reports
|
|
9
|
+
// unavailable so the UI hides background-mode affordances.
|
|
8
10
|
app.get('/api/worker-auth-status', (_req, res) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
catch (err) {
|
|
14
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
15
|
-
res.status(500).json({ error: message });
|
|
16
|
-
}
|
|
11
|
+
res.json({
|
|
12
|
+
available: false,
|
|
13
|
+
reason: 'background worker subsystem removed (methodology deprecation)',
|
|
14
|
+
});
|
|
17
15
|
});
|
|
18
16
|
// Dashboard: daemon status
|
|
19
17
|
app.get('/api/status', (_req, res) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/web/routes/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/web/routes/status.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAgB,EAAE,GAAiB;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAExB,mEAAmE;IACnE,wEAAwE;IACxE,sEAAsE;IACtE,2DAA2D;IAC3D,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC;YACP,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,+DAA+D;SACxE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;YAC7B,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Application } from 'express';
|
|
2
2
|
import type { RouteContext } from './types.js';
|
|
3
3
|
/**
|
|
4
|
-
* /api/token-usage/* — token usage queries by session
|
|
4
|
+
* /api/token-usage/* — token usage queries by session.
|
|
5
5
|
*/
|
|
6
6
|
export declare function registerTokenUsageRoutes(app: Application, ctx: RouteContext): void;
|
|
7
7
|
//# sourceMappingURL=token-usage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage.d.ts","sourceRoot":"","sources":["../../../src/web/routes/token-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"token-usage.d.ts","sourceRoot":"","sources":["../../../src/web/routes/token-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAalF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* /api/token-usage/* — token usage queries by session
|
|
2
|
+
* /api/token-usage/* — token usage queries by session.
|
|
3
3
|
*/
|
|
4
4
|
export function registerTokenUsageRoutes(app, ctx) {
|
|
5
5
|
const { storage } = ctx;
|
|
@@ -14,20 +14,5 @@ export function registerTokenUsageRoutes(app, ctx) {
|
|
|
14
14
|
res.status(500).json({ error: String(err) });
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
|
-
app.get('/api/token-usage/methodology/:executionId', (req, res) => {
|
|
18
|
-
const executionId = parseInt(req.params.executionId);
|
|
19
|
-
if (isNaN(executionId)) {
|
|
20
|
-
res.status(400).json({ error: 'Invalid execution ID' });
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
try {
|
|
24
|
-
const usage = storage.getTokenUsageByMethodology(executionId);
|
|
25
|
-
const details = storage.listTokenUsage({ methodology_execution_id: executionId, limit: 100 });
|
|
26
|
-
res.json({ ...usage, details });
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
res.status(500).json({ error: String(err) });
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
17
|
}
|
|
33
18
|
//# sourceMappingURL=token-usage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../../src/web/routes/token-usage.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAgB,EAAE,GAAiB;IAC1E,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,qCAAqC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../../src/web/routes/token-usage.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAgB,EAAE,GAAiB;IAC1E,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,qCAAqC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -10,9 +10,6 @@ import type { SQLiteStorage } from '../../core/storage/sqlite.js';
|
|
|
10
10
|
import type { RuleEngine } from '../../engine/rule-engine.js';
|
|
11
11
|
import type { AgentRouter } from '../../engine/agent-router.js';
|
|
12
12
|
import type { AgentRegistry } from '../../agents/registry.js';
|
|
13
|
-
import type { ExecutionManager } from '../../capability/execution-manager.js';
|
|
14
|
-
import type { MethodologyRegistry } from '../../capability/methodology-registry.js';
|
|
15
|
-
import type { MethodologyPlanner } from '../../capability/methodology-planner.js';
|
|
16
13
|
import type { SkillRegistry } from '../../skills/registry.js';
|
|
17
14
|
export interface RouteContext {
|
|
18
15
|
storage: SQLiteStorage;
|
|
@@ -20,9 +17,6 @@ export interface RouteContext {
|
|
|
20
17
|
router?: AgentRouter;
|
|
21
18
|
agents?: AgentRegistry;
|
|
22
19
|
skillRegistry?: SkillRegistry;
|
|
23
|
-
executionManager?: ExecutionManager;
|
|
24
|
-
methodologyRegistry?: MethodologyRegistry;
|
|
25
|
-
methodologyPlanner?: MethodologyPlanner;
|
|
26
20
|
}
|
|
27
21
|
/**
|
|
28
22
|
* Resolve the concrete on-disk path + backup dir for a patchable target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web/routes/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web/routes/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAoBzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web/routes/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web/routes/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAe7B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,UAAkB;IAElB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,KAAK,CAAC;YACvE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC;SACtE,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,KAAK,CAAC;YACvE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC;SACtE,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC;YAC/D,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC;SACvE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAe,8CAA8C;QAC3F,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,EAAI,kDAAkD;QAC/F,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAkB,+CAA+C;QAC5F,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAAO,aAAa;KAC3D,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxD,CAAC"}
|
package/dist/web/server.d.ts
CHANGED
|
@@ -10,9 +10,6 @@ import type { SQLiteStorage } from '../core/storage/sqlite.js';
|
|
|
10
10
|
import type { RuleEngine } from '../engine/rule-engine.js';
|
|
11
11
|
import type { AgentRouter } from '../engine/agent-router.js';
|
|
12
12
|
import type { AgentRegistry } from '../agents/registry.js';
|
|
13
|
-
import type { ExecutionManager } from '../capability/execution-manager.js';
|
|
14
|
-
import type { MethodologyRegistry } from '../capability/methodology-registry.js';
|
|
15
|
-
import type { MethodologyPlanner } from '../capability/methodology-planner.js';
|
|
16
13
|
import type { SkillRegistry } from '../skills/registry.js';
|
|
17
14
|
export interface WebServerOptions {
|
|
18
15
|
port: number;
|
|
@@ -20,9 +17,6 @@ export interface WebServerOptions {
|
|
|
20
17
|
ruleEngine: RuleEngine;
|
|
21
18
|
router?: AgentRouter;
|
|
22
19
|
agents?: AgentRegistry;
|
|
23
|
-
executionManager?: ExecutionManager;
|
|
24
|
-
methodologyRegistry?: MethodologyRegistry;
|
|
25
|
-
methodologyPlanner?: MethodologyPlanner;
|
|
26
20
|
skillRegistry?: SkillRegistry;
|
|
27
21
|
}
|
|
28
22
|
export declare class WebServer {
|
package/dist/web/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAqB3D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,qBAAa,SAAS;IAIR,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAA0D;gBAEpD,OAAO,EAAE,gBAAgB;IAM7C,OAAO,CAAC,WAAW;IA0Cb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
|
package/dist/web/server.js
CHANGED
|
@@ -18,7 +18,6 @@ import { registerSessionsRoutes } from './routes/sessions.js';
|
|
|
18
18
|
import { registerRulesRoutes } from './routes/rules.js';
|
|
19
19
|
import { registerRoutingRoutes } from './routes/routing.js';
|
|
20
20
|
import { registerExperimentsRoutes } from './routes/experiments.js';
|
|
21
|
-
import { registerMethodologyRoutes } from './routes/methodology.js';
|
|
22
21
|
import { registerTokenUsageRoutes } from './routes/token-usage.js';
|
|
23
22
|
import { registerExecutionTraceRoutes } from './routes/execution-trace.js';
|
|
24
23
|
import { registerAIRoutes } from './routes/ai.js';
|
|
@@ -49,9 +48,6 @@ export class WebServer {
|
|
|
49
48
|
router: this.options.router,
|
|
50
49
|
agents: this.options.agents,
|
|
51
50
|
skillRegistry: this.options.skillRegistry,
|
|
52
|
-
executionManager: this.options.executionManager,
|
|
53
|
-
methodologyRegistry: this.options.methodologyRegistry,
|
|
54
|
-
methodologyPlanner: this.options.methodologyPlanner,
|
|
55
51
|
};
|
|
56
52
|
// 1. Auth bootstrap (must be available before everything else)
|
|
57
53
|
registerAuthRoutes(this.app, ctx);
|
|
@@ -66,7 +62,6 @@ export class WebServer {
|
|
|
66
62
|
registerRulesRoutes(this.app, ctx);
|
|
67
63
|
registerRoutingRoutes(this.app, ctx);
|
|
68
64
|
registerExperimentsRoutes(this.app, ctx);
|
|
69
|
-
registerMethodologyRoutes(this.app, ctx);
|
|
70
65
|
registerTokenUsageRoutes(this.app, ctx);
|
|
71
66
|
registerExecutionTraceRoutes(this.app, ctx);
|
|
72
67
|
registerAIRoutes(this.app, ctx);
|
package/dist/web/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as m,j as e}from"./react-vendor-CSp-GLFF.js";import{b as w,u as p,c as y}from"./query-C99w429o.js";import{u as N}from"./index-
|
|
2
|
-
//# sourceMappingURL=AIConfig-
|
|
1
|
+
import{r as m,j as e}from"./react-vendor-CSp-GLFF.js";import{b as w,u as p,c as y}from"./query-C99w429o.js";import{u as N}from"./index-B1J7nBu0.js";import{a as f}from"./auth-Bnf8ZcqN.js";import{C as k,E as _,n as C,e as P,d as S,o as E,Z as A,m as F}from"./lucide-Bu44HVAM.js";import"./react-router-I-HqunH7.js";import"./vendor-CMMjVdZs.js";import"./syntax-highlighter-44FakypI.js";async function I(){const a=await fetch("/api/config/ai");if(!a.ok)throw new Error("Failed to fetch config");return a.json()}async function K(a,r){const i=new URLSearchParams;a&&i.set("api_key",a),r&&i.set("base_url",r);const o=await fetch(`/api/ai/models?${i.toString()}`);return o.ok?(await o.json()).data||[]:[]}async function T(a){if(!(await f("/api/config/ai",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).ok)throw new Error("Failed to save config")}async function q(a){const r=await f("/api/ai/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),i=await r.json().catch(()=>({}));if(!r.ok)throw new Error(i.error||"Test failed");return i}function J(){const a=w(),r=N(),{data:i,isLoading:o}=p({queryKey:["ai-config"],queryFn:I}),[t,n]=m.useState({api_key:"",base_url:"",model:""}),[u,b]=m.useState(!1),[d,h]=m.useState(null);m.useEffect(()=>{i&&n(i)},[i]);const{data:l,refetch:j,isFetching:g}=p({queryKey:["ai-models",t.api_key,t.base_url],queryFn:()=>K(t.api_key,t.base_url),enabled:!!t.api_key&&!!t.base_url}),x=y({mutationFn:T,onSuccess:()=>{r.success("AI 配置已保存"),a.invalidateQueries({queryKey:["ai-config"]})},onError:s=>r.error(`保存失败: ${s.message}`)}),c=y({mutationFn:q,onSuccess:s=>{const v=(s==null?void 0:s.model)||t.model;h({ok:!0,message:`连接成功!模型: ${v}`}),r.success("API 连接测试通过")},onError:s=>{h({ok:!1,message:s.message}),r.error("API 连接测试失败")}});return o?e.jsx("div",{className:"bg-white rounded-lg shadow p-6",children:"加载中..."}):e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 mb-6",children:"AI 配置"}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6 max-w-2xl",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[e.jsx(k,{className:"h-5 w-5 text-indigo-600"}),e.jsx("h3",{className:"text-lg font-semibold text-gray-900",children:"Anthropic API 配置"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"API Key"}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:u?"text":"password",value:t.api_key||"",onChange:s=>n({...t,api_key:s.target.value}),placeholder:"sk-...",className:"w-full px-3 py-2 pr-10 border border-gray-300 rounded-md text-sm font-mono"}),e.jsx("button",{type:"button",onClick:()=>b(!u),className:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",children:u?e.jsx(_,{className:"h-4 w-4"}):e.jsx(C,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Base URL"}),e.jsx("input",{type:"text",value:t.base_url||"",onChange:s=>n({...t,base_url:s.target.value}),placeholder:"https://api.anthropic.com",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700",children:"主模型 (Distill / QualityGate)"}),e.jsx("button",{type:"button",onClick:()=>j(),disabled:!t.api_key||!t.base_url||g,className:"text-xs text-indigo-600 hover:text-indigo-700 disabled:text-gray-400",children:g?"加载中...":"🔄 刷新模型列表"})]}),l&&l.length>0?e.jsxs("select",{value:t.model||"",onChange:s=>n({...t,model:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm bg-white",children:[e.jsx("option",{value:"",children:"-- 选择模型 --"}),l.map(s=>e.jsxs("option",{value:s.id,children:[s.id," ",s.owned_by&&`(${s.owned_by})`]},s.id))]}):e.jsx("input",{type:"text",value:t.model||"",onChange:s=>n({...t,model:s.target.value}),placeholder:"claude-sonnet-4-6",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:l&&l.length>0?`发现 ${l.length} 个可用模型`:"填入 API Key 和 Base URL 后可自动发现模型"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"分类器模型(可选,便宜+快的模型)"}),l&&l.length>0?e.jsxs("select",{value:t.classifier_model||"",onChange:s=>n({...t,classifier_model:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm bg-white",children:[e.jsx("option",{value:"",children:"-- 不指定 (使用主模型) --"}),l.map(s=>e.jsx("option",{value:s.id,children:s.id},s.id))]}):e.jsx("input",{type:"text",value:t.classifier_model||"",onChange:s=>n({...t,classifier_model:s.target.value}),placeholder:"claude-haiku-4-5-20251001",className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:"分类器超时 (ms)"}),e.jsx("input",{type:"number",value:t.classifier_timeout||1e4,onChange:s=>n({...t,classifier_timeout:parseInt(s.target.value)}),className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm"})]}),d&&e.jsxs("div",{className:`flex items-start gap-2 p-3 rounded text-sm ${d.ok?"bg-green-50 text-green-800":"bg-red-50 text-red-800"}`,children:[d.ok?e.jsx(P,{className:"h-4 w-4 flex-shrink-0 mt-0.5"}):e.jsx(S,{className:"h-4 w-4 flex-shrink-0 mt-0.5"}),e.jsx("div",{className:"flex-1 break-all",children:d.message})]}),e.jsx("div",{className:"flex items-center justify-end pt-4 border-t",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>c.mutate({api_key:t.api_key,base_url:t.base_url,model:t.model}),disabled:c.isPending||!t.api_key||!t.model,className:"inline-flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 text-sm font-medium rounded-md hover:bg-gray-200 disabled:bg-gray-50 disabled:text-gray-400",children:[c.isPending?e.jsx(E,{className:"h-4 w-4 animate-spin"}):e.jsx(A,{className:"h-4 w-4"}),c.isPending?"测试中...":"测试连接"]}),e.jsxs("button",{onClick:()=>x.mutate(t),disabled:x.isPending,className:"inline-flex items-center gap-2 px-4 py-2 bg-indigo-600 text-white text-sm font-medium rounded-md hover:bg-indigo-700 disabled:bg-gray-400",children:[e.jsx(F,{className:"h-4 w-4"}),x.isPending?"保存中...":"保存配置"]})]})})]})]})]})}export{J as default};
|
|
2
|
+
//# sourceMappingURL=AIConfig-D4VglzCl.js.map
|