@winspan/claude-forge 8.39.0 → 8.41.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/dist/agents/methodologies/agent-builder.js +36 -11
- package/dist/agents/methodologies/agent-builder.js.map +1 -1
- package/dist/agents/methodologies/phases/bmad/analyze.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/bmad/analyze.js +1 -0
- package/dist/agents/methodologies/phases/bmad/analyze.js.map +1 -1
- package/dist/agents/methodologies/phases/bmad/design.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/bmad/design.js +1 -0
- package/dist/agents/methodologies/phases/bmad/design.js.map +1 -1
- package/dist/agents/methodologies/phases/bmad/implement.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/bmad/implement.js +1 -0
- package/dist/agents/methodologies/phases/bmad/implement.js.map +1 -1
- package/dist/agents/methodologies/phases/bmad/review.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/bmad/review.js +1 -0
- package/dist/agents/methodologies/phases/bmad/review.js.map +1 -1
- package/dist/agents/methodologies/phases/bmad/test.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/bmad/test.js +1 -0
- package/dist/agents/methodologies/phases/bmad/test.js.map +1 -1
- package/dist/agents/methodologies/phases/harness/fix.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/harness/fix.js +1 -0
- package/dist/agents/methodologies/phases/harness/fix.js.map +1 -1
- package/dist/agents/methodologies/phases/harness/reproduce.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/harness/reproduce.js +1 -0
- package/dist/agents/methodologies/phases/harness/reproduce.js.map +1 -1
- package/dist/agents/methodologies/phases/harness/root-cause.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/harness/root-cause.js +2 -1
- package/dist/agents/methodologies/phases/harness/root-cause.js.map +1 -1
- package/dist/agents/methodologies/phases/harness/safety-net.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/harness/safety-net.js +1 -0
- package/dist/agents/methodologies/phases/harness/safety-net.js.map +1 -1
- package/dist/agents/methodologies/phases/harness/verify.d.ts.map +1 -1
- package/dist/agents/methodologies/phases/harness/verify.js +1 -0
- package/dist/agents/methodologies/phases/harness/verify.js.map +1 -1
- package/dist/agents/methodologies/types.d.ts +2 -0
- package/dist/agents/methodologies/types.d.ts.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +7 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +13 -4
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.js +51 -58
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -1
- package/dist/daemon/index.js +1 -1
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/routing-state.d.ts +1 -0
- package/dist/daemon/routing-state.d.ts.map +1 -1
- package/dist/daemon/routing-state.js +17 -0
- package/dist/daemon/routing-state.js.map +1 -1
- package/dist/engine/security-gates.d.ts +42 -0
- package/dist/engine/security-gates.d.ts.map +1 -0
- package/dist/engine/security-gates.js +210 -0
- package/dist/engine/security-gates.js.map +1 -0
- package/dist/skills/tools/skill-invoke.d.ts +2 -0
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
- package/dist/skills/tools/skill-invoke.js +5 -2
- package/dist/skills/tools/skill-invoke.js.map +1 -1
- package/package.json +1 -1
|
@@ -59,6 +59,22 @@ export function buildMethodologyAgent(preset) {
|
|
|
59
59
|
content,
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
|
+
function generateExamples(phases, slugPlaceholder) {
|
|
63
|
+
// 只为实际包含的 phase 生成示例,最多取前 2 个有 skillId 的 phase
|
|
64
|
+
const examplePhases = phases
|
|
65
|
+
.filter((p) => p.template.skillId !== null)
|
|
66
|
+
.slice(0, 2);
|
|
67
|
+
if (examplePhases.length === 0) {
|
|
68
|
+
return `- Example: \`skill_invoke(skill_id: "official-skill", reason: "workflow/phase${slugPlaceholder}")\``;
|
|
69
|
+
}
|
|
70
|
+
const exampleSlug = slugPlaceholder.replace(/[<>]/g, '').replace('-slug', '');
|
|
71
|
+
return examplePhases
|
|
72
|
+
.map((p) => {
|
|
73
|
+
const exampleValue = exampleSlug === 'feature' ? 'user-auth' : 'login-crash';
|
|
74
|
+
return `- ${p.template.workflow.toUpperCase()} ${p.template.id} phase: \`skill_invoke(skill_id: "${p.template.skillId}", reason: "${p.template.workflow}/${p.template.id}:${exampleValue}")\``;
|
|
75
|
+
})
|
|
76
|
+
.join('\n');
|
|
77
|
+
}
|
|
62
78
|
function buildPromptContent(preset, phases) {
|
|
63
79
|
const workflowSet = new Set(phases.map((p) => p.template.workflow));
|
|
64
80
|
const workflowName = workflowSet.size === 1 ? [...workflowSet][0] : 'mixed';
|
|
@@ -66,13 +82,9 @@ function buildPromptContent(preset, phases) {
|
|
|
66
82
|
const tagsLine = preset.tags && preset.tags.length > 0
|
|
67
83
|
? `\n## 标签\n${preset.tags.map((t) => `\`${t}\``).join(' ')}\n`
|
|
68
84
|
: '';
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
// 跨方法论(未来)或未知场景 fallback 到通用 <slug>
|
|
73
|
-
const slugPlaceholder = workflowName === 'harness' ? '<bug-slug>'
|
|
74
|
-
: workflowName === 'bmad' ? '<feature-slug>'
|
|
75
|
-
: '<slug>';
|
|
85
|
+
// 从 phase template 读取 slugPlaceholder,优先使用第一个 phase 的定义
|
|
86
|
+
// 如果未定义则 fallback 到通用 <slug>
|
|
87
|
+
const slugPlaceholder = phases[0]?.template.slugPlaceholder ?? '<slug>';
|
|
76
88
|
return `# ${preset.name}
|
|
77
89
|
|
|
78
90
|
${preset.description}
|
|
@@ -98,15 +110,28 @@ skill_invoke(
|
|
|
98
110
|
\`\`\`
|
|
99
111
|
|
|
100
112
|
**示例**:
|
|
101
|
-
|
|
102
|
-
- BMAD design phase: \`skill_invoke(skill_id: "official-architect", reason: "bmad/design:user-auth")\`
|
|
103
|
-
- Harness reproduce phase: \`skill_invoke(skill_id: "official-debug", reason: "harness/reproduce:login-crash")\`
|
|
104
|
-
- Harness safety-net phase: \`skill_invoke(skill_id: "official-test-writer", reason: "harness/safety-net:login-crash")\`
|
|
113
|
+
${generateExamples(phases, slugPlaceholder)}
|
|
105
114
|
|
|
106
115
|
**重要**:
|
|
107
116
|
1. reason 参数格式必须严格遵守 \`${workflowName}/<phase>[:${slugPlaceholder}]\`,这样系统才能正确追踪工作流进度
|
|
108
117
|
2. 每个 phase 开始前都要调用,不能跳过
|
|
109
118
|
3. skill_id 必须与 phase 定义中的 skillId 字段一致
|
|
119
|
+
4. ${slugPlaceholder} 建议使用英文、数字和连字符(如 \`user-auth\`、\`login-crash\`),虽然系统支持中文但英文更利于跨团队协作
|
|
120
|
+
|
|
121
|
+
### 如果 skill_invoke 调用失败
|
|
122
|
+
|
|
123
|
+
1. **检查 skill_id 是否正确**:
|
|
124
|
+
- 使用 \`skill_list\` 工具查询可用的 Skill
|
|
125
|
+
- 确认 skill_id 与 phase 匹配
|
|
126
|
+
|
|
127
|
+
2. **如果 Skill 不存在**:
|
|
128
|
+
- 使用通用方法论继续执行该 phase
|
|
129
|
+
- 在最终报告中说明该 phase 未使用 Skill 指导
|
|
130
|
+
|
|
131
|
+
3. **如果防护检查失败**:
|
|
132
|
+
- 检查 reason 参数格式是否正确
|
|
133
|
+
- 确认 workflow/phase/slug 符合规范
|
|
134
|
+
- 记录失败原因并继续执行
|
|
110
135
|
|
|
111
136
|
---
|
|
112
137
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../../src/agents/methodologies/agent-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../../../src/agents/methodologies/agent-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,aAiB1B,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const BMAD_ANALYZE = {
|
|
|
5
5
|
description: '拆解需求边界,识别成功标准与约束,产出《需求规格》',
|
|
6
6
|
skillId: 'official-spec-driven-design',
|
|
7
7
|
artifactHint: 'docs/specs/<feature-slug>.md',
|
|
8
|
+
slugPlaceholder: '<feature-slug>',
|
|
8
9
|
promptBody: `### Phase: analyze(需求分析)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-spec-driven-design", reason: "bmad/analyze:<feature-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/analyze.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,EAAE,EAAE,SAAS;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,6BAA6B;IACtC,YAAY,EAAE,8BAA8B;IAC5C,UAAU,EAAE;;;;;;;;CAQb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/analyze.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,EAAE,EAAE,SAAS;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,6BAA6B;IACtC,YAAY,EAAE,8BAA8B;IAC5C,eAAe,EAAE,gBAAgB;IACjC,UAAU,EAAE;;;;;;;;CAQb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/design.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"design.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/design.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,aAgBzB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const BMAD_DESIGN = {
|
|
|
5
5
|
description: '产出设计文档,包括数据模型 / API 契约 / 关键决策',
|
|
6
6
|
skillId: 'official-architecture-decision',
|
|
7
7
|
artifactHint: 'docs/design/<feature-slug>.md',
|
|
8
|
+
slugPlaceholder: '<feature-slug>',
|
|
8
9
|
promptBody: `### Phase: design(架构设计)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-architecture-decision", reason: "bmad/design:<feature-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/design.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,+BAA+B;IAC5C,OAAO,EAAE,gCAAgC;IACzC,YAAY,EAAE,+BAA+B;IAC7C,UAAU,EAAE;;;;;;;CAOb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/design.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,+BAA+B;IAC5C,OAAO,EAAE,gCAAgC;IACzC,YAAY,EAAE,+BAA+B;IAC7C,eAAe,EAAE,gBAAgB;IACjC,UAAU,EAAE;;;;;;;CAOb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implement.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/implement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"implement.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/implement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,aAe5B,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const BMAD_IMPLEMENT = {
|
|
|
5
5
|
description: '按 TDD 流程编写代码 + 测试',
|
|
6
6
|
skillId: 'official-tdd',
|
|
7
7
|
artifactHint: 'src/...(源代码)+ tests/...(测试)',
|
|
8
|
+
slugPlaceholder: '<feature-slug>',
|
|
8
9
|
promptBody: `### Phase: implement(实现编码)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-tdd", reason: "bmad/implement:<feature-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/implement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,6BAA6B;IAC3C,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/implement.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,6BAA6B;IAC3C,eAAe,EAAE,gBAAgB;IACjC,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,aAezB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const BMAD_REVIEW = {
|
|
|
5
5
|
description: '自审代码 + 检查 git diff,产出审查清单',
|
|
6
6
|
skillId: 'official-pr-review',
|
|
7
7
|
artifactHint: 'docs/reviews/<feature-slug>.md',
|
|
8
|
+
slugPlaceholder: '<feature-slug>',
|
|
8
9
|
promptBody: `### Phase: review(代码审核)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-pr-review", reason: "bmad/review:<feature-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,oBAAoB;IAC7B,YAAY,EAAE,gCAAgC;IAC9C,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,oBAAoB;IAC7B,YAAY,EAAE,gCAAgC;IAC9C,eAAe,EAAE,gBAAgB;IACjC,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,SAAS,EAAE,aAmBvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/test.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,qCAAqC;IACnD,UAAU,EAAE;;;;;;;;;;CAUb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/bmad/test.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,qCAAqC;IACnD,eAAe,EAAE,gBAAgB;IACjC,UAAU,EAAE;;;;;;;;;;CAUb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/fix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/fix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,WAAW,EAAE,aAezB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const HARNESS_FIX = {
|
|
|
5
5
|
description: '在测试覆盖下修改代码,确保所有相关测试通过',
|
|
6
6
|
skillId: 'official-tdd',
|
|
7
7
|
artifactHint: 'src/...(修复代码)',
|
|
8
|
+
slugPlaceholder: '<bug-slug>',
|
|
8
9
|
promptBody: `### Phase: fix(修复)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-tdd", reason: "harness/fix:<bug-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/fix.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,KAAK;IACT,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,uBAAuB;IACpC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/fix.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,EAAE,EAAE,KAAK;IACT,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,uBAAuB;IACpC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/reproduce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"reproduce.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/reproduce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,aAkB/B,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const HARNESS_REPRODUCE = {
|
|
|
5
5
|
description: '编写最小复现脚本,明确 bug 触发路径',
|
|
6
6
|
skillId: 'official-debug',
|
|
7
7
|
artifactHint: 'docs/investigations/<bug-slug>.md',
|
|
8
|
+
slugPlaceholder: '<bug-slug>',
|
|
8
9
|
promptBody: `### Phase: reproduce(现象复现)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-debug", reason: "harness/reproduce:<bug-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/reproduce.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,mCAAmC;IACjD,UAAU,EAAE;;;;;;;;;CASb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"reproduce.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/reproduce.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,EAAE,EAAE,WAAW;IACf,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,mCAAmC;IACjD,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE;;;;;;;;;CASb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-cause.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/root-cause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"root-cause.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/root-cause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,aAmBhC,CAAC"}
|
|
@@ -4,7 +4,8 @@ export const HARNESS_ROOT_CAUSE = {
|
|
|
4
4
|
title: '根因定位',
|
|
5
5
|
description: '通过测试和 git blame/log 定位真因,追加到诊断文档',
|
|
6
6
|
skillId: null,
|
|
7
|
-
artifactHint: 'docs/investigations/<bug-slug>.md
|
|
7
|
+
artifactHint: 'docs/investigations/<bug-slug>.md(追加”根因”段落)',
|
|
8
|
+
slugPlaceholder: '<bug-slug>',
|
|
8
9
|
promptBody: `### Phase: root-cause(根因定位)
|
|
9
10
|
|
|
10
11
|
1. 通过测试和 \`git blame\` / \`git log\` 定位真因
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-cause.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/root-cause.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,6CAA6C;IAC3D,UAAU,EAAE;;;;;;;;;;CAUb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"root-cause.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/root-cause.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,kCAAkC;IAC/C,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,6CAA6C;IAC3D,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE;;;;;;;;;;CAUb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety-net.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/safety-net.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"safety-net.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/safety-net.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,aAehC,CAAC"}
|
|
@@ -5,6 +5,7 @@ export const HARNESS_SAFETY_NET = {
|
|
|
5
5
|
description: '为受影响模块补特性测试(characterization test),锁定现有行为',
|
|
6
6
|
skillId: 'official-harness-engineering',
|
|
7
7
|
artifactHint: 'tests/...(新增特性测试)',
|
|
8
|
+
slugPlaceholder: '<bug-slug>',
|
|
8
9
|
promptBody: `### Phase: safety-net(防护网构建)
|
|
9
10
|
|
|
10
11
|
1. 调用 \`skill_invoke({skill_id: "official-harness-engineering", reason: "harness/safety-net:<bug-slug>"})\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety-net.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/safety-net.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,8BAA8B;IACvC,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"safety-net.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/safety-net.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,8BAA8B;IACvC,YAAY,EAAE,mBAAmB;IACjC,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE;;;;;;CAMb;CACA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,aAoB5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/verify.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,4BAA4B;IAC1C,UAAU,EAAE;;;;;;;;;;;CAWb;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../../src/agents/methodologies/phases/harness/verify.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IACZ,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,4BAA4B;IAC1C,eAAe,EAAE,YAAY;IAC7B,UAAU,EAAE;;;;;;;;;;;CAWb;CACA,CAAC"}
|
|
@@ -21,6 +21,8 @@ export interface PhaseTemplate {
|
|
|
21
21
|
artifactHint: string | null;
|
|
22
22
|
/** Detailed phase instructions (markdown) */
|
|
23
23
|
promptBody: string;
|
|
24
|
+
/** Slug placeholder name used in this phase, e.g. '<feature-slug>' or '<bug-slug>' */
|
|
25
|
+
slugPlaceholder?: string;
|
|
24
26
|
}
|
|
25
27
|
export interface MethodologyAgentPreset {
|
|
26
28
|
/** Agent slug (subagent_type) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/methodologies/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/methodologies/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2B9C;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,CAAC,EAAE,MAAM;IAI/B;;OAEG;IACH,GAAG,IAAI,WAAW;IAgClB;;OAEG;IACH,IAAI,IAAI,IAAI;CASb"}
|
package/dist/core/config.js
CHANGED
|
@@ -16,6 +16,12 @@ function defaultConfig() {
|
|
|
16
16
|
enabled: false,
|
|
17
17
|
port: DEFAULTS.WEB_PORT,
|
|
18
18
|
},
|
|
19
|
+
security: {
|
|
20
|
+
destructiveOps: true,
|
|
21
|
+
secretsCheck: true,
|
|
22
|
+
diffSizeCheck: true,
|
|
23
|
+
diffSizeThreshold: 300,
|
|
24
|
+
},
|
|
19
25
|
};
|
|
20
26
|
}
|
|
21
27
|
/**
|
|
@@ -49,6 +55,7 @@ export class ConfigManager {
|
|
|
49
55
|
distill: { ...defaults.distill, ...parsed.distill },
|
|
50
56
|
storage: { ...defaults.storage, ...parsed.storage },
|
|
51
57
|
web: { ...defaults.web, ...parsed.web },
|
|
58
|
+
security: { ...defaults.security, ...parsed.security },
|
|
52
59
|
};
|
|
53
60
|
return this.config;
|
|
54
61
|
}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEvD,SAAS,aAAa;IACpB,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,QAAQ,CAAC,aAAa;YAC7B,QAAQ,EAAE,QAAQ,CAAC,gBAAgB;SACpC;QACD,OAAO,EAAE;YACP,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC5B,WAAW,EAAE,QAAQ,CAAC,mBAAmB;SAC1C;QACD,GAAG,EAAE;YACH,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,QAAQ,CAAC,QAAQ;SACxB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAuB,IAAI,CAAC;IACzB,UAAU,CAAS;IAEpC,YAAY,UAAmB;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAEpC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgC,CAAC;YAE7D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,MAAM,GAAG;gBACZ,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;gBACnD,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;gBACnD,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -23,6 +23,15 @@ export interface HookResult {
|
|
|
23
23
|
systemMessage?: string;
|
|
24
24
|
additionalContext?: string;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Security configuration
|
|
28
|
+
*/
|
|
29
|
+
export interface SecurityConfig {
|
|
30
|
+
destructiveOps: boolean;
|
|
31
|
+
secretsCheck: boolean;
|
|
32
|
+
diffSizeCheck: boolean;
|
|
33
|
+
diffSizeThreshold: number;
|
|
34
|
+
}
|
|
26
35
|
/**
|
|
27
36
|
* Configuration structure
|
|
28
37
|
*/
|
|
@@ -46,5 +55,6 @@ export interface ForgeConfig {
|
|
|
46
55
|
skill_matching?: {
|
|
47
56
|
api_key?: string;
|
|
48
57
|
};
|
|
58
|
+
security?: SecurityConfig;
|
|
49
59
|
}
|
|
50
60
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,aAAa,GAAG,kBAAkB,GAAG,cAAc,GAAG,MAAM,CAAC;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,aAAa,GAAG,kBAAkB,GAAG,cAAc,GAAG,MAAM,CAAC;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B"}
|
|
@@ -10,17 +10,26 @@ import type { ForgeEvent, HookResult } from '../../core/types.js';
|
|
|
10
10
|
import type { RuleEngine } from '../../engine/rule-engine.js';
|
|
11
11
|
import type { GovernanceDecision } from '../../engine/dsl/types.js';
|
|
12
12
|
import type { ContextBuilder } from '../../engine/context-builder.js';
|
|
13
|
+
import type { SecurityConfig } from '../../core/types.js';
|
|
13
14
|
export declare class PreToolUseHandler {
|
|
14
15
|
private ruleEngine;
|
|
15
16
|
private contextBuilder;
|
|
16
17
|
private sessionStartTime;
|
|
17
|
-
|
|
18
|
+
private securityGates;
|
|
19
|
+
constructor(ruleEngine: RuleEngine, contextBuilder: ContextBuilder, securityConfig?: SecurityConfig);
|
|
18
20
|
handle(event: ForgeEvent): Promise<HookResult>;
|
|
19
21
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
+
* Track routing compliance without blocking (inspired by ruflo's design).
|
|
23
|
+
*
|
|
24
|
+
* Ruflo's approach: routing is a SUGGESTION enforced by CLAUDE.md instructions,
|
|
25
|
+
* not a hard block in the hook layer. This prevents the deadlock where:
|
|
26
|
+
* 1. UserPrompt injects [ROUTE_TO: agent]
|
|
27
|
+
* 2. PreToolUse blocks all tools
|
|
28
|
+
* 3. Claude can't call Agent tool because it's blocked
|
|
29
|
+
*
|
|
30
|
+
* New approach: Let CLAUDE.md guide behavior, track compliance for metrics.
|
|
22
31
|
*/
|
|
23
|
-
private
|
|
32
|
+
private trackRoutingCompliance;
|
|
24
33
|
handleWithDecision(event: ForgeEvent): Promise<{
|
|
25
34
|
result: HookResult;
|
|
26
35
|
decision: GovernanceDecision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,2BAA2B,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AAI7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiB1D,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,aAAa,CAA8B;gBAGzC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EACtC,cAAc,CAAC,EAAE,cAAc;IAO3B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IA+BpD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IA6BxB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAyD1G,OAAO,CAAC,gBAAgB;CASzB"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { logger } from '../../core/utils/logger.js';
|
|
10
10
|
import { routingState } from '../routing-state.js';
|
|
11
|
+
import { SecurityGates } from '../../engine/security-gates.js';
|
|
11
12
|
// Tools that are allowed even when routing is active (investigation phase)
|
|
12
13
|
const ROUTING_WHITELIST = new Set([
|
|
13
14
|
'Read', 'Grep', 'Glob', // Code exploration
|
|
@@ -25,87 +26,79 @@ export class PreToolUseHandler {
|
|
|
25
26
|
ruleEngine;
|
|
26
27
|
contextBuilder;
|
|
27
28
|
sessionStartTime = Date.now();
|
|
28
|
-
|
|
29
|
+
securityGates = null;
|
|
30
|
+
constructor(ruleEngine, contextBuilder, securityConfig) {
|
|
29
31
|
this.ruleEngine = ruleEngine;
|
|
30
32
|
this.contextBuilder = contextBuilder;
|
|
33
|
+
if (securityConfig) {
|
|
34
|
+
this.securityGates = new SecurityGates(securityConfig);
|
|
35
|
+
}
|
|
31
36
|
}
|
|
32
37
|
async handle(event) {
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
// Security checks run first (highest priority)
|
|
39
|
+
if (this.securityGates) {
|
|
40
|
+
const securityResult = this.securityGates.evaluate(event);
|
|
41
|
+
if (securityResult) {
|
|
42
|
+
if (securityResult.level === 'block') {
|
|
43
|
+
logger.info(`[PreToolUse] BLOCKED by security gate: ${securityResult.checkName}`);
|
|
44
|
+
return { allow: false, reason: securityResult.reason };
|
|
45
|
+
}
|
|
46
|
+
if (securityResult.level === 'warn') {
|
|
47
|
+
logger.info(`[PreToolUse] WARNED by security gate: ${securityResult.checkName}`);
|
|
48
|
+
// Continue to governance rules but include security warning
|
|
49
|
+
const { result } = await this.handleWithDecision(event);
|
|
50
|
+
if (result.additionalContext) {
|
|
51
|
+
result.additionalContext = `${securityResult.reason}\n\n${result.additionalContext}`;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
result.additionalContext = securityResult.reason;
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
37
59
|
}
|
|
38
|
-
//
|
|
60
|
+
// Track routing compliance but don't block (inspired by ruflo's design)
|
|
61
|
+
this.trackRoutingCompliance(event);
|
|
62
|
+
// Run governance rules
|
|
39
63
|
const { result } = await this.handleWithDecision(event);
|
|
40
64
|
return result;
|
|
41
65
|
}
|
|
42
66
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
67
|
+
* Track routing compliance without blocking (inspired by ruflo's design).
|
|
68
|
+
*
|
|
69
|
+
* Ruflo's approach: routing is a SUGGESTION enforced by CLAUDE.md instructions,
|
|
70
|
+
* not a hard block in the hook layer. This prevents the deadlock where:
|
|
71
|
+
* 1. UserPrompt injects [ROUTE_TO: agent]
|
|
72
|
+
* 2. PreToolUse blocks all tools
|
|
73
|
+
* 3. Claude can't call Agent tool because it's blocked
|
|
74
|
+
*
|
|
75
|
+
* New approach: Let CLAUDE.md guide behavior, track compliance for metrics.
|
|
45
76
|
*/
|
|
46
|
-
|
|
77
|
+
trackRoutingCompliance(event) {
|
|
47
78
|
const routing = routingState.getRouting(event.session_id);
|
|
48
|
-
logger.warn(`[PreToolUse] checkRoutingEnforcement: session=${event.session_id}, tool=${event.tool_name}, routing=${routing ? routing.agentName : 'null'}`);
|
|
49
79
|
if (!routing) {
|
|
50
|
-
|
|
51
|
-
return { allow: true }; // No active routing, allow everything
|
|
80
|
+
return; // No active routing
|
|
52
81
|
}
|
|
53
82
|
const toolName = event.tool_name;
|
|
54
83
|
if (!toolName) {
|
|
55
|
-
return
|
|
84
|
+
return;
|
|
56
85
|
}
|
|
57
|
-
//
|
|
58
|
-
if (ROUTING_WHITELIST.has(toolName)) {
|
|
59
|
-
logger.info(`[PreToolUse] Tool ${toolName} is whitelisted, allowing`);
|
|
60
|
-
return { allow: true };
|
|
61
|
-
}
|
|
62
|
-
// Check if this is the correct Agent/Task call
|
|
86
|
+
// Track Agent tool invocations
|
|
63
87
|
if (toolName === 'Agent' || toolName === 'Task') {
|
|
64
88
|
const subagentType = event.tool_input?.subagent_type;
|
|
65
89
|
if (subagentType === routing.agentName) {
|
|
66
|
-
// Correct agent invoked - clear routing state
|
|
90
|
+
// Correct agent invoked - clear routing state
|
|
67
91
|
routingState.clearRouting(event.session_id);
|
|
68
|
-
logger.info(`[PreToolUse] Routing
|
|
69
|
-
|
|
92
|
+
logger.info(`[PreToolUse] ✅ Routing complied: ${routing.agentName} invoked correctly`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
logger.warn(`[PreToolUse] ⚠️ Routing mismatch: expected ${routing.agentName}, got ${subagentType}`);
|
|
70
96
|
}
|
|
71
|
-
// Wrong agent - block
|
|
72
|
-
logger.warn(`[PreToolUse] Routing violation: expected ${routing.agentName}, got ${subagentType}`);
|
|
73
|
-
return {
|
|
74
|
-
allow: false,
|
|
75
|
-
reason: [
|
|
76
|
-
`⚠️ 路由冲突:当前任务已被路由到 ${routing.agentName} agent。`,
|
|
77
|
-
``,
|
|
78
|
-
`你尝试调用的是 ${subagentType},这与路由决策不符。`,
|
|
79
|
-
``,
|
|
80
|
-
`请使用正确的 agent:`,
|
|
81
|
-
` Tool: Agent`,
|
|
82
|
-
` subagent_type: "${routing.agentName}"`,
|
|
83
|
-
` prompt: <用户原始 prompt>`,
|
|
84
|
-
].join('\n'),
|
|
85
|
-
};
|
|
86
97
|
}
|
|
87
|
-
//
|
|
88
|
-
if (ROUTING_ENFORCEMENT_TOOLS.has(toolName)) {
|
|
89
|
-
logger.
|
|
90
|
-
return {
|
|
91
|
-
allow: false,
|
|
92
|
-
reason: [
|
|
93
|
-
`⚠️ 路由强制执行:当前任务必须通过 ${routing.agentName} agent 处理。`,
|
|
94
|
-
``,
|
|
95
|
-
`你尝试直接调用 ${toolName} 工具,这违反了路由决策。`,
|
|
96
|
-
``,
|
|
97
|
-
`正确做法:使用 Agent 工具调用专业 agent`,
|
|
98
|
-
` Tool: Agent`,
|
|
99
|
-
` subagent_type: "${routing.agentName}"`,
|
|
100
|
-
` description: "执行用户请求的任务"`,
|
|
101
|
-
` prompt: <将用户的完整 prompt 传入>`,
|
|
102
|
-
``,
|
|
103
|
-
`Agent 职责:${routing.agentDescription}`,
|
|
104
|
-
].join('\n'),
|
|
105
|
-
};
|
|
98
|
+
// Log potential routing bypasses (for metrics, not blocking)
|
|
99
|
+
if (ROUTING_ENFORCEMENT_TOOLS.has(toolName) && toolName !== 'Agent' && toolName !== 'Task') {
|
|
100
|
+
logger.info(`[PreToolUse] ℹ️ Direct tool usage while routing active: ${toolName} (routed to ${routing.agentName})`);
|
|
106
101
|
}
|
|
107
|
-
// Other tools - allow (e.g., AskUserQuestion for clarification)
|
|
108
|
-
return { allow: true };
|
|
109
102
|
}
|
|
110
103
|
async handleWithDecision(event) {
|
|
111
104
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/index.js
CHANGED
|
@@ -130,7 +130,7 @@ export async function startDaemon(foreground = false) {
|
|
|
130
130
|
// ── 6. Create handlers ─────────────────────────────────────────────────────
|
|
131
131
|
const handlers = {
|
|
132
132
|
UserPromptSubmit: new UserPromptHandler(classifier, resume, conventionExtractor, experimentRouter, agents, storage, routingObserver, skillRegistry),
|
|
133
|
-
PreToolUse: new PreToolUseHandler(ruleEngine, contextBuilder),
|
|
133
|
+
PreToolUse: new PreToolUseHandler(ruleEngine, contextBuilder, config.security),
|
|
134
134
|
PostToolUse: new PostToolUseHandler(qualityGate ?? null, storage, routingObserver),
|
|
135
135
|
Stop: new StopHandler(distiller ?? null, exporter, resume, routingObserver, taskSegmenter, storage, invocationGuard, executionDocBuilder),
|
|
136
136
|
};
|
package/dist/daemon/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing-state.d.ts","sourceRoot":"","sources":["../../src/daemon/routing-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"routing-state.d.ts","sourceRoot":"","sources":["../../src/daemon/routing-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAQD;;GAEG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAE7C;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+C9D;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IA0BrD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAkBrC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAetC;;;;;;;;;OASG;IACH,aAAa,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI;IAuBxE;;OAEG;IACH,QAAQ,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IA6B/D;;OAEG;IACH,OAAO,IAAI,MAAM;CAsClB;AAGD,eAAO,MAAM,YAAY,qBAA4B,CAAC"}
|
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
import { logger } from '../core/utils/logger.js';
|
|
8
8
|
// Auto-cleanup stale routing state after 30 minutes
|
|
9
9
|
const ROUTING_STATE_TTL_MS = 30 * 60 * 1000;
|
|
10
|
+
// Maximum number of concurrent sessions to track (LRU eviction when exceeded)
|
|
11
|
+
const MAX_SESSIONS = 1000;
|
|
10
12
|
/**
|
|
11
13
|
* Global routing state manager (singleton pattern)
|
|
12
14
|
*/
|
|
13
15
|
class RoutingStateManager {
|
|
14
16
|
state = new Map();
|
|
17
|
+
MAX_SESSIONS = MAX_SESSIONS;
|
|
15
18
|
/**
|
|
16
19
|
* Record that a session has been routed to a specific agent
|
|
17
20
|
*/
|
|
@@ -38,6 +41,20 @@ class RoutingStateManager {
|
|
|
38
41
|
logger.error(`[RoutingState] setRouting: invalid timestamp for session ${sessionId}: ${JSON.stringify(decision)}`);
|
|
39
42
|
return;
|
|
40
43
|
}
|
|
44
|
+
// LRU eviction: if capacity exceeded and this is a new session, evict oldest
|
|
45
|
+
if (this.state.size >= this.MAX_SESSIONS && !this.state.has(sessionId)) {
|
|
46
|
+
const entries = Array.from(this.state.entries());
|
|
47
|
+
if (entries.length > 0) {
|
|
48
|
+
// Find the oldest entry by timestamp
|
|
49
|
+
const oldest = entries.reduce((min, current) => {
|
|
50
|
+
const currentTimestamp = current[1]?.timestamp ?? Infinity;
|
|
51
|
+
const minTimestamp = min[1]?.timestamp ?? Infinity;
|
|
52
|
+
return currentTimestamp < minTimestamp ? current : min;
|
|
53
|
+
});
|
|
54
|
+
this.state.delete(oldest[0]);
|
|
55
|
+
logger.debug(`[RoutingState] LRU eviction: removed oldest session ${oldest[0]} (age: ${Math.round((Date.now() - oldest[1].timestamp) / 1000)}s)`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
41
58
|
this.state.set(sessionId, decision);
|
|
42
59
|
logger.debug(`[RoutingState] Set routing for session ${sessionId} → ${decision.agentName}`);
|
|
43
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing-state.js","sourceRoot":"","sources":["../../src/daemon/routing-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AASjD,oDAAoD;AACpD,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,mBAAmB;IACN,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"routing-state.js","sourceRoot":"","sources":["../../src/daemon/routing-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SecurityGates — security enforcement layer
|
|
3
|
+
*
|
|
4
|
+
* Inspired by Ruflo's EnforcementGates design, this module provides
|
|
5
|
+
* hard security checks that run before governance rules.
|
|
6
|
+
*
|
|
7
|
+
* Design principles:
|
|
8
|
+
* - Security checks are independent of governance rules
|
|
9
|
+
* - Checks are configurable but enabled by default
|
|
10
|
+
* - Returns block/warn decisions with clear reasons
|
|
11
|
+
* - No tool whitelisting (maintains flexibility)
|
|
12
|
+
*/
|
|
13
|
+
import type { ForgeEvent } from '../core/types.js';
|
|
14
|
+
import type { SecurityConfig } from '../core/types.js';
|
|
15
|
+
export interface SecurityCheckResult {
|
|
16
|
+
allow: boolean;
|
|
17
|
+
level: 'block' | 'warn';
|
|
18
|
+
reason: string;
|
|
19
|
+
checkName: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class SecurityGates {
|
|
22
|
+
private config;
|
|
23
|
+
constructor(config: SecurityConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Evaluate all enabled security checks
|
|
26
|
+
* Returns the highest severity violation found
|
|
27
|
+
*/
|
|
28
|
+
evaluate(event: ForgeEvent): SecurityCheckResult | null;
|
|
29
|
+
/**
|
|
30
|
+
* Check for destructive operations
|
|
31
|
+
*/
|
|
32
|
+
private checkDestructiveOperations;
|
|
33
|
+
/**
|
|
34
|
+
* Check for secrets exposure in file operations
|
|
35
|
+
*/
|
|
36
|
+
private checkSecretsExposure;
|
|
37
|
+
/**
|
|
38
|
+
* Check for large diff sizes
|
|
39
|
+
*/
|
|
40
|
+
private checkDiffSize;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=security-gates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-gates.d.ts","sourceRoot":"","sources":["../../src/engine/security-gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,mBAAmB,GAAG,IAAI;IA6BvD;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA8DlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyD5B;;OAEG;IACH,OAAO,CAAC,aAAa;CA+CtB"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SecurityGates — security enforcement layer
|
|
3
|
+
*
|
|
4
|
+
* Inspired by Ruflo's EnforcementGates design, this module provides
|
|
5
|
+
* hard security checks that run before governance rules.
|
|
6
|
+
*
|
|
7
|
+
* Design principles:
|
|
8
|
+
* - Security checks are independent of governance rules
|
|
9
|
+
* - Checks are configurable but enabled by default
|
|
10
|
+
* - Returns block/warn decisions with clear reasons
|
|
11
|
+
* - No tool whitelisting (maintains flexibility)
|
|
12
|
+
*/
|
|
13
|
+
import { logger } from '../core/utils/logger.js';
|
|
14
|
+
export class SecurityGates {
|
|
15
|
+
config;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Evaluate all enabled security checks
|
|
21
|
+
* Returns the highest severity violation found
|
|
22
|
+
*/
|
|
23
|
+
evaluate(event) {
|
|
24
|
+
const checks = [];
|
|
25
|
+
// Run enabled checks
|
|
26
|
+
if (this.config.destructiveOps) {
|
|
27
|
+
const result = this.checkDestructiveOperations(event);
|
|
28
|
+
if (result)
|
|
29
|
+
checks.push(result);
|
|
30
|
+
}
|
|
31
|
+
if (this.config.secretsCheck) {
|
|
32
|
+
const result = this.checkSecretsExposure(event);
|
|
33
|
+
if (result)
|
|
34
|
+
checks.push(result);
|
|
35
|
+
}
|
|
36
|
+
if (this.config.diffSizeCheck) {
|
|
37
|
+
const result = this.checkDiffSize(event);
|
|
38
|
+
if (result)
|
|
39
|
+
checks.push(result);
|
|
40
|
+
}
|
|
41
|
+
// Return highest severity (block > warn)
|
|
42
|
+
const blocked = checks.find((c) => c.level === 'block');
|
|
43
|
+
if (blocked)
|
|
44
|
+
return blocked;
|
|
45
|
+
const warned = checks.find((c) => c.level === 'warn');
|
|
46
|
+
if (warned)
|
|
47
|
+
return warned;
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check for destructive operations
|
|
52
|
+
*/
|
|
53
|
+
checkDestructiveOperations(event) {
|
|
54
|
+
const toolName = event.tool_name;
|
|
55
|
+
const toolInput = event.tool_input;
|
|
56
|
+
if (!toolName || !toolInput)
|
|
57
|
+
return null;
|
|
58
|
+
// Check Bash commands for destructive patterns
|
|
59
|
+
if (toolName === 'Bash') {
|
|
60
|
+
const command = toolInput.command;
|
|
61
|
+
if (!command)
|
|
62
|
+
return null;
|
|
63
|
+
const destructivePatterns = [
|
|
64
|
+
{ pattern: /rm\s+-rf\s+\/(?!\w)/, reason: 'Attempting to delete root filesystem' },
|
|
65
|
+
{ pattern: /rm\s+-rf\s+~\/\*/, reason: 'Attempting to delete home directory' },
|
|
66
|
+
{ pattern: /:\(\)\{.*:\|:.*\}/, reason: 'Fork bomb detected' },
|
|
67
|
+
{ pattern: /dd\s+if=\/dev\/zero\s+of=\/dev\/sd/, reason: 'Attempting to wipe disk' },
|
|
68
|
+
{ pattern: /mkfs\./, reason: 'Attempting to format filesystem' },
|
|
69
|
+
{ pattern: /git\s+reset\s+--hard\s+HEAD~\d{2,}/, reason: 'Attempting to reset many commits' },
|
|
70
|
+
{ pattern: /git\s+push\s+.*--force.*\s+(main|master)/, reason: 'Force push to main/master branch' },
|
|
71
|
+
{ pattern: /git\s+clean\s+-[dfx]+/, reason: 'Git clean can permanently delete untracked files' },
|
|
72
|
+
];
|
|
73
|
+
for (const { pattern, reason } of destructivePatterns) {
|
|
74
|
+
if (pattern.test(command)) {
|
|
75
|
+
logger.warn(`[SecurityGates] Blocked destructive operation: ${reason}`);
|
|
76
|
+
return {
|
|
77
|
+
allow: false,
|
|
78
|
+
level: 'block',
|
|
79
|
+
reason: `🛡️ Security: ${reason}. This operation is blocked for safety.`,
|
|
80
|
+
checkName: 'destructive-ops',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Check for DROP TABLE / TRUNCATE in SQL-like operations
|
|
86
|
+
if (toolName === 'Bash') {
|
|
87
|
+
const command = toolInput.command;
|
|
88
|
+
if (command) {
|
|
89
|
+
const sqlPatterns = [
|
|
90
|
+
{ pattern: /DROP\s+TABLE/i, reason: 'Attempting to drop database table' },
|
|
91
|
+
{ pattern: /TRUNCATE\s+TABLE/i, reason: 'Attempting to truncate database table' },
|
|
92
|
+
{ pattern: /DROP\s+DATABASE/i, reason: 'Attempting to drop entire database' },
|
|
93
|
+
];
|
|
94
|
+
for (const { pattern, reason } of sqlPatterns) {
|
|
95
|
+
if (pattern.test(command)) {
|
|
96
|
+
logger.warn(`[SecurityGates] Detected SQL operation: ${reason}`);
|
|
97
|
+
return {
|
|
98
|
+
allow: false,
|
|
99
|
+
level: 'warn',
|
|
100
|
+
reason: `⚠️ Security: ${reason}. Please confirm this is intentional.`,
|
|
101
|
+
checkName: 'destructive-ops',
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check for secrets exposure in file operations
|
|
111
|
+
*/
|
|
112
|
+
checkSecretsExposure(event) {
|
|
113
|
+
const toolName = event.tool_name;
|
|
114
|
+
const toolInput = event.tool_input;
|
|
115
|
+
if (!toolName || !toolInput)
|
|
116
|
+
return null;
|
|
117
|
+
// Check file paths for sensitive files
|
|
118
|
+
const sensitivePatterns = [
|
|
119
|
+
{ pattern: /\.env(\s|$|\.local|\.production)/, name: '.env file' },
|
|
120
|
+
{ pattern: /credentials\.json/, name: 'credentials.json' },
|
|
121
|
+
{ pattern: /\.aws\/credentials/, name: 'AWS credentials' },
|
|
122
|
+
{ pattern: /\.ssh\/id_rsa/, name: 'SSH private key' },
|
|
123
|
+
{ pattern: /\.ssh\/id_ed25519/, name: 'SSH private key' },
|
|
124
|
+
{ pattern: /\.npmrc/, name: '.npmrc (may contain tokens)' },
|
|
125
|
+
{ pattern: /\.pypirc/, name: '.pypirc (may contain tokens)' },
|
|
126
|
+
{ pattern: /config\/secrets\./, name: 'secrets config file' },
|
|
127
|
+
];
|
|
128
|
+
// Check Write/Edit operations
|
|
129
|
+
if (toolName === 'Write' || toolName === 'Edit') {
|
|
130
|
+
const filePath = toolInput.file_path;
|
|
131
|
+
if (filePath) {
|
|
132
|
+
for (const { pattern, name } of sensitivePatterns) {
|
|
133
|
+
if (pattern.test(filePath)) {
|
|
134
|
+
logger.warn(`[SecurityGates] Sensitive file operation: ${name}`);
|
|
135
|
+
return {
|
|
136
|
+
allow: false,
|
|
137
|
+
level: 'warn',
|
|
138
|
+
reason: `⚠️ Security: Attempting to modify ${name}. Ensure no secrets are exposed.`,
|
|
139
|
+
checkName: 'secrets-check',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Check Bash commands for git operations on sensitive files
|
|
146
|
+
if (toolName === 'Bash') {
|
|
147
|
+
const command = toolInput.command;
|
|
148
|
+
if (command && /git\s+(add|commit)/.test(command)) {
|
|
149
|
+
for (const { pattern, name } of sensitivePatterns) {
|
|
150
|
+
if (pattern.test(command)) {
|
|
151
|
+
logger.warn(`[SecurityGates] Attempting to commit sensitive file: ${name}`);
|
|
152
|
+
return {
|
|
153
|
+
allow: false,
|
|
154
|
+
level: 'block',
|
|
155
|
+
reason: `🛡️ Security: Attempting to commit ${name}. This is blocked to prevent secret leakage.`,
|
|
156
|
+
checkName: 'secrets-check',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Check for large diff sizes
|
|
166
|
+
*/
|
|
167
|
+
checkDiffSize(event) {
|
|
168
|
+
const toolName = event.tool_name;
|
|
169
|
+
const toolInput = event.tool_input;
|
|
170
|
+
if (!toolName || !toolInput)
|
|
171
|
+
return null;
|
|
172
|
+
// Check Edit operations for large changes
|
|
173
|
+
if (toolName === 'Edit') {
|
|
174
|
+
const oldString = toolInput.old_string;
|
|
175
|
+
const newString = toolInput.new_string;
|
|
176
|
+
if (oldString && newString) {
|
|
177
|
+
const oldLines = oldString.split('\n').length;
|
|
178
|
+
const newLines = newString.split('\n').length;
|
|
179
|
+
const diffSize = Math.abs(newLines - oldLines);
|
|
180
|
+
if (diffSize > this.config.diffSizeThreshold) {
|
|
181
|
+
logger.info(`[SecurityGates] Large diff detected: ${diffSize} lines`);
|
|
182
|
+
return {
|
|
183
|
+
allow: false,
|
|
184
|
+
level: 'warn',
|
|
185
|
+
reason: `⚠️ Large change detected: ${diffSize} lines modified. Please review carefully before proceeding.`,
|
|
186
|
+
checkName: 'diff-size-check',
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Check Write operations for large files
|
|
192
|
+
if (toolName === 'Write') {
|
|
193
|
+
const content = toolInput.content;
|
|
194
|
+
if (content) {
|
|
195
|
+
const lines = content.split('\n').length;
|
|
196
|
+
if (lines > this.config.diffSizeThreshold) {
|
|
197
|
+
logger.info(`[SecurityGates] Large file write detected: ${lines} lines`);
|
|
198
|
+
return {
|
|
199
|
+
allow: false,
|
|
200
|
+
level: 'warn',
|
|
201
|
+
reason: `⚠️ Large file creation: ${lines} lines. Please review carefully before proceeding.`,
|
|
202
|
+
checkName: 'diff-size-check',
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=security-gates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-gates.js","sourceRoot":"","sources":["../../src/engine/security-gates.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,9 +39,11 @@ export interface SkillInvokeContext {
|
|
|
39
39
|
* 支持格式:
|
|
40
40
|
* "bmad/analyze" — workflow=bmad, phase=analyze
|
|
41
41
|
* "bmad/design:login-feature" — workflow=bmad, phase=design, feature_slug=login-feature
|
|
42
|
+
* "bmad/analyze:用户认证" — workflow=bmad, phase=analyze, feature_slug=用户认证(支持中文)
|
|
42
43
|
* "其他任意文本 / 中文 / 空" — 所有字段为 null(向后兼容)
|
|
43
44
|
*
|
|
44
45
|
* 大小写归一化:`Bmad/Analyze` → `bmad/analyze`,确保 SQL 聚合稳定。
|
|
46
|
+
* feature_slug 支持 Unicode 字符(中文、日文等),但建议使用英文以提高可读性。
|
|
45
47
|
*/
|
|
46
48
|
export declare function parseWorkflowMeta(reason: string | undefined | null): {
|
|
47
49
|
workflow: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-invoke.d.ts","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;CACzD;AAED
|
|
1
|
+
{"version":3,"file":"skill-invoke.d.ts","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;CACzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG;IACpE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAcA;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAyF5B"}
|
|
@@ -19,16 +19,19 @@ import { logger } from '../../core/utils/logger.js';
|
|
|
19
19
|
* 支持格式:
|
|
20
20
|
* "bmad/analyze" — workflow=bmad, phase=analyze
|
|
21
21
|
* "bmad/design:login-feature" — workflow=bmad, phase=design, feature_slug=login-feature
|
|
22
|
+
* "bmad/analyze:用户认证" — workflow=bmad, phase=analyze, feature_slug=用户认证(支持中文)
|
|
22
23
|
* "其他任意文本 / 中文 / 空" — 所有字段为 null(向后兼容)
|
|
23
24
|
*
|
|
24
25
|
* 大小写归一化:`Bmad/Analyze` → `bmad/analyze`,确保 SQL 聚合稳定。
|
|
26
|
+
* feature_slug 支持 Unicode 字符(中文、日文等),但建议使用英文以提高可读性。
|
|
25
27
|
*/
|
|
26
28
|
export function parseWorkflowMeta(reason) {
|
|
27
29
|
if (!reason)
|
|
28
30
|
return { workflow: null, phase: null, feature_slug: null };
|
|
29
31
|
// 匹配 "<workflow>/<phase>" 或 "<workflow>/<phase>:<feature-slug>"
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
+
// workflow/phase 规则:以字母开头,可含字母 / 数字 / 连字符
|
|
33
|
+
// feature_slug 规则:支持任意非空白、非冒号字符(包括 Unicode)
|
|
34
|
+
const match = reason.match(/^([a-z][a-z0-9-]*)\/([a-z][a-z0-9-]*)(?::([^\s:]+))?\s*$/iu);
|
|
32
35
|
if (!match)
|
|
33
36
|
return { workflow: null, phase: null, feature_slug: null };
|
|
34
37
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-invoke.js","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAyBpD
|
|
1
|
+
{"version":3,"file":"skill-invoke.js","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"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"}
|