@mmnto/cli 1.9.0 → 1.10.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/add-lesson.d.ts.map +1 -1
- package/dist/commands/add-lesson.js +5 -1
- package/dist/commands/add-lesson.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +4 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/extract-local.d.ts +6 -0
- package/dist/commands/extract-local.d.ts.map +1 -0
- package/dist/commands/extract-local.js +134 -0
- package/dist/commands/extract-local.js.map +1 -0
- package/dist/commands/extract-pr.d.ts +19 -0
- package/dist/commands/extract-pr.d.ts.map +1 -0
- package/dist/commands/extract-pr.js +193 -0
- package/dist/commands/extract-pr.js.map +1 -0
- package/dist/commands/extract-scan.d.ts +6 -0
- package/dist/commands/extract-scan.d.ts.map +1 -0
- package/dist/commands/extract-scan.js +100 -0
- package/dist/commands/extract-scan.js.map +1 -0
- package/dist/commands/extract-shared.d.ts +29 -0
- package/dist/commands/extract-shared.d.ts.map +1 -0
- package/dist/commands/extract-shared.js +351 -0
- package/dist/commands/extract-shared.js.map +1 -0
- package/dist/commands/extract-templates.d.ts +1 -0
- package/dist/commands/extract-templates.d.ts.map +1 -1
- package/dist/commands/extract-templates.js +33 -0
- package/dist/commands/extract-templates.js.map +1 -1
- package/dist/commands/extract.d.ts +7 -36
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +44 -588
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/extract.test.js +103 -2
- package/dist/commands/extract.test.js.map +1 -1
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +85 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +54 -1
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/install-hooks.d.ts +17 -7
- package/dist/commands/install-hooks.d.ts.map +1 -1
- package/dist/commands/install-hooks.js +123 -34
- package/dist/commands/install-hooks.js.map +1 -1
- package/dist/commands/install-hooks.test.js +136 -24
- package/dist/commands/install-hooks.test.js.map +1 -1
- package/dist/commands/review-alias.test.js +9 -15
- package/dist/commands/review-alias.test.js.map +1 -1
- package/dist/commands/shield.d.ts.map +1 -1
- package/dist/commands/shield.js +12 -1
- package/dist/commands/shield.js.map +1 -1
- package/dist/commands/shield.test.js +37 -0
- package/dist/commands/shield.test.js.map +1 -1
- package/dist/commands/spec.d.ts +6 -0
- package/dist/commands/spec.d.ts.map +1 -1
- package/dist/commands/spec.js +11 -1
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/spec.test.js +25 -1
- package/dist/commands/spec.test.js.map +1 -1
- package/dist/exemptions/__tests__/exemption-engine.test.js +9 -0
- package/dist/exemptions/__tests__/exemption-engine.test.js.map +1 -1
- package/dist/exemptions/exemption-engine.js +1 -1
- package/dist/exemptions/exemption-engine.js.map +1 -1
- package/dist/exemptions/exemption-schema.d.ts +6 -6
- package/dist/hooks/auto-context.d.ts.map +1 -1
- package/dist/hooks/auto-context.js +2 -19
- package/dist/hooks/auto-context.js.map +1 -1
- package/dist/index.js +33 -9
- package/dist/index.js.map +1 -1
- package/dist/schemas/handoff-checkpoint.d.ts +2 -2
- package/dist/utils/pilot.d.ts +44 -0
- package/dist/utils/pilot.d.ts.map +1 -0
- package/dist/utils/pilot.js +141 -0
- package/dist/utils/pilot.js.map +1 -0
- package/dist/utils/pilot.test.d.ts +2 -0
- package/dist/utils/pilot.test.d.ts.map +1 -0
- package/dist/utils/pilot.test.js +166 -0
- package/dist/utils/pilot.test.js.map +1 -0
- package/dist/utils.d.ts +8 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +27 -15
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.js +88 -2
- package/dist/utils.test.js.map +1 -1
- package/package.json +5 -3
|
@@ -100,13 +100,13 @@ fi
|
|
|
100
100
|
* These scripts contain the full guard logic (diff checks, null-SHA guards) that
|
|
101
101
|
* bare inline commands would skip.
|
|
102
102
|
*/
|
|
103
|
-
export function generateHookHelpers(gitRoot, fallbackCmd) {
|
|
103
|
+
export function generateHookHelpers(gitRoot, fallbackCmd, options) {
|
|
104
104
|
const hooksDir = path.join(gitRoot, '.totem', 'hooks');
|
|
105
105
|
fs.mkdirSync(hooksDir, { recursive: true });
|
|
106
106
|
const postMerge = buildHookContent(fallbackCmd);
|
|
107
107
|
const postCheckout = buildPostCheckoutHookContent(fallbackCmd);
|
|
108
|
-
const preCommit = buildPreCommitHook();
|
|
109
|
-
const prePush = buildPrePushHook(fallbackCmd);
|
|
108
|
+
const preCommit = buildPreCommitHook(options?.tier);
|
|
109
|
+
const prePush = buildPrePushHook(fallbackCmd, options?.tier);
|
|
110
110
|
fs.writeFileSync(path.join(hooksDir, 'post-merge.sh'), postMerge, { mode: 0o755 });
|
|
111
111
|
fs.writeFileSync(path.join(hooksDir, 'post-checkout.sh'), postCheckout, { mode: 0o755 });
|
|
112
112
|
fs.writeFileSync(path.join(hooksDir, 'pre-commit.sh'), preCommit, { mode: 0o755 });
|
|
@@ -181,7 +181,7 @@ function printHookManagerGuidance(manager) {
|
|
|
181
181
|
break;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
export async function installPostMergeHook(cwd, rl) {
|
|
184
|
+
export async function installPostMergeHook(cwd, rl, options) {
|
|
185
185
|
// Guard: must be a git repo — resolve root from any subdirectory
|
|
186
186
|
const gitRoot = resolveGitRoot(cwd);
|
|
187
187
|
if (!gitRoot) {
|
|
@@ -191,7 +191,7 @@ export async function installPostMergeHook(cwd, rl) {
|
|
|
191
191
|
const fallbackCmd = getFallbackCommand(gitRoot);
|
|
192
192
|
const manager = detectHookManager(gitRoot);
|
|
193
193
|
if (manager) {
|
|
194
|
-
generateHookHelpers(gitRoot, fallbackCmd);
|
|
194
|
+
generateHookHelpers(gitRoot, fallbackCmd, options);
|
|
195
195
|
printHookManagerGuidance(manager);
|
|
196
196
|
return;
|
|
197
197
|
}
|
|
@@ -229,11 +229,31 @@ export async function installPostMergeHook(cwd, rl) {
|
|
|
229
229
|
}
|
|
230
230
|
console.log('[Totem] Installed post-merge hook.');
|
|
231
231
|
}
|
|
232
|
+
// ─── Agent detection snippet (POSIX-compliant) ─────────
|
|
233
|
+
function buildAgentDetectionBlock() {
|
|
234
|
+
return `# Agent detection — strict enforcement for AI agents
|
|
235
|
+
is_agent=0
|
|
236
|
+
if [ -n "$CLAUDE_CODE_AGENT" ] || [ -n "$CLAUDE_VERSION" ] || [ -n "$CURSOR_TRACE_ID" ]; then
|
|
237
|
+
is_agent=1
|
|
238
|
+
fi`;
|
|
239
|
+
}
|
|
232
240
|
// ─── Enforcement hooks (pre-commit + pre-push) ──────────
|
|
233
|
-
export function buildPreCommitHook() {
|
|
241
|
+
export function buildPreCommitHook(tier) {
|
|
242
|
+
const effectiveTier = tier ?? 'standard';
|
|
243
|
+
const strictBlock = `
|
|
244
|
+
# Strict mode: require spec before commit
|
|
245
|
+
if [ "$is_agent" = "1" ] || [ "$TOTEM_HOOK_TIER" = "strict" ]; then
|
|
246
|
+
if [ ! -f ".totem/cache/.spec-completed" ]; then
|
|
247
|
+
echo "[Totem] BLOCKED: Run 'totem spec <issue>' before committing (strict mode)"
|
|
248
|
+
exit 1
|
|
249
|
+
fi
|
|
250
|
+
fi`;
|
|
234
251
|
return `#!/bin/sh
|
|
235
252
|
# ${TOTEM_PRECOMMIT_MARKER} — block direct commits to protected branches.
|
|
236
253
|
# Override with: git commit --no-verify
|
|
254
|
+
TOTEM_HOOK_TIER="${effectiveTier}"
|
|
255
|
+
|
|
256
|
+
${buildAgentDetectionBlock()}
|
|
237
257
|
|
|
238
258
|
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
239
259
|
if [ "$branch" = "main" ] || [ "$branch" = "master" ]; then
|
|
@@ -242,11 +262,22 @@ if [ "$branch" = "main" ] || [ "$branch" = "master" ]; then
|
|
|
242
262
|
echo "[Totem] Override with: git commit --no-verify"
|
|
243
263
|
exit 1
|
|
244
264
|
fi
|
|
265
|
+
${strictBlock}
|
|
245
266
|
`;
|
|
246
267
|
}
|
|
247
|
-
export function buildPrePushHook(fallbackCmd) {
|
|
268
|
+
export function buildPrePushHook(fallbackCmd, tier) {
|
|
269
|
+
const effectiveTier = tier ?? 'standard';
|
|
270
|
+
const shieldBlock = `
|
|
271
|
+
# Strict mode: require shield pass before push
|
|
272
|
+
if [ "$is_agent" = "1" ] || [ "$TOTEM_HOOK_TIER" = "strict" ]; then
|
|
273
|
+
echo "[Totem] Running shield gate (strict mode)..."
|
|
274
|
+
$TOTEM_CMD review || exit 1
|
|
275
|
+
fi`;
|
|
248
276
|
return `#!/bin/sh
|
|
249
277
|
# ${TOTEM_PREPUSH_MARKER} — stateless enforcement.
|
|
278
|
+
TOTEM_HOOK_TIER="${effectiveTier}"
|
|
279
|
+
|
|
280
|
+
${buildAgentDetectionBlock()}
|
|
250
281
|
|
|
251
282
|
${buildResolveBlock(fallbackCmd)}
|
|
252
283
|
|
|
@@ -265,6 +296,32 @@ if [ -n "$TOTEM_CMD" ]; then
|
|
|
265
296
|
exit 1
|
|
266
297
|
fi
|
|
267
298
|
fi
|
|
299
|
+
${shieldBlock}
|
|
300
|
+
fi
|
|
301
|
+
|
|
302
|
+
# Format check — catch unformatted files before CI does
|
|
303
|
+
# Only runs if the project defines a format:check script (no workflow opinions)
|
|
304
|
+
# Detects package manager from lockfile presence
|
|
305
|
+
if [ -f "package.json" ]; then
|
|
306
|
+
FORMAT_CMD=""
|
|
307
|
+
if [ -f "pnpm-lock.yaml" ] && command -v pnpm >/dev/null 2>&1; then
|
|
308
|
+
FORMAT_CMD="pnpm run"
|
|
309
|
+
elif [ -f "yarn.lock" ] && command -v yarn >/dev/null 2>&1; then
|
|
310
|
+
FORMAT_CMD="yarn run"
|
|
311
|
+
elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
|
|
312
|
+
command -v bun >/dev/null 2>&1 && FORMAT_CMD="bun run"
|
|
313
|
+
elif command -v npm >/dev/null 2>&1; then
|
|
314
|
+
FORMAT_CMD="npm run"
|
|
315
|
+
fi
|
|
316
|
+
|
|
317
|
+
if [ -n "$FORMAT_CMD" ] && node -e "const p=require('./package.json'); process.exit(p.scripts && p.scripts['format:check'] ? 0 : 1)" 2>/dev/null; then
|
|
318
|
+
if $FORMAT_CMD format:check > /dev/null 2>&1; then
|
|
319
|
+
: # pass
|
|
320
|
+
else
|
|
321
|
+
echo "[totem] ❌ Formatting check failed. Run '$FORMAT_CMD format' to fix." >&2
|
|
322
|
+
exit 1
|
|
323
|
+
fi
|
|
324
|
+
fi
|
|
268
325
|
fi
|
|
269
326
|
`;
|
|
270
327
|
}
|
|
@@ -321,7 +378,7 @@ export function installGitHook(hooksDir, hookName, hookContent, marker, force) {
|
|
|
321
378
|
* Respects hook managers by printing guidance instead of writing raw hooks.
|
|
322
379
|
* Returns actions taken for reporting in init summary.
|
|
323
380
|
*/
|
|
324
|
-
export async function installEnforcementHooks(cwd, rl) {
|
|
381
|
+
export async function installEnforcementHooks(cwd, rl, options) {
|
|
325
382
|
const skip = { preCommit: 'skipped', prePush: 'skipped' };
|
|
326
383
|
// Guard: must be a git repo — resolve root from any subdirectory
|
|
327
384
|
const gitRoot = resolveGitRoot(cwd);
|
|
@@ -341,8 +398,8 @@ export async function installEnforcementHooks(cwd, rl) {
|
|
|
341
398
|
}
|
|
342
399
|
const fallbackCmd = getFallbackCommand(gitRoot);
|
|
343
400
|
const hooksDir = path.join(gitRoot, '.git', 'hooks');
|
|
344
|
-
const preCommit = installGitHook(hooksDir, 'pre-commit', buildPreCommitHook(), TOTEM_PRECOMMIT_MARKER);
|
|
345
|
-
const prePush = installGitHook(hooksDir, 'pre-push', buildPrePushHook(fallbackCmd), TOTEM_PREPUSH_MARKER);
|
|
401
|
+
const preCommit = installGitHook(hooksDir, 'pre-commit', buildPreCommitHook(options?.tier), TOTEM_PRECOMMIT_MARKER);
|
|
402
|
+
const prePush = installGitHook(hooksDir, 'pre-push', buildPrePushHook(fallbackCmd, options?.tier), TOTEM_PREPUSH_MARKER);
|
|
346
403
|
// Warn about non-shell hooks that Totem cannot safely append to
|
|
347
404
|
if (preCommit === 'skipped-non-shell') {
|
|
348
405
|
console.error('[Totem] Warning: pre-commit hook uses a non-shell interpreter. Manually integrate branch protection into your existing hook.');
|
|
@@ -378,7 +435,7 @@ export async function installHooksCommand() {
|
|
|
378
435
|
* Non-interactive hook installer for `totem hooks` and `prepare` scripts.
|
|
379
436
|
* Installs pre-commit, pre-push, and post-merge hooks without prompting.
|
|
380
437
|
*/
|
|
381
|
-
export function installHooksNonInteractive(cwd, force) {
|
|
438
|
+
export function installHooksNonInteractive(cwd, force, options) {
|
|
382
439
|
// Guard: must be a git repo — resolve root from any subdirectory
|
|
383
440
|
const gitRoot = resolveGitRoot(cwd);
|
|
384
441
|
if (!gitRoot) {
|
|
@@ -388,13 +445,13 @@ export function installHooksNonInteractive(cwd, force) {
|
|
|
388
445
|
// Hook managers handle their own installation — generate helper scripts + print guidance
|
|
389
446
|
const manager = detectHookManager(gitRoot);
|
|
390
447
|
if (manager) {
|
|
391
|
-
generateHookHelpers(gitRoot, fallbackCmd);
|
|
448
|
+
generateHookHelpers(gitRoot, fallbackCmd, options);
|
|
392
449
|
printHookManagerGuidance(manager);
|
|
393
450
|
return null;
|
|
394
451
|
}
|
|
395
452
|
const hooksDir = path.join(gitRoot, '.git', 'hooks');
|
|
396
|
-
const preCommit = installGitHook(hooksDir, 'pre-commit', buildPreCommitHook(), TOTEM_PRECOMMIT_MARKER, force);
|
|
397
|
-
const prePush = installGitHook(hooksDir, 'pre-push', buildPrePushHook(fallbackCmd), TOTEM_PREPUSH_MARKER, force);
|
|
453
|
+
const preCommit = installGitHook(hooksDir, 'pre-commit', buildPreCommitHook(options?.tier), TOTEM_PRECOMMIT_MARKER, force);
|
|
454
|
+
const prePush = installGitHook(hooksDir, 'pre-push', buildPrePushHook(fallbackCmd, options?.tier), TOTEM_PREPUSH_MARKER, force);
|
|
398
455
|
const postMergeContent = buildHookContent(fallbackCmd);
|
|
399
456
|
const postMerge = installGitHook(hooksDir, 'post-merge', postMergeContent, TOTEM_HOOK_MARKER, force);
|
|
400
457
|
const postCheckoutContent = buildPostCheckoutHookContent(fallbackCmd);
|
|
@@ -435,7 +492,7 @@ export function checkHooksInstalled(cwd) {
|
|
|
435
492
|
/**
|
|
436
493
|
* CLI entrypoint for `totem hooks [--check]`.
|
|
437
494
|
*/
|
|
438
|
-
export function hooksCommand(opts) {
|
|
495
|
+
export async function hooksCommand(opts) {
|
|
439
496
|
const cwd = process.cwd();
|
|
440
497
|
// Resolve git root once — guards both --check and install paths
|
|
441
498
|
const gitRoot = resolveGitRoot(cwd);
|
|
@@ -454,7 +511,32 @@ export function hooksCommand(opts) {
|
|
|
454
511
|
}
|
|
455
512
|
return;
|
|
456
513
|
}
|
|
457
|
-
|
|
514
|
+
// Resolve tier + pilot: CLI flag > config file > default ('standard')
|
|
515
|
+
let tier;
|
|
516
|
+
// Resolve tier: CLI flag > config file > default ('standard')
|
|
517
|
+
try {
|
|
518
|
+
const { loadConfig, loadEnv, resolveConfigPath } = await import('../utils.js');
|
|
519
|
+
loadEnv(cwd);
|
|
520
|
+
const configPath = resolveConfigPath(cwd);
|
|
521
|
+
if (configPath) {
|
|
522
|
+
const config = await loadConfig(configPath);
|
|
523
|
+
if (!opts.strict && !opts.standard) {
|
|
524
|
+
tier = config.hooks?.tier;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
catch (err) {
|
|
529
|
+
if (process.env.TOTEM_DEBUG) {
|
|
530
|
+
console.error('[Totem] Could not load config for tier resolution:', err);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (opts.strict) {
|
|
534
|
+
tier = 'strict';
|
|
535
|
+
}
|
|
536
|
+
else if (opts.standard) {
|
|
537
|
+
tier = 'standard';
|
|
538
|
+
}
|
|
539
|
+
const result = installHooksNonInteractive(cwd, opts.force, { tier });
|
|
458
540
|
if (!result) {
|
|
459
541
|
// Hook manager detected — guidance already printed by installHooksNonInteractive
|
|
460
542
|
return;
|
|
@@ -505,37 +587,44 @@ export function upgradePrePushHookIfNeeded(cwd) {
|
|
|
505
587
|
// Only upgrade hooks that Totem owns (have our marker)
|
|
506
588
|
if (!content.includes(TOTEM_PREPUSH_MARKER))
|
|
507
589
|
return false;
|
|
508
|
-
// Already on the new stateless format — no upgrade needed
|
|
590
|
+
// Already on the new stateless format — no upgrade needed.
|
|
591
|
+
// SAFETY INVARIANT: old hooks (pre-verify-manifest) have a single top-level
|
|
592
|
+
// if/fi block and no agent detection. The parser below relies on this — it
|
|
593
|
+
// stops at the first balanced fi. If this guard is ever removed, the parser
|
|
594
|
+
// must be updated to handle multi-block hooks (see extractTotemBlock in tests).
|
|
509
595
|
if (content.includes('verify-manifest'))
|
|
510
596
|
return false;
|
|
511
597
|
// Splice only the totem-managed block, preserving any user-appended content.
|
|
512
598
|
const markerIdx = content.indexOf(`# ${TOTEM_PREPUSH_MARKER}`);
|
|
513
599
|
if (markerIdx === -1)
|
|
514
600
|
return false;
|
|
515
|
-
// Find the end of the totem block by balancing if/fi depth.
|
|
516
|
-
//
|
|
517
|
-
//
|
|
601
|
+
// Find the end of the old totem block by balancing if/fi depth.
|
|
602
|
+
// Old hooks have one top-level if/fi block; we stop at its closing fi.
|
|
603
|
+
// Skip inline `if ... fi` on a single line — they don't change depth.
|
|
518
604
|
const afterMarker = content.slice(markerIdx);
|
|
519
|
-
const
|
|
605
|
+
const lines = afterMarker.split('\n');
|
|
520
606
|
let depth = 0;
|
|
521
607
|
let endOffset = -1;
|
|
522
608
|
let firstIfFound = false;
|
|
523
|
-
let
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
const
|
|
527
|
-
if (
|
|
528
|
-
if (
|
|
529
|
-
firstIfFound
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
609
|
+
let charOffset = 0;
|
|
610
|
+
for (const line of lines) {
|
|
611
|
+
const trimmed = line.trimStart();
|
|
612
|
+
const isInlineIfFi = /^if\s.*;\s*fi\s*$/.test(trimmed);
|
|
613
|
+
if (!isInlineIfFi) {
|
|
614
|
+
if (/^if\s/.test(trimmed)) {
|
|
615
|
+
if (!firstIfFound)
|
|
616
|
+
firstIfFound = true;
|
|
617
|
+
depth++;
|
|
618
|
+
}
|
|
619
|
+
else if (/^fi\s*$/.test(trimmed) && firstIfFound) {
|
|
620
|
+
depth--;
|
|
621
|
+
}
|
|
534
622
|
}
|
|
535
|
-
if (firstIfFound && depth === 0) {
|
|
536
|
-
endOffset =
|
|
623
|
+
if (firstIfFound && depth === 0 && /^fi\s*$/.test(trimmed)) {
|
|
624
|
+
endOffset = charOffset + line.length;
|
|
537
625
|
break;
|
|
538
626
|
}
|
|
627
|
+
charOffset += line.length + 1;
|
|
539
628
|
}
|
|
540
629
|
if (endOffset === -1)
|
|
541
630
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../../src/commands/install-hooks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../../src/commands/install-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -195,6 +195,11 @@ describe('buildPrePushHook', () => {
|
|
|
195
195
|
const hook = buildPrePushHook('yarn dlx @mmnto/cli');
|
|
196
196
|
expect(hook).toContain('yarn dlx @mmnto/cli');
|
|
197
197
|
});
|
|
198
|
+
it('includes format:check before push', () => {
|
|
199
|
+
const hook = buildPrePushHook(FALLBACK);
|
|
200
|
+
expect(hook).toContain('format:check');
|
|
201
|
+
expect(hook).toContain('Formatting check failed');
|
|
202
|
+
});
|
|
198
203
|
});
|
|
199
204
|
describe('installGitHook', () => {
|
|
200
205
|
let tmpDir;
|
|
@@ -594,44 +599,47 @@ describe('upgradePrePushHookIfNeeded', () => {
|
|
|
594
599
|
afterEach(() => {
|
|
595
600
|
cleanTmpDir(tmpDir);
|
|
596
601
|
});
|
|
602
|
+
// Top-level if/fi blocks in the canonical pre-push hook:
|
|
603
|
+
// 1. agent detection, 2. resolve, 3. main guard, 4. format:check
|
|
604
|
+
const PRE_PUSH_TOP_LEVEL_BLOCKS = 4;
|
|
597
605
|
/**
|
|
598
606
|
* Helper: extract the totem block from a hook file and compare it against
|
|
599
607
|
* the canonical output of buildPrePushHook('pnpm dlx @mmnto/cli') (shebang stripped, trimmed).
|
|
600
608
|
* Catches stale shell fragments or splice boundary bugs that toContain would miss.
|
|
601
|
-
*
|
|
602
|
-
* The new stateless format has TWO top-level if/fi blocks (resolve block +
|
|
603
|
-
* guard block). We track to the second balanced fi at depth 0 to capture both.
|
|
604
|
-
* Old single-block hooks are captured at the first balanced fi.
|
|
605
609
|
*/
|
|
606
610
|
function extractTotemBlock(hookContent) {
|
|
607
611
|
const markerIdx = hookContent.indexOf(`# ${TOTEM_PREPUSH_MARKER}`);
|
|
608
612
|
if (markerIdx === -1)
|
|
609
613
|
return '';
|
|
610
614
|
const afterMarker = hookContent.slice(markerIdx);
|
|
611
|
-
|
|
615
|
+
// Match lines that start with `if ` or are standalone `fi`.
|
|
616
|
+
// Skip inline `if ... fi` (both on same line) — they don't change depth.
|
|
617
|
+
const lines = afterMarker.split('\n');
|
|
612
618
|
let depth = 0;
|
|
613
619
|
let endOffset = -1;
|
|
614
620
|
let firstIfFound = false;
|
|
615
621
|
let balancedCount = 0;
|
|
616
|
-
let
|
|
617
|
-
|
|
618
|
-
const
|
|
619
|
-
if
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
622
|
+
let charOffset = 0;
|
|
623
|
+
for (const line of lines) {
|
|
624
|
+
const trimmed = line.trimStart();
|
|
625
|
+
const isInlineIfFi = /^if\s.*;\s*fi\s*$/.test(trimmed);
|
|
626
|
+
if (!isInlineIfFi) {
|
|
627
|
+
if (/^if\s/.test(trimmed)) {
|
|
628
|
+
if (!firstIfFound)
|
|
629
|
+
firstIfFound = true;
|
|
630
|
+
depth++;
|
|
631
|
+
}
|
|
632
|
+
else if (/^fi\s*$/.test(trimmed) && firstIfFound) {
|
|
633
|
+
depth--;
|
|
634
|
+
}
|
|
626
635
|
}
|
|
627
|
-
if (firstIfFound && depth === 0) {
|
|
636
|
+
if (firstIfFound && depth === 0 && /^fi\s*$/.test(trimmed)) {
|
|
628
637
|
balancedCount++;
|
|
629
|
-
endOffset =
|
|
630
|
-
|
|
631
|
-
// Stop after finding the block count that matches the canonical hook.
|
|
632
|
-
if (balancedCount >= 2)
|
|
638
|
+
endOffset = charOffset + line.length;
|
|
639
|
+
if (balancedCount >= PRE_PUSH_TOP_LEVEL_BLOCKS)
|
|
633
640
|
break;
|
|
634
641
|
}
|
|
642
|
+
charOffset += line.length + 1; // +1 for the newline
|
|
635
643
|
}
|
|
636
644
|
if (endOffset === -1)
|
|
637
645
|
return '';
|
|
@@ -800,10 +808,12 @@ fi
|
|
|
800
808
|
fs.writeFileSync(path.join(hooksDir, 'pre-push'), oldHook);
|
|
801
809
|
upgradePrePushHookIfNeeded(tmpDir);
|
|
802
810
|
const content = fs.readFileSync(path.join(hooksDir, 'pre-push'), 'utf-8');
|
|
803
|
-
// Count if/fi balance: every `if` must have a matching `fi
|
|
804
|
-
|
|
805
|
-
const
|
|
806
|
-
|
|
811
|
+
// Count if/fi balance: every `if` must have a matching `fi`.
|
|
812
|
+
// Inline `if ... fi` on a single line are self-balanced and excluded from both counts.
|
|
813
|
+
const contentLines = content.split('\n');
|
|
814
|
+
const multiLineIfs = contentLines.filter((l) => /^\s*if\s/.test(l) && !/;\s*fi\s*$/.test(l));
|
|
815
|
+
const standaloneFis = contentLines.filter((l) => /^\s*fi\s*$/.test(l));
|
|
816
|
+
expect(multiLineIfs.length).toBe(standaloneFis.length);
|
|
807
817
|
// No duplicate markers — upgrade must not leave the old marker behind
|
|
808
818
|
const markerPattern = new RegExp(TOTEM_PREPUSH_MARKER.replace(/[[\]]/g, '\\$&'), 'g');
|
|
809
819
|
const markerHits = content.match(markerPattern) ?? [];
|
|
@@ -885,4 +895,106 @@ fi
|
|
|
885
895
|
expect(actual).toBe(expectedTotemBlock());
|
|
886
896
|
});
|
|
887
897
|
});
|
|
898
|
+
// ─── Enforcement tier: agent detection & strict mode ──
|
|
899
|
+
describe('buildPreCommitHook agent detection', () => {
|
|
900
|
+
it('includes agent detection snippet', () => {
|
|
901
|
+
const hook = buildPreCommitHook();
|
|
902
|
+
expect(hook).toContain('is_agent=0');
|
|
903
|
+
expect(hook).toContain('is_agent=1');
|
|
904
|
+
expect(hook).toContain('CLAUDE_CODE_AGENT');
|
|
905
|
+
expect(hook).toContain('CLAUDE_VERSION');
|
|
906
|
+
expect(hook).toContain('CURSOR_TRACE_ID');
|
|
907
|
+
// GEMINI_API_KEY intentionally excluded — human devs export it for Totem's embedding provider
|
|
908
|
+
});
|
|
909
|
+
it('includes TOTEM_HOOK_TIER variable', () => {
|
|
910
|
+
const hook = buildPreCommitHook();
|
|
911
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="standard"');
|
|
912
|
+
});
|
|
913
|
+
it('sets TOTEM_HOOK_TIER to strict when tier is strict', () => {
|
|
914
|
+
const hook = buildPreCommitHook('strict');
|
|
915
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="strict"');
|
|
916
|
+
});
|
|
917
|
+
});
|
|
918
|
+
describe('buildPreCommitHook with strict tier', () => {
|
|
919
|
+
it('includes spec-completed check', () => {
|
|
920
|
+
const hook = buildPreCommitHook('strict');
|
|
921
|
+
expect(hook).toContain('.spec-completed');
|
|
922
|
+
expect(hook).toContain("Run 'totem spec <issue>' before committing (strict mode)");
|
|
923
|
+
});
|
|
924
|
+
it('gates spec check on agent detection or strict tier', () => {
|
|
925
|
+
const hook = buildPreCommitHook('strict');
|
|
926
|
+
expect(hook).toContain('$is_agent');
|
|
927
|
+
expect(hook).toContain('$TOTEM_HOOK_TIER');
|
|
928
|
+
});
|
|
929
|
+
});
|
|
930
|
+
describe('buildPreCommitHook with standard tier', () => {
|
|
931
|
+
it('includes spec-completed check guarded by agent/tier condition', () => {
|
|
932
|
+
const hook = buildPreCommitHook('standard');
|
|
933
|
+
expect(hook).toContain('.spec-completed');
|
|
934
|
+
expect(hook).toContain('is_agent');
|
|
935
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="standard"');
|
|
936
|
+
});
|
|
937
|
+
it('defaults to standard tier when no tier specified', () => {
|
|
938
|
+
const hook = buildPreCommitHook();
|
|
939
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="standard"');
|
|
940
|
+
expect(hook).toContain('.spec-completed');
|
|
941
|
+
});
|
|
942
|
+
});
|
|
943
|
+
describe('buildPrePushHook with strict tier', () => {
|
|
944
|
+
const FALLBACK = 'pnpm dlx @mmnto/cli';
|
|
945
|
+
it('includes shield gate', () => {
|
|
946
|
+
const hook = buildPrePushHook(FALLBACK, 'strict');
|
|
947
|
+
expect(hook).toContain('review');
|
|
948
|
+
expect(hook).toContain('shield gate (strict mode)');
|
|
949
|
+
});
|
|
950
|
+
it('includes TOTEM_HOOK_TIER set to strict', () => {
|
|
951
|
+
const hook = buildPrePushHook(FALLBACK, 'strict');
|
|
952
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="strict"');
|
|
953
|
+
});
|
|
954
|
+
it('includes agent detection snippet', () => {
|
|
955
|
+
const hook = buildPrePushHook(FALLBACK, 'strict');
|
|
956
|
+
expect(hook).toContain('is_agent=0');
|
|
957
|
+
expect(hook).toContain('CLAUDE_CODE_AGENT');
|
|
958
|
+
});
|
|
959
|
+
});
|
|
960
|
+
describe('buildPrePushHook with standard tier', () => {
|
|
961
|
+
const FALLBACK = 'pnpm dlx @mmnto/cli';
|
|
962
|
+
it('includes shield gate guarded by agent/tier condition', () => {
|
|
963
|
+
const hook = buildPrePushHook(FALLBACK, 'standard');
|
|
964
|
+
expect(hook).toContain('shield gate');
|
|
965
|
+
expect(hook).toContain('is_agent');
|
|
966
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="standard"');
|
|
967
|
+
});
|
|
968
|
+
it('defaults to standard tier when no tier specified', () => {
|
|
969
|
+
const hook = buildPrePushHook(FALLBACK);
|
|
970
|
+
expect(hook).toContain('TOTEM_HOOK_TIER="standard"');
|
|
971
|
+
expect(hook).toContain('shield gate');
|
|
972
|
+
});
|
|
973
|
+
it('still includes agent detection', () => {
|
|
974
|
+
const hook = buildPrePushHook(FALLBACK, 'standard');
|
|
975
|
+
expect(hook).toContain('is_agent=0');
|
|
976
|
+
});
|
|
977
|
+
});
|
|
978
|
+
describe('agent detection uses POSIX syntax', () => {
|
|
979
|
+
it('pre-commit hook has no bashisms', () => {
|
|
980
|
+
const hook = buildPreCommitHook('strict');
|
|
981
|
+
// Must use [ ] not [[ ]]
|
|
982
|
+
expect(hook).not.toContain('[[');
|
|
983
|
+
expect(hook).not.toContain(']]');
|
|
984
|
+
// Must use = not ==
|
|
985
|
+
expect(hook).not.toMatch(/[^!]==/);
|
|
986
|
+
// Must use test or [ ], not bash-only constructs
|
|
987
|
+
expect(hook).toMatch(/^#!\/bin\/sh\n/);
|
|
988
|
+
});
|
|
989
|
+
it('pre-push hook has no bashisms', () => {
|
|
990
|
+
const hook = buildPrePushHook('pnpm dlx @mmnto/cli', 'strict');
|
|
991
|
+
// Must use [ ] not [[ ]]
|
|
992
|
+
expect(hook).not.toContain('[[');
|
|
993
|
+
expect(hook).not.toContain(']]');
|
|
994
|
+
// Must use = not ==
|
|
995
|
+
expect(hook).not.toMatch(/[^!]==/);
|
|
996
|
+
// Must use #!/bin/sh
|
|
997
|
+
expect(hook).toMatch(/^#!\/bin\/sh\n/);
|
|
998
|
+
});
|
|
999
|
+
});
|
|
888
1000
|
//# sourceMappingURL=install-hooks.test.js.map
|