erosolar-cli 2.1.195 → 2.1.197
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/README.md +14 -0
- package/dist/contracts/agent-schemas.json +0 -21
- package/dist/contracts/tools.schema.json +0 -16
- package/dist/core/agentOrchestrator.d.ts +20 -18
- package/dist/core/agentOrchestrator.d.ts.map +1 -1
- package/dist/core/agentOrchestrator.js +154 -181
- package/dist/core/agentOrchestrator.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -4
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +0 -8
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +53 -285
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +7 -1
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/package.json +1 -1
- package/agents/erosolar-security.rules.json +0 -147
- package/dist/capabilities/offsecOpsCapability.d.ts +0 -6
- package/dist/capabilities/offsecOpsCapability.d.ts.map +0 -1
- package/dist/capabilities/offsecOpsCapability.js +0 -19
- package/dist/capabilities/offsecOpsCapability.js.map +0 -1
- package/dist/capabilities/offsecSearchCapability.d.ts +0 -12
- package/dist/capabilities/offsecSearchCapability.d.ts.map +0 -1
- package/dist/capabilities/offsecSearchCapability.js +0 -27
- package/dist/capabilities/offsecSearchCapability.js.map +0 -1
- package/dist/core/offsecAlphaZero.d.ts +0 -59
- package/dist/core/offsecAlphaZero.d.ts.map +0 -1
- package/dist/core/offsecAlphaZero.js +0 -556
- package/dist/core/offsecAlphaZero.js.map +0 -1
- package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +0 -3
- package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/offsec/offsecOpsPlugin.js +0 -10
- package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +0 -1
- package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +0 -3
- package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/offsec/offsecSearchPlugin.js +0 -12
- package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +0 -1
- package/dist/tools/offsec/offsecOperationsTools.d.ts +0 -3
- package/dist/tools/offsec/offsecOperationsTools.d.ts.map +0 -1
- package/dist/tools/offsec/offsecOperationsTools.js +0 -333
- package/dist/tools/offsec/offsecOperationsTools.js.map +0 -1
- package/dist/tools/offsecSearchTools.d.ts +0 -3
- package/dist/tools/offsecSearchTools.d.ts.map +0 -1
- package/dist/tools/offsecSearchTools.js +0 -330
- package/dist/tools/offsecSearchTools.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Erosolar Planning
|
|
2
|
+
|
|
3
|
+
This workspace hosts development and integration tests for the Erosolar CLI agent. It mirrors the main CLI codebase but is used for local planning, orchestration hardening, and reliability fixes.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
- Install dependencies: `npm install`
|
|
7
|
+
- Build: `npm run build`
|
|
8
|
+
- Run tests: `npm test`
|
|
9
|
+
- Lint: `npm run lint`
|
|
10
|
+
|
|
11
|
+
## Running the CLI
|
|
12
|
+
- After building, start the interactive shell with `npm run start` or `erosolar`.
|
|
13
|
+
- Use `erosolar --eval "prompt"` for non-interactive text mode.
|
|
14
|
+
- Use `erosolar --json --provider <p> --model <m> --prompt "..."` for headless JSON output.
|
|
@@ -285,27 +285,6 @@
|
|
|
285
285
|
"primaryUseCase": "coding",
|
|
286
286
|
"tags": ["coding", "deterministic", "rapid-edits"]
|
|
287
287
|
}
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
"name": "erosolar-security",
|
|
291
|
-
"label": "Erosolar Security",
|
|
292
|
-
"description": "Security-focused operator for adversarial planning and assessments in controlled environments.",
|
|
293
|
-
"defaultProvider": "openai",
|
|
294
|
-
"defaultModel": "gpt-5.1",
|
|
295
|
-
"temperature": 0.1,
|
|
296
|
-
"systemPrompt": {
|
|
297
|
-
"type": "rulebook"
|
|
298
|
-
},
|
|
299
|
-
"rulebook": {
|
|
300
|
-
"file": "agents/erosolar-security.rules.json",
|
|
301
|
-
"version": "2024-11-24",
|
|
302
|
-
"contractVersion": "1.0.0",
|
|
303
|
-
"description": "Security-focused guardrails and operational constraints."
|
|
304
|
-
},
|
|
305
|
-
"metadata": {
|
|
306
|
-
"primaryUseCase": "security",
|
|
307
|
-
"tags": ["security", "offsec", "assessment"]
|
|
308
|
-
}
|
|
309
288
|
}
|
|
310
289
|
],
|
|
311
290
|
|
|
@@ -29,22 +29,6 @@
|
|
|
29
29
|
"restartRequired": true
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
|
-
{
|
|
33
|
-
"id": "offensive-security",
|
|
34
|
-
"label": "Offensive Security Tools",
|
|
35
|
-
"description": "Comprehensive penetration testing and security assessment tools (network recon, web testing, exploitation, password cracking, payload generation). No preconditions required.",
|
|
36
|
-
"defaultEnabled": true,
|
|
37
|
-
"category": "security",
|
|
38
|
-
"pluginIds": [
|
|
39
|
-
"tool.offsec.exploit-search",
|
|
40
|
-
"tool.offsec.operations",
|
|
41
|
-
"tool.tao"
|
|
42
|
-
],
|
|
43
|
-
"metadata": {
|
|
44
|
-
"locked": false,
|
|
45
|
-
"restartRequired": false
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
32
|
{
|
|
49
33
|
"id": "development-tools",
|
|
50
34
|
"label": "Software Development Tools",
|
|
@@ -1,49 +1,51 @@
|
|
|
1
1
|
import { AgentRuntime } from './agent.js';
|
|
2
2
|
import { type CompletionAnalysis } from './taskCompletionDetector.js';
|
|
3
|
-
export type OrchestratorExitReason = 'complete' | '
|
|
3
|
+
export type OrchestratorExitReason = 'complete' | 'verification-needed' | 'no-action' | 'empty-response' | 'blocked' | 'incomplete';
|
|
4
4
|
export interface OrchestratorOptions {
|
|
5
|
-
/** Maximum number of passes to attempt before giving up */
|
|
6
|
-
maxPasses?: number;
|
|
7
5
|
/** Whether to stream provider responses */
|
|
8
6
|
streaming?: boolean;
|
|
9
7
|
/** Require observable action (tool usage or action language) before stopping */
|
|
10
8
|
enforceActions?: boolean;
|
|
11
|
-
/** Maximum number of consecutive low-progress passes before forcing a reset */
|
|
12
|
-
maxStagnantPasses?: number;
|
|
13
9
|
/** Whether to inject a verification check before declaring completion */
|
|
14
10
|
verificationMode?: 'auto' | 'disabled';
|
|
11
|
+
/** Append single-pass execution guidance to the user request */
|
|
12
|
+
singlePassFocus?: boolean;
|
|
15
13
|
}
|
|
16
|
-
export interface
|
|
17
|
-
|
|
14
|
+
export interface OrchestratorResult {
|
|
15
|
+
finalResponse: string;
|
|
18
16
|
toolsUsed: string[];
|
|
19
17
|
planOnly: boolean;
|
|
20
18
|
tookAction: boolean;
|
|
21
19
|
completion: CompletionAnalysis;
|
|
22
|
-
followUpPrompt?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface OrchestratorResult {
|
|
25
|
-
finalResponse: string;
|
|
26
|
-
passes: OrchestratorPass[];
|
|
27
20
|
exitReason: OrchestratorExitReason;
|
|
21
|
+
statusSummary: string;
|
|
22
|
+
limitations: string[];
|
|
23
|
+
recommendations: string[];
|
|
28
24
|
}
|
|
29
25
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
26
|
+
* Single-pass orchestration: drive the agent to finish as much as possible
|
|
27
|
+
* in one go, with strong bias toward real actions over planning.
|
|
32
28
|
*/
|
|
33
29
|
export declare class AgentOrchestrator {
|
|
34
30
|
private readonly agent;
|
|
35
31
|
constructor(agent: AgentRuntime);
|
|
36
32
|
runToCompletion(request: string, options?: OrchestratorOptions): Promise<OrchestratorResult>;
|
|
33
|
+
private resolveExitReason;
|
|
34
|
+
private buildStatusSummary;
|
|
35
|
+
private buildSinglePassPrompt;
|
|
37
36
|
private analyzeResponse;
|
|
38
37
|
private isPlanOnly;
|
|
39
38
|
private hasExplicitCompletion;
|
|
40
39
|
private hasCompletionContradiction;
|
|
41
40
|
private hasActionLanguage;
|
|
42
|
-
private isLoopWarning;
|
|
43
|
-
private wordCount;
|
|
44
|
-
private buildFollowUp;
|
|
45
|
-
private buildVerificationPrompt;
|
|
46
41
|
private hasContinuingSignal;
|
|
47
42
|
private isBlockedResponse;
|
|
43
|
+
private wordCount;
|
|
44
|
+
/**
|
|
45
|
+
* Detects when a response is sufficiently detailed to stand on its own,
|
|
46
|
+
* avoiding false "incomplete" flags for thorough answers without explicit
|
|
47
|
+
* completion markers.
|
|
48
|
+
*/
|
|
49
|
+
private hasSubstantiveAnswer;
|
|
48
50
|
}
|
|
49
51
|
//# sourceMappingURL=agentOrchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/agentOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE9F,MAAM,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"agentOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/agentOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE9F,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,qBAAqB,GACrB,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,YAAY,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACvC,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,EAAE,sBAAsB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY;IAIzB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqClG,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,kBAAkB;IAmF1B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,SAAS;IAKjB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAmB7B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TaskCompletionDetector } from './taskCompletionDetector.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Single-pass orchestration: drive the agent to finish as much as possible
|
|
4
|
+
* in one go, with strong bias toward real actions over planning.
|
|
5
5
|
*/
|
|
6
6
|
export class AgentOrchestrator {
|
|
7
7
|
agent;
|
|
@@ -9,99 +9,132 @@ export class AgentOrchestrator {
|
|
|
9
9
|
this.agent = agent;
|
|
10
10
|
}
|
|
11
11
|
async runToCompletion(request, options) {
|
|
12
|
-
const maxPasses = options?.maxPasses ?? 8;
|
|
13
12
|
const streaming = options?.streaming ?? true;
|
|
14
13
|
const enforceActions = options?.enforceActions ?? true;
|
|
15
|
-
const maxStagnantPasses = options?.maxStagnantPasses ?? 3;
|
|
16
14
|
const verificationMode = options?.verificationMode ?? 'auto';
|
|
17
|
-
const
|
|
15
|
+
const singlePassFocus = options?.singlePassFocus ?? true;
|
|
18
16
|
const completionDetector = new TaskCompletionDetector();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
17
|
+
const prompt = singlePassFocus ? this.buildSinglePassPrompt(request, enforceActions) : request.trim();
|
|
18
|
+
const response = (await this.agent.send(prompt, streaming)).trim();
|
|
19
|
+
const toolExecutions = this.agent.drainToolExecutions();
|
|
20
|
+
toolExecutions.forEach(exec => completionDetector.recordToolCall(exec.name, exec.success, exec.hasOutput));
|
|
21
|
+
const toolsUsed = toolExecutions.filter(exec => exec.success).map(exec => exec.name);
|
|
22
|
+
const completion = completionDetector.analyzeCompletion(response, toolsUsed);
|
|
23
|
+
const analysis = this.analyzeResponse(response, toolsUsed, enforceActions);
|
|
24
|
+
const exitReason = this.resolveExitReason(analysis, completion, enforceActions, verificationMode);
|
|
25
|
+
const { summary, limitations, recommendations } = this.buildStatusSummary(request, response, analysis, completion, toolsUsed, exitReason);
|
|
26
|
+
return {
|
|
27
|
+
finalResponse: response,
|
|
28
|
+
toolsUsed,
|
|
29
|
+
planOnly: analysis.planOnly,
|
|
30
|
+
tookAction: analysis.tookAction,
|
|
31
|
+
completion,
|
|
32
|
+
exitReason,
|
|
33
|
+
statusSummary: summary,
|
|
34
|
+
limitations,
|
|
35
|
+
recommendations,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
resolveExitReason(analysis, completion, enforceActions, verificationMode) {
|
|
39
|
+
if (analysis.empty) {
|
|
40
|
+
return 'empty-response';
|
|
41
|
+
}
|
|
42
|
+
if (analysis.blocked) {
|
|
43
|
+
return 'blocked';
|
|
44
|
+
}
|
|
45
|
+
if (enforceActions && !analysis.tookAction) {
|
|
46
|
+
return 'no-action';
|
|
47
|
+
}
|
|
48
|
+
if (verificationMode === 'auto' && completion.shouldVerify) {
|
|
49
|
+
return 'verification-needed';
|
|
50
|
+
}
|
|
51
|
+
if (analysis.readyToStop || completion.isComplete) {
|
|
52
|
+
return 'complete';
|
|
53
|
+
}
|
|
54
|
+
return 'incomplete';
|
|
55
|
+
}
|
|
56
|
+
buildStatusSummary(request, response, analysis, completion, toolsUsed, exitReason) {
|
|
57
|
+
const limitations = [
|
|
58
|
+
'Single-pass orchestration: no follow-up rounds were executed.',
|
|
59
|
+
'Evidence is limited to the tools invoked during this pass.',
|
|
60
|
+
];
|
|
61
|
+
if (analysis.planOnly) {
|
|
62
|
+
limitations.push(toolsUsed.length === 0
|
|
63
|
+
? 'The response was plan-only; no concrete tool actions were observed.'
|
|
64
|
+
: 'The response read like planning despite using tools; ensure evidence-backed actions.');
|
|
65
|
+
}
|
|
66
|
+
if (toolsUsed.length === 0) {
|
|
67
|
+
limitations.push('No tools executed, so no command output or file evidence is available.');
|
|
68
|
+
}
|
|
69
|
+
if (completion.shouldVerify) {
|
|
70
|
+
limitations.push('Verification recommended by completion detector; a secondary check was not performed.');
|
|
71
|
+
}
|
|
72
|
+
const recommendations = ['Consider running focused checks/tests to validate the outcome.'];
|
|
73
|
+
if (completion.shouldVerify) {
|
|
74
|
+
recommendations.push('Run targeted verification steps or tests to validate the claims.');
|
|
75
|
+
}
|
|
76
|
+
switch (exitReason) {
|
|
77
|
+
case 'no-action':
|
|
78
|
+
recommendations.push('Execute concrete actions (read/search/edit/test) and capture outputs.');
|
|
43
79
|
break;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
exitReason = 'empty-response';
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
consecutiveLowProgress++;
|
|
59
|
-
const followUp = this.buildFollowUp(request, response, toolsUsed, 'empty', consecutiveLowProgress);
|
|
60
|
-
passRecord.followUpPrompt = followUp;
|
|
61
|
-
prompt = followUp;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
const lowProgress = !tookAction || analysis.planOnly || loopDetected;
|
|
65
|
-
consecutiveLowProgress = lowProgress ? consecutiveLowProgress + 1 : 0;
|
|
66
|
-
if (consecutiveLowProgress >= maxStagnantPasses) {
|
|
67
|
-
if (pass === maxPasses - 1) {
|
|
68
|
-
exitReason = 'stalled';
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
const followUp = this.buildFollowUp(request, response, toolsUsed, 'stalled', consecutiveLowProgress);
|
|
72
|
-
passRecord.followUpPrompt = followUp;
|
|
73
|
-
prompt = followUp;
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (pass === maxPasses - 1) {
|
|
77
|
-
exitReason = 'max-passes';
|
|
80
|
+
case 'blocked':
|
|
81
|
+
recommendations.push('Unblock missing credentials/permissions and retry with tool actions.');
|
|
82
|
+
break;
|
|
83
|
+
case 'incomplete':
|
|
84
|
+
recommendations.push('Continue work with tool usage to gather evidence and close gaps.');
|
|
85
|
+
break;
|
|
86
|
+
case 'empty-response':
|
|
87
|
+
recommendations.push('Re-run with a concrete action or ask a focused follow-up question.');
|
|
88
|
+
break;
|
|
89
|
+
case 'complete':
|
|
90
|
+
default:
|
|
78
91
|
break;
|
|
79
|
-
}
|
|
80
|
-
const followUp = this.buildFollowUp(request, response, toolsUsed, loopDetected ? 'stalled' : analysis.reason, consecutiveLowProgress);
|
|
81
|
-
passRecord.followUpPrompt = followUp;
|
|
82
|
-
prompt = followUp;
|
|
83
92
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
const evidenceLine = toolsUsed.length
|
|
94
|
+
? `Tools used: ${toolsUsed.join(', ')}.`
|
|
95
|
+
: 'No tools used.';
|
|
96
|
+
const reasonLine = (() => {
|
|
97
|
+
switch (exitReason) {
|
|
98
|
+
case 'complete':
|
|
99
|
+
return completion.shouldVerify
|
|
100
|
+
? 'Model claims completion but suggested verification.'
|
|
101
|
+
: 'Model signaled completion.';
|
|
102
|
+
case 'verification-needed':
|
|
103
|
+
return 'Model requested verification before declaring completion.';
|
|
104
|
+
case 'no-action':
|
|
105
|
+
return 'No concrete actions detected; likely plan-only.';
|
|
106
|
+
case 'empty-response':
|
|
107
|
+
return 'Received an empty response.';
|
|
108
|
+
case 'blocked':
|
|
109
|
+
return 'Model indicated it is blocked or missing prerequisites.';
|
|
110
|
+
case 'incomplete':
|
|
111
|
+
default:
|
|
112
|
+
return 'Single-pass did not reach a confident completion signal.';
|
|
95
113
|
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
114
|
+
})();
|
|
115
|
+
const summary = [
|
|
116
|
+
`Request: ${request.trim()}`,
|
|
117
|
+
`Exit: ${exitReason}`,
|
|
118
|
+
reasonLine,
|
|
119
|
+
evidenceLine,
|
|
120
|
+
].join(' | ');
|
|
121
|
+
return { summary, limitations, recommendations };
|
|
122
|
+
}
|
|
123
|
+
buildSinglePassPrompt(originalRequest, enforceActions) {
|
|
124
|
+
const actionLine = enforceActions
|
|
125
|
+
? '- Take concrete actions with available tools (list_files/glob/search/read/bash/edit/git); do not stop at planning.'
|
|
126
|
+
: '- Provide the strongest single response you can.';
|
|
127
|
+
return `${originalRequest.trim()}
|
|
128
|
+
|
|
129
|
+
Single-pass orchestration:
|
|
130
|
+
${actionLine}
|
|
131
|
+
- Do not defer work or ask to continue; finish as much as possible now.
|
|
132
|
+
- Show command outputs and file changes as evidence.
|
|
133
|
+
- Reply with TASK_FULLY_COMPLETE only when everything is actually done.`;
|
|
102
134
|
}
|
|
103
135
|
analyzeResponse(response, toolsUsed, enforceActions) {
|
|
104
136
|
const trimmed = response.trim();
|
|
137
|
+
const wordCount = this.wordCount(trimmed);
|
|
105
138
|
const empty = trimmed.length === 0;
|
|
106
139
|
const planOnly = this.isPlanOnly(trimmed);
|
|
107
140
|
const tookAction = toolsUsed.length > 0 || this.hasActionLanguage(trimmed);
|
|
@@ -109,40 +142,26 @@ export class AgentOrchestrator {
|
|
|
109
142
|
const completionContradiction = this.hasCompletionContradiction(trimmed);
|
|
110
143
|
const continuing = this.hasContinuingSignal(trimmed);
|
|
111
144
|
const blocked = this.isBlockedResponse(trimmed);
|
|
112
|
-
const tooLight =
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
145
|
+
const tooLight = wordCount < 80;
|
|
146
|
+
const substantiveAnswer = this.hasSubstantiveAnswer(trimmed, {
|
|
147
|
+
planOnly,
|
|
148
|
+
tookAction,
|
|
149
|
+
continuing,
|
|
150
|
+
blocked,
|
|
151
|
+
completionContradiction,
|
|
152
|
+
wordCount,
|
|
153
|
+
});
|
|
154
|
+
const readyToStop = (hasCompletionMarker &&
|
|
121
155
|
!completionContradiction &&
|
|
122
156
|
!continuing &&
|
|
123
|
-
(!enforceActions || tookAction || !tooLight)
|
|
124
|
-
|
|
125
|
-
if (blocked)
|
|
126
|
-
return 'blocked';
|
|
127
|
-
if (completionContradiction)
|
|
128
|
-
return 'contradiction';
|
|
129
|
-
if (continuing)
|
|
130
|
-
return 'continuing';
|
|
131
|
-
if (planOnly)
|
|
132
|
-
return 'plan-only';
|
|
133
|
-
if (empty)
|
|
134
|
-
return 'empty';
|
|
135
|
-
if (lacksEvidence)
|
|
136
|
-
return 'no-action';
|
|
137
|
-
return 'keep-going';
|
|
138
|
-
})();
|
|
157
|
+
(!enforceActions || tookAction || !tooLight)) ||
|
|
158
|
+
substantiveAnswer;
|
|
139
159
|
return {
|
|
140
160
|
empty,
|
|
141
161
|
planOnly,
|
|
142
162
|
tookAction,
|
|
143
|
-
needsMoreWork,
|
|
144
163
|
readyToStop,
|
|
145
|
-
|
|
164
|
+
blocked,
|
|
146
165
|
};
|
|
147
166
|
}
|
|
148
167
|
isPlanOnly(response) {
|
|
@@ -155,8 +174,8 @@ export class AgentOrchestrator {
|
|
|
155
174
|
/\bstep\s+1\b/i,
|
|
156
175
|
/\bstart by\b/i,
|
|
157
176
|
/\bfirst[, ]/i,
|
|
158
|
-
/\bthen\b/i,
|
|
159
|
-
/\bnext\b/i,
|
|
177
|
+
/\bthen\s+(?:we|i|run|do|take|handle|address|implement|fix)\b/i,
|
|
178
|
+
/\bnext\s+(?:we|i|up)\b/i,
|
|
160
179
|
/\bwe\s+will\b/i,
|
|
161
180
|
/\bi['\u2019]?ll\b/i,
|
|
162
181
|
/\bi\s+will\b/i,
|
|
@@ -218,73 +237,6 @@ export class AgentOrchestrator {
|
|
|
218
237
|
];
|
|
219
238
|
return actionPatterns.some((pattern) => pattern.test(response));
|
|
220
239
|
}
|
|
221
|
-
isLoopWarning(response) {
|
|
222
|
-
if (!response.trim())
|
|
223
|
-
return false;
|
|
224
|
-
const lower = response.toLowerCase();
|
|
225
|
-
return lower.includes('behavioral loop detected') || lower.includes('tool loop detected');
|
|
226
|
-
}
|
|
227
|
-
wordCount(text) {
|
|
228
|
-
if (!text.trim())
|
|
229
|
-
return 0;
|
|
230
|
-
return text.trim().split(/\s+/).length;
|
|
231
|
-
}
|
|
232
|
-
buildFollowUp(originalRequest, lastResponse, toolsUsed, reason, nudgeLevel) {
|
|
233
|
-
const toolLine = toolsUsed.length
|
|
234
|
-
? `Tools already used: ${toolsUsed.join(', ')}. Keep using tools for the next actions.`
|
|
235
|
-
: 'No tools were used yet. Start with a quick workspace scan (list_files + glob/grep/search) and then run bash/edit/read/git tools to actually perform work.';
|
|
236
|
-
const focus = (() => {
|
|
237
|
-
switch (reason) {
|
|
238
|
-
case 'plan-only':
|
|
239
|
-
return 'Stop repeating the plan. Execute the steps you described.';
|
|
240
|
-
case 'no-action':
|
|
241
|
-
return 'You have not shown any concrete work yet. Take an immediate, visible action.';
|
|
242
|
-
case 'stalled':
|
|
243
|
-
return 'You appear stuck or repeating yourself. Switch tools or choose a different approach and make a concrete change.';
|
|
244
|
-
case 'empty':
|
|
245
|
-
return 'Your last reply was empty. Resume the task and perform actions now.';
|
|
246
|
-
case 'blocked':
|
|
247
|
-
return 'You indicated you are blocked. Ask for the exact info you need and proceed with everything you can do now.';
|
|
248
|
-
case 'contradiction':
|
|
249
|
-
return 'Your message mentions remaining work. Resolve the items before claiming completion.';
|
|
250
|
-
case 'continuing':
|
|
251
|
-
return 'You are still narrating future intent. Execute a specific action and show its result.';
|
|
252
|
-
case 'keep-going':
|
|
253
|
-
default:
|
|
254
|
-
return 'Continue executing until the request is fully completed.';
|
|
255
|
-
}
|
|
256
|
-
})();
|
|
257
|
-
const lastSnippet = lastResponse.trim()
|
|
258
|
-
? `Your last response:\n${lastResponse.trim().slice(0, 800)}`
|
|
259
|
-
: 'No previous response was returned.';
|
|
260
|
-
const urgency = nudgeLevel > 1
|
|
261
|
-
? 'Pick one concrete command (e.g., read a file, run tests, apply an edit) and show the output before summarizing.'
|
|
262
|
-
: 'Take the next concrete action and show the output before moving on.';
|
|
263
|
-
return `${originalRequest}
|
|
264
|
-
|
|
265
|
-
${focus}
|
|
266
|
-
${toolLine}
|
|
267
|
-
${lastSnippet}
|
|
268
|
-
|
|
269
|
-
- Use tools to inspect and modify the workspace as needed.
|
|
270
|
-
- Run a quick repo scan (list_files, glob/grep/search) to gather evidence across the codebase before deciding you are done.
|
|
271
|
-
- ${urgency}
|
|
272
|
-
- Report concrete changes and progress after each action; include command outputs and file updates.
|
|
273
|
-
- If you truly need information, ask one concise question and then keep working with what you can verify.
|
|
274
|
-
- Reply with TASK_FULLY_COMPLETE only when the entire request is actually finished (no TODOs or pending work).`;
|
|
275
|
-
}
|
|
276
|
-
buildVerificationPrompt(originalRequest, verificationPrompt, toolsUsed) {
|
|
277
|
-
const toolLine = toolsUsed.length
|
|
278
|
-
? `Recent tools: ${toolsUsed.join(', ')}.`
|
|
279
|
-
: 'No tools have been used yet; take concrete actions if anything remains.';
|
|
280
|
-
return `${verificationPrompt.trim()}
|
|
281
|
-
|
|
282
|
-
Original request: ${originalRequest.trim()}
|
|
283
|
-
|
|
284
|
-
${toolLine}
|
|
285
|
-
- If anything is still outstanding, continue executing work instead of repeating plans.
|
|
286
|
-
- Keep using tools to gather evidence and finish the task before claiming completion.`;
|
|
287
|
-
}
|
|
288
240
|
hasContinuingSignal(response) {
|
|
289
241
|
if (!response.trim())
|
|
290
242
|
return false;
|
|
@@ -304,10 +256,31 @@ ${toolLine}
|
|
|
304
256
|
/\bneed(s)?\s+(more\s+)?(info|information|details|clarification)\b/i,
|
|
305
257
|
/\bmissing\s+(api\s*key|credentials?|access|permission|token)\b/i,
|
|
306
258
|
/\b(no|not)\s+authorized\b/i,
|
|
307
|
-
/\
|
|
259
|
+
/\b(i['\u2019]?m|i am|currently|still)\s+blocked\b/i,
|
|
260
|
+
/\bblocked\s+(on|by|due to|because of)\b/i,
|
|
261
|
+
/\bblocked\b.{0,40}\b(access|permission|token|credential|quota|limit)\b/i,
|
|
308
262
|
/\bcannot\s+(proceed|continue|start|run|access)\b/i,
|
|
309
263
|
];
|
|
310
264
|
return patterns.some((pattern) => pattern.test(response));
|
|
311
265
|
}
|
|
266
|
+
wordCount(text) {
|
|
267
|
+
if (!text.trim())
|
|
268
|
+
return 0;
|
|
269
|
+
return text.trim().split(/\s+/).length;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Detects when a response is sufficiently detailed to stand on its own,
|
|
273
|
+
* avoiding false "incomplete" flags for thorough answers without explicit
|
|
274
|
+
* completion markers.
|
|
275
|
+
*/
|
|
276
|
+
hasSubstantiveAnswer(response, options) {
|
|
277
|
+
if (!response.trim())
|
|
278
|
+
return false;
|
|
279
|
+
if (options.planOnly || options.continuing || options.blocked || options.completionContradiction) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
const threshold = options.tookAction ? 80 : 120;
|
|
283
|
+
return options.wordCount >= threshold;
|
|
284
|
+
}
|
|
312
285
|
}
|
|
313
286
|
//# sourceMappingURL=agentOrchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentOrchestrator.js","sourceRoot":"","sources":["../../src/core/agentOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAA2B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"agentOrchestrator.js","sourceRoot":"","sources":["../../src/core/agentOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeDefaults.d.ts","sourceRoot":"","sources":["../../../src/plugins/tools/nodeDefaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nodeDefaults.d.ts","sourceRoot":"","sources":["../../../src/plugins/tools/nodeDefaults.ts"],"names":[],"mappings":"AAmCA,wBAAgB,8BAA8B,IAAI,IAAI,CAsCrD"}
|
|
@@ -29,8 +29,6 @@ import { createValidationToolPlugin } from './validation/validationPlugin.js';
|
|
|
29
29
|
import { createEnhancedAnalysisToolPlugin } from './enhancedAnalysis/enhancedAnalysisPlugin.js';
|
|
30
30
|
import { createEnhancedCodeIntelligenceToolPlugin } from './enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js';
|
|
31
31
|
import { createEnhancedDevWorkflowToolPlugin } from './enhancedDevWorkflow/enhancedDevWorkflowPlugin.js';
|
|
32
|
-
import { createOffsecSearchToolPlugin } from './offsec/offsecSearchPlugin.js';
|
|
33
|
-
import { createOffsecOperationsToolPlugin } from './offsec/offsecOpsPlugin.js';
|
|
34
32
|
import { createTAOToolPlugin } from './tao/taoPlugin.js';
|
|
35
33
|
let registered = false;
|
|
36
34
|
export function registerDefaultNodeToolPlugins() {
|
|
@@ -67,8 +65,6 @@ export function registerDefaultNodeToolPlugins() {
|
|
|
67
65
|
registerToolPlugin(createEnhancedAnalysisToolPlugin());
|
|
68
66
|
registerToolPlugin(createEnhancedCodeIntelligenceToolPlugin());
|
|
69
67
|
registerToolPlugin(createEnhancedDevWorkflowToolPlugin());
|
|
70
|
-
registerToolPlugin(createOffsecSearchToolPlugin());
|
|
71
|
-
registerToolPlugin(createOffsecOperationsToolPlugin());
|
|
72
68
|
registerToolPlugin(createTAOToolPlugin());
|
|
73
69
|
registered = true;
|
|
74
70
|
}
|