@haoyiyin/workflow 0.2.11 → 0.3.1

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 (175) hide show
  1. package/dist/src/agents/contracts/implementer.d.ts +29 -0
  2. package/dist/src/agents/contracts/implementer.d.ts.map +1 -0
  3. package/dist/src/agents/contracts/implementer.js +94 -0
  4. package/dist/src/agents/contracts/implementer.js.map +1 -0
  5. package/dist/src/agents/contracts/index.d.ts +11 -0
  6. package/dist/src/agents/contracts/index.d.ts.map +1 -0
  7. package/dist/src/agents/contracts/index.js +11 -0
  8. package/dist/src/agents/contracts/index.js.map +1 -0
  9. package/dist/src/agents/contracts/planner.d.ts +25 -0
  10. package/dist/src/agents/contracts/planner.d.ts.map +1 -0
  11. package/dist/src/agents/contracts/planner.js +107 -0
  12. package/dist/src/agents/contracts/planner.js.map +1 -0
  13. package/dist/src/agents/contracts/router.d.ts +24 -0
  14. package/dist/src/agents/contracts/router.d.ts.map +1 -0
  15. package/dist/src/agents/contracts/router.js +137 -0
  16. package/dist/src/agents/contracts/router.js.map +1 -0
  17. package/dist/src/agents/contracts/verifier.d.ts +27 -0
  18. package/dist/src/agents/contracts/verifier.d.ts.map +1 -0
  19. package/dist/src/agents/contracts/verifier.js +115 -0
  20. package/dist/src/agents/contracts/verifier.js.map +1 -0
  21. package/dist/src/agents/dispatcher.d.ts +94 -51
  22. package/dist/src/agents/dispatcher.d.ts.map +1 -1
  23. package/dist/src/agents/dispatcher.js +207 -164
  24. package/dist/src/agents/dispatcher.js.map +1 -1
  25. package/dist/src/persistence/index.d.ts +4 -2
  26. package/dist/src/persistence/index.d.ts.map +1 -1
  27. package/dist/src/persistence/index.js +4 -1
  28. package/dist/src/persistence/index.js.map +1 -1
  29. package/dist/src/persistence/plan-md.d.ts +3 -2
  30. package/dist/src/persistence/plan-md.d.ts.map +1 -1
  31. package/dist/src/persistence/plan-md.js +47 -15
  32. package/dist/src/persistence/plan-md.js.map +1 -1
  33. package/dist/src/persistence/state-md.d.ts +2 -0
  34. package/dist/src/persistence/state-md.d.ts.map +1 -1
  35. package/dist/src/persistence/state-md.js +40 -22
  36. package/dist/src/persistence/state-md.js.map +1 -1
  37. package/dist/src/persistence/types.d.ts +35 -39
  38. package/dist/src/persistence/types.d.ts.map +1 -1
  39. package/dist/src/pi-extension.d.ts +4 -3
  40. package/dist/src/pi-extension.d.ts.map +1 -1
  41. package/dist/src/pi-extension.js +36 -67
  42. package/dist/src/pi-extension.js.map +1 -1
  43. package/dist/src/router/namespace/core/intent-router.d.ts +24 -0
  44. package/dist/src/router/namespace/core/intent-router.d.ts.map +1 -0
  45. package/dist/src/router/namespace/core/intent-router.js +190 -0
  46. package/dist/src/router/namespace/core/intent-router.js.map +1 -0
  47. package/dist/src/router/namespace/core/lifecycle-router.d.ts +28 -0
  48. package/dist/src/router/namespace/core/lifecycle-router.d.ts.map +1 -0
  49. package/dist/src/router/namespace/core/lifecycle-router.js +132 -0
  50. package/dist/src/router/namespace/core/lifecycle-router.js.map +1 -0
  51. package/dist/src/router/namespace/core/state-router.d.ts +32 -0
  52. package/dist/src/router/namespace/core/state-router.d.ts.map +1 -0
  53. package/dist/src/router/namespace/core/state-router.js +157 -0
  54. package/dist/src/router/namespace/core/state-router.js.map +1 -0
  55. package/dist/src/router/namespace/domain/code-router.d.ts +26 -0
  56. package/dist/src/router/namespace/domain/code-router.d.ts.map +1 -0
  57. package/dist/src/router/namespace/domain/code-router.js +171 -0
  58. package/dist/src/router/namespace/domain/code-router.js.map +1 -0
  59. package/dist/src/router/namespace/domain/debug-router.d.ts +25 -0
  60. package/dist/src/router/namespace/domain/debug-router.d.ts.map +1 -0
  61. package/dist/src/router/namespace/domain/debug-router.js +139 -0
  62. package/dist/src/router/namespace/domain/debug-router.js.map +1 -0
  63. package/dist/src/router/namespace/domain/plan-router.d.ts +29 -0
  64. package/dist/src/router/namespace/domain/plan-router.d.ts.map +1 -0
  65. package/dist/src/router/namespace/domain/plan-router.js +160 -0
  66. package/dist/src/router/namespace/domain/plan-router.js.map +1 -0
  67. package/dist/src/router/namespace/domain/review-router.d.ts +24 -0
  68. package/dist/src/router/namespace/domain/review-router.d.ts.map +1 -0
  69. package/dist/src/router/namespace/domain/review-router.js +116 -0
  70. package/dist/src/router/namespace/domain/review-router.js.map +1 -0
  71. package/dist/src/router/namespace/index.d.ts +19 -0
  72. package/dist/src/router/namespace/index.d.ts.map +1 -0
  73. package/dist/src/router/namespace/index.js +22 -0
  74. package/dist/src/router/namespace/index.js.map +1 -0
  75. package/dist/src/router/namespace/registry.d.ts +67 -0
  76. package/dist/src/router/namespace/registry.d.ts.map +1 -0
  77. package/dist/src/router/namespace/registry.js +197 -0
  78. package/dist/src/router/namespace/registry.js.map +1 -0
  79. package/dist/src/router/namespace/types.d.ts +124 -0
  80. package/dist/src/router/namespace/types.d.ts.map +1 -0
  81. package/dist/src/router/namespace/types.js +20 -0
  82. package/dist/src/router/namespace/types.js.map +1 -0
  83. package/dist/src/router/namespace/utility/fallback-router.d.ts +28 -0
  84. package/dist/src/router/namespace/utility/fallback-router.d.ts.map +1 -0
  85. package/dist/src/router/namespace/utility/fallback-router.js +88 -0
  86. package/dist/src/router/namespace/utility/fallback-router.js.map +1 -0
  87. package/dist/src/router/namespace/utility/quick-task-router.d.ts +28 -0
  88. package/dist/src/router/namespace/utility/quick-task-router.d.ts.map +1 -0
  89. package/dist/src/router/namespace/utility/quick-task-router.js +99 -0
  90. package/dist/src/router/namespace/utility/quick-task-router.js.map +1 -0
  91. package/dist/src/router/namespace/utility/research-router.d.ts +24 -0
  92. package/dist/src/router/namespace/utility/research-router.d.ts.map +1 -0
  93. package/dist/src/router/namespace/utility/research-router.js +84 -0
  94. package/dist/src/router/namespace/utility/research-router.js.map +1 -0
  95. package/dist/src/skills/agents-md/index.js +2 -2
  96. package/dist/src/skills/agents-md/index.js.map +1 -1
  97. package/dist/src/skills/execute-plan/index.d.ts +45 -65
  98. package/dist/src/skills/execute-plan/index.d.ts.map +1 -1
  99. package/dist/src/skills/execute-plan/index.js +325 -551
  100. package/dist/src/skills/execute-plan/index.js.map +1 -1
  101. package/dist/src/skills/index.d.ts +1 -0
  102. package/dist/src/skills/index.d.ts.map +1 -1
  103. package/dist/src/skills/index.js +1 -0
  104. package/dist/src/skills/index.js.map +1 -1
  105. package/dist/src/skills/quick-task/index.d.ts +4 -4
  106. package/dist/src/skills/quick-task/index.js +1 -1
  107. package/dist/src/skills/quick-task/index.js.map +1 -1
  108. package/dist/src/skills/review-diff/index.d.ts +6 -6
  109. package/dist/src/skills/review-diff/index.js +1 -1
  110. package/dist/src/skills/review-diff/index.js.map +1 -1
  111. package/dist/src/skills/router/index.d.ts +101 -0
  112. package/dist/src/skills/router/index.d.ts.map +1 -0
  113. package/dist/src/skills/router/index.js +450 -0
  114. package/dist/src/skills/router/index.js.map +1 -0
  115. package/dist/src/skills/router/types.d.ts +79 -0
  116. package/dist/src/skills/router/types.d.ts.map +1 -0
  117. package/dist/src/skills/router/types.js +8 -0
  118. package/dist/src/skills/router/types.js.map +1 -0
  119. package/dist/src/skills/systematic-debugging/index.js +1 -1
  120. package/dist/src/skills/systematic-debugging/index.js.map +1 -1
  121. package/dist/src/skills/tdd/index.d.ts +14 -14
  122. package/dist/src/skills/tdd/index.js +1 -1
  123. package/dist/src/skills/tdd/index.js.map +1 -1
  124. package/dist/src/skills/to-plan/index-enhanced.d.ts +4 -4
  125. package/dist/src/skills/to-plan/index-enhanced.d.ts.map +1 -1
  126. package/dist/src/skills/to-plan/index-enhanced.js +3 -5
  127. package/dist/src/skills/to-plan/index-enhanced.js.map +1 -1
  128. package/dist/src/skills/to-plan/index.d.ts +24 -91
  129. package/dist/src/skills/to-plan/index.d.ts.map +1 -1
  130. package/dist/src/skills/to-plan/index.js +214 -409
  131. package/dist/src/skills/to-plan/index.js.map +1 -1
  132. package/package.json +3 -5
  133. package/scripts/postinstall.js +42 -47
  134. package/src/agents/contracts/implementer.ts +122 -0
  135. package/src/agents/contracts/index.ts +27 -0
  136. package/src/agents/contracts/planner.ts +129 -0
  137. package/src/agents/contracts/router.ts +168 -0
  138. package/src/agents/contracts/verifier.ts +137 -0
  139. package/src/agents/dispatcher.ts +387 -362
  140. package/src/persistence/index.ts +10 -4
  141. package/src/persistence/plan-md.ts +52 -18
  142. package/src/persistence/state-md.ts +45 -23
  143. package/src/persistence/types.ts +37 -40
  144. package/src/pi-extension.ts +38 -76
  145. package/src/router/namespace/README.md +127 -0
  146. package/src/router/namespace/core/intent-router.ts +221 -0
  147. package/src/router/namespace/core/lifecycle-router.ts +156 -0
  148. package/src/router/namespace/core/state-router.ts +192 -0
  149. package/src/router/namespace/domain/code-router.ts +202 -0
  150. package/src/router/namespace/domain/debug-router.ts +167 -0
  151. package/src/router/namespace/domain/plan-router.ts +196 -0
  152. package/src/router/namespace/domain/review-router.ts +142 -0
  153. package/src/router/namespace/index.ts +84 -0
  154. package/src/router/namespace/registry.ts +242 -0
  155. package/src/router/namespace/types.ts +182 -0
  156. package/src/router/namespace/utility/fallback-router.ts +107 -0
  157. package/src/router/namespace/utility/quick-task-router.ts +121 -0
  158. package/src/router/namespace/utility/research-router.ts +105 -0
  159. package/src/skills/agents-md/index.ts +2 -2
  160. package/src/skills/execute-plan/index.ts +419 -673
  161. package/src/skills/index.ts +1 -0
  162. package/src/skills/quick-task/index.ts +1 -1
  163. package/src/skills/review-diff/index.ts +1 -1
  164. package/src/skills/router/SKILL.md +81 -0
  165. package/src/skills/router/index.ts +577 -0
  166. package/src/skills/router/types.ts +90 -0
  167. package/src/skills/systematic-debugging/index.ts +1 -1
  168. package/src/skills/tdd/index.ts +1 -1
  169. package/src/skills/to-plan/index-enhanced.ts +3 -5
  170. package/src/skills/to-plan/index.ts +231 -502
  171. package/dist/src/extension/classifier.d.ts +0 -18
  172. package/dist/src/extension/classifier.d.ts.map +0 -1
  173. package/dist/src/extension/classifier.js +0 -143
  174. package/dist/src/extension/classifier.js.map +0 -1
  175. package/src/extension/classifier.ts +0 -160
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Code Router - Domain Layer
3
+ *
4
+ * 处理代码相关的复杂路由决策
5
+ * 包括:代码编写、重构、测试、审查
6
+ */
7
+ export class CodeRouter {
8
+ name = 'code';
9
+ layer = 'domain';
10
+ priority = 65;
11
+ patterns = [
12
+ /code|代码/i,
13
+ /implement|实现/i,
14
+ /refactor|重构/i,
15
+ /write|写/i,
16
+ /function|函数|method|方法/i,
17
+ /class|类/i,
18
+ /component|组件/i,
19
+ ];
20
+ routeCount = 0;
21
+ successCount = 0;
22
+ totalLatency = 0;
23
+ async canRoute(context) {
24
+ const text = context.request.text.toLowerCase();
25
+ return /code|代码|implement|实现|refactor|重构|write|写|function|函数|class|类|component|组件/.test(text);
26
+ }
27
+ async route(context) {
28
+ const startTime = Date.now();
29
+ const { state, request } = context;
30
+ const decision = this.makeCodeDecision(state, request.text);
31
+ this.routeCount++;
32
+ this.totalLatency += Date.now() - startTime;
33
+ this.successCount++;
34
+ return {
35
+ ...decision,
36
+ namespace: this.name,
37
+ metadata: {
38
+ layer: this.layer,
39
+ processingTime: Date.now() - startTime,
40
+ hops: 1,
41
+ },
42
+ };
43
+ }
44
+ makeCodeDecision(state, requestText) {
45
+ // 场景1: 编写测试
46
+ if (/test|测试|tdd|spec/i.test(requestText)) {
47
+ return {
48
+ skill: 'tdd',
49
+ confidence: 0.85,
50
+ reasoning: 'Code domain: test-related request',
51
+ alternatives: [
52
+ { skill: 'quick-task', confidence: 0.3, reasoning: 'Quick test fix' },
53
+ ],
54
+ };
55
+ }
56
+ // 场景2: 重构代码
57
+ if (/refactor|重构|restructure|重组/i.test(requestText)) {
58
+ return {
59
+ skill: 'to-plan',
60
+ confidence: 0.8,
61
+ reasoning: 'Refactoring requires careful planning',
62
+ alternatives: [
63
+ { skill: 'review-diff', confidence: 0.4, reasoning: 'Review after refactor' },
64
+ ],
65
+ };
66
+ }
67
+ // 场景3: 修复代码错误
68
+ if (/fix.*code|修复.*代码|bug|fix.*error/i.test(requestText)) {
69
+ if (state.phase === 'executing') {
70
+ return {
71
+ skill: 'systematic-debugging',
72
+ confidence: 0.85,
73
+ reasoning: 'Code bug fix during execution',
74
+ alternatives: [
75
+ { skill: 'quick-task', confidence: 0.5, reasoning: 'Simple fix' },
76
+ ],
77
+ };
78
+ }
79
+ return {
80
+ skill: 'systematic-debugging',
81
+ confidence: 0.75,
82
+ reasoning: 'Code domain: debugging required',
83
+ alternatives: [
84
+ { skill: 'quick-task', confidence: 0.4, reasoning: 'Quick fix attempt' },
85
+ ],
86
+ };
87
+ }
88
+ // 场景4: 新功能实现
89
+ if (/implement|实现|add.*feature|添加.*功能/i.test(requestText)) {
90
+ if (state.phase === 'executing') {
91
+ return {
92
+ skill: 'execute-plan',
93
+ confidence: 0.8,
94
+ reasoning: 'Code implementation during execution phase',
95
+ alternatives: [
96
+ { skill: 'tdd', confidence: 0.5, reasoning: 'Test-driven approach' },
97
+ ],
98
+ };
99
+ }
100
+ // 复杂实现需要计划
101
+ if (this.isComplexImplementation(requestText)) {
102
+ return {
103
+ skill: 'to-plan',
104
+ confidence: 0.75,
105
+ reasoning: 'Complex code implementation requires planning',
106
+ alternatives: [
107
+ { skill: 'tdd', confidence: 0.4, reasoning: 'TDD approach' },
108
+ ],
109
+ };
110
+ }
111
+ // 简单实现
112
+ return {
113
+ skill: 'quick-task',
114
+ confidence: 0.7,
115
+ reasoning: 'Simple code implementation',
116
+ alternatives: [
117
+ { skill: 'tdd', confidence: 0.5, reasoning: 'With tests' },
118
+ ],
119
+ };
120
+ }
121
+ // 场景5: 代码审查
122
+ if (/review.*code|审查.*代码|check.*code/i.test(requestText)) {
123
+ return {
124
+ skill: 'review-diff',
125
+ confidence: 0.85,
126
+ reasoning: 'Code review requested',
127
+ alternatives: [
128
+ { skill: 'quick-task', confidence: 0.2, reasoning: 'Self-review' },
129
+ ],
130
+ };
131
+ }
132
+ // 默认
133
+ return {
134
+ skill: 'quick-task',
135
+ confidence: 0.4,
136
+ reasoning: 'Code domain: default to quick-task',
137
+ alternatives: [
138
+ { skill: 'tdd', confidence: 0.3, reasoning: 'With tests' },
139
+ ],
140
+ };
141
+ }
142
+ isComplexImplementation(request) {
143
+ const complexityMarkers = [
144
+ /multiple|多个/i,
145
+ /steps?|步骤/i,
146
+ /integration|集成/i,
147
+ /api|interface/i,
148
+ /database|数据库/i,
149
+ /state|状态/i,
150
+ ];
151
+ return complexityMarkers.filter((p) => p.test(request)).length >= 2;
152
+ }
153
+ getSupportedSkills() {
154
+ return ['tdd', 'to-plan', 'execute-plan', 'systematic-debugging', 'quick-task', 'review-diff'];
155
+ }
156
+ getHealth() {
157
+ return {
158
+ name: this.name,
159
+ status: this.successRate() > 0.75 ? 'healthy' : 'degraded',
160
+ totalRoutes: this.routeCount,
161
+ successRate: this.successRate(),
162
+ avgLatency: this.routeCount > 0 ? this.totalLatency / this.routeCount : 0,
163
+ };
164
+ }
165
+ successRate() {
166
+ return this.routeCount > 0 ? this.successCount / this.routeCount : 1.0;
167
+ }
168
+ }
169
+ export const codeRouter = new CodeRouter();
170
+ export default codeRouter;
171
+ //# sourceMappingURL=code-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-router.js","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/code-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Debug Router - Domain Layer
3
+ *
4
+ * 处理调试相关的复杂路由决策
5
+ */
6
+ import type { NamespaceRouter, RoutingContext, RouteDecision, NamespaceHealth } from '../types.js';
7
+ export declare class DebugRouter implements NamespaceRouter {
8
+ readonly name = "debug";
9
+ readonly layer: "domain";
10
+ readonly priority = 70;
11
+ readonly patterns: RegExp[];
12
+ private routeCount;
13
+ private successCount;
14
+ private totalLatency;
15
+ canRoute(context: RoutingContext): Promise<boolean>;
16
+ route(context: RoutingContext): Promise<RouteDecision>;
17
+ private makeDebugDecision;
18
+ private calculateUrgency;
19
+ getSupportedSkills(): string[];
20
+ getHealth(): NamespaceHealth;
21
+ private successRate;
22
+ }
23
+ export declare const debugRouter: DebugRouter;
24
+ export default debugRouter;
25
+ //# sourceMappingURL=debug-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-router.d.ts","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/debug-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EAEhB,MAAM,aAAa,CAAA;AAEpB,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAS;IAClC,QAAQ,CAAC,QAAQ,MAAK;IACtB,QAAQ,CAAC,QAAQ,WAShB;IAED,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,YAAY,CAAI;IAElB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB5D,OAAO,CAAC,iBAAiB;IA8EzB,OAAO,CAAC,gBAAgB;IASxB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,SAAS,IAAI,eAAe;IAU5B,OAAO,CAAC,WAAW;CAGpB;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA;AAC5C,eAAe,WAAW,CAAA"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Debug Router - Domain Layer
3
+ *
4
+ * 处理调试相关的复杂路由决策
5
+ */
6
+ export class DebugRouter {
7
+ name = 'debug';
8
+ layer = 'domain';
9
+ priority = 70;
10
+ patterns = [
11
+ /debug|调试/i,
12
+ /bug|错误|故障/i,
13
+ /error|异常/i,
14
+ /crash|崩溃/i,
15
+ /broken|损坏/i,
16
+ /not working|不工作/i,
17
+ /fail|失败/i,
18
+ /issue|问题/i,
19
+ ];
20
+ routeCount = 0;
21
+ successCount = 0;
22
+ totalLatency = 0;
23
+ async canRoute(context) {
24
+ const text = context.request.text.toLowerCase();
25
+ return /debug|调试|bug|错误|error|异常|crash|崩溃|fail|失败|issue|问题|not working|不工作/.test(text);
26
+ }
27
+ async route(context) {
28
+ const startTime = Date.now();
29
+ const { state, request } = context;
30
+ const decision = this.makeDebugDecision(state, request.text);
31
+ this.routeCount++;
32
+ this.totalLatency += Date.now() - startTime;
33
+ this.successCount++;
34
+ return {
35
+ ...decision,
36
+ namespace: this.name,
37
+ metadata: {
38
+ layer: this.layer,
39
+ processingTime: Date.now() - startTime,
40
+ hops: 1,
41
+ },
42
+ };
43
+ }
44
+ makeDebugDecision(state, requestText) {
45
+ const urgency = this.calculateUrgency(requestText);
46
+ // 场景1: 系统性调试
47
+ if (/systematic|系统|root cause|根本原因|investigate|调查/i.test(requestText)) {
48
+ return {
49
+ skill: 'systematic-debugging',
50
+ confidence: 0.9,
51
+ reasoning: `Systematic debugging approach requested (urgency: ${urgency})`,
52
+ alternatives: [
53
+ { skill: 'quick-task', confidence: 0.2, reasoning: 'Quick fix bypass' },
54
+ ],
55
+ };
56
+ }
57
+ // 场景2: 严重错误/崩溃
58
+ if (/crash|崩溃|critical|严重|production|生产/i.test(requestText)) {
59
+ return {
60
+ skill: 'systematic-debugging',
61
+ confidence: 0.95,
62
+ reasoning: `Critical issue detected: ${urgency} urgency`,
63
+ alternatives: [
64
+ { skill: 'quick-task', confidence: 0.3, reasoning: 'Emergency fix' },
65
+ ],
66
+ };
67
+ }
68
+ // 场景3: 测试失败
69
+ if (/test.*fail|测试.*失败|failing test/i.test(requestText)) {
70
+ return {
71
+ skill: 'tdd',
72
+ confidence: 0.8,
73
+ reasoning: 'Test failure: TDD skill can help',
74
+ alternatives: [
75
+ { skill: 'systematic-debugging', confidence: 0.6, reasoning: 'Deep investigation' },
76
+ ],
77
+ };
78
+ }
79
+ // 场景4: 执行阶段的问题
80
+ if (state.phase === 'executing') {
81
+ return {
82
+ skill: 'systematic-debugging',
83
+ confidence: 0.85,
84
+ reasoning: `Debug during execution phase: ${state.phase}`,
85
+ alternatives: [
86
+ { skill: 'quick-task', confidence: 0.4, reasoning: 'Quick workaround' },
87
+ ],
88
+ };
89
+ }
90
+ // 场景5: 验证阶段的问题
91
+ if (state.phase === 'verifying') {
92
+ return {
93
+ skill: 'systematic-debugging',
94
+ confidence: 0.85,
95
+ reasoning: 'Debug during verification phase',
96
+ alternatives: [
97
+ { skill: 'review-diff', confidence: 0.4, reasoning: 'Review first' },
98
+ ],
99
+ };
100
+ }
101
+ // 场景6: 一般性调试
102
+ return {
103
+ skill: 'systematic-debugging',
104
+ confidence: 0.75,
105
+ reasoning: `General debugging request (urgency: ${urgency})`,
106
+ alternatives: [
107
+ { skill: 'quick-task', confidence: 0.5, reasoning: 'Quick fix attempt' },
108
+ { skill: 'review-diff', confidence: 0.3, reasoning: 'Check recent changes' },
109
+ ],
110
+ };
111
+ }
112
+ calculateUrgency(request) {
113
+ const highUrgency = [/critical|严重|urgent|紧急|production|生产|crash|崩溃|outage|中断/i];
114
+ const mediumUrgency = [/bug|错误|error|异常|issue|问题|fail|失败/i];
115
+ if (highUrgency.some((p) => p.test(request)))
116
+ return 'high';
117
+ if (mediumUrgency.some((p) => p.test(request)))
118
+ return 'medium';
119
+ return 'low';
120
+ }
121
+ getSupportedSkills() {
122
+ return ['systematic-debugging', 'quick-task', 'tdd', 'review-diff'];
123
+ }
124
+ getHealth() {
125
+ return {
126
+ name: this.name,
127
+ status: this.successRate() > 0.8 ? 'healthy' : 'degraded',
128
+ totalRoutes: this.routeCount,
129
+ successRate: this.successRate(),
130
+ avgLatency: this.routeCount > 0 ? this.totalLatency / this.routeCount : 0,
131
+ };
132
+ }
133
+ successRate() {
134
+ return this.routeCount > 0 ? this.successCount / this.routeCount : 1.0;
135
+ }
136
+ }
137
+ export const debugRouter = new DebugRouter();
138
+ export default debugRouter;
139
+ //# sourceMappingURL=debug-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-router.js","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/debug-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Plan Router - Domain Layer
3
+ *
4
+ * 处理计划相关的复杂路由决策
5
+ * 包括:创建计划、执行计划、验证计划
6
+ */
7
+ import type { NamespaceRouter, RoutingContext, RouteDecision, NamespaceHealth } from '../types.js';
8
+ export declare class PlanRouter implements NamespaceRouter {
9
+ readonly name = "plan";
10
+ readonly layer: "domain";
11
+ readonly priority = 70;
12
+ readonly patterns: RegExp[];
13
+ private routeCount;
14
+ private successCount;
15
+ private totalLatency;
16
+ canRoute(context: RoutingContext): Promise<boolean>;
17
+ route(context: RoutingContext): Promise<RouteDecision>;
18
+ private makePlanDecision;
19
+ /**
20
+ * 判断是否值得创建计划
21
+ */
22
+ private isPlanWorthy;
23
+ getSupportedSkills(): string[];
24
+ getHealth(): NamespaceHealth;
25
+ private successRate;
26
+ }
27
+ export declare const planRouter: PlanRouter;
28
+ export default planRouter;
29
+ //# sourceMappingURL=plan-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-router.d.ts","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/plan-router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EAEhB,MAAM,aAAa,CAAA;AAEpB,qBAAa,UAAW,YAAW,eAAe;IAChD,QAAQ,CAAC,IAAI,UAAS;IACtB,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAS;IAClC,QAAQ,CAAC,QAAQ,MAAK;IACtB,QAAQ,CAAC,QAAQ,WAMhB;IAED,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,YAAY,CAAI;IAElB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IASnD,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB5D,OAAO,CAAC,gBAAgB;IAiGxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,SAAS,IAAI,eAAe;IAU5B,OAAO,CAAC,WAAW;CAGpB;AAED,eAAO,MAAM,UAAU,YAAmB,CAAA;AAC1C,eAAe,UAAU,CAAA"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Plan Router - Domain Layer
3
+ *
4
+ * 处理计划相关的复杂路由决策
5
+ * 包括:创建计划、执行计划、验证计划
6
+ */
7
+ export class PlanRouter {
8
+ name = 'plan';
9
+ layer = 'domain';
10
+ priority = 70;
11
+ patterns = [
12
+ /plan|计划/i,
13
+ /wave|波次/i,
14
+ /task|任务/i,
15
+ /milestone|里程碑/i,
16
+ /phase|阶段/i,
17
+ ];
18
+ routeCount = 0;
19
+ successCount = 0;
20
+ totalLatency = 0;
21
+ async canRoute(context) {
22
+ // 如果涉及到 plan 相关操作
23
+ const text = context.request.text.toLowerCase();
24
+ return (/plan|计划|wave|任务|milestone|阶段/.test(text) ||
25
+ context.plan !== null);
26
+ }
27
+ async route(context) {
28
+ const startTime = Date.now();
29
+ const { state, plan, request } = context;
30
+ const decision = this.makePlanDecision(state, plan, request.text);
31
+ this.routeCount++;
32
+ this.totalLatency += Date.now() - startTime;
33
+ this.successCount++;
34
+ return {
35
+ ...decision,
36
+ namespace: this.name,
37
+ metadata: {
38
+ layer: this.layer,
39
+ processingTime: Date.now() - startTime,
40
+ hops: 1,
41
+ },
42
+ };
43
+ }
44
+ makePlanDecision(state, plan, requestText) {
45
+ const alternatives = [];
46
+ // 场景1: 创建新计划
47
+ if (/create.*plan|new.*plan|开始.*计划|创建.*计划/i.test(requestText)) {
48
+ return {
49
+ skill: 'to-plan',
50
+ confidence: 0.9,
51
+ reasoning: 'User explicitly requested to create a new plan',
52
+ alternatives: [
53
+ { skill: 'research', confidence: 0.3, reasoning: 'If need background research' },
54
+ ],
55
+ };
56
+ }
57
+ // 场景2: 执行现有计划
58
+ if (plan && /execute.*plan|run.*plan|执行.*计划|运行.*计划/i.test(requestText)) {
59
+ return {
60
+ skill: 'execute-plan',
61
+ confidence: 0.9,
62
+ reasoning: `Execute existing plan with ${plan.tasks?.length || 0} tasks`,
63
+ alternatives: [
64
+ { skill: 'review-diff', confidence: 0.2, reasoning: 'Review before execute' },
65
+ ],
66
+ };
67
+ }
68
+ // 场景3: 验证计划完成情况
69
+ if (plan && state.phase === 'verifying') {
70
+ const completed = state.completedTasks?.length || 0;
71
+ const total = plan.tasks?.length || 0;
72
+ if (completed >= total) {
73
+ return {
74
+ skill: 'review-diff',
75
+ confidence: 0.85,
76
+ reasoning: `Plan complete (${completed}/${total}), verification needed`,
77
+ alternatives: [
78
+ { skill: 'systematic-debugging', confidence: 0.3, reasoning: 'If issues found' },
79
+ ],
80
+ };
81
+ }
82
+ }
83
+ // 场景4: 计划执行中途
84
+ if (plan && state.phase === 'executing') {
85
+ const completed = state.completedTasks?.length || 0;
86
+ const total = plan.tasks?.length || 0;
87
+ return {
88
+ skill: 'execute-plan',
89
+ confidence: 0.85,
90
+ reasoning: `Continue execution: ${completed}/${total} tasks done`,
91
+ alternatives: [
92
+ { skill: 'quick-task', confidence: 0.4, reasoning: 'Quick bypass' },
93
+ ],
94
+ };
95
+ }
96
+ // 场景5: 修改/更新计划
97
+ if (plan && /update.*plan|modify.*plan|revise|调整.*计划/i.test(requestText)) {
98
+ return {
99
+ skill: 'to-plan',
100
+ confidence: 0.8,
101
+ reasoning: 'Update existing plan based on user request',
102
+ alternatives: [
103
+ { skill: 'execute-plan', confidence: 0.3, reasoning: 'Continue with current plan' },
104
+ ],
105
+ };
106
+ }
107
+ // 场景6: 无计划但请求复杂
108
+ if (!plan && this.isPlanWorthy(requestText)) {
109
+ return {
110
+ skill: 'to-plan',
111
+ confidence: 0.75,
112
+ reasoning: 'No plan exists, request warrants planning',
113
+ alternatives: [
114
+ { skill: 'quick-task', confidence: 0.4, reasoning: 'Direct approach' },
115
+ { skill: 'research', confidence: 0.3, reasoning: 'Gather info first' },
116
+ ],
117
+ };
118
+ }
119
+ // 默认
120
+ return {
121
+ skill: 'quick-task',
122
+ confidence: 0.3,
123
+ reasoning: 'Plan domain: no specific plan action matched',
124
+ alternatives: [],
125
+ };
126
+ }
127
+ /**
128
+ * 判断是否值得创建计划
129
+ */
130
+ isPlanWorthy(request) {
131
+ const indicators = [
132
+ /implement|实现/i,
133
+ /feature|功能/i,
134
+ /refactor|重构/i,
135
+ /migration|迁移/i,
136
+ /upgrade|升级/i,
137
+ /and|和|then|然后.*(add|create|fix|update)/i,
138
+ ];
139
+ const matches = indicators.filter((p) => p.test(request)).length;
140
+ return matches >= 2 || request.length > 120;
141
+ }
142
+ getSupportedSkills() {
143
+ return ['to-plan', 'execute-plan', 'quick-task', 'review-diff', 'research'];
144
+ }
145
+ getHealth() {
146
+ return {
147
+ name: this.name,
148
+ status: this.successRate() > 0.8 ? 'healthy' : 'degraded',
149
+ totalRoutes: this.routeCount,
150
+ successRate: this.successRate(),
151
+ avgLatency: this.routeCount > 0 ? this.totalLatency / this.routeCount : 0,
152
+ };
153
+ }
154
+ successRate() {
155
+ return this.routeCount > 0 ? this.successCount / this.routeCount : 1.0;
156
+ }
157
+ }
158
+ export const planRouter = new PlanRouter();
159
+ export default planRouter;
160
+ //# sourceMappingURL=plan-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-router.js","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/plan-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Review Router - Domain Layer
3
+ *
4
+ * 处理代码审查相关的复杂路由决策
5
+ */
6
+ import type { NamespaceRouter, RoutingContext, RouteDecision, NamespaceHealth } from '../types.js';
7
+ export declare class ReviewRouter implements NamespaceRouter {
8
+ readonly name = "review";
9
+ readonly layer: "domain";
10
+ readonly priority = 65;
11
+ readonly patterns: RegExp[];
12
+ private routeCount;
13
+ private successCount;
14
+ private totalLatency;
15
+ canRoute(context: RoutingContext): Promise<boolean>;
16
+ route(context: RoutingContext): Promise<RouteDecision>;
17
+ private makeReviewDecision;
18
+ getSupportedSkills(): string[];
19
+ getHealth(): NamespaceHealth;
20
+ private successRate;
21
+ }
22
+ export declare const reviewRouter: ReviewRouter;
23
+ export default reviewRouter;
24
+ //# sourceMappingURL=review-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-router.d.ts","sourceRoot":"","sources":["../../../../../src/router/namespace/domain/review-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EAEhB,MAAM,aAAa,CAAA;AAEpB,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAS;IAClC,QAAQ,CAAC,QAAQ,MAAK;IACtB,QAAQ,CAAC,QAAQ,WAQhB;IAED,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,YAAY,CAAI;IAElB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB5D,OAAO,CAAC,kBAAkB;IA+D1B,kBAAkB,IAAI,MAAM,EAAE;IAI9B,SAAS,IAAI,eAAe;IAU5B,OAAO,CAAC,WAAW;CAGpB;AAED,eAAO,MAAM,YAAY,cAAqB,CAAA;AAC9C,eAAe,YAAY,CAAA"}