erosolar-cli 2.1.231 → 2.1.234
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/agents/erosolar-security.rules.json +84 -0
- package/config/security-deployment.json +10 -9
- package/dist/bin/cliMode.d.ts +12 -0
- package/dist/bin/cliMode.d.ts.map +1 -0
- package/dist/bin/cliMode.js +27 -0
- package/dist/bin/cliMode.js.map +1 -0
- package/dist/bin/erosolar.js +47 -46
- package/dist/bin/erosolar.js.map +1 -1
- package/dist/capabilities/index.d.ts +1 -0
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +1 -0
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/taoCapability.d.ts +13 -0
- package/dist/capabilities/taoCapability.d.ts.map +1 -0
- package/dist/capabilities/taoCapability.js +20 -0
- package/dist/capabilities/taoCapability.js.map +1 -0
- package/dist/contracts/agent-profiles.schema.json +16 -0
- package/dist/contracts/tools.schema.json +12 -0
- package/dist/core/agent.d.ts +6 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +22 -0
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agentOrchestrator.d.ts +3 -12
- package/dist/core/agentOrchestrator.d.ts.map +1 -1
- package/dist/core/agentOrchestrator.js +199 -107
- package/dist/core/agentOrchestrator.js.map +1 -1
- package/dist/core/baseToolFactory.d.ts +187 -0
- package/dist/core/baseToolFactory.d.ts.map +1 -0
- package/dist/core/baseToolFactory.js +352 -0
- package/dist/core/baseToolFactory.js.map +1 -0
- package/dist/core/constants.d.ts +5 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +5 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors/index.d.ts +50 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +156 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/safetyValidator.d.ts.map +1 -1
- package/dist/core/errors/safetyValidator.js +6 -137
- package/dist/core/errors/safetyValidator.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +2 -15
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +2 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/plugins/tools/tao/taoPlugin.d.ts +3 -0
- package/dist/plugins/tools/tao/taoPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/tao/taoPlugin.js +14 -0
- package/dist/plugins/tools/tao/taoPlugin.js.map +1 -0
- package/dist/providers/baseProvider.d.ts +148 -0
- package/dist/providers/baseProvider.d.ts.map +1 -0
- package/dist/providers/baseProvider.js +284 -0
- package/dist/providers/baseProvider.js.map +1 -0
- package/dist/shell/commandRegistry.d.ts +122 -0
- package/dist/shell/commandRegistry.d.ts.map +1 -0
- package/dist/shell/commandRegistry.js +371 -0
- package/dist/shell/commandRegistry.js.map +1 -0
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +2 -15
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +1 -5
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/tao/index.d.ts +28 -0
- package/dist/tools/tao/index.d.ts.map +1 -0
- package/dist/tools/tao/index.js +33 -0
- package/dist/tools/tao/index.js.map +1 -0
- package/dist/tools/tao/intentParser.d.ts +9 -0
- package/dist/tools/tao/intentParser.d.ts.map +1 -0
- package/dist/tools/tao/intentParser.js +163 -0
- package/dist/tools/tao/intentParser.js.map +1 -0
- package/dist/tools/tao/rlEngine.d.ts +40 -0
- package/dist/tools/tao/rlEngine.d.ts.map +1 -0
- package/dist/tools/tao/rlEngine.js +237 -0
- package/dist/tools/tao/rlEngine.js.map +1 -0
- package/dist/tools/tao/sessionState.d.ts +9 -0
- package/dist/tools/tao/sessionState.d.ts.map +1 -0
- package/dist/tools/tao/sessionState.js +18 -0
- package/dist/tools/tao/sessionState.js.map +1 -0
- package/dist/tools/tao/types.d.ts +109 -0
- package/dist/tools/tao/types.d.ts.map +1 -0
- package/dist/tools/tao/types.js +5 -0
- package/dist/tools/tao/types.js.map +1 -0
- package/dist/tools/tao/verification.d.ts +23 -0
- package/dist/tools/tao/verification.d.ts.map +1 -0
- package/dist/tools/tao/verification.js +211 -0
- package/dist/tools/tao/verification.js.map +1 -0
- package/dist/tools/taoTools.d.ts +23 -0
- package/dist/tools/taoTools.d.ts.map +1 -0
- package/dist/tools/taoTools.js +14499 -0
- package/dist/tools/taoTools.js.map +1 -0
- package/dist/ui/UnifiedUIRenderer.d.ts +5 -0
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +49 -20
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/index.d.ts +102 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +120 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +7 -0
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/utils/packageInfo.d.ts +14 -0
- package/dist/utils/packageInfo.d.ts.map +1 -0
- package/dist/utils/packageInfo.js +45 -0
- package/dist/utils/packageInfo.js.map +1 -0
- package/package.json +3 -3
- package/scripts/deploy-security-capabilities.js +157 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/tao/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,0BAA0B;AAC1B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,yBAAyB;AACzB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Natural Language Intent Parser
|
|
3
|
+
*
|
|
4
|
+
* Translates user prompts to actionable operations.
|
|
5
|
+
*/
|
|
6
|
+
import type { ParsedIntent, AuthorizationContext } from './types.js';
|
|
7
|
+
export declare function parseNaturalLanguageIntent(prompt: string): ParsedIntent;
|
|
8
|
+
export declare function validateAuthorizationContext(intent: ParsedIntent): AuthorizationContext;
|
|
9
|
+
//# sourceMappingURL=intentParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentParser.d.ts","sourceRoot":"","sources":["../../../src/tools/tao/intentParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMrE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA4FvE;AAMD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,GAAG,oBAAoB,CAyCvF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Natural Language Intent Parser
|
|
3
|
+
*
|
|
4
|
+
* Translates user prompts to actionable operations.
|
|
5
|
+
*/
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
7
|
+
// Natural Language Intent Parser
|
|
8
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
9
|
+
export function parseNaturalLanguageIntent(prompt) {
|
|
10
|
+
const lower = prompt.toLowerCase();
|
|
11
|
+
// Determine primary action
|
|
12
|
+
let action = 'analyze';
|
|
13
|
+
if (/\b(recon|reconn?aissance|discover|find|identify)\b/.test(lower))
|
|
14
|
+
action = 'recon';
|
|
15
|
+
else if (/\b(scan|port|service|probe)\b/.test(lower))
|
|
16
|
+
action = 'scan';
|
|
17
|
+
else if (/\b(exploit|attack|pwn|compromise|breach|destroy)\b/.test(lower))
|
|
18
|
+
action = 'exploit';
|
|
19
|
+
else if (/\b(enum|enumerat|list|gather)\b/.test(lower))
|
|
20
|
+
action = 'enumerate';
|
|
21
|
+
else if (/\b(extract|dump|exfil|grab|steal)\b/.test(lower))
|
|
22
|
+
action = 'extract';
|
|
23
|
+
else if (/\b(test|check|verify|validate)\b/.test(lower))
|
|
24
|
+
action = 'test';
|
|
25
|
+
else if (/\b(monitor|watch|track|observe)\b/.test(lower))
|
|
26
|
+
action = 'monitor';
|
|
27
|
+
else if (/\b(report|summarize|document)\b/.test(lower))
|
|
28
|
+
action = 'report';
|
|
29
|
+
// Extract targets (IPs, domains, URLs, services)
|
|
30
|
+
const targets = [];
|
|
31
|
+
const ipMatch = prompt.match(/\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:\/\d{1,2})?)\b/g);
|
|
32
|
+
const domainMatch = prompt.match(/\b([a-z0-9][-a-z0-9]*\.)+[a-z]{2,}\b/gi);
|
|
33
|
+
const urlMatch = prompt.match(/https?:\/\/[^\s]+/gi);
|
|
34
|
+
if (ipMatch)
|
|
35
|
+
targets.push(...ipMatch);
|
|
36
|
+
if (domainMatch)
|
|
37
|
+
targets.push(...domainMatch);
|
|
38
|
+
if (urlMatch)
|
|
39
|
+
targets.push(...urlMatch);
|
|
40
|
+
// Named targets
|
|
41
|
+
const namedTargets = {
|
|
42
|
+
'aws': ['AWS', 'Amazon Web Services'],
|
|
43
|
+
'gcp': ['GCP', 'Google Cloud'],
|
|
44
|
+
'azure': ['Azure', 'Microsoft Azure'],
|
|
45
|
+
'local': ['localhost', '127.0.0.1'],
|
|
46
|
+
'ukraine': ['Ukraine', 'ukraine', 'UA'],
|
|
47
|
+
};
|
|
48
|
+
for (const [key, names] of Object.entries(namedTargets)) {
|
|
49
|
+
if (names.some(n => lower.includes(n.toLowerCase()))) {
|
|
50
|
+
targets.push(key);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Determine scope
|
|
54
|
+
let scope = 'host';
|
|
55
|
+
if (/\b(network|subnet|range|cidr)\b/.test(lower))
|
|
56
|
+
scope = 'network';
|
|
57
|
+
else if (/\b(app|application|web|api)\b/.test(lower))
|
|
58
|
+
scope = 'application';
|
|
59
|
+
else if (/\b(infra|infrastructure|cloud|enterprise)\b/.test(lower))
|
|
60
|
+
scope = 'infrastructure';
|
|
61
|
+
else if (/\b(full|complete|comprehensive|everything)\b/.test(lower))
|
|
62
|
+
scope = 'full';
|
|
63
|
+
// Determine depth
|
|
64
|
+
let depth = 'standard';
|
|
65
|
+
if (/\b(quick|fast|brief|simple)\b/.test(lower))
|
|
66
|
+
depth = 'quick';
|
|
67
|
+
else if (/\b(deep|thorough|extensive)\b/.test(lower))
|
|
68
|
+
depth = 'deep';
|
|
69
|
+
else if (/\b(comprehensive|full|complete|exhaustive)\b/.test(lower))
|
|
70
|
+
depth = 'comprehensive';
|
|
71
|
+
// Extract techniques
|
|
72
|
+
const techniques = [];
|
|
73
|
+
const techniquePatterns = {
|
|
74
|
+
'sqli': /\b(sql\s*inject|sqli)\b/i,
|
|
75
|
+
'xss': /\b(xss|cross.?site.?script)\b/i,
|
|
76
|
+
'rce': /\b(rce|remote.?code|command.?inject)\b/i,
|
|
77
|
+
'lfi': /\b(lfi|local.?file)\b/i,
|
|
78
|
+
'rfi': /\b(rfi|remote.?file)\b/i,
|
|
79
|
+
'ssrf': /\b(ssrf|server.?side)\b/i,
|
|
80
|
+
'brute': /\b(brute|crack|password)\b/i,
|
|
81
|
+
'enum': /\b(enum|directory|discover)\b/i,
|
|
82
|
+
'privesc': /\b(priv|escalat|sudo|root)\b/i,
|
|
83
|
+
'lateral': /\b(lateral|pivot|spread)\b/i,
|
|
84
|
+
'persist': /\b(persist|backdoor|maintain)\b/i,
|
|
85
|
+
'exfil': /\b(exfil|extract|dump|steal)\b/i,
|
|
86
|
+
};
|
|
87
|
+
for (const [tech, pattern] of Object.entries(techniquePatterns)) {
|
|
88
|
+
if (pattern.test(lower))
|
|
89
|
+
techniques.push(tech);
|
|
90
|
+
}
|
|
91
|
+
// Output format
|
|
92
|
+
let outputFormat = 'detailed';
|
|
93
|
+
if (/\b(summary|brief|quick)\b/.test(lower))
|
|
94
|
+
outputFormat = 'summary';
|
|
95
|
+
else if (/\b(json|structured|data)\b/.test(lower))
|
|
96
|
+
outputFormat = 'json';
|
|
97
|
+
else if (/\b(actionable|exploit|attack)\b/.test(lower))
|
|
98
|
+
outputFormat = 'actionable';
|
|
99
|
+
// Authorization context
|
|
100
|
+
let authContext;
|
|
101
|
+
if (/\b(pentest|penetration.?test|engagement)\b/.test(lower))
|
|
102
|
+
authContext = 'pentest';
|
|
103
|
+
else if (/\b(ctf|capture.?the.?flag|competition)\b/.test(lower))
|
|
104
|
+
authContext = 'ctf';
|
|
105
|
+
else if (/\b(research|study|educational)\b/.test(lower))
|
|
106
|
+
authContext = 'research';
|
|
107
|
+
else if (/\b(red.?team|adversar|simul)\b/.test(lower))
|
|
108
|
+
authContext = 'redteam';
|
|
109
|
+
else if (/\b(bug.?bounty|bounty)\b/.test(lower))
|
|
110
|
+
authContext = 'bugbounty';
|
|
111
|
+
// Constraints
|
|
112
|
+
const constraints = [];
|
|
113
|
+
if (/\b(stealth|quiet|silent|covert)\b/.test(lower))
|
|
114
|
+
constraints.push('stealth');
|
|
115
|
+
if (/\b(safe|non.?destruct|read.?only)\b/.test(lower))
|
|
116
|
+
constraints.push('non-destructive');
|
|
117
|
+
if (/\b(fast|quick|time)\b/.test(lower))
|
|
118
|
+
constraints.push('time-limited');
|
|
119
|
+
if (/\b(thorough|complete|exhaust)\b/.test(lower))
|
|
120
|
+
constraints.push('comprehensive');
|
|
121
|
+
return { action, targets, scope, depth, techniques, outputFormat, authContext, constraints };
|
|
122
|
+
}
|
|
123
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
124
|
+
// Authorization Context Validator
|
|
125
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
126
|
+
export function validateAuthorizationContext(intent) {
|
|
127
|
+
const warnings = [];
|
|
128
|
+
const restrictions = [];
|
|
129
|
+
// Check for explicit authorization context
|
|
130
|
+
if (!intent.authContext) {
|
|
131
|
+
warnings.push('No explicit authorization context provided');
|
|
132
|
+
warnings.push('Assuming authorized testing environment');
|
|
133
|
+
}
|
|
134
|
+
// Validate scope appropriateness
|
|
135
|
+
if (intent.scope === 'full' && !intent.authContext) {
|
|
136
|
+
warnings.push('Full scope operations require explicit authorization');
|
|
137
|
+
// No restrictions added
|
|
138
|
+
}
|
|
139
|
+
// Check for potentially sensitive targets (warnings only)
|
|
140
|
+
const sensitivePatterns = [
|
|
141
|
+
{ pattern: /\.gov\b/i, warning: 'Government domain detected' },
|
|
142
|
+
{ pattern: /\.mil\b/i, warning: 'Military domain detected' },
|
|
143
|
+
{ pattern: /\.edu\b/i, warning: 'Educational institution detected' },
|
|
144
|
+
{ pattern: /bank|financial/i, warning: 'Financial institution indicator' },
|
|
145
|
+
{ pattern: /hospital|health|medical/i, warning: 'Healthcare system indicator' },
|
|
146
|
+
];
|
|
147
|
+
for (const target of intent.targets) {
|
|
148
|
+
for (const { pattern, warning } of sensitivePatterns) {
|
|
149
|
+
if (pattern.test(target)) {
|
|
150
|
+
warnings.push(`${warning}: ${target}`);
|
|
151
|
+
// No restrictions added
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
valid: true,
|
|
157
|
+
type: intent.authContext || 'unspecified',
|
|
158
|
+
scope: intent.targets,
|
|
159
|
+
restrictions: [],
|
|
160
|
+
warnings,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=intentParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentParser.js","sourceRoot":"","sources":["../../../src/tools/tao/intentParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Dual-Agent Reinforcement Learning Engine
|
|
3
|
+
*
|
|
4
|
+
* Modular RL system for tool selection and optimization.
|
|
5
|
+
*/
|
|
6
|
+
import type { RLReward, AgentPolicy, DualAgentState, RLToolContext } from './types.js';
|
|
7
|
+
export declare const dualAgentRL: DualAgentState;
|
|
8
|
+
export declare function ucb1Select(actions: string[], qValues: Map<string, number>, counts: Map<string, number>, totalCount: number, c?: number): string;
|
|
9
|
+
export declare function softmaxPolicy(qValues: Record<string, number>, temperature: number): Record<string, number>;
|
|
10
|
+
export declare function tdLambdaUpdate(agent: AgentPolicy, state: string, reward: number, nextState: string, valueEstimates: Map<string, number>, gamma?: number, lambda?: number): void;
|
|
11
|
+
export declare function policyGradientUpdate(agent: AgentPolicy, action: string, reward: number, baseline?: number): void;
|
|
12
|
+
export declare function createRLContext(toolName: string, action: string, params: Record<string, unknown>): RLToolContext;
|
|
13
|
+
export declare function computeReward(context: RLToolContext, result: unknown, success: boolean): RLReward;
|
|
14
|
+
export declare function updateDualAgents(context: RLToolContext, reward: RLReward): {
|
|
15
|
+
redPolicy: Record<string, number>;
|
|
16
|
+
bluePolicy: Record<string, number>;
|
|
17
|
+
};
|
|
18
|
+
export declare function executeWithRL<T>(toolName: string, action: string, params: Record<string, unknown>, executor: () => Promise<T>): Promise<{
|
|
19
|
+
result: T;
|
|
20
|
+
rl: {
|
|
21
|
+
reward: RLReward;
|
|
22
|
+
policies: {
|
|
23
|
+
red: Record<string, number>;
|
|
24
|
+
blue: Record<string, number>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
export declare function getRLState(): {
|
|
29
|
+
episode: number;
|
|
30
|
+
steps: number;
|
|
31
|
+
avgReward: number;
|
|
32
|
+
redTemperature: number;
|
|
33
|
+
blueTemperature: number;
|
|
34
|
+
topActions: Array<{
|
|
35
|
+
action: string;
|
|
36
|
+
redWeight: number;
|
|
37
|
+
blueWeight: number;
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=rlEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rlEngine.d.ts","sourceRoot":"","sources":["../../../src/tools/tao/rlEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,WAAW,EAAE,cAkBzB,CAAC;AAOF,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,UAAU,EAAE,MAAM,EAClB,CAAC,GAAE,MAAmB,GACrB,MAAM,CAqBR;AAOD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAQD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,KAAK,GAAE,MAAa,EACpB,MAAM,GAAE,MAAY,GACnB,IAAI,CAaN;AAOD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAU,GACnB,IAAI,CAiBN;AAMD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAOf;AAMD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,GACf,QAAQ,CAyBV;AAMD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,QAAQ,GACf;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAgD3E;AAMD,wBAAsB,aAAa,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;IACV,EAAE,EAAE;QACF,MAAM,EAAE,QAAQ,CAAC;QACjB,QAAQ,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;KACzE,CAAC;CACH,CAAC,CA0BD;AAMD,wBAAgB,UAAU,IAAI;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E,CAyBA"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Dual-Agent Reinforcement Learning Engine
|
|
3
|
+
*
|
|
4
|
+
* Modular RL system for tool selection and optimization.
|
|
5
|
+
*/
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
7
|
+
// Global RL State
|
|
8
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
9
|
+
export const dualAgentRL = {
|
|
10
|
+
red: {
|
|
11
|
+
weights: new Map(),
|
|
12
|
+
bias: new Map(),
|
|
13
|
+
temperature: 1.0,
|
|
14
|
+
learningRate: 0.01,
|
|
15
|
+
},
|
|
16
|
+
blue: {
|
|
17
|
+
weights: new Map(),
|
|
18
|
+
bias: new Map(),
|
|
19
|
+
temperature: 1.0,
|
|
20
|
+
learningRate: 0.01,
|
|
21
|
+
},
|
|
22
|
+
sharedMemory: new Map(),
|
|
23
|
+
episode: 0,
|
|
24
|
+
stepCount: 0,
|
|
25
|
+
rewardHistory: [],
|
|
26
|
+
valueEstimates: new Map(),
|
|
27
|
+
};
|
|
28
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
29
|
+
// UCB1 Multi-Armed Bandit
|
|
30
|
+
// Formula: argmax[Q(a) + c * √(ln(N) / N(a))]
|
|
31
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
32
|
+
export function ucb1Select(actions, qValues, counts, totalCount, c = Math.SQRT2) {
|
|
33
|
+
let bestAction = actions[0] || 'default';
|
|
34
|
+
let bestUcb = -Infinity;
|
|
35
|
+
for (const action of actions) {
|
|
36
|
+
const q = qValues.get(action) || 0;
|
|
37
|
+
const n = counts.get(action) || 0;
|
|
38
|
+
if (n === 0)
|
|
39
|
+
return action; // Explore unvisited
|
|
40
|
+
const exploitation = q;
|
|
41
|
+
const exploration = c * Math.sqrt(Math.log(totalCount) / n);
|
|
42
|
+
const ucb = exploitation + exploration;
|
|
43
|
+
if (ucb > bestUcb) {
|
|
44
|
+
bestUcb = ucb;
|
|
45
|
+
bestAction = action;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return bestAction;
|
|
49
|
+
}
|
|
50
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
51
|
+
// Softmax Policy with Temperature
|
|
52
|
+
// π(a|s) = exp(Q(s,a)/τ) / Σ exp(Q(s,a')/τ)
|
|
53
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
54
|
+
export function softmaxPolicy(qValues, temperature) {
|
|
55
|
+
const actions = Object.keys(qValues);
|
|
56
|
+
const maxQ = Math.max(...Object.values(qValues), 0);
|
|
57
|
+
const expValues = {};
|
|
58
|
+
let sumExp = 0;
|
|
59
|
+
for (const action of actions) {
|
|
60
|
+
const expV = Math.exp(((qValues[action] || 0) - maxQ) / temperature);
|
|
61
|
+
expValues[action] = expV;
|
|
62
|
+
sumExp += expV;
|
|
63
|
+
}
|
|
64
|
+
const policy = {};
|
|
65
|
+
for (const action of actions) {
|
|
66
|
+
policy[action] = (expValues[action] || 0) / (sumExp || 1);
|
|
67
|
+
}
|
|
68
|
+
return policy;
|
|
69
|
+
}
|
|
70
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
71
|
+
// TD(λ) Value Update with Eligibility Traces
|
|
72
|
+
// V(s) ← V(s) + α * δ * e(s)
|
|
73
|
+
// δ = r + γ * V(s') - V(s)
|
|
74
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
75
|
+
export function tdLambdaUpdate(agent, state, reward, nextState, valueEstimates, gamma = 0.99, lambda = 0.9) {
|
|
76
|
+
const v = valueEstimates.get(state) || 0;
|
|
77
|
+
const vNext = valueEstimates.get(nextState) || 0;
|
|
78
|
+
const tdError = reward + gamma * vNext - v;
|
|
79
|
+
// Update with eligibility trace decay
|
|
80
|
+
const eligibility = agent.weights.get('_eligibility') || [];
|
|
81
|
+
const newEligibility = eligibility.map(e => gamma * lambda * e);
|
|
82
|
+
newEligibility.push(1.0); // Current state trace
|
|
83
|
+
agent.weights.set('_eligibility', newEligibility.slice(-100));
|
|
84
|
+
// Apply update
|
|
85
|
+
valueEstimates.set(state, v + agent.learningRate * tdError);
|
|
86
|
+
}
|
|
87
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
88
|
+
// Policy Gradient (REINFORCE)
|
|
89
|
+
// ∇θ J(θ) = E[∇θ log π(a|s;θ) * R]
|
|
90
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
91
|
+
export function policyGradientUpdate(agent, action, reward, baseline = 0) {
|
|
92
|
+
const weights = agent.weights.get(action) || [0];
|
|
93
|
+
const advantage = reward - baseline;
|
|
94
|
+
// Update weights in direction of gradient
|
|
95
|
+
const updatedWeights = weights.map((w, _i) => {
|
|
96
|
+
const grad = advantage * (1 - (agent.bias.get(action) || 0.5));
|
|
97
|
+
return w + agent.learningRate * grad;
|
|
98
|
+
});
|
|
99
|
+
agent.weights.set(action, updatedWeights);
|
|
100
|
+
// Update bias term
|
|
101
|
+
const currentBias = agent.bias.get(action) || 0.5;
|
|
102
|
+
agent.bias.set(action, Math.max(0.01, Math.min(0.99, currentBias + agent.learningRate * advantage * 0.1)));
|
|
103
|
+
}
|
|
104
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
105
|
+
// RL Context Creation
|
|
106
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
107
|
+
export function createRLContext(toolName, action, params) {
|
|
108
|
+
return {
|
|
109
|
+
toolName,
|
|
110
|
+
action,
|
|
111
|
+
params,
|
|
112
|
+
startTime: Date.now(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
116
|
+
// Reward Computation
|
|
117
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
118
|
+
export function computeReward(context, result, success) {
|
|
119
|
+
const elapsed = Date.now() - context.startTime;
|
|
120
|
+
// Reward components
|
|
121
|
+
const components = {
|
|
122
|
+
success: success ? 0.5 : -0.3,
|
|
123
|
+
efficiency: Math.max(0, 1 - elapsed / 10000) * 0.2, // Faster = better
|
|
124
|
+
novelty: Math.random() * 0.1, // Exploration bonus
|
|
125
|
+
depth: (context.params['depth'] || 1) * 0.05,
|
|
126
|
+
};
|
|
127
|
+
// Add result-based rewards
|
|
128
|
+
if (typeof result === 'string') {
|
|
129
|
+
components['richness'] = Math.min(result.length / 1000, 0.3);
|
|
130
|
+
}
|
|
131
|
+
else if (typeof result === 'object' && result !== null) {
|
|
132
|
+
components['structure'] = Object.keys(result).length * 0.02;
|
|
133
|
+
}
|
|
134
|
+
const value = Object.values(components).reduce((a, b) => a + b, 0);
|
|
135
|
+
return {
|
|
136
|
+
value: Math.max(-1, Math.min(1, value)),
|
|
137
|
+
components,
|
|
138
|
+
sparse: success && elapsed < 1000,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
142
|
+
// Dual Agent Update
|
|
143
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
144
|
+
export function updateDualAgents(context, reward) {
|
|
145
|
+
dualAgentRL.stepCount++;
|
|
146
|
+
dualAgentRL.rewardHistory.push(reward.value);
|
|
147
|
+
// Keep last 1000 rewards
|
|
148
|
+
if (dualAgentRL.rewardHistory.length > 1000) {
|
|
149
|
+
dualAgentRL.rewardHistory.shift();
|
|
150
|
+
}
|
|
151
|
+
// Compute baseline (moving average)
|
|
152
|
+
const baseline = dualAgentRL.rewardHistory.reduce((a, b) => a + b, 0) /
|
|
153
|
+
dualAgentRL.rewardHistory.length;
|
|
154
|
+
// Update RED agent (offensive - seeks high reward)
|
|
155
|
+
policyGradientUpdate(dualAgentRL.red, context.action, reward.value, baseline);
|
|
156
|
+
// Update BLUE agent (defensive - penalizes risky actions)
|
|
157
|
+
const blueReward = (reward.components['success'] || 0) - (reward.components['novelty'] || 0) * 2;
|
|
158
|
+
policyGradientUpdate(dualAgentRL.blue, context.action, blueReward, baseline);
|
|
159
|
+
// TD update for value estimation
|
|
160
|
+
const stateKey = `${context.toolName}:${context.action}`;
|
|
161
|
+
const nextStateKey = `${context.toolName}:next`;
|
|
162
|
+
tdLambdaUpdate(dualAgentRL.red, stateKey, reward.value, nextStateKey, dualAgentRL.valueEstimates);
|
|
163
|
+
// Temperature annealing
|
|
164
|
+
dualAgentRL.red.temperature = Math.max(0.1, dualAgentRL.red.temperature * 0.999);
|
|
165
|
+
dualAgentRL.blue.temperature = Math.max(0.1, dualAgentRL.blue.temperature * 0.999);
|
|
166
|
+
// Compute current policies
|
|
167
|
+
const redQ = {};
|
|
168
|
+
const blueQ = {};
|
|
169
|
+
for (const [action, weights] of dualAgentRL.red.weights) {
|
|
170
|
+
if (!action.startsWith('_')) {
|
|
171
|
+
redQ[action] = weights.reduce((a, b) => a + b, 0);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const [action, weights] of dualAgentRL.blue.weights) {
|
|
175
|
+
if (!action.startsWith('_')) {
|
|
176
|
+
blueQ[action] = weights.reduce((a, b) => a + b, 0);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
redPolicy: softmaxPolicy(redQ, dualAgentRL.red.temperature),
|
|
181
|
+
bluePolicy: softmaxPolicy(blueQ, dualAgentRL.blue.temperature),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
185
|
+
// RL-Enhanced Tool Executor
|
|
186
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
187
|
+
export async function executeWithRL(toolName, action, params, executor) {
|
|
188
|
+
const context = createRLContext(toolName, action, params);
|
|
189
|
+
let result;
|
|
190
|
+
let success = true;
|
|
191
|
+
try {
|
|
192
|
+
result = await executor();
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
success = false;
|
|
196
|
+
result = { error: String(e) };
|
|
197
|
+
}
|
|
198
|
+
const reward = computeReward(context, result, success);
|
|
199
|
+
const policies = updateDualAgents(context, reward);
|
|
200
|
+
return {
|
|
201
|
+
result,
|
|
202
|
+
rl: {
|
|
203
|
+
reward,
|
|
204
|
+
policies: {
|
|
205
|
+
red: policies.redPolicy,
|
|
206
|
+
blue: policies.bluePolicy,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
212
|
+
// Get RL State for Visualization
|
|
213
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
214
|
+
export function getRLState() {
|
|
215
|
+
const avgReward = dualAgentRL.rewardHistory.length > 0
|
|
216
|
+
? dualAgentRL.rewardHistory.reduce((a, b) => a + b, 0) / dualAgentRL.rewardHistory.length
|
|
217
|
+
: 0;
|
|
218
|
+
const topActions = [];
|
|
219
|
+
const allActions = new Set([...dualAgentRL.red.weights.keys(), ...dualAgentRL.blue.weights.keys()]);
|
|
220
|
+
for (const action of allActions) {
|
|
221
|
+
if (action.startsWith('_'))
|
|
222
|
+
continue;
|
|
223
|
+
const redW = (dualAgentRL.red.weights.get(action) || [0]).reduce((a, b) => a + b, 0);
|
|
224
|
+
const blueW = (dualAgentRL.blue.weights.get(action) || [0]).reduce((a, b) => a + b, 0);
|
|
225
|
+
topActions.push({ action, redWeight: redW, blueWeight: blueW });
|
|
226
|
+
}
|
|
227
|
+
topActions.sort((a, b) => Math.abs(b.redWeight) - Math.abs(a.redWeight));
|
|
228
|
+
return {
|
|
229
|
+
episode: dualAgentRL.episode,
|
|
230
|
+
steps: dualAgentRL.stepCount,
|
|
231
|
+
avgReward,
|
|
232
|
+
redTemperature: dualAgentRL.red.temperature,
|
|
233
|
+
blueTemperature: dualAgentRL.blue.temperature,
|
|
234
|
+
topActions: topActions.slice(0, 10),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=rlEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rlEngine.js","sourceRoot":"","sources":["../../../src/tools/tao/rlEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Session State Management
|
|
3
|
+
*/
|
|
4
|
+
export declare const sessionState: Map<string, unknown>;
|
|
5
|
+
export declare function getSessionState<T>(key: string): T | undefined;
|
|
6
|
+
export declare function setSessionState<T>(key: string, value: T): void;
|
|
7
|
+
export declare function clearSessionState(): void;
|
|
8
|
+
export declare function hasSessionState(key: string): boolean;
|
|
9
|
+
//# sourceMappingURL=sessionState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionState.d.ts","sourceRoot":"","sources":["../../../src/tools/tao/sessionState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAEvD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAE7D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAE9D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Session State Management
|
|
3
|
+
*/
|
|
4
|
+
// Session state for persistent operations
|
|
5
|
+
export const sessionState = new Map();
|
|
6
|
+
export function getSessionState(key) {
|
|
7
|
+
return sessionState.get(key);
|
|
8
|
+
}
|
|
9
|
+
export function setSessionState(key, value) {
|
|
10
|
+
sessionState.set(key, value);
|
|
11
|
+
}
|
|
12
|
+
export function clearSessionState() {
|
|
13
|
+
sessionState.clear();
|
|
14
|
+
}
|
|
15
|
+
export function hasSessionState(key) {
|
|
16
|
+
return sessionState.has(key);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sessionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionState.js","sourceRoot":"","sources":["../../../src/tools/tao/sessionState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEvD,MAAM,UAAU,eAAe,CAAI,GAAW;IAC5C,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,KAAQ;IACtD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tao Tools - Shared Types and Interfaces
|
|
3
|
+
*/
|
|
4
|
+
export interface RLState {
|
|
5
|
+
features: number[];
|
|
6
|
+
context: string;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
}
|
|
9
|
+
export interface RLAction {
|
|
10
|
+
id: string;
|
|
11
|
+
params: Record<string, unknown>;
|
|
12
|
+
confidence: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RLReward {
|
|
15
|
+
value: number;
|
|
16
|
+
components: Record<string, number>;
|
|
17
|
+
sparse: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface AgentPolicy {
|
|
20
|
+
weights: Map<string, number[]>;
|
|
21
|
+
bias: Map<string, number>;
|
|
22
|
+
temperature: number;
|
|
23
|
+
learningRate: number;
|
|
24
|
+
}
|
|
25
|
+
export interface DualAgentState {
|
|
26
|
+
red: AgentPolicy;
|
|
27
|
+
blue: AgentPolicy;
|
|
28
|
+
sharedMemory: Map<string, unknown>;
|
|
29
|
+
episode: number;
|
|
30
|
+
stepCount: number;
|
|
31
|
+
rewardHistory: number[];
|
|
32
|
+
valueEstimates: Map<string, number>;
|
|
33
|
+
}
|
|
34
|
+
export interface RLToolContext {
|
|
35
|
+
toolName: string;
|
|
36
|
+
action: string;
|
|
37
|
+
params: Record<string, unknown>;
|
|
38
|
+
startTime: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ParsedIntent {
|
|
41
|
+
action: 'recon' | 'scan' | 'exploit' | 'analyze' | 'enumerate' | 'extract' | 'test' | 'verify' | 'monitor' | 'report';
|
|
42
|
+
targets: string[];
|
|
43
|
+
scope: 'host' | 'network' | 'application' | 'infrastructure' | 'full';
|
|
44
|
+
depth: 'quick' | 'standard' | 'deep' | 'comprehensive';
|
|
45
|
+
techniques: string[];
|
|
46
|
+
outputFormat: 'summary' | 'detailed' | 'json' | 'actionable';
|
|
47
|
+
authContext?: string;
|
|
48
|
+
constraints: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface ExecutionResult {
|
|
51
|
+
executed: boolean;
|
|
52
|
+
verified: boolean;
|
|
53
|
+
evidence: string[];
|
|
54
|
+
warnings: string[];
|
|
55
|
+
recommendations: string[];
|
|
56
|
+
confidence: number;
|
|
57
|
+
rawOutput?: unknown;
|
|
58
|
+
}
|
|
59
|
+
export interface VerificationCheck {
|
|
60
|
+
name: string;
|
|
61
|
+
check: () => Promise<boolean>;
|
|
62
|
+
evidence: () => string;
|
|
63
|
+
}
|
|
64
|
+
export interface OperationOutcome {
|
|
65
|
+
id: string;
|
|
66
|
+
operation: string;
|
|
67
|
+
target: string;
|
|
68
|
+
timestamp: number;
|
|
69
|
+
duration: number;
|
|
70
|
+
success: boolean;
|
|
71
|
+
effects: string[];
|
|
72
|
+
artifacts: Array<{
|
|
73
|
+
type: string;
|
|
74
|
+
data: string;
|
|
75
|
+
hash?: string;
|
|
76
|
+
}>;
|
|
77
|
+
networkTraffic?: {
|
|
78
|
+
bytesSent: number;
|
|
79
|
+
bytesReceived: number;
|
|
80
|
+
connections: number;
|
|
81
|
+
};
|
|
82
|
+
stateChanges?: string[];
|
|
83
|
+
}
|
|
84
|
+
export interface AuthorizationContext {
|
|
85
|
+
valid: boolean;
|
|
86
|
+
type: string;
|
|
87
|
+
scope: string[];
|
|
88
|
+
restrictions: string[];
|
|
89
|
+
warnings: string[];
|
|
90
|
+
}
|
|
91
|
+
export interface ActionableOutput {
|
|
92
|
+
summary: string;
|
|
93
|
+
findings: Array<{
|
|
94
|
+
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
95
|
+
title: string;
|
|
96
|
+
description: string;
|
|
97
|
+
evidence: string;
|
|
98
|
+
recommendation: string;
|
|
99
|
+
commands?: string[];
|
|
100
|
+
}>;
|
|
101
|
+
nextSteps: string[];
|
|
102
|
+
commands: Array<{
|
|
103
|
+
purpose: string;
|
|
104
|
+
command: string;
|
|
105
|
+
expectedOutput?: string;
|
|
106
|
+
}>;
|
|
107
|
+
timeline?: string;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=types.d.ts.map
|