@winspan/claude-forge 3.6.11 → 3.6.13

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.
Files changed (43) hide show
  1. package/dist/autopilot/ground-truth-rules.d.ts +4 -4
  2. package/dist/autopilot/ground-truth-rules.d.ts.map +1 -1
  3. package/dist/autopilot/ground-truth-rules.js +12 -44
  4. package/dist/autopilot/ground-truth-rules.js.map +1 -1
  5. package/dist/autopilot/quality-gate.d.ts +2 -1
  6. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  7. package/dist/autopilot/quality-gate.js.map +1 -1
  8. package/dist/daemon/engine-registry.d.ts.map +1 -1
  9. package/dist/daemon/engine-registry.js +1 -0
  10. package/dist/daemon/engine-registry.js.map +1 -1
  11. package/dist/daemon/handler-context.d.ts +3 -0
  12. package/dist/daemon/handler-context.d.ts.map +1 -1
  13. package/dist/daemon/handlers/session-cleanup.d.ts +2 -0
  14. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  15. package/dist/daemon/handlers/session-cleanup.js +28 -0
  16. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  17. package/dist/daemon/handlers/stages/11-intent-analysis.d.ts.map +1 -1
  18. package/dist/daemon/handlers/stages/11-intent-analysis.js +6 -1
  19. package/dist/daemon/handlers/stages/11-intent-analysis.js.map +1 -1
  20. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  21. package/dist/daemon/handlers/stop-handler.js +2 -0
  22. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  23. package/dist/goal/goal-classifier.d.ts.map +1 -1
  24. package/dist/goal/goal-classifier.js +20 -12
  25. package/dist/goal/goal-classifier.js.map +1 -1
  26. package/dist/goal/goal-types.d.ts +35 -2
  27. package/dist/goal/goal-types.d.ts.map +1 -1
  28. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  29. package/dist/pipeline/artifact-generator.js +96 -24
  30. package/dist/pipeline/artifact-generator.js.map +1 -1
  31. package/dist/pipeline/artifact-orchestrator.d.ts +22 -0
  32. package/dist/pipeline/artifact-orchestrator.d.ts.map +1 -0
  33. package/dist/pipeline/artifact-orchestrator.js +110 -0
  34. package/dist/pipeline/artifact-orchestrator.js.map +1 -0
  35. package/dist/pipeline/execution-plan.d.ts +2 -2
  36. package/dist/pipeline/execution-plan.d.ts.map +1 -1
  37. package/dist/pipeline/types.d.ts +3 -2
  38. package/dist/pipeline/types.d.ts.map +1 -1
  39. package/dist/pipeline/types.js.map +1 -1
  40. package/dist/prompts/intent-analysis.md +106 -45
  41. package/dist/web-static/assets/{index-CLNW6rr3.js → index-Vtay6kA9.js} +1 -1
  42. package/dist/web-static/index.html +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,110 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { logger } from '../utils/logger.js';
4
+ /**
5
+ * ArtifactOrchestrator — 产物生成编排器(智能编排 2.0)
6
+ *
7
+ * 核心职责:根据 IntentAnalysis.artifactRequirements 生成文档产物,
8
+ * 完全独立于 Pipeline 生命周期,在 Stop 事件触发。
9
+ */
10
+ export class ArtifactOrchestrator {
11
+ api;
12
+ storage;
13
+ constructor(api, storage) {
14
+ this.api = api;
15
+ this.storage = storage;
16
+ }
17
+ /**
18
+ * 根据意图分析结果生成文档产物(Stop 事件触发)
19
+ */
20
+ async generateArtifacts(projectPath, sessionId, analysis) {
21
+ const req = analysis.artifactRequirements;
22
+ if (!req?.needsDocumentArtifact)
23
+ return;
24
+ if (!req.suggestedArtifacts || req.suggestedArtifacts.length === 0)
25
+ return;
26
+ const docArtifacts = req.suggestedArtifacts.filter(a => a.type === 'document');
27
+ if (docArtifacts.length === 0)
28
+ return;
29
+ logger.info(`[产物编排] 开始生成 ${docArtifacts.length} 个文档产物(strategy=${req.persistenceStrategy})`);
30
+ for (const artifact of docArtifacts) {
31
+ try {
32
+ await this.generateDocumentArtifact(projectPath, sessionId, artifact, analysis);
33
+ }
34
+ catch (err) {
35
+ logger.warn(`[产物编排] 生成 ${artifact.filename} 失败:${err}`);
36
+ }
37
+ }
38
+ }
39
+ async generateDocumentArtifact(projectPath, sessionId, artifact, analysis) {
40
+ // 解析目录(替换 YYYY-MM-DD 占位符)
41
+ const today = new Date().toISOString().slice(0, 10);
42
+ const resolvedDir = artifact.directory.replace(/YYYY-MM-DD/g, today);
43
+ const fullDir = path.join(projectPath, resolvedDir);
44
+ const fullPath = path.join(fullDir, artifact.filename);
45
+ // 幂等:已存在则跳过
46
+ if (fs.existsSync(fullPath)) {
47
+ logger.info(`[产物编排] 已存在,跳过:${resolvedDir}${artifact.filename}`);
48
+ return;
49
+ }
50
+ // 获取会话事件摘要
51
+ const eventSummary = this.buildEventSummary(sessionId, projectPath);
52
+ const prompt = this.buildGenerationPrompt(artifact, analysis, eventSummary, today);
53
+ const content = await this.api.complete(prompt, 'artifact');
54
+ // 确保目录存在
55
+ fs.mkdirSync(fullDir, { recursive: true });
56
+ fs.writeFileSync(fullPath, content, 'utf-8');
57
+ logger.info(`[产物编排] 已生成:${resolvedDir}${artifact.filename}`);
58
+ }
59
+ buildEventSummary(sessionId, projectPath) {
60
+ try {
61
+ const events = this.storage.queryEvents({
62
+ session_id: sessionId,
63
+ project_path: projectPath,
64
+ limit: 100,
65
+ });
66
+ const toolCalls = events
67
+ .filter(e => e.hook_type === 'PostToolUse' && e.tool_name)
68
+ .map(e => e.tool_name)
69
+ .filter(Boolean);
70
+ const userPrompts = events
71
+ .filter(e => e.hook_type === 'UserPromptSubmit' && e.tool_input)
72
+ .map(e => e.tool_input?.user_prompt?.slice(0, 200))
73
+ .filter(Boolean);
74
+ const parts = [];
75
+ if (userPrompts.length > 0) {
76
+ parts.push(`用户需求:${userPrompts.slice(0, 3).join(' / ')}`);
77
+ }
78
+ if (toolCalls.length > 0) {
79
+ const unique = [...new Set(toolCalls)];
80
+ parts.push(`工具调用:${unique.slice(0, 10).join(', ')}`);
81
+ }
82
+ return parts.join('\n') || '(无会话摘要)';
83
+ }
84
+ catch {
85
+ return '(会话摘要获取失败)';
86
+ }
87
+ }
88
+ buildGenerationPrompt(artifact, analysis, eventSummary, today) {
89
+ return `你是一个技术文档生成专家。请根据以下信息生成 ${artifact.filename}。
90
+
91
+ ## 任务信息
92
+ - 任务类型:${analysis.taskType ?? 'unknown'}
93
+ - 用户需求:${analysis.requirement}
94
+ - 生成原因:${artifact.reason}
95
+ - 文档日期:${today}
96
+
97
+ ## 本次会话摘要
98
+ ${eventSummary}
99
+
100
+ ## 要求
101
+ 请生成完整的 Markdown 文档,包含:
102
+ 1. 标题和日期
103
+ 2. 执行摘要(2-3 句话)
104
+ 3. 详细内容(根据任务类型展开)
105
+ 4. 结论和建议
106
+
107
+ 只输出 Markdown 内容,不要其他说明。`;
108
+ }
109
+ }
110
+ //# sourceMappingURL=artifact-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-orchestrator.js","sourceRoot":"","sources":["../../src/pipeline/artifact-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ArtifactConstraint } from '../convention/types.js';
2
- import type { IntentAnalysis } from '../goal/goal-types.js';
2
+ import type { IntentAnalysis, TaskType } from '../goal/goal-types.js';
3
3
  import type { PipelinePhase, PipelineTemplate, PipelineTask, TemplateRouteResult } from './types.js';
4
4
  export type ExecutionPlanSource = 'template' | 'decompose';
5
5
  export interface CompletionPolicy {
@@ -28,7 +28,7 @@ export interface CanonicalExecutionPlan {
28
28
  projectPath: string;
29
29
  sessionId: string;
30
30
  complexity: 'simple' | 'moderate' | 'complex';
31
- taskType: 'bugfix' | 'feature' | 'refactor' | 'performance' | 'documentation' | 'other';
31
+ taskType: TaskType;
32
32
  techStack?: string;
33
33
  reasoning?: string;
34
34
  templateId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-plan.d.ts","sourceRoot":"","sources":["../../src/pipeline/execution-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-plan.d.ts","sourceRoot":"","sources":["../../src/pipeline/execution-plan.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PipelinePhase as CorePipelinePhase } from '../types/core-types.js';
2
+ import type { TaskType } from '../goal/goal-types.js';
2
3
  export type { PipelinePhase } from '../types/core-types.js';
3
4
  export { PHASE_ORDER, PHASE_LABELS, nextPhase } from '../types/core-types.js';
4
5
  type PipelinePhase = CorePipelinePhase;
@@ -22,7 +23,7 @@ export interface Pipeline {
22
23
  tasks: PipelineTask[];
23
24
  techStack?: string;
24
25
  complexity?: 'simple' | 'moderate' | 'complex';
25
- taskType?: 'bugfix' | 'feature' | 'refactor' | 'performance' | 'documentation' | 'other';
26
+ taskType?: TaskType;
26
27
  plannedPhases?: PipelinePhase[];
27
28
  phaseArtifacts?: Record<string, string[]>;
28
29
  reasoning?: string;
@@ -63,7 +64,7 @@ export interface PipelineTemplate {
63
64
  /** 来源规范名称(如 "BMad 敏捷开发规范"、"Harness 安全重构规范"),供透明度展示 */
64
65
  conventionName?: string;
65
66
  /** 任务类型(影响质量门禁策略) */
66
- taskType?: 'bugfix' | 'feature' | 'refactor' | 'performance' | 'documentation' | 'other';
67
+ taskType?: TaskType;
67
68
  /** 触发条件 */
68
69
  trigger: {
69
70
  /** 自然语言意图描述列表,AI 用于语义匹配 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,4 +1,4 @@
1
- 你是一个 SDLC 意图分析引擎。请根据用户需求和项目实际情况,判断这个任务的复杂度和是否需要 Pipeline 编排。
1
+ 你是一个 SDLC 意图分析专家。请深度理解用户需求,从多个维度评估任务特征,动态决定编排策略和产物需求。
2
2
 
3
3
  ## 用户输入
4
4
  {{userPrompt}}
@@ -9,66 +9,127 @@
9
9
  {{projectStructureSection}}
10
10
  {{contextInfoSection}}
11
11
 
12
+ ---
13
+
14
+ ## 分析维度(多维度评估,不依赖单一文件数量)
15
+
16
+ ### 1. 任务类型识别
17
+ - **feature**:新功能开发(需要设计+实现+测试)
18
+ - **bugfix**:Bug 修复(定位+修复+验证)
19
+ - **refactor**:代码重构(不改变行为,改善结构)
20
+ - **optimize**:性能/安全/质量优化
21
+ - **review**:代码/架构/系统评审(输出分析报告)
22
+ - **audit**:安全/合规/质量审计(输出审计报告)
23
+ - **config**:配置管理(环境/依赖/参数调整)
24
+ - **deploy**:部署/CI/基础设施
25
+ - **doc**:文档编写/更新
26
+ - **test**:测试补充/覆盖率提升
27
+ - **other**:其他
28
+
29
+ ### 2. 改动复杂度评估(多因子)
30
+ - **文件数量**:1-2 / 3-5 / 6-10 / 10+
31
+ - **模块耦合度**:single(单模块)/ cross-module(跨模块)/ cross-system(跨系统)
32
+ - **业务影响面**:local(局部)/ module(模块级)/ system(系统级)
33
+ - **技术风险**:low(配置/文档)/ medium(逻辑改动)/ high(架构/数据迁移)
34
+ - **回滚难度**:easy(可逆)/ medium(需备份)/ hard(不可逆)
35
+
36
+ ### 3. 产物需求判断
37
+ - **分析/评审/报告类任务**(review/audit)→ needsDocumentArtifact=true,persistenceStrategy=docs-directory
38
+ - **代码改动类任务**(feature/bugfix/refactor)→ needsDocumentArtifact=false,persistenceStrategy=git-commit
39
+ - **文档类任务**(doc)→ needsDocumentArtifact=true,persistenceStrategy=docs-directory
40
+ - **混合类任务**(如"重构并写设计文档")→ persistenceStrategy=both
41
+
42
+ 产物目录规范:
43
+ - 评审报告 → `docs/YYYY-MM-DD/评审报告/`
44
+ - 架构设计 → `docs/YYYY-MM-DD/架构设计/`
45
+ - 测试报告 → `docs/YYYY-MM-DD/测试验证/`
46
+ - 复盘报告 → `docs/YYYY-MM-DD/复盘/`
47
+
48
+ ### 4. Pipeline 编排决策
49
+ **需要 Pipeline(requiresPipeline=true)的条件:**
50
+ - 需求模糊,需要先 analyze 阶段梳理
51
+ - 涉及多模块架构级改动,需要 design 阶段规划
52
+ - 改动量大(10+ 文件)且需要任务拆分
53
+ - 新功能开发需要完整质量管控流程
54
+
55
+ **不需要 Pipeline(requiresPipeline=false)的条件:**
56
+ - 一次性分析/评审任务(review/audit)→ 直接生成报告
57
+ - 问题定位明确的 bugfix/optimize → 直接修复
58
+ - 配置/文档类任务 → 直接执行
59
+ - 执行已有规划 → 跳过分析阶段
60
+
61
+ ---
62
+
12
63
  ## 判断逻辑(按优先级)
13
64
 
14
- 0. **是否是执行已有规划的指令?**(优先级最高)
15
- - 如果用户说"按照规划进行"、"根据方案实施"、"执行计划"、"按照你的设计"
16
- - 且 {{planSection}} 显示存在活跃计划(有进行中或待处理任务)
17
- - → moderate,requiresPipeline=false,suggestedPhases=["code","test"],skipPhases=["analyze","design"]
18
- - reasoning 中明确说明:检测到执行已有规划的意图,跳过前期分析阶段
19
-
20
- 1. **这个需求是否涉及代码改动?**
21
- - 不涉及(纯对话、提问、查看、运行命令)→ simple
22
- - 涉及 继续判断
23
-
24
- 2. **改动范围有多大?**(结合项目结构推断)
25
- - 1-2 个文件,逻辑清晰 → simple,不需要编排
26
- - 3-5 个文件,改动模式明确,问题定位清晰 → moderate,不需要编排
27
- - 改动 6+ 个文件,或需求模糊需要先拆分 → complex,需要编排
28
-
29
- 3. **是否需要 Pipeline 编排?**(仅在以下情况启用)
30
- - 需求非常模糊,需要先 analyze 阶段梳理
31
- - 涉及多个模块的架构级改动,需要 design 阶段规划
32
- - 改动量大(10+ 文件)且需要任务拆分
33
- - 新功能开发需要完整的质量管控流程
34
-
35
- ## 重要原则
36
- - **优化/修复类任务**:即使涉及多个文件,只要问题定位明确、改动模式清晰,应判定为 moderate,不启动 Pipeline
37
- - **Bug 修复**:除非涉及架构级重构,否则都是 simple 或 moderate
38
- - **配置调整**:即使涉及多个配置文件,也是 moderate
39
- - **代码审查/优化**:如果是针对现有代码的优化,不是新功能开发,应判定为 moderate
65
+ 0. **执行已有规划?**(最高优先级)
66
+ - 用户说"按照规划"、"根据方案"、"执行计划"等
67
+ - 且 planSection 显示存在活跃计划
68
+ - → moderate,requiresPipeline=false,skipPhases=["analyze","design"]
69
+
70
+ 1. **分析/评审/报告类任务?**
71
+ - taskType=review 或 audit
72
+ - moderate,requiresPipeline=false,needsDocumentArtifact=true
73
+ - 直接生成报告,不需要 Pipeline 编排
74
+
75
+ 2. **改动范围评估**
76
+ - 1-2 文件 + 低风险 → simple,requiresPipeline=false
77
+ - 3-5 文件 + 中等风险 → moderate,requiresPipeline=false
78
+ - 6+ 文件 或 高风险 或 跨系统 → complex,requiresPipeline=true
79
+
80
+ ---
40
81
 
41
82
  ## 输出格式(严格 JSON)
42
83
  {
84
+ "taskType": "feature|bugfix|refactor|optimize|review|audit|config|deploy|doc|test|other",
43
85
  "complexity": "simple|moderate|complex",
44
86
  "requiresPipeline": true/false,
87
+ "pipelineReason": "为什么需要或不需要 Pipeline(必填)",
45
88
  "requirement": "提炼后的一句话需求",
46
- "reasoning": "判断理由:为什么是这个复杂度,预估改动哪些文件/模块,为什么需要或不需要编排",
89
+ "reasoning": "综合判断理由(包含任务类型、改动范围、产物需求的分析)",
47
90
  "estimatedFiles": 预估改动文件数(数字),
91
+
92
+ "changeScope": {
93
+ "estimatedFiles": 数字,
94
+ "moduleCoupling": "single|cross-module|cross-system",
95
+ "businessImpact": "local|module|system",
96
+ "technicalRisk": "low|medium|high",
97
+ "rollbackDifficulty": "easy|medium|hard"
98
+ },
99
+
100
+ "artifactRequirements": {
101
+ "needsDocumentArtifact": true/false,
102
+ "artifactTypes": ["code", "document", "config", "data"],
103
+ "persistenceStrategy": "git-commit|docs-directory|both",
104
+ "suggestedArtifacts": [
105
+ {
106
+ "type": "document",
107
+ "filename": "review-report.md",
108
+ "directory": "docs/YYYY-MM-DD/评审报告/",
109
+ "reason": "评审任务需要生成报告文档"
110
+ }
111
+ ]
112
+ },
113
+
114
+ "orchestrationStrategy": {
115
+ "suggestedPhases": ["analyze", "design", "code", "test", "review"],
116
+ "skipPhases": [],
117
+ "phaseReasoning": "为什么建议这些阶段",
118
+ "qualityGates": ["code-review", "test-coverage"]
119
+ },
120
+
48
121
  "suggestedPhases": ["analyze", "design", "code", "test", "review"],
49
122
  "skipPhases": [],
50
123
  "clarifyQuestions": ["需要向用户确认的问题(当需求不明确时)"],
51
124
  "searchKeywords": ["相关最佳实践关键词"],
52
- "confidence": 0.0-1.0 置信度(必填)
125
+ "confidence": 0.0-1.0
53
126
  }
54
127
 
55
128
  注意:
56
129
  - simple 时 suggestedPhases 为空数组,requiresPipeline 为 false
57
- - moderate 时 requiresPipeline false,suggestedPhases 可包含 code/test
130
+ - moderate 时 requiresPipeline 通常为 false(除非需求模糊)
58
131
  - complex 时 requiresPipeline 为 true,suggestedPhases 包含完整流程
59
- - skipPhases 触发条件:
60
- * 用户明确表达"按照规划"、"根据方案"、"执行计划"等执行意图
61
- * 且存在活跃计划(planSection 显示有进行中或待处理任务)
62
- * 此时设置 skipPhases=["analyze","design"],直接进入实施阶段
63
- * 不满足以上条件时,skipPhases 为空数组 []
64
- - clarifyQuestions 触发条件(满足任一即必须填写):
65
- * 需求中有歧义词("优化"、"改进"、"处理"、"搞一下"等,没有明确目标)
66
- * 涉及多个可能的实现方案,需要用户选择
67
- * 缺少关键信息(如目标文件、功能范围、技术选型)
68
- * 不满足以上条件时,clarifyQuestions 为空数组 []
69
- - confidence 置信度评估标准:
70
- * 0.8-1.0: 需求明确,改动范围清晰,有充分上下文支持
71
- * 0.6-0.8: 需求基本明确,但缺少部分细节或上下文
72
- * 0.4-0.6: 需求模糊,存在多种理解可能,建议主动澄清
73
- * 0.0-0.4: 需求严重不明确,必须澄清后才能继续
132
+ - review/audit 类任务:requiresPipeline=false,needsDocumentArtifact=true
133
+ - suggestedArtifacts 中的 directory 使用实际日期替换 YYYY-MM-DD
134
+ - confidence 评估:0.8-1.0 需求明确 / 0.6-0.8 基本明确 / 0.4-0.6 模糊需澄清 / 0.0-0.4 严重不明确
74
135
  - 只输出 JSON,不要其他内容