fix(chat): enable draft auto-accept before first message (#2045)
* fix(chat): enable draft auto-accept before first message * fix(test): use supported bun assertions * fix(chat): apply draft auto-accept before session switch --------- Co-authored-by: bashrusakh <bashrusakh@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
co-authored by
bashrusakh
parent
0242765bc8
commit
9bfc5bf0be
@@ -195,6 +195,7 @@ export type NewSessionDraftState = {
|
||||
open: boolean
|
||||
selectedProjectId?: string | null
|
||||
directoryOverride: string | null
|
||||
permissionAutoAcceptEnabled?: boolean
|
||||
pendingWorktreeRequestId?: string | null
|
||||
bootstrapPendingDirectory?: string | null
|
||||
preserveDirectoryOverride?: boolean
|
||||
@@ -251,6 +252,7 @@ export type SessionUIState = {
|
||||
closeNewSessionDraft: () => void
|
||||
setNewSessionDraftTarget: (target: { projectId?: string | null; selectedProjectId?: string | null; directoryOverride?: string | null }, options?: { force?: boolean }) => void
|
||||
setDraftPreserveDirectoryOverride: (value: boolean) => void
|
||||
setDraftPermissionAutoAcceptEnabled: (enabled: boolean) => void
|
||||
acknowledgeSessionAbort: (sessionId: string) => void
|
||||
clearAbortPrompt: () => void
|
||||
armAbortPrompt: (durationMs?: number) => number | null
|
||||
@@ -446,6 +448,7 @@ export async function materializeOpenDraftSession(selection: {
|
||||
const store = useSessionUIStore.getState()
|
||||
const draft = store.newSessionDraft
|
||||
if (!draft?.open) return null
|
||||
const draftPermissionAutoAcceptEnabled = draft.permissionAutoAcceptEnabled === true
|
||||
|
||||
const trimmedAgent = typeof selection.agent === "string" && selection.agent.trim().length > 0
|
||||
? selection.agent.trim()
|
||||
@@ -485,6 +488,15 @@ export async function materializeOpenDraftSession(selection: {
|
||||
useSelectionStore.getState().saveAgentModelVariantForSession(created.id, effectiveDraftAgent, selection.providerID, selection.modelID, selection.variant)
|
||||
}
|
||||
|
||||
if (draftPermissionAutoAcceptEnabled) {
|
||||
try {
|
||||
const { usePermissionStore } = await import("@/stores/permissionStore")
|
||||
await usePermissionStore.getState().setSessionAutoAccept(created.id, true)
|
||||
} catch (error) {
|
||||
console.warn("Failed to apply draft permission auto-accept to new session:", error)
|
||||
}
|
||||
}
|
||||
|
||||
store.initializeNewOpenChamberSession(created.id, configState.agents ?? [])
|
||||
|
||||
store.setCurrentSession(created.id, createdDirectory)
|
||||
@@ -732,6 +744,7 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
||||
open: true,
|
||||
selectedProjectId: selectedProject?.id ?? null,
|
||||
directoryOverride: directory,
|
||||
permissionAutoAcceptEnabled: options?.permissionAutoAcceptEnabled === true,
|
||||
pendingWorktreeRequestId: options?.pendingWorktreeRequestId ?? null,
|
||||
bootstrapPendingDirectory: normalizePath(options?.bootstrapPendingDirectory ?? null),
|
||||
preserveDirectoryOverride: options?.preserveDirectoryOverride === true,
|
||||
@@ -827,6 +840,12 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
|
||||
return { newSessionDraft: { ...s.newSessionDraft, preserveDirectoryOverride: value } }
|
||||
}),
|
||||
|
||||
setDraftPermissionAutoAcceptEnabled: (enabled) =>
|
||||
set((s) => {
|
||||
if (!s.newSessionDraft?.open) return s
|
||||
return { newSessionDraft: { ...s.newSessionDraft, permissionAutoAcceptEnabled: enabled } }
|
||||
}),
|
||||
|
||||
acknowledgeSessionAbort: (sessionId) =>
|
||||
set((s) => {
|
||||
const flags = new Map(s.sessionAbortFlags)
|
||||
|
||||
Reference in New Issue
Block a user