.cursor/.gitignore | 1 + apps/server/src/git/Layers/ClaudeTextGeneration.test.ts | 21 +- apps/server/src/git/Layers/ClaudeTextGeneration.ts | 40 +- apps/server/src/git/Layers/CodexTextGeneration.test.ts | 13 +- apps/server/src/git/Layers/CodexTextGeneration.ts | 11 +- apps/server/src/git/Layers/CursorTextGeneration.test.ts | 13 +- apps/server/src/git/Layers/CursorTextGeneration.ts | 2 +- apps/server/src/git/Layers/OpenCodeTextGeneration.ts | 14 +- apps/server/src/git/Layers/RoutingTextGeneration.ts | 36 +- apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts | 127 ++--- apps/server/src/orchestration/decider.projectScripts.test.ts | 25 +- apps/server/src/persistence/Migrations.ts | 2 + apps/server/src/persistence/Migrations/026_CanonicalizeModelSelectionOptions.test.ts | 450 +++++++++++++++++ apps/server/src/persistence/Migrations/026_CanonicalizeModelSelectionOptions.ts | 138 ++++++ apps/server/src/provider/Layers/ClaudeAdapter.test.ts | 111 ++--- apps/server/src/provider/Layers/ClaudeAdapter.ts | 64 +-- apps/server/src/provider/Layers/ClaudeProvider.ts | 227 ++++++--- apps/server/src/provider/Layers/CodexAdapter.test.ts | 23 +- apps/server/src/provider/Layers/CodexAdapter.ts | 27 +- apps/server/src/provider/Layers/CodexProvider.ts | 61 ++- apps/server/src/provider/Layers/CursorAdapter.test.ts | 27 +- apps/server/src/provider/Layers/CursorAdapter.ts | 6 +- apps/server/src/provider/Layers/CursorProvider.test.ts | 195 ++++---- apps/server/src/provider/Layers/CursorProvider.ts | 144 ++++-- apps/server/src/provider/Layers/OpenCodeAdapter.ts | 5 +- apps/server/src/provider/Layers/OpenCodeProvider.test.ts | 14 +- apps/server/src/provider/Layers/OpenCodeProvider.ts | 71 ++- apps/server/src/provider/Layers/ProviderAdapterRegistry.ts | 13 +- apps/server/src/provider/Layers/ProviderRegistry.test.ts | 93 ++-- apps/server/src/provider/Layers/ProviderRegistry.ts | 47 +- apps/server/src/provider/Layers/ProviderService.test.ts | 22 +- apps/server/src/provider/acp/CursorAcpSupport.test.ts | 10 +- apps/server/src/provider/acp/CursorAcpSupport.ts | 6 +- apps/server/src/provider/builtInProviderCatalog.ts | 49 ++ apps/server/src/provider/makeManagedServerProvider.test.ts | 28 +- apps/server/src/provider/opencodeRuntime.ts | 1 - apps/server/src/provider/providerSnapshot.test.ts | 28 +- apps/server/src/provider/providerSnapshot.ts | 55 +++ apps/server/src/provider/providerStatusCache.test.ts | 27 +- apps/server/src/serverSettings.test.ts | 99 ++-- apps/web/src/components/ChatView.browser.tsx | 127 ++--- apps/web/src/components/ChatView.tsx | 13 +- apps/web/src/components/chat/ChatComposer.tsx | 20 +- apps/web/src/components/chat/CompactComposerControlsMenu.browser.tsx | 195 ++++---- apps/web/src/components/chat/ProviderModelPicker.browser.tsx | 258 +++++----- apps/web/src/components/chat/ProviderStatusBanner.tsx | 5 +- apps/web/src/components/chat/TraitsPicker.browser.tsx | 821 -------------------------------- apps/web/src/components/chat/TraitsPicker.tsx | 500 +++++++------------ apps/web/src/components/chat/composerProviderRegistry.test.tsx | 516 -------------------- apps/web/src/components/chat/composerProviderRegistry.tsx | 216 --------- apps/web/src/components/chat/composerProviderState.test.tsx | 242 ++++++++++ apps/web/src/components/chat/composerProviderState.tsx | 108 +++++ apps/web/src/components/settings/SettingsPanels.tsx | 28 +- apps/web/src/composerDraftStore.test.ts | 141 +++--- apps/web/src/composerDraftStore.ts | 399 +++++++--------- apps/web/src/modelSelection.ts | 47 +- apps/web/src/providerModels.ts | 68 ++- packages/contracts/src/model.ts | 180 ++++--- packages/contracts/src/orchestration.test.ts | 93 +++- packages/contracts/src/orchestration.ts | 15 +- packages/contracts/src/provider.test.ts | 63 +-- packages/contracts/src/server.ts | 3 + packages/contracts/src/settings.ts | 37 +- packages/shared/src/model.test.ts | 282 +++++------ packages/shared/src/model.ts | 369 ++++++++------ packages/shared/src/serverSettings.test.ts | 71 +-- packages/shared/src/serverSettings.ts | 68 ++- 67 files changed, 3403 insertions(+), 3828 deletions(-)