@mmnto/cli 2.1.0 → 2.2.1
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/commands/doctor-parity-fetch.d.ts +93 -2
- package/dist/commands/doctor-parity-fetch.d.ts.map +1 -1
- package/dist/commands/doctor-parity-fetch.js +332 -11
- package/dist/commands/doctor-parity-fetch.js.map +1 -1
- package/dist/commands/doctor-parity-fetch.test.d.ts +6 -0
- package/dist/commands/doctor-parity-fetch.test.d.ts.map +1 -1
- package/dist/commands/doctor-parity-fetch.test.js +405 -1
- package/dist/commands/doctor-parity-fetch.test.js.map +1 -1
- package/dist/commands/doctor-parity.d.ts.map +1 -1
- package/dist/commands/doctor-parity.js +27 -1
- package/dist/commands/doctor-parity.js.map +1 -1
- package/dist/commands/doctor-parity.test.js +67 -0
- package/dist/commands/doctor-parity.test.js.map +1 -1
- package/dist/commands/eject-gate-needle.test.d.ts +2 -0
- package/dist/commands/eject-gate-needle.test.d.ts.map +1 -0
- package/dist/commands/eject-gate-needle.test.js +48 -0
- package/dist/commands/eject-gate-needle.test.js.map +1 -0
- package/dist/commands/eject.d.ts +10 -0
- package/dist/commands/eject.d.ts.map +1 -1
- package/dist/commands/eject.js +67 -12
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/eject.test.js +113 -0
- package/dist/commands/eject.test.js.map +1 -1
- package/dist/commands/gate-install.d.ts +55 -5
- package/dist/commands/gate-install.d.ts.map +1 -1
- package/dist/commands/gate-install.js +47 -34
- package/dist/commands/gate-install.js.map +1 -1
- package/dist/commands/gate-install.test.js +514 -56
- package/dist/commands/gate-install.test.js.map +1 -1
- package/dist/commands/gate.d.ts +24 -9
- package/dist/commands/gate.d.ts.map +1 -1
- package/dist/commands/gate.js +50 -18
- package/dist/commands/gate.js.map +1 -1
- package/dist/commands/gate.test.js +74 -3
- package/dist/commands/gate.test.js.map +1 -1
- package/dist/commands/host-hooks.d.ts +8 -2
- package/dist/commands/host-hooks.d.ts.map +1 -1
- package/dist/commands/host-hooks.js.map +1 -1
- package/dist/commands/init-templates.d.ts +4 -4
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +243 -63
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +35 -17
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +10 -0
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/session-context-journal-select.test.d.ts +2 -0
- package/dist/commands/session-context-journal-select.test.d.ts.map +1 -0
- package/dist/commands/session-context-journal-select.test.js +95 -0
- package/dist/commands/session-context-journal-select.test.js.map +1 -0
- package/dist/commands/sync-labels-forms.test.d.ts +33 -0
- package/dist/commands/sync-labels-forms.test.d.ts.map +1 -0
- package/dist/commands/sync-labels-forms.test.js +325 -0
- package/dist/commands/sync-labels-forms.test.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ─── Reflex versioning ────────────────────────────────────
|
|
4
4
|
// Bump REFLEX_VERSION whenever the AI_PROMPT_BLOCK content changes materially.
|
|
5
5
|
// This allows `totem init` to detect stale blocks and offer upgrades.
|
|
6
|
-
export const REFLEX_VERSION =
|
|
6
|
+
export const REFLEX_VERSION = 15;
|
|
7
7
|
export const REFLEX_START = '<!-- totem:reflexes:start -->';
|
|
8
8
|
export const REFLEX_END = '<!-- totem:reflexes:end -->';
|
|
9
9
|
export const REFLEX_VERSION_RE = /<!-- totem:reflexes:version:(\d+) -->/;
|
|
@@ -42,6 +42,7 @@ Totem provides CLI commands that map to your development lifecycle. Use them at
|
|
|
42
42
|
3. **Before Push:** Run \`totem lint\` — the deterministic enforcement floor (zero LLM, ~2s). **Before PR:** \`totem review\` runs supplementary AI lanes over the diff (~18s) — advisory sensors, not a merge gate; known limits are disclosed in the run output (LLM window truncation on large diffs; non-code files skipped). Your team's own review discipline decides what constitutes the review of record.
|
|
43
43
|
4. **End of Session:** Run \`totem handoff\` to generate a snapshot for the next agent session with current progress and open threads.
|
|
44
44
|
5. **Managed hooks self-repair:** \`totem init\` distributes \`.totem/prepare.cjs\` and wires \`package.json\` \`prepare\` to it only when no \`prepare\` script exists. The wrapper runs \`totem hook install\` on every \`pnpm install\`, drift-repairing the managed Claude/Gemini hooks — no manual re-install needed.
|
|
45
|
+
6. **Action gates (PreToolUse):** a gate installed with \`totem gate install <event>\` is evaluated by the repo-local \`@mmnto/cli\` first and by a \`totem\` on PATH when that is absent; an applicable gate that neither can evaluate fails closed and its message names the exits. A \`Bash|PowerShell\`-matched gate applies to a fresh clone's bootstrap commands (install, build), so bootstrap such a clone from a terminal outside the harness when no \`totem\` is on PATH (mmnto-ai/totem#2799, mmnto-ai/totem#2822).
|
|
45
46
|
|
|
46
47
|
### Cloud / PR Review Bots
|
|
47
48
|
[FOR CLOUD BOTS ONLY — e.g., Gemini Code Assist, GitHub Copilot PR Review]
|
|
@@ -1195,8 +1196,14 @@ try {
|
|
|
1195
1196
|
describeText = (result.stdout || '') + (result.stderr || '');
|
|
1196
1197
|
process.stdout.write(describeText);
|
|
1197
1198
|
} else {
|
|
1199
|
+
// The notice is printed in exactly the state where a Bash|PowerShell-matched
|
|
1200
|
+
// gate self-blocks (no repo-local CLI), so it names the property and the exit
|
|
1201
|
+
// (mmnto-ai/totem#2822 ask 3): the wrapper's PATH arm usually carries a fresh
|
|
1202
|
+
// clone, and when it cannot, the bootstrap belongs in a real terminal.
|
|
1198
1203
|
process.stdout.write(
|
|
1199
|
-
'[Totem] @mmnto/cli not installed. Run \`pnpm install\` (or your package manager equivalent) to enable session-start orientation
|
|
1204
|
+
'[Totem] @mmnto/cli not installed. Run \`pnpm install\` (or your package manager equivalent) to enable session-start orientation. ' +
|
|
1205
|
+
'If a Bash|PowerShell-matched gate is installed here it applies to the bootstrap commands and falls back to a totem on PATH; ' +
|
|
1206
|
+
'with no totem anywhere, bootstrap this clone from a terminal outside the harness.\\n',
|
|
1200
1207
|
);
|
|
1201
1208
|
}
|
|
1202
1209
|
} catch (err) {
|
|
@@ -1311,7 +1318,9 @@ export const CLAUDE_SESSION_START_ENTRY = {
|
|
|
1311
1318
|
// ONE parameterized PreToolUse wrapper that generalizes the shipped
|
|
1312
1319
|
// `review-gate.sh` content-hash pattern into a reusable form. It reads the
|
|
1313
1320
|
// PreToolUse stdin envelope, shells to `totem gate check --event <name>
|
|
1314
|
-
// --payload
|
|
1321
|
+
// --payload -` with the projected JSON on the child's stdin (never argv: a
|
|
1322
|
+
// Bash command can run to tens of kilobytes and win32 caps a command line at
|
|
1323
|
+
// 32,767 characters), parses the emitted `GateVerdict`, and maps
|
|
1315
1324
|
// `disposition` → host exit code (ADR-109 §2). One wrapper, N gates: each
|
|
1316
1325
|
// installed PreToolUse entry points at this same script with a different
|
|
1317
1326
|
// `--event` arg baked into the `command` string, so new gates need no new
|
|
@@ -1359,15 +1368,82 @@ export const CLAUDE_GATE_WRAPPER = `// [totem] auto-generated — Claude Code ac
|
|
|
1359
1368
|
//
|
|
1360
1369
|
// Exit-code contract (LOAD-BEARING — ADR-109 §2; branch ONLY on disposition):
|
|
1361
1370
|
// 0 = allow | warn | --pilot deny | NOT-APPLICABLE fail-soft
|
|
1362
|
-
// (unparseable/non-object envelope
|
|
1371
|
+
// (unparseable/non-object envelope; freeze-check with no declared
|
|
1372
|
+
// subsystem; transport-shield on a tool other than Bash/PowerShell or
|
|
1373
|
+
// with no non-empty string command)
|
|
1363
1374
|
// 2 = deny (--strict, Claude block convention)
|
|
1364
|
-
// | APPLICABLE-gate-not-evaluable fail-closed (
|
|
1365
|
-
// \`gate check\`, unparseable verdict,
|
|
1375
|
+
// | APPLICABLE-gate-not-evaluable fail-closed (no CLI resolvable
|
|
1376
|
+
// (repo-local, then PATH), non-zero \`gate check\`, unparseable verdict,
|
|
1377
|
+
// or unknown disposition)
|
|
1378
|
+
// | an --event this wrapper has no payload projection for (a baked event
|
|
1379
|
+
// it cannot project is an applicable gate it cannot evaluate)
|
|
1366
1380
|
'use strict';
|
|
1367
1381
|
|
|
1368
1382
|
const { spawnSync } = require('child_process');
|
|
1369
|
-
const { existsSync } = require('fs');
|
|
1370
|
-
const { join } = require('path');
|
|
1383
|
+
const { existsSync, realpathSync } = require('fs');
|
|
1384
|
+
const { basename, delimiter, dirname, join } = require('path');
|
|
1385
|
+
|
|
1386
|
+
// ─── PATH FALLBACK for the Totem CLI (mmnto-ai/totem#2822) ──────────────
|
|
1387
|
+
// A \`Bash|PowerShell\`-matched gate applies to the very commands that CREATE
|
|
1388
|
+
// the repo-local CLI on a fresh clone (\`pnpm install\`, then \`pnpm build\` in
|
|
1389
|
+
// this monorepo), so with a repo-local-only resolution the gate blocks its own
|
|
1390
|
+
// bootstrap — and blocks the cure it prints. This is a RESOLUTION arm, not an
|
|
1391
|
+
// exemption: an applicable gate that cannot be evaluated by EITHER arm still
|
|
1392
|
+
// fails closed (mmnto-ai/totem#2799 ruling, Tenet 4).
|
|
1393
|
+
//
|
|
1394
|
+
// A session started in a fresh worktree has no node_modules at its cwd and
|
|
1395
|
+
// takes this arm; with no global CLI it fails closed — the ruling, not a bug.
|
|
1396
|
+
//
|
|
1397
|
+
// The repo-local pinned dist stays FIRST — the pinned-beats-ambient ordering of
|
|
1398
|
+
// ADR-072 § 2; tiers 1, 3 and 5 are out of scope for a hook that must not shell
|
|
1399
|
+
// out. This runs only when the pinned dist is absent. Two npm-global layouts
|
|
1400
|
+
// are probed per PATH dir, first hit wins:
|
|
1401
|
+
// (a) <dir>/node_modules/@mmnto/cli/dist/index.js — the win32 layout, where
|
|
1402
|
+
// the \`totem.cmd\` shim sits beside \`node_modules\`;
|
|
1403
|
+
// (b) <dir>/totem realpath'd — the POSIX npm-global symlink, taken only when
|
|
1404
|
+
// it resolves to an existing \`.js\` file (a shell shim resolves to an
|
|
1405
|
+
// extensionless script and is correctly skipped).
|
|
1406
|
+
// A dir that yields neither is skipped; nothing here throws.
|
|
1407
|
+
//
|
|
1408
|
+
// PATH is trusted here at exactly the level \`node\` itself already is: the
|
|
1409
|
+
// settings.json entry invokes this hook as a bare \`node\`, so whoever controls
|
|
1410
|
+
// PATH controls the interpreter before this line ever runs.
|
|
1411
|
+
//
|
|
1412
|
+
// Returns { entry, display }: \`entry\` is the absolute path to spawn, \`display\`
|
|
1413
|
+
// a NON-resolvable rendering (basenames only) for the stderr provenance line —
|
|
1414
|
+
// hook stderr lands in transcripts that get pasted into issues, so it never
|
|
1415
|
+
// carries a user-profile path.
|
|
1416
|
+
function resolveCliFromPath() {
|
|
1417
|
+
const raw = typeof process.env.PATH === 'string' ? process.env.PATH : '';
|
|
1418
|
+
const dirs = raw.split(delimiter);
|
|
1419
|
+
for (let i = 0; i < dirs.length; i++) {
|
|
1420
|
+
const dir = dirs[i];
|
|
1421
|
+
if (!dir) continue;
|
|
1422
|
+
const packaged = join(dir, 'node_modules', '@mmnto', 'cli', 'dist', 'index.js');
|
|
1423
|
+
if (existsSync(packaged)) {
|
|
1424
|
+
return {
|
|
1425
|
+
entry: packaged,
|
|
1426
|
+
display: basename(dir) + '/node_modules/@mmnto/cli/dist/index.js',
|
|
1427
|
+
};
|
|
1428
|
+
}
|
|
1429
|
+
const shim = join(dir, 'totem');
|
|
1430
|
+
if (existsSync(shim)) {
|
|
1431
|
+
try {
|
|
1432
|
+
const real = realpathSync(shim);
|
|
1433
|
+
if (typeof real === 'string' && real.endsWith('.js') && existsSync(real)) {
|
|
1434
|
+
return {
|
|
1435
|
+
entry: real,
|
|
1436
|
+
display:
|
|
1437
|
+
basename(dir) + '/totem -> ' + basename(dirname(real)) + '/' + basename(real),
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1440
|
+
} catch (err) {
|
|
1441
|
+
// An unreadable link is not a resolution — keep scanning the PATH.
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
return null;
|
|
1446
|
+
}
|
|
1371
1447
|
|
|
1372
1448
|
// ─── Parse baked args (--event <name>, optional --pilot / --strict) ─────
|
|
1373
1449
|
// The tier is read ONLY from argv (baked into the installed command at
|
|
@@ -1418,68 +1494,159 @@ process.stdin.on('end', () => {
|
|
|
1418
1494
|
const input =
|
|
1419
1495
|
typeof parsed.tool_input === 'object' && parsed.tool_input !== null ? parsed.tool_input : {};
|
|
1420
1496
|
|
|
1421
|
-
// ───
|
|
1422
|
-
//
|
|
1423
|
-
//
|
|
1424
|
-
//
|
|
1425
|
-
//
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1497
|
+
// ─── PER-EVENT PAYLOAD PROJECTION ─────────────────────────────────────
|
|
1498
|
+
// Each gate reads a DIFFERENT slice of the PreToolUse envelope, so the
|
|
1499
|
+
// projection branches on the baked --event. Every branch owns its own
|
|
1500
|
+
// NOT-APPLICABLE test — the point past which a gate genuinely applies and
|
|
1501
|
+
// any evaluation failure must fail CLOSED.
|
|
1502
|
+
//
|
|
1503
|
+
// event | applies when | payload
|
|
1504
|
+
// -----------------|----------------------------------|---------------------------
|
|
1505
|
+
// freeze-check | tool_input.subsystem is a | { subsystem }
|
|
1506
|
+
// | non-empty string |
|
|
1507
|
+
// transport-shield | tool_name is Bash or PowerShell | { tool, command, platform }
|
|
1508
|
+
// | AND tool_input.command is a |
|
|
1509
|
+
// | non-empty string |
|
|
1510
|
+
// (anything else) | — no projection → fail closed | —
|
|
1511
|
+
let payload = '';
|
|
1512
|
+
|
|
1513
|
+
if (event === 'freeze-check') {
|
|
1514
|
+
// THE EMPTY-SUBSYSTEM GUARDRAIL: freeze-check's predicate is on a DECLARED
|
|
1515
|
+
// subsystem. A normal Edit/Write carries tool_input.file_path (a path), NOT
|
|
1516
|
+
// a subsystem. With no declared subsystem, NO GATE APPLIES → pass through
|
|
1517
|
+
// (exit 0). Do NOT shell out — a blanket fail-closed here would block every
|
|
1518
|
+
// ordinary edit.
|
|
1519
|
+
const declaredSubsystem =
|
|
1520
|
+
typeof input.subsystem === 'string' && input.subsystem.trim() !== ''
|
|
1521
|
+
? input.subsystem.trim()
|
|
1522
|
+
: '';
|
|
1523
|
+
if (declaredSubsystem === '') {
|
|
1524
|
+
process.exit(0);
|
|
1525
|
+
}
|
|
1526
|
+
payload = JSON.stringify({ subsystem: declaredSubsystem });
|
|
1527
|
+
} else if (event === 'transport-shield') {
|
|
1528
|
+
// transport-shield's predicate is on a SHELL COMMAND. Anything that is not
|
|
1529
|
+
// a Bash/PowerShell invocation carrying a command string is NOT an
|
|
1530
|
+
// applicable gate → pass through (exit 0), mirroring the guardrail above.
|
|
1531
|
+
// The installed matcher is the CLI's own, so a foreign tool_name here means
|
|
1532
|
+
// a hand-edited settings entry, not a shape to judge.
|
|
1533
|
+
const tool = parsed.tool_name;
|
|
1534
|
+
if (tool !== 'Bash' && tool !== 'PowerShell') {
|
|
1535
|
+
process.exit(0);
|
|
1536
|
+
}
|
|
1537
|
+
if (typeof input.command !== 'string' || input.command.trim() === '') {
|
|
1538
|
+
process.exit(0);
|
|
1539
|
+
}
|
|
1540
|
+
payload = JSON.stringify({
|
|
1541
|
+
tool: tool,
|
|
1542
|
+
command: input.command,
|
|
1543
|
+
platform: process.platform,
|
|
1544
|
+
});
|
|
1545
|
+
} else {
|
|
1546
|
+
// A baked --event this wrapper cannot project is an APPLICABLE gate it
|
|
1547
|
+
// cannot evaluate → fail closed (ADR-109). Reinstalling refreshes the
|
|
1548
|
+
// wrapper (\`totem gate install\` drift-repairs the bounded region).
|
|
1549
|
+
process.stderr.write(
|
|
1550
|
+
'[totem gate-wrapper] no payload projection for event "' + event + '"; failing closed.\\n',
|
|
1551
|
+
);
|
|
1552
|
+
process.exit(2);
|
|
1432
1553
|
}
|
|
1433
1554
|
|
|
1434
|
-
//
|
|
1435
|
-
//
|
|
1436
|
-
//
|
|
1437
|
-
//
|
|
1438
|
-
//
|
|
1439
|
-
const payload = JSON.stringify({ subsystem: declaredSubsystem });
|
|
1440
|
-
|
|
1441
|
-
// Resolve the LOCAL Totem CLI (the global \`totem\` binary may be stale and
|
|
1442
|
-
// missing deps — the known repo gotcha). Invoke node on the installed dist
|
|
1443
|
-
// entry.
|
|
1555
|
+
// Resolve the Totem CLI: the repo-local pinned dist FIRST (a global \`totem\`
|
|
1556
|
+
// may be stale and missing deps — the known repo gotcha; the
|
|
1557
|
+
// pinned-beats-ambient ordering of ADR-072 § 2, Tenet 14), then a \`totem\` on
|
|
1558
|
+
// PATH as a FALLBACK (mmnto-ai/totem#2822 — the bootstrap self-block above).
|
|
1559
|
+
// Invoke node on whichever dist entry resolved.
|
|
1444
1560
|
//
|
|
1445
|
-
// FAIL-CLOSED
|
|
1446
|
-
//
|
|
1447
|
-
//
|
|
1448
|
-
//
|
|
1449
|
-
//
|
|
1450
|
-
//
|
|
1451
|
-
//
|
|
1452
|
-
//
|
|
1453
|
-
|
|
1454
|
-
|
|
1561
|
+
// FAIL-CLOSED when NEITHER arm resolves: we are PAST the per-event
|
|
1562
|
+
// applicability guardrail (freeze-check: a declared subsystem;
|
|
1563
|
+
// transport-shield: a Bash or PowerShell command), so a gate genuinely
|
|
1564
|
+
// APPLIES here. Neither gate has a commit-time hard floor (unlike
|
|
1565
|
+
// PreWriteShield, whose fail-soft is backed by \`totem-lint\` at commit), so an
|
|
1566
|
+
// APPLICABLE gate that cannot be evaluated for ANY reason (no CLI anywhere OR
|
|
1567
|
+
// a broken source) must fail closed — not silently allow (guardrail rule +
|
|
1568
|
+
// Tenet 4 fail-closed). Fail-SOFT (exit 0) is reserved for genuinely
|
|
1569
|
+
// NOT-APPLICABLE inputs (unparseable/non-object envelope, no declared
|
|
1570
|
+
// subsystem, no shell command), all of which already returned above.
|
|
1571
|
+
const localCliPath = join(process.cwd(), 'node_modules', '@mmnto', 'cli', 'dist', 'index.js');
|
|
1572
|
+
let cliPath = '';
|
|
1573
|
+
// Which arm resolved — 'repo-local' or 'PATH' — for the provenance line the
|
|
1574
|
+
// fail-closed arms below disclose. Empty until one resolves.
|
|
1575
|
+
let arm = '';
|
|
1576
|
+
// The PATH arm's non-resolvable rendering of what it found (basenames only).
|
|
1577
|
+
let cliDisplay = '';
|
|
1578
|
+
if (existsSync(localCliPath)) {
|
|
1579
|
+
cliPath = localCliPath;
|
|
1580
|
+
arm = 'repo-local';
|
|
1581
|
+
} else {
|
|
1582
|
+
const fromPath = resolveCliFromPath();
|
|
1583
|
+
if (fromPath) {
|
|
1584
|
+
cliPath = fromPath.entry;
|
|
1585
|
+
cliDisplay = fromPath.display;
|
|
1586
|
+
arm = 'PATH';
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
if (!cliPath) {
|
|
1591
|
+
// The exits named here must be exits the gate does NOT block: "reinstall
|
|
1592
|
+
// totem" and \`totem eject\` are Bash commands a Bash|PowerShell gate blocks
|
|
1593
|
+
// with this very message (mmnto-ai/totem#2822). They are ORDERED: the
|
|
1594
|
+
// editor path still needs the bootstrap before the gate can be reinstalled.
|
|
1455
1595
|
process.stderr.write(
|
|
1456
1596
|
'[totem gate] ' +
|
|
1457
1597
|
event +
|
|
1458
|
-
' applies but
|
|
1459
|
-
'
|
|
1598
|
+
' applies but no totem CLI is resolvable ' +
|
|
1599
|
+
'(repo-local node_modules/@mmnto/cli/dist/index.js absent; no totem on PATH); ' +
|
|
1600
|
+
'failing closed. Exits: bootstrap from a terminal OUTSIDE the harness ' +
|
|
1601
|
+
'(pnpm install and pnpm build, or npm i -g @mmnto/cli); or remove this ' +
|
|
1602
|
+
"gate's entry from .claude/settings.json with the editor, bootstrap, " +
|
|
1603
|
+
'then re-run totem gate install ' +
|
|
1604
|
+
event +
|
|
1605
|
+
'.\\n',
|
|
1460
1606
|
);
|
|
1461
1607
|
process.exit(2);
|
|
1462
1608
|
}
|
|
1463
1609
|
|
|
1610
|
+
// The payload rides on the child's STDIN (\`--payload -\`), never argv: a Bash
|
|
1611
|
+
// command can run to tens of kilobytes and win32 caps a command line at
|
|
1612
|
+
// 32,767 characters — an argv payload past it fails the spawn with
|
|
1613
|
+
// ENAMETOOLONG and would land in the fail-closed arm below with nothing
|
|
1614
|
+
// broken (mmnto-ai/totem#2799, pass 3).
|
|
1464
1615
|
const result = spawnSync(
|
|
1465
1616
|
process.execPath,
|
|
1466
|
-
[cliPath, 'gate', 'check', '--event', event, '--payload',
|
|
1467
|
-
{ encoding: 'utf-8', timeout: 30000 },
|
|
1617
|
+
[cliPath, 'gate', 'check', '--event', event, '--payload', '-'],
|
|
1618
|
+
{ encoding: 'utf-8', timeout: 30000, input: payload },
|
|
1468
1619
|
);
|
|
1469
1620
|
|
|
1621
|
+
// Provenance for the PATH fallback arm (mmnto-ai/totem#2822): a CLI older
|
|
1622
|
+
// than 2.2.0 has no \`gate check --payload -\` and lands in the fail-closed
|
|
1623
|
+
// arms below (unknown option → non-zero exit, or nothing on stdout). The
|
|
1624
|
+
// BEHAVIOUR is unchanged — exit 2 either way — the line only names WHICH CLI
|
|
1625
|
+
// evaluated and how to update it. Empty on the repo-local arm. It prints the
|
|
1626
|
+
// basename rendering, never the absolute entry: this is transcript-bound text.
|
|
1627
|
+
const armNote =
|
|
1628
|
+
arm === 'PATH'
|
|
1629
|
+
? 'evaluated by the PATH CLI at ' +
|
|
1630
|
+
cliDisplay +
|
|
1631
|
+
"; a CLI older than 2.2.0 lacks 'gate check --payload -' — " +
|
|
1632
|
+
'update it: npm i -g @mmnto/cli@latest\\n'
|
|
1633
|
+
: '';
|
|
1634
|
+
|
|
1470
1635
|
// ─── FAIL-CLOSED ──────────────────────────────────────────────────────
|
|
1471
|
-
// A gate genuinely applies (
|
|
1472
|
-
//
|
|
1473
|
-
//
|
|
1474
|
-
//
|
|
1475
|
-
//
|
|
1636
|
+
// A gate genuinely applies (the per-event projection above found its input:
|
|
1637
|
+
// a declared subsystem, or a Bash/PowerShell command) and the evaluation
|
|
1638
|
+
// itself failed (non-zero exit: corrupt freeze.json, an invalid payload,
|
|
1639
|
+
// spawn error, etc.). Never silently allow when an applicable gate's source
|
|
1640
|
+
// is broken → exit 2. (Not-applicable envelopes already returned exit 0
|
|
1641
|
+
// above, so this only blocks when the gate's input was actually present.)
|
|
1476
1642
|
if (result.error || typeof result.status !== 'number' || result.status !== 0) {
|
|
1477
1643
|
process.stderr.write(
|
|
1478
1644
|
'[totem gate-wrapper] gate "' +
|
|
1479
1645
|
event +
|
|
1480
1646
|
'" evaluation failed (source broken or unavailable) — blocking (fail-closed).\\n' +
|
|
1481
1647
|
(result.stderr || (result.error ? String(result.error.message || result.error) : '')) +
|
|
1482
|
-
'\\n'
|
|
1648
|
+
'\\n' +
|
|
1649
|
+
armNote,
|
|
1483
1650
|
);
|
|
1484
1651
|
process.exit(2);
|
|
1485
1652
|
}
|
|
@@ -1491,7 +1658,7 @@ process.stdin.on('end', () => {
|
|
|
1491
1658
|
// The command emitted unparseable stdout despite a 0 exit — an applicable
|
|
1492
1659
|
// gate whose verdict we cannot read is a broken source → fail-closed.
|
|
1493
1660
|
process.stderr.write(
|
|
1494
|
-
'[totem gate-wrapper] gate "' + event + '" emitted unparseable verdict — blocking (fail-closed).\\n',
|
|
1661
|
+
'[totem gate-wrapper] gate "' + event + '" emitted unparseable verdict — blocking (fail-closed).\\n' + armNote,
|
|
1495
1662
|
);
|
|
1496
1663
|
process.exit(2);
|
|
1497
1664
|
}
|
|
@@ -1504,6 +1671,10 @@ process.stdin.on('end', () => {
|
|
|
1504
1671
|
(verdict && verdict.provenance ? ' [' + JSON.stringify(verdict.provenance) + ']' : '');
|
|
1505
1672
|
|
|
1506
1673
|
if (disposition === 'allow') {
|
|
1674
|
+
// Deliberately SILENT on the PATH arm too: a provenance line on every
|
|
1675
|
+
// allowed Bash command would be transcript noise on the common path, and
|
|
1676
|
+
// the operator already learned the property at install time (the
|
|
1677
|
+
// \`gate install\` disclosure) — stderr here is reserved for what blocks.
|
|
1507
1678
|
process.exit(0);
|
|
1508
1679
|
}
|
|
1509
1680
|
if (disposition === 'warn') {
|
|
@@ -1515,29 +1686,38 @@ process.stdin.on('end', () => {
|
|
|
1515
1686
|
process.exit(tier === 'pilot' ? 0 : 2);
|
|
1516
1687
|
}
|
|
1517
1688
|
|
|
1518
|
-
// Unknown disposition from an applicable gate — fail-closed.
|
|
1689
|
+
// Unknown disposition from an applicable gate — fail-closed. The provenance
|
|
1690
|
+
// note rides here too, so all four not-evaluable causes in the exit-code
|
|
1691
|
+
// contract above disclose which arm evaluated.
|
|
1519
1692
|
process.stderr.write(
|
|
1520
|
-
'[totem gate-wrapper] gate "' + event + '" returned unknown disposition "' + disposition + '" — blocking (fail-closed).\\n',
|
|
1693
|
+
'[totem gate-wrapper] gate "' + event + '" returned unknown disposition "' + disposition + '" — blocking (fail-closed).\\n' + armNote,
|
|
1521
1694
|
);
|
|
1522
1695
|
process.exit(2);
|
|
1523
1696
|
});
|
|
1524
1697
|
${TOTEM_FILE_END}
|
|
1525
1698
|
`;
|
|
1526
|
-
// The PreToolUse entry constant for the freeze-check gate
|
|
1527
|
-
//
|
|
1528
|
-
//
|
|
1529
|
-
//
|
|
1530
|
-
//
|
|
1531
|
-
//
|
|
1532
|
-
// (
|
|
1699
|
+
// The PreToolUse entry constant for the freeze-check gate — the EXEMPLAR of the
|
|
1700
|
+
// installed shape, not a template every gate is stamped from. The \`--event\` is
|
|
1701
|
+
// baked into the command string per-entry (one wrapper, N gates = N entries
|
|
1702
|
+
// pointing at the same script with different --event args).
|
|
1703
|
+
//
|
|
1704
|
+
// SOURCE OF TRUTH for the MATCHER is the core gate registry
|
|
1705
|
+
// (mmnto-ai/totem#2799): \`knownGates()\` carries each gate's own matcher, the
|
|
1706
|
+
// caller resolves it, and \`gateEntry()\` writes THAT — freeze-check under
|
|
1707
|
+
// \`Write|Edit\` (so the wrapper sees every write; the empty-subsystem guardrail
|
|
1708
|
+
// is what keeps ordinary edits passing through), transport-shield under
|
|
1709
|
+
// \`Bash|PowerShell\`. This constant stays the \`Write|Edit\` freeze-check
|
|
1710
|
+
// exemplar and is never consulted for another gate's matcher.
|
|
1533
1711
|
//
|
|
1534
1712
|
// SOURCE OF TRUTH for the ACTUAL installed command is
|
|
1535
1713
|
// gate-install.ts \`gateCommand(event, tier)\` — it builds the per-gate,
|
|
1536
1714
|
// per-tier string at install time. This constant supplies ONLY the canonical
|
|
1537
|
-
//
|
|
1538
|
-
// here
|
|
1539
|
-
// tier) so a reader sees exactly what a default
|
|
1540
|
-
// not a tier-less never-installed
|
|
1715
|
+
// hook \`type\` (the one field \`gateEntry()\` still reads); its \`matcher\` and
|
|
1716
|
+
// \`command\` here mirror the DEFAULT freeze-check install (at the default
|
|
1717
|
+
// \`--strict\` tier) so a reader sees exactly what a default
|
|
1718
|
+
// \`totem gate install freeze-check\` bakes, not a tier-less never-installed
|
|
1719
|
+
// string. Installed into committed \`.claude/settings.json\` (team-level
|
|
1720
|
+
// governance — gate opt-in is repo policy, Tenet 12).
|
|
1541
1721
|
export const CLAUDE_GATE_WRAPPER_ENTRY = {
|
|
1542
1722
|
matcher: 'Write|Edit',
|
|
1543
1723
|
hooks: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1604,18 +1604,22 @@ export default {
|
|
|
1604
1604
|
// --- Always run: action-gate install (--gates=, PR-C mmnto-ai/totem#2048) ---
|
|
1605
1605
|
// Thin sugar that is INTENTIONALLY outside the bare-mode branch: gate
|
|
1606
1606
|
// opt-in is an independent, explicit flag (it works in bare repos too).
|
|
1607
|
-
// Parses the comma-list (or `all`),
|
|
1608
|
-
//
|
|
1609
|
-
//
|
|
1610
|
-
// the merge logic.
|
|
1607
|
+
// Parses the comma-list (or `all`), resolves each member against the core
|
|
1608
|
+
// registry via resolveGates() (fail loud on unknown; the gate's PreToolUse
|
|
1609
|
+
// matcher comes back with it), and routes through the SAME installGates()
|
|
1610
|
+
// path the `gate install` verb uses — no second copy of the merge logic.
|
|
1611
1611
|
if (options?.gates) {
|
|
1612
|
-
const {
|
|
1613
|
-
const { installGates } = await import('./gate-install.js');
|
|
1612
|
+
const { resolveGates } = await import('./gate.js');
|
|
1613
|
+
const { bashMatchedGateDisclosure, installGates } = await import('./gate-install.js');
|
|
1614
1614
|
const { TotemError, knownGateEvents } = await import('@mmnto/totem');
|
|
1615
1615
|
const requested = options.gates.trim();
|
|
1616
|
-
|
|
1616
|
+
// `{ event, matcher }` pairs, resolved through the core registry by
|
|
1617
|
+
// `resolveGates` — the same source `gate install` reads, so init can never
|
|
1618
|
+
// install a gate under a matcher the registry does not declare
|
|
1619
|
+
// (mmnto-ai/totem#2799).
|
|
1620
|
+
let gates;
|
|
1617
1621
|
if (requested.toLowerCase() === 'all') {
|
|
1618
|
-
|
|
1622
|
+
gates = [...(await resolveGates({ all: true }))];
|
|
1619
1623
|
}
|
|
1620
1624
|
else {
|
|
1621
1625
|
const names = requested
|
|
@@ -1624,30 +1628,30 @@ export default {
|
|
|
1624
1628
|
.filter((n) => n.length > 0);
|
|
1625
1629
|
// Empty after parse/trim/filter (e.g. `--gates=,` or whitespace-only):
|
|
1626
1630
|
// fail loud rather than scaffolding an orphan wrapper with no entry.
|
|
1627
|
-
// Restores parity with the verb's
|
|
1628
|
-
//
|
|
1631
|
+
// Restores parity with the verb's resolveGates no-selection fail-loud
|
|
1632
|
+
// (no default-install).
|
|
1629
1633
|
if (names.length === 0) {
|
|
1630
1634
|
throw new TotemError('GATE_INVALID', 'No gate selected in --gates=.', `Pass --gates=all or one of: ${knownGateEvents().join(', ')}.`);
|
|
1631
1635
|
}
|
|
1632
|
-
|
|
1636
|
+
gates = [];
|
|
1633
1637
|
for (const name of names) {
|
|
1634
|
-
//
|
|
1635
|
-
//
|
|
1636
|
-
const [validated] = await
|
|
1637
|
-
//
|
|
1638
|
+
// resolveGates validates a single name against the registry and
|
|
1639
|
+
// throws (fail-loud) on unknown — no default-install.
|
|
1640
|
+
const [validated] = await resolveGates({ name });
|
|
1641
|
+
// resolveGates returns a non-empty array or throws, so this
|
|
1638
1642
|
// never fires today — but guard explicitly (no fragile `!`): fail
|
|
1639
1643
|
// loud rather than push `undefined` if it ever returns empty.
|
|
1640
1644
|
if (!validated) {
|
|
1641
1645
|
throw new TotemError('GATE_INVALID', `Gate "${name}" did not resolve.`, 'This is an internal error — the gate registry returned no event for a validated name.');
|
|
1642
1646
|
}
|
|
1643
|
-
|
|
1647
|
+
gates.push(validated);
|
|
1644
1648
|
}
|
|
1645
1649
|
}
|
|
1646
1650
|
// Tier is derived from the existing init options (pilot vs strict) and
|
|
1647
1651
|
// BAKED into the installed command at install time (the wrapper reads it
|
|
1648
1652
|
// ONLY from argv — no env override). Default install bakes --strict.
|
|
1649
1653
|
const gateTier = options?.pilot ? 'pilot' : 'strict';
|
|
1650
|
-
const gateResults = installGates(cwd,
|
|
1654
|
+
const gateResults = installGates(cwd, gates, gateTier);
|
|
1651
1655
|
for (const result of gateResults) {
|
|
1652
1656
|
if (result.err) {
|
|
1653
1657
|
log.error('Totem Error', `Gate install failed for ${result.file}: ${result.err}`);
|
|
@@ -1673,6 +1677,20 @@ export default {
|
|
|
1673
1677
|
});
|
|
1674
1678
|
}
|
|
1675
1679
|
}
|
|
1680
|
+
// ─── Shell-matcher disclosure (mmnto-ai/totem#2822) ───────────────
|
|
1681
|
+
// The `gate install` verb prints this for a Bash-matched gate; init
|
|
1682
|
+
// installs through the SAME installer but prints its own rows, so
|
|
1683
|
+
// without this the property is silently dropped on the `--gates=` path.
|
|
1684
|
+
// Driven off the resolved specs (one line per gate, not per result row)
|
|
1685
|
+
// and suppressed for a gate whose install actually errored.
|
|
1686
|
+
const failedGates = new Set(gateResults.filter((result) => result.err && result.event).map((result) => result.event));
|
|
1687
|
+
for (const gate of gates) {
|
|
1688
|
+
if (failedGates.has(gate.event))
|
|
1689
|
+
continue;
|
|
1690
|
+
const disclosure = bashMatchedGateDisclosure(gate);
|
|
1691
|
+
if (disclosure)
|
|
1692
|
+
log.dim('Totem', disclosure);
|
|
1693
|
+
}
|
|
1676
1694
|
}
|
|
1677
1695
|
// --- Print summary ---
|
|
1678
1696
|
if (summary.length > 0) {
|