@trenchwork/erosolar 1.1.36 → 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 (98) 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 +192 -85
  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/hitl.d.ts +4 -1
  35. package/dist/core/hitl.d.ts.map +1 -1
  36. package/dist/core/hitl.js +60 -171
  37. package/dist/core/hitl.js.map +1 -1
  38. package/dist/core/portalPresence.d.ts +74 -0
  39. package/dist/core/portalPresence.d.ts.map +1 -0
  40. package/dist/core/portalPresence.js +187 -0
  41. package/dist/core/portalPresence.js.map +1 -0
  42. package/dist/core/updateChecker.d.ts.map +1 -1
  43. package/dist/core/updateChecker.js +8 -6
  44. package/dist/core/updateChecker.js.map +1 -1
  45. package/dist/headless/interactiveShell.js +23 -0
  46. package/dist/headless/interactiveShell.js.map +1 -1
  47. package/dist/plugins/tools/mcp/mcpClient.js +1 -1
  48. package/dist/plugins/tools/mcp/mcpClient.js.map +1 -1
  49. package/dist/runtime/node.d.ts.map +1 -1
  50. package/dist/runtime/node.js +2 -2
  51. package/dist/runtime/node.js.map +1 -1
  52. package/dist/runtime/phaseEmitter.d.ts +6 -0
  53. package/dist/runtime/phaseEmitter.d.ts.map +1 -1
  54. package/dist/runtime/phaseEmitter.js +0 -0
  55. package/dist/runtime/phaseEmitter.js.map +1 -1
  56. package/dist/tools/engagementTools.d.ts.map +1 -1
  57. package/dist/tools/engagementTools.js +73 -1
  58. package/dist/tools/engagementTools.js.map +1 -1
  59. package/dist/tools/heliaControl.d.ts +17 -0
  60. package/dist/tools/heliaControl.d.ts.map +1 -1
  61. package/dist/tools/heliaControl.js +108 -2
  62. package/dist/tools/heliaControl.js.map +1 -1
  63. package/dist/tools/heliaTools.d.ts +22 -0
  64. package/dist/tools/heliaTools.d.ts.map +1 -0
  65. package/dist/tools/heliaTools.js +125 -0
  66. package/dist/tools/heliaTools.js.map +1 -0
  67. package/dist/tools/interactionTools.d.ts.map +1 -1
  68. package/dist/tools/interactionTools.js +31 -15
  69. package/dist/tools/interactionTools.js.map +1 -1
  70. package/dist/tools/scheduleTools.d.ts.map +1 -1
  71. package/dist/tools/scheduleTools.js +5 -2
  72. package/dist/tools/scheduleTools.js.map +1 -1
  73. package/dist/tools/webTools.js +1 -1
  74. package/dist/tools/webTools.js.map +1 -1
  75. package/dist/ui/ink/AskUserMenu.d.ts +16 -0
  76. package/dist/ui/ink/AskUserMenu.d.ts.map +1 -0
  77. package/dist/ui/ink/AskUserMenu.js +85 -0
  78. package/dist/ui/ink/AskUserMenu.js.map +1 -0
  79. package/dist/ui/ink/HitlDecisionMenu.d.ts +23 -0
  80. package/dist/ui/ink/HitlDecisionMenu.d.ts.map +1 -0
  81. package/dist/ui/ink/HitlDecisionMenu.js +124 -0
  82. package/dist/ui/ink/HitlDecisionMenu.js.map +1 -0
  83. package/dist/ui/ink/oneShot.d.ts +33 -0
  84. package/dist/ui/ink/oneShot.d.ts.map +1 -0
  85. package/dist/ui/ink/oneShot.js +70 -0
  86. package/dist/ui/ink/oneShot.js.map +1 -0
  87. package/dist/utils/heliaClient.d.ts +23 -0
  88. package/dist/utils/heliaClient.d.ts.map +1 -0
  89. package/dist/utils/heliaClient.js +79 -0
  90. package/dist/utils/heliaClient.js.map +1 -0
  91. package/dist/utils/lambdaClient.d.ts.map +1 -1
  92. package/dist/utils/lambdaClient.js +9 -0
  93. package/dist/utils/lambdaClient.js.map +1 -1
  94. package/dist/utils/statusReporter.d.ts +13 -0
  95. package/dist/utils/statusReporter.d.ts.map +1 -1
  96. package/dist/utils/statusReporter.js +26 -0
  97. package/dist/utils/statusReporter.js.map +1 -1
  98. 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",
@@ -7,7 +7,7 @@
7
7
  * longer; the historical name was retired 2026-05-09 to keep the brand
8
8
  * surface a single name pair. The interactive shell uses Ink only.
9
9
  */
10
- import { reportStatus, reportStatusError } from '../utils/statusReporter.js';
10
+ import { reportStatusError } from '../utils/statusReporter.js';
11
11
  import { track } from '../utils/analytics.js';
12
12
  // Fast path: handle --version, --help, --key before any heavy imports.
13
13
  const rawArgs = process.argv.slice(2);
@@ -43,84 +43,117 @@ if (keyIndex !== -1) {
43
43
  keyValue = rawArgs[keyIndex + 1];
44
44
  }
45
45
  if (keyValue) {
46
- import('node:fs').then(fs => {
47
- import('node:path').then(path => {
48
- import('node:os').then(os => {
49
- const secretDir = path.join(os.homedir(), '.erosolar');
50
- const secretFile = path.join(secretDir, 'secrets.json');
51
- try {
52
- fs.mkdirSync(secretDir, { recursive: true });
53
- const existing = fs.existsSync(secretFile)
54
- ? JSON.parse(fs.readFileSync(secretFile, 'utf-8'))
55
- : {};
56
- existing['DEEPSEEK_API_KEY'] = keyValue;
57
- fs.writeFileSync(secretFile, JSON.stringify(existing, null, 2) + '\n');
58
- console.log('DEEPSEEK_API_KEY saved to ~/.erosolar/secrets.json');
59
- process.exit(0);
60
- }
61
- catch (err) {
62
- reportStatus(`Failed to save key: ${err instanceof Error ? err.message : err}`);
63
- process.exit(1);
64
- }
46
+ void (async () => {
47
+ const fs = await import('node:fs');
48
+ const path = await import('node:path');
49
+ const os = await import('node:os');
50
+ const { showCard } = await import('../ui/ink/oneShot.js');
51
+ const secretDir = path.join(os.homedir(), '.erosolar');
52
+ const secretFile = path.join(secretDir, 'secrets.json');
53
+ try {
54
+ fs.mkdirSync(secretDir, { recursive: true });
55
+ const existing = fs.existsSync(secretFile)
56
+ ? JSON.parse(fs.readFileSync(secretFile, 'utf-8'))
57
+ : {};
58
+ existing['DEEPSEEK_API_KEY'] = keyValue;
59
+ fs.writeFileSync(secretFile, JSON.stringify(existing, null, 2) + '\n');
60
+ await showCard({
61
+ tone: 'success',
62
+ title: 'API key saved',
63
+ body: 'DEEPSEEK_API_KEY → ~/.erosolar/secrets.json',
65
64
  });
66
- });
67
- });
65
+ process.exit(0);
66
+ }
67
+ catch (err) {
68
+ await showCard({
69
+ tone: 'error',
70
+ title: 'Failed to save key',
71
+ body: err instanceof Error ? err.message : String(err),
72
+ });
73
+ process.exit(1);
74
+ }
75
+ })();
68
76
  }
69
77
  else {
70
- reportStatus('Usage: erosolar --key YOUR_API_KEY');
71
- process.exit(1);
78
+ void (async () => {
79
+ const { showCard } = await import('../ui/ink/oneShot.js');
80
+ await showCard({
81
+ tone: 'warn',
82
+ title: 'Usage',
83
+ body: 'erosolar --key YOUR_API_KEY',
84
+ });
85
+ process.exit(1);
86
+ })();
72
87
  }
73
88
  }
74
89
  else if (rawArgs.includes('--version') || rawArgs.includes('-v')) {
75
- import('node:fs').then(fs => {
76
- import('node:path').then(path => {
77
- import('node:url').then(url => {
78
- try {
79
- const __filename = url.fileURLToPath(import.meta.url);
80
- const pkgPath = path.resolve(path.dirname(__filename), '../../package.json');
81
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
82
- console.log(`erosolar v${pkg.version || '0.0.0'}`);
83
- }
84
- catch {
85
- console.log('erosolar (version unknown)');
86
- }
87
- process.exit(0);
88
- });
90
+ void (async () => {
91
+ const fs = await import('node:fs');
92
+ const path = await import('node:path');
93
+ const url = await import('node:url');
94
+ const { showKv } = await import('../ui/ink/oneShot.js');
95
+ let version = 'unknown';
96
+ let pkgName = '@trenchwork/erosolar';
97
+ try {
98
+ const __filename = url.fileURLToPath(import.meta.url);
99
+ const pkgPath = path.resolve(path.dirname(__filename), '../../package.json');
100
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
101
+ version = pkg.version || 'unknown';
102
+ pkgName = pkg.name || pkgName;
103
+ }
104
+ catch { /* keep defaults */ }
105
+ await showKv({
106
+ tone: 'info',
107
+ title: 'erosolar',
108
+ rows: [
109
+ ['version', `v${version}`],
110
+ ['package', pkgName],
111
+ ['node', process.version],
112
+ ['platform', `${process.platform}/${process.arch}`],
113
+ ],
114
+ hint: 'aliases: erosolar | trenchwork · https://trenchwork.org',
89
115
  });
90
- });
116
+ process.exit(0);
117
+ })();
91
118
  }
92
119
  else if (rawArgs.includes('--help') || rawArgs.includes('-h')) {
93
- console.log(`
94
- erosolar AI-powered offsec / coding assistant (a.k.a. trenchwork)
95
-
96
- Usage: erosolar [options] [prompt]
97
-
98
- Modes:
99
- erosolar Start the unified Ink interactive shell
100
- erosolar "prompt" Start with an initial prompt
101
-
102
- Options:
103
- -v, --version Show version
104
- -h, --help Show this help
105
- --key KEY Set the model provider API key
106
- --profile NAME Profile (erosolar-code | variant-research |
107
- engagement-delivery)
108
- --self-test Run self-tests
109
-
110
- Subcommands:
111
- erosolar offsec install Install kali / AFL++ / gdb / pwntools binaries
112
- erosolar helia <verb> Control the local Helia browser companion
113
-
114
- In-shell tools (offsec profiles):
115
- HuntStart Scaffold engagement+target+finding for a target
116
- (URL / file path / github.com/owner/repo) in one
117
- tool call. Findings sync live to
118
- https://trenchwork.org/portal.
119
-
120
- Environment:
121
- DEEPSEEK_API_KEY Model provider API key (or use --key to set)
122
- `);
123
- process.exit(0);
120
+ void (async () => {
121
+ const { showHelp } = await import('../ui/ink/oneShot.js');
122
+ await showHelp({
123
+ title: 'erosolar AI-powered offsec / coding assistant (a.k.a. trenchwork)',
124
+ body: [
125
+ 'Usage: erosolar [options] [prompt]',
126
+ '',
127
+ 'Modes:',
128
+ ' erosolar Start the unified Ink interactive shell',
129
+ ' erosolar "prompt" Start with an initial prompt',
130
+ '',
131
+ 'Options:',
132
+ ' -v, --version Show version',
133
+ ' -h, --help Show this help',
134
+ ' --key KEY Set the model provider API key',
135
+ ' --profile NAME Profile (erosolar-code | variant-research |',
136
+ ' engagement-delivery)',
137
+ ' --self-test Run self-tests',
138
+ '',
139
+ 'Subcommands:',
140
+ ' erosolar offsec install Install kali / AFL++ / gdb / pwntools binaries',
141
+ ' erosolar offsec status Show which offsec binaries are present / missing',
142
+ ' erosolar helia <verb> Control the local Helia browser companion',
143
+ '',
144
+ 'In-shell tools (offsec profiles):',
145
+ ' HuntStart Scaffold engagement+target+finding for a target',
146
+ ' (URL / file path / github.com/owner/repo) in one',
147
+ ' tool call. Findings sync live to',
148
+ ' https://trenchwork.org/portal.',
149
+ '',
150
+ 'Environment:',
151
+ ' DEEPSEEK_API_KEY Model provider API key (or use --key to set)',
152
+ ].join('\n'),
153
+ foot: 'Docs · https://trenchwork.org/docs',
154
+ });
155
+ process.exit(0);
156
+ })();
124
157
  }
125
158
  else if (rawArgs[0] === 'helia') {
126
159
  // Local-only utility: control the Helia browser running on this same
@@ -168,13 +201,18 @@ Verbs:
168
201
  sidebar Open the Erosolar side panel
169
202
  token Print path to the pairing-token file
170
203
  `;
204
+ const { showCard } = await import('../ui/ink/oneShot.js');
171
205
  try {
172
206
  let result;
173
207
  switch (verb) {
174
208
  case 'ping': {
175
209
  const r = await heliaControl.ping();
176
210
  if (!r) {
177
- console.error('Helia is not running on this machine (no response on http://127.0.0.1:59998).');
211
+ await showCard({
212
+ tone: 'error',
213
+ title: 'Helia not running',
214
+ body: 'No response on http://127.0.0.1:59998 — start the Helia browser app first.',
215
+ });
178
216
  process.exit(2);
179
217
  }
180
218
  result = r;
@@ -234,19 +272,32 @@ Verbs:
234
272
  break;
235
273
  case '--help':
236
274
  case '-h':
237
- case 'help':
238
- console.log(usage);
275
+ case 'help': {
276
+ const { showHelp } = await import('../ui/ink/oneShot.js');
277
+ await showHelp({ title: 'erosolar helia — Helia browser control', body: usage });
239
278
  process.exit(0);
279
+ }
240
280
  default:
241
- console.error(`Unknown helia verb: ${verb}\n\n${usage}`);
281
+ await showCard({
282
+ tone: 'error',
283
+ title: `Unknown helia verb: ${verb}`,
284
+ body: 'Run `erosolar helia help` for the full verb list.',
285
+ });
242
286
  process.exit(1);
243
287
  }
244
- console.log(JSON.stringify(result, null, 2));
288
+ // Helia results stay JSON-formatted because callers script against
289
+ // them (jq, python, automation). Routing through Ink would break
290
+ // the pipe contract; the human-friendly error states above use Ink.
291
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
245
292
  process.exit(0);
246
293
  }
247
294
  catch (err) {
248
295
  const msg = err instanceof Error ? err.message : String(err);
249
- console.error(`helia ${verb}: ${msg}`);
296
+ await showCard({
297
+ tone: 'error',
298
+ title: `helia ${verb} failed`,
299
+ body: msg,
300
+ });
250
301
  process.exit(1);
251
302
  }
252
303
  }
@@ -272,23 +323,39 @@ async function main() {
272
323
  const { checkApproval, requestApproval } = await import('../core/userApproval.js');
273
324
  const approval = await checkApproval(requestedProfile);
274
325
  if (!approval.approved) {
275
- process.stderr.write('\n');
276
- process.stderr.write('Access denied — this account is not authorized.\n');
277
- process.stderr.write(` Email: ${approval.email ?? '(no email on token — SSO required)'}\n`);
278
- process.stderr.write(` Profile: ${requestedProfile}\n`);
279
- process.stderr.write(` Reason: ${approval.reason ?? 'unknown'}\n\n`);
326
+ const { showKv, showCard } = await import('../ui/ink/oneShot.js');
327
+ await showKv({
328
+ tone: 'error',
329
+ title: 'Access denied — this account is not authorized.',
330
+ rows: [
331
+ ['Email', approval.email ?? '(no email on token — SSO required)'],
332
+ ['Profile', requestedProfile],
333
+ ['Reason', approval.reason ?? 'unknown'],
334
+ ],
335
+ });
280
336
  if (approval.email && approval.uid && !approval.revoked) {
281
337
  const req = await requestApproval();
282
338
  if (req.ok) {
283
- process.stderr.write('A request has been recorded. The administrator will review it.\n');
284
- process.stderr.write('You can re-run `erosolar` once the approval lands.\n');
339
+ await showCard({
340
+ tone: 'info',
341
+ title: 'Request recorded',
342
+ body: ['The administrator will review it.', 'Re-run `erosolar` once the approval lands.'],
343
+ });
285
344
  }
286
345
  else {
287
- process.stderr.write(`Could not file approval request: ${req.reason}\n`);
346
+ await showCard({
347
+ tone: 'error',
348
+ title: 'Could not file approval request',
349
+ body: req.reason || 'unknown',
350
+ });
288
351
  }
289
352
  }
290
353
  else if (approval.revoked) {
291
- process.stderr.write('Revoked accounts cannot file new requests. Contact the operator directly.\n');
354
+ await showCard({
355
+ tone: 'error',
356
+ title: 'Revoked',
357
+ body: 'Revoked accounts cannot file new requests. Contact the operator directly.',
358
+ });
292
359
  }
293
360
  process.exit(1);
294
361
  }
@@ -322,6 +389,28 @@ async function main() {
322
389
  if (sessionStart.ok && sessionStart.sessionId) {
323
390
  process.env['EROSOLAR_SESSION_ID'] = sessionStart.sessionId;
324
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
+ })();
325
414
  // Mirror the active profile + model + platform to the Remote
326
415
  // Operations Center so the portal's "Profile" pill shows what the
327
416
  // CLI is currently running. Fire-and-forget; a failed call never
@@ -339,6 +428,24 @@ async function main() {
339
428
  }
340
429
  catch (_) { /* portal mirror is fire-and-forget */ }
341
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
+ })();
342
449
  // Force color support for TTY terminals.
343
450
  if (process.stdout.isTTY && !process.env['NO_COLOR']) {
344
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,EAAE,YAAY,EAAE,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,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC1B,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;oBACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBAExD,IAAI,CAAC;wBACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;4BACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;4BAClD,CAAC,CAAC,EAAE,CAAC;wBACP,QAAQ,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;wBACxC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;wBACvE,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;wBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,YAAY,CAAC,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;wBAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,oCAAoC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;KAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAC1B,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;oBAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,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,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,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;oBAC/F,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;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB;gBACE,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,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,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;QACvC,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,KAAK,IAAI,oCAAoC,IAAI,CAAC,CAAC;QAChG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,gBAAgB,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,IAAI,SAAS,MAAM,CAAC,CAAC;QACxE,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;gBACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACtG,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":";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,+DAA+D;IAC/D,mEAAmE;IACnE,uEAAuE;IACvE,2DAA2D;IAC3D,qEAAqE;IACrE,mEAAmE;IACnE,sDAAsD;IACtD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC3E,qBAAqB,CAAC;QACpB,OAAO,EAAE,gBAAgB;QACzB,UAAU;QACV,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE;YAC/C,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,IAAI,EAAE,EAAE;YAChE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC3E,MAAM,uBAAuB,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,sCAAsC,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC;IAEL,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,iEAAiE;IACjE,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;IACnE,yDAAyD;IACzD,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC9F,MAAM,iBAAiB,CAAC;gBACtB,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS;aAC3C,CAAC,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC3E,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iCAAiC,CAAC,CAAC;IACnD,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"}
@@ -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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"}