From 295ed991dd7fd7ca97a31bb337e29002479219cf Mon Sep 17 00:00:00 2001
From: Neil <4138956+nwparker@users.noreply.github.com>
Date: Tue, 27 Oct 2026 04:14:07 -0700
Subject: [PATCH] refactor: group shared native-chat session options (#34356)
---
config/scripts/ci-shard-timings.json | 8 +++----
.../session/mobile-session-option-records.ts | 2 +-
...bileNativeChatSessionOptionPickers.test.ts | 2 +-
.../MobileNativeChatSessionOptionPickers.tsx | 4 ++--
.../MobileNativeChatSessionOptionRows.test.ts | 2 +-
.../MobileNativeChatSessionOptionRows.tsx | 2 +-
.../MobileNativeChatSessionOptionSegments.tsx | 2 +-
...obile-native-chat-session-option-labels.ts | 2 +-
...ve-chat-session-option-persistence.test.ts | 4 ++--
...e-native-chat-session-option-controller.ts | 2 +-
.../use-mobile-native-chat-session-options.ts | 8 +++----
.../use-mobile-native-chat-controller.test.ts | 2 +-
...ructured-agent-options.first-frame.test.ts | 2 +-
...se-mobile-structured-agent-options.test.ts | 2 +-
.../use-mobile-structured-agent-options.ts | 2 +-
...e-mobile-structured-agent-session.test.tsx | 2 +-
.../use-mobile-structured-option-surface.ts | 2 +-
...ude-structured-option-confirmation.test.ts | 2 +-
.../runtime/client/runtime-client-state.ts | 2 +-
.../rpc/methods/agent-launch-surfaces.ts | 2 +-
.../orchestration/worker/worker-topology.ts | 2 +-
.../structured-agent-session-create.ts | 2 +-
.../runtime/runtime-agent-terminal-startup.ts | 2 +-
src/main/runtime/runtime-client-settings.ts | 4 ++--
.../structured-session-create-support.ts | 2 +-
.../native-chat/NativeChatComposer.test.tsx | 2 +-
.../native-chat/NativeChatComposerActions.tsx | 2 +-
.../native-chat/NativeChatComposerField.tsx | 2 +-
.../native-chat/NativeChatModelCombobox.tsx | 2 +-
.../NativeChatPermissionModePicker.test.tsx | 2 +-
.../NativeChatPermissionModePicker.tsx | 2 +-
...SessionOptionPickers.focus-return.test.tsx | 2 +-
.../NativeChatSessionOptionPickers.test.tsx | 2 +-
.../NativeChatSessionOptionPickers.tsx | 4 ++--
.../NativeChatSessionOptionRows.tsx | 4 ++--
...tiveChatStructuredSession.test-harness.tsx | 2 +-
.../claude-terminal-session-options.ts | 2 +-
.../native-chat/native-chat-composer-types.ts | 2 +-
...ative-chat-launch-default-adoption.test.ts | 4 ++--
.../native-chat-pty-retired-model.test.ts | 4 ++--
.../native-chat-pty-session-options.test.ts | 4 ++--
.../native-chat-pty-session-options.ts | 10 ++++----
.../native-chat-session-option-apply.ts | 13 ++++++-----
.../native-chat-session-option-cache.ts | 4 ++--
.../native-chat-session-option-enrichment.ts | 4 ++--
.../native-chat-session-option-labels.test.ts | 2 +-
.../native-chat-session-option-labels.ts | 2 +-
...tive-chat-session-option-settings-write.ts | 2 +-
.../native-chat-session-option-snapshot.ts | 23 ++++++-------------
...native-chat-submission-navigation.test.tsx | 2 +-
.../use-host-model-catalog-upgrade.test.tsx | 2 +-
...model-catalog-upgrade.unavailable.test.tsx | 2 +-
.../use-native-chat-session-options.ts | 4 ++--
...agent-session-options.first-frame.test.tsx | 2 +-
...t-session-options.learned-default.test.tsx | 2 +-
...t-session-options.permission-mode.test.tsx | 2 +-
...-session-options.preloaded-agents.test.tsx | 2 +-
...-structured-agent-session-options.test.tsx | 2 +-
.../use-structured-agent-session-options.ts | 2 +-
...e-structured-agent-session-send-options.ts | 2 +-
.../use-structured-agent-session.test.tsx | 4 ++--
.../terminal-pane/pty-connection-types.ts | 2 +-
.../src/lib/agent-launch-through-host.ts | 2 +-
...ctured-agent-session-launch-persistence.ts | 2 +-
.../lib/launch-structured-agent-session.ts | 2 +-
.../lib/runtime-agent-background-create.ts | 2 +-
...structured-agent-session-host-admission.ts | 2 +-
...red-agent-session-launch-create-message.ts | 2 +-
...structured-agent-session-launch-options.ts | 2 +-
.../src/lib/worktree-startup-payload.ts | 2 +-
.../src/store/terminals/terminal-actions.ts | 2 +-
.../src/store/terminals/terminal-state.ts | 2 +-
.../agent-launch-settings-permissions.test.ts | 2 +-
.../agent-scoped-permission-defaults.test.ts | 2 +-
.../agent-session-option-catalog-grok.test.ts | 2 +-
.../agent-session-option-catalog-omp.test.ts | 2 +-
.../agent-session-option-catalog-types.ts | 2 +-
.../agent-session-option-catalog.test.ts | 2 +-
src/shared/agent-session-option-catalog.ts | 2 +-
src/shared/agent-session-option-launch.ts | 2 +-
...artup-plan-inputs-baseline-test-fixture.ts | 2 +-
src/shared/agent-startup-plan-inputs.ts | 2 +-
src/shared/flag-prompt-startup.ts | 2 +-
src/shared/global-settings-types.ts | 2 +-
...ative-chat-session-option-commands.test.ts | 4 ++--
.../native-chat-session-option-commands.ts | 2 +-
...ative-chat-session-option-defaults.test.ts | 0
.../native-chat-session-option-defaults.ts | 10 ++++----
...ative-chat-session-option-snapshot.test.ts | 10 ++++----
.../native-chat-session-option-snapshot.ts | 5 ++--
.../native-chat-session-option-state.test.ts | 2 +-
.../native-chat-session-option-state.ts | 4 ++--
.../input}/native-chat-session-options.ts | 2 +-
...ource-control-action-launch-preferences.ts | 2 +-
.../structured-agent-session-composer.ts | 5 +++-
.../structured-agent-session-option-codec.ts | 2 +-
...uctured-agent-session-option-picks.test.ts | 4 ++--
...tructured-agent-session-option-snapshot.ts | 9 +++++---
.../structured-agent-session-option-state.ts | 4 ++--
.../structured-agent-session-option-view.ts | 4 ++--
.../structured-agent-session-options.test.ts | 4 ++--
.../structured-agent-session-options.ts | 4 ++--
...ed-agent-session-permission-option.test.ts | 2 +-
...uctured-agent-session-permission-option.ts | 2 +-
...tructured-agent-session-unlisted-effort.ts | 4 ++--
...ent-launch-command-argument-values.test.ts | 2 +-
src/shared/tui-agent-launch-command.ts | 2 +-
src/shared/tui-agent-resume-startup.ts | 2 +-
src/shared/tui-agent-startup.ts | 2 +-
...claude-auto-mode-host-catalog.unit.test.ts | 2 +-
110 files changed, 168 insertions(+), 171 deletions(-)
rename src/shared/{ => native-chat/input}/native-chat-session-option-commands.test.ts (99%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-commands.ts (99%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-defaults.test.ts (100%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-defaults.ts (97%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-snapshot.test.ts (97%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-snapshot.ts (98%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-state.test.ts (98%)
rename src/shared/{ => native-chat/input}/native-chat-session-option-state.ts (98%)
rename src/shared/{ => native-chat/input}/native-chat-session-options.ts (98%)
diff --git a/config/scripts/ci-shard-timings.json b/config/scripts/ci-shard-timings.json
index bbd2fa05a5b..1d1d4d1a31f 100644
--- a/config/scripts/ci-shard-timings.json
+++ b/config/scripts/ci-shard-timings.json
@@ -12574,10 +12574,10 @@
"src/shared/native-chat-notice.test.ts": 101,
"src/shared/native-chat-paste-bytes.test.ts": 35,
"src/shared/native-chat/native-chat-scope-cache.test.ts": 28,
- "src/shared/native-chat-session-option-commands.test.ts": 114,
- "src/shared/native-chat-session-option-defaults.test.ts": 61,
- "src/shared/native-chat-session-option-snapshot.test.ts": 100,
- "src/shared/native-chat-session-option-state.test.ts": 52,
+ "src/shared/native-chat/input/native-chat-session-option-commands.test.ts": 114,
+ "src/shared/native-chat/input/native-chat-session-option-defaults.test.ts": 61,
+ "src/shared/native-chat/input/native-chat-session-option-snapshot.test.ts": 100,
+ "src/shared/native-chat/input/native-chat-session-option-state.test.ts": 52,
"src/shared/native-chat/native-chat-shell-environment.test.ts": 30,
"src/shared/native-chat/input/native-chat-slash-commands.omp.test.ts": 54,
"src/shared/native-chat/input/native-chat-slash-commands.test.ts": 52,
diff --git a/mobile/src/session/mobile-session-option-records.ts b/mobile/src/session/mobile-session-option-records.ts
index cc58777281c..e69e2029020 100644
--- a/mobile/src/session/mobile-session-option-records.ts
+++ b/mobile/src/session/mobile-session-option-records.ts
@@ -1,7 +1,7 @@
import {
createNativeChatSessionOptionRecord,
type NativeChatSessionOptionRecord
-} from '../../../src/shared/native-chat-session-option-state'
+} from '../../../src/shared/native-chat/input/native-chat-session-option-state'
// Bound per-tab records that outlive chat/terminal switches and remounts.
const MOBILE_SESSION_OPTION_RECORD_CAP = 32
diff --git a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.test.ts b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.test.ts
index 1db66529453..edd43727ff2 100644
--- a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.test.ts
+++ b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.test.ts
@@ -8,7 +8,7 @@ import { createStructuredAgentSessionOptionState } from '../../../../../src/shar
import type {
SessionOptionDescriptor,
SessionOptionSelectChoice
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import {
MobileNativeChatSessionOptionPickers,
type MobileNativeChatPickerPresentation
diff --git a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.tsx b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.tsx
index 8810b2f15e0..078cb933905 100644
--- a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.tsx
+++ b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionPickers.tsx
@@ -26,7 +26,7 @@ import {
sessionOptionDispatchUnconfirmed,
type SessionOptionDescriptor,
type SessionOptionValue
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import {
mobileModelPillLabel,
mobileOptionsPillLabel,
@@ -43,7 +43,7 @@ import {
SessionOptionSegments,
showsSessionOptionAsSegments
} from './MobileNativeChatSessionOptionSegments'
-import { sortNativeChatSessionOptions } from '../../../../../src/shared/native-chat-session-option-snapshot'
+import { sortNativeChatSessionOptions } from '../../../../../src/shared/native-chat/input/native-chat-session-option-snapshot'
import {
AGENT_CHAT_PERMISSION_MODE_ICON_NAMES,
AGENT_CHAT_PERMISSION_MODE_OPTION_ID,
diff --git a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.test.ts b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.test.ts
index 3e31e72b041..76b461d9484 100644
--- a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.test.ts
+++ b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.test.ts
@@ -1,7 +1,7 @@
import { createElement } from 'react'
import { act, create, type ReactTestRenderer } from 'react-test-renderer'
import { describe, expect, it, vi } from 'vitest'
-import type { SessionOptionDescriptor } from '../../../../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import { DescriptorRows } from './MobileNativeChatSessionOptionRows'
import {
findAllByHostType,
diff --git a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.tsx b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.tsx
index 8c10d0a7530..cbf9f81bf22 100644
--- a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.tsx
+++ b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionRows.tsx
@@ -6,7 +6,7 @@ import {
type SessionOptionDescriptor,
type SessionOptionValueMarker,
type SessionOptionValue
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
export function SessionOptionCaption({ children }: { children: string }): React.JSX.Element {
return {children}
diff --git a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionSegments.tsx b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionSegments.tsx
index a6bb761266c..e956bfee7d2 100644
--- a/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionSegments.tsx
+++ b/mobile/src/session/native-chat/input/MobileNativeChatSessionOptionSegments.tsx
@@ -5,7 +5,7 @@ import {
sessionOptionDispatchUnconfirmed,
type SessionOptionDescriptor,
type SessionOptionValue
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import { SessionOptionCaption } from './MobileNativeChatSessionOptionRows'
// Five fit across a phone's sheet; more read better as a list on their own page.
diff --git a/mobile/src/session/native-chat/input/mobile-native-chat-session-option-labels.ts b/mobile/src/session/native-chat/input/mobile-native-chat-session-option-labels.ts
index 6d6a3ec3049..cfe018b0918 100644
--- a/mobile/src/session/native-chat/input/mobile-native-chat-session-option-labels.ts
+++ b/mobile/src/session/native-chat/input/mobile-native-chat-session-option-labels.ts
@@ -3,7 +3,7 @@ import {
type SessionOptionDescriptor,
type SessionOptionDisabledReason,
type SessionOptionSelectChoice
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
export function mobileSessionOptionDisabledReason(
reason: SessionOptionDisabledReason | undefined
diff --git a/mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.test.ts b/mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.test.ts
index 618c0aa8f2b..10cb5d9ba4d 100644
--- a/mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.test.ts
+++ b/mobile/src/session/native-chat/input/mobile-native-chat-session-option-persistence.test.ts
@@ -2,8 +2,8 @@ import { describe, expect, it, vi } from 'vitest'
import {
applyNativeChatSessionOptionSettingsMutation,
resolveStructuredLaunchSeedOptions
-} from '../../../../../src/shared/native-chat-session-option-defaults'
-import type { PersistedNativeChatSessionOptions } from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-option-defaults'
+import type { PersistedNativeChatSessionOptions } from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import type { RpcClient } from '../../../transport/rpc-client'
import { persistMobileStructuredOptionPicks } from './mobile-native-chat-session-option-persistence'
diff --git a/mobile/src/session/native-chat/input/use-mobile-native-chat-session-option-controller.ts b/mobile/src/session/native-chat/input/use-mobile-native-chat-session-option-controller.ts
index d76a0970edb..22b5b071a1d 100644
--- a/mobile/src/session/native-chat/input/use-mobile-native-chat-session-option-controller.ts
+++ b/mobile/src/session/native-chat/input/use-mobile-native-chat-session-option-controller.ts
@@ -6,7 +6,7 @@ import type {
SessionOptionDescriptor,
SessionOptionValue,
SessionOptionsSurface
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import { mobileNativeChatScopeKey } from '../mobile-native-chat-scope-key'
import type { MobileNativeChatSendOutcome } from '../mobile-native-chat-send'
import type { MobileNativeChatSessionOptionPickersProps } from './MobileNativeChatSessionOptionPickers'
diff --git a/mobile/src/session/native-chat/input/use-mobile-native-chat-session-options.ts b/mobile/src/session/native-chat/input/use-mobile-native-chat-session-options.ts
index b3ff3a98e16..503ed5b4799 100644
--- a/mobile/src/session/native-chat/input/use-mobile-native-chat-session-options.ts
+++ b/mobile/src/session/native-chat/input/use-mobile-native-chat-session-options.ts
@@ -11,16 +11,16 @@ import type {
SessionOptionsSurface,
SessionOptionDescriptor,
SessionOptionValue
-} from '../../../../../src/shared/native-chat-session-options'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-options'
import type { MobileNativeChatSendOutcome } from '../mobile-native-chat-send'
import {
buildNativeChatSessionOptionCommand,
recordNativeChatSessionOptionCommand
-} from '../../../../../src/shared/native-chat-session-option-commands'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-option-commands'
import {
buildNativeChatSessionOptionSnapshot,
withTrackedNativeChatModel
-} from '../../../../../src/shared/native-chat-session-option-snapshot'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-option-snapshot'
import {
applyNativeChatReportedSessionOptions,
clearNativeChatSessionModel,
@@ -28,7 +28,7 @@ import {
isFlipOnlyMidSession,
matchNativeChatCatalogModelId,
setTrackedSessionOption
-} from '../../../../../src/shared/native-chat-session-option-state'
+} from '../../../../../src/shared/native-chat/input/native-chat-session-option-state'
export type MobileNativeChatSessionOptionsController = {
optionSurface?: SessionOptionsSurface
diff --git a/mobile/src/session/use-mobile-native-chat-controller.test.ts b/mobile/src/session/use-mobile-native-chat-controller.test.ts
index 19e8eefc13b..c0174515713 100644
--- a/mobile/src/session/use-mobile-native-chat-controller.test.ts
+++ b/mobile/src/session/use-mobile-native-chat-controller.test.ts
@@ -1,7 +1,7 @@
import { createElement } from 'react'
import { act, create, type ReactTestRenderer } from 'react-test-renderer'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
-import type { SessionOptionDescriptor } from '../../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../src/shared/native-chat/input/native-chat-session-options'
import type { RpcClient } from '../transport/rpc-client'
import type { ConnectionState } from '../transport/types'
import type { MobileNativeChatPrompts } from './native-chat/input/use-mobile-native-chat-prompts'
diff --git a/mobile/src/session/use-mobile-structured-agent-options.first-frame.test.ts b/mobile/src/session/use-mobile-structured-agent-options.first-frame.test.ts
index 39f441f50c3..905fc7db460 100644
--- a/mobile/src/session/use-mobile-structured-agent-options.first-frame.test.ts
+++ b/mobile/src/session/use-mobile-structured-agent-options.first-frame.test.ts
@@ -5,7 +5,7 @@ import type {
AgentSessionModelCatalogResult,
AgentSessionOptionsResult
} from '../../../src/shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../src/shared/native-chat/input/native-chat-session-options'
import type { RpcClient } from '../transport/rpc-client'
import { useMobileStructuredAgentOptions } from './use-mobile-structured-agent-options'
diff --git a/mobile/src/session/use-mobile-structured-agent-options.test.ts b/mobile/src/session/use-mobile-structured-agent-options.test.ts
index 6c62e553f68..539344131ed 100644
--- a/mobile/src/session/use-mobile-structured-agent-options.test.ts
+++ b/mobile/src/session/use-mobile-structured-agent-options.test.ts
@@ -6,7 +6,7 @@ import type {
AgentSessionOptionResult,
AgentSessionOptionsResult
} from '../../../src/shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../src/shared/native-chat/input/native-chat-session-options'
import type { RpcClient } from '../transport/rpc-client'
import type {
StructuredAgentSessionMutate,
diff --git a/mobile/src/session/use-mobile-structured-agent-options.ts b/mobile/src/session/use-mobile-structured-agent-options.ts
index 8e3f45aa865..3525e2e08d6 100644
--- a/mobile/src/session/use-mobile-structured-agent-options.ts
+++ b/mobile/src/session/use-mobile-structured-agent-options.ts
@@ -4,7 +4,7 @@ import { useCallback, useLayoutEffect, useMemo, useRef } from 'react'
import { isAgentSessionHandleProvider } from '../../../src/shared/agent-session-provider-handle'
import { structuredAgentSessionSeedCatalog } from '../../../src/shared/structured-agent-session-seed-catalog'
import type { AgentSessionOptionResult } from '../../../src/shared/agent-session-wire'
-import type { SessionOptionValue } from '../../../src/shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../src/shared/native-chat/input/native-chat-session-options'
import {
canSetStructuredAgentSessionOption,
commitStructuredAgentSessionOption,
diff --git a/mobile/src/session/use-mobile-structured-agent-session.test.tsx b/mobile/src/session/use-mobile-structured-agent-session.test.tsx
index 025c9d73db9..a432d849ff0 100644
--- a/mobile/src/session/use-mobile-structured-agent-session.test.tsx
+++ b/mobile/src/session/use-mobile-structured-agent-session.test.tsx
@@ -11,7 +11,7 @@ import type {
AgentJournalRenderItem,
AgentJournalResolution
} from '../../../src/shared/agent-session-journal-types'
-import type { SessionOptionDescriptor } from '../../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../src/shared/native-chat/input/native-chat-session-options'
import type { RpcClient } from '../transport/rpc-client'
import { markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity'
import { formatQuestionFreeTextAnswer } from './native-chat/input/mobile-native-chat-question'
diff --git a/mobile/src/session/use-mobile-structured-option-surface.ts b/mobile/src/session/use-mobile-structured-option-surface.ts
index 6beb0708162..980f2e55896 100644
--- a/mobile/src/session/use-mobile-structured-option-surface.ts
+++ b/mobile/src/session/use-mobile-structured-option-surface.ts
@@ -5,7 +5,7 @@ import type {
SessionOptionDescriptor,
SessionOptionsSurface,
SessionOptionValue
-} from '../../../src/shared/native-chat-session-options'
+} from '../../../src/shared/native-chat/input/native-chat-session-options'
export function useMobileStructuredOptionSurface(args: {
demandModelCatalog: () => void
diff --git a/src/main/claude/claude-structured-option-confirmation.test.ts b/src/main/claude/claude-structured-option-confirmation.test.ts
index 3e35b9783ab..a019994f485 100644
--- a/src/main/claude/claude-structured-option-confirmation.test.ts
+++ b/src/main/claude/claude-structured-option-confirmation.test.ts
@@ -6,7 +6,7 @@ import {
} from '../../shared/structured-agent-session-options'
import { CLAUDE_SESSION_OPTION_CATALOG } from '../../shared/agent-session-option-catalog-claude-codex'
import type { AgentSessionOptionsResult } from '../../shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../shared/native-chat/input/native-chat-session-options'
import { setClaudeStructuredOption } from './claude-structured-options'
import type { ClaudeSession } from './claude-structured-session-state'
import { PROVIDER_SESSION_ID, acquired, fakeClaude } from './claude-structured-session-test-support'
diff --git a/src/main/runtime/client/runtime-client-state.ts b/src/main/runtime/client/runtime-client-state.ts
index db72e35daa2..8d20bd4f42c 100644
--- a/src/main/runtime/client/runtime-client-state.ts
+++ b/src/main/runtime/client/runtime-client-state.ts
@@ -18,7 +18,7 @@ import type { RuntimeClientSettingsUpdate } from '../runtime-client-settings-sha
import type { AgentLaunchSettingsMutation } from '../../../shared/agent-launch-settings'
import type { TerminalQuickCommand } from '../../../shared/terminal-quick-command-types'
import type { TerminalQuickCommandMutation } from '../../../shared/terminal-quick-commands'
-import type { NativeChatSessionOptionSettingsMutation } from '../../../shared/native-chat-session-options'
+import type { NativeChatSessionOptionSettingsMutation } from '../../../shared/native-chat/input/native-chat-session-options'
import type { WorktreeTerminalStopOptions } from '../terminal/stop/worktree-terminal-stop-options'
import type { PtyLivenessVerdict } from '../../../shared/pty-liveness-verdict'
import type { Automation } from '../../../shared/automations-types'
diff --git a/src/main/runtime/rpc/methods/agent-launch-surfaces.ts b/src/main/runtime/rpc/methods/agent-launch-surfaces.ts
index 61e88b5da71..39a67f57c55 100644
--- a/src/main/runtime/rpc/methods/agent-launch-surfaces.ts
+++ b/src/main/runtime/rpc/methods/agent-launch-surfaces.ts
@@ -3,7 +3,7 @@ import { terminalImageViewerSupported } from '../../terminal-image-viewer-env'
* The executor selects surface and prompt delivery; this factory supplies the wire-shaped runtime calls. */
import { randomUUID } from 'node:crypto'
-import { narrowStructuredLaunchSeedOptions } from '../../../../shared/native-chat-session-option-defaults'
+import { narrowStructuredLaunchSeedOptions } from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
import { createStructuredAgentSessionOperationId } from '../../../../shared/structured-agent-session-mutation'
import { structuredAgentSessionTabId } from '../../../../shared/structured-agent-session-projection'
import {
diff --git a/src/main/runtime/rpc/methods/orchestration/worker/worker-topology.ts b/src/main/runtime/rpc/methods/orchestration/worker/worker-topology.ts
index e1c54d3bc72..79221096252 100644
--- a/src/main/runtime/rpc/methods/orchestration/worker/worker-topology.ts
+++ b/src/main/runtime/rpc/methods/orchestration/worker/worker-topology.ts
@@ -1,5 +1,5 @@
import type { AgentLaunchPreferences } from '../../../../../../shared/agent-session-host-authority'
-import { narrowStructuredLaunchSeedOptions } from '../../../../../../shared/native-chat-session-option-defaults'
+import { narrowStructuredLaunchSeedOptions } from '../../../../../../shared/native-chat/input/native-chat-session-option-defaults'
import type { TuiAgent } from '../../../../../../shared/tui-agent'
import type { OrcaRuntimeService } from '../../../../orca-runtime'
import type { OrchestrationDb } from '../../../../orchestration/db'
diff --git a/src/main/runtime/rpc/methods/structured-agent-session-create.ts b/src/main/runtime/rpc/methods/structured-agent-session-create.ts
index 5b2d617a2a2..2cadb1a8089 100644
--- a/src/main/runtime/rpc/methods/structured-agent-session-create.ts
+++ b/src/main/runtime/rpc/methods/structured-agent-session-create.ts
@@ -1,4 +1,4 @@
-import { seededPermissionMode } from '../../../../shared/native-chat-session-option-defaults'
+import { seededPermissionMode } from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
// Resolve the host launch identity, then commit an at-rest create or the compatible acquired path.
import { assertAgentPromptRequestActive } from '../../orca-runtime-core'
diff --git a/src/main/runtime/runtime-agent-terminal-startup.ts b/src/main/runtime/runtime-agent-terminal-startup.ts
index ce1515352da..981de7a8d8a 100644
--- a/src/main/runtime/runtime-agent-terminal-startup.ts
+++ b/src/main/runtime/runtime-agent-terminal-startup.ts
@@ -1,4 +1,4 @@
-import type { SessionOptionValue } from '../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../shared/native-chat/input/native-chat-session-options'
import type { TuiAgent } from '../../shared/tui-agent'
import type { AgentLaunchPreferences } from '../../shared/agent-session-host-authority'
import {
diff --git a/src/main/runtime/runtime-client-settings.ts b/src/main/runtime/runtime-client-settings.ts
index 83f33a6e3f2..a2b05aaaef9 100644
--- a/src/main/runtime/runtime-client-settings.ts
+++ b/src/main/runtime/runtime-client-settings.ts
@@ -14,8 +14,8 @@ import { normalizeSourceControlAiSettings } from '../../shared/source-control-ai
import { normalizeSourceControlGroupOrder } from '../../shared/source-control-group-order'
import { SOURCE_CONTROL_LAUNCH_ACTION_IDS } from '../../shared/source-control-ai-actions'
import type { GlobalSettings } from '../../shared/global-settings-types'
-import { applyNativeChatSessionOptionSettingsMutation } from '../../shared/native-chat-session-option-defaults'
-import type { NativeChatSessionOptionSettingsMutation } from '../../shared/native-chat-session-options'
+import { applyNativeChatSessionOptionSettingsMutation } from '../../shared/native-chat/input/native-chat-session-option-defaults'
+import type { NativeChatSessionOptionSettingsMutation } from '../../shared/native-chat/input/native-chat-session-options'
import { getHostDisplayLabelOverrides } from '../../shared/host-setting-overrides'
import type { TerminalQuickCommand } from '../../shared/terminal-quick-command-types'
import { recordManagedHookInstallFailure } from '../agent-hooks/install-telemetry'
diff --git a/src/main/runtime/session-tabs/structured-session-create-support.ts b/src/main/runtime/session-tabs/structured-session-create-support.ts
index 719df1deee8..0e637335cf5 100644
--- a/src/main/runtime/session-tabs/structured-session-create-support.ts
+++ b/src/main/runtime/session-tabs/structured-session-create-support.ts
@@ -22,7 +22,7 @@ import {
} from '../structured-agent-launch-support'
import { structuredAgentRuntimeMetadata } from '../structured-agent-runtime-metadata'
import { structuredAgentChatProgramNeedsInstall } from '../structured-agent-availability'
-import { structuredLaunchSeedOptions } from '../../../shared/native-chat-session-option-defaults'
+import { structuredLaunchSeedOptions } from '../../../shared/native-chat/input/native-chat-session-option-defaults'
import { hasPersistedStructuredAgentSessionStore as hasPersistedStructuredAgentSessionStoreOnDisk } from '../structured-agent-session-runtime'
import { ensureStructuredAgentSessionHostUnlessRefused } from '../structured-agent-session-host-refusal'
import { getProfileUserDataPath } from '../../orca-profiles/profile-storage-paths'
diff --git a/src/renderer/src/components/native-chat/NativeChatComposer.test.tsx b/src/renderer/src/components/native-chat/NativeChatComposer.test.tsx
index 1c4e3691fdc..ead309a8f78 100644
--- a/src/renderer/src/components/native-chat/NativeChatComposer.test.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatComposer.test.tsx
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type {
SessionOptionDescriptor,
SessionOptionsSurface
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import { clearNativeChatSessionOptionCacheForTests } from './native-chat-session-option-cache'
import { clearNativeChatModelEnrichmentForTests } from './native-chat-session-option-enrichment'
import type * as RemoteRuntimePtyIdModule from '../../../../shared/remote-runtime/remote-runtime-pty-id'
diff --git a/src/renderer/src/components/native-chat/NativeChatComposerActions.tsx b/src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
index 189e601f45c..204fd8d0b8f 100644
--- a/src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
@@ -5,7 +5,7 @@ import { translate } from '@/i18n/i18n'
import type {
SessionOptionDescriptor,
SessionOptionsSurface
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import { NativeChatSessionOptionPickers } from './NativeChatSessionOptionPickers'
import { NativeChatComposerPermissionPicker } from './NativeChatPermissionModePicker'
import { NativeChatComposerGoalChip } from './NativeChatComposerGoalChip'
diff --git a/src/renderer/src/components/native-chat/NativeChatComposerField.tsx b/src/renderer/src/components/native-chat/NativeChatComposerField.tsx
index 6444d8810f4..3597443e7e3 100644
--- a/src/renderer/src/components/native-chat/NativeChatComposerField.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatComposerField.tsx
@@ -20,7 +20,7 @@ import {
import type {
SessionOptionDescriptor,
SessionOptionsSurface
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import type { NativeChatOptionPickerRequest } from './native-chat-composer-types'
import { NativeChatImageAttachmentPreview } from './NativeChatImageAttachmentPreview'
import type { NativeChatComposerGoalMode } from './use-native-chat-composer-submit'
diff --git a/src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx b/src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
index 87c89634a49..e6e5baadb01 100644
--- a/src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
@@ -9,7 +9,7 @@ import {
CommandList
} from '@/components/ui/command'
import { translate } from '@/i18n/i18n'
-import type { SessionOptionSelectChoice } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionSelectChoice } from '../../../../shared/native-chat/input/native-chat-session-options'
import { nativeChatSessionChoiceLabel } from './native-chat-session-option-labels'
import { NativeChatSessionOptionChoiceBody } from './NativeChatSessionOptionChoiceBody'
import { NativeChatSessionOptionWriteGroup } from './NativeChatSessionOptionWriteGroup'
diff --git a/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.test.tsx b/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.test.tsx
index 32764995f68..7fb0c103ca3 100644
--- a/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.test.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.test.tsx
@@ -84,7 +84,7 @@ vi.mock('@/components/ui/dropdown-menu', async () => {
import { structuredAgentSessionPermissionDescriptor } from '../../../../shared/structured-agent-session-permission-option'
import { createStructuredAgentSessionOptionState } from '../../../../shared/structured-agent-session-options'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import {
NativeChatComposerPermissionPicker,
NativeChatPermissionModePicker,
diff --git a/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.tsx b/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.tsx
index 6622eb88af3..d5cee108c05 100644
--- a/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatPermissionModePicker.tsx
@@ -18,7 +18,7 @@ import {
import type {
SessionOptionDescriptor,
SessionOptionsSurface
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import {
NATIVE_CHAT_PERMISSION_MODE_ICONS,
nativeChatPermissionModeDescription,
diff --git a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.focus-return.test.tsx b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.focus-return.test.tsx
index 7ca337ee17f..db381596805 100644
--- a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.focus-return.test.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.focus-return.test.tsx
@@ -15,7 +15,7 @@ vi.mock('@/i18n/i18n', () => ({
}))
import { TooltipProvider } from '@/components/ui/tooltip'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { NativeChatOptionPickerRequest } from './native-chat-composer-types'
import { NativeChatSessionOptionPickers } from './NativeChatSessionOptionPickers'
diff --git a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
index 82da32df871..eb9bea32a67 100644
--- a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
@@ -9,7 +9,7 @@ import {
createStructuredAgentSessionOptionState,
structuredAgentSessionOptionSnapshot
} from '../../../../shared/structured-agent-session-options'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import { RuntimeRpcCallError } from '@/runtime/runtime-rpc-result'
const toastError = vi.hoisted(() => vi.fn())
diff --git a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx
index 8ac9493fcd4..e38db3881c8 100644
--- a/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx
@@ -4,13 +4,13 @@ import { Button } from '@/components/ui/button'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
import { translate } from '@/i18n/i18n'
-import { sortNativeChatSessionOptions } from '../../../../shared/native-chat-session-option-snapshot'
+import { sortNativeChatSessionOptions } from '../../../../shared/native-chat/input/native-chat-session-option-snapshot'
import {
sessionOptionDispatchUnconfirmed,
type SessionOptionDescriptor,
type SessionOptionsSurface,
type SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import {
nativeChatModelPillLabel,
nativeChatOptionValuesLabel,
diff --git a/src/renderer/src/components/native-chat/NativeChatSessionOptionRows.tsx b/src/renderer/src/components/native-chat/NativeChatSessionOptionRows.tsx
index 5a046e662da..e332b9c0e1b 100644
--- a/src/renderer/src/components/native-chat/NativeChatSessionOptionRows.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatSessionOptionRows.tsx
@@ -3,13 +3,13 @@ import { Button } from '@/components/ui/button'
import { Switch } from '@/components/ui/switch'
import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group'
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
-import { sortNativeChatSessionOptions } from '../../../../shared/native-chat-session-option-snapshot'
+import { sortNativeChatSessionOptions } from '../../../../shared/native-chat/input/native-chat-session-option-snapshot'
import {
isReadOnlySessionOptionValue,
type SessionOptionDescriptor,
type SessionOptionSelectChoice,
type SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import {
nativeChatSessionChoiceLabel,
nativeChatSessionChoiceShortLabel,
diff --git a/src/renderer/src/components/native-chat/NativeChatStructuredSession.test-harness.tsx b/src/renderer/src/components/native-chat/NativeChatStructuredSession.test-harness.tsx
index de4a2c33df1..78d607bddb7 100644
--- a/src/renderer/src/components/native-chat/NativeChatStructuredSession.test-harness.tsx
+++ b/src/renderer/src/components/native-chat/NativeChatStructuredSession.test-harness.tsx
@@ -23,7 +23,7 @@ import type { StructuredAgentSessionLaunchLifecycle } from '@/lib/structured-age
import type {
SessionOptionSetResult,
SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import { absent, nullable, widened } from './native-chat-mock-slot-types.test-support'
type StopBackgroundTaskSpy = (sessionId: string, taskId?: string) => unknown
diff --git a/src/renderer/src/components/native-chat/claude-terminal-session-options.ts b/src/renderer/src/components/native-chat/claude-terminal-session-options.ts
index defa87d1035..d2c0500f5fc 100644
--- a/src/renderer/src/components/native-chat/claude-terminal-session-options.ts
+++ b/src/renderer/src/components/native-chat/claude-terminal-session-options.ts
@@ -2,7 +2,7 @@ import {
getAgentSessionOptionCatalog,
type CatalogModel
} from '../../../../shared/agent-session-option-catalog'
-import type { SessionOptionValue } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../../shared/native-chat/input/native-chat-session-options'
import { stripScrollbackAnsi } from './native-chat-scrape-fallback'
const EFFORT_ID_BY_LABEL: Record = {
diff --git a/src/renderer/src/components/native-chat/native-chat-composer-types.ts b/src/renderer/src/components/native-chat/native-chat-composer-types.ts
index 3cc40cab45b..b05855ac30b 100644
--- a/src/renderer/src/components/native-chat/native-chat-composer-types.ts
+++ b/src/renderer/src/components/native-chat/native-chat-composer-types.ts
@@ -12,7 +12,7 @@ import type {
import type {
SessionOptionDescriptor,
SessionOptionsSurface
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import type { NativeChatLaunchDraft } from '@/lib/native-chat-launch-prompt'
import type { NativeChatComposerImageAttachment } from './NativeChatComposerField'
import type { NativeChatAfterStopSend } from './native-chat-composer-target'
diff --git a/src/renderer/src/components/native-chat/native-chat-launch-default-adoption.test.ts b/src/renderer/src/components/native-chat/native-chat-launch-default-adoption.test.ts
index 29a03925d7b..82fab417d4e 100644
--- a/src/renderer/src/components/native-chat/native-chat-launch-default-adoption.test.ts
+++ b/src/renderer/src/components/native-chat/native-chat-launch-default-adoption.test.ts
@@ -7,11 +7,11 @@ import { createNativeChatPtySessionOptions } from './native-chat-pty-session-opt
import {
resolveNativeChatSessionOptionDefaults,
updateNativeChatSessionOptionDefaults
-} from '../../../../shared/native-chat-session-option-defaults'
+} from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
import type {
PersistedNativeChatSessionOptions,
SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
describe('native chat launch-default adoption', () => {
beforeEach(() => clearNativeChatSessionOptionCacheForTests())
diff --git a/src/renderer/src/components/native-chat/native-chat-pty-retired-model.test.ts b/src/renderer/src/components/native-chat/native-chat-pty-retired-model.test.ts
index 086ef3c7847..b24cff5c27d 100644
--- a/src/renderer/src/components/native-chat/native-chat-pty-retired-model.test.ts
+++ b/src/renderer/src/components/native-chat/native-chat-pty-retired-model.test.ts
@@ -1,8 +1,8 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { mergeDiscoveredAuthoritativeModels } from '../../../../shared/agent-session-option-catalog'
import { GROK_SESSION_OPTION_CATALOG } from '../../../../shared/agent-session-option-catalog-grok'
-import { updateNativeChatSessionOptionDefaults } from '../../../../shared/native-chat-session-option-defaults'
-import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat-session-options'
+import { updateNativeChatSessionOptionDefaults } from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
+import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat/input/native-chat-session-options'
import {
clearNativeChatSessionOptionCacheForTests,
readNativeChatSessionOptionCache,
diff --git a/src/renderer/src/components/native-chat/native-chat-pty-session-options.test.ts b/src/renderer/src/components/native-chat/native-chat-pty-session-options.test.ts
index 4cffa5299ca..e6be66933e9 100644
--- a/src/renderer/src/components/native-chat/native-chat-pty-session-options.test.ts
+++ b/src/renderer/src/components/native-chat/native-chat-pty-session-options.test.ts
@@ -10,8 +10,8 @@ import { GROK_SESSION_OPTION_CATALOG } from '../../../../shared/agent-session-op
import {
resolveNativeChatSessionOptionDefaults,
updateNativeChatSessionOptionDefaults
-} from '../../../../shared/native-chat-session-option-defaults'
-import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
+import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat/input/native-chat-session-options'
describe('native chat PTY session options', () => {
beforeEach(() => clearNativeChatSessionOptionCacheForTests())
diff --git a/src/renderer/src/components/native-chat/native-chat-pty-session-options.ts b/src/renderer/src/components/native-chat/native-chat-pty-session-options.ts
index 4a8020493b2..ac24102bea3 100644
--- a/src/renderer/src/components/native-chat/native-chat-pty-session-options.ts
+++ b/src/renderer/src/components/native-chat/native-chat-pty-session-options.ts
@@ -7,25 +7,25 @@ import type {
SessionOptionDescriptor,
SessionOptionsSurface,
SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
-import { recordNativeChatSessionOptionCommand } from '../../../../shared/native-chat-session-option-commands'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
+import { recordNativeChatSessionOptionCommand } from '../../../../shared/native-chat/input/native-chat-session-option-commands'
import {
applyNativeChatReportedSessionOptions,
clearNativeChatSessionModel,
createNativeChatSessionOptionRecord,
setTrackedSessionOption
-} from '../../../../shared/native-chat-session-option-state'
+} from '../../../../shared/native-chat/input/native-chat-session-option-state'
import {
readNativeChatSessionOptionCache,
writeNativeChatSessionOptionCache
} from './native-chat-session-option-cache'
import { createSessionOptionAppliers } from './native-chat-session-option-apply'
+import { buildNativeChatSessionOptionSnapshot } from './native-chat-session-option-snapshot'
import {
- buildNativeChatSessionOptionSnapshot,
resolveEffectiveNativeChatModelId,
withTrackedNativeChatModel,
type NativeChatSessionOptionMode
-} from './native-chat-session-option-snapshot'
+} from '../../../../shared/native-chat/input/native-chat-session-option-snapshot'
import type { NativeChatSessionOptionDispatchCommand } from './native-chat-session-option-command-dispatch'
type PersistSelection = (args: {
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-apply.ts b/src/renderer/src/components/native-chat/native-chat-session-option-apply.ts
index 81b95debe2e..7b0e81664a2 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-apply.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-apply.ts
@@ -10,22 +10,23 @@ import type {
SessionOptionDescriptor,
SessionOptionSetResult,
SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
-import { buildNativeChatSessionOptionCommand } from '../../../../shared/native-chat-session-option-commands'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
+import { buildNativeChatSessionOptionCommand } from '../../../../shared/native-chat/input/native-chat-session-option-commands'
import {
getTrackedSessionOption as getTrackedOption,
isFlipOnlyMidSession,
- type NativeChatSessionOptionRecord
-} from '../../../../shared/native-chat-session-option-state'
+ type NativeChatSessionOptionRecord,
+ flattenNativeChatSessionOptionRecord
+} from '../../../../shared/native-chat/input/native-chat-session-option-state'
import type {
NativeChatSessionOptionDispatchCommand,
NativeChatSessionOptionDispatchResult
} from './native-chat-session-option-command-dispatch'
+
import {
- flattenNativeChatSessionOptionRecord,
resolveEffectiveNativeChatModelId,
type NativeChatSessionOptionMode
-} from './native-chat-session-option-snapshot'
+} from '../../../../shared/native-chat/input/native-chat-session-option-snapshot'
type SessionOptionApplyContext = {
mode: NativeChatSessionOptionMode
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-cache.ts b/src/renderer/src/components/native-chat/native-chat-session-option-cache.ts
index cb21945bc1d..9dbabe23714 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-cache.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-cache.ts
@@ -1,11 +1,11 @@
import type { AgentType } from '../../../../shared/agent-status-types'
-import type { SessionOptionValue } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../../shared/native-chat/input/native-chat-session-options'
import {
cloneNativeChatSessionOptionRecord,
createNativeChatSessionOptionRecord,
type NativeChatSessionOptionRecord,
type TrackedNativeChatSessionOption
-} from '../../../../shared/native-chat-session-option-state'
+} from '../../../../shared/native-chat/input/native-chat-session-option-state'
import { setBoundedScopeCacheEntry } from '../../../../shared/native-chat/native-chat-scope-cache'
const sessionOptionCache = new Map()
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-enrichment.ts b/src/renderer/src/components/native-chat/native-chat-session-option-enrichment.ts
index a7dce98836d..5cfb1565d2a 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-enrichment.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-enrichment.ts
@@ -5,11 +5,11 @@ import {
mergeDiscoveredAuthoritativeModels,
type CatalogModel
} from '../../../../shared/agent-session-option-catalog'
-import { resolveNativeChatSessionOptionDefaults } from '../../../../shared/native-chat-session-option-defaults'
+import { resolveNativeChatSessionOptionDefaults } from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
import type {
PersistedNativeChatSessionOptions,
SessionOptionValue
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
type CatalogEnrichmentEntry = {
agent: AgentType
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-labels.test.ts b/src/renderer/src/components/native-chat/native-chat-session-option-labels.test.ts
index 60360b6c796..7a65c43a209 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-labels.test.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-labels.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest'
import { nativeChatModelPillLabel } from './native-chat-session-option-labels'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
vi.mock('@/i18n/i18n', () => ({
translate: vi.fn((_key: string, fallback: string) => fallback)
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-labels.ts b/src/renderer/src/components/native-chat/native-chat-session-option-labels.ts
index 4cae9cf0ef1..2af9ade309c 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-labels.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-labels.ts
@@ -3,7 +3,7 @@ import {
type SessionOptionDescriptor,
type SessionOptionDisabledReason,
type SessionOptionSelectChoice
-} from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import { translate } from '@/i18n/i18n'
export function nativeChatSessionOptionLabel(descriptor: SessionOptionDescriptor): string {
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-settings-write.ts b/src/renderer/src/components/native-chat/native-chat-session-option-settings-write.ts
index 4796efd44ec..1c427c534cb 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-settings-write.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-settings-write.ts
@@ -1,4 +1,4 @@
-import type { NativeChatSessionOptionSettingsMutation } from '../../../../shared/native-chat-session-options'
+import type { NativeChatSessionOptionSettingsMutation } from '../../../../shared/native-chat/input/native-chat-session-options'
import { callRuntimeRpc } from '@/runtime/runtime-rpc-client'
import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target'
diff --git a/src/renderer/src/components/native-chat/native-chat-session-option-snapshot.ts b/src/renderer/src/components/native-chat/native-chat-session-option-snapshot.ts
index 4acb1a1932a..58c455de043 100644
--- a/src/renderer/src/components/native-chat/native-chat-session-option-snapshot.ts
+++ b/src/renderer/src/components/native-chat/native-chat-session-option-snapshot.ts
@@ -2,26 +2,17 @@ import type {
AgentSessionOptionCatalog,
CatalogModel
} from '../../../../shared/agent-session-option-catalog'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type {
+ SessionOptionDescriptor,
+ NativeChatLiveOptionTransport
+} from '../../../../shared/native-chat/input/native-chat-session-options'
import {
buildNativeChatSessionOptionSnapshot as buildSharedSnapshot,
- resolveEffectiveNativeChatModelId,
- withTrackedNativeChatModel,
- type NativeChatLiveOptionTransport,
type NativeChatSessionOptionMode
-} from '../../../../shared/native-chat-session-option-snapshot'
-import {
- flattenNativeChatSessionOptionRecord,
- type NativeChatSessionOptionRecord
-} from '../../../../shared/native-chat-session-option-state'
-import { translate } from '@/i18n/i18n'
+} from '../../../../shared/native-chat/input/native-chat-session-option-snapshot'
-export type { NativeChatLiveOptionTransport, NativeChatSessionOptionMode }
-export {
- flattenNativeChatSessionOptionRecord,
- resolveEffectiveNativeChatModelId,
- withTrackedNativeChatModel
-}
+import type { NativeChatSessionOptionRecord } from '../../../../shared/native-chat/input/native-chat-session-option-state'
+import { translate } from '@/i18n/i18n'
export function buildNativeChatSessionOptionSnapshot(args: {
catalog: AgentSessionOptionCatalog
diff --git a/src/renderer/src/components/native-chat/native-chat-submission-navigation.test.tsx b/src/renderer/src/components/native-chat/native-chat-submission-navigation.test.tsx
index 3a3795780a8..e2bd607737a 100644
--- a/src/renderer/src/components/native-chat/native-chat-submission-navigation.test.tsx
+++ b/src/renderer/src/components/native-chat/native-chat-submission-navigation.test.tsx
@@ -3,7 +3,7 @@ import { act, cleanup, fireEvent, render, renderHook } from '@testing-library/re
import { afterEach, expect, it, vi } from 'vitest'
import { useRef } from 'react'
import type { NativeChatStructuredComposerTransport } from './native-chat-composer-types'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import { dispatchStructuredAgentSessionComposerCommand } from '../../../../shared/structured-agent-session-composer'
import { useNativeChatStructuredComposerSend } from './use-native-chat-structured-composer-send'
import { useNativeChatComposerSubmit } from './use-native-chat-composer-submit'
diff --git a/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.test.tsx b/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.test.tsx
index d05aca127eb..321d8ca2fdc 100644
--- a/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.test.tsx
+++ b/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.test.tsx
@@ -20,7 +20,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
getStructuredAgentSessionLaunchSelection: () => null
}))
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { StructuredAgentSessionMutate } from './use-structured-agent-session-mutate'
import { useStructuredAgentSessionOptions } from './use-structured-agent-session-options'
import { resetHostModelCatalogSnapshotsForTests } from '@/runtime/host-model-catalog-snapshots'
diff --git a/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.unavailable.test.tsx b/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.unavailable.test.tsx
index 67a6fdd9875..7d39b6898a6 100644
--- a/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.unavailable.test.tsx
+++ b/src/renderer/src/components/native-chat/use-host-model-catalog-upgrade.unavailable.test.tsx
@@ -21,7 +21,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
getStructuredAgentSessionLaunchSelection: () => null
}))
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { StructuredAgentSessionMutate } from './use-structured-agent-session-mutate'
import { useStructuredAgentSessionOptions } from './use-structured-agent-session-options'
import { resetHostModelCatalogSnapshotsForTests } from '@/runtime/host-model-catalog-snapshots'
diff --git a/src/renderer/src/components/native-chat/use-native-chat-session-options.ts b/src/renderer/src/components/native-chat/use-native-chat-session-options.ts
index 074e30e3036..8793d1a129f 100644
--- a/src/renderer/src/components/native-chat/use-native-chat-session-options.ts
+++ b/src/renderer/src/components/native-chat/use-native-chat-session-options.ts
@@ -4,8 +4,8 @@ import {
getAgentSessionOptionCatalog,
type CatalogModel
} from '../../../../shared/agent-session-option-catalog'
-import { matchNativeChatCatalogModelId } from '../../../../shared/native-chat-session-option-state'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import { matchNativeChatCatalogModelId } from '../../../../shared/native-chat/input/native-chat-session-option-state'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import { useAppStore } from '../../store'
import {
createNativeChatPtySessionOptions,
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.first-frame.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-options.first-frame.test.tsx
index 74a476939bd..be15602ed84 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.first-frame.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.first-frame.test.tsx
@@ -29,7 +29,7 @@ import type {
AgentSessionModelCatalogResult,
AgentSessionOptionsResult
} from '../../../../shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target'
import {
preloadHostModelCatalogSnapshots,
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.learned-default.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-options.learned-default.test.tsx
index 853b4c6adbd..aa872aa6eb2 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.learned-default.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.learned-default.test.tsx
@@ -23,7 +23,7 @@ import type {
AgentSessionModelOption,
AgentSessionOptionsResult
} from '../../../../shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import { resetHostModelCatalogSnapshotsForTests } from '@/runtime/host-model-catalog-snapshots'
import type { StructuredAgentSessionMutate } from './use-structured-agent-session-mutate'
import { useStructuredAgentSessionOptions } from './use-structured-agent-session-options'
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.permission-mode.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-options.permission-mode.test.tsx
index d8c275c6de5..754ec0aed32 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.permission-mode.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.permission-mode.test.tsx
@@ -27,7 +27,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
getStructuredAgentSessionLaunchSelection: () => null
}))
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { StructuredAgentSessionMutate } from './use-structured-agent-session-mutate'
import { useStructuredAgentSessionOptions } from './use-structured-agent-session-options'
import { resetHostModelCatalogSnapshotsForTests } from '@/runtime/host-model-catalog-snapshots'
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.preloaded-agents.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-options.preloaded-agents.test.tsx
index 0c7a02e4644..27fdf35c602 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.preloaded-agents.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.preloaded-agents.test.tsx
@@ -38,7 +38,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
}))
import type { AgentSessionModelCatalogResult } from '../../../../shared/agent-session-wire'
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import { getDefaultSettings } from '../../../../shared/constants'
import { useAppStore } from '@/store'
import { resetHostModelCatalogSnapshotsForTests } from '@/runtime/host-model-catalog-snapshots'
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
index ea19fc16f5b..eb08964f227 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
@@ -28,7 +28,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
getStructuredAgentSessionLaunchSelection: () => null
}))
-import type { SessionOptionDescriptor } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { StructuredAgentSessionMutate } from './use-structured-agent-session-mutate'
import { useStructuredAgentSessionOptions } from './use-structured-agent-session-options'
import { structuredAgentSessionSendSelection } from '../../../../shared/structured-agent-session-option-view'
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-options.ts b/src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
index a7e244fed4f..5c8b014fda5 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
@@ -6,7 +6,7 @@ import { toast } from 'sonner'
import { useCallback, useLayoutEffect, useMemo, useRef } from 'react'
import type { AgentSessionOptionResult } from '../../../../shared/agent-session-wire'
import { structuredAgentSessionSeedCatalog } from '../../../../shared/structured-agent-session-seed-catalog'
-import type { SessionOptionsSurface } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionsSurface } from '../../../../shared/native-chat/input/native-chat-session-options'
import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from '../../../../shared/agent-chat-permission-mode'
import {
canSetStructuredAgentSessionOption,
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts b/src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
index 9d34e292fb3..dbb581b6b4b 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
@@ -1,4 +1,4 @@
-import { structuredLaunchRequestedOptions } from '../../../../shared/native-chat-session-option-defaults'
+import { structuredLaunchRequestedOptions } from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
import { useCallback } from 'react'
import { structuredAgentSessionSendSelection } from '../../../../shared/structured-agent-session-option-view'
import { getStructuredAgentSessionLaunchSelection } from '@/lib/structured-agent-session-launch-options'
diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx
index 08a6f047ccd..a46d0a5ce4c 100644
--- a/src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx
+++ b/src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx
@@ -62,8 +62,8 @@ import type {
import {
applyNativeChatSessionOptionSettingsMutation,
resolveStructuredLaunchSeedOptions
-} from '../../../../shared/native-chat-session-option-defaults'
-import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat-session-options'
+} from '../../../../shared/native-chat/input/native-chat-session-option-defaults'
+import type { PersistedNativeChatSessionOptions } from '../../../../shared/native-chat/input/native-chat-session-options'
import { useStructuredAgentSession } from './use-structured-agent-session'
/** Replay every host mutation in order, exactly as the runtime does. */
diff --git a/src/renderer/src/components/terminal-pane/pty-connection-types.ts b/src/renderer/src/components/terminal-pane/pty-connection-types.ts
index deee26142a8..eceec0fc685 100644
--- a/src/renderer/src/components/terminal-pane/pty-connection-types.ts
+++ b/src/renderer/src/components/terminal-pane/pty-connection-types.ts
@@ -16,7 +16,7 @@ import type {
SleepingAgentLaunchConfig
} from '../../../../shared/agent-session-resume'
import type { TerminalKittyKeyboardModeTracker } from '../../../../shared/terminal-kitty-keyboard-mode-tracker'
-import type { SessionOptionValue } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { PtyPreconnectInputEntry } from './pty-preconnect-input-buffer'
import type { AgentPaneLaunchRequest } from '../../../../shared/agent-pane-launch-request'
diff --git a/src/renderer/src/lib/agent-launch-through-host.ts b/src/renderer/src/lib/agent-launch-through-host.ts
index 9f64383a22c..0a807ec94bd 100644
--- a/src/renderer/src/lib/agent-launch-through-host.ts
+++ b/src/renderer/src/lib/agent-launch-through-host.ts
@@ -10,7 +10,7 @@ import { isNativeChatEnabled } from '../../../shared/structured-native-chat-laun
import type { TuiAgent } from '../../../shared/tui-agent'
import type { LaunchSource } from '../../../shared/telemetry-events'
import type { Tab } from '../../../shared/tab-types'
-import type { SessionOptionValue } from '../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../shared/native-chat/input/native-chat-session-options'
export type HostAgentLaunchArgs = {
agent: TuiAgent
diff --git a/src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-persistence.ts b/src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-persistence.ts
index 5a524da387e..6c541cfe638 100644
--- a/src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-persistence.ts
+++ b/src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-persistence.ts
@@ -5,7 +5,7 @@ import {
type StructuredAgentLaunchPersistedRecord
} from './structured-agent-session-launch-record'
-import { parseStructuredLaunchSeedOptions } from '../../../../../shared/native-chat-session-option-defaults'
+import { parseStructuredLaunchSeedOptions } from '../../../../../shared/native-chat/input/native-chat-session-option-defaults'
import {
LOCAL_EXECUTION_HOST_ID,
parseExecutionHostId,
diff --git a/src/renderer/src/lib/launch-structured-agent-session.ts b/src/renderer/src/lib/launch-structured-agent-session.ts
index c7c000fd802..f6ce28ffce6 100644
--- a/src/renderer/src/lib/launch-structured-agent-session.ts
+++ b/src/renderer/src/lib/launch-structured-agent-session.ts
@@ -7,7 +7,7 @@ import {
type StructuredAgentSessionFirstMessage,
type StructuredAgentSessionResumeSource
} from '../../../shared/structured-agent-session-create'
-import { structuredLaunchSeedOptions } from '../../../shared/native-chat-session-option-defaults'
+import { structuredLaunchSeedOptions } from '../../../shared/native-chat/input/native-chat-session-option-defaults'
import { toRuntimeWorktreeSelector } from '@/runtime/runtime-worktree-selector'
import { useAppStore } from '@/store'
import {
diff --git a/src/renderer/src/lib/runtime-agent-background-create.ts b/src/renderer/src/lib/runtime-agent-background-create.ts
index e44bd2c0940..6f0ea75b1d0 100644
--- a/src/renderer/src/lib/runtime-agent-background-create.ts
+++ b/src/renderer/src/lib/runtime-agent-background-create.ts
@@ -2,7 +2,7 @@ import { buildDefaultTerminalOptions } from '@/lib/pane-manager/pane-terminal-op
import { createAgentSessionKeyboardOptions } from '@/runtime/agent-session-keyboard-capability'
import type { SleepingAgentLaunchConfig } from '../../../shared/agent-session-resume'
import type { StartupCommandDelivery } from '../../../shared/codex-startup-delivery'
-import type { SessionOptionValue } from '../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../shared/native-chat/input/native-chat-session-options'
import type { RuntimeTerminalCreate } from '../../../shared/runtime-types'
import type { TuiAgent } from '../../../shared/tui-agent'
import {
diff --git a/src/renderer/src/lib/structured-agent-session-host-admission.ts b/src/renderer/src/lib/structured-agent-session-host-admission.ts
index bd2b020457d..a173dc3fe7c 100644
--- a/src/renderer/src/lib/structured-agent-session-host-admission.ts
+++ b/src/renderer/src/lib/structured-agent-session-host-admission.ts
@@ -1,6 +1,6 @@
import type { TuiAgent } from '../../../shared/tui-agent'
import { isDefinitiveAgentSessionCreateRefusal } from '../../../shared/agent-session-definitive-refusal'
-import { parseStructuredLaunchSeedOptions } from '../../../shared/native-chat-session-option-defaults'
+import { parseStructuredLaunchSeedOptions } from '../../../shared/native-chat/input/native-chat-session-option-defaults'
import { hasRuntimeRpcErrorCode } from '../../../shared/runtime-rpc-error-code'
import type { RuntimeClientTarget } from '../../../shared/runtime-client-target'
import { callStructuredAgentSession } from '@/runtime/structured-agent-session-client'
diff --git a/src/renderer/src/lib/structured-agent-session-launch-create-message.ts b/src/renderer/src/lib/structured-agent-session-launch-create-message.ts
index 6076f4db32c..30efc8d6985 100644
--- a/src/renderer/src/lib/structured-agent-session-launch-create-message.ts
+++ b/src/renderer/src/lib/structured-agent-session-launch-create-message.ts
@@ -1,7 +1,7 @@
import {
structuredLaunchCompatibleOptions,
structuredLaunchRequestedOptions
-} from '../../../shared/native-chat-session-option-defaults'
+} from '../../../shared/native-chat/input/native-chat-session-option-defaults'
import { structuredAgentSessionCreateFingerprint } from '../../../shared/structured-agent-session-mutation'
import type { StructuredAgentSessionCreateParams } from '../../../shared/structured-agent-session-create'
import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from '../../../shared/agent-chat-permission-mode'
diff --git a/src/renderer/src/lib/structured-agent-session-launch-options.ts b/src/renderer/src/lib/structured-agent-session-launch-options.ts
index 939471b69b9..0323f0c98bf 100644
--- a/src/renderer/src/lib/structured-agent-session-launch-options.ts
+++ b/src/renderer/src/lib/structured-agent-session-launch-options.ts
@@ -7,7 +7,7 @@ import {
STRUCTURED_LAUNCH_OPTION_IDS,
structuredLaunchCompatibleOptions,
structuredLaunchRequestedOptions
-} from '../../../shared/native-chat-session-option-defaults'
+} from '../../../shared/native-chat/input/native-chat-session-option-defaults'
import {
createStructuredAgentSessionOperationId,
structuredAgentSessionPayloadFingerprint
diff --git a/src/renderer/src/lib/worktree-startup-payload.ts b/src/renderer/src/lib/worktree-startup-payload.ts
index 77084b0a91f..c7c04e0a7f8 100644
--- a/src/renderer/src/lib/worktree-startup-payload.ts
+++ b/src/renderer/src/lib/worktree-startup-payload.ts
@@ -5,7 +5,7 @@ import type {
AgentProviderSessionMetadata,
SleepingAgentLaunchConfig
} from '../../../shared/agent-session-resume'
-import type { SessionOptionValue } from '../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../shared/native-chat/input/native-chat-session-options'
/** Telemetry threaded from the launch site to `pty:spawn`; main fires `agent_started`
* only after the spawn succeeds. See telemetry-plan.md§Agent launch semantics. */
diff --git a/src/renderer/src/store/terminals/terminal-actions.ts b/src/renderer/src/store/terminals/terminal-actions.ts
index d29531762d6..76870709c83 100644
--- a/src/renderer/src/store/terminals/terminal-actions.ts
+++ b/src/renderer/src/store/terminals/terminal-actions.ts
@@ -10,7 +10,7 @@ import type {
SleepingAgentSessionRecord
} from '../../../../shared/agent-session-resume'
import type { StartupCommandDelivery } from '../../../../shared/codex-startup-delivery'
-import type { SessionOptionValue } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { AgentStartedTelemetry } from '../../lib/worktree-startup-payload'
import type { AiVaultSessionTitle } from '../../../../shared/ai-vault-session-title'
import type {
diff --git a/src/renderer/src/store/terminals/terminal-state.ts b/src/renderer/src/store/terminals/terminal-state.ts
index 283fc06d841..c0b076fb5c4 100644
--- a/src/renderer/src/store/terminals/terminal-state.ts
+++ b/src/renderer/src/store/terminals/terminal-state.ts
@@ -12,7 +12,7 @@ import type {
} from '../../../../shared/agent-session-resume'
import type { ExecutionHostId } from '../../../../shared/execution-host'
import type { StartupCommandDelivery } from '../../../../shared/codex-startup-delivery'
-import type { SessionOptionValue } from '../../../../shared/native-chat-session-options'
+import type { SessionOptionValue } from '../../../../shared/native-chat/input/native-chat-session-options'
import type { AgentStartedTelemetry } from '../../lib/worktree-startup-payload'
import type { NativeChatLaunchDraft, NativeChatLaunchPrompt } from '@/lib/native-chat-launch-prompt'
import type { HostSessionSlices } from '@/lib/workspace-session-host-split'
diff --git a/src/shared/agent-launch-settings-permissions.test.ts b/src/shared/agent-launch-settings-permissions.test.ts
index 963209c582d..226a6af62c9 100644
--- a/src/shared/agent-launch-settings-permissions.test.ts
+++ b/src/shared/agent-launch-settings-permissions.test.ts
@@ -1,6 +1,6 @@
import { expect, it } from 'vitest'
import { agentLaunchSettingsMutationUpdates } from './agent-launch-settings'
-import { structuredLaunchSeedOptions } from './native-chat-session-option-defaults'
+import { structuredLaunchSeedOptions } from './native-chat/input/native-chat-session-option-defaults'
it.each([
['yolo', 'full-access'],
diff --git a/src/shared/agent-scoped-permission-defaults.test.ts b/src/shared/agent-scoped-permission-defaults.test.ts
index 540c877125d..2bcaacfc76c 100644
--- a/src/shared/agent-scoped-permission-defaults.test.ts
+++ b/src/shared/agent-scoped-permission-defaults.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { agentLaunchSettingsMutationUpdates } from './agent-launch-settings'
-import { structuredLaunchSeedOptions } from './native-chat-session-option-defaults'
+import { structuredLaunchSeedOptions } from './native-chat/input/native-chat-session-option-defaults'
import { resolveTuiAgentLaunchArgs } from './tui-agent-launch-defaults'
import { AgentLaunchSettingsMutation } from './rpc-contract/agent-launch-settings-params'
diff --git a/src/shared/agent-session-option-catalog-grok.test.ts b/src/shared/agent-session-option-catalog-grok.test.ts
index d06c5065427..1a7c8e43afd 100644
--- a/src/shared/agent-session-option-catalog-grok.test.ts
+++ b/src/shared/agent-session-option-catalog-grok.test.ts
@@ -7,7 +7,7 @@ import {
} from './agent-session-option-catalog'
import { GROK_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-grok'
import { resolveAgentSessionOptionLaunch } from './agent-session-option-launch'
-import { parseBuiltSessionOptionCommand } from './native-chat-session-option-commands'
+import { parseBuiltSessionOptionCommand } from './native-chat/input/native-chat-session-option-commands'
function grokEffortOption(modelId = 'grok-4.7'): CatalogOption {
const model = GROK_SESSION_OPTION_CATALOG.models.find((candidate) => candidate.id === modelId)!
diff --git a/src/shared/agent-session-option-catalog-omp.test.ts b/src/shared/agent-session-option-catalog-omp.test.ts
index e717a7b7f0b..ee766c835bf 100644
--- a/src/shared/agent-session-option-catalog-omp.test.ts
+++ b/src/shared/agent-session-option-catalog-omp.test.ts
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest'
import { OMP_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-omp'
import { resolveAgentSessionOptionLaunch } from './agent-session-option-launch'
-import { parseBuiltSessionOptionCommand } from './native-chat-session-option-commands'
+import { parseBuiltSessionOptionCommand } from './native-chat/input/native-chat-session-option-commands'
import { parseOmpModelList } from './omp-model-list-probe'
const LISTING = JSON.stringify({
diff --git a/src/shared/agent-session-option-catalog-types.ts b/src/shared/agent-session-option-catalog-types.ts
index 63b7da10473..50ecf4e8229 100644
--- a/src/shared/agent-session-option-catalog-types.ts
+++ b/src/shared/agent-session-option-catalog-types.ts
@@ -3,7 +3,7 @@ import type {
SessionOptionDescriptor,
SessionOptionSelectChoice,
SessionOptionValue
-} from './native-chat-session-options'
+} from './native-chat/input/native-chat-session-options'
export type CatalogAgentInteractionDetection = 'claude-model-switch-confirmation'
export type CatalogCommandDelivery = 'type'
diff --git a/src/shared/agent-session-option-catalog.test.ts b/src/shared/agent-session-option-catalog.test.ts
index 402b3beb695..4c513cd46b2 100644
--- a/src/shared/agent-session-option-catalog.test.ts
+++ b/src/shared/agent-session-option-catalog.test.ts
@@ -4,7 +4,7 @@ import { resolveAgentSessionOptionLaunch } from './agent-session-option-launch'
import {
resolveNativeChatSessionOptionDefaults,
updateNativeChatSessionOptionDefaults
-} from './native-chat-session-option-defaults'
+} from './native-chat/input/native-chat-session-option-defaults'
describe('agent session option catalog', () => {
it('returns no catalog for unknown agents', () => {
diff --git a/src/shared/agent-session-option-catalog.ts b/src/shared/agent-session-option-catalog.ts
index 9f70413ad61..5620436a530 100644
--- a/src/shared/agent-session-option-catalog.ts
+++ b/src/shared/agent-session-option-catalog.ts
@@ -19,7 +19,7 @@ import type {
CatalogModel,
CatalogOption
} from './agent-session-option-catalog-types'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
export type {
AgentSessionOptionCatalog,
diff --git a/src/shared/agent-session-option-launch.ts b/src/shared/agent-session-option-launch.ts
index 37935852bd2..6ed47855f51 100644
--- a/src/shared/agent-session-option-launch.ts
+++ b/src/shared/agent-session-option-launch.ts
@@ -7,7 +7,7 @@ import type {
CatalogOption,
CatalogOptionApply
} from './agent-session-option-catalog-types'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from './agent-chat-permission-mode'
import { agentPermissionArgsForLaunch } from './tui-agent-launch-defaults'
import {
diff --git a/src/shared/agent-startup-plan-inputs-baseline-test-fixture.ts b/src/shared/agent-startup-plan-inputs-baseline-test-fixture.ts
index 7a09962625f..7eff2e03852 100644
--- a/src/shared/agent-startup-plan-inputs-baseline-test-fixture.ts
+++ b/src/shared/agent-startup-plan-inputs-baseline-test-fixture.ts
@@ -1,7 +1,7 @@
// Exact function from660243e61ff:agent-startup-plan-inputs.ts; only export/import paths differ.
// Full-source SHA256573ec1fd98d1859f983e625cd593a1e636a53eb67e43871168e0bfc14e84130c.
import type { AgentStartupSettings, AgentStartupPlanInputs } from './agent-startup-plan-inputs'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import type { TuiAgent } from './tui-agent'
import { resolveTuiAgentLaunchArgs, resolveTuiAgentLaunchEnv } from './tui-agent-launch-defaults'
import { resolveStartupShell, type AgentStartupShell } from './tui-agent-startup-shell'
diff --git a/src/shared/agent-startup-plan-inputs.ts b/src/shared/agent-startup-plan-inputs.ts
index 190bd02e097..4fe20f1f959 100644
--- a/src/shared/agent-startup-plan-inputs.ts
+++ b/src/shared/agent-startup-plan-inputs.ts
@@ -1,6 +1,6 @@
import { readLaunchPermissionChoice } from './tui-agent-permission-choice'
import type { GlobalSettings } from './global-settings-types'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import type { TuiAgent } from './tui-agent'
import {
agentLaunchPermissionSettings,
diff --git a/src/shared/flag-prompt-startup.ts b/src/shared/flag-prompt-startup.ts
index 50e1be306fa..2cb0d6b7414 100644
--- a/src/shared/flag-prompt-startup.ts
+++ b/src/shared/flag-prompt-startup.ts
@@ -1,6 +1,6 @@
import type { AgentStartupPlan } from './tui-agent-startup'
import type { SleepingAgentLaunchConfig } from './agent-session-resume'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import type { TuiAgent } from './tui-agent'
import { TUI_AGENT_CONFIG } from './tui-agent-config'
import { tokenizeStartupCommand, type AgentStartupShell } from './tui-agent-startup-shell'
diff --git a/src/shared/global-settings-types.ts b/src/shared/global-settings-types.ts
index 7966de41497..8ead6133447 100644
--- a/src/shared/global-settings-types.ts
+++ b/src/shared/global-settings-types.ts
@@ -15,7 +15,7 @@ import type { ClaudeAgentTeamsMode } from './claude-agent-teams-tmux-compat'
import type { TerminalCustomTheme } from './terminal-custom-themes'
import type { UiLanguage } from './ui-language'
import type { GlobalWindowsRuntimeDefault } from './project-execution-runtime'
-import type { PersistedNativeChatSessionOptions } from './native-chat-session-options'
+import type { PersistedNativeChatSessionOptions } from './native-chat/input/native-chat-session-options'
import type { AgentChatPermissionMode } from './agent-chat-permission-mode'
import type { ComputerAwakeMode } from './computer-awake-mode'
import type { CommitMessageAiSettings } from './commit-message-ai-types'
diff --git a/src/shared/native-chat-session-option-commands.test.ts b/src/shared/native-chat/input/native-chat-session-option-commands.test.ts
similarity index 99%
rename from src/shared/native-chat-session-option-commands.test.ts
rename to src/shared/native-chat/input/native-chat-session-option-commands.test.ts
index 407b8b9ce03..b794f902042 100644
--- a/src/shared/native-chat-session-option-commands.test.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-commands.test.ts
@@ -2,8 +2,8 @@ import { describe, expect, it, vi } from 'vitest'
import {
CLAUDE_SESSION_OPTION_CATALOG,
CODEX_SESSION_OPTION_CATALOG
-} from './agent-session-option-catalog-claude-codex'
-import { GROK_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-grok'
+} from '../../agent-session-option-catalog-claude-codex'
+import { GROK_SESSION_OPTION_CATALOG } from '../../agent-session-option-catalog-grok'
import {
buildNativeChatSessionOptionCommand,
parseBuiltSessionOptionCommand,
diff --git a/src/shared/native-chat-session-option-commands.ts b/src/shared/native-chat/input/native-chat-session-option-commands.ts
similarity index 99%
rename from src/shared/native-chat-session-option-commands.ts
rename to src/shared/native-chat/input/native-chat-session-option-commands.ts
index 9a268d39709..9046eabf497 100644
--- a/src/shared/native-chat-session-option-commands.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-commands.ts
@@ -3,7 +3,7 @@ import type {
CatalogMidSessionApply,
CatalogModel,
CatalogOptionApply
-} from './agent-session-option-catalog'
+} from '../../agent-session-option-catalog-types'
import type { SessionOptionValue } from './native-chat-session-options'
import {
clearNativeChatSessionModel,
diff --git a/src/shared/native-chat-session-option-defaults.test.ts b/src/shared/native-chat/input/native-chat-session-option-defaults.test.ts
similarity index 100%
rename from src/shared/native-chat-session-option-defaults.test.ts
rename to src/shared/native-chat/input/native-chat-session-option-defaults.test.ts
diff --git a/src/shared/native-chat-session-option-defaults.ts b/src/shared/native-chat/input/native-chat-session-option-defaults.ts
similarity index 97%
rename from src/shared/native-chat-session-option-defaults.ts
rename to src/shared/native-chat/input/native-chat-session-option-defaults.ts
index 17431f3eb6f..2e51f5f474f 100644
--- a/src/shared/native-chat-session-option-defaults.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-defaults.ts
@@ -1,16 +1,16 @@
-import type { AgentType } from './agent-status-types'
+import type { AgentType } from '../../agent-status-types'
import {
AGENT_CHAT_PERMISSION_MODE_OPTION_ID,
isAgentChatPermissionChoice,
newChatPermissionModeForSettings,
type NewChatPermissionSettings
-} from './agent-chat-permission-mode'
-import type { GlobalSettings } from './global-settings-types'
+} from '../../agent-chat-permission-mode'
+import type { GlobalSettings } from '../../global-settings-types'
import {
findCatalogModel,
getAgentSessionOptionCatalog,
sessionOptionValueIsValid
-} from './agent-session-option-catalog'
+} from '../../agent-session-option-catalog'
import type {
NativeChatSessionOptionSettingsMutation,
PersistedNativeChatSessionOptions,
@@ -19,7 +19,7 @@ import type {
import {
decodeStructuredAgentSessionOptionValue,
encodeStructuredAgentSessionOptionValue
-} from './structured-agent-session-option-codec'
+} from '../../structured-agent-session-option-codec'
export function resolveNativeChatSessionOptionDefaults(
persisted: PersistedNativeChatSessionOptions | null | undefined,
diff --git a/src/shared/native-chat-session-option-snapshot.test.ts b/src/shared/native-chat/input/native-chat-session-option-snapshot.test.ts
similarity index 97%
rename from src/shared/native-chat-session-option-snapshot.test.ts
rename to src/shared/native-chat/input/native-chat-session-option-snapshot.test.ts
index 7e32fd1ab26..70fbf4d3a3b 100644
--- a/src/shared/native-chat-session-option-snapshot.test.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-snapshot.test.ts
@@ -3,14 +3,14 @@ import {
sessionOptionDispatchUnconfirmed,
type SessionOptionDescriptor
} from './native-chat-session-options'
-import { mergeDiscoveredAuthoritativeModels } from './agent-session-option-catalog'
+import { mergeDiscoveredAuthoritativeModels } from '../../agent-session-option-catalog'
import {
CLAUDE_SESSION_OPTION_CATALOG,
CODEX_SESSION_OPTION_CATALOG
-} from './agent-session-option-catalog-claude-codex'
-import { CURSOR_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-gemini-cursor'
-import { GROK_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-grok'
-import { resolveAgentSessionOptionLaunch } from './agent-session-option-launch'
+} from '../../agent-session-option-catalog-claude-codex'
+import { CURSOR_SESSION_OPTION_CATALOG } from '../../agent-session-option-catalog-gemini-cursor'
+import { GROK_SESSION_OPTION_CATALOG } from '../../agent-session-option-catalog-grok'
+import { resolveAgentSessionOptionLaunch } from '../../agent-session-option-launch'
import {
createNativeChatSessionOptionRecord,
type NativeChatSessionOptionRecord
diff --git a/src/shared/native-chat-session-option-snapshot.ts b/src/shared/native-chat/input/native-chat-session-option-snapshot.ts
similarity index 98%
rename from src/shared/native-chat-session-option-snapshot.ts
rename to src/shared/native-chat/input/native-chat-session-option-snapshot.ts
index bb16040a0c8..f464ac78504 100644
--- a/src/shared/native-chat-session-option-snapshot.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-snapshot.ts
@@ -1,10 +1,10 @@
-import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from './agent-chat-permission-mode'
+import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from '../../agent-chat-permission-mode'
import type {
AgentSessionOptionCatalog,
CatalogMidSessionApply,
CatalogModel,
CatalogOption
-} from './agent-session-option-catalog'
+} from '../../agent-session-option-catalog-types'
import type {
NativeChatLiveOptionTransport,
SessionOptionDescriptor,
@@ -18,7 +18,6 @@ import {
} from './native-chat-session-option-state'
export type NativeChatSessionOptionMode = 'draft' | 'live'
-export type { NativeChatLiveOptionTransport }
function choiceWithCurrent(
choices: readonly SessionOptionSelectChoice[],
diff --git a/src/shared/native-chat-session-option-state.test.ts b/src/shared/native-chat/input/native-chat-session-option-state.test.ts
similarity index 98%
rename from src/shared/native-chat-session-option-state.test.ts
rename to src/shared/native-chat/input/native-chat-session-option-state.test.ts
index a73a1305c84..d7220be4240 100644
--- a/src/shared/native-chat-session-option-state.test.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-state.test.ts
@@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'
import {
CLAUDE_SESSION_OPTION_CATALOG,
CODEX_SESSION_OPTION_CATALOG
-} from './agent-session-option-catalog-claude-codex'
+} from '../../agent-session-option-catalog-claude-codex'
import {
applyNativeChatReportedSessionOptions,
createNativeChatSessionOptionRecord,
diff --git a/src/shared/native-chat-session-option-state.ts b/src/shared/native-chat/input/native-chat-session-option-state.ts
similarity index 98%
rename from src/shared/native-chat-session-option-state.ts
rename to src/shared/native-chat/input/native-chat-session-option-state.ts
index e00b6edf724..2ac51c92ba0 100644
--- a/src/shared/native-chat-session-option-state.ts
+++ b/src/shared/native-chat/input/native-chat-session-option-state.ts
@@ -1,8 +1,8 @@
-import type { AgentType } from './agent-status-types'
+import type { AgentType } from '../../agent-status-types'
import type {
CatalogMidSessionApply,
AgentSessionOptionCatalog
-} from './agent-session-option-catalog'
+} from '../../agent-session-option-catalog-types'
import type { SessionOptionValue, SessionOptionValueSource } from './native-chat-session-options'
export type TrackedNativeChatSessionOption = {
diff --git a/src/shared/native-chat-session-options.ts b/src/shared/native-chat/input/native-chat-session-options.ts
similarity index 98%
rename from src/shared/native-chat-session-options.ts
rename to src/shared/native-chat/input/native-chat-session-options.ts
index e4c48d44647..36c46fb634e 100644
--- a/src/shared/native-chat-session-options.ts
+++ b/src/shared/native-chat/input/native-chat-session-options.ts
@@ -1,4 +1,4 @@
-import type { AgentType } from './agent-status-types'
+import type { AgentType } from '../../agent-status-types'
export type SessionOptionValue = string | boolean
diff --git a/src/shared/source-control-action-launch-preferences.ts b/src/shared/source-control-action-launch-preferences.ts
index 78e66988e11..8ae3fc78591 100644
--- a/src/shared/source-control-action-launch-preferences.ts
+++ b/src/shared/source-control-action-launch-preferences.ts
@@ -15,7 +15,7 @@ import {
import { isTuiAgent } from './tui-agent-config'
import type { TuiAgent } from './tui-agent'
import { isAgentSessionHandleProvider } from './agent-session-provider-handle'
-import { STRUCTURED_LAUNCH_SEED_OPTION_IDS } from './native-chat-session-option-defaults'
+import { STRUCTURED_LAUNCH_SEED_OPTION_IDS } from './native-chat/input/native-chat-session-option-defaults'
import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from './agent-chat-permission-mode'
import {
agentPermissionHasTerminalChoice,
diff --git a/src/shared/structured-agent-session-composer.ts b/src/shared/structured-agent-session-composer.ts
index 0fd1517eb6f..75f16772353 100644
--- a/src/shared/structured-agent-session-composer.ts
+++ b/src/shared/structured-agent-session-composer.ts
@@ -3,7 +3,10 @@ import {
getTextDrivenNativeChatCommands
} from './native-chat-agent-profiles'
import type { AgentType } from './agent-status-types'
-import type { SessionOptionDescriptor, SessionOptionValue } from './native-chat-session-options'
+import type {
+ SessionOptionDescriptor,
+ SessionOptionValue
+} from './native-chat/input/native-chat-session-options'
import {
sessionSlashCommandSuggestions,
type SlashCommandSuggestion
diff --git a/src/shared/structured-agent-session-option-codec.ts b/src/shared/structured-agent-session-option-codec.ts
index 2d0f97e5eb6..e9685570d20 100644
--- a/src/shared/structured-agent-session-option-codec.ts
+++ b/src/shared/structured-agent-session-option-codec.ts
@@ -1,4 +1,4 @@
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
const STRUCTURED_BOOLEAN_OPTION_IDS = new Set(['fastMode'])
diff --git a/src/shared/structured-agent-session-option-picks.test.ts b/src/shared/structured-agent-session-option-picks.test.ts
index a79f3c88416..ea15055b9d8 100644
--- a/src/shared/structured-agent-session-option-picks.test.ts
+++ b/src/shared/structured-agent-session-option-picks.test.ts
@@ -4,11 +4,11 @@ import {
applyNativeChatSessionOptionPicks,
resolveStructuredLaunchSeedOptions,
updateNativeChatSessionOptionDefaults
-} from './native-chat-session-option-defaults'
+} from './native-chat/input/native-chat-session-option-defaults'
import type {
PersistedNativeChatSessionOptions,
SessionOptionValue
-} from './native-chat-session-options'
+} from './native-chat/input/native-chat-session-options'
import {
applyStructuredAgentSessionOptions,
createStructuredAgentSessionOptionState,
diff --git a/src/shared/structured-agent-session-option-snapshot.ts b/src/shared/structured-agent-session-option-snapshot.ts
index d0174e829fc..808d8c763f4 100644
--- a/src/shared/structured-agent-session-option-snapshot.ts
+++ b/src/shared/structured-agent-session-option-snapshot.ts
@@ -7,9 +7,12 @@ import {
nativeChatSessionOptionDescriptors,
withTrackedNativeChatModel,
type NativeChatShownModel
-} from './native-chat-session-option-snapshot'
-import type { SessionOptionDescriptor, SessionOptionValue } from './native-chat-session-options'
-import type { TrackedNativeChatSessionOption } from './native-chat-session-option-state'
+} from './native-chat/input/native-chat-session-option-snapshot'
+import type {
+ SessionOptionDescriptor,
+ SessionOptionValue
+} from './native-chat/input/native-chat-session-options'
+import type { TrackedNativeChatSessionOption } from './native-chat/input/native-chat-session-option-state'
import { effectiveServiceTier } from './structured-agent-session-effective-tier'
import { serviceTierOption } from './structured-agent-session-discovered-model'
import {
diff --git a/src/shared/structured-agent-session-option-state.ts b/src/shared/structured-agent-session-option-state.ts
index 746062f9891..a2bc80ea448 100644
--- a/src/shared/structured-agent-session-option-state.ts
+++ b/src/shared/structured-agent-session-option-state.ts
@@ -1,6 +1,6 @@
import type { AgentType } from './agent-status-types'
-import type { SessionOptionValue } from './native-chat-session-options'
-import type { TrackedNativeChatSessionOption } from './native-chat-session-option-state'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
+import type { TrackedNativeChatSessionOption } from './native-chat/input/native-chat-session-option-state'
/** Independent host-held values need no model parent. Mutate the record in place so session identity stays stable across picker fences. */
export type StructuredAgentSessionOptionRecord = {
diff --git a/src/shared/structured-agent-session-option-view.ts b/src/shared/structured-agent-session-option-view.ts
index 3deeab24a47..5143a893473 100644
--- a/src/shared/structured-agent-session-option-view.ts
+++ b/src/shared/structured-agent-session-option-view.ts
@@ -1,10 +1,10 @@
-import { structuredLaunchRequestedOptions } from './native-chat-session-option-defaults'
+import { structuredLaunchRequestedOptions } from './native-chat/input/native-chat-session-option-defaults'
import {
commitStructuredAgentSessionOptionValues,
structuredAgentSessionOptionSnapshot,
type StructuredAgentSessionOptionState
} from './structured-agent-session-options'
-import type { SessionOptionDescriptor } from './native-chat-session-options'
+import type { SessionOptionDescriptor } from './native-chat/input/native-chat-session-options'
import {
cloneStructuredAgentSessionOptionRecord,
createStructuredAgentSessionOptionRecord,
diff --git a/src/shared/structured-agent-session-options.test.ts b/src/shared/structured-agent-session-options.test.ts
index 69c327b96e5..6f59d42be59 100644
--- a/src/shared/structured-agent-session-options.test.ts
+++ b/src/shared/structured-agent-session-options.test.ts
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { OMP_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-omp'
import { CODEX_SESSION_OPTION_CATALOG } from './agent-session-option-catalog-claude-codex'
-import { buildNativeChatSessionOptionSnapshot } from './native-chat-session-option-snapshot'
-import { createNativeChatSessionOptionRecord } from './native-chat-session-option-state'
+import { buildNativeChatSessionOptionSnapshot } from './native-chat/input/native-chat-session-option-snapshot'
+import { createNativeChatSessionOptionRecord } from './native-chat/input/native-chat-session-option-state'
import {
applyStructuredAgentSessionModelCatalog,
applyStructuredAgentSessionOptions,
diff --git a/src/shared/structured-agent-session-options.ts b/src/shared/structured-agent-session-options.ts
index 4f350a85c9c..a5ee0ac40a6 100644
--- a/src/shared/structured-agent-session-options.ts
+++ b/src/shared/structured-agent-session-options.ts
@@ -8,14 +8,14 @@ import {
import {
STRUCTURED_LAUNCH_OPTION_IDS,
STRUCTURED_LAUNCH_SEED_OPTION_IDS
-} from './native-chat-session-option-defaults'
+} from './native-chat/input/native-chat-session-option-defaults'
import { AGENT_CHAT_PERMISSION_MODE_OPTION_ID } from './agent-chat-permission-mode'
import { usesInstalledAgentModelCatalog } from './agent-model-catalog-ownership'
import {
structuredAgentSessionDescribedModel,
structuredAgentSessionShownModel
} from './structured-agent-session-option-snapshot'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import type {
AgentSessionModelCatalogResult,
AgentSessionOptionsResult
diff --git a/src/shared/structured-agent-session-permission-option.test.ts b/src/shared/structured-agent-session-permission-option.test.ts
index d3cc08e4a4b..b9b226d7f05 100644
--- a/src/shared/structured-agent-session-permission-option.test.ts
+++ b/src/shared/structured-agent-session-permission-option.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import type { AgentSessionOptionsResult } from './agent-session-wire'
-import { sortNativeChatSessionOptions } from './native-chat-session-option-snapshot'
+import { sortNativeChatSessionOptions } from './native-chat/input/native-chat-session-option-snapshot'
import {
applyStructuredAgentSessionOptions,
commitStructuredAgentSessionOption,
diff --git a/src/shared/structured-agent-session-permission-option.ts b/src/shared/structured-agent-session-permission-option.ts
index ed10f767380..9a9a7ccd753 100644
--- a/src/shared/structured-agent-session-permission-option.ts
+++ b/src/shared/structured-agent-session-permission-option.ts
@@ -6,7 +6,7 @@ import {
type AgentChatPermissionMode
} from './agent-chat-permission-mode'
import type { StructuredAgentSessionOptionRecord } from './structured-agent-session-option-state'
-import type { SessionOptionDescriptor } from './native-chat-session-options'
+import type { SessionOptionDescriptor } from './native-chat/input/native-chat-session-options'
/** English names and descriptions for surfaces without a translation catalog. */
const MODE_COPY: Readonly> =
diff --git a/src/shared/structured-agent-session-unlisted-effort.ts b/src/shared/structured-agent-session-unlisted-effort.ts
index ba920f552a8..70549aef528 100644
--- a/src/shared/structured-agent-session-unlisted-effort.ts
+++ b/src/shared/structured-agent-session-unlisted-effort.ts
@@ -1,6 +1,6 @@
import type { AgentSessionOptionCatalog } from './agent-session-option-catalog'
-import type { SessionOptionDescriptor } from './native-chat-session-options'
-import type { TrackedNativeChatSessionOption } from './native-chat-session-option-state'
+import type { SessionOptionDescriptor } from './native-chat/input/native-chat-session-options'
+import type { TrackedNativeChatSessionOption } from './native-chat/input/native-chat-session-option-state'
/** Unlisted models expose current effort read-only and send it unchanged; no listing proves which alternatives they accept. */
export function withUnlistedEffort(
diff --git a/src/shared/tui-agent-launch-command-argument-values.test.ts b/src/shared/tui-agent-launch-command-argument-values.test.ts
index 136be442e9c..42bc5204241 100644
--- a/src/shared/tui-agent-launch-command-argument-values.test.ts
+++ b/src/shared/tui-agent-launch-command-argument-values.test.ts
@@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'
import recordings from './fixtures/source-control-launch-recordings.json'
import { normalizeSourceControlActionLaunchPreferences } from './source-control-ai-actions'
import { sourceControlActionLaunchOptions } from './source-control-action-launch-preferences'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import { resolveAgentLaunchCommand, terminalSessionOptionInputs } from './tui-agent-launch-command'
import { tokenizeStartupCommand } from './tui-agent-startup-shell'
import type { TuiAgent } from './tui-agent'
diff --git a/src/shared/tui-agent-launch-command.ts b/src/shared/tui-agent-launch-command.ts
index 887c9cbaa2f..63e94c1fe4c 100644
--- a/src/shared/tui-agent-launch-command.ts
+++ b/src/shared/tui-agent-launch-command.ts
@@ -2,7 +2,7 @@ import {
removeOverriddenAgentSessionArgs,
resolveAgentSessionOptionLaunch
} from './agent-session-option-launch'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import { agentArgTerminatorIndex } from './agent-session-option-agent-args'
import { getTuiAgentLaunchCommand, TUI_AGENT_CONFIG } from './tui-agent-config'
import {
diff --git a/src/shared/tui-agent-resume-startup.ts b/src/shared/tui-agent-resume-startup.ts
index a37d14c6ca4..150d8af0bd8 100644
--- a/src/shared/tui-agent-resume-startup.ts
+++ b/src/shared/tui-agent-resume-startup.ts
@@ -4,7 +4,7 @@ import {
type AgentProviderSessionMetadata,
type ResumableTuiAgent
} from './agent-session-resume'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import { buildSleepingAgentLaunchConfig } from './sleeping-agent-launch-config'
import { resolveAgentLaunchCommand } from './tui-agent-launch-command'
import type { AgentStartupPlan } from './tui-agent-startup'
diff --git a/src/shared/tui-agent-startup.ts b/src/shared/tui-agent-startup.ts
index a62c0847722..9a7776587f6 100644
--- a/src/shared/tui-agent-startup.ts
+++ b/src/shared/tui-agent-startup.ts
@@ -15,7 +15,7 @@ import { buildSleepingAgentLaunchConfig } from './sleeping-agent-launch-config'
import { planHermesStartupQuery } from './hermes-startup-query'
import { inlineAgentDraftFitsPlatform } from './agent-draft-platform-limit'
import type { TuiAgent } from './tui-agent'
-import type { SessionOptionValue } from './native-chat-session-options'
+import type { SessionOptionValue } from './native-chat/input/native-chat-session-options'
import { resolveAgentLaunchCommand } from './tui-agent-launch-command'
import { appliedSessionOptionProps, buildFlagPromptStartupPlan } from './flag-prompt-startup'
diff --git a/tests/e2e/claude-auto-mode-host-catalog.unit.test.ts b/tests/e2e/claude-auto-mode-host-catalog.unit.test.ts
index e6bd8fabf1d..ee9e4e60263 100644
--- a/tests/e2e/claude-auto-mode-host-catalog.unit.test.ts
+++ b/tests/e2e/claude-auto-mode-host-catalog.unit.test.ts
@@ -28,7 +28,7 @@ vi.mock('@/lib/structured-agent-session-launch-options', () => ({
import { agentSessionConversationView } from '../../src/shared/agent-session-conversation-view'
import { agentSessionRecordFixture } from '../../src/main/native-chat/agent-session-record-test-fixture'
-import type { SessionOptionDescriptor } from '../../src/shared/native-chat-session-options'
+import type { SessionOptionDescriptor } from '../../src/shared/native-chat/input/native-chat-session-options'
import { createClaudeModelCatalogProbe } from '../../src/main/claude/claude-model-catalog-probe'
import { createAgentModelCatalogFilePersistence } from '../../src/main/native-chat/agent-model-catalog/agent-model-catalog-persistence'
import { createAgentModelCatalogService } from '../../src/main/native-chat/agent-model-catalog/agent-model-catalog-service'