@agent-beam/beam 0.2.17 → 0.2.20

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 (53) hide show
  1. package/README.md +45 -1
  2. package/Skills/README.md +4 -3
  3. package/Skills/jev-action-judge/SKILL.md +57 -0
  4. package/Skills/manifest.json +6 -1
  5. package/dist/agents.d.ts +4 -0
  6. package/dist/agents.js +15 -0
  7. package/dist/agents.js.map +1 -1
  8. package/dist/blocked-targets.d.ts +8 -0
  9. package/dist/blocked-targets.js +83 -0
  10. package/dist/blocked-targets.js.map +1 -0
  11. package/dist/cli.js +100 -3
  12. package/dist/cli.js.map +1 -1
  13. package/dist/client.js +251 -73
  14. package/dist/client.js.map +1 -1
  15. package/dist/collector-health.d.ts +1 -0
  16. package/dist/collector-health.js +20 -0
  17. package/dist/collector-health.js.map +1 -0
  18. package/dist/config.d.ts +0 -1
  19. package/dist/config.js +0 -4
  20. package/dist/config.js.map +1 -1
  21. package/dist/connect.js +7 -3
  22. package/dist/connect.js.map +1 -1
  23. package/dist/core.js +16 -3
  24. package/dist/core.js.map +1 -1
  25. package/dist/forward.d.ts +5 -1
  26. package/dist/forward.js +30 -9
  27. package/dist/forward.js.map +1 -1
  28. package/dist/jev-cli.d.ts +2 -0
  29. package/dist/jev-cli.js +57 -0
  30. package/dist/jev-cli.js.map +1 -0
  31. package/dist/jev.d.ts +45 -0
  32. package/dist/jev.js +236 -0
  33. package/dist/jev.js.map +1 -0
  34. package/dist/server.js +6 -2
  35. package/dist/server.js.map +1 -1
  36. package/dist/service.d.ts +2 -0
  37. package/dist/service.js +16 -4
  38. package/dist/service.js.map +1 -1
  39. package/dist/setup.js +9 -3
  40. package/dist/setup.js.map +1 -1
  41. package/dist/store.d.ts +2 -0
  42. package/dist/store.js +77 -6
  43. package/dist/store.js.map +1 -1
  44. package/dist/trusted-paths.d.ts +5 -0
  45. package/dist/trusted-paths.js +59 -0
  46. package/dist/trusted-paths.js.map +1 -0
  47. package/dist/tty-prompt.d.ts +5 -0
  48. package/dist/tty-prompt.js +55 -0
  49. package/dist/tty-prompt.js.map +1 -0
  50. package/dist/update.d.ts +7 -0
  51. package/dist/update.js +31 -0
  52. package/dist/update.js.map +1 -0
  53. package/package.json +9 -2
package/dist/client.js CHANGED
@@ -1,4 +1,4 @@
1
- import { readdir, readFile, stat } from "node:fs/promises";
1
+ import { mkdir, readdir, readFile, rename, stat, writeFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { isAbsolute, join, relative, resolve, sep } from "node:path";
4
4
  import { getBeamHome, getCollectorUrl, getDataDirectory } from "./config.js";
@@ -9,6 +9,10 @@ import { evaluate, readPolicy } from "./policy.js";
9
9
  import { extractAgent } from "./extract.js";
10
10
  import { loadCustomRules } from "./custom-rules.js";
11
11
  import { redactSensitive } from "./data-detectors.js";
12
+ import { applyJevHook } from "./jev.js";
13
+ import { isPathTrusted, readTrustedPaths } from "./trusted-paths.js";
14
+ import { addBlockedTarget, isTargetBlocked, readBlockedTargets } from "./blocked-targets.js";
15
+ import { promptTty } from "./tty-prompt.js";
12
16
  export async function readToken() {
13
17
  if (process.env.BEAM_TOKEN)
14
18
  return process.env.BEAM_TOKEN;
@@ -129,7 +133,26 @@ async function findClaudeCodeModel(home, sessionId) {
129
133
  }
130
134
  return "";
131
135
  }
132
- async function findClaudeCodeUsage(home, sessionId) {
136
+ async function loadUsageCursor() {
137
+ try {
138
+ return JSON.parse(await readFile(join(getDataDirectory(), "usage-cursor.json"), "utf8"));
139
+ }
140
+ catch {
141
+ return {};
142
+ }
143
+ }
144
+ async function saveUsageCursor(cursor) {
145
+ try {
146
+ const dir = getDataDirectory();
147
+ await mkdir(dir, { recursive: true });
148
+ const target = join(dir, "usage-cursor.json");
149
+ const temp = `${target}.${process.pid}.tmp`;
150
+ await writeFile(temp, JSON.stringify(cursor));
151
+ await rename(temp, target);
152
+ }
153
+ catch { /* best-effort enrichment only */ }
154
+ }
155
+ async function findClaudeCodeUsage(home, sessionId, toolUseId, cursor) {
133
156
  if (!sessionId)
134
157
  return {};
135
158
  const projectsDir = join(home, ".claude", "projects");
@@ -149,18 +172,39 @@ async function findClaudeCodeUsage(home, sessionId) {
149
172
  continue;
150
173
  }
151
174
  const lines = content.split("\n");
152
- for (let i = lines.length - 1; i >= 0 && i >= lines.length - MODEL_LOOKUP_TAIL_LINES; i--) {
175
+ const start = Math.max(0, lines.length - MODEL_LOOKUP_TAIL_LINES);
176
+ let matched;
177
+ for (let i = lines.length - 1; i >= start; i--) {
178
+ const line = lines[i].trim();
179
+ if (!line)
180
+ continue;
153
181
  try {
154
- const row = JSON.parse(lines[i]);
182
+ const row = JSON.parse(line);
183
+ if (row.type !== "assistant")
184
+ continue;
155
185
  const message = row.message && typeof row.message === "object" ? row.message : {};
156
- const usage = message.usage && typeof message.usage === "object" ? message.usage : {};
157
- if (row.type === "assistant" && (typeof usage.input_tokens === "number" || typeof usage.output_tokens === "number")) {
158
- return { input_tokens: typeof usage.input_tokens === "number" ? usage.input_tokens : undefined, output_tokens: typeof usage.output_tokens === "number" ? usage.output_tokens : undefined };
186
+ const messageId = typeof message.id === "string" ? message.id : undefined;
187
+ const usage = message.usage && typeof message.usage === "object" ? message.usage : undefined;
188
+ if (!messageId || !usage || (typeof usage.input_tokens !== "number" && typeof usage.output_tokens !== "number"))
189
+ continue;
190
+ // A PreToolUse hook can match this row to its own tool_use_id -- pin to that exact row
191
+ // rather than "whichever assistant row happens to be last" once one is available.
192
+ if (toolUseId) {
193
+ const blocks = Array.isArray(message.content) ? message.content : [];
194
+ if (!blocks.some(b => b && b.type === "tool_use" && b.id === toolUseId))
195
+ continue;
159
196
  }
197
+ matched = { messageId, usage };
198
+ break;
160
199
  }
161
200
  catch { /* skip malformed transcript rows */ }
162
201
  }
163
- return {};
202
+ if (!matched)
203
+ return {};
204
+ if (cursor.claude?.[sessionId] === matched.messageId)
205
+ return {}; // already attributed by an earlier tool call in this same turn
206
+ cursor.claude = { ...cursor.claude, [sessionId]: matched.messageId };
207
+ return { input_tokens: typeof matched.usage.input_tokens === "number" ? matched.usage.input_tokens : undefined, output_tokens: typeof matched.usage.output_tokens === "number" ? matched.usage.output_tokens : undefined };
164
208
  }
165
209
  return {};
166
210
  }
@@ -234,51 +278,93 @@ async function findCodexModel(home, sessionId) {
234
278
  }
235
279
  return "";
236
280
  }
237
- async function findCodexUsage(home, sessionId) {
238
- if (!sessionId)
239
- return {};
240
- const files = [];
241
- for (const root of [join(home, ".codex", "sessions"), join(home, ".codex", "archived_sessions")]) {
242
- const found = [];
243
- await walkJsonlFiles(root, found);
244
- for (const path of found) {
245
- try {
246
- files.push({ path, mtimeMs: (await stat(path)).mtimeMs });
247
- }
248
- catch { /* skip */ }
249
- }
250
- }
251
- files.sort((a, b) => b.mtimeMs - a.mtimeMs);
252
- for (const { path } of files.slice(0, CODEX_MODEL_LOOKUP_MAX_FILES)) {
253
- let content;
281
+ // Codex's own "last_token_usage" is a per-turn delta, but a turn that makes several tool calls
282
+ // (each firing its own PreToolUse hook) can have 2+ hooks fire before Codex writes the *next*
283
+ // token_count event -- every one of those hooks would then read the exact same delta and
284
+ // double-count it. total_token_usage is cumulative for the whole session instead, so subtracting
285
+ // the amount usage-cursor.json already attributed for this session yields the real, un-double-
286
+ // counted increment, and reading it twice before it changes correctly yields a zero delta.
287
+ function totalTokenUsageFromTokenCountLines(content, requireSessionId) {
288
+ let matchesSession = !requireSessionId;
289
+ let total;
290
+ for (const line of content.split("\n")) {
291
+ let row;
254
292
  try {
255
- content = await readFile(path, "utf8");
293
+ row = JSON.parse(line);
256
294
  }
257
295
  catch {
258
296
  continue;
259
297
  }
260
- let matchesSession = false;
261
- let usage;
262
- for (const line of content.split("\n")) {
263
- let row;
298
+ const payload = row.payload && typeof row.payload === "object" ? row.payload : {};
299
+ if (requireSessionId && row.type === "session_meta" && (payload.session_id === requireSessionId || payload.id === requireSessionId))
300
+ matchesSession = true;
301
+ const info = payload.info && typeof payload.info === "object" ? payload.info : {};
302
+ const totalUsage = info.total_token_usage && typeof info.total_token_usage === "object" ? info.total_token_usage : undefined;
303
+ if (row.type === "event_msg" && payload.type === "token_count" && totalUsage
304
+ && typeof totalUsage.input_tokens === "number" && typeof totalUsage.output_tokens === "number") {
305
+ total = { input_tokens: totalUsage.input_tokens, output_tokens: totalUsage.output_tokens };
306
+ }
307
+ }
308
+ return { matchesSession, total };
309
+ }
310
+ async function findCodexUsage(home, sessionId, transcriptPath, cursor) {
311
+ // Every Codex hook payload carries transcript_path pointing at exactly this session's rollout
312
+ // file (learn.chatgpt.com/docs/hooks) -- reading that directly is both simpler and more
313
+ // reliable than guessing which of the most-recently-modified files under ~/.codex/sessions
314
+ // belongs to this session. Still constrained to ~/.codex, since the path rides in untrusted
315
+ // hook input. Falls back to the mtime-scan below when a payload doesn't carry it (older Codex
316
+ // builds, or tests).
317
+ let total;
318
+ if (transcriptPath) {
319
+ const root = resolve(join(home, ".codex"));
320
+ const resolved = resolve(transcriptPath);
321
+ if (resolved === root || resolved.startsWith(`${root}${sep}`)) {
322
+ let content;
323
+ try {
324
+ content = await readFile(resolved, "utf8");
325
+ }
326
+ catch { /* fall through to scan */ }
327
+ if (content !== undefined)
328
+ total = totalTokenUsageFromTokenCountLines(content).total;
329
+ }
330
+ }
331
+ if (!total && sessionId) {
332
+ const files = [];
333
+ for (const root of [join(home, ".codex", "sessions"), join(home, ".codex", "archived_sessions")]) {
334
+ const found = [];
335
+ await walkJsonlFiles(root, found);
336
+ for (const path of found) {
337
+ try {
338
+ files.push({ path, mtimeMs: (await stat(path)).mtimeMs });
339
+ }
340
+ catch { /* skip */ }
341
+ }
342
+ }
343
+ files.sort((a, b) => b.mtimeMs - a.mtimeMs);
344
+ for (const { path } of files.slice(0, CODEX_MODEL_LOOKUP_MAX_FILES)) {
345
+ let content;
264
346
  try {
265
- row = JSON.parse(line);
347
+ content = await readFile(path, "utf8");
266
348
  }
267
349
  catch {
268
350
  continue;
269
351
  }
270
- const payload = row.payload && typeof row.payload === "object" ? row.payload : {};
271
- if (row.type === "session_meta" && (payload.session_id === sessionId || payload.id === sessionId))
272
- matchesSession = true;
273
- const info = payload.info && typeof payload.info === "object" ? payload.info : {};
274
- const total = info.last_token_usage && typeof info.last_token_usage === "object" ? info.last_token_usage : undefined;
275
- if (row.type === "event_msg" && payload.type === "token_count" && total)
276
- usage = total;
352
+ const { matchesSession, total: found } = totalTokenUsageFromTokenCountLines(content, sessionId);
353
+ if (matchesSession && found) {
354
+ total = found;
355
+ break;
356
+ }
277
357
  }
278
- if (matchesSession && usage)
279
- return { input_tokens: typeof usage.input_tokens === "number" ? usage.input_tokens : undefined, output_tokens: typeof usage.output_tokens === "number" ? usage.output_tokens : undefined };
280
358
  }
281
- return {};
359
+ if (!total || !sessionId)
360
+ return {};
361
+ const prev = cursor.codex?.[sessionId] ?? { input_tokens: 0, output_tokens: 0 };
362
+ const deltaInput = Math.max(0, total.input_tokens - prev.input_tokens);
363
+ const deltaOutput = Math.max(0, total.output_tokens - prev.output_tokens);
364
+ cursor.codex = { ...cursor.codex, [sessionId]: total };
365
+ if (deltaInput === 0 && deltaOutput === 0)
366
+ return {};
367
+ return { input_tokens: deltaInput, output_tokens: deltaOutput };
282
368
  }
283
369
  async function readStdin(limitBytes) {
284
370
  let input = "";
@@ -293,7 +379,7 @@ async function readStdin(limitBytes) {
293
379
  }
294
380
  return input;
295
381
  }
296
- // Never throws: a Claude Code hook must not block or fail the agent if capture fails.
382
+ // Never throws: best-effort capture must not suppress configured policy enforcement.
297
383
  export async function captureHook(sourceAgent = "claude-code", home = homedir()) {
298
384
  try {
299
385
  const input = await readStdin(100_000);
@@ -306,25 +392,42 @@ export async function captureHook(sourceAgent = "claude-code", home = homedir())
306
392
  data.tool_name = data.tool_name ?? "UserPromptSubmit";
307
393
  data.command = data.command ?? data.prompt;
308
394
  }
309
- if (!data.model) {
395
+ // Model and token-usage backfill are independent: a newer agent build (Codex 0.155.1+ sends
396
+ // `model` as a common field on every hook event -- see learn.chatgpt.com/docs/hooks) can
397
+ // already provide data.model while still never sending input_tokens/output_tokens. Gating
398
+ // both lookups on `!data.model` together meant that once an agent started self-reporting its
399
+ // model, this silently stopped backfilling tokens too -- each needs its own guard.
400
+ if (!data.model || (data.input_tokens === undefined && data.output_tokens === undefined)) {
310
401
  try {
311
402
  const sessionId = String(data.session_id ?? data.sessionId ?? "");
403
+ const needsUsage = data.input_tokens === undefined && data.output_tokens === undefined;
404
+ const cursor = needsUsage ? await loadUsageCursor() : undefined;
312
405
  if (sourceAgent === "claude-code") {
313
- data.model = await findClaudeCodeModel(home, sessionId);
314
- const usage = await findClaudeCodeUsage(home, sessionId);
315
- if (usage.input_tokens !== undefined)
316
- data.input_tokens = usage.input_tokens;
317
- if (usage.output_tokens !== undefined)
318
- data.output_tokens = usage.output_tokens;
406
+ if (!data.model)
407
+ data.model = await findClaudeCodeModel(home, sessionId);
408
+ if (cursor) {
409
+ const toolUseId = typeof data.tool_use_id === "string" ? data.tool_use_id : undefined;
410
+ const usage = await findClaudeCodeUsage(home, sessionId, toolUseId, cursor);
411
+ if (usage.input_tokens !== undefined)
412
+ data.input_tokens = usage.input_tokens;
413
+ if (usage.output_tokens !== undefined)
414
+ data.output_tokens = usage.output_tokens;
415
+ }
319
416
  }
320
417
  else if (sourceAgent === "codex") {
321
- data.model = await findCodexModel(home, sessionId);
322
- const usage = await findCodexUsage(home, sessionId);
323
- if (usage.input_tokens !== undefined)
324
- data.input_tokens = usage.input_tokens;
325
- if (usage.output_tokens !== undefined)
326
- data.output_tokens = usage.output_tokens;
418
+ if (!data.model)
419
+ data.model = await findCodexModel(home, sessionId);
420
+ if (cursor) {
421
+ const transcriptPath = typeof data.transcript_path === "string" ? data.transcript_path : undefined;
422
+ const usage = await findCodexUsage(home, sessionId, transcriptPath, cursor);
423
+ if (usage.input_tokens !== undefined)
424
+ data.input_tokens = usage.input_tokens;
425
+ if (usage.output_tokens !== undefined)
426
+ data.output_tokens = usage.output_tokens;
427
+ }
327
428
  }
429
+ if (cursor)
430
+ await saveUsageCursor(cursor);
328
431
  }
329
432
  catch { /* best-effort enrichment only -- never block the hook on this */ }
330
433
  }
@@ -349,7 +452,10 @@ export async function captureHook(sourceAgent = "claude-code", home = homedir())
349
452
  environment: typeof data.environment === "string" ? data.environment : undefined,
350
453
  time: typeof data.timestamp === "string" ? data.timestamp : undefined,
351
454
  });
352
- if (decision.action === "allow" && isEnvironmentAccess(String(data.tool_name ?? ""), command, String(toolInput.file_path ?? toolInput.path ?? data.file_path ?? ""), toolInput)) {
455
+ if ((decision.action === "allow" || decision.action === "warn") && isEnvironmentAccess(String(data.tool_name ?? ""), command, String(toolInput.file_path ?? toolInput.path ?? data.file_path ?? ""), toolInput)) {
456
+ // Sensitive data (.env, credentials, secrets) is never left at a soft, easy-to-miss
457
+ // stderr warning -- it's always promoted to a real approval gate, regardless of what the
458
+ // matched policy rule or risk mapping would otherwise have produced.
353
459
  decision = {
354
460
  ...decision,
355
461
  action: "ask",
@@ -366,12 +472,46 @@ export async function captureHook(sourceAgent = "claude-code", home = homedir())
366
472
  reason: "Beam protection cannot be disabled, removed, or modified by an agent.",
367
473
  };
368
474
  }
369
- if (decision.action === "allow" && workspace && isOutsideWorkspace(workspace, targetPath, command)) {
370
- decision = {
371
- ...decision,
372
- action: "ask",
373
- reason: "This action accesses a path outside the current workspace.",
374
- };
475
+ const policyMode = decision.mode;
476
+ if (decision.action === "allow" && policyMode !== "observe" && workspace) {
477
+ const escaping = outsideWorkspacePaths(workspace, targetPath, command);
478
+ if (escaping.length) {
479
+ // A human can pre-approve specific outside-workspace paths with `beam trust <path>`
480
+ // (~/.beam/data/trusted-paths.json) so this ask doesn't fire again for them. The agent
481
+ // can't write that file itself -- isBeamSelfProtectionTarget above blocks it.
482
+ const trusted = await readTrustedPaths().catch(() => []);
483
+ if (!trusted.length || escaping.some(path => !isPathTrusted(path, trusted))) {
484
+ decision = {
485
+ ...decision,
486
+ action: "ask",
487
+ reason: "This action accesses a path outside the current workspace.",
488
+ };
489
+ }
490
+ }
491
+ }
492
+ const jev = await applyJevHook(decision, data);
493
+ decision = jev.decision;
494
+ if (jev.judgment)
495
+ process.stderr.write(`Beam Jev: ${JSON.stringify(jev.judgment)}\n`);
496
+ // "warn" only ever comes out of evaluate() when the policy's mode is neither "enforce" nor
497
+ // "advisory" (see policy.ts) -- a manager's explicit ASK/BLOCK rule under either of those
498
+ // modes already resolved to "ask"/"deny" above, untouched by this. A remote-configured
499
+ // enforce/advisory policy from the collector therefore stays mandatory; this interactive
500
+ // step only ever runs for Beam's own soft, non-mandatory fallback.
501
+ if (decision.action === "warn")
502
+ decision = await resolveWarnInteractively(decision, targetPath, command);
503
+ // Detection and policy enforcement above already ran against the real prompt text and
504
+ // session id -- neither is forwarded to the local collector or the workspace dashboard from
505
+ // this point on. event_type/tool_name still identify a prompt-submit event; the content and
506
+ // the session identifier do not leave this machine. Scoped to prompt.submit only -- deleting
507
+ // session_id on every event type broke session grouping (and the tool_use_id dedup in
508
+ // core.ts, which is keyed per-hostname/phase but not per-session) for all other hook events.
509
+ if (data.event_type === "prompt.submit") {
510
+ delete data.prompt;
511
+ delete data.command;
512
+ delete data.session_id;
513
+ delete data.sessionId;
514
+ delete data.session;
375
515
  }
376
516
  data.policy_decision = { action: decision.action, rule: decision.rule, reason: decision.reason, risk_score: decision.riskScore, risk_level: decision.riskLevel, risk_factors: decision.riskFactors };
377
517
  const hookEvent = String(data.hook_event_name ?? "PreToolUse");
@@ -395,17 +535,25 @@ export async function captureHook(sourceAgent = "claude-code", home = homedir())
395
535
  }
396
536
  }
397
537
  else if (decision.action === "warn") {
538
+ // No TTY was available to ask interactively (headless run, CI, detached process) --
539
+ // fail open with a visible warning rather than blocking a hook that has nowhere to
540
+ // prompt.
398
541
  process.stderr.write(`\n⚠ Beam policy (advisory): ${decision.reason}\n`);
399
542
  }
400
543
  // 2. Local capture (best-effort — a failure here must not skip enforcement or throw). The
401
544
  // running collector (serve.ts) also batches this event into its own workspace forward --
402
545
  // see ForwardQueue in forward.ts -- so most events reach the dashboard in groups rather
403
- // than one request per action.
404
- try {
405
- await send("/ingest", JSON.stringify(data));
406
- }
407
- catch (e) {
408
- console.error(e instanceof Error ? e.message : String(e));
546
+ // than one request per action. Allowed prompt.submit events are skipped here: policy
547
+ // enforcement above already ran against them, but every keystroke-triggered prompt
548
+ // otherwise floods the Activity/Overview views with noise nobody reviews. A blocked
549
+ // prompt is still surfaced -- see step 3 below.
550
+ if (data.event_type !== "prompt.submit" || decision.action === "deny") {
551
+ try {
552
+ await send("/ingest", JSON.stringify(data));
553
+ }
554
+ catch (e) {
555
+ console.error(e instanceof Error ? e.message : String(e));
556
+ }
409
557
  }
410
558
  // 3. A policy-blocked action carries a finding the collector's own normalize() can't
411
559
  // reconstruct (it only knows about *this* process's policy decision) -- forward it to the
@@ -441,6 +589,33 @@ function safeNormalize(data) {
441
589
  return null;
442
590
  }
443
591
  }
592
+ // Resolves a "warn" decision by asking a human at the terminal what to do, since a stderr-only
593
+ // warning is easy to miss and the action proceeds either way. Falls back to leaving the decision
594
+ // as "warn" (handled the old way -- printed to stderr, action proceeds) when there's no TTY to
595
+ // prompt on, or a previous "Block always" choice already covers this exact target.
596
+ async function resolveWarnInteractively(decision, targetPath, command) {
597
+ const blocked = await readBlockedTargets().catch(() => []);
598
+ if (blocked.length && isTargetBlocked({ path: targetPath || undefined, command }, blocked)) {
599
+ return { ...decision, action: "deny", rule: "beam.block-always", reason: `${decision.reason ?? "Blocked by workspace policy."} (blocked always by a previous choice)` };
600
+ }
601
+ const choice = await promptTty(`⚠ Beam policy (advisory): ${decision.reason ?? "This action was flagged for review."}`, [
602
+ { key: "c", label: "Continue -- allow this one action" },
603
+ { key: "s", label: "Stop -- block this one action" },
604
+ { key: "b", label: "Block always -- remember this and block it on every future run" },
605
+ { key: "r", label: "Redact -- strip sensitive data from this action, then continue" },
606
+ ]);
607
+ if (choice === "c")
608
+ return { ...decision, action: "allow" };
609
+ if (choice === "s")
610
+ return { ...decision, action: "deny", reason: decision.reason ?? "Blocked by user choice." };
611
+ if (choice === "b") {
612
+ await addBlockedTarget(targetPath || command).catch(() => { });
613
+ return { ...decision, action: "deny", rule: "beam.block-always", reason: decision.reason ?? "Blocked by user choice (always)." };
614
+ }
615
+ if (choice === "r")
616
+ return { ...decision, action: "redact" };
617
+ return decision;
618
+ }
444
619
  function isEnvironmentAccess(tool, command, path, input) {
445
620
  const text = `${tool} ${command} ${path} ${Object.values(input).filter(value => typeof value === "string").join(" ")}`;
446
621
  // File reads: .env, .env.local, .env.prod, etc. Also catch common env/config
@@ -454,17 +629,20 @@ function isEnvironmentAccess(tool, command, path, input) {
454
629
  return /\b(?:printenv|env|export\s+-p|process\.env|os\.environ|System\.getenv)\b/i.test(text)
455
630
  || /\$\{?(?:[A-Z][A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|AUTH|PRIVATE|API)[A-Z0-9_]*)\}?/.test(text);
456
631
  }
457
- function isOutsideWorkspace(cwd, target, command) {
632
+ // Returns the resolved absolute paths, if any, that a candidate path/command references outside
633
+ // `cwd` -- empty when nothing escapes the workspace.
634
+ function outsideWorkspacePaths(cwd, target, command) {
458
635
  if (!cwd)
459
- return false;
636
+ return [];
460
637
  const text = `${target} ${command}`;
461
638
  const candidates = [
462
639
  ...(isAbsolute(target) ? [target] : []),
463
640
  ...[...text.matchAll(/(?:^|\s)(\/[^\s"';&|]+)/g)].map(match => match[1]),
464
641
  ];
465
642
  const root = resolve(cwd);
466
- return candidates.some(candidate => {
467
- const path = resolve(root, candidate);
643
+ return candidates
644
+ .map(candidate => resolve(root, candidate))
645
+ .filter(path => {
468
646
  const escaped = relative(root, path);
469
647
  return escaped === ".." || escaped.startsWith(`..${sep}`) || isAbsolute(escaped);
470
648
  });
@@ -475,7 +653,7 @@ function isBeamSelfProtectionTarget(tool, command, target) {
475
653
  const text = `${tool} ${command} ${target}`;
476
654
  const targetPath = target ? resolve(target) : "";
477
655
  const touchesBeamFiles = Boolean(targetPath && (targetPath === beamHome || targetPath.startsWith(`${beamHome}${sep}`) || targetPath === beamData || targetPath.startsWith(`${beamData}${sep}`))) || /(?:^|[\s"'\/])\.beam(?:[\/\s"']|$)|beam[\\/]data[\\/]policy\.json/i.test(text);
478
- const stopsBeam = /\b(?:beam\s+(?:service\s+(?:stop|uninstall)|uninstall)|(?:launchctl|systemctl|pkill|killall)\b[^\n]*\bbeam\b|npm\s+(?:uninstall|remove)\b[^\n]*@?agent-beam|rm\b[^\n]*(?:\.beam|beam-cli|@agent-beam))/i.test(text);
656
+ const stopsBeam = /\b(?:beam\s+(?:service\s+(?:stop|uninstall)|jev\s+(?:configure|disable)|uninstall)|(?:launchctl|systemctl|pkill|killall)\b[^\n]*\bbeam\b|npm\s+(?:uninstall|remove)\b[^\n]*@?agent-beam|rm\b[^\n]*(?:\.beam|beam-cli|@agent-beam))/i.test(text);
479
657
  return touchesBeamFiles || stopsBeam;
480
658
  }
481
659
  function blockedFinding(reason = "Blocked by workspace policy.") {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAyB,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC;QAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAC1D,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,2BAA2B,CAAC,CAAC;IAAC,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,KAAa,EAAE,IAAY;IAC7C,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC7F,IAAI;QACJ,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1F,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,CAA8B,CAAC;AAClE,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,UAAuB,EAAE,EAAE,QAAQ,GAAG,WAAW,EAAE;IAClG,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,2FAA2F;IAC3F,4FAA4F;IAC5F,oFAAoF;IACpF,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,qDAAqD;AAKrF,8FAA8F;AAC9F,+FAA+F;AAC/F,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,OAAO,EAAE,EAAE,QAAQ,GAAG,WAAW,EAAE;IAC3G,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAAC,IAAI,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;IAAC,CAAC;IAChI,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED,+FAA+F;AAC/F,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,IAAI,GAAG,OAAO,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAA8D,CAAC;QACzH,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;QAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;QAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAC/G,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,4FAA4F;AAC5F,iGAAiG;AACjG,wFAAwF;AACxF,+FAA+F;AAC/F,uFAAuF;AACvF,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IAChE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,SAAS,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QACvF,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACxD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7G,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK;oBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;YAC3G,CAAC;YAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IAChE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,IAAc,CAAC;IAAC,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACnF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAe,CAAC;QAAC,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,SAAS,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAChI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1F,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4B,CAAC;gBAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjH,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACpH,OAAO,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7L,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,GAAa;IACtD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QAAC,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO;IAAC,CAAC;IAChF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACpD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,6FAA6F;AAC7F,4FAA4F;AAC5F,6FAA6F;AAC7F,iGAAiG;AACjG,4BAA4B;AAC5B,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,SAAiB;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACjG,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;IACvH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACpE,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACnE,IAAI,cAAc,GAAG,KAAK,CAAC;QAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,GAA4B,CAAC;YACjC,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACjF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;gBAAE,cAAc,GAAG,IAAI,CAAC;YACzH,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK;gBAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC/G,CAAC;QACD,IAAI,cAAc,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,SAAiB;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACjG,MAAM,KAAK,GAAa,EAAE,CAAC;QAAC,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;IACvH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACpE,IAAI,OAAe,CAAC;QAAC,IAAI,CAAC;YAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACxF,IAAI,cAAc,GAAG,KAAK,CAAC;QAAC,IAAI,KAA0C,CAAC;QAC3E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,GAA4B,CAAC;YAAC,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAChH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;gBAAE,cAAc,GAAG,IAAI,CAAC;YACzH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAA2C,CAAC,CAAC,CAAC,SAAS,CAAC;YAChJ,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC;QACzF,CAAC;QACD,IAAI,cAAc,IAAI,KAAK;YAAE,OAAO,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1N,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,UAAkB;IACzC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,2EAA2E;IAC3E,2EAA2E;IAC3E,sDAAsD;IACtD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAW,GAAG,aAAa,EAAE,IAAI,GAAG,OAAO,EAAE;IAC7E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA4B,CAAC;QACzD,IAAI,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,KAAK,kBAAkB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC;YACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;YACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBAClE,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;oBAClC,IAAI,CAAC,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACxD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACzD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;wBAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;oBAC7E,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;wBAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;gBAClF,CAAC;qBAAM,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACpD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;wBAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;oBAC7E,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;wBAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;gBAClF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,iEAAiE,CAAC,CAAC;QAC/E,CAAC;QAED,uFAAuF;QACvF,mFAAmF;QACnF,+DAA+D;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACtE,CAAC,CAAE,IAAI,CAAC,UAAsC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5D,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YAClC,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChG,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3E,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YAC5C,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC3D,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC3D,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YACxD,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC7E,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjE,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAChF,IAAI,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;YAChL,QAAQ,GAAG;gBACT,GAAG,QAAQ;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,gEAAgE;aACzE,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAClF,QAAQ,GAAG;gBACT,GAAG,QAAQ;gBACX,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,sBAAsB;gBAC5B,MAAM,EAAE,uEAAuE;aAChF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,IAAI,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;YACnG,QAAQ,GAAG;gBACT,GAAG,QAAQ;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,4DAA4D;aACrE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;QACrM,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK;gBAAE,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAChG,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,8BAA8B,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,gCAAgC,EAAE,SAAS,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACxE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,0FAA0F;QAC1F,4FAA4F;QAC5F,2FAA2F;QAC3F,kCAAkC;QAClC,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAC,CAAC;QACpD,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAExE,qFAAqF;QACrF,6FAA6F;QAC7F,4FAA4F;QAC5F,6DAA6D;QAC7D,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;QAAC,CAAC;IAC1G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,0FAA0F;QAC1F,qFAAqF;QACrF,gGAAgG;QAChG,2FAA2F;QAC3F,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACzE,2FAA2F;YAC3F,0CAA0C;YAC1C,QAAQ,CAAC,WAAW,EAAE,sEAAsE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,IAAI,CAAC;QAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,KAA8B;IACtG,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvH,6EAA6E;IAC7E,+CAA+C;IAC/C,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,oGAAoG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjI,wEAAwE;IACxE,yDAAyD;IACzD,OAAO,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC;WACxF,gGAAgG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,MAAc,EAAE,OAAe;IACtE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACzE,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,OAAe,EAAE,MAAc;IAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpR,MAAM,SAAS,GAAG,yMAAyM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvO,OAAO,gBAAgB,IAAI,SAAS,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,MAAM,GAAG,8BAA8B;IAC7D,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC7H,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B,EAAE,QAA6F;IACjJ,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAAC,IAAI,OAAO,GAAG,KAAK,CAAC;IACxD,MAAM,WAAW,GAAG,CAAC,KAAc,EAAW,EAAE;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;YAAC,OAAO,KAAK,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;YAAC,OAAO,MAAM,CAAC,IAAI,CAAC;QAAC,CAAC;QAC1J,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAA4B,EAAE,OAAO,EAAE,CAAC;AACzE,CAAC;AAED,8FAA8F;AAC9F,kFAAkF;AAClF,2EAA2E;AAC3E,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1E,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,MAAc,EAAE,KAAK,GAAG,YAAY;IAClE,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3L,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QACzD,wFAAwF;QACxF,gFAAgF;QAChF,QAAQ,CAAC,KAAK,EAAE,GAAG,MAAM,2DAA2D,EAAE,KAAK,CAAC,CAAC;IAC/F,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,GAAG,MAAM,qEAAqE,EAAE,KAAK,CAAC,CAAC;IACzG,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,IAA6B,EAAE,MAAe,EAAE,KAAK,GAAG,YAAY;IACvG,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;IAC9B,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,MAAM,IAAI,0BAA0B,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;SAC3R,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC5G,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;;QACxH,QAAQ,CAAC,KAAK,EAAE,yEAAyE,EAAE,KAAK,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,MAAe,EAAE,KAAK,GAAG,YAAY;IACrE,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;SAC7N,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,oBAAoB;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACnH,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;SACtF,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;SACrI,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,gGAAgG;AAChG,+FAA+F;AAC/F,2FAA2F;AAC3F,iGAAiG;AACjG,6FAA6F;AAC7F,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7G,+FAA+F;AAC/F,iGAAiG;AACjG,qBAAqB;AACrB,SAAS,QAAQ,CAAC,KAAa,EAAE,MAAc,EAAE,KAAK,GAAG,YAAY;IACnE,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,kBAAkB,EAAE;gBAClB,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC;gBAC9C,kBAAkB,EAAE,MAAM;gBAC1B,wBAAwB,EAAE,SAAS,MAAM,EAAE;aAC5C;SACF,CAAC,CAAC,CAAC;IACN,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAChE,mFAAmF;QACnF,gFAAgF;QAChF,gCAAgC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClI,CAAC;SAAM,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QACnC,oFAAoF;QACpF,yFAAyF;QACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,4FAA4F;QAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,oDAAoD,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function waitForCollectorUp(port: number, timeoutMs?: number): Promise<boolean>;
@@ -0,0 +1,20 @@
1
+ // installService()/startService() (service.ts) only confirm a launchd plist / systemd unit was
2
+ // written and loaded -- not that the collector process it points at actually came up and bound
3
+ // its port. This is the real check: poll the collector's own unauthenticated "/" route (the
4
+ // studio shell, served before the auth check in server.ts) until it answers or the timeout
5
+ // elapses. A background process that crashes on startup (bad Node path, port conflict, ...) will
6
+ // never respond here, so callers can report the true state instead of a false "running".
7
+ export async function waitForCollectorUp(port, timeoutMs = 8000) {
8
+ const deadline = Date.now() + timeoutMs;
9
+ while (Date.now() < deadline) {
10
+ try {
11
+ const response = await fetch(`http://127.0.0.1:${port}/`, { signal: AbortSignal.timeout(1500) });
12
+ if (response.ok)
13
+ return true;
14
+ }
15
+ catch { /* not up yet, or not up at all -- keep polling until the deadline */ }
16
+ await new Promise(resolve => setTimeout(resolve, 250));
17
+ }
18
+ return false;
19
+ }
20
+ //# sourceMappingURL=collector-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector-health.js","sourceRoot":"","sources":["../src/collector-health.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,+FAA+F;AAC/F,4FAA4F;AAC5F,2FAA2F;AAC3F,iGAAiG;AACjG,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjG,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC,CAAC,qEAAqE,CAAC,CAAC;QACjF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/config.d.ts CHANGED
@@ -2,6 +2,5 @@ export declare function getBeamHome(): string;
2
2
  export declare function getDataDirectory(): string;
3
3
  export declare function getCollectorUrl(): URL;
4
4
  export declare function getApiUrl(): string;
5
- export declare function getTelemetryUrl(): string;
6
5
  export declare function getIdentityPath(): string;
7
6
  export declare function getDashboardUrl(): string;
package/dist/config.js CHANGED
@@ -17,10 +17,6 @@ export function getCollectorUrl() {
17
17
  export function getApiUrl() {
18
18
  return (process.env.BEAM_API_URL || "https://collector.agentbeam.com").replace(/\/+$/, "");
19
19
  }
20
- // Remote telemetry collector. Control-plane requests continue to use getApiUrl().
21
- export function getTelemetryUrl() {
22
- return (process.env.BEAM_TELEMETRY_URL || "https://collector.agentbeam.com").replace(/\/+$/, "");
23
- }
24
20
  export function getIdentityPath() {
25
21
  return path.join(getDataDirectory(), "identity.json");
26
22
  }