@trenchwork/erosolar 1.1.37 → 1.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +219 -170
  2. package/SECURITY.md +28 -6
  3. package/agents/engagement-delivery.rules.json +7 -0
  4. package/agents/variant-research.rules.json +7 -0
  5. package/dist/bin/erosolar.js +40 -0
  6. package/dist/bin/erosolar.js.map +1 -1
  7. package/dist/capabilities/_opsContext.d.ts +65 -1
  8. package/dist/capabilities/_opsContext.d.ts.map +1 -1
  9. package/dist/capabilities/_opsContext.js +43 -0
  10. package/dist/capabilities/_opsContext.js.map +1 -1
  11. package/dist/capabilities/heliaCapability.d.ts +15 -0
  12. package/dist/capabilities/heliaCapability.d.ts.map +1 -0
  13. package/dist/capabilities/heliaCapability.js +34 -0
  14. package/dist/capabilities/heliaCapability.js.map +1 -0
  15. package/dist/capabilities/index.d.ts +1 -0
  16. package/dist/capabilities/index.d.ts.map +1 -1
  17. package/dist/capabilities/index.js +1 -0
  18. package/dist/capabilities/index.js.map +1 -1
  19. package/dist/capabilities/llmRedteamCapability.d.ts.map +1 -1
  20. package/dist/capabilities/llmRedteamCapability.js +47 -0
  21. package/dist/capabilities/llmRedteamCapability.js.map +1 -1
  22. package/dist/core/artifactLog.d.ts +82 -0
  23. package/dist/core/artifactLog.d.ts.map +1 -0
  24. package/dist/core/artifactLog.js +224 -0
  25. package/dist/core/artifactLog.js.map +1 -0
  26. package/dist/core/artifactStore.d.ts +17 -0
  27. package/dist/core/artifactStore.d.ts.map +1 -1
  28. package/dist/core/artifactStore.js +22 -0
  29. package/dist/core/artifactStore.js.map +1 -1
  30. package/dist/core/cliTriggerHandlers.d.ts +15 -0
  31. package/dist/core/cliTriggerHandlers.d.ts.map +1 -0
  32. package/dist/core/cliTriggerHandlers.js +60 -0
  33. package/dist/core/cliTriggerHandlers.js.map +1 -0
  34. package/dist/core/portalPresence.d.ts +74 -0
  35. package/dist/core/portalPresence.d.ts.map +1 -0
  36. package/dist/core/portalPresence.js +187 -0
  37. package/dist/core/portalPresence.js.map +1 -0
  38. package/dist/core/updateChecker.d.ts.map +1 -1
  39. package/dist/core/updateChecker.js +8 -6
  40. package/dist/core/updateChecker.js.map +1 -1
  41. package/dist/headless/interactiveShell.js +23 -0
  42. package/dist/headless/interactiveShell.js.map +1 -1
  43. package/dist/plugins/tools/mcp/mcpClient.js +1 -1
  44. package/dist/plugins/tools/mcp/mcpClient.js.map +1 -1
  45. package/dist/runtime/node.d.ts.map +1 -1
  46. package/dist/runtime/node.js +2 -2
  47. package/dist/runtime/node.js.map +1 -1
  48. package/dist/runtime/phaseEmitter.d.ts +6 -0
  49. package/dist/runtime/phaseEmitter.d.ts.map +1 -1
  50. package/dist/runtime/phaseEmitter.js +0 -0
  51. package/dist/runtime/phaseEmitter.js.map +1 -1
  52. package/dist/tools/engagementTools.d.ts.map +1 -1
  53. package/dist/tools/engagementTools.js +73 -1
  54. package/dist/tools/engagementTools.js.map +1 -1
  55. package/dist/tools/heliaControl.d.ts +17 -0
  56. package/dist/tools/heliaControl.d.ts.map +1 -1
  57. package/dist/tools/heliaControl.js +108 -2
  58. package/dist/tools/heliaControl.js.map +1 -1
  59. package/dist/tools/heliaTools.d.ts +22 -0
  60. package/dist/tools/heliaTools.d.ts.map +1 -0
  61. package/dist/tools/heliaTools.js +125 -0
  62. package/dist/tools/heliaTools.js.map +1 -0
  63. package/dist/tools/scheduleTools.d.ts.map +1 -1
  64. package/dist/tools/scheduleTools.js +5 -2
  65. package/dist/tools/scheduleTools.js.map +1 -1
  66. package/dist/tools/webTools.js +1 -1
  67. package/dist/tools/webTools.js.map +1 -1
  68. package/dist/utils/heliaClient.d.ts +23 -0
  69. package/dist/utils/heliaClient.d.ts.map +1 -0
  70. package/dist/utils/heliaClient.js +79 -0
  71. package/dist/utils/heliaClient.js.map +1 -0
  72. package/dist/utils/lambdaClient.d.ts.map +1 -1
  73. package/dist/utils/lambdaClient.js +9 -0
  74. package/dist/utils/lambdaClient.js.map +1 -1
  75. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"llmRedteamCapability.js","sourceRoot":"","sources":["../../src/capabilities/llmRedteamCapability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmRedteamCapability.js","sourceRoot":"","sources":["../../src/capabilities/llmRedteamCapability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Append-only artifact transparency log.
3
+ *
4
+ * Every artifact registered in the artifact store fires a metadata
5
+ * row to Firestore at `artifact_log/{uid}/entries/{entryId}`. The log
6
+ * carries the sha256 + tags + size + timestamp + profile + cli
7
+ * version + operator uid/email — NEVER the artifact contents. If the
8
+ * artifact later surfaces in the wild, you can prove "this hash was
9
+ * produced at this time, under this profile, by this operator,
10
+ * tagged for this engagement."
11
+ *
12
+ * Threat model addressed:
13
+ *
14
+ * - Endpoint compromise / lost laptop. Even if `~/.erosolar/` is
15
+ * exfiltrated, the metadata trail is server-side and replicated
16
+ * out of the operator's control.
17
+ * - Accidental/sloppy delivery. Distinguishes "shipped through the
18
+ * sanctioned path" (logged) from "escaped" (not logged).
19
+ * - Provenance disputes. Backdating a leaked exploit becomes
20
+ * provably false against the Firestore server-timestamp.
21
+ *
22
+ * Threats NOT addressed (be honest):
23
+ *
24
+ * - Determined insider with operator rights can simply not register
25
+ * the artifact, or modify the CLI source to bypass this writer.
26
+ * The log makes good-faith use auditable; it doesn't stop a
27
+ * malicious operator who decides to bypass the tooling. That gap
28
+ * is what hardware co-sign / threshold signing would close, and
29
+ * is intentionally out of scope for the budget-startup baseline.
30
+ * - Once an artifact is decrypted in process memory, it's leakable.
31
+ * Encryption at rest with KMS-wrapped DEKs would close the
32
+ * "stolen laptop yields plaintext" gap; out of scope here.
33
+ *
34
+ * Failure mode: a Firestore call failure does NOT block the artifact
35
+ * write. The agent has to keep working when the operator is offline.
36
+ * Failed writes are queued at `~/.erosolar/artifact_log_pending/` and
37
+ * flushed on the next CLI boot via `flushPendingArtifactLog()`.
38
+ *
39
+ * Mirrors the same pattern as `userApproval.ts:writeUsageLog` and
40
+ * `userApproval.ts:writeReviewerLog` — same Firestore REST surface,
41
+ * same append-only Firestore rule on the receiving end.
42
+ */
43
+ export interface ArtifactLogEntry {
44
+ /** sha256 hex digest of the artifact contents. */
45
+ sha256: string;
46
+ /** Byte length of the artifact. */
47
+ size: number;
48
+ /** ISO-8601 client timestamp at the moment of the artifact `put()`. */
49
+ clientCreatedAt: string;
50
+ /** Tags from `ArtifactMetadata.tags`, e.g. `['poc', 'crash']`. */
51
+ tags?: string[];
52
+ /** Free-form source identifier from the producing tool, e.g. `afl_fuzz_status`. */
53
+ source?: string;
54
+ /** Free-form description from the producing tool. */
55
+ description?: string;
56
+ /** Active profile, e.g. `variant-research` / `engagement-delivery`. */
57
+ profile?: string;
58
+ /** CLI semver from package.json. */
59
+ cliVersion?: string;
60
+ /** Engagement identifier when the variant-research / engagement-delivery
61
+ * profile has one in scope. Free-form string the operator sets. */
62
+ engagementId?: string;
63
+ }
64
+ export declare function __setArtifactLogTap(fn: ((entry: ArtifactLogEntry) => void) | null): void;
65
+ export declare function writeArtifactLog(entry: ArtifactLogEntry): Promise<{
66
+ ok: boolean;
67
+ queued?: boolean;
68
+ reason?: string;
69
+ }>;
70
+ /**
71
+ * Drain the pending queue at boot. Called once from the CLI bootstrap
72
+ * after `requireAuth()` succeeds. Each successful flush deletes the
73
+ * pending file; failures stay queued for the next boot. Returns
74
+ * `{ flushed, remaining }` for the optional caller log line.
75
+ */
76
+ export declare function flushPendingArtifactLog(): Promise<{
77
+ flushed: number;
78
+ remaining: number;
79
+ }>;
80
+ /** Test seam — overrideable so unit tests can point at a temp dir. */
81
+ export declare function getPendingDir(): string;
82
+ //# sourceMappingURL=artifactLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactLog.d.ts","sourceRoot":"","sources":["../../src/core/artifactLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAmBH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;wEACoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwBD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAExF;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB7D;AAuDD;;;;;GAKG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4C/F;AAED,sEAAsE;AACtE,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Append-only artifact transparency log.
3
+ *
4
+ * Every artifact registered in the artifact store fires a metadata
5
+ * row to Firestore at `artifact_log/{uid}/entries/{entryId}`. The log
6
+ * carries the sha256 + tags + size + timestamp + profile + cli
7
+ * version + operator uid/email — NEVER the artifact contents. If the
8
+ * artifact later surfaces in the wild, you can prove "this hash was
9
+ * produced at this time, under this profile, by this operator,
10
+ * tagged for this engagement."
11
+ *
12
+ * Threat model addressed:
13
+ *
14
+ * - Endpoint compromise / lost laptop. Even if `~/.erosolar/` is
15
+ * exfiltrated, the metadata trail is server-side and replicated
16
+ * out of the operator's control.
17
+ * - Accidental/sloppy delivery. Distinguishes "shipped through the
18
+ * sanctioned path" (logged) from "escaped" (not logged).
19
+ * - Provenance disputes. Backdating a leaked exploit becomes
20
+ * provably false against the Firestore server-timestamp.
21
+ *
22
+ * Threats NOT addressed (be honest):
23
+ *
24
+ * - Determined insider with operator rights can simply not register
25
+ * the artifact, or modify the CLI source to bypass this writer.
26
+ * The log makes good-faith use auditable; it doesn't stop a
27
+ * malicious operator who decides to bypass the tooling. That gap
28
+ * is what hardware co-sign / threshold signing would close, and
29
+ * is intentionally out of scope for the budget-startup baseline.
30
+ * - Once an artifact is decrypted in process memory, it's leakable.
31
+ * Encryption at rest with KMS-wrapped DEKs would close the
32
+ * "stolen laptop yields plaintext" gap; out of scope here.
33
+ *
34
+ * Failure mode: a Firestore call failure does NOT block the artifact
35
+ * write. The agent has to keep working when the operator is offline.
36
+ * Failed writes are queued at `~/.erosolar/artifact_log_pending/` and
37
+ * flushed on the next CLI boot via `flushPendingArtifactLog()`.
38
+ *
39
+ * Mirrors the same pattern as `userApproval.ts:writeUsageLog` and
40
+ * `userApproval.ts:writeReviewerLog` — same Firestore REST surface,
41
+ * same append-only Firestore rule on the receiving end.
42
+ */
43
+ import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
44
+ import { homedir } from 'node:os';
45
+ import { join } from 'node:path';
46
+ import { FIREBASE_PROJECT_ID, getAuthStatus, getValidIdToken } from './auth.js';
47
+ import { logDebug } from '../utils/debugLogger.js';
48
+ const FIRESTORE_BASE = `https://firestore.googleapis.com/v1/projects/${FIREBASE_PROJECT_ID}/databases/(default)/documents`;
49
+ // Resolved at call time (not module load) so EROSOLAR_HOME / HOME
50
+ // overrides from tests + custom installs are honoured. Same pattern
51
+ // secretStore.ts uses for ~/.erosolar/secrets.json.
52
+ function pendingDir() {
53
+ const root = process.env['EROSOLAR_HOME']?.trim() || homedir();
54
+ return join(root, '.erosolar', 'artifact_log_pending');
55
+ }
56
+ /**
57
+ * Append one row to `artifact_log/{uid}/entries/{entryId}`. Best-effort:
58
+ * a Firestore failure (offline, expired token, rule denial) writes the
59
+ * entry to the pending queue and returns `{ ok: false, queued: true }`.
60
+ * Caller MUST NOT block on this — it's fire-and-forget by contract.
61
+ */
62
+ /**
63
+ * Test seam — when a tap is installed, every entry passed to
64
+ * `writeArtifactLog` is ALSO surfaced through it before the normal
65
+ * Firestore-or-queue routing runs. Production never installs a tap;
66
+ * tests use it to assert on the entry shape without caring whether
67
+ * the runtime took the Firestore path or the queue path. The tap
68
+ * cannot suppress or alter the real write — it observes only.
69
+ */
70
+ let entryTap = null;
71
+ export function __setArtifactLogTap(fn) {
72
+ entryTap = fn;
73
+ }
74
+ export async function writeArtifactLog(entry) {
75
+ if (entryTap) {
76
+ try {
77
+ entryTap(entry);
78
+ }
79
+ catch { /* tap errors are observation-only */ }
80
+ }
81
+ const status = getAuthStatus();
82
+ if (!status.authenticated || !status.uid) {
83
+ queuePendingEntry(entry, 'not signed in at write time');
84
+ return { ok: false, queued: true, reason: 'not signed in' };
85
+ }
86
+ try {
87
+ const idToken = await getValidIdToken();
88
+ const result = await postEntry(status.uid, status.email ?? '', entry, idToken);
89
+ if (!result.ok) {
90
+ queuePendingEntry(entry, result.reason ?? 'firestore error');
91
+ return { ok: false, queued: true, reason: result.reason };
92
+ }
93
+ return { ok: true };
94
+ }
95
+ catch (err) {
96
+ const reason = err instanceof Error ? err.message : String(err);
97
+ queuePendingEntry(entry, reason);
98
+ return { ok: false, queued: true, reason };
99
+ }
100
+ }
101
+ async function postEntry(uid, email, entry, idToken) {
102
+ const entryId = `${Date.now()}-${entry.sha256.slice(0, 12)}`;
103
+ const url = `${FIRESTORE_BASE}/artifact_log/${encodeURIComponent(uid)}/entries?documentId=${encodeURIComponent(entryId)}`;
104
+ const fields = {
105
+ uid: { stringValue: uid },
106
+ email: { stringValue: email },
107
+ sha256: { stringValue: entry.sha256 },
108
+ size: { integerValue: String(entry.size) },
109
+ clientCreatedAt: { timestampValue: entry.clientCreatedAt },
110
+ serverLoggedAt: { timestampValue: new Date().toISOString() },
111
+ };
112
+ if (entry.tags && entry.tags.length) {
113
+ fields['tags'] = {
114
+ arrayValue: { values: entry.tags.slice(0, 32).map((t) => ({ stringValue: t.slice(0, 64) })) },
115
+ };
116
+ }
117
+ if (entry.source)
118
+ fields['source'] = { stringValue: entry.source.slice(0, 200) };
119
+ if (entry.description)
120
+ fields['description'] = { stringValue: entry.description.slice(0, 500) };
121
+ if (entry.profile)
122
+ fields['profile'] = { stringValue: entry.profile.slice(0, 64) };
123
+ if (entry.cliVersion)
124
+ fields['cliVersion'] = { stringValue: entry.cliVersion.slice(0, 32) };
125
+ if (entry.engagementId)
126
+ fields['engagementId'] = { stringValue: entry.engagementId.slice(0, 200) };
127
+ const res = await fetch(url, {
128
+ method: 'POST',
129
+ headers: { Authorization: `Bearer ${idToken}`, 'Content-Type': 'application/json' },
130
+ body: JSON.stringify({ fields }),
131
+ });
132
+ if (!res.ok) {
133
+ const txt = await res.text().catch(() => '<no body>');
134
+ return { ok: false, reason: `Firestore ${res.status}: ${txt.slice(0, 200)}` };
135
+ }
136
+ logDebug(`[artifactLog] wrote ${entry.sha256.slice(0, 12)}…`);
137
+ return { ok: true };
138
+ }
139
+ function queuePendingEntry(entry, reason) {
140
+ try {
141
+ if (!existsSync(pendingDir()))
142
+ mkdirSync(pendingDir(), { recursive: true, mode: 0o700 });
143
+ const file = join(pendingDir(), `${Date.now()}-${entry.sha256.slice(0, 12)}.json`);
144
+ writeFileSync(file, JSON.stringify({ entry, queuedAt: new Date().toISOString(), reason }, null, 2), {
145
+ mode: 0o600,
146
+ });
147
+ }
148
+ catch (err) {
149
+ logDebug(`[artifactLog] failed to queue pending entry: ${err instanceof Error ? err.message : err}`);
150
+ }
151
+ }
152
+ /**
153
+ * Drain the pending queue at boot. Called once from the CLI bootstrap
154
+ * after `requireAuth()` succeeds. Each successful flush deletes the
155
+ * pending file; failures stay queued for the next boot. Returns
156
+ * `{ flushed, remaining }` for the optional caller log line.
157
+ */
158
+ export async function flushPendingArtifactLog() {
159
+ if (!existsSync(pendingDir()))
160
+ return { flushed: 0, remaining: 0 };
161
+ const status = getAuthStatus();
162
+ if (!status.authenticated || !status.uid)
163
+ return { flushed: 0, remaining: 0 };
164
+ let files;
165
+ try {
166
+ files = readdirSync(pendingDir()).filter((f) => f.endsWith('.json'));
167
+ }
168
+ catch {
169
+ return { flushed: 0, remaining: 0 };
170
+ }
171
+ if (!files.length)
172
+ return { flushed: 0, remaining: 0 };
173
+ let idToken;
174
+ try {
175
+ idToken = await getValidIdToken();
176
+ }
177
+ catch {
178
+ return { flushed: 0, remaining: files.length };
179
+ }
180
+ let flushed = 0;
181
+ for (const file of files) {
182
+ const path = join(pendingDir(), file);
183
+ let payload = null;
184
+ try {
185
+ payload = JSON.parse(readFileSync(path, 'utf8'));
186
+ }
187
+ catch {
188
+ try {
189
+ unlinkSync(path);
190
+ }
191
+ catch { /* ignore */ }
192
+ continue;
193
+ }
194
+ if (!payload?.entry?.sha256) {
195
+ try {
196
+ unlinkSync(path);
197
+ }
198
+ catch { /* ignore */ }
199
+ continue;
200
+ }
201
+ const result = await postEntry(status.uid, status.email ?? '', payload.entry, idToken);
202
+ if (result.ok) {
203
+ try {
204
+ unlinkSync(path);
205
+ }
206
+ catch { /* ignore */ }
207
+ flushed++;
208
+ }
209
+ }
210
+ const remaining = (() => {
211
+ try {
212
+ return readdirSync(pendingDir()).filter((f) => f.endsWith('.json')).length;
213
+ }
214
+ catch {
215
+ return 0;
216
+ }
217
+ })();
218
+ return { flushed, remaining };
219
+ }
220
+ /** Test seam — overrideable so unit tests can point at a temp dir. */
221
+ export function getPendingDir() {
222
+ return pendingDir();
223
+ }
224
+ //# sourceMappingURL=artifactLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactLog.js","sourceRoot":"","sources":["../../src/core/artifactLog.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,22 @@ export interface ArtifactPutResult {
12
12
  size: number;
13
13
  summary: string;
14
14
  }
15
+ /**
16
+ * Context bound by the CLI bootstrap so every artifact write carries
17
+ * the active profile + CLI version + engagement id into the
18
+ * transparency log. Kept module-local so the ArtifactStore class
19
+ * itself stays decoupled from auth/profile state.
20
+ */
21
+ interface ArtifactLogContext {
22
+ profile?: string;
23
+ cliVersion?: string;
24
+ engagementId?: string;
25
+ /** Set to false to disable the transparency log (tests, --self-test). */
26
+ enabled: boolean;
27
+ }
28
+ export declare function setArtifactLogContext(ctx: Partial<Omit<ArtifactLogContext, 'enabled'>> & {
29
+ enabled?: boolean;
30
+ }): void;
15
31
  export declare class ArtifactStore {
16
32
  private readonly root;
17
33
  private indexCache;
@@ -32,4 +48,5 @@ export declare class ArtifactStore {
32
48
  private buildSummary;
33
49
  }
34
50
  export declare function getSharedArtifactStore(): ArtifactStore;
51
+ export {};
35
52
  //# sourceMappingURL=artifactStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifactStore.d.ts","sourceRoot":"","sources":["../../src/core/artifactStore.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAiD;gBAEvD,IAAI,GAAE,MAAqB;IAOvC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,iBAAiB;IAqBtF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAMvB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI7B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIzC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAAE;IAOpE,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,YAAY;CAQrB;AAID,wBAAgB,sBAAsB,IAAI,aAAa,CAGtD"}
1
+ {"version":3,"file":"artifactStore.d.ts","sourceRoot":"","sources":["../../src/core/artifactStore.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAErH;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAiD;gBAEvD,IAAI,GAAE,MAAqB;IAOvC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,iBAAiB;IAsCtF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAMvB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI7B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIzC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAAE;IAOpE,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,YAAY;CAQrB;AAID,wBAAgB,sBAAsB,IAAI,aAAa,CAGtD"}
@@ -2,6 +2,11 @@ import { createHash } from 'node:crypto';
2
2
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import { dirname, join } from 'node:path';
5
+ import { writeArtifactLog } from './artifactLog.js';
6
+ let logContext = { enabled: true };
7
+ export function setArtifactLogContext(ctx) {
8
+ logContext = { ...logContext, ...ctx };
9
+ }
5
10
  const DEFAULT_ROOT = join(homedir(), '.erosolar', 'artifacts');
6
11
  const INDEX_FILE = 'index.json';
7
12
  export class ArtifactStore {
@@ -35,6 +40,23 @@ export class ArtifactStore {
35
40
  if (meta.description !== undefined)
36
41
  record.description = meta.description;
37
42
  this.writeMeta(record);
43
+ if (logContext.enabled) {
44
+ // Fire-and-forget transparency log. Failures queue locally in
45
+ // ~/.erosolar/artifact_log_pending/ and flush on next boot.
46
+ // The artifact write completes regardless of the log outcome —
47
+ // a Firestore outage must not break offsec workflow continuity.
48
+ void writeArtifactLog({
49
+ sha256: id,
50
+ size: buf.length,
51
+ clientCreatedAt: record.createdAt,
52
+ ...(record.tags ? { tags: record.tags } : {}),
53
+ ...(record.source ? { source: record.source } : {}),
54
+ ...(record.description ? { description: record.description } : {}),
55
+ ...(logContext.profile ? { profile: logContext.profile } : {}),
56
+ ...(logContext.cliVersion ? { cliVersion: logContext.cliVersion } : {}),
57
+ ...(logContext.engagementId ? { engagementId: logContext.engagementId } : {}),
58
+ });
59
+ }
38
60
  return { id, size: buf.length, summary: this.buildSummary(record, buf) };
39
61
  }
40
62
  get(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"artifactStore.js","sourceRoot":"","sources":["../../src/core/artifactStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifactStore.js","sourceRoot":"","sources":["../../src/core/artifactStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Dispatch table for portal-queued cli_triggers.
3
+ *
4
+ * Each kind maps to a handler that runs the work and returns a
5
+ * structured outcome. The consumer in portalPresence.ts records the
6
+ * outcome via `cliTriggerComplete` so the portal can surface "done /
7
+ * failed / cancelled" in its trigger ledger.
8
+ */
9
+ import type { PendingTrigger } from './portalPresence.js';
10
+ export interface TriggerOutcome {
11
+ status: 'done' | 'failed';
12
+ result?: Record<string, unknown>;
13
+ }
14
+ export declare function handleCliTrigger(t: PendingTrigger): Promise<TriggerOutcome>;
15
+ //# sourceMappingURL=cliTriggerHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliTriggerHandlers.d.ts","sourceRoot":"","sources":["../../src/core/cliTriggerHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAUjF"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Dispatch table for portal-queued cli_triggers.
3
+ *
4
+ * Each kind maps to a handler that runs the work and returns a
5
+ * structured outcome. The consumer in portalPresence.ts records the
6
+ * outcome via `cliTriggerComplete` so the portal can surface "done /
7
+ * failed / cancelled" in its trigger ledger.
8
+ */
9
+ import { callLambda } from '../utils/lambdaClient.js';
10
+ export async function handleCliTrigger(t) {
11
+ switch (t.kind) {
12
+ case 'exploit-retest':
13
+ return await handleExploitRetest(t);
14
+ default:
15
+ // Unknown trigger kinds shouldn't crash the consumer — record a
16
+ // failed status with a reason so the portal can show "no
17
+ // handler" instead of leaving the row spinning.
18
+ return { status: 'failed', result: { error: `no handler for kind=${t.kind}` } };
19
+ }
20
+ }
21
+ /**
22
+ * Re-runs the original tool against the original target and writes a
23
+ * fresh exploit run with the appropriate verdict. The portal's
24
+ * canonical exploit doc carries enough metadata (targetHost,
25
+ * vulnClass, payloadSignature, tool) for us to reconstruct an upsert
26
+ * call without needing the trigger row to repeat all of it.
27
+ *
28
+ * For now we issue the upsert with verdict='inconclusive' — the real
29
+ * retest path that actually fires the original tool wires up under a
30
+ * dedicated capability later. Even an inconclusive run bumps
31
+ * `lastVerifiedAt` so the operator can see the portal "Retest now"
32
+ * button actually did something.
33
+ */
34
+ async function handleExploitRetest(t) {
35
+ const args = t.args ?? {};
36
+ const exploitId = typeof args.exploitId === 'string' ? args.exploitId : '';
37
+ if (!exploitId) {
38
+ return { status: 'failed', result: { error: 'exploitId missing in trigger args' } };
39
+ }
40
+ const r = await callLambda('cliExploitUpsert', {
41
+ exploitId,
42
+ identity: {
43
+ targetHost: typeof args.target === 'string' ? args.target : 'unknown',
44
+ vulnClass: 'retest-pending',
45
+ payloadSignature: typeof args.payload === 'string' ? args.payload : '',
46
+ },
47
+ classification: { noteOneApplies: true },
48
+ run: {
49
+ verdict: 'inconclusive',
50
+ tool: typeof t.tool === 'string' ? t.tool : 'portal-retest',
51
+ cmd: null,
52
+ evidenceDelta: { source: 'portal-retest-trigger', triggerId: t.id },
53
+ },
54
+ });
55
+ if (!r.ok) {
56
+ return { status: 'failed', result: { error: r.error || 'cliExploitUpsert failed' } };
57
+ }
58
+ return { status: 'done', result: { exploitId, status: r.result?.status ?? null } };
59
+ }
60
+ //# sourceMappingURL=cliTriggerHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliTriggerHandlers.js","sourceRoot":"","sources":["../../src/core/cliTriggerHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAOtD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,CAAiB;IACtD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,gBAAgB;YACnB,OAAO,MAAM,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACtC;YACE,gEAAgE;YAChE,yDAAyD;YACzD,gDAAgD;YAChD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,mBAAmB,CAAC,CAAiB;IAClD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,CAAC;IACtF,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,UAAU,CACxB,kBAAkB,EAClB;QACE,SAAS;QACT,QAAQ,EAAE;YACR,UAAU,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrE,SAAS,EAAE,gBAAgB;YAC3B,gBAAgB,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACvE;QACD,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;QACxC,GAAG,EAAE;YACH,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YAC3D,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;SACpE;KACF,CACF,CAAC;IACF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,yBAAyB,EAAE,EAAE,CAAC;IACvF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;AACrF,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Portal presence + signal channel for the running CLI.
3
+ *
4
+ * Three integrations live in this module — they share auth / device
5
+ * identity / fire-and-forget posture and stay easier to reason about
6
+ * when bundled together than scattered across the bin entry, the
7
+ * shell, and individual tools.
8
+ *
9
+ * 1. **Device registration + heartbeat.** On launch, the CLI writes
10
+ * a row to `users/{uid}/appDevices/{deviceId}` with profile,
11
+ * version, hostname, pid, cwd. A 30-second heartbeat keeps
12
+ * `lastSeenAt` warm so the portal can render an honest "this CLI
13
+ * is online" pill instead of guessing from the most-recent
14
+ * activity.
15
+ *
16
+ * 2. **Active-prompt broadcast.** When the user submits a prompt to
17
+ * the interactive shell, we append a message row to
18
+ * `users/{uid}/messages/{ts}` with `role: 'user'` and the prompt
19
+ * text. The portal subscribes to that collection and renders a
20
+ * live "currently asking" panel so an operator on a different
21
+ * machine can see what their CLI is mid-work on.
22
+ *
23
+ * 3. **cli_triggers consumer.** The portal queues commands (e.g.
24
+ * "retest this exploit now") into `users/{uid}/cli_triggers/{id}`
25
+ * via the lambda. The running CLI long-polls that queue, claims
26
+ * each row, runs the matching action, and completes. Without this
27
+ * consumer the queue is dead weight — the portal "Retest now"
28
+ * button would write a row that nothing ever picks up.
29
+ *
30
+ * Every call is best-effort: a failed network round-trip never
31
+ * blocks startup or stalls the prompt loop. The lambda's signed-in
32
+ * gate handles auth uniformly.
33
+ */
34
+ export interface CliDeviceContext {
35
+ deviceId: string;
36
+ profile: string;
37
+ version: string;
38
+ cwd: string;
39
+ pid: number;
40
+ }
41
+ export declare function registerCliDevice(opts: {
42
+ profile: string;
43
+ version: string;
44
+ projectId?: string;
45
+ }): Promise<CliDeviceContext>;
46
+ /**
47
+ * Append a user/assistant message row so the portal can render the
48
+ * "currently asking" panel. The text is truncated server-side too,
49
+ * but trimming up front keeps the wire payload small.
50
+ */
51
+ export declare function broadcastMessage(role: 'user' | 'assistant', text: string): Promise<void>;
52
+ export interface PendingTrigger {
53
+ id: string;
54
+ kind: string;
55
+ tool?: string | null;
56
+ args?: Record<string, unknown> | null;
57
+ engagementId?: string | null;
58
+ targetId?: string | null;
59
+ }
60
+ export type TriggerHandler = (t: PendingTrigger) => Promise<{
61
+ status: 'done' | 'failed';
62
+ result?: Record<string, unknown>;
63
+ }>;
64
+ /**
65
+ * Long-poll `cli_triggers` and dispatch each queued row to the
66
+ * supplied handler. Runs forever (until process exit). Errors in the
67
+ * handler are recorded via cliTriggerComplete with status='failed' so
68
+ * the portal can surface a useful message instead of leaving the
69
+ * trigger spinning.
70
+ */
71
+ export declare function startTriggerConsumer(handler: TriggerHandler): void;
72
+ export declare function stopTriggerConsumer(): void;
73
+ export declare function _resetForTests(): void;
74
+ //# sourceMappingURL=portalPresence.d.ts.map