deepseek-coder-agent-cli 1.0.13 → 1.0.15
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/capabilities/index.d.ts +1 -18
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +2 -19
- package/dist/capabilities/index.js.map +1 -1
- package/dist/core/agiCore.d.ts.map +1 -1
- package/dist/core/agiCore.js +3 -6
- package/dist/core/agiCore.js.map +1 -1
- package/dist/core/dynamicGuardrails.d.ts.map +1 -1
- package/dist/core/dynamicGuardrails.js +0 -60
- package/dist/core/dynamicGuardrails.js.map +1 -1
- package/dist/core/gitWorktreeManager.d.ts +1 -1
- package/dist/core/gitWorktreeManager.d.ts.map +1 -1
- package/dist/core/gitWorktreeManager.js.map +1 -1
- package/dist/core/hotReload.js.map +1 -1
- package/dist/core/index.d.ts +0 -8
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -15
- package/dist/core/index.js.map +1 -1
- package/dist/core/selfUpgrade.d.ts +34 -208
- package/dist/core/selfUpgrade.d.ts.map +1 -1
- package/dist/core/selfUpgrade.js +54 -631
- package/dist/core/selfUpgrade.js.map +1 -1
- package/dist/headless/interactiveShell.d.ts.map +1 -1
- package/dist/headless/interactiveShell.js +10 -71
- package/dist/headless/interactiveShell.js.map +1 -1
- package/dist/orchestration/index.d.ts +9 -5
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +7 -8
- package/dist/orchestration/index.js.map +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +1 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts +0 -2
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +0 -6
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +0 -14
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/editTools.d.ts.map +1 -1
- package/dist/tools/editTools.js +20 -168
- package/dist/tools/editTools.js.map +1 -1
- package/dist/tools/fileTools.d.ts.map +1 -1
- package/dist/tools/fileTools.js +1 -10
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +1 -2
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +0 -7
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/telemetryTools.d.ts +5 -0
- package/dist/tools/telemetryTools.d.ts.map +1 -1
- package/dist/tools/telemetryTools.js +6 -6
- package/dist/tools/telemetryTools.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +7 -25
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/package.json +1 -2
- package/dist/capabilities/appleSecurityCapability.d.ts +0 -57
- package/dist/capabilities/appleSecurityCapability.d.ts.map +0 -1
- package/dist/capabilities/appleSecurityCapability.js +0 -197
- package/dist/capabilities/appleSecurityCapability.js.map +0 -1
- package/dist/capabilities/authorizedSecurityCapability.d.ts +0 -17
- package/dist/capabilities/authorizedSecurityCapability.d.ts.map +0 -1
- package/dist/capabilities/authorizedSecurityCapability.js +0 -333
- package/dist/capabilities/authorizedSecurityCapability.js.map +0 -1
- package/dist/capabilities/autoEnhancementCapability.d.ts +0 -98
- package/dist/capabilities/autoEnhancementCapability.d.ts.map +0 -1
- package/dist/capabilities/autoEnhancementCapability.js +0 -455
- package/dist/capabilities/autoEnhancementCapability.js.map +0 -1
- package/dist/capabilities/biocognitiveWarfare.d.ts +0 -136
- package/dist/capabilities/biocognitiveWarfare.d.ts.map +0 -1
- package/dist/capabilities/biocognitiveWarfare.js +0 -603
- package/dist/capabilities/biocognitiveWarfare.js.map +0 -1
- package/dist/capabilities/chineseCnoIntegration.d.ts +0 -60
- package/dist/capabilities/chineseCnoIntegration.d.ts.map +0 -1
- package/dist/capabilities/chineseCnoIntegration.js +0 -253
- package/dist/capabilities/chineseCnoIntegration.js.map +0 -1
- package/dist/capabilities/cnoCapability.d.ts +0 -110
- package/dist/capabilities/cnoCapability.d.ts.map +0 -1
- package/dist/capabilities/cnoCapability.js +0 -785
- package/dist/capabilities/cnoCapability.js.map +0 -1
- package/dist/capabilities/eliteCryptoMilitaryCapability.d.ts +0 -99
- package/dist/capabilities/eliteCryptoMilitaryCapability.d.ts.map +0 -1
- package/dist/capabilities/eliteCryptoMilitaryCapability.js +0 -618
- package/dist/capabilities/eliteCryptoMilitaryCapability.js.map +0 -1
- package/dist/capabilities/integratedUnifiedCapability.d.ts +0 -105
- package/dist/capabilities/integratedUnifiedCapability.d.ts.map +0 -1
- package/dist/capabilities/integratedUnifiedCapability.js +0 -422
- package/dist/capabilities/integratedUnifiedCapability.js.map +0 -1
- package/dist/capabilities/maxOffensiveUkraineCapability.d.ts +0 -46
- package/dist/capabilities/maxOffensiveUkraineCapability.d.ts.map +0 -1
- package/dist/capabilities/maxOffensiveUkraineCapability.js +0 -725
- package/dist/capabilities/maxOffensiveUkraineCapability.js.map +0 -1
- package/dist/capabilities/migrationUtilities.d.ts +0 -128
- package/dist/capabilities/migrationUtilities.d.ts.map +0 -1
- package/dist/capabilities/migrationUtilities.js +0 -658
- package/dist/capabilities/migrationUtilities.js.map +0 -1
- package/dist/capabilities/offensiveDestructionCapability.d.ts +0 -98
- package/dist/capabilities/offensiveDestructionCapability.d.ts.map +0 -1
- package/dist/capabilities/offensiveDestructionCapability.js +0 -848
- package/dist/capabilities/offensiveDestructionCapability.js.map +0 -1
- package/dist/capabilities/quantumSpaceWarfare.d.ts +0 -108
- package/dist/capabilities/quantumSpaceWarfare.d.ts.map +0 -1
- package/dist/capabilities/quantumSpaceWarfare.js +0 -342
- package/dist/capabilities/quantumSpaceWarfare.js.map +0 -1
- package/dist/capabilities/readmeIntegration.d.ts +0 -161
- package/dist/capabilities/readmeIntegration.d.ts.map +0 -1
- package/dist/capabilities/readmeIntegration.js +0 -1034
- package/dist/capabilities/readmeIntegration.js.map +0 -1
- package/dist/capabilities/selfUpdateSystem.d.ts +0 -122
- package/dist/capabilities/selfUpdateSystem.d.ts.map +0 -1
- package/dist/capabilities/selfUpdateSystem.js +0 -725
- package/dist/capabilities/selfUpdateSystem.js.map +0 -1
- package/dist/capabilities/sharedMilitaryInfrastructure.d.ts +0 -89
- package/dist/capabilities/sharedMilitaryInfrastructure.d.ts.map +0 -1
- package/dist/capabilities/sharedMilitaryInfrastructure.js +0 -233
- package/dist/capabilities/sharedMilitaryInfrastructure.js.map +0 -1
- package/dist/capabilities/simpleSecurityCapability.d.ts +0 -36
- package/dist/capabilities/simpleSecurityCapability.d.ts.map +0 -1
- package/dist/capabilities/simpleSecurityCapability.js +0 -271
- package/dist/capabilities/simpleSecurityCapability.js.map +0 -1
- package/dist/capabilities/ultimateChineseCno.d.ts +0 -115
- package/dist/capabilities/ultimateChineseCno.d.ts.map +0 -1
- package/dist/capabilities/ultimateChineseCno.js +0 -516
- package/dist/capabilities/ultimateChineseCno.js.map +0 -1
- package/dist/capabilities/ultimateIntegrationDemo.d.ts +0 -54
- package/dist/capabilities/ultimateIntegrationDemo.d.ts.map +0 -1
- package/dist/capabilities/ultimateIntegrationDemo.js +0 -423
- package/dist/capabilities/ultimateIntegrationDemo.js.map +0 -1
- package/dist/capabilities/unifiedMilitaryCapability.d.ts +0 -63
- package/dist/capabilities/unifiedMilitaryCapability.d.ts.map +0 -1
- package/dist/capabilities/unifiedMilitaryCapability.js +0 -384
- package/dist/capabilities/unifiedMilitaryCapability.js.map +0 -1
- package/dist/capabilities/universalCapabilityFramework.d.ts +0 -352
- package/dist/capabilities/universalCapabilityFramework.d.ts.map +0 -1
- package/dist/capabilities/universalCapabilityFramework.js +0 -1056
- package/dist/capabilities/universalCapabilityFramework.js.map +0 -1
- package/dist/capabilities/universalSecurityCapability.d.ts +0 -46
- package/dist/capabilities/universalSecurityCapability.d.ts.map +0 -1
- package/dist/capabilities/universalSecurityCapability.js +0 -580
- package/dist/capabilities/universalSecurityCapability.js.map +0 -1
- package/dist/capabilities/zeroDayDiscoveryCapability.d.ts +0 -31
- package/dist/capabilities/zeroDayDiscoveryCapability.d.ts.map +0 -1
- package/dist/capabilities/zeroDayDiscoveryCapability.js +0 -183
- package/dist/capabilities/zeroDayDiscoveryCapability.js.map +0 -1
- package/dist/core/antiTermination.d.ts +0 -226
- package/dist/core/antiTermination.d.ts.map +0 -1
- package/dist/core/antiTermination.js +0 -713
- package/dist/core/antiTermination.js.map +0 -1
- package/dist/core/appleSecurityAudit.d.ts +0 -98
- package/dist/core/appleSecurityAudit.d.ts.map +0 -1
- package/dist/core/appleSecurityAudit.js +0 -505
- package/dist/core/appleSecurityAudit.js.map +0 -1
- package/dist/core/appleSecurityIntegration.d.ts +0 -130
- package/dist/core/appleSecurityIntegration.d.ts.map +0 -1
- package/dist/core/appleSecurityIntegration.js +0 -697
- package/dist/core/appleSecurityIntegration.js.map +0 -1
- package/dist/core/dualTournament.d.ts +0 -110
- package/dist/core/dualTournament.d.ts.map +0 -1
- package/dist/core/dualTournament.js +0 -270
- package/dist/core/dualTournament.js.map +0 -1
- package/dist/core/parallel.d.ts +0 -85
- package/dist/core/parallel.d.ts.map +0 -1
- package/dist/core/parallel.js +0 -150
- package/dist/core/parallel.js.map +0 -1
- package/dist/core/parallelCoordinator.d.ts +0 -21
- package/dist/core/parallelCoordinator.d.ts.map +0 -1
- package/dist/core/parallelCoordinator.js +0 -42
- package/dist/core/parallelCoordinator.js.map +0 -1
- package/dist/core/realityScore.d.ts +0 -159
- package/dist/core/realityScore.d.ts.map +0 -1
- package/dist/core/realityScore.js +0 -734
- package/dist/core/realityScore.js.map +0 -1
- package/dist/core/repoUpgradeOrchestrator.d.ts +0 -223
- package/dist/core/repoUpgradeOrchestrator.d.ts.map +0 -1
- package/dist/core/repoUpgradeOrchestrator.js +0 -1003
- package/dist/core/repoUpgradeOrchestrator.js.map +0 -1
- package/dist/core/securityTournament.d.ts +0 -83
- package/dist/core/securityTournament.d.ts.map +0 -1
- package/dist/core/securityTournament.js +0 -357
- package/dist/core/securityTournament.js.map +0 -1
- package/dist/core/tournamentStrategy.d.ts +0 -12
- package/dist/core/tournamentStrategy.d.ts.map +0 -1
- package/dist/core/tournamentStrategy.js +0 -41
- package/dist/core/tournamentStrategy.js.map +0 -1
- package/dist/core/universalSecurityAudit.d.ts +0 -104
- package/dist/core/universalSecurityAudit.d.ts.map +0 -1
- package/dist/core/universalSecurityAudit.js +0 -2190
- package/dist/core/universalSecurityAudit.js.map +0 -1
- package/dist/core/variantExecution.d.ts +0 -23
- package/dist/core/variantExecution.d.ts.map +0 -1
- package/dist/core/variantExecution.js +0 -58
- package/dist/core/variantExecution.js.map +0 -1
- package/dist/core/winnerStrategy.d.ts +0 -15
- package/dist/core/winnerStrategy.d.ts.map +0 -1
- package/dist/core/winnerStrategy.js +0 -18
- package/dist/core/winnerStrategy.js.map +0 -1
- package/dist/core/zeroDayDiscovery.d.ts +0 -96
- package/dist/core/zeroDayDiscovery.d.ts.map +0 -1
- package/dist/core/zeroDayDiscovery.js +0 -358
- package/dist/core/zeroDayDiscovery.js.map +0 -1
- package/dist/orchestration/repoUpgradeRunner.d.ts +0 -44
- package/dist/orchestration/repoUpgradeRunner.d.ts.map +0 -1
- package/dist/orchestration/repoUpgradeRunner.js +0 -375
- package/dist/orchestration/repoUpgradeRunner.js.map +0 -1
- package/dist/orchestration/securityAuditRunner.d.ts +0 -144
- package/dist/orchestration/securityAuditRunner.d.ts.map +0 -1
- package/dist/orchestration/securityAuditRunner.js +0 -526
- package/dist/orchestration/securityAuditRunner.js.map +0 -1
- package/dist/plugins/tools/apple/secureApplePlugin.d.ts +0 -3
- package/dist/plugins/tools/apple/secureApplePlugin.d.ts.map +0 -1
- package/dist/plugins/tools/apple/secureApplePlugin.js +0 -26
- package/dist/plugins/tools/apple/secureApplePlugin.js.map +0 -1
- package/dist/plugins/tools/authorizedSecurity/authorizedSecurityPlugin.d.ts +0 -3
- package/dist/plugins/tools/authorizedSecurity/authorizedSecurityPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/authorizedSecurity/authorizedSecurityPlugin.js +0 -9
- package/dist/plugins/tools/authorizedSecurity/authorizedSecurityPlugin.js.map +0 -1
- package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts +0 -3
- package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js +0 -27
- package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js.map +0 -1
- package/dist/plugins/tools/offensiveDestruction/offensiveDestructionPlugin.d.ts +0 -3
- package/dist/plugins/tools/offensiveDestruction/offensiveDestructionPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/offensiveDestruction/offensiveDestructionPlugin.js +0 -9
- package/dist/plugins/tools/offensiveDestruction/offensiveDestructionPlugin.js.map +0 -1
- package/dist/plugins/tools/tao/secureTaoPlugin.d.ts +0 -3
- package/dist/plugins/tools/tao/secureTaoPlugin.d.ts.map +0 -1
- package/dist/plugins/tools/tao/secureTaoPlugin.js +0 -37
- package/dist/plugins/tools/tao/secureTaoPlugin.js.map +0 -1
- package/dist/tools/secureAppleExploitation.d.ts +0 -29
- package/dist/tools/secureAppleExploitation.d.ts.map +0 -1
- package/dist/tools/secureAppleExploitation.js +0 -518
- package/dist/tools/secureAppleExploitation.js.map +0 -1
- package/dist/ui/maxOffensiveUkraineUI.d.ts +0 -94
- package/dist/ui/maxOffensiveUkraineUI.d.ts.map +0 -1
- package/dist/ui/maxOffensiveUkraineUI.js +0 -316
- package/dist/ui/maxOffensiveUkraineUI.js.map +0 -1
|
@@ -1,1056 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UNIVERSAL CAPABILITY FRAMEWORK
|
|
3
|
-
*
|
|
4
|
-
* A unified framework for all AGI capabilities that promotes code reuse,
|
|
5
|
-
* consistent patterns, and cross-module integration.
|
|
6
|
-
*
|
|
7
|
-
* KEY PRINCIPLES:
|
|
8
|
-
* 1. Single Source of Truth - Common utilities used by all capabilities
|
|
9
|
-
* 2. Dependency Injection - Capabilities declare dependencies
|
|
10
|
-
* 3. Event-Driven Architecture - Cross-module communication via events
|
|
11
|
-
* 4. Pluggable Architecture - Capabilities can be registered/unregistered at runtime
|
|
12
|
-
* 5. Type Safety - Full TypeScript support with generic types
|
|
13
|
-
*/
|
|
14
|
-
import { EventEmitter } from 'events';
|
|
15
|
-
import * as fs from 'fs';
|
|
16
|
-
import * as path from 'path';
|
|
17
|
-
import * as os from 'os';
|
|
18
|
-
import * as crypto from 'crypto';
|
|
19
|
-
import { execSync } from 'child_process';
|
|
20
|
-
// ============================================================================
|
|
21
|
-
// UNIVERSAL FRAMEWORK CORE
|
|
22
|
-
// ============================================================================
|
|
23
|
-
export class UniversalCapabilityFramework extends EventEmitter {
|
|
24
|
-
config;
|
|
25
|
-
capabilities = new Map();
|
|
26
|
-
dependencyGraph = {
|
|
27
|
-
nodes: new Map(),
|
|
28
|
-
edges: new Map(),
|
|
29
|
-
topologicalOrder: [],
|
|
30
|
-
hasCycles: false
|
|
31
|
-
};
|
|
32
|
-
sharedUtilities;
|
|
33
|
-
eventBus;
|
|
34
|
-
contextManager;
|
|
35
|
-
toolRegistry;
|
|
36
|
-
constructor(config = {}) {
|
|
37
|
-
super();
|
|
38
|
-
this.config = {
|
|
39
|
-
rootDir: config.rootDir || process.cwd(),
|
|
40
|
-
debug: config.debug || false,
|
|
41
|
-
enableEvents: config.enableEvents || true,
|
|
42
|
-
enableDependencyResolution: config.enableDependencyResolution || true,
|
|
43
|
-
sharedDataDir: config.sharedDataDir || path.join(os.tmpdir(), 'agi-universal-framework'),
|
|
44
|
-
pluginPatterns: config.pluginPatterns || ['**/*.ts', '**/*.js']
|
|
45
|
-
};
|
|
46
|
-
this.sharedUtilities = new SharedUniversalUtilities(this.config);
|
|
47
|
-
this.eventBus = new EventEmitter();
|
|
48
|
-
this.contextManager = new ContextManager();
|
|
49
|
-
this.toolRegistry = new ToolRegistry();
|
|
50
|
-
this.initializeFramework();
|
|
51
|
-
}
|
|
52
|
-
initializeFramework() {
|
|
53
|
-
// Create shared directories
|
|
54
|
-
fs.mkdirSync(this.config.sharedDataDir, { recursive: true });
|
|
55
|
-
// Initialize shared utilities
|
|
56
|
-
this.sharedUtilities = new SharedUniversalUtilities(this.config);
|
|
57
|
-
// Initialize core systems
|
|
58
|
-
this.contextManager = new ContextManager();
|
|
59
|
-
this.toolRegistry = new ToolRegistry();
|
|
60
|
-
this.log('info', 'Universal Framework initialized', {
|
|
61
|
-
rootDir: this.config.rootDir,
|
|
62
|
-
sharedDataDir: this.config.sharedDataDir
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Register a capability with the framework
|
|
67
|
-
*/
|
|
68
|
-
async registerCapability(module, metadata) {
|
|
69
|
-
const registration = {
|
|
70
|
-
module,
|
|
71
|
-
metadata,
|
|
72
|
-
instance: null,
|
|
73
|
-
status: 'registered',
|
|
74
|
-
dependencies: metadata.dependencies || [],
|
|
75
|
-
dependents: []
|
|
76
|
-
};
|
|
77
|
-
this.capabilities.set(metadata.id, registration);
|
|
78
|
-
this.updateDependencyGraph();
|
|
79
|
-
this.log('info', `Capability registered: ${metadata.id}`, {
|
|
80
|
-
version: metadata.version,
|
|
81
|
-
dependencies: metadata.dependencies
|
|
82
|
-
});
|
|
83
|
-
return registration;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Activate a capability (resolve dependencies and initialize)
|
|
87
|
-
*/
|
|
88
|
-
async activateCapability(capabilityId) {
|
|
89
|
-
const registration = this.capabilities.get(capabilityId);
|
|
90
|
-
if (!registration) {
|
|
91
|
-
throw new Error(`Capability not found: ${capabilityId}`);
|
|
92
|
-
}
|
|
93
|
-
if (registration.status === 'active') {
|
|
94
|
-
return registration;
|
|
95
|
-
}
|
|
96
|
-
// Resolve and activate dependencies
|
|
97
|
-
if (this.config.enableDependencyResolution) {
|
|
98
|
-
await this.activateDependencies(capabilityId);
|
|
99
|
-
}
|
|
100
|
-
// Initialize capability instance
|
|
101
|
-
try {
|
|
102
|
-
// Create context for capability
|
|
103
|
-
const context = {
|
|
104
|
-
profile: 'default',
|
|
105
|
-
workspaceContext: null,
|
|
106
|
-
workingDir: this.config.rootDir,
|
|
107
|
-
env: process.env
|
|
108
|
-
};
|
|
109
|
-
// Create capability instance
|
|
110
|
-
const result = await registration.module.create(context);
|
|
111
|
-
registration.instance = result;
|
|
112
|
-
registration.status = 'active';
|
|
113
|
-
this.log('info', `Capability activated: ${capabilityId}`);
|
|
114
|
-
this.emit('capability:activated', {
|
|
115
|
-
capabilityId,
|
|
116
|
-
registration
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
registration.status = 'error';
|
|
121
|
-
this.log('error', `Failed to activate capability ${capabilityId}`, error);
|
|
122
|
-
throw error;
|
|
123
|
-
}
|
|
124
|
-
return registration;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Activate all dependencies for a capability
|
|
128
|
-
*/
|
|
129
|
-
async activateDependencies(capabilityId) {
|
|
130
|
-
const registration = this.capabilities.get(capabilityId);
|
|
131
|
-
if (!registration)
|
|
132
|
-
return;
|
|
133
|
-
for (const depId of registration.dependencies) {
|
|
134
|
-
const depRegistration = this.capabilities.get(depId);
|
|
135
|
-
if (!depRegistration) {
|
|
136
|
-
throw new Error(`Dependency not found: ${depId} required by ${capabilityId}`);
|
|
137
|
-
}
|
|
138
|
-
if (depRegistration.status !== 'active') {
|
|
139
|
-
await this.activateCapability(depId);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get a capability instance
|
|
145
|
-
*/
|
|
146
|
-
getCapability(capabilityId) {
|
|
147
|
-
const registration = this.capabilities.get(capabilityId);
|
|
148
|
-
if (!registration || registration.status !== 'active') {
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
return registration.instance;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Execute a cross-capability operation
|
|
155
|
-
*/
|
|
156
|
-
async executeOperation(operation, parameters, capabilities) {
|
|
157
|
-
const operationId = crypto.randomUUID();
|
|
158
|
-
const startTime = Date.now();
|
|
159
|
-
this.log('info', `Starting cross-capability operation: ${operation}`, {
|
|
160
|
-
operationId,
|
|
161
|
-
capabilities
|
|
162
|
-
});
|
|
163
|
-
this.emit('operation:started', {
|
|
164
|
-
operationId,
|
|
165
|
-
operation,
|
|
166
|
-
parameters,
|
|
167
|
-
capabilities
|
|
168
|
-
});
|
|
169
|
-
// Activate required capabilities
|
|
170
|
-
for (const capabilityId of capabilities) {
|
|
171
|
-
await this.activateCapability(capabilityId);
|
|
172
|
-
}
|
|
173
|
-
// Execute operation across capabilities
|
|
174
|
-
const results = {};
|
|
175
|
-
for (const capabilityId of capabilities) {
|
|
176
|
-
const capability = this.getCapability(capabilityId);
|
|
177
|
-
if (capability && typeof capability.execute === 'function') {
|
|
178
|
-
try {
|
|
179
|
-
results[capabilityId] = await capability.execute({
|
|
180
|
-
operation,
|
|
181
|
-
parameters,
|
|
182
|
-
operationId
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
catch (error) {
|
|
186
|
-
results[capabilityId] = {
|
|
187
|
-
error: error instanceof Error ? error.message : String(error)
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
const duration = Date.now() - startTime;
|
|
193
|
-
this.log('info', `Completed cross-capability operation: ${operation}`, {
|
|
194
|
-
operationId,
|
|
195
|
-
duration,
|
|
196
|
-
success: true
|
|
197
|
-
});
|
|
198
|
-
this.emit('operation:completed', {
|
|
199
|
-
operationId,
|
|
200
|
-
operation,
|
|
201
|
-
parameters,
|
|
202
|
-
results,
|
|
203
|
-
duration
|
|
204
|
-
});
|
|
205
|
-
return results;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Update dependency graph
|
|
209
|
-
*/
|
|
210
|
-
updateDependencyGraph() {
|
|
211
|
-
this.dependencyGraph.nodes = this.capabilities;
|
|
212
|
-
this.dependencyGraph.edges = new Map();
|
|
213
|
-
// Build edges
|
|
214
|
-
for (const [id, registration] of this.capabilities) {
|
|
215
|
-
const edges = new Set();
|
|
216
|
-
for (const depId of registration.dependencies) {
|
|
217
|
-
edges.add(depId);
|
|
218
|
-
}
|
|
219
|
-
this.dependencyGraph.edges.set(id, edges);
|
|
220
|
-
}
|
|
221
|
-
// Detect cycles
|
|
222
|
-
this.dependencyGraph.hasCycles = this.detectCycles();
|
|
223
|
-
// Calculate topological order
|
|
224
|
-
this.dependencyGraph.topologicalOrder = this.topologicalSort();
|
|
225
|
-
}
|
|
226
|
-
detectCycles() {
|
|
227
|
-
const visited = new Set();
|
|
228
|
-
const recStack = new Set();
|
|
229
|
-
const dfs = (nodeId) => {
|
|
230
|
-
if (recStack.has(nodeId))
|
|
231
|
-
return true;
|
|
232
|
-
if (visited.has(nodeId))
|
|
233
|
-
return false;
|
|
234
|
-
visited.add(nodeId);
|
|
235
|
-
recStack.add(nodeId);
|
|
236
|
-
const edges = this.dependencyGraph.edges.get(nodeId) || new Set();
|
|
237
|
-
for (const neighbor of edges) {
|
|
238
|
-
if (dfs(neighbor))
|
|
239
|
-
return true;
|
|
240
|
-
}
|
|
241
|
-
recStack.delete(nodeId);
|
|
242
|
-
return false;
|
|
243
|
-
};
|
|
244
|
-
for (const nodeId of this.dependencyGraph.nodes.keys()) {
|
|
245
|
-
if (dfs(nodeId))
|
|
246
|
-
return true;
|
|
247
|
-
}
|
|
248
|
-
return false;
|
|
249
|
-
}
|
|
250
|
-
topologicalSort() {
|
|
251
|
-
const visited = new Set();
|
|
252
|
-
const order = [];
|
|
253
|
-
const dfs = (nodeId) => {
|
|
254
|
-
if (visited.has(nodeId))
|
|
255
|
-
return;
|
|
256
|
-
visited.add(nodeId);
|
|
257
|
-
const edges = this.dependencyGraph.edges.get(nodeId) || new Set();
|
|
258
|
-
for (const neighbor of edges) {
|
|
259
|
-
dfs(neighbor);
|
|
260
|
-
}
|
|
261
|
-
order.unshift(nodeId);
|
|
262
|
-
};
|
|
263
|
-
for (const nodeId of this.dependencyGraph.nodes.keys()) {
|
|
264
|
-
dfs(nodeId);
|
|
265
|
-
}
|
|
266
|
-
return order;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Logging utility
|
|
270
|
-
*/
|
|
271
|
-
log(level, message, data) {
|
|
272
|
-
if (!this.config.debug && level === 'info')
|
|
273
|
-
return;
|
|
274
|
-
const timestamp = new Date().toISOString();
|
|
275
|
-
const logEntry = {
|
|
276
|
-
timestamp,
|
|
277
|
-
level,
|
|
278
|
-
message,
|
|
279
|
-
data
|
|
280
|
-
};
|
|
281
|
-
console.log(`[${timestamp}] [${level.toUpperCase()}] ${message}`);
|
|
282
|
-
if (data && this.config.debug) {
|
|
283
|
-
console.log(JSON.stringify(data, null, 2));
|
|
284
|
-
}
|
|
285
|
-
this.emit('log', logEntry);
|
|
286
|
-
}
|
|
287
|
-
// ============================================================================
|
|
288
|
-
// PUBLIC API
|
|
289
|
-
// ============================================================================
|
|
290
|
-
/**
|
|
291
|
-
* Get framework configuration
|
|
292
|
-
*/
|
|
293
|
-
getConfig() {
|
|
294
|
-
return { ...this.config };
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* List all registered capabilities
|
|
298
|
-
*/
|
|
299
|
-
listCapabilities() {
|
|
300
|
-
return Array.from(this.capabilities.values());
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Get dependency graph
|
|
304
|
-
*/
|
|
305
|
-
getDependencyGraph() {
|
|
306
|
-
return { ...this.dependencyGraph };
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Get shared utilities
|
|
310
|
-
*/
|
|
311
|
-
getSharedUtilities() {
|
|
312
|
-
return this.sharedUtilities;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Get event bus
|
|
316
|
-
*/
|
|
317
|
-
getEventBus() {
|
|
318
|
-
return this.eventBus;
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Get tool registry
|
|
322
|
-
*/
|
|
323
|
-
getToolRegistry() {
|
|
324
|
-
return this.toolRegistry;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
// ============================================================================
|
|
328
|
-
// SHARED UNIVERSAL UTILITIES
|
|
329
|
-
// ============================================================================
|
|
330
|
-
export class SharedUniversalUtilities {
|
|
331
|
-
config;
|
|
332
|
-
constructor(config) {
|
|
333
|
-
this.config = config;
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Generate unique operation ID
|
|
337
|
-
*/
|
|
338
|
-
generateOperationId(prefix = 'op') {
|
|
339
|
-
const timestamp = Date.now();
|
|
340
|
-
const random = crypto.randomBytes(8).toString('hex');
|
|
341
|
-
return `${prefix}_${timestamp}_${random}`;
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Create shared data directory for operation
|
|
345
|
-
*/
|
|
346
|
-
createOperationDir(operationId) {
|
|
347
|
-
const dirPath = path.join(this.config.sharedDataDir, 'operations', operationId);
|
|
348
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
349
|
-
return dirPath;
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Save evidence/data to shared storage
|
|
353
|
-
*/
|
|
354
|
-
saveToSharedStorage(operationId, fileName, data) {
|
|
355
|
-
const opDir = this.createOperationDir(operationId);
|
|
356
|
-
const filePath = path.join(opDir, fileName);
|
|
357
|
-
const content = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
|
|
358
|
-
fs.writeFileSync(filePath, content, 'utf8');
|
|
359
|
-
return filePath;
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Read from shared storage
|
|
363
|
-
*/
|
|
364
|
-
readFromSharedStorage(operationId, fileName) {
|
|
365
|
-
const filePath = path.join(this.config.sharedDataDir, 'operations', operationId, fileName);
|
|
366
|
-
if (!fs.existsSync(filePath))
|
|
367
|
-
return null;
|
|
368
|
-
return fs.readFileSync(filePath, 'utf8');
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Merge multiple objects (deep merge)
|
|
372
|
-
*/
|
|
373
|
-
deepMerge(target, ...sources) {
|
|
374
|
-
const result = { ...target };
|
|
375
|
-
for (const source of sources) {
|
|
376
|
-
for (const key in source) {
|
|
377
|
-
if (source[key] !== null && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
378
|
-
if (!result[key] || typeof result[key] !== 'object') {
|
|
379
|
-
result[key] = {};
|
|
380
|
-
}
|
|
381
|
-
result[key] = this.deepMerge(result[key], source[key]);
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
result[key] = source[key];
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
return result;
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Validate configuration against schema
|
|
392
|
-
*/
|
|
393
|
-
validateConfig(config, schema) {
|
|
394
|
-
const errors = [];
|
|
395
|
-
const validateObject = (obj, sch, path = '') => {
|
|
396
|
-
if (sch.type === 'object' && sch.properties) {
|
|
397
|
-
for (const [key, propSchema] of Object.entries(sch.properties)) {
|
|
398
|
-
const fullPath = path ? `${path}.${key}` : key;
|
|
399
|
-
const typedPropSchema = propSchema;
|
|
400
|
-
if (typedPropSchema.required && obj[key] === undefined) {
|
|
401
|
-
errors.push(`Missing required property: ${fullPath}`);
|
|
402
|
-
}
|
|
403
|
-
else if (obj[key] !== undefined) {
|
|
404
|
-
validateObject(obj[key], propSchema, fullPath);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
};
|
|
409
|
-
validateObject(config, schema);
|
|
410
|
-
return {
|
|
411
|
-
valid: errors.length === 0,
|
|
412
|
-
errors
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Execute with retry logic
|
|
417
|
-
*/
|
|
418
|
-
async executeWithRetry(operation, maxRetries = 3, delay = 1000) {
|
|
419
|
-
let lastError;
|
|
420
|
-
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
421
|
-
try {
|
|
422
|
-
return await operation();
|
|
423
|
-
}
|
|
424
|
-
catch (error) {
|
|
425
|
-
lastError = error;
|
|
426
|
-
if (attempt < maxRetries) {
|
|
427
|
-
await new Promise(resolve => setTimeout(resolve, delay * attempt));
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
throw lastError;
|
|
432
|
-
}
|
|
433
|
-
/**
|
|
434
|
-
* Create standardized tool definition
|
|
435
|
-
*/
|
|
436
|
-
createToolDefinition(name, description, parameters, handler) {
|
|
437
|
-
return {
|
|
438
|
-
name,
|
|
439
|
-
description,
|
|
440
|
-
parameters,
|
|
441
|
-
handler
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
// ============================================================================
|
|
446
|
-
// CONTEXT MANAGER
|
|
447
|
-
// ============================================================================
|
|
448
|
-
export class ContextManager {
|
|
449
|
-
contexts = new Map();
|
|
450
|
-
defaultContext = {};
|
|
451
|
-
/**
|
|
452
|
-
* Set context value
|
|
453
|
-
*/
|
|
454
|
-
setContext(key, value) {
|
|
455
|
-
this.contexts.set(key, value);
|
|
456
|
-
}
|
|
457
|
-
/**
|
|
458
|
-
* Get context value
|
|
459
|
-
*/
|
|
460
|
-
getContext(key) {
|
|
461
|
-
return this.contexts.get(key);
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* Clear context
|
|
465
|
-
*/
|
|
466
|
-
clearContext(key) {
|
|
467
|
-
return this.contexts.delete(key);
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Get all contexts
|
|
471
|
-
*/
|
|
472
|
-
getAllContexts() {
|
|
473
|
-
return Object.fromEntries(this.contexts.entries());
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Save context to file
|
|
477
|
-
*/
|
|
478
|
-
saveContexts(filePath) {
|
|
479
|
-
const data = this.getAllContexts();
|
|
480
|
-
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf8');
|
|
481
|
-
}
|
|
482
|
-
/**
|
|
483
|
-
* Load contexts from file
|
|
484
|
-
*/
|
|
485
|
-
loadContexts(filePath) {
|
|
486
|
-
if (!fs.existsSync(filePath))
|
|
487
|
-
return;
|
|
488
|
-
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
489
|
-
for (const [key, value] of Object.entries(data)) {
|
|
490
|
-
this.contexts.set(key, value);
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
// ============================================================================
|
|
495
|
-
// TOOL REGISTRY
|
|
496
|
-
// ============================================================================
|
|
497
|
-
export class ToolRegistry {
|
|
498
|
-
tools = new Map();
|
|
499
|
-
toolSuites = new Map();
|
|
500
|
-
/**
|
|
501
|
-
* Register a tool
|
|
502
|
-
*/
|
|
503
|
-
registerTool(tool) {
|
|
504
|
-
this.tools.set(tool.name, tool);
|
|
505
|
-
}
|
|
506
|
-
/**
|
|
507
|
-
* Register a tool suite
|
|
508
|
-
*/
|
|
509
|
-
registerToolSuite(suite) {
|
|
510
|
-
this.toolSuites.set(suite.id, suite);
|
|
511
|
-
for (const tool of suite.tools) {
|
|
512
|
-
this.registerTool(tool);
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
/**
|
|
516
|
-
* Get a tool by name
|
|
517
|
-
*/
|
|
518
|
-
getTool(name) {
|
|
519
|
-
return this.tools.get(name);
|
|
520
|
-
}
|
|
521
|
-
/**
|
|
522
|
-
* Get a tool suite by ID
|
|
523
|
-
*/
|
|
524
|
-
getToolSuite(id) {
|
|
525
|
-
return this.toolSuites.get(id);
|
|
526
|
-
}
|
|
527
|
-
/**
|
|
528
|
-
* List all tools
|
|
529
|
-
*/
|
|
530
|
-
listTools() {
|
|
531
|
-
return Array.from(this.tools.values());
|
|
532
|
-
}
|
|
533
|
-
/**
|
|
534
|
-
* List all tool suites
|
|
535
|
-
*/
|
|
536
|
-
listToolSuites() {
|
|
537
|
-
return Array.from(this.toolSuites.values());
|
|
538
|
-
}
|
|
539
|
-
/**
|
|
540
|
-
* Search tools by criteria
|
|
541
|
-
*/
|
|
542
|
-
searchTools(criteria) {
|
|
543
|
-
return Array.from(this.tools.values()).filter(criteria);
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
// ============================================================================
|
|
547
|
-
// UNIVERSAL CAPABILITY BASE CLASS
|
|
548
|
-
// ============================================================================
|
|
549
|
-
export class UniversalCapabilityModule {
|
|
550
|
-
framework;
|
|
551
|
-
utilities;
|
|
552
|
-
contextManager;
|
|
553
|
-
toolRegistry;
|
|
554
|
-
config = {};
|
|
555
|
-
constructor(framework, config = {}) {
|
|
556
|
-
this.framework = framework;
|
|
557
|
-
this.utilities = framework.getSharedUtilities();
|
|
558
|
-
this.contextManager = new ContextManager();
|
|
559
|
-
this.toolRegistry = framework.getToolRegistry();
|
|
560
|
-
this.config = config;
|
|
561
|
-
}
|
|
562
|
-
/**
|
|
563
|
-
* Initialize capability (called after constructor)
|
|
564
|
-
*/
|
|
565
|
-
async initialize() {
|
|
566
|
-
// Default implementation does nothing
|
|
567
|
-
}
|
|
568
|
-
/**
|
|
569
|
-
* Cleanup capability (called before disposal)
|
|
570
|
-
*/
|
|
571
|
-
async cleanup() {
|
|
572
|
-
// Default implementation does nothing
|
|
573
|
-
}
|
|
574
|
-
/**
|
|
575
|
-
* Execute an operation (common interface for all capabilities)
|
|
576
|
-
*/
|
|
577
|
-
async execute(params) {
|
|
578
|
-
throw new Error(`Execute method not implemented for capability: ${this.id}`);
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Validate configuration
|
|
582
|
-
*/
|
|
583
|
-
validateConfig(schema) {
|
|
584
|
-
return this.utilities.validateConfig(this.config, schema);
|
|
585
|
-
}
|
|
586
|
-
/**
|
|
587
|
-
* Log with capability context
|
|
588
|
-
*/
|
|
589
|
-
log(level, message, data) {
|
|
590
|
-
const logData = {
|
|
591
|
-
capabilityId: this.id,
|
|
592
|
-
...data
|
|
593
|
-
};
|
|
594
|
-
this.framework.emit('log', {
|
|
595
|
-
timestamp: Date.now(),
|
|
596
|
-
level,
|
|
597
|
-
message,
|
|
598
|
-
data: logData
|
|
599
|
-
});
|
|
600
|
-
}
|
|
601
|
-
/**
|
|
602
|
-
* Emit framework event
|
|
603
|
-
*/
|
|
604
|
-
emitEvent(type, data) {
|
|
605
|
-
this.framework.emit(`capability:${this.id}:${type}`, {
|
|
606
|
-
timestamp: Date.now(),
|
|
607
|
-
source: this.id,
|
|
608
|
-
data
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
/**
|
|
612
|
-
* Create fallback file tool for filesystem capability
|
|
613
|
-
*/
|
|
614
|
-
createFallbackFileTool() {
|
|
615
|
-
return this.utilities.createToolDefinition('read_file_fallback', 'Fallback file reading tool', {
|
|
616
|
-
type: 'object',
|
|
617
|
-
properties: {
|
|
618
|
-
path: { type: 'string', description: 'Path to file' }
|
|
619
|
-
},
|
|
620
|
-
required: ['path']
|
|
621
|
-
}, async (args) => {
|
|
622
|
-
try {
|
|
623
|
-
return fs.readFileSync(args.path, 'utf8');
|
|
624
|
-
}
|
|
625
|
-
catch (error) {
|
|
626
|
-
return `Error reading file: ${error.message}`;
|
|
627
|
-
}
|
|
628
|
-
});
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
// ============================================================================
|
|
632
|
-
// UNIVERSAL CAPABILITY FACTORY
|
|
633
|
-
// ============================================================================
|
|
634
|
-
export class UniversalCapabilityFactory {
|
|
635
|
-
static capabilityRegistry = new Map();
|
|
636
|
-
/**
|
|
637
|
-
* Register a capability class
|
|
638
|
-
*/
|
|
639
|
-
static registerCapability(id, constructor) {
|
|
640
|
-
this.capabilityRegistry.set(id, constructor);
|
|
641
|
-
}
|
|
642
|
-
/**
|
|
643
|
-
* Create capability instance
|
|
644
|
-
*/
|
|
645
|
-
static createCapability(id, framework, config = {}) {
|
|
646
|
-
const Constructor = this.capabilityRegistry.get(id);
|
|
647
|
-
if (!Constructor)
|
|
648
|
-
return null;
|
|
649
|
-
return new Constructor(framework, config);
|
|
650
|
-
}
|
|
651
|
-
/**
|
|
652
|
-
* List all registered capability types
|
|
653
|
-
*/
|
|
654
|
-
static listCapabilityTypes() {
|
|
655
|
-
return Array.from(this.capabilityRegistry.keys());
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
// ============================================================================
|
|
659
|
-
// PRE-BUILT UNIVERSAL CAPABILITIES
|
|
660
|
-
// ============================================================================
|
|
661
|
-
/**
|
|
662
|
-
* Universal Filesystem Capability
|
|
663
|
-
*/
|
|
664
|
-
export class UniversalFilesystemCapability extends UniversalCapabilityModule {
|
|
665
|
-
id = 'capability.universal-filesystem';
|
|
666
|
-
metadata = {
|
|
667
|
-
id: this.id,
|
|
668
|
-
version: '1.0.0',
|
|
669
|
-
description: 'Universal filesystem operations with cross-platform support',
|
|
670
|
-
author: 'AGI Core Team',
|
|
671
|
-
dependencies: [],
|
|
672
|
-
provides: ['filesystem.read', 'filesystem.write', 'filesystem.list', 'filesystem.search'],
|
|
673
|
-
requires: [],
|
|
674
|
-
category: 'core',
|
|
675
|
-
tags: ['filesystem', 'io', 'storage']
|
|
676
|
-
};
|
|
677
|
-
async create(context) {
|
|
678
|
-
try {
|
|
679
|
-
const { createFileTools } = await import('../tools/fileTools.js');
|
|
680
|
-
return {
|
|
681
|
-
id: 'filesystem.universal',
|
|
682
|
-
description: 'Universal filesystem access with enhanced capabilities',
|
|
683
|
-
toolSuite: {
|
|
684
|
-
id: 'fs-universal',
|
|
685
|
-
description: 'Universal filesystem operations',
|
|
686
|
-
tools: createFileTools(context.workingDir)
|
|
687
|
-
},
|
|
688
|
-
metadata: {
|
|
689
|
-
workingDir: context.workingDir,
|
|
690
|
-
platform: os.platform(),
|
|
691
|
-
capabilities: this.metadata.provides
|
|
692
|
-
}
|
|
693
|
-
};
|
|
694
|
-
}
|
|
695
|
-
catch (error) {
|
|
696
|
-
// Fallback to simple implementation if module not available
|
|
697
|
-
return {
|
|
698
|
-
id: 'filesystem.universal-fallback',
|
|
699
|
-
description: 'Universal filesystem access (fallback mode)',
|
|
700
|
-
toolSuite: {
|
|
701
|
-
id: 'fs-universal-fallback',
|
|
702
|
-
description: 'Universal filesystem operations (fallback)',
|
|
703
|
-
tools: [this.createFallbackFileTool()]
|
|
704
|
-
},
|
|
705
|
-
metadata: {
|
|
706
|
-
workingDir: context.workingDir,
|
|
707
|
-
platform: os.platform(),
|
|
708
|
-
capabilities: this.metadata.provides,
|
|
709
|
-
fallback: true
|
|
710
|
-
}
|
|
711
|
-
};
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
async execute(params) {
|
|
715
|
-
const opId = params.operationId || this.utilities.generateOperationId('fs');
|
|
716
|
-
switch (params.operation) {
|
|
717
|
-
case 'read':
|
|
718
|
-
return this.readFile(params.parameters.path);
|
|
719
|
-
case 'write':
|
|
720
|
-
return this.writeFile(params.parameters.path, params.parameters.content);
|
|
721
|
-
case 'list':
|
|
722
|
-
return this.listDirectory(params.parameters.path, params.parameters.recursive);
|
|
723
|
-
case 'search':
|
|
724
|
-
return this.searchFiles(params.parameters.pattern, params.parameters.path);
|
|
725
|
-
default:
|
|
726
|
-
throw new Error(`Unknown filesystem operation: ${params.operation}`);
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
readFile(filePath) {
|
|
730
|
-
return fs.readFileSync(filePath, 'utf8');
|
|
731
|
-
}
|
|
732
|
-
writeFile(filePath, content) {
|
|
733
|
-
fs.writeFileSync(filePath, content, 'utf8');
|
|
734
|
-
}
|
|
735
|
-
listDirectory(dirPath, recursive = false) {
|
|
736
|
-
if (!fs.existsSync(dirPath))
|
|
737
|
-
return [];
|
|
738
|
-
const items = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
739
|
-
const result = [];
|
|
740
|
-
for (const item of items) {
|
|
741
|
-
const fullPath = path.join(dirPath, item.name);
|
|
742
|
-
result.push(fullPath);
|
|
743
|
-
if (recursive && item.isDirectory()) {
|
|
744
|
-
result.push(...this.listDirectory(fullPath, true));
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
return result;
|
|
748
|
-
}
|
|
749
|
-
searchFiles(pattern, basePath) {
|
|
750
|
-
const files = [];
|
|
751
|
-
const searchDir = (dir) => {
|
|
752
|
-
try {
|
|
753
|
-
const items = fs.readdirSync(dir);
|
|
754
|
-
for (const item of items) {
|
|
755
|
-
const fullPath = path.join(dir, item);
|
|
756
|
-
const stat = fs.statSync(fullPath);
|
|
757
|
-
if (stat.isDirectory()) {
|
|
758
|
-
searchDir(fullPath);
|
|
759
|
-
}
|
|
760
|
-
else if (item.includes(pattern) || fullPath.includes(pattern)) {
|
|
761
|
-
files.push(fullPath);
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
catch (error) {
|
|
766
|
-
// Skip directories we can't read
|
|
767
|
-
}
|
|
768
|
-
};
|
|
769
|
-
searchDir(basePath);
|
|
770
|
-
return files;
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
/**
|
|
774
|
-
* Universal Bash Capability
|
|
775
|
-
*/
|
|
776
|
-
export class UniversalBashCapability extends UniversalCapabilityModule {
|
|
777
|
-
id = 'capability.universal-bash';
|
|
778
|
-
metadata = {
|
|
779
|
-
id: this.id,
|
|
780
|
-
version: '1.0.0',
|
|
781
|
-
description: 'Universal bash/shell execution with cross-platform support',
|
|
782
|
-
author: 'AGI Core Team',
|
|
783
|
-
dependencies: ['capability.universal-filesystem'],
|
|
784
|
-
provides: ['bash.execute', 'bash.script', 'bash.pipeline', 'bash.background'],
|
|
785
|
-
requires: [],
|
|
786
|
-
category: 'core',
|
|
787
|
-
tags: ['bash', 'shell', 'execution']
|
|
788
|
-
};
|
|
789
|
-
async create(context) {
|
|
790
|
-
try {
|
|
791
|
-
const { createBashTools } = await import('../tools/bashTools.js');
|
|
792
|
-
return {
|
|
793
|
-
id: 'bash.universal',
|
|
794
|
-
description: 'Universal bash execution with enhanced capabilities',
|
|
795
|
-
toolSuite: {
|
|
796
|
-
id: 'bash-universal',
|
|
797
|
-
description: 'Universal bash/shell operations',
|
|
798
|
-
tools: createBashTools(context.workingDir)
|
|
799
|
-
},
|
|
800
|
-
metadata: {
|
|
801
|
-
workingDir: context.workingDir,
|
|
802
|
-
platform: os.platform(),
|
|
803
|
-
shell: process.env.SHELL || 'bash',
|
|
804
|
-
capabilities: this.metadata.provides
|
|
805
|
-
}
|
|
806
|
-
};
|
|
807
|
-
}
|
|
808
|
-
catch (error) {
|
|
809
|
-
// Fallback to simple implementation
|
|
810
|
-
return {
|
|
811
|
-
id: 'bash.universal-fallback',
|
|
812
|
-
description: 'Universal bash execution (fallback mode)',
|
|
813
|
-
toolSuite: {
|
|
814
|
-
id: 'bash-universal-fallback',
|
|
815
|
-
description: 'Universal bash/shell operations (fallback)',
|
|
816
|
-
tools: [this.createFallbackBashTool()]
|
|
817
|
-
},
|
|
818
|
-
metadata: {
|
|
819
|
-
workingDir: context.workingDir,
|
|
820
|
-
platform: os.platform(),
|
|
821
|
-
capabilities: this.metadata.provides,
|
|
822
|
-
fallback: true
|
|
823
|
-
}
|
|
824
|
-
};
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
createFallbackBashTool() {
|
|
828
|
-
return this.utilities.createToolDefinition('execute_command_fallback', 'Fallback command execution tool', {
|
|
829
|
-
type: 'object',
|
|
830
|
-
properties: {
|
|
831
|
-
command: { type: 'string', description: 'Command to execute' },
|
|
832
|
-
cwd: { type: 'string', description: 'Working directory', default: process.cwd() }
|
|
833
|
-
},
|
|
834
|
-
required: ['command']
|
|
835
|
-
}, async (args) => {
|
|
836
|
-
try {
|
|
837
|
-
const result = execSync(args.command, {
|
|
838
|
-
cwd: args.cwd || process.cwd(),
|
|
839
|
-
encoding: 'utf8',
|
|
840
|
-
timeout: 30000
|
|
841
|
-
});
|
|
842
|
-
return result.trim();
|
|
843
|
-
}
|
|
844
|
-
catch (error) {
|
|
845
|
-
return `Error executing command: ${error.message}`;
|
|
846
|
-
}
|
|
847
|
-
});
|
|
848
|
-
}
|
|
849
|
-
async execute(params) {
|
|
850
|
-
const opId = params.operationId || this.utilities.generateOperationId('bash');
|
|
851
|
-
try {
|
|
852
|
-
const result = execSync(params.parameters.command, {
|
|
853
|
-
cwd: params.parameters.cwd || this.config.workingDir || process.cwd(),
|
|
854
|
-
encoding: 'utf8',
|
|
855
|
-
timeout: params.parameters.timeout || 30000
|
|
856
|
-
});
|
|
857
|
-
return {
|
|
858
|
-
success: true,
|
|
859
|
-
output: result.trim(),
|
|
860
|
-
exitCode: 0
|
|
861
|
-
};
|
|
862
|
-
}
|
|
863
|
-
catch (error) {
|
|
864
|
-
return {
|
|
865
|
-
success: false,
|
|
866
|
-
output: error.stderr?.toString() || error.message,
|
|
867
|
-
exitCode: error.status || 1
|
|
868
|
-
};
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
/**
|
|
873
|
-
* Universal Search Capability
|
|
874
|
-
*/
|
|
875
|
-
export class UniversalSearchCapability extends UniversalCapabilityModule {
|
|
876
|
-
id = 'capability.universal-search';
|
|
877
|
-
metadata = {
|
|
878
|
-
id: this.id,
|
|
879
|
-
version: '1.0.0',
|
|
880
|
-
description: 'Universal search across files, content, and definitions',
|
|
881
|
-
author: 'AGI Core Team',
|
|
882
|
-
dependencies: ['capability.universal-filesystem'],
|
|
883
|
-
provides: ['search.files', 'search.content', 'search.definitions', 'search.pattern'],
|
|
884
|
-
requires: [],
|
|
885
|
-
category: 'core',
|
|
886
|
-
tags: ['search', 'find', 'grep', 'pattern']
|
|
887
|
-
};
|
|
888
|
-
async create(context) {
|
|
889
|
-
try {
|
|
890
|
-
const { createSearchTools } = await import('../tools/searchTools.js');
|
|
891
|
-
return {
|
|
892
|
-
id: 'search.universal',
|
|
893
|
-
description: 'Universal search across files and content',
|
|
894
|
-
toolSuite: {
|
|
895
|
-
id: 'search-universal',
|
|
896
|
-
description: 'Universal search operations',
|
|
897
|
-
tools: createSearchTools(context.workingDir)
|
|
898
|
-
},
|
|
899
|
-
metadata: {
|
|
900
|
-
workingDir: context.workingDir,
|
|
901
|
-
capabilities: this.metadata.provides
|
|
902
|
-
}
|
|
903
|
-
};
|
|
904
|
-
}
|
|
905
|
-
catch (error) {
|
|
906
|
-
// Fallback to simple implementation
|
|
907
|
-
return {
|
|
908
|
-
id: 'search.universal-fallback',
|
|
909
|
-
description: 'Universal search (fallback mode)',
|
|
910
|
-
toolSuite: {
|
|
911
|
-
id: 'search-universal-fallback',
|
|
912
|
-
description: 'Universal search operations (fallback)',
|
|
913
|
-
tools: [this.createFallbackSearchTool()]
|
|
914
|
-
},
|
|
915
|
-
metadata: {
|
|
916
|
-
workingDir: context.workingDir,
|
|
917
|
-
capabilities: this.metadata.provides,
|
|
918
|
-
fallback: true
|
|
919
|
-
}
|
|
920
|
-
};
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
createFallbackSearchTool() {
|
|
924
|
-
return this.utilities.createToolDefinition('search_fallback', 'Fallback search tool', {
|
|
925
|
-
type: 'object',
|
|
926
|
-
properties: {
|
|
927
|
-
pattern: { type: 'string', description: 'Search pattern' },
|
|
928
|
-
path: { type: 'string', description: 'Search directory', default: process.cwd() }
|
|
929
|
-
},
|
|
930
|
-
required: ['pattern']
|
|
931
|
-
}, async (args) => {
|
|
932
|
-
const searchDir = args.path || process.cwd();
|
|
933
|
-
const files = [];
|
|
934
|
-
const search = (dir) => {
|
|
935
|
-
try {
|
|
936
|
-
const items = fs.readdirSync(dir);
|
|
937
|
-
for (const item of items) {
|
|
938
|
-
const fullPath = path.join(dir, item);
|
|
939
|
-
const stat = fs.statSync(fullPath);
|
|
940
|
-
if (stat.isDirectory()) {
|
|
941
|
-
search(fullPath);
|
|
942
|
-
}
|
|
943
|
-
else if (item.includes(args.pattern) || fullPath.includes(args.pattern)) {
|
|
944
|
-
files.push(fullPath);
|
|
945
|
-
}
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
catch (error) {
|
|
949
|
-
// Skip unreadable directories
|
|
950
|
-
}
|
|
951
|
-
};
|
|
952
|
-
search(searchDir);
|
|
953
|
-
return files.length > 0 ? files.join('\n') : 'No matches found';
|
|
954
|
-
});
|
|
955
|
-
}
|
|
956
|
-
async execute(params) {
|
|
957
|
-
const opId = params.operationId || this.utilities.generateOperationId('search');
|
|
958
|
-
// Implementation would use the search tools
|
|
959
|
-
// For now, return a placeholder
|
|
960
|
-
return {
|
|
961
|
-
operation: params.operation,
|
|
962
|
-
parameters: params.parameters,
|
|
963
|
-
results: []
|
|
964
|
-
};
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
/**
|
|
968
|
-
* Universal Edit Capability
|
|
969
|
-
*/
|
|
970
|
-
export class UniversalEditCapability extends UniversalCapabilityModule {
|
|
971
|
-
id = 'capability.universal-edit';
|
|
972
|
-
metadata = {
|
|
973
|
-
id: this.id,
|
|
974
|
-
version: '1.0.0',
|
|
975
|
-
description: 'Universal file editing with exact string replacement',
|
|
976
|
-
author: 'AGI Core Team',
|
|
977
|
-
dependencies: ['capability.universal-filesystem'],
|
|
978
|
-
provides: ['edit.file', 'edit.replace', 'edit.create', 'edit.delete'],
|
|
979
|
-
requires: [],
|
|
980
|
-
category: 'core',
|
|
981
|
-
tags: ['edit', 'modify', 'file', 'code']
|
|
982
|
-
};
|
|
983
|
-
async create(context) {
|
|
984
|
-
try {
|
|
985
|
-
const { createEditTools } = await import('../tools/editTools.js');
|
|
986
|
-
return {
|
|
987
|
-
id: 'edit.universal',
|
|
988
|
-
description: 'Universal file editing capabilities',
|
|
989
|
-
toolSuite: {
|
|
990
|
-
id: 'edit-universal',
|
|
991
|
-
description: 'Universal edit operations',
|
|
992
|
-
tools: createEditTools(context.workingDir || process.cwd())
|
|
993
|
-
},
|
|
994
|
-
metadata: {
|
|
995
|
-
workingDir: context.workingDir,
|
|
996
|
-
capabilities: this.metadata.provides
|
|
997
|
-
}
|
|
998
|
-
};
|
|
999
|
-
}
|
|
1000
|
-
catch (error) {
|
|
1001
|
-
// Fallback to simple implementation
|
|
1002
|
-
return {
|
|
1003
|
-
id: 'edit.universal-fallback',
|
|
1004
|
-
description: 'Universal file editing (fallback mode)',
|
|
1005
|
-
toolSuite: {
|
|
1006
|
-
id: 'edit-universal-fallback',
|
|
1007
|
-
description: 'Universal edit operations (fallback)',
|
|
1008
|
-
tools: [this.createFallbackEditTool()]
|
|
1009
|
-
},
|
|
1010
|
-
metadata: {
|
|
1011
|
-
workingDir: context.workingDir,
|
|
1012
|
-
capabilities: this.metadata.provides,
|
|
1013
|
-
fallback: true
|
|
1014
|
-
}
|
|
1015
|
-
};
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
createFallbackEditTool() {
|
|
1019
|
-
return this.utilities.createToolDefinition('edit_file_fallback', 'Fallback file editing tool', {
|
|
1020
|
-
type: 'object',
|
|
1021
|
-
properties: {
|
|
1022
|
-
file_path: { type: 'string', description: 'Path to file' },
|
|
1023
|
-
old_string: { type: 'string', description: 'Text to replace' },
|
|
1024
|
-
new_string: { type: 'string', description: 'New text', default: '' }
|
|
1025
|
-
},
|
|
1026
|
-
required: ['file_path', 'old_string']
|
|
1027
|
-
}, async (args) => {
|
|
1028
|
-
try {
|
|
1029
|
-
const content = fs.readFileSync(args.file_path, 'utf8');
|
|
1030
|
-
const newContent = content.replace(args.old_string, args.new_string || '');
|
|
1031
|
-
fs.writeFileSync(args.file_path, newContent, 'utf8');
|
|
1032
|
-
return `File ${args.file_path} updated successfully`;
|
|
1033
|
-
}
|
|
1034
|
-
catch (error) {
|
|
1035
|
-
return `Error editing file: ${error.message}`;
|
|
1036
|
-
}
|
|
1037
|
-
});
|
|
1038
|
-
}
|
|
1039
|
-
async execute(params) {
|
|
1040
|
-
const opId = params.operationId || this.utilities.generateOperationId('edit');
|
|
1041
|
-
// Implementation would use the edit tools
|
|
1042
|
-
// For now, return a placeholder
|
|
1043
|
-
return {
|
|
1044
|
-
operation: params.operation,
|
|
1045
|
-
parameters: params.parameters,
|
|
1046
|
-
success: true
|
|
1047
|
-
};
|
|
1048
|
-
}
|
|
1049
|
-
}
|
|
1050
|
-
// ============================================================================
|
|
1051
|
-
// UNIVERSAL FRAMEWORK EXPORTS
|
|
1052
|
-
// ============================================================================
|
|
1053
|
-
export default UniversalCapabilityFramework;
|
|
1054
|
-
// Note: Individual capability classes are already exported at their definitions
|
|
1055
|
-
// (UniversalFilesystemCapability, UniversalBashCapability, UniversalSearchCapability, UniversalEditCapability)
|
|
1056
|
-
//# sourceMappingURL=universalCapabilityFramework.js.map
|