pan-wizard 3.29.0 → 3.30.0

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.
@@ -49,24 +49,25 @@ const CONTENT_DIRS = Object.freeze({
49
49
  'pan-wizard-core/workflows': /\.(md|js)$/,
50
50
  });
51
51
 
52
- // Hooks the installer wires outside HOOK_EVENT_MAP (bin/install.js: the Stop guard
53
- // on the two runtimes with a Stop event, the statusline on Claude Code only).
52
+ // Registrations the installer wires outside HOOK_EVENT_MAP: the statuslines. (The
53
+ // stop guard moved INTO the table on 2026-09-23 as its `stop` slot, so its Gemini
54
+ // row follows Gemini's vocabulary — AfterAgent — instead of a hand-written `Stop`
55
+ // that Gemini never read.)
54
56
  const EXTRA_HOOK_ROWS = Object.freeze([
55
- { runtime: 'claude', hook: 'pan-stop-guard.js', event: 'Stop', surface: 'settings.json' },
56
- { runtime: 'gemini', hook: 'pan-stop-guard.js', event: 'Stop', surface: 'settings.json' },
57
57
  { runtime: 'claude', hook: 'pan-statusline.js', event: 'statusLine', surface: 'settings.json' },
58
- // Gemini and Copilot register a statusline too. Both were missing here until a real
59
- // install was read back (2026-09-17) — the registry's whole purpose is that a shipped
60
- // registration cannot sit outside it, so a hand-maintained list is the weak point and
61
- // these rows are the evidence for why it must be checked against an install.
62
- { runtime: 'gemini', hook: 'pan-statusline.js', event: 'statusLine', surface: 'settings.json' },
58
+ // Copilot registers a statusline too; it was missing here until a real install was
59
+ // read back (2026-09-17) — the registry's whole purpose is that a shipped
60
+ // registration cannot sit outside it, so a hand-maintained list is the weak point.
63
61
  // Copilot keeps its hooks in hooks/pan.json but its statusline in copilot/settings.json.
62
+ // Gemini's row is gone: Gemini CLI has no statusline command, so PAN stopped
63
+ // writing one there (R29).
64
64
  { runtime: 'copilot', hook: 'pan-statusline.js', event: 'statusLine', surface: 'copilot/settings.json' },
65
65
  ]);
66
66
  const EVENT_HOOKS = Object.freeze({
67
67
  sessionStart: ['pan-check-update.js'],
68
68
  postToolUse: ['pan-context-monitor.js'],
69
69
  subagentStop: ['pan-cost-logger.js', 'pan-trace-logger.js'],
70
+ stop: ['pan-stop-guard.js'],
70
71
  });
71
72
 
72
73
  // ─── Parsers (pure) ─────────────────────────────────────────────────────────