Commit Graph

3 Commits

  • fix: use defaultThinkingLevel from settings when enabledModels lacks explicit suffix (#540)
    When enabledModels is configured without thinking level suffixes (e.g.,
    'claude-opus-4-5' instead of 'claude-opus-4-5:high'), the scoped model's
    default 'off' thinking level was overriding defaultThinkingLevel from
    settings.
    
    Now thinkingLevel in ScopedModel is optional (undefined means 'not
    explicitly specified'). When passing to SDK, undefined values are filled
    with defaultThinkingLevel from settings.
  • refactor(hooks): split session events into individual typed events
    Major changes:
    - Replace monolithic SessionEvent with reason discriminator with individual
      event types: session_start, session_before_switch, session_switch,
      session_before_new, session_new, session_before_branch, session_branch,
      session_before_compact, session_compact, session_shutdown
    - Each event has dedicated result type (SessionBeforeSwitchResult, etc.)
    - HookHandler type now allows bare return statements (void in return type)
    - HookAPI.on() has proper overloads for each event with correct typing
    
    Additional fixes:
    - AgentSession now always subscribes to agent in constructor (was only
      subscribing when external subscribe() called, breaking internal handlers)
    - Standardize on undefined over null throughout codebase
    - HookUIContext methods return undefined instead of null
    - SessionManager methods return undefined instead of null
    - Simplify hook exports to 'export type * from types.js'
    - Add detailed JSDoc for skipConversationRestore vs cancel
    - Fix createBranchedSession to rebuild index in persist mode
    - newSession() now returns the session file path
    
    Updated all example hooks, tests, and emission sites to use new event types.