Module: RubynCode::Hooks::EventMap

Defined in:
lib/rubyn_code/hooks/event_map.rb

Overview

Maps between internal hook event names (snake_case symbols used by the in-process Hooks::Runner) and the Claude Code hook event names (CamelCase strings used by external hooks configured in settings.json).

Internal hooks fire at these 7 sites:

:pre_tool_use       — agent/tool_processor.rb#execute_tool
:post_tool_use      — agent/tool_processor.rb#execute_tool
:pre_llm_call       — agent/llm_caller.rb
:post_llm_call      — agent/llm_caller.rb
:stop               — agent/loop.rb#stop_blocked?
:session_start      — ide/handlers/prompt_handler.rb (IDE)
:user_prompt_submit — ide/handlers/prompt_handler.rb (IDE)

External hooks (Claude Code parity) consume these 9 event names:

PreToolUse, PostToolUse, UserPromptSubmit, SessionStart,
SessionEnd, Stop, SubagentStop, PreCompact, Notification

Constant Summary collapse

TO_EXTERNAL =

Internal symbol => external string

{
  pre_tool_use: 'PreToolUse',
  post_tool_use: 'PostToolUse',
  pre_llm_call: 'PreCompact',
  post_llm_call: 'Notification',
  on_session_end: 'SessionEnd',
  session_start: 'SessionStart',
  user_prompt_submit: 'UserPromptSubmit',
  stop: 'Stop',
  on_subagent_stop: 'SubagentStop'
}.freeze
TO_INTERNAL =

External string => internal symbol

TO_EXTERNAL.invert.freeze
EXTERNAL_EVENTS =

Every external event name the dispatcher knows about.

TO_EXTERNAL.values.freeze

Class Method Summary collapse

Class Method Details

.external(internal) ⇒ String?

Parameters:

  • internal (Symbol)

Returns:

  • (String, nil)


45
46
47
# File 'lib/rubyn_code/hooks/event_map.rb', line 45

def external(internal)
  TO_EXTERNAL[internal.to_sym]
end

.internal(external) ⇒ Symbol?

Parameters:

  • external (String, Symbol)

Returns:

  • (Symbol, nil)


51
52
53
# File 'lib/rubyn_code/hooks/event_map.rb', line 51

def internal(external)
  TO_INTERNAL[external.to_s]
end