@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
@@ -1,18 +0,0 @@
1
- /**
2
- * Intent classifier for user input
3
- * Maps natural language to yi-workflow skills
4
- */
5
- export interface IntentResult {
6
- skill?: string;
7
- confidence: "high" | "medium" | "low";
8
- reason: string;
9
- }
10
- /**
11
- * Classify user intent and return appropriate skill
12
- */
13
- export declare function classifyIntent(message: string): IntentResult;
14
- /**
15
- * Check if input should be dispatched to a skill
16
- */
17
- export declare function shouldDispatch(message: string): boolean;
18
- //# sourceMappingURL=classifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../src/extension/classifier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAyI5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD"}
@@ -1,143 +0,0 @@
1
- /**
2
- * Intent classifier for user input
3
- * Maps natural language to yi-workflow skills
4
- */
5
- /**
6
- * Classify user intent and return appropriate skill
7
- */
8
- export function classifyIntent(message) {
9
- const lower = message.toLowerCase().trim();
10
- // Pattern definitions with priority
11
- const patterns = [
12
- // High confidence patterns
13
- {
14
- skill: "to-plan",
15
- confidence: "high",
16
- patterns: [
17
- /^(plan|design|architect)\b/i,
18
- /^(create|make|write).*\bplan\b/i,
19
- /^(how|what).*\b(approach|strategy)\b/i,
20
- /^(break|split|divide).*\b(down|into)\b/i,
21
- /\b(plan|design)\b.*\b(feature|module|system)\b/i,
22
- /\bimplement\b.*\bplan\b/i,
23
- ],
24
- reason: "Detected planning/architecture intent",
25
- },
26
- {
27
- skill: "execute-plan",
28
- confidence: "high",
29
- patterns: [
30
- /^(execute|run|implement)\b.*\bplan\b/i,
31
- /^(start|begin|proceed)\b.*\bimplement/i,
32
- /\bplan\b.*\b(approved|ready)\b/i,
33
- /^(continue|resume)\b.*\b(workflow|execution)\b/i,
34
- ],
35
- reason: "Detected execution intent",
36
- },
37
- {
38
- skill: "systematic-debugging",
39
- confidence: "high",
40
- patterns: [
41
- /^(debug|fix|investigate|trace)\b/i,
42
- /\b(bug|error|crash|fail)\b/i,
43
- /\b(broken|not working|issue|problem)\b/i,
44
- /\b(intermittent|flaky)\b/i,
45
- /\b(root cause|diagnose)\b/i,
46
- ],
47
- reason: "Detected debugging intent",
48
- },
49
- {
50
- skill: "tdd",
51
- confidence: "high",
52
- patterns: [
53
- /\btdd\b/i,
54
- /^(test|write test).*\bfirst\b/i,
55
- /\bred.?green.?refactor\b/i,
56
- /\b(test driven|test-driven)\b/i,
57
- /^(add|write).*\btest\b.*\b(for|before)\b/i,
58
- ],
59
- reason: "Detected TDD intent",
60
- },
61
- {
62
- skill: "review-diff",
63
- confidence: "high",
64
- patterns: [
65
- /^(review|audit|inspect)\b/i,
66
- /\b(code|pull|pr)\b.*\breview\b/i,
67
- /\b(quality|check|verify)\b.*\bcode\b/i,
68
- /\blooks\b.*\b(good|correct|ok)\b.*/i,
69
- ],
70
- reason: "Detected review intent",
71
- },
72
- {
73
- skill: "agents-md",
74
- confidence: "high",
75
- patterns: [
76
- /\b(CLAUDE|AGENTS|CONTEXT)\.md\b/i,
77
- /^(create|update|write).*\b(agent|context|instruction)\b.*\b(file|md)\b/i,
78
- /\b(agent instruction|system prompt)\b/i,
79
- ],
80
- reason: "Detected agent file creation intent",
81
- },
82
- {
83
- skill: "quick-task",
84
- confidence: "high",
85
- patterns: [
86
- /\b(typo|fix typo|rename|import|config)\b/i,
87
- /^(quick|small|simple|minor)\b.*\b(fix|change|update)\b/i,
88
- /\bversion bump\b/i,
89
- /\bgitignore\b/i,
90
- /^(add|remove|update)\s+\w+\s*$/i, // Single word tasks
91
- ],
92
- reason: "Detected quick task intent",
93
- },
94
- // Medium confidence patterns
95
- {
96
- skill: "to-plan",
97
- confidence: "medium",
98
- patterns: [
99
- /\b(need|want)\b.*\bplan\b/i,
100
- /\b(implement|build|create)\b.*\b(feature|function)\b/i,
101
- ],
102
- reason: "Potential planning intent",
103
- },
104
- {
105
- skill: "quick-task",
106
- confidence: "medium",
107
- patterns: [
108
- /^(fix|update|change|rename|add|remove)\b/i,
109
- /\b(update|change)\b.*\b(config|setting|value)\b/i,
110
- ],
111
- reason: "Potential quick task intent",
112
- },
113
- // Low confidence catch-all
114
- {
115
- skill: "quick-task",
116
- confidence: "low",
117
- patterns: [
118
- /^(do|make|help)\b/i,
119
- /\b(can you|could you)\b/i,
120
- ],
121
- reason: "Unclear intent - using quick-task for exploration",
122
- },
123
- ];
124
- // Find first matching pattern
125
- for (const { skill, confidence, patterns: pats, reason } of patterns) {
126
- if (pats.some((p) => p.test(lower))) {
127
- return { skill, confidence, reason };
128
- }
129
- }
130
- // No match - return with fallback suggestion
131
- return {
132
- confidence: "low",
133
- reason: "No clear intent detected",
134
- };
135
- }
136
- /**
137
- * Check if input should be dispatched to a skill
138
- */
139
- export function shouldDispatch(message) {
140
- const result = classifyIntent(message);
141
- return result.skill !== undefined;
142
- }
143
- //# sourceMappingURL=classifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/extension/classifier.ts"],"names":[],"mappings":"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"}
@@ -1,160 +0,0 @@
1
- /**
2
- * Intent classifier for user input
3
- * Maps natural language to yi-workflow skills
4
- */
5
-
6
- export interface IntentResult {
7
- skill?: string;
8
- confidence: "high" | "medium" | "low";
9
- reason: string;
10
- }
11
-
12
- /**
13
- * Classify user intent and return appropriate skill
14
- */
15
- export function classifyIntent(message: string): IntentResult {
16
- const lower = message.toLowerCase().trim();
17
-
18
- // Pattern definitions with priority
19
- const patterns: Array<{
20
- skill: string;
21
- confidence: "high" | "medium" | "low";
22
- patterns: RegExp[];
23
- reason: string;
24
- }> = [
25
- // High confidence patterns
26
- {
27
- skill: "to-plan",
28
- confidence: "high",
29
- patterns: [
30
- /^(plan|design|architect)\b/i,
31
- /^(create|make|write).*\bplan\b/i,
32
- /^(how|what).*\b(approach|strategy)\b/i,
33
- /^(break|split|divide).*\b(down|into)\b/i,
34
- /\b(plan|design)\b.*\b(feature|module|system)\b/i,
35
- /\bimplement\b.*\bplan\b/i,
36
- ],
37
- reason: "Detected planning/architecture intent",
38
- },
39
- {
40
- skill: "execute-plan",
41
- confidence: "high",
42
- patterns: [
43
- /^(execute|run|implement)\b.*\bplan\b/i,
44
- /^(start|begin|proceed)\b.*\bimplement/i,
45
- /\bplan\b.*\b(approved|ready)\b/i,
46
- /^(continue|resume)\b.*\b(workflow|execution)\b/i,
47
- ],
48
- reason: "Detected execution intent",
49
- },
50
- {
51
- skill: "systematic-debugging",
52
- confidence: "high",
53
- patterns: [
54
- /^(debug|fix|investigate|trace)\b/i,
55
- /\b(bug|error|crash|fail)\b/i,
56
- /\b(broken|not working|issue|problem)\b/i,
57
- /\b(intermittent|flaky)\b/i,
58
- /\b(root cause|diagnose)\b/i,
59
- ],
60
- reason: "Detected debugging intent",
61
- },
62
- {
63
- skill: "tdd",
64
- confidence: "high",
65
- patterns: [
66
- /\btdd\b/i,
67
- /^(test|write test).*\bfirst\b/i,
68
- /\bred.?green.?refactor\b/i,
69
- /\b(test driven|test-driven)\b/i,
70
- /^(add|write).*\btest\b.*\b(for|before)\b/i,
71
- ],
72
- reason: "Detected TDD intent",
73
- },
74
- {
75
- skill: "review-diff",
76
- confidence: "high",
77
- patterns: [
78
- /^(review|audit|inspect)\b/i,
79
- /\b(code|pull|pr)\b.*\breview\b/i,
80
- /\b(quality|check|verify)\b.*\bcode\b/i,
81
- /\blooks\b.*\b(good|correct|ok)\b.*/i,
82
- ],
83
- reason: "Detected review intent",
84
- },
85
- {
86
- skill: "agents-md",
87
- confidence: "high",
88
- patterns: [
89
- /\b(CLAUDE|AGENTS|CONTEXT)\.md\b/i,
90
- /^(create|update|write).*\b(agent|context|instruction)\b.*\b(file|md)\b/i,
91
- /\b(agent instruction|system prompt)\b/i,
92
- ],
93
- reason: "Detected agent file creation intent",
94
- },
95
- {
96
- skill: "quick-task",
97
- confidence: "high",
98
- patterns: [
99
- /\b(typo|fix typo|rename|import|config)\b/i,
100
- /^(quick|small|simple|minor)\b.*\b(fix|change|update)\b/i,
101
- /\bversion bump\b/i,
102
- /\bgitignore\b/i,
103
- /^(add|remove|update)\s+\w+\s*$/i, // Single word tasks
104
- ],
105
- reason: "Detected quick task intent",
106
- },
107
-
108
- // Medium confidence patterns
109
- {
110
- skill: "to-plan",
111
- confidence: "medium",
112
- patterns: [
113
- /\b(need|want)\b.*\bplan\b/i,
114
- /\b(implement|build|create)\b.*\b(feature|function)\b/i,
115
- ],
116
- reason: "Potential planning intent",
117
- },
118
- {
119
- skill: "quick-task",
120
- confidence: "medium",
121
- patterns: [
122
- /^(fix|update|change|rename|add|remove)\b/i,
123
- /\b(update|change)\b.*\b(config|setting|value)\b/i,
124
- ],
125
- reason: "Potential quick task intent",
126
- },
127
-
128
- // Low confidence catch-all
129
- {
130
- skill: "quick-task",
131
- confidence: "low",
132
- patterns: [
133
- /^(do|make|help)\b/i,
134
- /\b(can you|could you)\b/i,
135
- ],
136
- reason: "Unclear intent - using quick-task for exploration",
137
- },
138
- ];
139
-
140
- // Find first matching pattern
141
- for (const { skill, confidence, patterns: pats, reason } of patterns) {
142
- if (pats.some((p) => p.test(lower))) {
143
- return { skill, confidence, reason };
144
- }
145
- }
146
-
147
- // No match - return with fallback suggestion
148
- return {
149
- confidence: "low",
150
- reason: "No clear intent detected",
151
- };
152
- }
153
-
154
- /**
155
- * Check if input should be dispatched to a skill
156
- */
157
- export function shouldDispatch(message: string): boolean {
158
- const result = classifyIntent(message);
159
- return result.skill !== undefined;
160
- }