erosolar-cli 2.1.287 → 2.1.289
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/bin/agi-cli.d.ts +15 -0
- package/dist/bin/agi-cli.d.ts.map +1 -0
- package/dist/bin/agi-cli.js +175 -0
- package/dist/bin/agi-cli.js.map +1 -0
- package/dist/capabilities/metaCapability.d.ts +22 -0
- package/dist/capabilities/metaCapability.d.ts.map +1 -0
- package/dist/capabilities/metaCapability.js +33 -0
- package/dist/capabilities/metaCapability.js.map +1 -0
- package/dist/capabilities/orchestrationCapability.d.ts.map +1 -1
- package/dist/capabilities/orchestrationCapability.js +6 -2
- package/dist/capabilities/orchestrationCapability.js.map +1 -1
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +0 -3
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agiCore.d.ts +149 -0
- package/dist/core/agiCore.d.ts.map +1 -0
- package/dist/core/agiCore.js +1085 -0
- package/dist/core/agiCore.js.map +1 -0
- package/dist/core/defensiveSecurityToolkit.d.ts.map +1 -1
- package/dist/core/defensiveSecurityToolkit.js +1 -0
- package/dist/core/defensiveSecurityToolkit.js.map +1 -1
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/hooks.js +101 -8
- package/dist/core/hooks.js.map +1 -1
- package/dist/core/iMessageVerification.d.ts.map +1 -1
- package/dist/core/iMessageVerification.js +1 -0
- package/dist/core/iMessageVerification.js.map +1 -1
- package/dist/core/integrityVerification.d.ts.map +1 -1
- package/dist/core/integrityVerification.js +1 -0
- package/dist/core/integrityVerification.js.map +1 -1
- package/dist/core/intelligentTargetResearcher.d.ts.map +1 -1
- package/dist/core/intelligentTargetResearcher.js +1 -0
- package/dist/core/intelligentTargetResearcher.js.map +1 -1
- package/dist/core/persistentObjectiveStore.d.ts.map +1 -1
- package/dist/core/persistentObjectiveStore.js +1 -0
- package/dist/core/persistentObjectiveStore.js.map +1 -1
- package/dist/core/productTestHarness.d.ts +3 -3
- package/dist/core/productTestHarness.d.ts.map +1 -1
- package/dist/core/productTestHarness.js +4 -3
- package/dist/core/productTestHarness.js.map +1 -1
- package/dist/core/realAGI.d.ts +113 -0
- package/dist/core/realAGI.d.ts.map +1 -0
- package/dist/core/realAGI.js +899 -0
- package/dist/core/realAGI.js.map +1 -0
- package/dist/core/securityDeliverableGenerator.d.ts.map +1 -1
- package/dist/core/securityDeliverableGenerator.js +1 -0
- package/dist/core/securityDeliverableGenerator.js.map +1 -1
- package/dist/core/sourceCodeManager.d.ts +1 -1
- package/dist/core/sourceCodeManager.d.ts.map +1 -1
- package/dist/core/techFraudInvestigator.d.ts.map +1 -1
- package/dist/core/techFraudInvestigator.js +1 -0
- package/dist/core/techFraudInvestigator.js.map +1 -1
- package/dist/core/toolEmbeddings.d.ts +64 -0
- package/dist/core/toolEmbeddings.d.ts.map +1 -0
- package/dist/core/toolEmbeddings.js +471 -0
- package/dist/core/toolEmbeddings.js.map +1 -0
- package/dist/core/toolRuntime.d.ts +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +1 -1
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/unifiedAGI.d.ts +158 -0
- package/dist/core/unifiedAGI.d.ts.map +1 -0
- package/dist/core/unifiedAGI.js +685 -0
- package/dist/core/unifiedAGI.js.map +1 -0
- package/dist/plugins/tools/agi/agiPlugin.d.ts +24 -0
- package/dist/plugins/tools/agi/agiPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/agi/agiPlugin.js +511 -0
- package/dist/plugins/tools/agi/agiPlugin.js.map +1 -0
- package/dist/plugins/tools/meta/metaPlugin.d.ts +12 -0
- package/dist/plugins/tools/meta/metaPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/meta/metaPlugin.js +19 -0
- package/dist/plugins/tools/meta/metaPlugin.js.map +1 -0
- package/dist/plugins/tools/nodeDefaults.d.ts +2 -0
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +6 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/plugins/tools/unified/unifiedAGIPlugin.d.ts +25 -0
- package/dist/plugins/tools/unified/unifiedAGIPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/unified/unifiedAGIPlugin.js +479 -0
- package/dist/plugins/tools/unified/unifiedAGIPlugin.js.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.js +3 -2
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +3 -2
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +4 -6
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/skills/skillRepository.d.ts.map +1 -1
- package/dist/skills/skillRepository.js +15 -6
- package/dist/skills/skillRepository.js.map +1 -1
- package/dist/tools/appleExposureTools.d.ts.map +1 -1
- package/dist/tools/appleExposureTools.js +1 -0
- package/dist/tools/appleExposureTools.js.map +1 -1
- package/dist/tools/bidirectionalAuditTools.d.ts.map +1 -1
- package/dist/tools/bidirectionalAuditTools.js +1 -0
- package/dist/tools/bidirectionalAuditTools.js.map +1 -1
- package/dist/tools/defensiveSecurityTools.d.ts.map +1 -1
- package/dist/tools/defensiveSecurityTools.js +1 -0
- package/dist/tools/defensiveSecurityTools.js.map +1 -1
- package/dist/tools/forwardAttackChainTracer.d.ts.map +1 -1
- package/dist/tools/forwardAttackChainTracer.js +1 -0
- package/dist/tools/forwardAttackChainTracer.js.map +1 -1
- package/dist/tools/iMessageVerificationTools.d.ts.map +1 -1
- package/dist/tools/iMessageVerificationTools.js +1 -0
- package/dist/tools/iMessageVerificationTools.js.map +1 -1
- package/dist/tools/integrityTools.d.ts.map +1 -1
- package/dist/tools/integrityTools.js +1 -0
- package/dist/tools/integrityTools.js.map +1 -1
- package/dist/tools/metaTools.d.ts +62 -0
- package/dist/tools/metaTools.d.ts.map +1 -0
- package/dist/tools/metaTools.js +3201 -0
- package/dist/tools/metaTools.js.map +1 -0
- package/dist/tools/offensiveTransparencyTools.d.ts.map +1 -1
- package/dist/tools/offensiveTransparencyTools.js +1 -0
- package/dist/tools/offensiveTransparencyTools.js.map +1 -1
- package/dist/tools/searchTools.js +1 -1
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/taoTools.js +1 -1
- package/dist/tools/threatIntelligenceTools.d.ts.map +1 -1
- package/dist/tools/threatIntelligenceTools.js +1 -0
- package/dist/tools/threatIntelligenceTools.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +1 -1
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGI Core - Unified Autonomous General Intelligence for Software Engineering
|
|
3
|
+
*
|
|
4
|
+
* This is the central intelligence module that provides:
|
|
5
|
+
* 1. Unified prompt understanding and routing
|
|
6
|
+
* 2. Real task decomposition and planning
|
|
7
|
+
* 3. Persistent learning and memory
|
|
8
|
+
* 4. Autonomous execution with verification
|
|
9
|
+
*
|
|
10
|
+
* NO SIMULATIONS - All operations execute real tools
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
export interface AGIContext {
|
|
14
|
+
workingDir: string;
|
|
15
|
+
sessionId: string;
|
|
16
|
+
startTime: number;
|
|
17
|
+
memory: AGIMemory;
|
|
18
|
+
}
|
|
19
|
+
export interface AGIMemory {
|
|
20
|
+
/** Learned patterns from successful operations */
|
|
21
|
+
patterns: LearnedPattern[];
|
|
22
|
+
/** Recent operations for context */
|
|
23
|
+
recentOps: OperationRecord[];
|
|
24
|
+
/** Project-specific knowledge */
|
|
25
|
+
projectKnowledge: ProjectKnowledge;
|
|
26
|
+
}
|
|
27
|
+
export interface LearnedPattern {
|
|
28
|
+
id: string;
|
|
29
|
+
trigger: string;
|
|
30
|
+
successfulApproach: string;
|
|
31
|
+
tools: string[];
|
|
32
|
+
successCount: number;
|
|
33
|
+
lastUsed: number;
|
|
34
|
+
}
|
|
35
|
+
export interface OperationRecord {
|
|
36
|
+
id: string;
|
|
37
|
+
prompt: string;
|
|
38
|
+
interpretation: string;
|
|
39
|
+
tasks: string[];
|
|
40
|
+
success: boolean;
|
|
41
|
+
timestamp: number;
|
|
42
|
+
duration: number;
|
|
43
|
+
toolsUsed: string[];
|
|
44
|
+
errors?: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface ProjectKnowledge {
|
|
47
|
+
type: 'node' | 'python' | 'rust' | 'go' | 'java' | 'unknown';
|
|
48
|
+
buildSystem: string | null;
|
|
49
|
+
testCommand: string | null;
|
|
50
|
+
lintCommand: string | null;
|
|
51
|
+
entryPoints: string[];
|
|
52
|
+
dependencies: Record<string, string>;
|
|
53
|
+
lastAnalyzed: number;
|
|
54
|
+
}
|
|
55
|
+
export interface AGITask {
|
|
56
|
+
id: string;
|
|
57
|
+
description: string;
|
|
58
|
+
category: TaskCategory;
|
|
59
|
+
tools: string[];
|
|
60
|
+
dependencies: string[];
|
|
61
|
+
status: 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped';
|
|
62
|
+
result?: TaskResult;
|
|
63
|
+
}
|
|
64
|
+
export type TaskCategory = 'analysis' | 'search' | 'execution' | 'modification' | 'verification' | 'communication' | 'research' | 'generation' | 'computation' | 'automation';
|
|
65
|
+
export interface TaskResult {
|
|
66
|
+
success: boolean;
|
|
67
|
+
output: string;
|
|
68
|
+
duration: number;
|
|
69
|
+
artifacts?: string[];
|
|
70
|
+
errors?: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface PromptAnalysis {
|
|
73
|
+
originalPrompt: string;
|
|
74
|
+
interpretation: string;
|
|
75
|
+
intent: PromptIntent;
|
|
76
|
+
category: PromptCategory;
|
|
77
|
+
confidence: number;
|
|
78
|
+
tasks: AGITask[];
|
|
79
|
+
clarificationNeeded: string[];
|
|
80
|
+
}
|
|
81
|
+
export type PromptIntent = 'fix_bugs' | 'add_feature' | 'refactor' | 'test' | 'document' | 'deploy' | 'analyze' | 'explain' | 'optimize' | 'security_audit' | 'setup' | 'migrate' | 'research' | 'data_analysis' | 'scientific_computing' | 'legal_research' | 'business_analysis' | 'financial_analysis' | 'automate' | 'monitor' | 'generic_task';
|
|
82
|
+
export type PromptCategory = 'code_modification' | 'code_analysis' | 'infrastructure' | 'testing' | 'documentation' | 'research' | 'automation' | 'scientific' | 'business' | 'legal' | 'financial' | 'operations';
|
|
83
|
+
export declare class AGICore extends EventEmitter {
|
|
84
|
+
private context;
|
|
85
|
+
private memoryPath;
|
|
86
|
+
constructor(workingDir?: string);
|
|
87
|
+
private loadMemory;
|
|
88
|
+
private createEmptyMemory;
|
|
89
|
+
private saveMemory;
|
|
90
|
+
/**
|
|
91
|
+
* Learn from a successful operation
|
|
92
|
+
*/
|
|
93
|
+
learnFromSuccess(prompt: string, approach: string, tools: string[]): void;
|
|
94
|
+
/**
|
|
95
|
+
* Record an operation for context
|
|
96
|
+
*/
|
|
97
|
+
recordOperation(op: OperationRecord): void;
|
|
98
|
+
/**
|
|
99
|
+
* Get learned approach for similar prompts
|
|
100
|
+
*/
|
|
101
|
+
getLearnedApproach(prompt: string): LearnedPattern | null;
|
|
102
|
+
private normalizePrompt;
|
|
103
|
+
private promptSimilarity;
|
|
104
|
+
private analyzeProject;
|
|
105
|
+
/**
|
|
106
|
+
* Analyze a user prompt and produce a comprehensive execution plan
|
|
107
|
+
*/
|
|
108
|
+
analyzePrompt(prompt: string): PromptAnalysis;
|
|
109
|
+
private determineIntent;
|
|
110
|
+
private determineCategory;
|
|
111
|
+
private generateInterpretation;
|
|
112
|
+
private generateTasks;
|
|
113
|
+
private checkAmbiguity;
|
|
114
|
+
private createFromLearnedPattern;
|
|
115
|
+
/**
|
|
116
|
+
* Generate tool calls for a given analysis
|
|
117
|
+
* Returns explicit tool call specifications ready for execution
|
|
118
|
+
*/
|
|
119
|
+
generateToolCalls(analysis: PromptAnalysis): ToolCallSpec[];
|
|
120
|
+
/**
|
|
121
|
+
* Get the current AGI context
|
|
122
|
+
*/
|
|
123
|
+
getContext(): AGIContext;
|
|
124
|
+
/**
|
|
125
|
+
* Get project knowledge
|
|
126
|
+
*/
|
|
127
|
+
getProjectKnowledge(): ProjectKnowledge;
|
|
128
|
+
/**
|
|
129
|
+
* Get recent operations
|
|
130
|
+
*/
|
|
131
|
+
getRecentOperations(limit?: number): OperationRecord[];
|
|
132
|
+
/**
|
|
133
|
+
* Get learned patterns
|
|
134
|
+
*/
|
|
135
|
+
getLearnedPatterns(): LearnedPattern[];
|
|
136
|
+
/**
|
|
137
|
+
* Force project re-analysis
|
|
138
|
+
*/
|
|
139
|
+
refreshProjectKnowledge(): ProjectKnowledge;
|
|
140
|
+
}
|
|
141
|
+
export interface ToolCallSpec {
|
|
142
|
+
tool: string;
|
|
143
|
+
args: Record<string, unknown>;
|
|
144
|
+
description: string;
|
|
145
|
+
taskId: string;
|
|
146
|
+
}
|
|
147
|
+
export declare function getAGI(workingDir?: string): AGICore;
|
|
148
|
+
export declare function resetAGI(): void;
|
|
149
|
+
//# sourceMappingURL=agiCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agiCore.d.ts","sourceRoot":"","sources":["../../src/core/agiCore.ts"],"names":[],"mappings":"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"}
|