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.
Files changed (48) hide show
  1. package/README.md +14 -0
  2. package/dist/contracts/agent-schemas.json +0 -21
  3. package/dist/contracts/tools.schema.json +0 -16
  4. package/dist/core/agentOrchestrator.d.ts +20 -18
  5. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  6. package/dist/core/agentOrchestrator.js +154 -181
  7. package/dist/core/agentOrchestrator.js.map +1 -1
  8. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  9. package/dist/plugins/tools/nodeDefaults.js +0 -4
  10. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  11. package/dist/shell/interactiveShell.d.ts +0 -8
  12. package/dist/shell/interactiveShell.d.ts.map +1 -1
  13. package/dist/shell/interactiveShell.js +53 -285
  14. package/dist/shell/interactiveShell.js.map +1 -1
  15. package/dist/ui/UnifiedUIRenderer.d.ts +1 -0
  16. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  17. package/dist/ui/UnifiedUIRenderer.js +7 -1
  18. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  19. package/package.json +1 -1
  20. package/agents/erosolar-security.rules.json +0 -147
  21. package/dist/capabilities/offsecOpsCapability.d.ts +0 -6
  22. package/dist/capabilities/offsecOpsCapability.d.ts.map +0 -1
  23. package/dist/capabilities/offsecOpsCapability.js +0 -19
  24. package/dist/capabilities/offsecOpsCapability.js.map +0 -1
  25. package/dist/capabilities/offsecSearchCapability.d.ts +0 -12
  26. package/dist/capabilities/offsecSearchCapability.d.ts.map +0 -1
  27. package/dist/capabilities/offsecSearchCapability.js +0 -27
  28. package/dist/capabilities/offsecSearchCapability.js.map +0 -1
  29. package/dist/core/offsecAlphaZero.d.ts +0 -59
  30. package/dist/core/offsecAlphaZero.d.ts.map +0 -1
  31. package/dist/core/offsecAlphaZero.js +0 -556
  32. package/dist/core/offsecAlphaZero.js.map +0 -1
  33. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +0 -3
  34. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +0 -1
  35. package/dist/plugins/tools/offsec/offsecOpsPlugin.js +0 -10
  36. package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +0 -1
  37. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +0 -3
  38. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +0 -1
  39. package/dist/plugins/tools/offsec/offsecSearchPlugin.js +0 -12
  40. package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +0 -1
  41. package/dist/tools/offsec/offsecOperationsTools.d.ts +0 -3
  42. package/dist/tools/offsec/offsecOperationsTools.d.ts.map +0 -1
  43. package/dist/tools/offsec/offsecOperationsTools.js +0 -333
  44. package/dist/tools/offsec/offsecOperationsTools.js.map +0 -1
  45. package/dist/tools/offsecSearchTools.d.ts +0 -3
  46. package/dist/tools/offsecSearchTools.d.ts.map +0 -1
  47. package/dist/tools/offsecSearchTools.js +0 -330
  48. 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' | 'max-passes' | 'empty-response' | 'stalled';
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 OrchestratorPass {
17
- response: string;
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
- * Drives an AgentRuntime through multiple passes until the request is actually completed.
31
- * Helps avoid early stops after plan-only replies by forcing follow-up prompts that demand action.
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,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,UAAU,EAAE,sBAAsB,CAAC;CACpC;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;IA8GlG,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,aAAa;IAuDrB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;CAW1B"}
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
- * Drives an AgentRuntime through multiple passes until the request is actually completed.
4
- * Helps avoid early stops after plan-only replies by forcing follow-up prompts that demand action.
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 passes = [];
15
+ const singlePassFocus = options?.singlePassFocus ?? true;
18
16
  const completionDetector = new TaskCompletionDetector();
19
- let prompt = request.trim();
20
- let exitReason = null;
21
- let consecutiveLowProgress = 0;
22
- let awaitingVerification = false;
23
- for (let pass = 0; pass < maxPasses; pass++) {
24
- const response = (await this.agent.send(prompt, streaming)).trim();
25
- const toolExecutions = this.agent.drainToolExecutions();
26
- toolExecutions.forEach(exec => completionDetector.recordToolCall(exec.name, exec.success, exec.hasOutput));
27
- const toolsUsed = toolExecutions.filter(exec => exec.success).map(exec => exec.name);
28
- const completion = completionDetector.analyzeCompletion(response, toolsUsed);
29
- const analysis = this.analyzeResponse(response, toolsUsed, enforceActions);
30
- const planOnly = analysis.planOnly;
31
- const tookAction = analysis.tookAction;
32
- const passRecord = { response, toolsUsed, planOnly, tookAction, completion };
33
- passes.push(passRecord);
34
- if (awaitingVerification) {
35
- if (completionDetector.isVerificationConfirmed(response)) {
36
- exitReason = 'complete';
37
- break;
38
- }
39
- awaitingVerification = false;
40
- }
41
- if (completion.isComplete || analysis.readyToStop) {
42
- exitReason = 'complete';
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
- const loopDetected = this.isLoopWarning(response);
46
- if (completion.shouldVerify && completion.verificationPrompt && verificationMode === 'auto') {
47
- awaitingVerification = true;
48
- const followUp = this.buildVerificationPrompt(request, completion.verificationPrompt, toolsUsed);
49
- passRecord.followUpPrompt = followUp;
50
- prompt = followUp;
51
- continue;
52
- }
53
- if (analysis.empty) {
54
- if (pass === maxPasses - 1) {
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
- if (!exitReason) {
85
- const lastPass = passes[passes.length - 1];
86
- const exhaustedPasses = passes.length >= maxPasses;
87
- if (exhaustedPasses && lastPass && !lastPass.tookAction) {
88
- exitReason = 'stalled';
89
- }
90
- else if (exhaustedPasses) {
91
- exitReason = 'max-passes';
92
- }
93
- else {
94
- exitReason = 'complete';
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
- return {
98
- finalResponse: passes[passes.length - 1]?.response ?? '',
99
- passes,
100
- exitReason,
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 = this.wordCount(trimmed) < 80;
113
- const lacksEvidence = !tookAction && tooLight;
114
- const needsMoreWork = empty ||
115
- blocked ||
116
- completionContradiction ||
117
- continuing ||
118
- planOnly ||
119
- (enforceActions && (lacksEvidence || (!hasCompletionMarker && !tookAction)));
120
- const readyToStop = hasCompletionMarker &&
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
- const reason = (() => {
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
- reason,
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
- /\bblocked\b/i,
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":"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"}
1
+ {"version":3,"file":"agentOrchestrator.js","sourceRoot":"","sources":["../../src/core/agentOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAA2B,MAAM,6BAA6B,CAAC;AAiC9F;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACX,KAAK,CAAe;IAErC,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,OAA6B;QAClE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;QACvD,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,MAAM,CAAC;QAC7D,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC;QACzD,MAAM,kBAAkB,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAExD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtG,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,cAAc,GAA0B,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC/E,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3G,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,kBAAkB,CACvE,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,CACX,CAAC;QAEF,OAAO;YACL,aAAa,EAAE,QAAQ;YACvB,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU;YACV,UAAU;YACV,aAAa,EAAE,OAAO;YACtB,WAAW;YACX,eAAe;SAChB,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,QAA0B,EAC1B,UAA8B,EAC9B,cAAuB,EACvB,gBAAqC;QAErC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,cAAc,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3C,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,gBAAgB,KAAK,MAAM,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC3D,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAClD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,kBAAkB,CACxB,OAAe,EACf,QAAgB,EAChB,QAA0B,EAC1B,UAA8B,EAC9B,SAAmB,EACnB,UAAkC;QAElC,MAAM,WAAW,GAAa;YAC5B,+DAA+D;YAC/D,4DAA4D;SAC7D,CAAC;QAEF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CACd,SAAS,CAAC,MAAM,KAAK,CAAC;gBACpB,CAAC,CAAC,qEAAqE;gBACvE,CAAC,CAAC,sFAAsF,CAC3F,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;QAC5G,CAAC;QAED,MAAM,eAAe,GAAa,CAAC,gEAAgE,CAAC,CAAC;QACrG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,eAAe,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC3F,CAAC;QAED,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,WAAW;gBACd,eAAe,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;gBAC9F,MAAM;YACR,KAAK,SAAS;gBACZ,eAAe,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;gBAC7F,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBACzF,MAAM;YACR,KAAK,gBAAgB;gBACnB,eAAe,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;gBAC3F,MAAM;YACR,KAAK,UAAU,CAAC;YAChB;gBACE,MAAM;QACV,CAAC;QAED,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM;YACnC,CAAC,CAAC,eAAe,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACxC,CAAC,CAAC,gBAAgB,CAAC;QACrB,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;YACvB,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,UAAU;oBACb,OAAO,UAAU,CAAC,YAAY;wBAC5B,CAAC,CAAC,qDAAqD;wBACvD,CAAC,CAAC,4BAA4B,CAAC;gBACnC,KAAK,qBAAqB;oBACxB,OAAO,2DAA2D,CAAC;gBACrE,KAAK,WAAW;oBACd,OAAO,iDAAiD,CAAC;gBAC3D,KAAK,gBAAgB;oBACnB,OAAO,6BAA6B,CAAC;gBACvC,KAAK,SAAS;oBACZ,OAAO,yDAAyD,CAAC;gBACnE,KAAK,YAAY,CAAC;gBAClB;oBACE,OAAO,0DAA0D,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,OAAO,GAAG;YACd,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE;YAC5B,SAAS,UAAU,EAAE;YACrB,UAAU;YACV,YAAY;SACb,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEd,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IACnD,CAAC;IAEO,qBAAqB,CAAC,eAAuB,EAAE,cAAuB;QAC5E,MAAM,UAAU,GAAG,cAAc;YAC/B,CAAC,CAAC,oHAAoH;YACtH,CAAC,CAAC,kDAAkD,CAAC;QAEvD,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE;;;EAGlC,UAAU;;;wEAG4D,CAAC;IACvE,CAAC;IAEO,eAAe,CACrB,QAAgB,EAChB,SAAmB,EACnB,cAAuB;QAEvB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;QAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YAC3D,QAAQ;YACR,UAAU;YACV,UAAU;YACV,OAAO;YACP,uBAAuB;YACvB,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,WAAW,GACf,CAAC,mBAAmB;YAClB,CAAC,uBAAuB;YACxB,CAAC,UAAU;YACX,CAAC,CAAC,cAAc,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,iBAAiB,CAAC;QAEpB,OAAO;YACL,KAAK;YACL,QAAQ;YACR,UAAU;YACV,WAAW;YACX,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QACnC,MAAM,cAAc,GAAG;YACrB,WAAW;YACX,eAAe;YACf,cAAc;YACd,eAAe;YACf,eAAe;YACf,cAAc;YACd,+DAA+D;YAC/D,yBAAyB;YACzB,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,qCAAqC;YACrC,YAAY;YACZ,gBAAgB;YAChB,uBAAuB;SACxB,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,qBAAqB,CAAC,QAAgB;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,MAAM,kBAAkB,GAAG;YACzB,oCAAoC;YACpC,eAAe;YACf,uBAAuB;YACvB,8BAA8B;YAC9B,gCAAgC;SACjC,CAAC;QACF,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IAEO,0BAA0B,CAAC,QAAgB;QACjD,MAAM,cAAc,GAAG;YACrB,8DAA8D;YAC9D,wCAAwC;YACxC,cAAc;YACd,gBAAgB;YAChB,iCAAiC;YACjC,gCAAgC;YAChC,mDAAmD;YACnD,WAAW;YACX,YAAY;SACb,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,MAAM,cAAc,GAAG;YACrB,cAAc;YACd,cAAc;YACd,cAAc;YACd,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,cAAc;YACd,eAAe;YACf,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,YAAY;YACZ,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,aAAa;SACd,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QACnC,MAAM,QAAQ,GAAG;YACf,4DAA4D;YAC5D,6DAA6D;YAC7D,6CAA6C;YAC7C,gBAAgB;YAChB,wBAAwB;SACzB,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QACnC,MAAM,QAAQ,GAAG;YACf,oEAAoE;YACpE,iEAAiE;YACjE,4BAA4B;YAC5B,oDAAoD;YACpD,0CAA0C;YAC1C,yEAAyE;YACzE,mDAAmD;SACpD,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAC1B,QAAgB,EAChB,OAOC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACjG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAChD,OAAO,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;IACxC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeDefaults.d.ts","sourceRoot":"","sources":["../../../src/plugins/tools/nodeDefaults.ts"],"names":[],"mappings":"AAqCA,wBAAgB,8BAA8B,IAAI,IAAI,CAwCrD"}
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
  }