@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.
- package/dist/.build-info.json +2 -2
- package/dist/cli/claude-sh.d.ts.map +1 -1
- package/dist/cli/claude-sh.js +13 -0
- package/dist/cli/claude-sh.js.map +1 -1
- package/dist/cli/commands/certs.d.ts.map +1 -1
- package/dist/cli/commands/certs.js +6 -2
- package/dist/cli/commands/certs.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +102 -3
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +349 -55
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/fleet-doctor-inject.d.ts +52 -0
- package/dist/cli/commands/fleet-doctor-inject.d.ts.map +1 -0
- package/dist/cli/commands/fleet-doctor-inject.js +100 -0
- package/dist/cli/commands/fleet-doctor-inject.js.map +1 -0
- package/dist/cli/commands/fleet-doctor.d.ts +236 -0
- package/dist/cli/commands/fleet-doctor.d.ts.map +1 -0
- package/dist/cli/commands/fleet-doctor.js +481 -0
- package/dist/cli/commands/fleet-doctor.js.map +1 -0
- package/dist/cli/commands/fleet.d.ts +83 -0
- package/dist/cli/commands/fleet.d.ts.map +1 -0
- package/dist/cli/commands/fleet.js +225 -0
- package/dist/cli/commands/fleet.js.map +1 -0
- package/dist/cli/commands/init.d.ts +24 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +79 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +1 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/ps.d.ts +17 -0
- package/dist/cli/commands/ps.d.ts.map +1 -0
- package/dist/cli/commands/ps.js +69 -0
- package/dist/cli/commands/ps.js.map +1 -0
- package/dist/cli/commands/registry-prune.d.ts +81 -0
- package/dist/cli/commands/registry-prune.d.ts.map +1 -0
- package/dist/cli/commands/registry-prune.js +163 -0
- package/dist/cli/commands/registry-prune.js.map +1 -0
- package/dist/cli/commands/restart-self.d.ts +111 -0
- package/dist/cli/commands/restart-self.d.ts.map +1 -0
- package/dist/cli/commands/restart-self.js +312 -0
- package/dist/cli/commands/restart-self.js.map +1 -0
- package/dist/cli/commands/routing-doctor-gh.d.ts +29 -0
- package/dist/cli/commands/routing-doctor-gh.d.ts.map +1 -0
- package/dist/cli/commands/routing-doctor-gh.js +103 -0
- package/dist/cli/commands/routing-doctor-gh.js.map +1 -0
- package/dist/cli/commands/routing-doctor.d.ts +183 -0
- package/dist/cli/commands/routing-doctor.d.ts.map +1 -0
- package/dist/cli/commands/routing-doctor.js +504 -0
- package/dist/cli/commands/routing-doctor.js.map +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +9 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +16 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/env-files.d.ts.map +1 -1
- package/dist/cli/env-files.js +11 -0
- package/dist/cli/env-files.js.map +1 -1
- package/dist/cli/host-prelude.d.ts +50 -0
- package/dist/cli/host-prelude.d.ts.map +1 -0
- package/dist/cli/host-prelude.js +256 -0
- package/dist/cli/host-prelude.js.map +1 -0
- package/dist/cli/index.js +122 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/proc-scan.d.ts +81 -0
- package/dist/cli/proc-scan.d.ts.map +1 -0
- package/dist/cli/proc-scan.js +172 -0
- package/dist/cli/proc-scan.js.map +1 -0
- package/dist/cli/role-settings-model.d.ts +70 -0
- package/dist/cli/role-settings-model.d.ts.map +1 -0
- package/dist/cli/role-settings-model.js +90 -0
- package/dist/cli/role-settings-model.js.map +1 -0
- package/dist/cli/settings-writer.d.ts +27 -0
- package/dist/cli/settings-writer.d.ts.map +1 -1
- package/dist/cli/settings-writer.js +144 -2
- package/dist/cli/settings-writer.js.map +1 -1
- package/package.json +2 -2
- package/plugin/rules/coordination.md +10 -0
- package/plugin/rules/silent-fallback-hazards.md +19 -4
- package/scripts/check-gh-attribution.sh +34 -10
- 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 {
|
|
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
|
-
*
|
|
287
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
-
|
|
308
|
-
|
|
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
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
334
|
-
|
|
335
|
-
|
|
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
|
-
|
|
341
|
-
|
|
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 (
|
|
347
|
-
console.log(` ${
|
|
644
|
+
if (check.detail)
|
|
645
|
+
console.log(` ${check.detail}`);
|
|
348
646
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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 (
|
|
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 =
|
|
361
|
-
? `ℹ ${
|
|
362
|
-
: `⚠ ${
|
|
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
|
|
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":"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"}
|
|
@@ -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"}
|