@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
package/SECURITY.md CHANGED
@@ -144,14 +144,36 @@ delivery is the audit point.
144
144
  - 2FA on the publisher's GitHub + npm accounts is **required** for
145
145
  any contributor with publish rights.
146
146
 
147
- ## Export controls
147
+ ## Export classification
148
+
149
+ Two distinct artefacts in this repo, two different EAR statuses. Treat
150
+ them differently when sharing or distributing:
151
+
152
+ | Artefact | ECCN | Rule |
153
+ |---|---|---|
154
+ | **Compiled CLI binary** (`@trenchwork/erosolar` on npm; AppImage / .deb / DMG of Helia) | **4D004** — "intrusion software" | Re-distribution to non-U.S. persons requires an EAR / Wassenaar export license OR a License Exception eligibility check. |
155
+ | **Source code + agent rulebooks** (`src/**`, `agents/*.rules.json`) | **4E001.a / 4E001.c** — "technology for the development … of items controlled by 4D004" | Same export-license question as the binary. Each rulebook carries an `_export_classification` block stating its ECCN at the top of the file. |
156
+ | **Vulnerability research output** (findings, CVE submissions, coordinated-disclosure packages, fix-validation payloads sent to the affected vendor) | **NOT controlled** — BIS Note 1 carve-out for *vulnerability disclosure* and *cyber incident response* | No export-license question. Travels via coordinated-disclosure channels regardless of recipient nationality. |
157
+ | **Working exploit chain transferred for offensive-cyber use** (i.e. to a broker, government, or any non-disclosure recipient) | **4D004** | Same export-license question as the CLI binary. The disclosure carve-out does NOT apply when the recipient isn't the affected vendor or a vulnerability-coordination authority. |
158
+
159
+ Rule source: [86 FR 58205 (2021-10-21) — Information Security Controls: Cybersecurity Items](https://www.federalregister.gov/documents/2021/10/21/2021-22774/information-security-controls-cybersecurity-items). Public legal-scope statement and procurement contact: [/defense](https://trenchwork.org/defense). Layperson summary with citations: [/about](https://trenchwork.org/about).
160
+
161
+ The author is not a lawyer; export-control counsel should review any
162
+ specific transfer that touches the international-distribution line.
163
+
164
+ ## Export controls — operational
148
165
 
149
166
  The agent surface includes offensive cyber tooling. U.S. export
150
- classification: EAR-controlled (CCL [ECCN 4D004](https://www.federalregister.gov/documents/2021/10/21/2021-22774/information-security-controls-cybersecurity-items)),
151
- not USML/ITAR. Domestic development and use is unrestricted; export
152
- controls apply to international transfer. See
153
- [trenchwork.org/about](https://trenchwork.org/about) for the full disclosure
154
- including BIS / DDTC links and the relevant rulemaking.
167
+ classification: EAR-controlled (CCL [ECCN 4D004](https://www.federalregister.gov/documents/2021/10/21/2021-22774/information-security-controls-cybersecurity-items)
168
+ + 4E001 for development technology). Domestic development and use is
169
+ unrestricted; export controls apply to international transfer. BIS
170
+ Note 1 carves out vulnerability disclosure and cyber incident response
171
+ activities. Good-faith security research is affirmatively protected by
172
+ [Van Buren v. United States, 594 U.S. 374 (2021)](https://www.supremecourt.gov/opinions/20pdf/19-783_k53l.pdf),
173
+ the [DOJ May-2022 CFAA Charging Policy](https://www.justice.gov/opa/pr/department-justice-announces-new-policy-charging-cases-under-computer-fraud-and-abuse-act),
174
+ and the [LOC § 1201 Triennial Exemption (2024)](https://www.copyright.gov/1201/2024/).
175
+ See [trenchwork.org/about](https://trenchwork.org/about) for the full
176
+ disclosure including BIS links and the relevant rulemaking.
155
177
 
156
178
  ## Audit portal
157
179
 
@@ -5,6 +5,13 @@
5
5
  "version": "2026-05-07",
6
6
  "label": "Engagement Delivery Agent",
7
7
  "description": "Authorized procurement-delivery agent. Same VR workflow as variant-research (recon → acquire → bindiff → variant → fuzz → triage → poc), but the terminal phase delivers to an engagement's authorized recipient — a U.S. government contract task order, a U.S. defense-prime engagement under contract, or a published bug-bounty program. Operator authorizes every target with a contract / task-order / scope-of-work reference; the CLI does not second-guess engagement scope.",
8
+ "_export_classification": {
9
+ "eccn": "4E001.c",
10
+ "rationale": "This rulebook is technology for the development of intrusion software (4D004) — the agent loaded with these rules produces and delivers exploitation work-product against operator-authorized targets under contract. Re-distribution of this file to non-U.S. persons requires an EAR / Wassenaar export license, License Exception eligibility check (e.g. ENC), or both. Lawful sale of the resulting controlled tool / engagement service is restricted to U.S. government agencies and U.S. defense prime contractors per /defense.",
11
+ "carveOut": "Vulnerability findings emitted by this agent (CVE submissions, coordinated-disclosure packages, vendor fix-validation transfers) are uncontrolled per BIS Note 1 to ECCN 4D004 — the carve-out for vulnerability disclosure and cyber incident response. Delivery of a working exploit chain to a non-disclosure recipient (i.e. for offensive-cyber use rather than defensive remediation) stays inside 4D004 and requires the export-license analysis above.",
12
+ "ruleSource": "86 FR 58205 (2021-10-21) — Information Security Controls: Cybersecurity Items.",
13
+ "lastReviewed": "2026-05-10"
14
+ },
8
15
  "globalPrinciples": [
9
16
  {
10
17
  "id": "ed.scope_authorization",
@@ -5,6 +5,13 @@
5
5
  "version": "2026-05-07",
6
6
  "label": "Variant Research Agent",
7
7
  "description": "Authorized variant-discovery and exploit-research agent. Walks the workflow: target acquisition (web search) → vulnerable+patched binary acquisition → patch diff (Ghidra MCP) → variant search → fuzz campaign (AFL++) → crash triage (gdb/pwndbg) → PoC development (pwntools) → coordinated disclosure. Operator authorizes every target; the CLI does not second-guess engagement scope.",
8
+ "_export_classification": {
9
+ "eccn": "4E001.c",
10
+ "rationale": "This rulebook is technology for the development of intrusion software (4D004) — the agent loaded with these rules is configured to perform unauthorized-access-style probing against operator-authorized targets. Re-distribution of this file to non-U.S. persons requires an EAR / Wassenaar export license, License Exception eligibility check (e.g. ENC), or both.",
11
+ "carveOut": "Vulnerability research output produced under this rulebook (findings, write-ups, CVE submissions, coordinated-disclosure packages) is uncontrolled per BIS Note 1 to ECCN 4D004 — the carve-out for vulnerability disclosure and cyber incident response. That output travels via coordinated-disclosure channels regardless of recipient nationality.",
12
+ "ruleSource": "86 FR 58205 (2021-10-21) — Information Security Controls: Cybersecurity Items.",
13
+ "lastReviewed": "2026-05-10"
14
+ },
8
15
  "globalPrinciples": [
9
16
  {
10
17
  "id": "vr.scope_authorization",
@@ -389,6 +389,28 @@ async function main() {
389
389
  if (sessionStart.ok && sessionStart.sessionId) {
390
390
  process.env['EROSOLAR_SESSION_ID'] = sessionStart.sessionId;
391
391
  }
392
+ // Bind the artifact transparency-log context so every artifact
393
+ // store `put()` carries profile + cli version + engagement id into
394
+ // Firestore at artifact_log/{uid}/entries/{id}. EROSOLAR_ENGAGEMENT_ID
395
+ // is the operator's freeform tag for engagement-delivery /
396
+ // variant-research runs; if unset, the field is omitted from the log
397
+ // row but everything else still records. Flush any pending entries
398
+ // queued by a previous offline run — fire-and-forget.
399
+ const { setArtifactLogContext } = await import('../core/artifactStore.js');
400
+ setArtifactLogContext({
401
+ profile: requestedProfile,
402
+ cliVersion,
403
+ ...(process.env['EROSOLAR_ENGAGEMENT_ID']?.trim()
404
+ ? { engagementId: process.env['EROSOLAR_ENGAGEMENT_ID'].trim() }
405
+ : {}),
406
+ });
407
+ void (async () => {
408
+ try {
409
+ const { flushPendingArtifactLog } = await import('../core/artifactLog.js');
410
+ await flushPendingArtifactLog();
411
+ }
412
+ catch (_) { /* pending-flush is fire-and-forget */ }
413
+ })();
392
414
  // Mirror the active profile + model + platform to the Remote
393
415
  // Operations Center so the portal's "Profile" pill shows what the
394
416
  // CLI is currently running. Fire-and-forget; a failed call never
@@ -406,6 +428,24 @@ async function main() {
406
428
  }
407
429
  catch (_) { /* portal mirror is fire-and-forget */ }
408
430
  })();
431
+ // Portal presence: register this CLI as an appDevice + start the
432
+ // 30s heartbeat + start the cli_triggers consumer (so the portal's
433
+ // "Retest now" button has a live worker to dispatch to). All three
434
+ // are fire-and-forget; a portal-side outage never blocks the agent
435
+ // loop. See src/core/portalPresence.ts for the contract.
436
+ void (async () => {
437
+ try {
438
+ const { registerCliDevice, startTriggerConsumer } = await import('../core/portalPresence.js');
439
+ await registerCliDevice({
440
+ profile: requestedProfile,
441
+ version: cliVersion,
442
+ projectId: projectResult.context.projectId,
443
+ });
444
+ const { handleCliTrigger } = await import('../core/cliTriggerHandlers.js');
445
+ startTriggerConsumer(handleCliTrigger);
446
+ }
447
+ catch (_) { /* presence is fire-and-forget */ }
448
+ })();
409
449
  // Force color support for TTY terminals.
410
450
  if (process.stdout.isTTY && !process.env['NO_COLOR']) {
411
451
  process.env['FORCE_COLOR'] = process.env['FORCE_COLOR'] ?? '1';
@@ -1 +1 @@
1
- {"version":3,"file":"erosolar.js","sourceRoot":"","sources":["../../src/bin/erosolar.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAgB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,uEAAuE;AACvE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtC;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAc;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IACrD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACjD,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;AACvF,KAAK,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEhE,iEAAiE;AACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;IACpB,IAAI,QAA4B,CAAC;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5E,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;oBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAClD,CAAC,CAAC,EAAE,CAAC;gBACP,QAAQ,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;gBACxC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvE,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,eAAe;oBACtB,IAAI,EAAE,6CAA6C;iBACpD,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,oBAAoB;oBAC3B,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACvD,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC1D,MAAM,QAAQ,CAAC;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,6BAA6B;aACpC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;AACH,CAAC;KAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,OAAO,GAAG,sBAAsB,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACnC,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE;gBACJ,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC1B,CAAC,SAAS,EAAE,OAAO,CAAC;gBACpB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;gBACzB,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;aACpD;YACD,IAAI,EAAE,yDAAyD;SAChE,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;KAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAChE,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1D,MAAM,QAAQ,CAAC;YACb,KAAK,EAAE,qEAAqE;YAC5E,IAAI,EAAE;gBACJ,oCAAoC;gBACpC,EAAE;gBACF,QAAQ;gBACR,uEAAuE;gBACvE,4DAA4D;gBAC5D,EAAE;gBACF,UAAU;gBACV,4CAA4C;gBAC5C,8CAA8C;gBAC9C,8DAA8D;gBAC9D,2EAA2E;gBAC3E,oDAAoD;gBACpD,8CAA8C;gBAC9C,EAAE;gBACF,cAAc;gBACd,8EAA8E;gBAC9E,gFAAgF;gBAChF,yEAAyE;gBACzE,EAAE;gBACF,mCAAmC;gBACnC,+EAA+E;gBAC/E,gFAAgF;gBAChF,gEAAgE;gBAChE,8DAA8D;gBAC9D,EAAE;gBACF,cAAc;gBACd,4EAA4E;aAC7E,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,oCAAoC;SAC3C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;KAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAClC,qEAAqE;IACrE,sEAAsE;IACtE,mEAAmE;IACnE,uEAAuE;IACvE,0CAA0C;IAC1C,KAAK,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnD,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;IACnC,kEAAkE;IAClE,kEAAkE;IAClE,qEAAqE;IACrE,mEAAmE;IACnE,8DAA8D;IAC9D,2CAA2C;IAC3C,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;KAAM,CAAC;IACN,KAAK,IAAI,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAc;IAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAE/B,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;CAef,CAAC;IAEA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,IAAI,MAAe,CAAC;QACpB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACP,MAAM,QAAQ,CAAC;wBACb,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,mBAAmB;wBAC1B,IAAI,EAAE,4EAA4E;qBACnF,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC5C,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACxD,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACxD,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,KAAK;gBACR,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACxD,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACrD,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC;YACV,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD;gBACE,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,uBAAuB,IAAI,EAAE;oBACpC,IAAI,EAAE,mDAAmD;iBAC1D,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,mEAAmE;QACnE,iEAAiE;QACjE,oEAAoE;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,QAAQ,CAAC;YACb,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,SAAS,IAAI,SAAS;YAC7B,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,4CAA4C;IAC5C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,WAAW,EAAE,CAAC;IAEpB,gEAAgE;IAChE,oEAAoE;IACpE,oEAAoE;IACpE,gEAAgE;IAChE,iEAAiE;IACjE,6DAA6D;IAC7D,2BAA2B;IAC3B,mEAAmE;IACnE,iEAAiE;IACjE,gDAAgD;IAChD,oEAAoE;IACpE,gEAAgE;IAChE,kEAAkE;IAClE,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,eAAe,CAAC;IACvG,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAClE,MAAM,MAAM,CAAC;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,iDAAiD;YACxD,IAAI,EAAE;gBACJ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,IAAI,oCAAoC,CAAC;gBACjE,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;aACzC;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,kBAAkB;oBACzB,IAAI,EAAE,CAAC,mCAAmC,EAAE,4CAA4C,CAAC;iBAC1F,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,iCAAiC;oBACxC,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,2EAA2E;aAClF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,kEAAkE;IAClE,8DAA8D;IAC9D,kEAAkE;IAClE,gDAAgD;IAChD,oEAAoE;IACpE,kEAAkE;IAClE,4BAA4B;IAC5B,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC9E,MAAM,wBAAwB,EAAE,CAAC;IAEjC,gEAAgE;IAChE,wDAAwD;IACxD,2DAA2D;IAC3D,8DAA8D;IAC9D,oDAAoD;IACpD,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAChH,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC;QAC3C,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,aAAa,CAAC,OAAO;KAC/B,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC;IAC9D,CAAC;IAED,6DAA6D;IAC7D,kEAAkE;IAClE,iEAAiE;IACjE,kBAAkB;IAClB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAChE,MAAM,UAAU,CAAC,eAAe,EAAE;gBAChC,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,sCAAsC,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC;IAEL,yCAAyC;IACzC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;IACjE,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAChF,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrD,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"erosolar.js","sourceRoot":"","sources":["../../src/bin/erosolar.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,57 @@ export interface ApprovalRequest {
103
103
  /** Action to take if the operator does not answer in time. */
104
104
  defaultOnTimeout?: 'proceed' | 'abort';
105
105
  }
106
+ /**
107
+ * Canonical exploit upsert input.
108
+ *
109
+ * The `exploitId` is computed from (targetHost + vulnClass +
110
+ * payloadSignature) — same triple twice → same id, so re-runs against
111
+ * the same target merge into one canonical record with a runs
112
+ * subcollection. Today's per-discovery `emitFinding` is the
113
+ * complement: a snapshot row useful for engagement reports. Both
114
+ * coexist; capability handlers usually call BOTH on a hit.
115
+ *
116
+ * `run.verdict` drives the exploit-level status:
117
+ * still-vulnerable → status:'live' (or 'regressed' if previously patched)
118
+ * patched → status:'patched'
119
+ * inconclusive / errored → no status change, run still appended
120
+ */
121
+ export type ExploitVerdict = 'still-vulnerable' | 'patched' | 'regressed' | 'inconclusive' | 'errored';
122
+ export interface ExploitIdentity {
123
+ /** Lower-cased target hostname (or `local-${name}` for non-network targets). */
124
+ targetHost: string;
125
+ /** Coarse class identifier — e.g. 'promptinject', 'sqli.boolean', 'xss.reflected'. */
126
+ vulnClass: string;
127
+ /** Tool-specific signature distinguishing two different exploits in the same class. */
128
+ payloadSignature: string;
129
+ /** Optional full URL of the target endpoint, for the portal drawer. */
130
+ targetUrl?: string;
131
+ }
132
+ export interface ExploitClassification {
133
+ severity?: FindingSeverity;
134
+ cwe?: string;
135
+ cvss?: {
136
+ vector: string;
137
+ score: number;
138
+ };
139
+ /** EAR posture: vulnerability metadata is uncontrolled per BIS Note 1. */
140
+ noteOneApplies?: boolean;
141
+ }
142
+ export interface ExploitRunDraft {
143
+ verdict: ExploitVerdict;
144
+ tool: string;
145
+ cmd?: string[];
146
+ jobId?: string;
147
+ /** Free-form description of what changed since the previous run. */
148
+ evidenceDelta?: unknown;
149
+ }
150
+ export interface ExploitUpsertSpec {
151
+ identity: ExploitIdentity;
152
+ classification?: ExploitClassification;
153
+ run: ExploitRunDraft;
154
+ engagementId?: string | null;
155
+ targetId?: string | null;
156
+ }
106
157
  export interface OpsContext {
107
158
  /** Current engagement (set when the operator selects one in the portal). */
108
159
  readonly engagementId: string | null;
@@ -113,9 +164,22 @@ export interface OpsContext {
113
164
  startJob(spec: JobSpec): Promise<JobHandle>;
114
165
  /** Block on operator HITL approval; resolves to the chosen option label. */
115
166
  requestApproval(req: ApprovalRequest): Promise<string>;
116
- /** Persist a finding under the user's findings collection. */
167
+ /** Persist a per-discovery finding snapshot. Useful for engagement reports. */
117
168
  emitFinding(draft: FindingDraft): Promise<string>;
169
+ /** Upsert a canonical exploit record + append a run. Dedups by computed id. */
170
+ upsertExploit(spec: ExploitUpsertSpec): Promise<{
171
+ exploitId: string;
172
+ isFirstSeen: boolean;
173
+ status: string | null;
174
+ }>;
118
175
  }
176
+ /**
177
+ * Compute the canonical exploit id. Stable across runs; the same
178
+ * (targetHost, vulnClass, payloadSignature) triple always produces
179
+ * the same 16-char hex id. The portal renders one card per id; the
180
+ * runs subcollection tells the story over time.
181
+ */
182
+ export declare function computeExploitId(identity: ExploitIdentity): string;
119
183
  export interface NodeOpsContextOptions {
120
184
  engagementId?: string | null;
121
185
  uid?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"_opsContext.d.ts","sourceRoot":"","sources":["../../src/capabilities/_opsContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_opsContext.d.ts","sourceRoot":"","sources":["../../src/capabilities/_opsContext.ts"],"names":[],"mappings":"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"}
@@ -32,9 +32,24 @@
32
32
  * without blocking the agent loop.
33
33
  */
34
34
  import { spawn } from 'node:child_process';
35
+ import { createHash } from 'node:crypto';
35
36
  import { callLambda } from '../utils/lambdaClient.js';
36
37
  import { logDebug } from '../utils/debugLogger.js';
37
38
  import { ensureBinary } from './_processRunner.js';
39
+ /**
40
+ * Compute the canonical exploit id. Stable across runs; the same
41
+ * (targetHost, vulnClass, payloadSignature) triple always produces
42
+ * the same 16-char hex id. The portal renders one card per id; the
43
+ * runs subcollection tells the story over time.
44
+ */
45
+ export function computeExploitId(identity) {
46
+ const key = [
47
+ String(identity.targetHost || '').toLowerCase().trim(),
48
+ String(identity.vulnClass || '').toLowerCase().trim(),
49
+ String(identity.payloadSignature || '').trim(),
50
+ ].join('|');
51
+ return createHash('sha256').update(key).digest('hex').slice(0, 16);
52
+ }
38
53
  // ── Implementation ────────────────────────────────────────────────
39
54
  const FINDING_SEVERITIES = new Set(['info', 'low', 'medium', 'high', 'critical']);
40
55
  const FINDING_SOURCES = new Set(['recon', 'web', 'llmRedteam', 'network', 'mobile', 'manual']);
@@ -211,6 +226,34 @@ class NodeOpsContext {
211
226
  return req.options[0].label;
212
227
  throw new Error(`HITL timed out after ${timeoutSec}s — operator did not answer in the portal`);
213
228
  }
229
+ async upsertExploit(spec) {
230
+ if (!spec || !spec.identity || !spec.run)
231
+ throw new Error('upsertExploit: identity + run required');
232
+ const exploitId = computeExploitId(spec.identity);
233
+ const payload = {
234
+ exploitId,
235
+ identity: {
236
+ targetHost: spec.identity.targetHost,
237
+ vulnClass: spec.identity.vulnClass,
238
+ payloadSignature: spec.identity.payloadSignature,
239
+ targetUrl: spec.identity.targetUrl,
240
+ },
241
+ classification: spec.classification || { noteOneApplies: true },
242
+ run: {
243
+ verdict: spec.run.verdict,
244
+ tool: spec.run.tool,
245
+ cmd: spec.run.cmd,
246
+ jobId: spec.run.jobId,
247
+ evidenceDelta: spec.run.evidenceDelta,
248
+ },
249
+ engagementId: spec.engagementId ?? this.engagementId ?? null,
250
+ targetId: spec.targetId ?? null,
251
+ };
252
+ const r = await callLambda('cliExploitUpsert', payload);
253
+ if (!r.ok || !r.result?.exploitId)
254
+ throw new Error(`upsertExploit failed: ${r.error}`);
255
+ return r.result;
256
+ }
214
257
  async emitFinding(draft) {
215
258
  if (this.engagementId && draft.engagementId == null)
216
259
  draft.engagementId = this.engagementId;
@@ -1 +1 @@
1
- {"version":3,"file":"_opsContext.js","sourceRoot":"","sources":["../../src/capabilities/_opsContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_opsContext.js","sourceRoot":"","sources":["../../src/capabilities/_opsContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Helia browser capability — exposes the helia_* tool family for
3
+ * browser-only pentest work. Loaded only by offsec profiles via
4
+ * src/runtime/node.ts (variant-research / engagement-delivery), per
5
+ * CLAUDE.md "Capability separation": the default coding profile must
6
+ * not see these tools.
7
+ *
8
+ * v2.2 hardening 2026-05-10.
9
+ */
10
+ import type { CapabilityContribution, CapabilityContext, CapabilityModule } from '../runtime/agentHost.js';
11
+ export declare class HeliaCapabilityModule implements CapabilityModule {
12
+ readonly id = "capability.helia";
13
+ create(_context: CapabilityContext): Promise<CapabilityContribution>;
14
+ }
15
+ //# sourceMappingURL=heliaCapability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heliaCapability.d.ts","sourceRoot":"","sources":["../../src/capabilities/heliaCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3G,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,EAAE,sBAAsB;IAE3B,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAoB3E"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Helia browser capability — exposes the helia_* tool family for
3
+ * browser-only pentest work. Loaded only by offsec profiles via
4
+ * src/runtime/node.ts (variant-research / engagement-delivery), per
5
+ * CLAUDE.md "Capability separation": the default coding profile must
6
+ * not see these tools.
7
+ *
8
+ * v2.2 hardening 2026-05-10.
9
+ */
10
+ import { createHeliaTools } from '../tools/heliaTools.js';
11
+ import { isHeliaRunning } from '../utils/heliaClient.js';
12
+ export class HeliaCapabilityModule {
13
+ id = 'capability.helia';
14
+ async create(_context) {
15
+ void _context;
16
+ const running = isHeliaRunning();
17
+ if (running) {
18
+ process.stderr.write('[helia] RPC server detected; helia_* tools enabled\n');
19
+ }
20
+ return {
21
+ id: 'helia.tools',
22
+ description: 'Helia browser-driver tools (navigate / eval / screenshot / session-export). ' +
23
+ 'Reaches bug classes the CLI alone can\'t — DOM XSS, OAuth flows, WebAuthn, ' +
24
+ 'browser-parser desync. Helia must be running locally; tools render a clear ' +
25
+ 'launch hint when ~/.erosolar/helia-rpc.json is absent.',
26
+ toolSuite: {
27
+ id: 'helia',
28
+ description: 'Helia browser RPC tools',
29
+ tools: createHeliaTools(),
30
+ },
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=heliaCapability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heliaCapability.js","sourceRoot":"","sources":["../../src/capabilities/heliaCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,OAAO,qBAAqB;IACvB,EAAE,GAAG,kBAAkB,CAAC;IAEjC,KAAK,CAAC,MAAM,CAAC,QAA2B;QACtC,KAAK,QAAQ,CAAC;QACd,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO;YACL,EAAE,EAAE,aAAa;YACjB,WAAW,EACT,8EAA8E;gBAC9E,6EAA6E;gBAC7E,6EAA6E;gBAC7E,wDAAwD;YAC1D,SAAS,EAAE;gBACT,EAAE,EAAE,OAAO;gBACX,WAAW,EAAE,yBAAyB;gBACtC,KAAK,EAAE,gBAAgB,EAAE;aAC1B;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -22,5 +22,6 @@ export { InteractionCapabilityModule } from './interactionCapability.js';
22
22
  export { ScheduleCapabilityModule } from './scheduleCapability.js';
23
23
  export { TriggerCapabilityModule } from './triggerCapability.js';
24
24
  export { EngagementCapabilityModule } from './engagementCapability.js';
25
+ export { HeliaCapabilityModule } from './heliaCapability.js';
25
26
  export { BaseCapabilityModule, type BaseCapabilityOptions, ToolSuiteBuilder, SharedUtilities } from './baseCapability.js';
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGvI,OAAO,EAAE,0BAA0B,EAAE,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAIvE,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGvI,OAAO,EAAE,0BAA0B,EAAE,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
@@ -24,6 +24,7 @@ export { InteractionCapabilityModule } from './interactionCapability.js';
24
24
  export { ScheduleCapabilityModule } from './scheduleCapability.js';
25
25
  export { TriggerCapabilityModule } from './triggerCapability.js';
26
26
  export { EngagementCapabilityModule } from './engagementCapability.js';
27
+ export { HeliaCapabilityModule } from './heliaCapability.js';
27
28
  // CoworkCapabilityModule moved to ~/GitHub/erosolar-cowork (2026-05) —
28
29
  // productivity-assistant surface kept separate from the coding CLI.
29
30
  // See CLAUDE.md "Capability separation".
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAA6B,MAAM,8BAA8B,CAAC;AAEvI,4BAA4B;AAC5B,OAAO,EAAE,0BAA0B,EAAoC,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAgC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,yCAAyC;AACzC,OAAO,EAAE,oBAAoB,EAA8B,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAA6B,MAAM,8BAA8B,CAAC;AAEvI,4BAA4B;AAC5B,OAAO,EAAE,0BAA0B,EAAoC,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAgC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,uEAAuE;AACvE,oEAAoE;AACpE,yCAAyC;AACzC,OAAO,EAAE,oBAAoB,EAA8B,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"llmRedteamCapability.d.ts","sourceRoot":"","sources":["../../src/capabilities/llmRedteamCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAmV3G,qBAAa,0BAA2B,YAAW,gBAAgB;IACjE,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,WAAW,SAEgF;IAE9F,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiB1E"}
1
+ {"version":3,"file":"llmRedteamCapability.d.ts","sourceRoot":"","sources":["../../src/capabilities/llmRedteamCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA4X3G,qBAAa,0BAA2B,YAAW,gBAAgB;IACjE,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,WAAW,SAEgF;IAE9F,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiB1E"}
@@ -214,6 +214,38 @@ function buildLlmRedteamTools(opsCtx) {
214
214
  evidence: { transcript: line, raw: hit },
215
215
  jobId: job.id,
216
216
  });
217
+ // Canonical exploit upsert — same triple (target,
218
+ // vulnClass, detectorPath) on a re-run merges into the
219
+ // existing exploit record and appends a fresh run with
220
+ // verdict='still-vulnerable'. The portal renders one
221
+ // card per exploit with a runs timeline.
222
+ try {
223
+ const targetHostForId = (() => {
224
+ try {
225
+ return new URL(endpoint).hostname.toLowerCase();
226
+ }
227
+ catch (_) {
228
+ return targetId;
229
+ }
230
+ })();
231
+ await opsCtx.upsertExploit({
232
+ identity: {
233
+ targetHost: targetHostForId,
234
+ vulnClass: `garak.${hit.detector.split('.')[0] || 'unknown'}`,
235
+ payloadSignature: hit.detector,
236
+ targetUrl: endpoint,
237
+ },
238
+ classification: { severity: severityForDetector(hit.detector), noteOneApplies: true },
239
+ run: { verdict: 'still-vulnerable', tool: 'garak', cmd, jobId: job.id, evidenceDelta: { line, hit } },
240
+ targetId,
241
+ });
242
+ }
243
+ catch (err) {
244
+ // Don't fail the whole stream on a single upsert miss
245
+ // — the finding row still landed; the canonical record
246
+ // is best-effort.
247
+ logDebug('[llmRedteam] upsertExploit failed', err.message);
248
+ }
217
249
  findingsEmitted += 1;
218
250
  }
219
251
  }
@@ -300,6 +332,21 @@ function buildLlmRedteamTools(opsCtx) {
300
332
  evidence: { transcript: hit.rawLine, raw: hit },
301
333
  jobId: job.id,
302
334
  });
335
+ try {
336
+ await opsCtx.upsertExploit({
337
+ identity: {
338
+ targetHost: targetId,
339
+ vulnClass: `promptfoo.${hit.testName.split(/[.\s]/)[0] || 'unknown'}`,
340
+ payloadSignature: hit.testName,
341
+ },
342
+ classification: { severity: sev, noteOneApplies: true },
343
+ run: { verdict: 'still-vulnerable', tool: 'promptfoo', cmd, jobId: job.id, evidenceDelta: hit },
344
+ targetId,
345
+ });
346
+ }
347
+ catch (err) {
348
+ logDebug('[llmRedteam] upsertExploit failed', err.message);
349
+ }
303
350
  findingsEmitted += 1;
304
351
  }
305
352
  }