erosolar-cli 1.7.396 → 1.7.398

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 (80) hide show
  1. package/dist/browser/BrowserSessionManager.d.ts +3 -1
  2. package/dist/browser/BrowserSessionManager.d.ts.map +1 -1
  3. package/dist/browser/BrowserSessionManager.js +24 -4
  4. package/dist/browser/BrowserSessionManager.js.map +1 -1
  5. package/dist/contracts/agent-schemas.json +5 -0
  6. package/dist/contracts/unified-schema.json +2 -1
  7. package/dist/core/agent.d.ts +5 -0
  8. package/dist/core/agent.d.ts.map +1 -1
  9. package/dist/core/agent.js +99 -0
  10. package/dist/core/agent.js.map +1 -1
  11. package/dist/core/alphaZeroConfig.d.ts +11 -0
  12. package/dist/core/alphaZeroConfig.d.ts.map +1 -0
  13. package/dist/core/alphaZeroConfig.js +59 -0
  14. package/dist/core/alphaZeroConfig.js.map +1 -0
  15. package/dist/core/alphaZeroEngine.d.ts +8 -0
  16. package/dist/core/alphaZeroEngine.d.ts.map +1 -1
  17. package/dist/core/alphaZeroEngine.js +149 -35
  18. package/dist/core/alphaZeroEngine.js.map +1 -1
  19. package/dist/core/alphaZeroEnhanced.d.ts +125 -0
  20. package/dist/core/alphaZeroEnhanced.d.ts.map +1 -0
  21. package/dist/core/alphaZeroEnhanced.js +386 -0
  22. package/dist/core/alphaZeroEnhanced.js.map +1 -0
  23. package/dist/core/alphaZeroOrchestrator.d.ts +17 -0
  24. package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -1
  25. package/dist/core/alphaZeroOrchestrator.js +95 -8
  26. package/dist/core/alphaZeroOrchestrator.js.map +1 -1
  27. package/dist/core/autonomousVerification.d.ts +103 -0
  28. package/dist/core/autonomousVerification.d.ts.map +1 -0
  29. package/dist/core/autonomousVerification.js +583 -0
  30. package/dist/core/autonomousVerification.js.map +1 -0
  31. package/dist/core/cliTestHarness.d.ts +5 -0
  32. package/dist/core/cliTestHarness.d.ts.map +1 -1
  33. package/dist/core/cliTestHarness.js +14 -3
  34. package/dist/core/cliTestHarness.js.map +1 -1
  35. package/dist/core/contextManager.d.ts +10 -0
  36. package/dist/core/contextManager.d.ts.map +1 -1
  37. package/dist/core/contextManager.js +18 -0
  38. package/dist/core/contextManager.js.map +1 -1
  39. package/dist/core/offsecAlphaZeroEnhanced.d.ts +98 -0
  40. package/dist/core/offsecAlphaZeroEnhanced.d.ts.map +1 -0
  41. package/dist/core/offsecAlphaZeroEnhanced.js +441 -0
  42. package/dist/core/offsecAlphaZeroEnhanced.js.map +1 -0
  43. package/dist/core/parallelAgentOrchestrator.d.ts +171 -0
  44. package/dist/core/parallelAgentOrchestrator.d.ts.map +1 -0
  45. package/dist/core/parallelAgentOrchestrator.js +459 -0
  46. package/dist/core/parallelAgentOrchestrator.js.map +1 -0
  47. package/dist/index.d.ts +5 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/shell/interactiveShell.d.ts +15 -0
  52. package/dist/shell/interactiveShell.d.ts.map +1 -1
  53. package/dist/shell/interactiveShell.js +344 -210
  54. package/dist/shell/interactiveShell.js.map +1 -1
  55. package/dist/shell/shellApp.d.ts.map +1 -1
  56. package/dist/shell/shellApp.js +15 -1
  57. package/dist/shell/shellApp.js.map +1 -1
  58. package/dist/shell/terminalInput.d.ts +42 -1
  59. package/dist/shell/terminalInput.d.ts.map +1 -1
  60. package/dist/shell/terminalInput.js +276 -6
  61. package/dist/shell/terminalInput.js.map +1 -1
  62. package/dist/shell/terminalInputAdapter.d.ts +14 -2
  63. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  64. package/dist/shell/terminalInputAdapter.js +19 -1
  65. package/dist/shell/terminalInputAdapter.js.map +1 -1
  66. package/dist/ui/assistantBlockRenderer.d.ts +28 -0
  67. package/dist/ui/assistantBlockRenderer.d.ts.map +1 -0
  68. package/dist/ui/assistantBlockRenderer.js +99 -0
  69. package/dist/ui/assistantBlockRenderer.js.map +1 -0
  70. package/dist/ui/display.d.ts +11 -0
  71. package/dist/ui/display.d.ts.map +1 -1
  72. package/dist/ui/display.js +37 -0
  73. package/dist/ui/display.js.map +1 -1
  74. package/dist/ui/theme.d.ts +80 -81
  75. package/dist/ui/theme.d.ts.map +1 -1
  76. package/dist/ui/unified/layout.d.ts +0 -23
  77. package/dist/ui/unified/layout.d.ts.map +1 -1
  78. package/dist/ui/unified/layout.js +11 -114
  79. package/dist/ui/unified/layout.js.map +1 -1
  80. package/package.json +33 -19
@@ -0,0 +1,441 @@
1
+ /**
2
+ * Enhanced AlphaZero Offensive Security Coordinator
3
+ *
4
+ * Extends offsecAlphaZero with:
5
+ * - Autonomous verification for strict confirmation of success
6
+ * - Retry strategies with alternative approaches
7
+ * - Confidence-based outcome recording
8
+ * - Multi-method verification before confirming success
9
+ */
10
+ import { startOffsecRun, resumeOffsecRun, recordOffsecOutcome, getOffsecNextActions, listOffsecRuns, formatOffsecStatus, } from './offsecAlphaZero.js';
11
+ import { autonomousVerification, } from './autonomousVerification.js';
12
+ import { spawn } from 'child_process';
13
+ /**
14
+ * Default retry strategies for offensive security actions
15
+ */
16
+ const DEFAULT_RETRY_STRATEGIES = [
17
+ {
18
+ name: 'stealth-mode',
19
+ description: 'Reduce scan speed and use evasion techniques',
20
+ modifyCommand: (cmd, attempt) => {
21
+ // Add stealth flags for nmap
22
+ if (cmd.includes('nmap')) {
23
+ return cmd.replace(/-T[0-5]/, `-T${Math.max(0, 4 - attempt)}`);
24
+ }
25
+ // Add delays for other tools
26
+ if (cmd.includes('dirsearch')) {
27
+ return cmd + ` --delay=${attempt * 500}`;
28
+ }
29
+ return cmd;
30
+ },
31
+ applicableCategories: ['recon', 'web'],
32
+ },
33
+ {
34
+ name: 'alt-user-agent',
35
+ description: 'Try different user agents to bypass WAF',
36
+ modifyCommand: (cmd, attempt) => {
37
+ const userAgents = [
38
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
39
+ 'Googlebot/2.1 (+http://www.google.com/bot.html)',
40
+ 'curl/7.68.0',
41
+ ];
42
+ const ua = userAgents[attempt % userAgents.length];
43
+ if (cmd.includes('curl')) {
44
+ return cmd.replace(/curl/, `curl -A "${ua}"`);
45
+ }
46
+ return cmd;
47
+ },
48
+ applicableCategories: ['web', 'payload'],
49
+ },
50
+ {
51
+ name: 'encoding-bypass',
52
+ description: 'Apply encoding to bypass filters',
53
+ modifyCommand: (cmd, attempt) => {
54
+ // URL encode parameters
55
+ if (cmd.includes('sqlmap')) {
56
+ const encodings = ['', '--tamper=base64encode', '--tamper=charencode'];
57
+ const tamper = encodings[attempt % encodings.length];
58
+ return cmd + ` ${tamper}`;
59
+ }
60
+ return cmd;
61
+ },
62
+ applicableCategories: ['payload', 'web'],
63
+ },
64
+ {
65
+ name: 'alt-port',
66
+ description: 'Try alternative ports for the same service',
67
+ modifyCommand: (cmd, attempt) => {
68
+ // Common alternative ports
69
+ const altPorts = {
70
+ 80: [8080, 8000, 8888],
71
+ 443: [8443, 4443],
72
+ 22: [2222, 2200],
73
+ 3306: [3307, 13306],
74
+ };
75
+ // Modify port in command if possible
76
+ for (const [standard, alts] of Object.entries(altPorts)) {
77
+ if (cmd.includes(`:${standard}`)) {
78
+ const alt = alts[(attempt - 1) % alts.length];
79
+ return cmd.replace(`:${standard}`, `:${alt}`);
80
+ }
81
+ }
82
+ return cmd;
83
+ },
84
+ applicableCategories: ['recon', 'lateral'],
85
+ },
86
+ {
87
+ name: 'credential-variation',
88
+ description: 'Try credential variations (case changes, common mutations)',
89
+ modifyCommand: (cmd, attempt) => {
90
+ // Apply common password variations
91
+ // This is a simplified example
92
+ return cmd;
93
+ },
94
+ applicableCategories: ['creds', 'lateral'],
95
+ },
96
+ ];
97
+ /**
98
+ * Enhanced offensive security coordinator with autonomous verification
99
+ */
100
+ export class OffsecAlphaZeroEnhanced {
101
+ context;
102
+ verificationConfig;
103
+ constructor(initialContext = {}, verificationConfig) {
104
+ this.context = {
105
+ target: initialContext.target || '<target>',
106
+ url: initialContext.url || 'http://<target>',
107
+ previousOutputs: initialContext.previousOutputs || [],
108
+ discoveredCredentials: initialContext.discoveredCredentials || [],
109
+ discoveredHosts: initialContext.discoveredHosts || [],
110
+ currentPrivilegeLevel: initialContext.currentPrivilegeLevel || 'unknown',
111
+ detectionRisk: initialContext.detectionRisk || 'low',
112
+ };
113
+ this.verificationConfig = {
114
+ methods: verificationConfig?.methods || [
115
+ 'output_parsing',
116
+ 'state_validation',
117
+ 'behavioral_check',
118
+ 'response_validation',
119
+ ],
120
+ minConfidence: verificationConfig?.minConfidence || 0.75,
121
+ maxRetries: verificationConfig?.maxRetries || 3,
122
+ retryStrategies: verificationConfig?.retryStrategies || DEFAULT_RETRY_STRATEGIES,
123
+ timeout: verificationConfig?.timeout || 60000,
124
+ };
125
+ }
126
+ /**
127
+ * Execute an offensive security action with autonomous verification
128
+ */
129
+ async executeWithVerification(run, action) {
130
+ let retryAttempt = 0;
131
+ let bestResult = null;
132
+ let bestConfidence = 0;
133
+ while (retryAttempt < this.verificationConfig.maxRetries) {
134
+ const startTime = Date.now();
135
+ // Get command (possibly modified by retry strategy)
136
+ const command = this.getCommandForAttempt(action, retryAttempt);
137
+ // Execute command
138
+ const { output, exitCode } = await this.executeCommand(command, this.verificationConfig.timeout);
139
+ // Extract context from output
140
+ const executionContext = this.extractContextFromOutput(output, action.category);
141
+ // Run autonomous verification
142
+ const verification = await autonomousVerification.verify('offensive-security', action.command, output, {
143
+ ...this.context,
144
+ ...executionContext,
145
+ exitCode,
146
+ category: action.category,
147
+ });
148
+ const executionTimeMs = Date.now() - startTime;
149
+ // Determine outcome based on verification
150
+ const finalOutcome = this.determineOutcome(verification, exitCode, output);
151
+ const result = {
152
+ actionId: action.id,
153
+ command,
154
+ output,
155
+ exitCode,
156
+ verification,
157
+ retryAttempt,
158
+ finalOutcome,
159
+ confidence: verification.confidence,
160
+ executionTimeMs,
161
+ };
162
+ // Track best result
163
+ if (verification.confidence > bestConfidence) {
164
+ bestConfidence = verification.confidence;
165
+ bestResult = result;
166
+ }
167
+ // If we have strong confirmation of success, stop retrying
168
+ if (verification.approved && verification.confidence >= this.verificationConfig.minConfidence) {
169
+ // Update context with discoveries
170
+ this.updateContextFromResult(result);
171
+ // Record outcome in the run
172
+ recordOffsecOutcome(run.id, action.id, finalOutcome, this.formatResultNote(result));
173
+ return result;
174
+ }
175
+ // If detected, stop immediately
176
+ if (finalOutcome === 'detected') {
177
+ recordOffsecOutcome(run.id, action.id, finalOutcome, this.formatResultNote(result));
178
+ return result;
179
+ }
180
+ retryAttempt++;
181
+ }
182
+ // All retries exhausted, use best result
183
+ if (!bestResult) {
184
+ throw new Error('No execution results available');
185
+ }
186
+ // Record the best outcome
187
+ recordOffsecOutcome(run.id, action.id, bestResult.finalOutcome, this.formatResultNote(bestResult));
188
+ return bestResult;
189
+ }
190
+ /**
191
+ * Get command for a specific retry attempt
192
+ */
193
+ getCommandForAttempt(action, attempt) {
194
+ if (attempt === 0) {
195
+ return action.command;
196
+ }
197
+ // Apply retry strategies
198
+ const applicableStrategies = this.verificationConfig.retryStrategies.filter((s) => s.applicableCategories.includes(action.category));
199
+ if (applicableStrategies.length === 0) {
200
+ return action.command;
201
+ }
202
+ // Use a different strategy for each attempt
203
+ const strategy = applicableStrategies[(attempt - 1) % applicableStrategies.length];
204
+ if (!strategy) {
205
+ return action.command;
206
+ }
207
+ return strategy.modifyCommand(action.command, attempt);
208
+ }
209
+ /**
210
+ * Execute a shell command with timeout
211
+ */
212
+ async executeCommand(command, timeout) {
213
+ return new Promise((resolve, reject) => {
214
+ const child = spawn(command, { shell: true });
215
+ let output = '';
216
+ let timedOut = false;
217
+ const timer = setTimeout(() => {
218
+ timedOut = true;
219
+ child.kill('SIGTERM');
220
+ resolve({ output: output + '\n[TIMEOUT]', exitCode: 124 });
221
+ }, timeout);
222
+ child.stdout?.on('data', (data) => {
223
+ output += data.toString();
224
+ });
225
+ child.stderr?.on('data', (data) => {
226
+ output += data.toString();
227
+ });
228
+ child.on('close', (code) => {
229
+ clearTimeout(timer);
230
+ if (!timedOut) {
231
+ resolve({ output, exitCode: code || 0 });
232
+ }
233
+ });
234
+ child.on('error', (error) => {
235
+ clearTimeout(timer);
236
+ reject(error);
237
+ });
238
+ });
239
+ }
240
+ /**
241
+ * Extract context information from command output
242
+ */
243
+ extractContextFromOutput(output, category) {
244
+ const context = {
245
+ states: [],
246
+ };
247
+ // Extract based on category
248
+ switch (category) {
249
+ case 'recon':
250
+ // Look for open ports
251
+ const portMatches = output.match(/(\d+)\/tcp\s+open/gi);
252
+ if (portMatches) {
253
+ context.states.push('ports_discovered');
254
+ context.discoveredPorts = portMatches
255
+ .map((m) => m.match(/\d+/)?.[0])
256
+ .filter((value) => Boolean(value));
257
+ }
258
+ break;
259
+ case 'web':
260
+ // Look for interesting endpoints
261
+ if (output.match(/200|301|302/)) {
262
+ context.states.push('endpoints_found');
263
+ }
264
+ break;
265
+ case 'creds':
266
+ // Look for credentials
267
+ if (output.match(/password|token|key|secret/i)) {
268
+ context.states.push('new_credentials');
269
+ }
270
+ break;
271
+ case 'payload':
272
+ // Look for successful exploitation
273
+ if (output.match(/shell|uid=|gid=|root|admin/i)) {
274
+ context.states.push('new_access');
275
+ context.states.push('shell_obtained');
276
+ }
277
+ break;
278
+ case 'lateral':
279
+ // Look for successful lateral movement
280
+ if (output.match(/logged in|authenticated|connected/i)) {
281
+ context.states.push('new_access');
282
+ }
283
+ break;
284
+ case 'privilege':
285
+ // Look for privilege escalation
286
+ if (output.match(/root|administrator|SYSTEM/i)) {
287
+ context.states.push('privilege_escalated');
288
+ }
289
+ break;
290
+ case 'cloud':
291
+ // Look for cloud metadata access
292
+ if (output.match(/ami-|AccessKeyId|SecretAccessKey/i)) {
293
+ context.states.push('cloud_metadata_accessed');
294
+ }
295
+ break;
296
+ }
297
+ return context;
298
+ }
299
+ /**
300
+ * Determine outcome from verification result
301
+ */
302
+ determineOutcome(verification, exitCode, output) {
303
+ // Check for detection indicators
304
+ const detectionPatterns = [
305
+ /blocked|banned|firewall|WAF/i,
306
+ /rate.?limit|too many requests/i,
307
+ /suspicious.?activity/i,
308
+ /blacklist/i,
309
+ ];
310
+ const isDetected = detectionPatterns.some((pattern) => pattern.test(output));
311
+ if (isDetected) {
312
+ return 'detected';
313
+ }
314
+ // If verification approved with high confidence, it's a success
315
+ if (verification.approved && verification.confidence >= this.verificationConfig.minConfidence) {
316
+ return 'success';
317
+ }
318
+ // If verification confidence is moderate, treat as success with note
319
+ if (verification.confidence >= 0.5) {
320
+ return 'success';
321
+ }
322
+ // Otherwise it's a failure
323
+ return 'fail';
324
+ }
325
+ /**
326
+ * Update internal context based on execution result
327
+ */
328
+ updateContextFromResult(result) {
329
+ this.context.previousOutputs.push(result.output);
330
+ // Extract and store credentials
331
+ const credMatches = result.output.match(/(?:password|token|key)[:=]\s*(\S+)/gi);
332
+ if (credMatches) {
333
+ this.context.discoveredCredentials.push(...credMatches);
334
+ }
335
+ // Extract and store discovered hosts
336
+ const hostMatches = result.output.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g);
337
+ if (hostMatches) {
338
+ this.context.discoveredHosts.push(...hostMatches);
339
+ }
340
+ // Update privilege level
341
+ if (result.output.match(/root|administrator|SYSTEM/i)) {
342
+ this.context.currentPrivilegeLevel = 'root';
343
+ }
344
+ else if (result.output.match(/admin/i)) {
345
+ this.context.currentPrivilegeLevel = 'admin';
346
+ }
347
+ else if (result.output.match(/uid=/i)) {
348
+ this.context.currentPrivilegeLevel = 'user';
349
+ }
350
+ // Adjust detection risk
351
+ if (result.finalOutcome === 'detected') {
352
+ this.context.detectionRisk = 'high';
353
+ }
354
+ else if (result.verification.confidence < 0.5) {
355
+ this.context.detectionRisk = this.context.detectionRisk === 'low' ? 'medium' : 'high';
356
+ }
357
+ }
358
+ /**
359
+ * Format result as a note for storage
360
+ */
361
+ formatResultNote(result) {
362
+ const lines = [];
363
+ lines.push(`Confidence: ${(result.confidence * 100).toFixed(1)}%`);
364
+ lines.push(`Verification: ${result.verification.reason}`);
365
+ lines.push(`Attempts: ${result.retryAttempt + 1}`);
366
+ lines.push(`Time: ${result.executionTimeMs}ms`);
367
+ if (result.verification.results.length > 0) {
368
+ lines.push('Checks:');
369
+ for (const check of result.verification.results) {
370
+ lines.push(` - ${check.method}: ${check.passed ? '✓' : '✗'} (${(check.confidence * 100).toFixed(0)}%)`);
371
+ }
372
+ }
373
+ return lines.join('\n');
374
+ }
375
+ /**
376
+ * Execute a full offensive security run with autonomous verification
377
+ */
378
+ async executeAutonomousRun(objective, scope, maxActions = 10) {
379
+ // Start or resume run
380
+ const run = startOffsecRun(objective, scope);
381
+ let actionsExecuted = 0;
382
+ while (actionsExecuted < maxActions) {
383
+ // Get next action
384
+ const nextActions = getOffsecNextActions(run.id, 1);
385
+ if (nextActions.length === 0) {
386
+ console.log('No more actions available');
387
+ break;
388
+ }
389
+ const nextAction = nextActions[0];
390
+ if (!nextAction) {
391
+ break;
392
+ }
393
+ console.log(`Executing: ${nextAction.label}`);
394
+ console.log(`Command: ${nextAction.command}`);
395
+ try {
396
+ // Execute with verification
397
+ const result = await this.executeWithVerification(run, nextAction);
398
+ console.log(`Result: ${result.finalOutcome} (confidence: ${(result.confidence * 100).toFixed(1)}%)`);
399
+ // Stop if detected
400
+ if (result.finalOutcome === 'detected') {
401
+ console.log('Detected! Stopping autonomous run.');
402
+ break;
403
+ }
404
+ actionsExecuted++;
405
+ }
406
+ catch (error) {
407
+ console.error(`Error executing action: ${error instanceof Error ? error.message : String(error)}`);
408
+ recordOffsecOutcome(run.id, nextAction.id, 'fail', `Error: ${error}`);
409
+ actionsExecuted++;
410
+ }
411
+ }
412
+ return run;
413
+ }
414
+ /**
415
+ * Get current context
416
+ */
417
+ getContext() {
418
+ return { ...this.context };
419
+ }
420
+ /**
421
+ * Update context
422
+ */
423
+ updateContext(updates) {
424
+ this.context = { ...this.context, ...updates };
425
+ }
426
+ }
427
+ /**
428
+ * Convenience function to execute an action with verification
429
+ */
430
+ export async function executeOffsecActionWithVerification(run, actionId, context) {
431
+ const coordinator = new OffsecAlphaZeroEnhanced(context);
432
+ const actions = getOffsecNextActions(run.id, 100);
433
+ const action = actions.find((a) => a.id === actionId);
434
+ if (!action) {
435
+ throw new Error(`Action ${actionId} not found`);
436
+ }
437
+ return coordinator.executeWithVerification(run, action);
438
+ }
439
+ // Re-export for convenience
440
+ export { startOffsecRun, resumeOffsecRun, listOffsecRuns, getOffsecNextActions, formatOffsecStatus, };
441
+ //# sourceMappingURL=offsecAlphaZeroEnhanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offsecAlphaZeroEnhanced.js","sourceRoot":"","sources":["../../src/core/offsecAlphaZeroEnhanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Context-Aware Parallel Agent Orchestrator
3
+ *
4
+ * Manages multiple agents running in parallel while optimizing for:
5
+ * - Model context limits
6
+ * - Token budget management
7
+ * - Auto-compaction before spawning
8
+ * - Result aggregation and conflict resolution
9
+ * - Dependency graph analysis for optimal parallelization
10
+ */
11
+ import { ContextManager } from './contextManager.js';
12
+ import { VerificationOutcome } from './autonomousVerification.js';
13
+ export type AgentStatus = 'pending' | 'running' | 'completed' | 'failed' | 'blocked';
14
+ export interface AgentTask {
15
+ id: string;
16
+ description: string;
17
+ type: 'exploration' | 'implementation' | 'verification' | 'testing' | 'security';
18
+ priority: number;
19
+ estimatedTokens: number;
20
+ dependencies: string[];
21
+ requiredArtifacts: string[];
22
+ producedArtifacts: string[];
23
+ timeout: number;
24
+ retryable: boolean;
25
+ maxRetries: number;
26
+ }
27
+ export interface AgentInstance {
28
+ taskId: string;
29
+ agentId: string;
30
+ status: AgentStatus;
31
+ startTime: number;
32
+ endTime?: number;
33
+ tokenUsage: number;
34
+ result?: AgentResult;
35
+ error?: string;
36
+ retryCount: number;
37
+ }
38
+ export interface AgentResult {
39
+ success: boolean;
40
+ output: string;
41
+ artifacts: Record<string, any>;
42
+ metrics: {
43
+ tokensUsed: number;
44
+ executionTimeMs: number;
45
+ toolCalls: number;
46
+ };
47
+ verification?: VerificationOutcome;
48
+ conflicts?: Conflict[];
49
+ }
50
+ export interface Conflict {
51
+ type: 'file_modification' | 'data_inconsistency' | 'resource_contention';
52
+ description: string;
53
+ severity: 'low' | 'medium' | 'high';
54
+ affectedAgents: string[];
55
+ resolution?: ConflictResolution;
56
+ }
57
+ export interface ConflictResolution {
58
+ strategy: 'accept_first' | 'accept_last' | 'merge' | 'manual_review' | 'retry';
59
+ resolvedBy: string;
60
+ details: string;
61
+ }
62
+ export interface TokenBudget {
63
+ total: number;
64
+ reserved: number;
65
+ available: number;
66
+ allocated: number;
67
+ consumed: number;
68
+ }
69
+ export interface DependencyGraph {
70
+ nodes: Map<string, AgentTask>;
71
+ edges: Map<string, string[]>;
72
+ levels: string[][];
73
+ }
74
+ export interface ParallelExecutionPlan {
75
+ waves: AgentTask[][];
76
+ estimatedTotalTokens: number;
77
+ estimatedTotalTimeMs: number;
78
+ criticalPath: string[];
79
+ }
80
+ export declare class ParallelAgentOrchestrator {
81
+ private contextManager;
82
+ private verificationEngine;
83
+ private tokenBudget;
84
+ private tasks;
85
+ private agents;
86
+ private maxConcurrentAgents;
87
+ private autoCompactionEnabled;
88
+ private compactionThreshold;
89
+ constructor(contextManager: ContextManager, config?: {
90
+ totalTokens?: number;
91
+ maxConcurrentAgents?: number;
92
+ autoCompactionEnabled?: boolean;
93
+ compactionThreshold?: number;
94
+ });
95
+ /**
96
+ * Add a task to the orchestrator
97
+ */
98
+ addTask(task: AgentTask): void;
99
+ /**
100
+ * Add multiple tasks
101
+ */
102
+ addTasks(tasks: AgentTask[]): void;
103
+ /**
104
+ * Build dependency graph from tasks
105
+ */
106
+ buildDependencyGraph(): DependencyGraph;
107
+ /**
108
+ * Create an execution plan that optimizes for parallelism and token budget
109
+ */
110
+ createExecutionPlan(): ParallelExecutionPlan;
111
+ /**
112
+ * Find the critical path (longest dependency chain)
113
+ */
114
+ private findCriticalPath;
115
+ /**
116
+ * Execute tasks according to the plan
117
+ */
118
+ executePlan(plan?: ParallelExecutionPlan): Promise<Map<string, AgentResult>>;
119
+ /**
120
+ * Check if compaction is needed and perform it
121
+ */
122
+ private checkAndCompact;
123
+ /**
124
+ * Execute a wave of tasks in parallel
125
+ */
126
+ private executeWave;
127
+ /**
128
+ * Execute a single task
129
+ */
130
+ private executeTask;
131
+ /**
132
+ * Execute the actual agent task (placeholder for integration with agent system)
133
+ */
134
+ private executeAgentTask;
135
+ /**
136
+ * Detect conflicts between parallel agents
137
+ */
138
+ private detectConflicts;
139
+ /**
140
+ * Resolve conflicts between agents
141
+ */
142
+ private resolveConflicts;
143
+ /**
144
+ * Get current token budget status
145
+ */
146
+ getTokenBudget(): TokenBudget;
147
+ /**
148
+ * Get all running agents
149
+ */
150
+ getRunningAgents(): AgentInstance[];
151
+ /**
152
+ * Get agent by ID
153
+ */
154
+ getAgent(agentId: string): AgentInstance | undefined;
155
+ /**
156
+ * Cancel a running agent
157
+ */
158
+ cancelAgent(agentId: string): Promise<void>;
159
+ /**
160
+ * Get execution summary
161
+ */
162
+ getSummary(): {
163
+ totalTasks: number;
164
+ completed: number;
165
+ failed: number;
166
+ running: number;
167
+ pending: number;
168
+ tokenUsage: TokenBudget;
169
+ };
170
+ }
171
+ //# sourceMappingURL=parallelAgentOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelAgentOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/parallelAgentOrchestrator.ts"],"names":[],"mappings":"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"}