erosolar-cli 2.1.176 → 2.1.177
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/core/agent.d.ts +10 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +25 -0
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agentOrchestrator.d.ts +37 -0
- package/dist/core/agentOrchestrator.d.ts.map +1 -0
- package/dist/core/agentOrchestrator.js +147 -0
- package/dist/core/agentOrchestrator.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +10 -1
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +167 -174
- package/dist/shell/interactiveShell.js.map +1 -1
- package/package.json +1 -1
- package/dist/runtime/flowOrchestrator.d.ts +0 -52
- package/dist/runtime/flowOrchestrator.d.ts.map +0 -1
- package/dist/runtime/flowOrchestrator.js +0 -242
- package/dist/runtime/flowOrchestrator.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.177",
|
|
4
4
|
"description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
|
|
5
5
|
"main": "dist/bin/erosolar.js",
|
|
6
6
|
"type": "module",
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { CompletionAnalysis } from '../shell/taskCompletionDetector.js';
|
|
2
|
-
export interface FlowDecisionInput {
|
|
3
|
-
iteration: number;
|
|
4
|
-
response: string;
|
|
5
|
-
toolsUsed: string[];
|
|
6
|
-
completionAnalysis: CompletionAnalysis;
|
|
7
|
-
verificationConfirmed: boolean;
|
|
8
|
-
}
|
|
9
|
-
export type FlowDecision = {
|
|
10
|
-
type: 'stop';
|
|
11
|
-
message: string;
|
|
12
|
-
} | {
|
|
13
|
-
type: 'stagnation-stop';
|
|
14
|
-
message: string;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'execute-plan';
|
|
17
|
-
prompt: string;
|
|
18
|
-
message: string;
|
|
19
|
-
} | {
|
|
20
|
-
type: 'verify';
|
|
21
|
-
prompt: string;
|
|
22
|
-
message: string;
|
|
23
|
-
} | {
|
|
24
|
-
type: 'continue';
|
|
25
|
-
prompt: string;
|
|
26
|
-
message?: string;
|
|
27
|
-
};
|
|
28
|
-
interface FlowOrchestratorConfig {
|
|
29
|
-
maxNoProgress: number;
|
|
30
|
-
maxVerificationAttempts: number;
|
|
31
|
-
}
|
|
32
|
-
export declare class FlowOrchestrator {
|
|
33
|
-
private readonly config;
|
|
34
|
-
private initialRequest;
|
|
35
|
-
private lastResponse;
|
|
36
|
-
private consecutivePlanOnly;
|
|
37
|
-
private consecutiveNoProgress;
|
|
38
|
-
private pendingVerification;
|
|
39
|
-
private verificationAttempts;
|
|
40
|
-
constructor(config?: Partial<FlowOrchestratorConfig>);
|
|
41
|
-
start(initialRequest: string): void;
|
|
42
|
-
isVerificationPending(): boolean;
|
|
43
|
-
decide(input: FlowDecisionInput): FlowDecision;
|
|
44
|
-
isPlanOnlyResponse(response: string): boolean;
|
|
45
|
-
responseIndicatesIncompleteWork(response: string): boolean;
|
|
46
|
-
private buildPlanExecutionPrompt;
|
|
47
|
-
private buildDefaultNextPrompt;
|
|
48
|
-
private buildCompletionContradictionPrompt;
|
|
49
|
-
private buildStagnationVerificationPrompt;
|
|
50
|
-
}
|
|
51
|
-
export {};
|
|
52
|
-
//# sourceMappingURL=flowOrchestrator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowOrchestrator.d.ts","sourceRoot":"","sources":["../../src/runtime/flowOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,UAAU,sBAAsB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAOD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,oBAAoB,CAAK;gBAErB,MAAM,GAAE,OAAO,CAAC,sBAAsB,CAAM;IAIxD,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASnC,qBAAqB,IAAI,OAAO;IAIhC,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY;IAgH9C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAgC7C,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IA4C1D,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,kCAAkC;IAU1C,OAAO,CAAC,iCAAiC;CAS1C"}
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
const DEFAULT_CONFIG = {
|
|
2
|
-
maxNoProgress: 5,
|
|
3
|
-
maxVerificationAttempts: 2,
|
|
4
|
-
};
|
|
5
|
-
export class FlowOrchestrator {
|
|
6
|
-
config;
|
|
7
|
-
initialRequest = '';
|
|
8
|
-
lastResponse = '';
|
|
9
|
-
consecutivePlanOnly = 0;
|
|
10
|
-
consecutiveNoProgress = 0;
|
|
11
|
-
pendingVerification = false;
|
|
12
|
-
verificationAttempts = 0;
|
|
13
|
-
constructor(config = {}) {
|
|
14
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
15
|
-
}
|
|
16
|
-
start(initialRequest) {
|
|
17
|
-
this.initialRequest = initialRequest;
|
|
18
|
-
this.lastResponse = '';
|
|
19
|
-
this.consecutivePlanOnly = 0;
|
|
20
|
-
this.consecutiveNoProgress = 0;
|
|
21
|
-
this.pendingVerification = false;
|
|
22
|
-
this.verificationAttempts = 0;
|
|
23
|
-
}
|
|
24
|
-
isVerificationPending() {
|
|
25
|
-
return this.pendingVerification;
|
|
26
|
-
}
|
|
27
|
-
decide(input) {
|
|
28
|
-
const { iteration, response, toolsUsed, completionAnalysis, verificationConfirmed, } = input;
|
|
29
|
-
const responseChanged = response !== this.lastResponse;
|
|
30
|
-
const planOnly = this.isPlanOnlyResponse(response);
|
|
31
|
-
const hasCompletionMarker = response.includes('TASK_FULLY_COMPLETE');
|
|
32
|
-
const completionContradiction = hasCompletionMarker && this.responseIndicatesIncompleteWork(response);
|
|
33
|
-
// Plan-only response with no tool work: force execution path
|
|
34
|
-
if (planOnly && toolsUsed.length === 0) {
|
|
35
|
-
this.consecutivePlanOnly++;
|
|
36
|
-
return {
|
|
37
|
-
type: 'execute-plan',
|
|
38
|
-
prompt: this.buildPlanExecutionPrompt(response, this.consecutivePlanOnly),
|
|
39
|
-
message: this.consecutivePlanOnly === 1
|
|
40
|
-
? '🛠️ Plan detected; executing it now.'
|
|
41
|
-
: '🔁 Still planning without action; forcing execution.',
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
this.consecutivePlanOnly = 0;
|
|
45
|
-
// Explicit completion marker handling
|
|
46
|
-
if (hasCompletionMarker) {
|
|
47
|
-
if (completionContradiction) {
|
|
48
|
-
this.lastResponse = response;
|
|
49
|
-
return {
|
|
50
|
-
type: 'continue',
|
|
51
|
-
prompt: this.buildCompletionContradictionPrompt(),
|
|
52
|
-
message: '\n⚠️ TASK_FULLY_COMPLETE detected but response indicates incomplete work. Continuing...',
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
type: 'stop',
|
|
57
|
-
message: `\n✅ Task explicitly marked complete after ${iteration} iteration(s).`,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
// Pending verification result
|
|
61
|
-
if (this.pendingVerification) {
|
|
62
|
-
this.pendingVerification = false;
|
|
63
|
-
if (verificationConfirmed) {
|
|
64
|
-
return {
|
|
65
|
-
type: 'stop',
|
|
66
|
-
message: `\n✅ Task completion verified by AI after ${iteration} iteration(s).`,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
this.lastResponse = response;
|
|
70
|
-
return {
|
|
71
|
-
type: 'continue',
|
|
72
|
-
prompt: this.buildDefaultNextPrompt(),
|
|
73
|
-
message: '🔄 Verification indicates more work needed. Continuing...',
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
// High confidence completion without verification
|
|
77
|
-
if (completionAnalysis.isComplete && completionAnalysis.confidence >= 0.85) {
|
|
78
|
-
return {
|
|
79
|
-
type: 'stop',
|
|
80
|
-
message: `\n✅ Task completed with high confidence after ${iteration} iteration(s).\n Reason: ${completionAnalysis.reason}`,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
// Medium confidence - trigger verification
|
|
84
|
-
if (completionAnalysis.shouldVerify && completionAnalysis.verificationPrompt && this.verificationAttempts < this.config.maxVerificationAttempts) {
|
|
85
|
-
this.pendingVerification = true;
|
|
86
|
-
this.verificationAttempts++;
|
|
87
|
-
this.lastResponse = response;
|
|
88
|
-
return {
|
|
89
|
-
type: 'verify',
|
|
90
|
-
prompt: completionAnalysis.verificationPrompt,
|
|
91
|
-
message: `\n🔍 Running verification round (confidence: ${(completionAnalysis.confidence * 100).toFixed(0)}%)...`,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
// No progress detection (same response as previous iterations)
|
|
95
|
-
if (!responseChanged) {
|
|
96
|
-
this.consecutiveNoProgress++;
|
|
97
|
-
if (this.consecutiveNoProgress >= this.config.maxNoProgress) {
|
|
98
|
-
if (this.verificationAttempts < this.config.maxVerificationAttempts) {
|
|
99
|
-
this.pendingVerification = true;
|
|
100
|
-
this.verificationAttempts++;
|
|
101
|
-
this.consecutiveNoProgress = 0;
|
|
102
|
-
this.lastResponse = response;
|
|
103
|
-
return {
|
|
104
|
-
type: 'verify',
|
|
105
|
-
prompt: this.buildStagnationVerificationPrompt(),
|
|
106
|
-
message: `\n⚠️ No progress for ${this.config.maxNoProgress} iterations. Running final verification...`,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
type: 'stagnation-stop',
|
|
111
|
-
message: `\n⚠️ No progress detected for ${this.config.maxNoProgress} iterations and verification exhausted. Stopping.`,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
this.consecutiveNoProgress = 0;
|
|
117
|
-
}
|
|
118
|
-
// Default path: continue iterating with next-step guidance
|
|
119
|
-
this.lastResponse = response;
|
|
120
|
-
return {
|
|
121
|
-
type: 'continue',
|
|
122
|
-
prompt: this.buildDefaultNextPrompt(),
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
isPlanOnlyResponse(response) {
|
|
126
|
-
const normalized = response.trim().toLowerCase();
|
|
127
|
-
if (!normalized) {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
const completionGuards = [
|
|
131
|
-
/\bnothing\s+(left|else)\s+(to\s+do|pending)\b/i,
|
|
132
|
-
/\b(already|now)\s+(clean|complete|done)\b/i,
|
|
133
|
-
/\b(no\s+(junk|issues?|changes?)\s+found)\b/i,
|
|
134
|
-
];
|
|
135
|
-
if (completionGuards.some((pattern) => pattern.test(response))) {
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
const planIndicators = [
|
|
139
|
-
/\bplan\b/i,
|
|
140
|
-
/\bapproach\b/i,
|
|
141
|
-
/\bsteps?:\b/i,
|
|
142
|
-
/\bstep\s+1\b/i,
|
|
143
|
-
/\bstart by\b/i,
|
|
144
|
-
/\bfirst[, ]/i,
|
|
145
|
-
/\bthen\b/i,
|
|
146
|
-
/\bnext\b/i,
|
|
147
|
-
/\bi['’]?\s*will\b/i,
|
|
148
|
-
/\bi['’]?\s*ll\b/i,
|
|
149
|
-
/\bi['’]?\s*can\b.{0,40}\bthen\b/i,
|
|
150
|
-
/\bi['’]?\s*(?:will|ll)\s+begin\b/i,
|
|
151
|
-
];
|
|
152
|
-
return planIndicators.some((pattern) => pattern.test(response));
|
|
153
|
-
}
|
|
154
|
-
responseIndicatesIncompleteWork(response) {
|
|
155
|
-
const incompletePatterns = [
|
|
156
|
-
/hasn'?t\s+been\s+(integrated|implemented|connected|deployed|added|completed|tested|verified)\s*(yet|still)?/i,
|
|
157
|
-
/not\s+(yet\s+)?(integrated|implemented|connected|deployed|functional|working|complete|tested|verified)/i,
|
|
158
|
-
/ready\s+(for|to\s+be)\s+(integration|integrated|connected|deployed|testing|review)/i,
|
|
159
|
-
/needs?\s+to\s+be\s+(integrated|connected|deployed|added|hooked|wired|tested|reviewed|merged)/i,
|
|
160
|
-
/was\s+not\s+(performed|completed|implemented|deployed|integrated|tested)/i,
|
|
161
|
-
/the\s+\w+\s+(service|module|component|feature)\s+hasn'?t\s+been/i,
|
|
162
|
-
/still\s+(stores?|uses?|has|contains?|needs?|requires?|missing|lacks?|broken)/i,
|
|
163
|
-
/\b(partially|mostly|almost|nearly|not\s+fully)\s+(complete|done|finished|implemented|working)/i,
|
|
164
|
-
/\b(only\s+)?(part|some|half|portion)\s+of\s+(the\s+)?(task|work|feature|implementation)/i,
|
|
165
|
-
/\b(should|might|may|could|appears?\s+to)\s+be\s+(complete|done|working|functional)/i,
|
|
166
|
-
/\btheoretically\s+(complete|done|working|functional)/i,
|
|
167
|
-
/\b(assuming|provided|if)\s+(everything|it|this|that)\s+(works?|is\s+correct)/i,
|
|
168
|
-
/\b(done|complete|finished)\s+(but|except|however|although|though)/i,
|
|
169
|
-
/however[,\s].{0,50}?(hasn'?t|not\s+yet|still\s+needs?|pending|remains?|missing|broken|failing)/i,
|
|
170
|
-
/\bbut\s+.{0,30}?(not|hasn'?t|won'?t|can'?t|doesn'?t|isn'?t|wasn'?t)/i,
|
|
171
|
-
/will\s+(need\s+to|require|have\s+to)\s+(integrate|connect|deploy|complete|implement|test|fix)/i,
|
|
172
|
-
/\b(left\s+as|deferred|postponed|out\s+of\s+scope|for\s+later|in\s+a\s+future)/i,
|
|
173
|
-
/\b(after\s+(restart|reboot|redeploy)|takes?\s+effect\s+after|once\s+you)/i,
|
|
174
|
-
/\b(remaining|outstanding|pending|leftover)\s+(tasks?|items?|work|issues?|steps?)/i,
|
|
175
|
-
/\b(more\s+to\s+do|still\s+have\s+to|yet\s+to\s+be\s+done)/i,
|
|
176
|
-
/\b(blocker|blocked\s+by|waiting\s+(for|on)|depends?\s+on)/i,
|
|
177
|
-
/\b(failing|broken|erroring)\s+(tests?|builds?|checks?|validations?)/i,
|
|
178
|
-
/\btests?\s+(are\s+)?(still\s+)?failing/i,
|
|
179
|
-
/\b(errors?|warnings?|issues?)\s+to\s+(address|fix|resolve)/i,
|
|
180
|
-
/\b(doesn'?t|isn'?t|not)\s+(work|working|functional|functioning)/i,
|
|
181
|
-
/\b(you('ll|\s+will)\s+need\s+to|manually\s+(run|configure|set|update)|requires?\s+user)/i,
|
|
182
|
-
/\b(run\s+this|execute\s+the\s+following|apply\s+the\s+migration)/i,
|
|
183
|
-
/\b(todo|fixme|hack|xxx):\s/i,
|
|
184
|
-
/\b(need\s+to|should|must)\s+(add|implement|create|write|build|fix)\b/i,
|
|
185
|
-
/\b(didn'?t|did\s+not)\s+have\s+(time|chance|opportunity)/i,
|
|
186
|
-
/\b(beyond|outside)\s+(the\s+)?scope/i,
|
|
187
|
-
/\b(for\s+now|at\s+this\s+point|currently)\s*.{0,20}?(not|without|lacks?|missing)/i,
|
|
188
|
-
];
|
|
189
|
-
for (const pattern of incompletePatterns) {
|
|
190
|
-
if (pattern.test(response)) {
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
buildPlanExecutionPrompt(plan, attempt) {
|
|
197
|
-
const header = attempt > 1
|
|
198
|
-
? 'You have repeated the plan without executing it. Move to execution now.'
|
|
199
|
-
: 'You proposed a plan. Execute it now without re-planning.';
|
|
200
|
-
return `${header}
|
|
201
|
-
|
|
202
|
-
Execute the steps with tools immediately:
|
|
203
|
-
- Update plan status via the UpdatePlan tool (mark steps in_progress/completed).
|
|
204
|
-
- Read/edit/run commands as needed; take multiple actions per turn.
|
|
205
|
-
- Keep going until the original request is fully done, then respond with TASK_FULLY_COMPLETE.
|
|
206
|
-
|
|
207
|
-
Original request:
|
|
208
|
-
${this.initialRequest}
|
|
209
|
-
|
|
210
|
-
Plan to execute:
|
|
211
|
-
${plan}`.trim();
|
|
212
|
-
}
|
|
213
|
-
buildDefaultNextPrompt() {
|
|
214
|
-
return `Continue with the next step. Remember:
|
|
215
|
-
- Use bash to run git commands (git status, git add, git commit, git push)
|
|
216
|
-
- Commit your changes with descriptive messages after completing improvements
|
|
217
|
-
- Push changes when a logical milestone is reached
|
|
218
|
-
- If all tasks are complete, respond with exactly: "TASK_FULLY_COMPLETE"
|
|
219
|
-
- If there are errors or blockers, explain what's preventing progress
|
|
220
|
-
|
|
221
|
-
What's the next action?`;
|
|
222
|
-
}
|
|
223
|
-
buildCompletionContradictionPrompt() {
|
|
224
|
-
return `You marked the task as TASK_FULLY_COMPLETE but also indicated that work is still pending or not integrated. Please clarify:
|
|
225
|
-
|
|
226
|
-
1. Is ALL the originally requested work actually complete and functional?
|
|
227
|
-
2. If there are parts that are "ready but not integrated" or "implemented but not connected", those are NOT complete.
|
|
228
|
-
3. Only say TASK_FULLY_COMPLETE when the user's original request is 100% fulfilled.
|
|
229
|
-
|
|
230
|
-
What remains to be done? Continue with the next step.`;
|
|
231
|
-
}
|
|
232
|
-
buildStagnationVerificationPrompt() {
|
|
233
|
-
return `I notice you may be stuck or finished. Please confirm:
|
|
234
|
-
|
|
235
|
-
1. Is the original task FULLY complete?
|
|
236
|
-
2. If yes, respond with exactly: "TASK_FULLY_COMPLETE"
|
|
237
|
-
3. If no, what specific action should be taken next?
|
|
238
|
-
|
|
239
|
-
Be explicit about the current state.`;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
//# sourceMappingURL=flowOrchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowOrchestrator.js","sourceRoot":"","sources":["../../src/runtime/flowOrchestrator.ts"],"names":[],"mappings":"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"}
|