@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.
Files changed (83) hide show
  1. package/dist/commands/add-lesson.d.ts.map +1 -1
  2. package/dist/commands/add-lesson.js +5 -1
  3. package/dist/commands/add-lesson.js.map +1 -1
  4. package/dist/commands/compile.d.ts.map +1 -1
  5. package/dist/commands/compile.js +4 -1
  6. package/dist/commands/compile.js.map +1 -1
  7. package/dist/commands/extract-local.d.ts +6 -0
  8. package/dist/commands/extract-local.d.ts.map +1 -0
  9. package/dist/commands/extract-local.js +134 -0
  10. package/dist/commands/extract-local.js.map +1 -0
  11. package/dist/commands/extract-pr.d.ts +19 -0
  12. package/dist/commands/extract-pr.d.ts.map +1 -0
  13. package/dist/commands/extract-pr.js +193 -0
  14. package/dist/commands/extract-pr.js.map +1 -0
  15. package/dist/commands/extract-scan.d.ts +6 -0
  16. package/dist/commands/extract-scan.d.ts.map +1 -0
  17. package/dist/commands/extract-scan.js +100 -0
  18. package/dist/commands/extract-scan.js.map +1 -0
  19. package/dist/commands/extract-shared.d.ts +29 -0
  20. package/dist/commands/extract-shared.d.ts.map +1 -0
  21. package/dist/commands/extract-shared.js +351 -0
  22. package/dist/commands/extract-shared.js.map +1 -0
  23. package/dist/commands/extract-templates.d.ts +1 -0
  24. package/dist/commands/extract-templates.d.ts.map +1 -1
  25. package/dist/commands/extract-templates.js +33 -0
  26. package/dist/commands/extract-templates.js.map +1 -1
  27. package/dist/commands/extract.d.ts +7 -36
  28. package/dist/commands/extract.d.ts.map +1 -1
  29. package/dist/commands/extract.js +44 -588
  30. package/dist/commands/extract.js.map +1 -1
  31. package/dist/commands/extract.test.js +103 -2
  32. package/dist/commands/extract.test.js.map +1 -1
  33. package/dist/commands/init.d.ts +5 -0
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +85 -2
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/init.test.js +54 -1
  38. package/dist/commands/init.test.js.map +1 -1
  39. package/dist/commands/install-hooks.d.ts +17 -7
  40. package/dist/commands/install-hooks.d.ts.map +1 -1
  41. package/dist/commands/install-hooks.js +123 -34
  42. package/dist/commands/install-hooks.js.map +1 -1
  43. package/dist/commands/install-hooks.test.js +136 -24
  44. package/dist/commands/install-hooks.test.js.map +1 -1
  45. package/dist/commands/review-alias.test.js +9 -15
  46. package/dist/commands/review-alias.test.js.map +1 -1
  47. package/dist/commands/shield.d.ts.map +1 -1
  48. package/dist/commands/shield.js +12 -1
  49. package/dist/commands/shield.js.map +1 -1
  50. package/dist/commands/shield.test.js +37 -0
  51. package/dist/commands/shield.test.js.map +1 -1
  52. package/dist/commands/spec.d.ts +6 -0
  53. package/dist/commands/spec.d.ts.map +1 -1
  54. package/dist/commands/spec.js +11 -1
  55. package/dist/commands/spec.js.map +1 -1
  56. package/dist/commands/spec.test.js +25 -1
  57. package/dist/commands/spec.test.js.map +1 -1
  58. package/dist/exemptions/__tests__/exemption-engine.test.js +9 -0
  59. package/dist/exemptions/__tests__/exemption-engine.test.js.map +1 -1
  60. package/dist/exemptions/exemption-engine.js +1 -1
  61. package/dist/exemptions/exemption-engine.js.map +1 -1
  62. package/dist/exemptions/exemption-schema.d.ts +6 -6
  63. package/dist/hooks/auto-context.d.ts.map +1 -1
  64. package/dist/hooks/auto-context.js +2 -19
  65. package/dist/hooks/auto-context.js.map +1 -1
  66. package/dist/index.js +33 -9
  67. package/dist/index.js.map +1 -1
  68. package/dist/schemas/handoff-checkpoint.d.ts +2 -2
  69. package/dist/utils/pilot.d.ts +44 -0
  70. package/dist/utils/pilot.d.ts.map +1 -0
  71. package/dist/utils/pilot.js +141 -0
  72. package/dist/utils/pilot.js.map +1 -0
  73. package/dist/utils/pilot.test.d.ts +2 -0
  74. package/dist/utils/pilot.test.d.ts.map +1 -0
  75. package/dist/utils/pilot.test.js +166 -0
  76. package/dist/utils/pilot.test.js.map +1 -0
  77. package/dist/utils.d.ts +8 -1
  78. package/dist/utils.d.ts.map +1 -1
  79. package/dist/utils.js +27 -15
  80. package/dist/utils.js.map +1 -1
  81. package/dist/utils.test.js +88 -2
  82. package/dist/utils.test.js.map +1 -1
  83. 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
- const result = installHooksNonInteractive(cwd, opts.force);
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
- // Track the LAST balanced fi at depth 0 to handle multi-block hooks
517
- // (e.g. resolve block + guard block).
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 ifFiPattern = /^\s*(if\s|fi\s*$)/gm;
605
+ const lines = afterMarker.split('\n');
520
606
  let depth = 0;
521
607
  let endOffset = -1;
522
608
  let firstIfFound = false;
523
- let match;
524
- // totem-context: RegExp.exec, not child_process
525
- while ((match = ifFiPattern.exec(afterMarker)) !== null) {
526
- const keyword = match[1].trim();
527
- if (keyword.startsWith('if')) {
528
- if (!firstIfFound)
529
- firstIfFound = true;
530
- depth++;
531
- }
532
- else if (keyword === 'fi' && firstIfFound) {
533
- depth--;
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 = match.index + match[0].length;
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
- const ifFiPattern = /^\s*(if\s|fi\s*$)/gm;
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 match;
617
- while ((match = ifFiPattern.exec(afterMarker)) !== null) {
618
- const keyword = match[1].trim();
619
- if (keyword.startsWith('if')) {
620
- if (!firstIfFound)
621
- firstIfFound = true;
622
- depth++;
623
- }
624
- else if (keyword === 'fi' && firstIfFound) {
625
- depth--;
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 = match.index + match[0].length;
630
- // New format has 2 top-level blocks; old format has 1.
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
- const ifMatches = content.match(/^\s*if\s/gm) ?? [];
805
- const fiMatches = content.match(/^\s*fi\s*$/gm) ?? [];
806
- expect(ifMatches.length).toBe(fiMatches.length);
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