@groundnuty/macf 0.2.37 → 0.2.39

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 (82) hide show
  1. package/dist/.build-info.json +2 -2
  2. package/dist/cli/claude-sh.d.ts.map +1 -1
  3. package/dist/cli/claude-sh.js +13 -0
  4. package/dist/cli/claude-sh.js.map +1 -1
  5. package/dist/cli/commands/certs.d.ts.map +1 -1
  6. package/dist/cli/commands/certs.js +6 -2
  7. package/dist/cli/commands/certs.js.map +1 -1
  8. package/dist/cli/commands/doctor.d.ts +102 -3
  9. package/dist/cli/commands/doctor.d.ts.map +1 -1
  10. package/dist/cli/commands/doctor.js +349 -55
  11. package/dist/cli/commands/doctor.js.map +1 -1
  12. package/dist/cli/commands/fleet-doctor-inject.d.ts +52 -0
  13. package/dist/cli/commands/fleet-doctor-inject.d.ts.map +1 -0
  14. package/dist/cli/commands/fleet-doctor-inject.js +100 -0
  15. package/dist/cli/commands/fleet-doctor-inject.js.map +1 -0
  16. package/dist/cli/commands/fleet-doctor.d.ts +236 -0
  17. package/dist/cli/commands/fleet-doctor.d.ts.map +1 -0
  18. package/dist/cli/commands/fleet-doctor.js +481 -0
  19. package/dist/cli/commands/fleet-doctor.js.map +1 -0
  20. package/dist/cli/commands/fleet.d.ts +83 -0
  21. package/dist/cli/commands/fleet.d.ts.map +1 -0
  22. package/dist/cli/commands/fleet.js +225 -0
  23. package/dist/cli/commands/fleet.js.map +1 -0
  24. package/dist/cli/commands/init.d.ts +24 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -1
  26. package/dist/cli/commands/init.js +79 -8
  27. package/dist/cli/commands/init.js.map +1 -1
  28. package/dist/cli/commands/migrate.d.ts +1 -0
  29. package/dist/cli/commands/migrate.d.ts.map +1 -1
  30. package/dist/cli/commands/ps.d.ts +17 -0
  31. package/dist/cli/commands/ps.d.ts.map +1 -0
  32. package/dist/cli/commands/ps.js +69 -0
  33. package/dist/cli/commands/ps.js.map +1 -0
  34. package/dist/cli/commands/registry-prune.d.ts +81 -0
  35. package/dist/cli/commands/registry-prune.d.ts.map +1 -0
  36. package/dist/cli/commands/registry-prune.js +163 -0
  37. package/dist/cli/commands/registry-prune.js.map +1 -0
  38. package/dist/cli/commands/restart-self.d.ts +111 -0
  39. package/dist/cli/commands/restart-self.d.ts.map +1 -0
  40. package/dist/cli/commands/restart-self.js +312 -0
  41. package/dist/cli/commands/restart-self.js.map +1 -0
  42. package/dist/cli/commands/routing-doctor-gh.d.ts +29 -0
  43. package/dist/cli/commands/routing-doctor-gh.d.ts.map +1 -0
  44. package/dist/cli/commands/routing-doctor-gh.js +103 -0
  45. package/dist/cli/commands/routing-doctor-gh.js.map +1 -0
  46. package/dist/cli/commands/routing-doctor.d.ts +183 -0
  47. package/dist/cli/commands/routing-doctor.d.ts.map +1 -0
  48. package/dist/cli/commands/routing-doctor.js +504 -0
  49. package/dist/cli/commands/routing-doctor.js.map +1 -0
  50. package/dist/cli/commands/update.d.ts.map +1 -1
  51. package/dist/cli/commands/update.js +9 -0
  52. package/dist/cli/commands/update.js.map +1 -1
  53. package/dist/cli/config.d.ts +2 -0
  54. package/dist/cli/config.d.ts.map +1 -1
  55. package/dist/cli/config.js +16 -0
  56. package/dist/cli/config.js.map +1 -1
  57. package/dist/cli/env-files.d.ts.map +1 -1
  58. package/dist/cli/env-files.js +11 -0
  59. package/dist/cli/env-files.js.map +1 -1
  60. package/dist/cli/host-prelude.d.ts +50 -0
  61. package/dist/cli/host-prelude.d.ts.map +1 -0
  62. package/dist/cli/host-prelude.js +256 -0
  63. package/dist/cli/host-prelude.js.map +1 -0
  64. package/dist/cli/index.js +122 -5
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/cli/proc-scan.d.ts +81 -0
  67. package/dist/cli/proc-scan.d.ts.map +1 -0
  68. package/dist/cli/proc-scan.js +172 -0
  69. package/dist/cli/proc-scan.js.map +1 -0
  70. package/dist/cli/role-settings-model.d.ts +70 -0
  71. package/dist/cli/role-settings-model.d.ts.map +1 -0
  72. package/dist/cli/role-settings-model.js +90 -0
  73. package/dist/cli/role-settings-model.js.map +1 -0
  74. package/dist/cli/settings-writer.d.ts +27 -0
  75. package/dist/cli/settings-writer.d.ts.map +1 -1
  76. package/dist/cli/settings-writer.js +144 -2
  77. package/dist/cli/settings-writer.js.map +1 -1
  78. package/package.json +2 -2
  79. package/plugin/rules/coordination.md +10 -0
  80. package/plugin/rules/silent-fallback-hazards.md +19 -4
  81. package/scripts/check-gh-attribution.sh +34 -10
  82. package/scripts/emit-turn-receipt.sh +44 -4
@@ -15,8 +15,12 @@
15
15
  * for the attribution-trap class this prevents).
16
16
  */
17
17
  import { execFileSync } from 'node:child_process';
18
+ import { createInterface } from 'node:readline';
19
+ import { resolve } from 'node:path';
18
20
  import { readAgentConfig, tokenSourceFromConfig } from '../config.js';
19
- import { getPermissionsAllow, getPermissionsDeny, getSandboxAllowRead, SANDBOX_FD_READ_PATTERN, } from '../settings-writer.js';
21
+ import { defaultProcReader, scanMacfProcesses } from '../proc-scan.js';
22
+ import { getHookCommands, getPermissionsAllow, getPermissionsDeny, getSandboxAllowRead, installGhTokenHook, installPluginSkillPermissions, installSandboxExcludedCommands, installSandboxFdAllowRead, SANDBOX_FD_READ_PATTERN, } from '../settings-writer.js';
23
+ import { expectedAllowForRole, expectedHooksForRole, ROLE_FLOOR_DENY, isKnownRole, } from '../role-settings-model.js';
20
24
  /**
21
25
  * DR-019 permission doctrine. Keep in sync with
22
26
  * design/decisions/DR-019-app-permissions.md and
@@ -283,92 +287,382 @@ export async function fetchInstallationPermissions(appId, installId, keyPath) {
283
287
  return parsed.permissions;
284
288
  }
285
289
  /**
286
- * Main entry for `macf doctor`. Returns the shell exit code: 0 if all
287
- * required permissions are present, 1 if any are missing or insufficient.
290
+ * Does `allow` grant the expected floor entry? `Bash(*)` (or any `Bash(...)`
291
+ * form) is satisfied by ANY broad Bash grant DR-028 doctrine is that narrow
292
+ * `Bash(...)` patterns are defeated by `$GH_TOKEN`/`$MACF_WORKSPACE_DIR`
293
+ * expansion, so a workspace carrying bare `Bash` or `Bash(*)` satisfies the
294
+ * floor's Bash need. Bare tool names (`Read`, `Write`, …) accept the bare or
295
+ * `(*)` glob form via `isToolFullyAllowed`. Other patterned entries (e.g. a
296
+ * role-delta MCP allow string) require an exact match.
288
297
  */
289
- export async function runDoctor(projectDir) {
298
+ function allowSatisfies(allow, expected) {
299
+ if (expected === 'Bash' || expected.startsWith('Bash(')) {
300
+ return isToolFullyAllowed(allow, 'Bash');
301
+ }
302
+ if (!expected.includes('(')) {
303
+ return isToolFullyAllowed(allow, expected);
304
+ }
305
+ return allow.includes(expected);
306
+ }
307
+ function allowFindings(allow, role) {
308
+ const findings = [];
309
+ for (const expected of expectedAllowForRole(role)) {
310
+ if (!allowSatisfies(allow, expected)) {
311
+ findings.push({
312
+ category: 'allow',
313
+ item: expected,
314
+ severity: 'WARN',
315
+ message: `floor allow entry "${expected}" absent from permissions.allow`,
316
+ });
317
+ }
318
+ }
319
+ return findings;
320
+ }
321
+ function denyFindings(deny) {
322
+ const findings = [];
323
+ for (const entry of ROLE_FLOOR_DENY) {
324
+ if (!deny.includes(entry)) {
325
+ findings.push({
326
+ category: 'deny',
327
+ item: entry,
328
+ severity: 'WARN',
329
+ message: `floor deny entry "${entry}" absent from permissions.deny`,
330
+ });
331
+ }
332
+ }
333
+ return findings;
334
+ }
335
+ function hookFindings(commands, role) {
336
+ const findings = [];
337
+ for (const hook of expectedHooksForRole(role)) {
338
+ if (commands.includes(hook.command))
339
+ continue;
340
+ const where = `${hook.event}${hook.matcher ? ` / ${hook.matcher}` : ''}`;
341
+ findings.push({
342
+ category: 'hook',
343
+ item: hook.command,
344
+ severity: hook.required ? 'ERROR' : 'WARN',
345
+ message: `${hook.required ? 'REQUIRED hook' : 'hook'} (${where}) not wired in settings`,
346
+ });
347
+ }
348
+ return findings;
349
+ }
350
+ /**
351
+ * DR-028 increment 2: validate `.claude/settings.json` (merged with
352
+ * settings.local.json) against the role-aware expected-settings model for
353
+ * `role`. Compares the effective allow/deny/hooks to `expectedAllowForRole` +
354
+ * `ROLE_FLOOR_DENY` + `expectedHooksForRole`. A missing model-`required` hook
355
+ * (the auditor's never-acts hook) is an `ERROR`; everything else is `WARN`
356
+ * drift. Robust to malformed settings (try/catch → `readError`), like
357
+ * `checkPermissionsAllow`.
358
+ */
359
+ export function checkRoleSettings(workspaceDir, role) {
360
+ let allow;
361
+ let deny;
362
+ let commands;
363
+ try {
364
+ allow = getPermissionsAllow(workspaceDir);
365
+ deny = getPermissionsDeny(workspaceDir);
366
+ commands = getHookCommands(workspaceDir);
367
+ }
368
+ catch (err) {
369
+ return {
370
+ status: 'WARN',
371
+ role,
372
+ findings: [],
373
+ roleKnown: isKnownRole(role),
374
+ readError: err instanceof Error ? err.message : String(err),
375
+ };
376
+ }
377
+ const findings = [
378
+ ...allowFindings(allow, role),
379
+ ...denyFindings(deny),
380
+ ...hookFindings(commands, role),
381
+ ];
382
+ const status = findings.some((f) => f.severity === 'ERROR') ? 'ERROR'
383
+ : findings.length > 0 ? 'WARN'
384
+ : 'PASS';
385
+ return { status, role, findings, roleKnown: isKnownRole(role) };
386
+ }
387
+ /**
388
+ * Infer the workspace's role from `macf-agent.json` (`agent_role`). Returns
389
+ * `null` when indeterminable (no config / no role) — the doctor then WARNs and
390
+ * skips role-settings validation rather than guessing a role.
391
+ */
392
+ export function inferRole(workspaceDir) {
393
+ return readAgentConfig(workspaceDir)?.agent_role ?? null;
394
+ }
395
+ /** Normalise a path for cwd comparison (absolute, no trailing slash). */
396
+ function normalizeDir(p) {
397
+ const abs = resolve(p);
398
+ return abs.length > 1 && abs.endsWith('/') ? abs.slice(0, -1) : abs;
399
+ }
400
+ /**
401
+ * Pattern-A launch-boundary probe: find the running `claude` process whose
402
+ * `/proc/<pid>/cwd` EQUALS this workspace dir — the cwd disambiguation is the
403
+ * whole point; a multi-tenant host runs many `claude`s and a `head -1` grab
404
+ * would assert against the wrong one — then assert its environ carries
405
+ * `OTEL_EXPORTER_OTLP_ENDPOINT`. The `ProcReader` is injectable for tests; the
406
+ * default reads real `/proc`. See macf#556 for the misdiagnosis this prevents.
407
+ */
408
+ export function checkOtelLaunchBoundary(workspaceDir, reader = defaultProcReader) {
409
+ if (!reader.available()) {
410
+ return {
411
+ status: 'INFO',
412
+ detail: '/proc unavailable (non-Linux host) — cannot probe the launch boundary',
413
+ };
414
+ }
415
+ const target = normalizeDir(workspaceDir);
416
+ const match = scanMacfProcesses(reader).find((p) => p.kind === 'claude' && p.cwd !== null && normalizeDir(p.cwd) === target);
417
+ if (!match) {
418
+ return {
419
+ status: 'INFO',
420
+ detail: `no running claude process has cwd == ${target} — skipping launch-boundary probe`,
421
+ };
422
+ }
423
+ if (match.otelEndpoint && match.otelEndpoint.length > 0) {
424
+ return {
425
+ status: 'PASS',
426
+ detail: `claude pid ${match.pid} exports OTEL_EXPORTER_OTLP_ENDPOINT=${match.otelEndpoint}`,
427
+ };
428
+ }
429
+ return {
430
+ status: 'WARN',
431
+ detail: `claude pid ${match.pid} (cwd ${target}) has NO OTEL_EXPORTER_OTLP_ENDPOINT in its ` +
432
+ `environ — telemetry will NOT be exported. Relaunch via claude.sh with the endpoint set.`,
433
+ };
434
+ }
435
+ /** Prompt the operator for a y/N confirmation on stdin. Default = No. */
436
+ function promptYesNo(question) {
437
+ return new Promise((resolveAnswer) => {
438
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
439
+ rl.question(`${question} [y/N] `, (answer) => {
440
+ rl.close();
441
+ resolveAnswer(/^y(es)?$/i.test(answer.trim()));
442
+ });
443
+ });
444
+ }
445
+ /** Print the DR-028 "Role settings" report section for the given check. */
446
+ function printRoleSettingsSection(role, check) {
447
+ console.log('');
448
+ console.log('Role settings (DR-028)');
449
+ console.log('──────────────────────────────────────────────────────────────');
450
+ if (!role || !check) {
451
+ console.log(' ⚠ role indeterminable — skipping role-settings validation');
452
+ console.log(' (no macf-agent.json / no agent_role; run `macf init` first)');
453
+ return;
454
+ }
455
+ if (check.readError) {
456
+ console.log(` ⚠ could not parse .claude/settings.json: ${check.readError}`);
457
+ return;
458
+ }
459
+ // macf#551: surface a non-canonical role so a typo on a delta-bearing safety
460
+ // role (e.g. `auditor-agent` vs the exact `auditor`, which would silently skip
461
+ // the never-acts hook + its ERROR) is visible rather than degrading to
462
+ // floor-only without a signal.
463
+ if (!check.roleKnown) {
464
+ console.log(` ℹ role "${role}" is not a canonical MACF role — validated against the floor only.`);
465
+ console.log(' If this should be a delta-bearing role (e.g. the auditor → exact "auditor", no -agent suffix), check for a typo.');
466
+ }
467
+ if (check.status === 'PASS') {
468
+ console.log(` ✓ role "${role}" settings match the DR-028 floor + role deltas [PASS]`);
469
+ return;
470
+ }
471
+ const errors = check.findings.filter((f) => f.severity === 'ERROR');
472
+ const warns = check.findings.filter((f) => f.severity === 'WARN');
473
+ const symbol = check.status === 'ERROR' ? '✗' : '⚠';
474
+ console.log(` ${symbol} role "${role}": ${errors.length} error(s), ${warns.length} drift item(s) [${check.status}]`);
475
+ for (const f of check.findings) {
476
+ const fs = f.severity === 'ERROR' ? '✗' : '⚠';
477
+ console.log(` ${fs} [${f.category}] ${f.message}`);
478
+ }
479
+ console.log(' Fix: run `macf doctor --fix` (writes the floor after confirmation) or `macf update`.');
480
+ }
481
+ /**
482
+ * Main entry for `macf doctor`. Prints the DR-019 token report, the sandbox-fd
483
+ * + macf#296 permissions checks, and the DR-028 role-settings report; returns
484
+ * the shell exit code.
485
+ *
486
+ * Exit-code discipline:
487
+ * - DR-019 missing/insufficient permission → 1 (unchanged).
488
+ * - Sandbox fd FAIL → 1 (unchanged).
489
+ * - DR-028 role-settings ERROR (auditor never-acts hook absent) → 1. This is
490
+ * a missing structural safety invariant, treated like a missing required
491
+ * permission. Plain WARN drift (allow/deny/hook gaps) does NOT affect the
492
+ * exit code — same warn-only posture as the macf#296 permissions check.
493
+ * - A failed/unreachable DR-019 token check is non-fatal to the rest of the
494
+ * report (so `--fix` of the local settings floor still runs offline) but
495
+ * still contributes 1 to the exit code.
496
+ */
497
+ export async function runDoctor(projectDir, opts) {
290
498
  const config = readAgentConfig(projectDir);
291
499
  if (!config) {
292
500
  console.error('No macf-agent.json found. Run `macf init` first.');
293
501
  return 1;
294
502
  }
295
- const source = tokenSourceFromConfig(projectDir, config);
296
- let permissions;
297
- try {
298
- permissions = await fetchInstallationPermissions(source.appId, source.installId, source.keyPath);
503
+ // DR-019 token/permission check. Local-registry mode (DR-024) has no App, so
504
+ // there's nothing to mint — skip it. A network/token failure is recorded but
505
+ // non-fatal so the local-settings sections (+ `--fix`) still run offline.
506
+ let permissions = null;
507
+ let tokenError = null;
508
+ let tokenSkipped = false;
509
+ if (config.registry.type === 'local') {
510
+ tokenSkipped = true;
299
511
  }
300
- catch (err) {
301
- console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
302
- return 1;
512
+ else {
513
+ try {
514
+ const source = tokenSourceFromConfig(projectDir, config);
515
+ permissions = await fetchInstallationPermissions(source.appId, source.installId, source.keyPath);
516
+ }
517
+ catch (err) {
518
+ tokenError = err instanceof Error ? err.message : String(err);
519
+ }
303
520
  }
304
- const finding = diffPermissions(permissions);
305
521
  console.log('MACF doctor report');
306
522
  console.log('──────────────────────────────────────────────────────────────');
307
- for (const req of MACF_REQUIRED_PERMISSIONS) {
308
- console.log(` ${formatPermissionRow(req, permissions[req.name])}`);
523
+ let permissionsFailed = false;
524
+ if (tokenSkipped) {
525
+ console.log(' ℹ local-registry mode (DR-024) — no GitHub App; DR-019 token check skipped.');
309
526
  }
310
- console.log('');
311
- const totalRequired = MACF_REQUIRED_PERMISSIONS.length;
312
- const satisfied = totalRequired - finding.missing.length - finding.insufficient.length;
313
- const status = finding.missing.length === 0 && finding.insufficient.length === 0
314
- ? '✓ all required permissions present'
315
- : `✗ ${finding.missing.length + finding.insufficient.length} of ${totalRequired} required permissions missing or insufficient`;
316
- console.log(` ${status} (${satisfied}/${totalRequired} satisfied)`);
317
- if (finding.missing.length > 0) {
318
- console.log('');
319
- console.log('Missing:');
320
- for (const req of finding.missing) {
321
- console.log(` - ${req.name}: ${req.level} — ${req.why}`);
322
- }
527
+ else if (tokenError || !permissions) {
528
+ permissionsFailed = true;
529
+ console.error(` ✗ DR-019 token check failed: ${tokenError ?? 'unknown error'}`);
530
+ console.error(' See coordination.md Token & Git Hygiene for diagnostics.');
323
531
  }
324
- if (finding.insufficient.length > 0) {
325
- console.log('');
326
- console.log('Insufficient:');
327
- for (const { required, actual } of finding.insufficient) {
328
- console.log(` - ${required.name}: have ${actual}, need ${required.level} — ${required.why}`);
532
+ else {
533
+ const finding = diffPermissions(permissions);
534
+ for (const req of MACF_REQUIRED_PERMISSIONS) {
535
+ console.log(` ${formatPermissionRow(req, permissions[req.name])}`);
329
536
  }
330
- }
331
- if (finding.missing.length > 0 || finding.insufficient.length > 0) {
332
537
  console.log('');
333
- console.log('See design/decisions/DR-019-app-permissions.md for the full doctrine,');
334
- console.log('and GitHub Settings Developer settings → GitHub Apps → <your App> → Permissions');
335
- console.log('to update the App. Users with the App installed must accept the new permissions.');
538
+ const totalRequired = MACF_REQUIRED_PERMISSIONS.length;
539
+ const satisfied = totalRequired - finding.missing.length - finding.insufficient.length;
540
+ const status = finding.missing.length === 0 && finding.insufficient.length === 0
541
+ ? '✓ all required permissions present'
542
+ : `✗ ${finding.missing.length + finding.insufficient.length} of ${totalRequired} required permissions missing or insufficient`;
543
+ console.log(` ${status} (${satisfied}/${totalRequired} satisfied)`);
544
+ if (finding.missing.length > 0) {
545
+ console.log('');
546
+ console.log('Missing:');
547
+ for (const req of finding.missing) {
548
+ console.log(` - ${req.name}: ${req.level} — ${req.why}`);
549
+ }
550
+ }
551
+ if (finding.insufficient.length > 0) {
552
+ console.log('');
553
+ console.log('Insufficient:');
554
+ for (const { required, actual } of finding.insufficient) {
555
+ console.log(` - ${required.name}: have ${actual}, need ${required.level} — ${required.why}`);
556
+ }
557
+ }
558
+ if (finding.missing.length > 0 || finding.insufficient.length > 0) {
559
+ console.log('');
560
+ console.log('See design/decisions/DR-019-app-permissions.md for the full doctrine,');
561
+ console.log('and GitHub → Settings → Developer settings → GitHub Apps → <your App> → Permissions');
562
+ console.log('to update the App. Users with the App installed must accept the new permissions.');
563
+ permissionsFailed = true;
564
+ }
336
565
  }
337
566
  console.log('');
338
567
  console.log('Sandbox filesystem (macf#200)');
339
568
  console.log('──────────────────────────────────────────────────────────────');
340
- const sandboxCheck = checkSandboxFdAllowRead(projectDir);
341
- if (sandboxCheck.status === 'PASS') {
569
+ let sandboxCheck = checkSandboxFdAllowRead(projectDir);
570
+ printSandboxSection(sandboxCheck);
571
+ console.log('');
572
+ console.log('Workspace permissions (macf#296)');
573
+ console.log('──────────────────────────────────────────────────────────────');
574
+ let permsCheck = checkPermissionsAllow(projectDir);
575
+ printPermissionsAllowSection(permsCheck);
576
+ const role = inferRole(projectDir);
577
+ let roleCheck = role ? checkRoleSettings(projectDir, role) : null;
578
+ printRoleSettingsSection(role, roleCheck);
579
+ console.log('');
580
+ console.log('OTEL launch boundary (macf#554/#556)');
581
+ console.log('──────────────────────────────────────────────────────────────');
582
+ printOtelLaunchSection(checkOtelLaunchBoundary(projectDir));
583
+ // --fix: the existing install emitters ARE the fix (DR-028) — they write the
584
+ // floor merge-preservingly. Detect drift read-only above, then (on consent)
585
+ // call them + re-run the checks. NEVER write without consent.
586
+ if (opts?.fix) {
587
+ const needsFix = (roleCheck !== null && roleCheck.status !== 'PASS') ||
588
+ sandboxCheck.status === 'FAIL' ||
589
+ permsCheck.status === 'WARN';
590
+ if (!needsFix) {
591
+ console.log('');
592
+ console.log('--fix: nothing to fix — settings already satisfy the floor.');
593
+ }
594
+ else {
595
+ console.log('');
596
+ console.log('--fix will write the DR-028 floor into .claude/settings.json:');
597
+ console.log(' - permissions.allow/deny floor (installPluginSkillPermissions)');
598
+ console.log(' - PreToolUse/PostToolUse/UserPromptSubmit/PreCompact hooks (installGhTokenHook)');
599
+ console.log(' - sandbox.filesystem.allowRead + sandbox.excludedCommands');
600
+ console.log(' Existing operator-authored entries are preserved (merge, dedup).');
601
+ const consent = opts.yes ? true : await promptYesNo('Proceed?');
602
+ if (!consent) {
603
+ console.log('Aborted — no changes written.');
604
+ }
605
+ else {
606
+ installPluginSkillPermissions(projectDir);
607
+ installGhTokenHook(projectDir);
608
+ installSandboxFdAllowRead(projectDir);
609
+ installSandboxExcludedCommands(projectDir);
610
+ sandboxCheck = checkSandboxFdAllowRead(projectDir);
611
+ permsCheck = checkPermissionsAllow(projectDir);
612
+ roleCheck = role ? checkRoleSettings(projectDir, role) : null;
613
+ console.log('');
614
+ console.log('--fix applied. Re-check:');
615
+ printSandboxSection(sandboxCheck);
616
+ printPermissionsAllowSection(permsCheck);
617
+ printRoleSettingsSection(role, roleCheck);
618
+ }
619
+ }
620
+ }
621
+ const sandboxFailed = sandboxCheck.status === 'FAIL';
622
+ const roleErrored = roleCheck?.status === 'ERROR';
623
+ return permissionsFailed || sandboxFailed || roleErrored ? 1 : 0;
624
+ }
625
+ /** Print the macf#554/#556 OTEL launch-boundary report line for `check`. */
626
+ function printOtelLaunchSection(check) {
627
+ if (check.status === 'PASS') {
628
+ console.log(` ✓ ${check.detail} [PASS]`);
629
+ }
630
+ else if (check.status === 'WARN') {
631
+ console.log(` ⚠ ${check.detail} [WARN]`);
632
+ }
633
+ else {
634
+ console.log(` ℹ ${check.detail} [INFO]`);
635
+ }
636
+ }
637
+ /** Print the macf#200 sandbox-fd report line(s) for `check`. */
638
+ function printSandboxSection(check) {
639
+ if (check.status === 'PASS') {
342
640
  console.log(` ✓ sandbox.filesystem.allowRead contains ${SANDBOX_FD_READ_PATTERN} [PASS]`);
343
641
  }
344
642
  else {
345
643
  console.log(` ✗ sandbox.filesystem.allowRead missing ${SANDBOX_FD_READ_PATTERN} [FAIL — run \`macf update\` to fix]`);
346
- if (sandboxCheck.detail)
347
- console.log(` ${sandboxCheck.detail}`);
644
+ if (check.detail)
645
+ console.log(` ${check.detail}`);
348
646
  }
349
- console.log('');
350
- console.log('Workspace permissions (macf#296)');
351
- console.log('──────────────────────────────────────────────────────────────');
352
- const permsCheck = checkPermissionsAllow(projectDir);
353
- if (permsCheck.readError) {
354
- console.log(` ⚠ could not parse .claude/settings.json: ${permsCheck.readError}`);
647
+ }
648
+ /** Print the macf#296 permissions-allow report line(s) for `check`. */
649
+ function printPermissionsAllowSection(check) {
650
+ if (check.readError) {
651
+ console.log(` ⚠ could not parse .claude/settings.json: ${check.readError}`);
355
652
  }
356
- else if (permsCheck.status === 'PASS') {
653
+ else if (check.status === 'PASS') {
357
654
  console.log(` ✓ permissions.allow grants Write + Edit (autonomous coordination unblocked) [PASS]`);
358
655
  }
359
656
  else {
360
- const summary = permsCheck.status === 'INFO'
361
- ? `ℹ ${permsCheck.findings.length} autonomy-required tool(s) absent (deny rules present — likely deliberate) [INFO]`
362
- : `⚠ ${permsCheck.findings.length} autonomy-required tool(s) absent or scoped [WARN]`;
657
+ const summary = check.status === 'INFO'
658
+ ? `ℹ ${check.findings.length} autonomy-required tool(s) absent (deny rules present — likely deliberate) [INFO]`
659
+ : `⚠ ${check.findings.length} autonomy-required tool(s) absent or scoped [WARN]`;
363
660
  console.log(` ${summary}`);
364
- for (const f of permsCheck.findings) {
661
+ for (const f of check.findings) {
365
662
  const symbol = f.severity === 'BLOCK' ? '✗' : (f.severity === 'WARN' ? '⚠' : 'ℹ');
366
663
  console.log(` ${symbol} ${f.tool}: ${f.message}`);
367
664
  console.log(` Fix: ${f.remediation}`);
368
665
  }
369
666
  }
370
- const permissionsFailed = finding.missing.length > 0 || finding.insufficient.length > 0;
371
- const sandboxFailed = sandboxCheck.status === 'FAIL';
372
- return permissionsFailed || sandboxFailed ? 1 : 0;
373
667
  }
374
668
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAWnC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAkC;IACtE,EAAE,IAAI,EAAE,UAAU,EAAW,KAAK,EAAE,MAAM,EAAG,GAAG,EAAE,yCAAyC,EAAE;IAC7F,EAAE,IAAI,EAAE,UAAU,EAAW,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,uCAAuC,EAAE;IAC3F,EAAE,IAAI,EAAE,QAAQ,EAAa,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,4DAA4D,EAAE;IAChH,EAAE,IAAI,EAAE,eAAe,EAAM,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,kCAAkC,EAAE;IACtF,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,uEAAuE,EAAE;IAC3H,EAAE,IAAI,EAAE,WAAW,EAAU,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,0CAA0C,EAAE;IAC9F,EAAE,IAAI,EAAE,SAAS,EAAY,KAAK,EAAE,MAAM,EAAG,GAAG,EAAE,gDAAgD,EAAE;CACrG,CAAC;AAYF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwC;IACtE,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAuD,EAAE,CAAC;IAC5E,KAAK,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,iEAAiE;QACjE,iEAAiE;QACjE,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACpD,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAuB,EACvB,MAA0B;IAE1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,IAAI,aAAa,QAAQ,wBAAwB,GAAG,CAAC,GAAG,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,KAAK,IAAI,aAAa,QAAQ,WAAW,SAAS,0BAA0B,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,IAAI,aAAa,QAAQ,WAAW,SAAS,EAAE,CAAC;AAC9D,CAAC;AAkBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IAC1D,IAAI,SAA4B,CAAC;IACjC,IAAI,CAAC;QACH,SAAS,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,8BAA8B,uBAAuB,mCAAmC;KACjG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB,EAAE,IAAY;IACvE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,IAAuB,EAAE,IAAY;IAC/D,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAyCD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,IAAI,KAAwB,CAAC;IAC7B,IAAI,IAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,KAAK,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;QAC3C,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,SAAS;QAE9C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;QAEjC,IAAI,QAAuC,CAAC;QAC5C,IAAI,OAAe,CAAC;QACpB,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,GAAG,MAAM,CAAC;YAClB,OAAO;gBACL,GAAG,IAAI,8EAA8E;oBACrF,+CAA+C,IAAI,gCAAgC;oBACnF,6BAA6B,CAAC;QAClC,CAAC;aAAM,IAAI,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,QAAQ,GAAG,OAAO,CAAC;YACnB,OAAO;gBACL,sEAAsE;oBACtE,sFAAsF,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,CAAC;YAClB,OAAO;gBACL,GAAG,IAAI,+CAA+C,IAAI,+BAA+B;oBACzF,uFAAuF;oBACvF,0FAA0F;oBAC1F,8DAA8D;oBAC9D,CAAC,OAAO,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,WAAW,GACf,0DAA0D,IAAI,6BAA6B;YAC3F,OAAO,IAAI,6CAA6C,IAAI,iCAAiC;YAC7F,iCAAiC,CAAC;QAEpC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,QAAQ;YACR,eAAe;YACf,WAAW;YACX,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO,CACL,qDAAqD;QACrD,YAAY,UAAU,aAAa,GAAG,CAAC,MAAM,GAAG,CACjD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAa,EACb,SAAiB,EACjB,OAAe;IAEf,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,OAAO;YAChB,OAAO;YACP,cAAc;SACf,EAAE;YACD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,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,IAAI,KAAK,CACb,mCAAmC,GAAG,IAAI;YAC1C,0DAA0D,EAC1D,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,SAAS,EAAE,EAAE;QACpF,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,MAAM,EAAE,6BAA6B;YACrC,sBAAsB,EAAE,YAAY;SACrC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,0BAA0B,SAAS,aAAa,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,WAAqC,CAAC;AACtD,CAAC;AA2CD;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,KAAwB,EAAE,QAAgB;IAChE,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB,EAAE,IAAY;IAC3D,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,KAAK,MAAM,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,sBAAsB,QAAQ,iCAAiC;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAuB;IAC3C,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,qBAAqB,KAAK,gCAAgC;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B,EAAE,IAAY;IAC7D,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAC9C,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAC1C,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,yBAAyB;SACxF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB,EAAE,IAAY;IAClE,IAAI,KAAwB,CAAC;IAC7B,IAAI,IAAuB,CAAC;IAC5B,IAAI,QAA2B,CAAC;IAChC,IAAI,CAAC;QACH,KAAK,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACxC,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC;YAC5B,SAAS,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAyB;QACrC,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;QAC7B,GAAG,YAAY,CAAC,IAAI,CAAC;QACrB,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;KAChC,CAAC;IAEF,MAAM,MAAM,GACV,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QACtD,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;YAC9B,CAAC,CAAC,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,YAAoB;IAC5C,OAAO,eAAe,CAAC,YAAY,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC;AAC3D,CAAC;AAkBD,yEAAyE;AACzE,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAoB,EACpB,SAAqB,iBAAiB;IAEtC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,uEAAuE;SAChF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAC/E,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,wCAAwC,MAAM,mCAAmC;SAC1F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,cAAc,KAAK,CAAC,GAAG,wCAAwC,KAAK,CAAC,YAAY,EAAE;SAC5F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM,EACJ,cAAc,KAAK,CAAC,GAAG,SAAS,MAAM,8CAA8C;YACpF,yFAAyF;KAC5F,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,SAAS,wBAAwB,CAAC,IAAmB,EAAE,KAAqC;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,8CAA8C,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IACD,6EAA6E;IAC7E,+EAA+E;IAC/E,uEAAuE;IACvE,+BAA+B;IAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,aAAa,IAAI,oEAAoE,CACtF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,sHAAsH,CACvH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yDAAyD,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,UAAU,IAAI,MAAM,MAAM,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,oBAAoB,KAAK,CAAC,MAAM,GAAG,CAC1G,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;AAC1G,CAAC;AAUD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,IAAuB;IACzE,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,IAAI,WAAW,GAAkC,IAAI,CAAC;IACtD,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrC,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACzD,WAAW,GAAG,MAAM,4BAA4B,CAC9C,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAC/C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,kCAAkC,UAAU,IAAI,eAAe,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,CAAC;QACvD,MAAM,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;QACvF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9E,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,OAAO,aAAa,+CAA+C,CAAC;QACjI,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,SAAS,IAAI,aAAa,aAAa,CAAC,CAAC;QAErE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,IAAI,UAAU,MAAM,UAAU,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;YAChG,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,IAAI,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACvD,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,IAAI,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACnD,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,sBAAsB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5D,6EAA6E;IAC7E,4EAA4E;IAC5E,8DAA8D;IAC9D,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,QAAQ,GACZ,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC;YACnD,YAAY,CAAC,MAAM,KAAK,MAAM;YAC9B,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;YACjG,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,6BAA6B,CAAC,UAAU,CAAC,CAAC;gBAC1C,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC/B,yBAAyB,CAAC,UAAU,CAAC,CAAC;gBACtC,8BAA8B,CAAC,UAAU,CAAC,CAAC;gBAC3C,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;gBACnD,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;gBAC/C,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACxC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAClC,4BAA4B,CAAC,UAAU,CAAC,CAAC;gBACzC,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,OAAO,iBAAiB,IAAI,aAAa,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,4EAA4E;AAC5E,SAAS,sBAAsB,CAAC,KAAsB;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,SAAS,mBAAmB,CAAC,KAAqB;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,6CAA6C,uBAAuB,UAAU,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,uBAAuB,wCAAwC,CAAC,CAAC;QACzH,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,SAAS,4BAA4B,CAAC,KAAkC;IACtE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,8CAA8C,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;IACvG,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM;YACrC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,oFAAoF;YAChH,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,qDAAqD,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { HealthResponse } from '@groundnuty/macf-core';
2
+ /** Outcome of the inject `/notify` POST (the real mention probe). */
3
+ export interface InjectPostResult {
4
+ /** HTTP 200 — the probe entered the receiver (onNotify ran). */
5
+ readonly delivered: boolean;
6
+ /** Short reason when not delivered (transport error / non-200). */
7
+ readonly error?: string;
8
+ }
9
+ /**
10
+ * POST the REAL inject `/notify` mention (marker in `message`). Injectable for
11
+ * tests. `runId` is the digits-only correlation id embedded in the marker;
12
+ * `markerAgent` is the kebab agent slug the marker carries.
13
+ */
14
+ export type FleetInjectPostFn = (host: string, port: number, runId: string, markerAgent: string) => Promise<InjectPostResult>;
15
+ /**
16
+ * Poll the target's `/health` ONCE and return the CURRENT
17
+ * `last_processed.correlation_token` (the most-recent processed receipt's
18
+ * `run_id`), or `null` when absent. Injectable for tests.
19
+ */
20
+ export type FleetInjectPollFn = (host: string, port: number) => Promise<string | null>;
21
+ /**
22
+ * The REAL inject `/notify` POST. Mirrors `postDiagnosticNotify`'s mTLS request
23
+ * shape (same CA + client cert/key, `rejectUnauthorized`, timeout) but sends a
24
+ * NON-diagnostic `mention` whose `message` carries the
25
+ * `[macf-route:<runId>:<markerAgent>]` marker. Resolves `{ delivered: true }`
26
+ * only on HTTP 200; never throws (failures become `{ delivered:false, error }`).
27
+ */
28
+ export declare function postInjectNotify(config: {
29
+ readonly host: string;
30
+ readonly port: number;
31
+ readonly caCertPem: string;
32
+ readonly certPath: string;
33
+ readonly keyPath: string;
34
+ readonly runId: string;
35
+ readonly markerAgent: string;
36
+ readonly timeoutMs?: number;
37
+ }): Promise<InjectPostResult>;
38
+ /** Extract `last_processed.correlation_token` from a parsed `/health` body. */
39
+ export declare function readCorrelationToken(health: HealthResponse | null): string | null;
40
+ /**
41
+ * Poll one agent's `/health` (reusing the shared mTLS probe) and return its
42
+ * CURRENT `last_processed.correlation_token`, or `null`. Production
43
+ * `FleetInjectPollFn`.
44
+ */
45
+ export declare function pollLastProcessedToken(config: {
46
+ readonly host: string;
47
+ readonly port: number;
48
+ readonly caCertPem: string;
49
+ readonly certPath: string;
50
+ readonly keyPath: string;
51
+ }): Promise<string | null>;
52
+ //# sourceMappingURL=fleet-doctor-inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-doctor-inject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/fleet-doctor-inject.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEvF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoD5B;AAaD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGjF;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGzB"}