erosolar-cli 1.7.393 → 1.7.395
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/core/offsecAlphaZero.d.ts +56 -0
- package/dist/core/offsecAlphaZero.d.ts.map +1 -0
- package/dist/core/offsecAlphaZero.js +395 -0
- package/dist/core/offsecAlphaZero.js.map +1 -0
- package/dist/core/preferences.d.ts +1 -0
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +7 -0
- package/dist/core/preferences.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +23 -5
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +486 -135
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/keyboardShortcuts.d.ts.map +1 -1
- package/dist/shell/keyboardShortcuts.js +11 -8
- package/dist/shell/keyboardShortcuts.js.map +1 -1
- package/dist/shell/liveStatus.d.ts +1 -0
- package/dist/shell/liveStatus.d.ts.map +1 -1
- package/dist/shell/liveStatus.js +32 -7
- package/dist/shell/liveStatus.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +25 -2
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +270 -60
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +14 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +14 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/shell/updateManager.d.ts +8 -1
- package/dist/shell/updateManager.d.ts.map +1 -1
- package/dist/shell/updateManager.js +4 -2
- package/dist/shell/updateManager.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +6 -12
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +26 -37
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +22 -21
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/unified/index.d.ts +2 -2
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/ui/unified/layout.d.ts.map +1 -1
- package/dist/ui/unified/layout.js +31 -25
- package/dist/ui/unified/layout.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AlphaZero-style offensive security coordinator.
|
|
3
|
+
*
|
|
4
|
+
* Provides a lightweight Monte Carlo style scorer over an action tree so
|
|
5
|
+
* runs can be started, resumed, and updated with outcomes (success/fail/detected).
|
|
6
|
+
* The goal is to keep a "sensible" frontier of next actions, reward progress,
|
|
7
|
+
* and persist state so a long red-team style engagement can be paused/resumed.
|
|
8
|
+
*/
|
|
9
|
+
export type OffsecOutcome = 'success' | 'fail' | 'detected';
|
|
10
|
+
export type OffsecActionCategory = 'recon' | 'web' | 'creds' | 'payload' | 'lateral' | 'privilege' | 'cloud';
|
|
11
|
+
export interface OffsecActionNode {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
category: OffsecActionCategory;
|
|
15
|
+
command: string;
|
|
16
|
+
rationale: string;
|
|
17
|
+
prior: number;
|
|
18
|
+
parentId: string | null;
|
|
19
|
+
children: string[];
|
|
20
|
+
visits: number;
|
|
21
|
+
valueSum: number;
|
|
22
|
+
status: 'pending' | 'succeeded' | 'failed' | 'detected';
|
|
23
|
+
note?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface OffsecRun {
|
|
26
|
+
id: string;
|
|
27
|
+
objective: string;
|
|
28
|
+
scope: string[];
|
|
29
|
+
rootId: string;
|
|
30
|
+
nodes: Record<string, OffsecActionNode>;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
updatedAt: string;
|
|
33
|
+
nextCounter: number;
|
|
34
|
+
}
|
|
35
|
+
export interface OffsecSuggestion {
|
|
36
|
+
id: string;
|
|
37
|
+
label: string;
|
|
38
|
+
category: OffsecActionCategory;
|
|
39
|
+
command: string;
|
|
40
|
+
rationale: string;
|
|
41
|
+
score: number;
|
|
42
|
+
path: string[];
|
|
43
|
+
status: OffsecActionNode['status'];
|
|
44
|
+
}
|
|
45
|
+
export declare function startOffsecRun(objective: string, scope?: string[]): OffsecRun;
|
|
46
|
+
export declare function resumeOffsecRun(runId?: string | null): OffsecRun | null;
|
|
47
|
+
export declare function listOffsecRuns(): Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
objective: string;
|
|
50
|
+
updatedAt: string;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function recordOffsecOutcome(runId: string, actionId: string, outcome: OffsecOutcome, note?: string): OffsecRun | null;
|
|
53
|
+
export declare function getOffsecNextActions(runId: string, count?: number): OffsecSuggestion[];
|
|
54
|
+
export declare function simulateOffsecRollout(runId: string, steps?: number): OffsecSuggestion[];
|
|
55
|
+
export declare function formatOffsecStatus(run: OffsecRun, next?: OffsecSuggestion[]): string;
|
|
56
|
+
//# sourceMappingURL=offsecAlphaZero.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offsecAlphaZero.d.ts","sourceRoot":"","sources":["../../src/core/offsecAlphaZero.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,KAAK,GACL,OAAO,GACP,SAAS,GACT,SAAS,GACT,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CACpC;AAsRD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,SAAS,CA8BjF;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAIvE;AAED,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAc5F;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,SAAS,GAAG,IAAI,CA+BlB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,gBAAgB,EAAE,CAKjF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,gBAAgB,EAAE,CAoBlF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAE,gBAAgB,EAAO,GAAG,MAAM,CAuBxF"}
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AlphaZero-style offensive security coordinator.
|
|
3
|
+
*
|
|
4
|
+
* Provides a lightweight Monte Carlo style scorer over an action tree so
|
|
5
|
+
* runs can be started, resumed, and updated with outcomes (success/fail/detected).
|
|
6
|
+
* The goal is to keep a "sensible" frontier of next actions, reward progress,
|
|
7
|
+
* and persist state so a long red-team style engagement can be paused/resumed.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
const OFFSEC_DIR = join(homedir(), '.erosolar', 'offsec');
|
|
13
|
+
const RUN_DIR = join(OFFSEC_DIR, 'runs');
|
|
14
|
+
const LATEST_FILE = join(OFFSEC_DIR, 'latest.json');
|
|
15
|
+
const BASE_ACTIONS = [
|
|
16
|
+
{
|
|
17
|
+
label: 'Recon: top port scan',
|
|
18
|
+
category: 'recon',
|
|
19
|
+
command: 'nmap -sV -Pn --top-ports 100 {target}',
|
|
20
|
+
rationale: 'Map exposed services and versions to build the attack surface.',
|
|
21
|
+
prior: 0.38,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'Recon: full TCP sweep (fast)',
|
|
25
|
+
category: 'recon',
|
|
26
|
+
command: 'nmap -sS -Pn -T4 -p- {target}',
|
|
27
|
+
rationale: 'Catch non-standard ports that hide bespoke services.',
|
|
28
|
+
prior: 0.24,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: 'Web: enumerate directories',
|
|
32
|
+
category: 'web',
|
|
33
|
+
command: 'dirsearch -u {url} -x 403,404,500 --plain-text-report=dirs.txt',
|
|
34
|
+
rationale: 'Find hidden panels, backups, and dev endpoints to pivot.',
|
|
35
|
+
prior: 0.32,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'Web: parameter fuzz (quick)',
|
|
39
|
+
category: 'web',
|
|
40
|
+
command: 'ffuf -u "{url}?FUZZ=1" -w params.txt -mc 200,302,500',
|
|
41
|
+
rationale: 'Surface injectable parameters for SQLi/RCE chains.',
|
|
42
|
+
prior: 0.28,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: 'Creds: check common leaks',
|
|
46
|
+
category: 'creds',
|
|
47
|
+
command: 'Probe /.git, /.env, /backup.zip, /.DS_Store, /swagger.json',
|
|
48
|
+
rationale: 'Low-noise checks for credential or API leaks.',
|
|
49
|
+
prior: 0.18,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: 'Payload: generic command injection',
|
|
53
|
+
category: 'payload',
|
|
54
|
+
command: 'Test ;|&& payloads on parameters that reflect output (use harmless `id`)',
|
|
55
|
+
rationale: 'Quickly validate command execution without burning stealth budget.',
|
|
56
|
+
prior: 0.22,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
label: 'Cloud: metadata reachability',
|
|
60
|
+
category: 'cloud',
|
|
61
|
+
command: 'curl -i http://169.254.169.254/latest/meta-data/ --max-time 2',
|
|
62
|
+
rationale: 'Detect cloud metadata exposure for token/role theft.',
|
|
63
|
+
prior: 0.12,
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
const FOLLOW_ON = {
|
|
67
|
+
recon: [
|
|
68
|
+
{
|
|
69
|
+
label: 'Service exploit match',
|
|
70
|
+
category: 'payload',
|
|
71
|
+
command: 'Match versions to public exploits/CVEs and craft safe POC',
|
|
72
|
+
rationale: 'Convert recon data into targeted exploit attempts.',
|
|
73
|
+
prior: 0.34,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: 'Web tech fingerprint',
|
|
77
|
+
category: 'web',
|
|
78
|
+
command: 'whatweb -v {url} && nuclei -u {url} -severity medium,high,critical',
|
|
79
|
+
rationale: 'Template-based probes for known web vulns on detected stack.',
|
|
80
|
+
prior: 0.28,
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
web: [
|
|
84
|
+
{
|
|
85
|
+
label: 'SQLi exploration',
|
|
86
|
+
category: 'payload',
|
|
87
|
+
command: 'sqlmap -u "{url}?vuln=1" --batch --risk=1 --level=2 --identify-waf',
|
|
88
|
+
rationale: 'Automate injectable params with WAF-aware SQLi tests.',
|
|
89
|
+
prior: 0.26,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: 'Auth and session abuse',
|
|
93
|
+
category: 'creds',
|
|
94
|
+
command: 'Check cookies for JWT flaws, weak signing keys, or predictable session IDs',
|
|
95
|
+
rationale: 'Leverage weak session/auth to escalate without loud payloads.',
|
|
96
|
+
prior: 0.18,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
creds: [
|
|
100
|
+
{
|
|
101
|
+
label: 'Reuse creds for lateral move',
|
|
102
|
+
category: 'lateral',
|
|
103
|
+
command: 'Attempt SSH/SMB/WinRM reuse on discovered hosts with leak creds',
|
|
104
|
+
rationale: 'Turn leaked secrets into pivots across the environment.',
|
|
105
|
+
prior: 0.24,
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
payload: [
|
|
109
|
+
{
|
|
110
|
+
label: 'Establish stable shell',
|
|
111
|
+
category: 'privilege',
|
|
112
|
+
command: 'Upgrade to a PTY and drop simple egress-safe beacon',
|
|
113
|
+
rationale: 'Stabilize execution channel for post-exploitation steps.',
|
|
114
|
+
prior: 0.2,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
lateral: [
|
|
118
|
+
{
|
|
119
|
+
label: 'Privilege escalation checklist',
|
|
120
|
+
category: 'privilege',
|
|
121
|
+
command: 'Enumerate sudo, kernel, containers, and scheduled tasks for privesc',
|
|
122
|
+
rationale: 'Turn lateral footholds into higher-privilege execution.',
|
|
123
|
+
prior: 0.22,
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
privilege: [
|
|
127
|
+
{
|
|
128
|
+
label: 'Objective validation',
|
|
129
|
+
category: 'payload',
|
|
130
|
+
command: 'Access target data/flag and exfiltrate proof with minimal footprint',
|
|
131
|
+
rationale: 'Complete the mission objective once privileges are high enough.',
|
|
132
|
+
prior: 0.3,
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
cloud: [
|
|
136
|
+
{
|
|
137
|
+
label: 'Assume role / token exchange',
|
|
138
|
+
category: 'lateral',
|
|
139
|
+
command: 'Use harvested metadata tokens to list IAM roles and attempt sts:AssumeRole',
|
|
140
|
+
rationale: 'Move from instance to control plane with compromised identities.',
|
|
141
|
+
prior: 0.2,
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
function ensureDirs() {
|
|
146
|
+
if (!existsSync(OFFSEC_DIR))
|
|
147
|
+
mkdirSync(OFFSEC_DIR, { recursive: true });
|
|
148
|
+
if (!existsSync(RUN_DIR))
|
|
149
|
+
mkdirSync(RUN_DIR, { recursive: true });
|
|
150
|
+
}
|
|
151
|
+
function runFile(runId) {
|
|
152
|
+
return join(RUN_DIR, `${runId}.json`);
|
|
153
|
+
}
|
|
154
|
+
function persistRun(run) {
|
|
155
|
+
ensureDirs();
|
|
156
|
+
run.updatedAt = new Date().toISOString();
|
|
157
|
+
writeFileSync(runFile(run.id), JSON.stringify(run, null, 2));
|
|
158
|
+
writeFileSync(LATEST_FILE, JSON.stringify({ lastRunId: run.id }, null, 2));
|
|
159
|
+
}
|
|
160
|
+
function loadRun(runId) {
|
|
161
|
+
try {
|
|
162
|
+
const file = runFile(runId);
|
|
163
|
+
if (!existsSync(file))
|
|
164
|
+
return null;
|
|
165
|
+
const raw = readFileSync(file, 'utf-8');
|
|
166
|
+
return JSON.parse(raw);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function loadLatestRunId() {
|
|
173
|
+
try {
|
|
174
|
+
if (!existsSync(LATEST_FILE))
|
|
175
|
+
return null;
|
|
176
|
+
const { lastRunId } = JSON.parse(readFileSync(LATEST_FILE, 'utf-8'));
|
|
177
|
+
return lastRunId ?? null;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function primaryTarget(scope) {
|
|
184
|
+
const target = scope[0]?.trim() || '<target>';
|
|
185
|
+
const urlLike = scope.find((s) => s.startsWith('http://') || s.startsWith('https://'));
|
|
186
|
+
return { target, url: urlLike ?? `http://${target}` };
|
|
187
|
+
}
|
|
188
|
+
function createNode(template, run, parentId) {
|
|
189
|
+
const { target, url } = primaryTarget(run.scope);
|
|
190
|
+
const id = `a${run.nextCounter++}`;
|
|
191
|
+
const command = template.command
|
|
192
|
+
.replace(/\{target\}/g, target)
|
|
193
|
+
.replace(/\{url\}/g, url);
|
|
194
|
+
const node = {
|
|
195
|
+
id,
|
|
196
|
+
label: template.label,
|
|
197
|
+
category: template.category,
|
|
198
|
+
command,
|
|
199
|
+
rationale: template.rationale,
|
|
200
|
+
prior: template.prior,
|
|
201
|
+
parentId,
|
|
202
|
+
children: [],
|
|
203
|
+
visits: 0,
|
|
204
|
+
valueSum: 0,
|
|
205
|
+
status: 'pending',
|
|
206
|
+
};
|
|
207
|
+
run.nodes[id] = node;
|
|
208
|
+
if (parentId) {
|
|
209
|
+
const parent = run.nodes[parentId];
|
|
210
|
+
if (parent) {
|
|
211
|
+
parent.children.push(id);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return node;
|
|
215
|
+
}
|
|
216
|
+
function seedBaseActions(run) {
|
|
217
|
+
for (const template of BASE_ACTIONS) {
|
|
218
|
+
createNode(template, run, run.rootId);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function expandFollowOn(run, parent) {
|
|
222
|
+
const templates = FOLLOW_ON[parent.category] ?? [];
|
|
223
|
+
for (const template of templates) {
|
|
224
|
+
// Avoid duplicate labels under the same parent
|
|
225
|
+
const hasDuplicate = parent.children
|
|
226
|
+
.map((id) => run.nodes[id])
|
|
227
|
+
.some((child) => child?.label === template.label);
|
|
228
|
+
if (!hasDuplicate) {
|
|
229
|
+
createNode(template, run, parent.id);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function ucbScore(node, totalVisits) {
|
|
234
|
+
const mean = node.visits > 0 ? node.valueSum / node.visits : 0;
|
|
235
|
+
const explore = Math.sqrt(Math.log(totalVisits + 1) / (node.visits + 1));
|
|
236
|
+
const priorBoost = node.prior;
|
|
237
|
+
return mean + 0.8 * priorBoost + 0.6 * explore;
|
|
238
|
+
}
|
|
239
|
+
function buildPath(run, node) {
|
|
240
|
+
const path = [];
|
|
241
|
+
let current = node;
|
|
242
|
+
while (current) {
|
|
243
|
+
path.unshift(current.label);
|
|
244
|
+
current = current.parentId ? run.nodes[current.parentId] : undefined;
|
|
245
|
+
}
|
|
246
|
+
return path;
|
|
247
|
+
}
|
|
248
|
+
function getNextActionsFromRun(run, count) {
|
|
249
|
+
const candidates = Object.values(run.nodes).filter((n) => n.status === 'pending');
|
|
250
|
+
const totalVisits = candidates.reduce((sum, n) => sum + (n.visits || 0), 0) + 1;
|
|
251
|
+
const scored = candidates.map((node) => ({
|
|
252
|
+
node,
|
|
253
|
+
score: ucbScore(node, totalVisits),
|
|
254
|
+
}));
|
|
255
|
+
scored.sort((a, b) => b.score - a.score);
|
|
256
|
+
return scored.slice(0, count).map(({ node, score }) => ({
|
|
257
|
+
id: node.id,
|
|
258
|
+
label: node.label,
|
|
259
|
+
category: node.category,
|
|
260
|
+
command: node.command,
|
|
261
|
+
rationale: node.rationale,
|
|
262
|
+
score: Math.round(score * 100) / 100,
|
|
263
|
+
path: buildPath(run, node),
|
|
264
|
+
status: node.status,
|
|
265
|
+
}));
|
|
266
|
+
}
|
|
267
|
+
export function startOffsecRun(objective, scope = []) {
|
|
268
|
+
const now = new Date().toISOString();
|
|
269
|
+
const run = {
|
|
270
|
+
id: `offsec-${Date.now()}`,
|
|
271
|
+
objective: objective.trim(),
|
|
272
|
+
scope: scope.map((s) => s.trim()).filter(Boolean),
|
|
273
|
+
rootId: 'root',
|
|
274
|
+
nodes: {},
|
|
275
|
+
createdAt: now,
|
|
276
|
+
updatedAt: now,
|
|
277
|
+
nextCounter: 1,
|
|
278
|
+
};
|
|
279
|
+
run.nodes[run.rootId] = {
|
|
280
|
+
id: run.rootId,
|
|
281
|
+
label: 'start',
|
|
282
|
+
category: 'recon',
|
|
283
|
+
command: '',
|
|
284
|
+
rationale: 'Root of the search tree.',
|
|
285
|
+
prior: 1,
|
|
286
|
+
parentId: null,
|
|
287
|
+
children: [],
|
|
288
|
+
visits: 1,
|
|
289
|
+
valueSum: 0,
|
|
290
|
+
status: 'pending',
|
|
291
|
+
};
|
|
292
|
+
seedBaseActions(run);
|
|
293
|
+
persistRun(run);
|
|
294
|
+
return run;
|
|
295
|
+
}
|
|
296
|
+
export function resumeOffsecRun(runId) {
|
|
297
|
+
const targetId = runId ?? loadLatestRunId();
|
|
298
|
+
if (!targetId)
|
|
299
|
+
return null;
|
|
300
|
+
return loadRun(targetId);
|
|
301
|
+
}
|
|
302
|
+
export function listOffsecRuns() {
|
|
303
|
+
ensureDirs();
|
|
304
|
+
const entries = [];
|
|
305
|
+
if (existsSync(RUN_DIR)) {
|
|
306
|
+
for (const file of readdirSync(RUN_DIR)) {
|
|
307
|
+
if (!file.endsWith('.json'))
|
|
308
|
+
continue;
|
|
309
|
+
const id = file.replace(/\.json$/, '');
|
|
310
|
+
const run = loadRun(id);
|
|
311
|
+
if (run) {
|
|
312
|
+
entries.push({ id, objective: run.objective, updatedAt: run.updatedAt });
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return entries.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
317
|
+
}
|
|
318
|
+
export function recordOffsecOutcome(runId, actionId, outcome, note) {
|
|
319
|
+
const run = loadRun(runId);
|
|
320
|
+
if (!run)
|
|
321
|
+
return null;
|
|
322
|
+
const node = run.nodes[actionId];
|
|
323
|
+
if (!node)
|
|
324
|
+
return null;
|
|
325
|
+
const reward = outcome === 'success' ? 1 : outcome === 'detected' ? -0.6 : -0.2;
|
|
326
|
+
node.status = outcome === 'success' ? 'succeeded' : outcome === 'detected' ? 'detected' : 'failed';
|
|
327
|
+
node.visits += 1;
|
|
328
|
+
node.valueSum += reward;
|
|
329
|
+
node.note = note?.trim() || node.note;
|
|
330
|
+
// Propagate reward up the tree (decays each level)
|
|
331
|
+
let currentId = node.parentId;
|
|
332
|
+
let decay = 0.6;
|
|
333
|
+
while (currentId) {
|
|
334
|
+
const parent = run.nodes[currentId];
|
|
335
|
+
if (!parent)
|
|
336
|
+
break;
|
|
337
|
+
parent.visits += 1;
|
|
338
|
+
parent.valueSum += reward * decay;
|
|
339
|
+
currentId = parent.parentId;
|
|
340
|
+
decay *= 0.5;
|
|
341
|
+
}
|
|
342
|
+
if (outcome === 'success') {
|
|
343
|
+
expandFollowOn(run, node);
|
|
344
|
+
}
|
|
345
|
+
persistRun(run);
|
|
346
|
+
return run;
|
|
347
|
+
}
|
|
348
|
+
export function getOffsecNextActions(runId, count = 3) {
|
|
349
|
+
const run = loadRun(runId);
|
|
350
|
+
if (!run)
|
|
351
|
+
return [];
|
|
352
|
+
return getNextActionsFromRun(run, count);
|
|
353
|
+
}
|
|
354
|
+
export function simulateOffsecRollout(runId, steps = 5) {
|
|
355
|
+
const run = loadRun(runId);
|
|
356
|
+
if (!run)
|
|
357
|
+
return [];
|
|
358
|
+
const plan = [];
|
|
359
|
+
for (let i = 0; i < steps; i++) {
|
|
360
|
+
const next = getNextActionsFromRun(run, 1)[0];
|
|
361
|
+
if (!next)
|
|
362
|
+
break;
|
|
363
|
+
plan.push(next);
|
|
364
|
+
// Virtual visit to bias tree without marking success/failure
|
|
365
|
+
const node = run.nodes[next.id];
|
|
366
|
+
if (node) {
|
|
367
|
+
node.visits += 1;
|
|
368
|
+
node.valueSum += 0.05;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
persistRun(run);
|
|
372
|
+
return plan;
|
|
373
|
+
}
|
|
374
|
+
export function formatOffsecStatus(run, next = []) {
|
|
375
|
+
const successes = Object.values(run.nodes).filter((n) => n.status === 'succeeded').length;
|
|
376
|
+
const failures = Object.values(run.nodes).filter((n) => n.status === 'failed').length;
|
|
377
|
+
const detected = Object.values(run.nodes).filter((n) => n.status === 'detected').length;
|
|
378
|
+
const pending = Object.values(run.nodes).filter((n) => n.status === 'pending').length;
|
|
379
|
+
const lines = [];
|
|
380
|
+
lines.push(`Offsec AlphaZero run: ${run.id}`);
|
|
381
|
+
lines.push(`Objective: ${run.objective}`);
|
|
382
|
+
lines.push(`Scope: ${run.scope.length > 0 ? run.scope.join(', ') : '<unset>'}`);
|
|
383
|
+
lines.push(`Progress: ${successes} success | ${failures} fail | ${detected} detected | ${pending} pending`);
|
|
384
|
+
lines.push(`Updated: ${run.updatedAt}`);
|
|
385
|
+
if (next.length > 0) {
|
|
386
|
+
lines.push('');
|
|
387
|
+
lines.push('Next actions:');
|
|
388
|
+
for (const action of next) {
|
|
389
|
+
lines.push(` [${action.id}] ${action.label} (${action.category}) score=${action.score}`);
|
|
390
|
+
lines.push(` cmd: ${action.command}`);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return lines.join('\n');
|
|
394
|
+
}
|
|
395
|
+
//# sourceMappingURL=offsecAlphaZero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offsecAlphaZero.js","sourceRoot":"","sources":["../../src/core/offsecAlphaZero.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAwBD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,wBAAgB,2BAA2B,IAAI,WAAW,GAAG,IAAI,CAMhE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAUtE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CASnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,wBAAwB,GAAG,IAAI,CAazF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,wBAAwB,GACnC,IAAI,CAMN;AAED,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAQ7D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAc3D;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CA2BrF;AA4HD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YASnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAQ/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAMxF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiChG,CAAC"}
|
package/dist/core/preferences.js
CHANGED
|
@@ -89,6 +89,7 @@ export function loadSessionPreferences() {
|
|
|
89
89
|
autosave: typeof section?.autosave === 'boolean' ? section.autosave : true,
|
|
90
90
|
autoResume: typeof section?.autoResume === 'boolean' ? section.autoResume : true,
|
|
91
91
|
autoContinue: typeof section?.autoContinue === 'boolean' ? section.autoContinue : false,
|
|
92
|
+
alphaZeroMode: typeof section?.alphaZeroMode === 'boolean' ? section.alphaZeroMode : false,
|
|
92
93
|
lastSessionId: typeof section?.lastSessionId === 'string' && section.lastSessionId.trim()
|
|
93
94
|
? section.lastSessionId.trim()
|
|
94
95
|
: null,
|
|
@@ -109,6 +110,9 @@ export function saveSessionPreferences(preferences) {
|
|
|
109
110
|
if (typeof preferences.autoContinue === 'boolean') {
|
|
110
111
|
section.autoContinue = preferences.autoContinue;
|
|
111
112
|
}
|
|
113
|
+
if (typeof preferences.alphaZeroMode === 'boolean') {
|
|
114
|
+
section.alphaZeroMode = preferences.alphaZeroMode;
|
|
115
|
+
}
|
|
112
116
|
if ('lastSessionId' in preferences) {
|
|
113
117
|
section.lastSessionId = preferences.lastSessionId ?? undefined;
|
|
114
118
|
}
|
|
@@ -186,6 +190,9 @@ function parseSessionPreferences(value) {
|
|
|
186
190
|
if (typeof record.autoContinue === 'boolean') {
|
|
187
191
|
section.autoContinue = record.autoContinue;
|
|
188
192
|
}
|
|
193
|
+
if (typeof record.alphaZeroMode === 'boolean') {
|
|
194
|
+
section.alphaZeroMode = record.alphaZeroMode;
|
|
195
|
+
}
|
|
189
196
|
if (typeof record.lastSessionId === 'string' && record.lastSessionId.trim()) {
|
|
190
197
|
section.lastSessionId = record.lastSessionId.trim();
|
|
191
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACxD,MAAM,eAAe,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"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"}
|