@haoyiyin/workflow 0.2.11 → 0.3.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/src/agents/contracts/implementer.d.ts +29 -0
- package/dist/src/agents/contracts/implementer.d.ts.map +1 -0
- package/dist/src/agents/contracts/implementer.js +94 -0
- package/dist/src/agents/contracts/implementer.js.map +1 -0
- package/dist/src/agents/contracts/index.d.ts +11 -0
- package/dist/src/agents/contracts/index.d.ts.map +1 -0
- package/dist/src/agents/contracts/index.js +11 -0
- package/dist/src/agents/contracts/index.js.map +1 -0
- package/dist/src/agents/contracts/planner.d.ts +25 -0
- package/dist/src/agents/contracts/planner.d.ts.map +1 -0
- package/dist/src/agents/contracts/planner.js +107 -0
- package/dist/src/agents/contracts/planner.js.map +1 -0
- package/dist/src/agents/contracts/router.d.ts +24 -0
- package/dist/src/agents/contracts/router.d.ts.map +1 -0
- package/dist/src/agents/contracts/router.js +137 -0
- package/dist/src/agents/contracts/router.js.map +1 -0
- package/dist/src/agents/contracts/verifier.d.ts +27 -0
- package/dist/src/agents/contracts/verifier.d.ts.map +1 -0
- package/dist/src/agents/contracts/verifier.js +115 -0
- package/dist/src/agents/contracts/verifier.js.map +1 -0
- package/dist/src/agents/dispatcher.d.ts +94 -51
- package/dist/src/agents/dispatcher.d.ts.map +1 -1
- package/dist/src/agents/dispatcher.js +207 -164
- package/dist/src/agents/dispatcher.js.map +1 -1
- package/dist/src/persistence/index.d.ts +4 -2
- package/dist/src/persistence/index.d.ts.map +1 -1
- package/dist/src/persistence/index.js +4 -1
- package/dist/src/persistence/index.js.map +1 -1
- package/dist/src/persistence/plan-md.d.ts +3 -2
- package/dist/src/persistence/plan-md.d.ts.map +1 -1
- package/dist/src/persistence/plan-md.js +47 -15
- package/dist/src/persistence/plan-md.js.map +1 -1
- package/dist/src/persistence/state-md.d.ts +2 -0
- package/dist/src/persistence/state-md.d.ts.map +1 -1
- package/dist/src/persistence/state-md.js +40 -22
- package/dist/src/persistence/state-md.js.map +1 -1
- package/dist/src/persistence/types.d.ts +35 -39
- package/dist/src/persistence/types.d.ts.map +1 -1
- package/dist/src/router/namespace/core/intent-router.d.ts +24 -0
- package/dist/src/router/namespace/core/intent-router.d.ts.map +1 -0
- package/dist/src/router/namespace/core/intent-router.js +190 -0
- package/dist/src/router/namespace/core/intent-router.js.map +1 -0
- package/dist/src/router/namespace/core/lifecycle-router.d.ts +28 -0
- package/dist/src/router/namespace/core/lifecycle-router.d.ts.map +1 -0
- package/dist/src/router/namespace/core/lifecycle-router.js +132 -0
- package/dist/src/router/namespace/core/lifecycle-router.js.map +1 -0
- package/dist/src/router/namespace/core/state-router.d.ts +32 -0
- package/dist/src/router/namespace/core/state-router.d.ts.map +1 -0
- package/dist/src/router/namespace/core/state-router.js +157 -0
- package/dist/src/router/namespace/core/state-router.js.map +1 -0
- package/dist/src/router/namespace/domain/code-router.d.ts +26 -0
- package/dist/src/router/namespace/domain/code-router.d.ts.map +1 -0
- package/dist/src/router/namespace/domain/code-router.js +171 -0
- package/dist/src/router/namespace/domain/code-router.js.map +1 -0
- package/dist/src/router/namespace/domain/debug-router.d.ts +25 -0
- package/dist/src/router/namespace/domain/debug-router.d.ts.map +1 -0
- package/dist/src/router/namespace/domain/debug-router.js +139 -0
- package/dist/src/router/namespace/domain/debug-router.js.map +1 -0
- package/dist/src/router/namespace/domain/plan-router.d.ts +29 -0
- package/dist/src/router/namespace/domain/plan-router.d.ts.map +1 -0
- package/dist/src/router/namespace/domain/plan-router.js +160 -0
- package/dist/src/router/namespace/domain/plan-router.js.map +1 -0
- package/dist/src/router/namespace/domain/review-router.d.ts +24 -0
- package/dist/src/router/namespace/domain/review-router.d.ts.map +1 -0
- package/dist/src/router/namespace/domain/review-router.js +116 -0
- package/dist/src/router/namespace/domain/review-router.js.map +1 -0
- package/dist/src/router/namespace/index.d.ts +19 -0
- package/dist/src/router/namespace/index.d.ts.map +1 -0
- package/dist/src/router/namespace/index.js +22 -0
- package/dist/src/router/namespace/index.js.map +1 -0
- package/dist/src/router/namespace/registry.d.ts +67 -0
- package/dist/src/router/namespace/registry.d.ts.map +1 -0
- package/dist/src/router/namespace/registry.js +197 -0
- package/dist/src/router/namespace/registry.js.map +1 -0
- package/dist/src/router/namespace/types.d.ts +124 -0
- package/dist/src/router/namespace/types.d.ts.map +1 -0
- package/dist/src/router/namespace/types.js +20 -0
- package/dist/src/router/namespace/types.js.map +1 -0
- package/dist/src/router/namespace/utility/fallback-router.d.ts +28 -0
- package/dist/src/router/namespace/utility/fallback-router.d.ts.map +1 -0
- package/dist/src/router/namespace/utility/fallback-router.js +88 -0
- package/dist/src/router/namespace/utility/fallback-router.js.map +1 -0
- package/dist/src/router/namespace/utility/quick-task-router.d.ts +28 -0
- package/dist/src/router/namespace/utility/quick-task-router.d.ts.map +1 -0
- package/dist/src/router/namespace/utility/quick-task-router.js +99 -0
- package/dist/src/router/namespace/utility/quick-task-router.js.map +1 -0
- package/dist/src/router/namespace/utility/research-router.d.ts +24 -0
- package/dist/src/router/namespace/utility/research-router.d.ts.map +1 -0
- package/dist/src/router/namespace/utility/research-router.js +84 -0
- package/dist/src/router/namespace/utility/research-router.js.map +1 -0
- package/dist/src/skills/agents-md/index.js +2 -2
- package/dist/src/skills/agents-md/index.js.map +1 -1
- package/dist/src/skills/execute-plan/index.d.ts +45 -65
- package/dist/src/skills/execute-plan/index.d.ts.map +1 -1
- package/dist/src/skills/execute-plan/index.js +325 -551
- package/dist/src/skills/execute-plan/index.js.map +1 -1
- package/dist/src/skills/index.d.ts +1 -0
- package/dist/src/skills/index.d.ts.map +1 -1
- package/dist/src/skills/index.js +1 -0
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/skills/quick-task/index.d.ts +4 -4
- package/dist/src/skills/quick-task/index.js +1 -1
- package/dist/src/skills/quick-task/index.js.map +1 -1
- package/dist/src/skills/review-diff/index.d.ts +6 -6
- package/dist/src/skills/review-diff/index.js +1 -1
- package/dist/src/skills/review-diff/index.js.map +1 -1
- package/dist/src/skills/router/index.d.ts +101 -0
- package/dist/src/skills/router/index.d.ts.map +1 -0
- package/dist/src/skills/router/index.js +450 -0
- package/dist/src/skills/router/index.js.map +1 -0
- package/dist/src/skills/router/types.d.ts +79 -0
- package/dist/src/skills/router/types.d.ts.map +1 -0
- package/dist/src/skills/router/types.js +8 -0
- package/dist/src/skills/router/types.js.map +1 -0
- package/dist/src/skills/systematic-debugging/index.js +1 -1
- package/dist/src/skills/systematic-debugging/index.js.map +1 -1
- package/dist/src/skills/tdd/index.d.ts +14 -14
- package/dist/src/skills/tdd/index.js +1 -1
- package/dist/src/skills/tdd/index.js.map +1 -1
- package/dist/src/skills/to-plan/index-enhanced.d.ts +4 -4
- package/dist/src/skills/to-plan/index-enhanced.d.ts.map +1 -1
- package/dist/src/skills/to-plan/index-enhanced.js +3 -5
- package/dist/src/skills/to-plan/index-enhanced.js.map +1 -1
- package/dist/src/skills/to-plan/index.d.ts +24 -91
- package/dist/src/skills/to-plan/index.d.ts.map +1 -1
- package/dist/src/skills/to-plan/index.js +214 -409
- package/dist/src/skills/to-plan/index.js.map +1 -1
- package/package.json +3 -5
- package/src/agents/contracts/implementer.ts +122 -0
- package/src/agents/contracts/index.ts +27 -0
- package/src/agents/contracts/planner.ts +129 -0
- package/src/agents/contracts/router.ts +168 -0
- package/src/agents/contracts/verifier.ts +137 -0
- package/src/agents/dispatcher.ts +387 -362
- package/src/persistence/index.ts +10 -4
- package/src/persistence/plan-md.ts +52 -18
- package/src/persistence/state-md.ts +45 -23
- package/src/persistence/types.ts +37 -40
- package/src/router/namespace/README.md +127 -0
- package/src/router/namespace/core/intent-router.ts +221 -0
- package/src/router/namespace/core/lifecycle-router.ts +156 -0
- package/src/router/namespace/core/state-router.ts +192 -0
- package/src/router/namespace/domain/code-router.ts +202 -0
- package/src/router/namespace/domain/debug-router.ts +167 -0
- package/src/router/namespace/domain/plan-router.ts +196 -0
- package/src/router/namespace/domain/review-router.ts +142 -0
- package/src/router/namespace/index.ts +84 -0
- package/src/router/namespace/registry.ts +242 -0
- package/src/router/namespace/types.ts +182 -0
- package/src/router/namespace/utility/fallback-router.ts +107 -0
- package/src/router/namespace/utility/quick-task-router.ts +121 -0
- package/src/router/namespace/utility/research-router.ts +105 -0
- package/src/skills/agents-md/index.ts +2 -2
- package/src/skills/execute-plan/index.ts +419 -673
- package/src/skills/index.ts +1 -0
- package/src/skills/quick-task/index.ts +1 -1
- package/src/skills/review-diff/index.ts +1 -1
- package/src/skills/router/SKILL.md +181 -0
- package/src/skills/router/index.ts +577 -0
- package/src/skills/router/types.ts +90 -0
- package/src/skills/systematic-debugging/index.ts +1 -1
- package/src/skills/tdd/index.ts +1 -1
- package/src/skills/to-plan/index-enhanced.ts +3 -5
- package/src/skills/to-plan/index.ts +231 -502
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quick Task Router - Utility Layer
|
|
3
|
+
*
|
|
4
|
+
* 处理简单、快速的路由决策
|
|
5
|
+
* 低复杂度任务直接路由,无需复杂决策
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type {
|
|
9
|
+
NamespaceRouter,
|
|
10
|
+
RoutingContext,
|
|
11
|
+
RouteDecision,
|
|
12
|
+
NamespaceHealth,
|
|
13
|
+
AlternativeRoute,
|
|
14
|
+
} from '../types.js'
|
|
15
|
+
|
|
16
|
+
export class QuickTaskRouter implements NamespaceRouter {
|
|
17
|
+
readonly name = 'quick-task'
|
|
18
|
+
readonly layer = 'utility' as const
|
|
19
|
+
readonly priority = 50 // 较低优先级,作为 fallback
|
|
20
|
+
readonly patterns = [
|
|
21
|
+
/fix|修复/i,
|
|
22
|
+
/typo|拼写/i,
|
|
23
|
+
/rename|重命名/i,
|
|
24
|
+
/update|更新.*(text|comment|doc)/i,
|
|
25
|
+
/small|小/i,
|
|
26
|
+
/tiny|微小/i,
|
|
27
|
+
/quick|快速/i,
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
private routeCount = 0
|
|
31
|
+
private successCount = 0
|
|
32
|
+
private totalLatency = 0
|
|
33
|
+
|
|
34
|
+
async canRoute(context: RoutingContext): Promise<boolean> {
|
|
35
|
+
// 检查是否为简单任务
|
|
36
|
+
const text = context.request.text
|
|
37
|
+
return this.isQuickTask(text)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async route(context: RoutingContext): Promise<RouteDecision> {
|
|
41
|
+
const startTime = Date.now()
|
|
42
|
+
|
|
43
|
+
this.routeCount++
|
|
44
|
+
this.totalLatency += Date.now() - startTime
|
|
45
|
+
this.successCount++
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
skill: 'quick-task',
|
|
49
|
+
confidence: 0.85,
|
|
50
|
+
reasoning: 'Quick task detected: simple change, fast execution',
|
|
51
|
+
namespace: this.name,
|
|
52
|
+
alternatives: [],
|
|
53
|
+
metadata: {
|
|
54
|
+
layer: this.layer,
|
|
55
|
+
processingTime: Date.now() - startTime,
|
|
56
|
+
hops: 1,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 快速判断是否为简单任务
|
|
63
|
+
*/
|
|
64
|
+
private isQuickTask(request: string): boolean {
|
|
65
|
+
// 简单任务特征
|
|
66
|
+
const quickPatterns = [
|
|
67
|
+
/fix.*typo|修复.*拼写/i,
|
|
68
|
+
/rename.*to|重命名为/i,
|
|
69
|
+
/update.*comment|更新.*注释/i,
|
|
70
|
+
/^\s*fix\s+/i, // 以 "fix " 开头
|
|
71
|
+
/^\s*update\s+/i, // 以 "update " 开头
|
|
72
|
+
/^\s*change\s+/i, // 以 "change " 开头
|
|
73
|
+
/^\s*add\s+(a|the)\s+/i, // 添加单个东西
|
|
74
|
+
/^\s*remove\s+/i, // 移除
|
|
75
|
+
/^\s*delete\s+/i, // 删除
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
// 长度检查 - 短请求更可能是简单任务
|
|
79
|
+
if (request.length < 50) {
|
|
80
|
+
return quickPatterns.some((p) => p.test(request))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// 复杂任务特征(排除)
|
|
84
|
+
const complexPatterns = [
|
|
85
|
+
/implement|实现/i,
|
|
86
|
+
/architecture|架构/i,
|
|
87
|
+
/design|设计/i,
|
|
88
|
+
/refactor|重构/i,
|
|
89
|
+
/and|和.*then|然后/i,
|
|
90
|
+
/step|步骤/i,
|
|
91
|
+
/phase|阶段/i,
|
|
92
|
+
]
|
|
93
|
+
|
|
94
|
+
if (complexPatterns.some((p) => p.test(request))) {
|
|
95
|
+
return false
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return quickPatterns.some((p) => p.test(request))
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
getSupportedSkills(): string[] {
|
|
102
|
+
return ['quick-task']
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
getHealth(): NamespaceHealth {
|
|
106
|
+
return {
|
|
107
|
+
name: this.name,
|
|
108
|
+
status: this.successRate() > 0.9 ? 'healthy' : 'degraded',
|
|
109
|
+
totalRoutes: this.routeCount,
|
|
110
|
+
successRate: this.successRate(),
|
|
111
|
+
avgLatency: this.routeCount > 0 ? this.totalLatency / this.routeCount : 0,
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private successRate(): number {
|
|
116
|
+
return this.routeCount > 0 ? this.successCount / this.routeCount : 1.0
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export const quickTaskRouter = new QuickTaskRouter()
|
|
121
|
+
export default quickTaskRouter
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Router - Utility Layer
|
|
3
|
+
*
|
|
4
|
+
* 处理研究和探索相关的路由决策
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
NamespaceRouter,
|
|
9
|
+
RoutingContext,
|
|
10
|
+
RouteDecision,
|
|
11
|
+
NamespaceHealth,
|
|
12
|
+
AlternativeRoute,
|
|
13
|
+
} from '../types.js'
|
|
14
|
+
|
|
15
|
+
export class ResearchRouter implements NamespaceRouter {
|
|
16
|
+
readonly name = 'research'
|
|
17
|
+
readonly layer = 'utility' as const
|
|
18
|
+
readonly priority = 45
|
|
19
|
+
readonly patterns = [
|
|
20
|
+
/research|研究/i,
|
|
21
|
+
/explore|探索/i,
|
|
22
|
+
/learn|学习/i,
|
|
23
|
+
/understand|理解/i,
|
|
24
|
+
/how.*work|如何.*工作/i,
|
|
25
|
+
/what is|什么是/i,
|
|
26
|
+
/compare|比较/i,
|
|
27
|
+
/analyze|分析/i,
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
private routeCount = 0
|
|
31
|
+
private successCount = 0
|
|
32
|
+
private totalLatency = 0
|
|
33
|
+
|
|
34
|
+
async canRoute(context: RoutingContext): Promise<boolean> {
|
|
35
|
+
const text = context.request.text.toLowerCase()
|
|
36
|
+
return /research|研究|explore|探索|learn|学习|understand|理解|how.*work|如何.*工作|what is|什么是|compare|比较|analyze|分析/.test(text)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async route(context: RoutingContext): Promise<RouteDecision> {
|
|
40
|
+
const startTime = Date.now()
|
|
41
|
+
|
|
42
|
+
const decision = this.makeResearchDecision(context.request.text)
|
|
43
|
+
|
|
44
|
+
this.routeCount++
|
|
45
|
+
this.totalLatency += Date.now() - startTime
|
|
46
|
+
this.successCount++
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
...decision,
|
|
50
|
+
namespace: this.name,
|
|
51
|
+
metadata: {
|
|
52
|
+
layer: this.layer,
|
|
53
|
+
processingTime: Date.now() - startTime,
|
|
54
|
+
hops: 1,
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private makeResearchDecision(requestText: string): Omit<RouteDecision, 'namespace' | 'metadata'> {
|
|
60
|
+
// 研究请求通常不涉及代码修改
|
|
61
|
+
// 但如果后面跟着实现需求,应该路由到 to-plan
|
|
62
|
+
|
|
63
|
+
if (/research.*then|研究.*然后|explore.*implement/i.test(requestText)) {
|
|
64
|
+
return {
|
|
65
|
+
skill: 'to-plan',
|
|
66
|
+
confidence: 0.7,
|
|
67
|
+
reasoning: 'Research followed by implementation requires planning',
|
|
68
|
+
alternatives: [
|
|
69
|
+
{ skill: 'quick-task', confidence: 0.3, reasoning: 'Quick research only' },
|
|
70
|
+
],
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// 纯研究请求
|
|
75
|
+
return {
|
|
76
|
+
skill: 'quick-task', // 使用 quick-task 进行探索
|
|
77
|
+
confidence: 0.6,
|
|
78
|
+
reasoning: 'Research/exploration task',
|
|
79
|
+
alternatives: [
|
|
80
|
+
{ skill: 'to-plan', confidence: 0.4, reasoning: 'If research leads to implementation' },
|
|
81
|
+
],
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
getSupportedSkills(): string[] {
|
|
86
|
+
return ['quick-task', 'to-plan', 'research']
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
getHealth(): NamespaceHealth {
|
|
90
|
+
return {
|
|
91
|
+
name: this.name,
|
|
92
|
+
status: this.successRate() > 0.7 ? 'healthy' : 'degraded',
|
|
93
|
+
totalRoutes: this.routeCount,
|
|
94
|
+
successRate: this.successRate(),
|
|
95
|
+
avgLatency: this.routeCount > 0 ? this.totalLatency / this.routeCount : 0,
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private successRate(): number {
|
|
100
|
+
return this.routeCount > 0 ? this.successCount / this.routeCount : 1.0
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const researchRouter = new ResearchRouter()
|
|
105
|
+
export default researchRouter
|
|
@@ -12,7 +12,7 @@ export class AgentsMdSkill extends Skill<any, any> {
|
|
|
12
12
|
constructor() { super({ name: 'agents-md', description: 'Create/update agent instructions', requires: [], inputSchema: AgentsMdInputSchema as any }) }
|
|
13
13
|
async execute(input: any, context: SkillContext): Promise<any> {
|
|
14
14
|
const { config, logger } = context
|
|
15
|
-
const dispatcher = createDispatcher(logger)
|
|
15
|
+
const dispatcher = createDispatcher({ logger })
|
|
16
16
|
const guard = createMainAgentGuard({}, logger)
|
|
17
17
|
const filename = `${input.type}.md`
|
|
18
18
|
guard.activateEmbargo()
|
|
@@ -22,7 +22,7 @@ export class AgentsMdSkill extends Skill<any, any> {
|
|
|
22
22
|
{ permissions: P, prompt: `Collect repo evidence: package.json, README, configs.`, owns: [], reads: ['package.json','README.md',filename] },
|
|
23
23
|
)
|
|
24
24
|
await dispatcher.dispatch(
|
|
25
|
-
{ role: 'implementer', model: input.model || '
|
|
25
|
+
{ role: 'implementer', model: input.model || 'glm-5' },
|
|
26
26
|
{ permissions: PRW, prompt: `${input.update?'Update':'Create'} ${filename}. Evidence: ${explore.output.slice(0,3000)}. Include: Overview, Tech Stack, Commands, Conventions.`, owns: [filename], reads: [] },
|
|
27
27
|
)
|
|
28
28
|
return { filePath: filename, mode: input.update?'updated':'created', evidence: ['package.json'], rules: ['Overview'], assumptions: [], summary: `${filename} done` }
|