Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions Sources/RepoPrompt/App/GlobalKeyboardShortcutsCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,8 @@ final class GlobalKeyboardShortcutsCoordinator {
register(.nextParentAgentSession) { [weak self] in self?.focusAdjacentParentAgentSession(forward: true) }
register(.showCurrentWindowAgentNavigationHUD) { [weak self] in self?.showAgentNavigationHUD(mode: .currentWindow) }
register(.showAllAgentsNavigationHUD) { [weak self] in self?.showAgentNavigationHUD(mode: .allAgents) }
register(.showAgentModelPicker) { [weak self] in self?.showAgentModelPicker() }
register(.showAgentEffortPicker) { [weak self] in self?.showAgentEffortPicker() }
}

private func startNewAgentSessionFromShortcut() {
Expand Down Expand Up @@ -274,4 +276,22 @@ final class GlobalKeyboardShortcutsCoordinator {
]
)
}

private func showAgentModelPicker() {
guard let win = guardedFocusedWindowState() else { return }
NotificationCenter.default.post(
name: .showAgentModelPicker,
object: nil,
userInfo: ["windowID": win.windowID]
)
}

private func showAgentEffortPicker() {
guard let win = guardedFocusedWindowState() else { return }
NotificationCenter.default.post(
name: .showAgentEffortPicker,
object: nil,
userInfo: ["windowID": win.windowID]
)
}
}
8 changes: 8 additions & 0 deletions Sources/RepoPrompt/App/Notifications/AppNotifications.swift
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,12 @@ extension Notification.Name {
/// ⌘1–⌘9 handlers before they fall through to regular compose-tab switching.
/// userInfo: ["windowID": Int, "resultIndex": Int, "handledRequest": AgentNavigationHUDHandledRequest]
static let selectAgentNavigationHUDResult = Notification.Name("selectAgentNavigationHUDResult")

/// Request that Agent Mode open the Agent/Model picker for the target window.
/// userInfo: ["windowID": Int]
static let showAgentModelPicker = Notification.Name("showAgentModelPicker")

/// Request that Agent Mode open the active provider's effort picker for the target window.
/// userInfo: ["windowID": Int]
static let showAgentEffortPicker = Notification.Name("showAgentEffortPicker")
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ extension AgentModeViewModel {
selectedModelDisplayName: selectedModelDisplayName,
selectedReasoningEffortRaw: selectedReasoningEffortRaw,
selectedReasoningEffortDisplayName: selectedReasoningEffortDisplayName,
codexReasoningEffortOptions: reasoningEffortOptionsForCurrentSelection(),
availableAgents: availableAgents,
isProviderPickerLockedForCurrentTab: isProviderPickerLocked(tabID: tabID),
lockedAgentSelectionMessage: lockedAgentSelectionMessage(tabID: tabID),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ struct AgentComposerProps: Equatable {
let selectedModelDisplayName: String
let selectedReasoningEffortRaw: String?
let selectedReasoningEffortDisplayName: String
let codexReasoningEffortOptions: [CodexReasoningEffort]
let availableAgents: [AgentProviderKind]
let isProviderPickerLockedForCurrentTab: Bool
let lockedAgentSelectionMessage: String?
Expand Down Expand Up @@ -266,6 +267,7 @@ struct AgentComposerProps: Equatable {
selectedModelDisplayName: AgentModel.defaultModel.displayName,
selectedReasoningEffortRaw: nil,
selectedReasoningEffortDisplayName: "",
codexReasoningEffortOptions: [],
availableAgents: [],
isProviderPickerLockedForCurrentTab: false,
lockedAgentSelectionMessage: nil,
Expand Down
Loading