@gkorepanov/ccodex 0.4.19 → 0.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/config/compatibility.json +5 -5
- package/dist/claude/modelCatalog.d.ts +4 -0
- package/dist/claude/modelCatalog.js +14 -0
- package/dist/claude/modelCatalog.js.map +1 -1
- package/dist/claude/modelSelection.d.ts +14 -0
- package/dist/claude/modelSelection.js +26 -0
- package/dist/claude/modelSelection.js.map +1 -1
- package/dist/claude/resultClassifier.js +4 -1
- package/dist/claude/resultClassifier.js.map +1 -1
- package/dist/claude/service.d.ts +26 -2
- package/dist/claude/service.js +150 -67
- package/dist/claude/service.js.map +1 -1
- package/dist/claude/session/codexRollout.js +40 -1
- package/dist/claude/session/codexRollout.js.map +1 -1
- package/dist/claude/session/commands.d.ts +8 -1
- package/dist/claude/session/providerRuntimeFactory.js +13 -2
- package/dist/claude/session/providerRuntimeFactory.js.map +1 -1
- package/dist/claude/session/session.js +40 -14
- package/dist/claude/session/session.js.map +1 -1
- package/dist/claude/toolMapper.js +1 -1
- package/dist/claude/toolMapper.js.map +1 -1
- package/dist/codex/generated/ClientRequest.d.ts +117 -1
- package/dist/codex/generated/ImageGenerationFailure.d.ts +5 -0
- package/dist/codex/generated/ImageGenerationFailure.js +3 -0
- package/dist/codex/generated/ImageGenerationFailure.js.map +1 -0
- package/dist/codex/generated/ImageGenerationItem.d.ts +3 -0
- package/dist/codex/generated/InitializeCapabilities.d.ts +10 -1
- package/dist/codex/generated/PathUri.d.ts +4 -3
- package/dist/codex/generated/PlanType.d.ts +1 -1
- package/dist/codex/generated/ResponseItem.d.ts +1 -0
- package/dist/codex/generated/ResponseItemRuntimeSchema.js +2 -2
- package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -1
- package/dist/codex/generated/ReviewDecision.d.ts +1 -1
- package/dist/codex/generated/ServerNotification.d.ts +20 -0
- package/dist/codex/generated/ServerNotificationEnvelope.d.ts +20 -0
- package/dist/codex/generated/index.d.ts +1 -0
- package/dist/codex/generated/index.js.map +1 -1
- package/dist/codex/generated/v2/AccountLoginCompletedNotification.d.ts +2 -0
- package/dist/codex/generated/v2/AgentMessageDelivery.d.ts +1 -0
- package/dist/codex/generated/v2/AgentMessageDelivery.js +3 -0
- package/dist/codex/generated/v2/AgentMessageDelivery.js.map +1 -0
- package/dist/codex/generated/v2/AppsReadParams.d.ts +4 -0
- package/dist/codex/generated/v2/AutoReviewRequirements.d.ts +4 -0
- package/dist/codex/generated/v2/AutoReviewRequirements.js +3 -0
- package/dist/codex/generated/v2/AutoReviewRequirements.js.map +1 -0
- package/dist/codex/generated/v2/AwsCredentialType.d.ts +1 -0
- package/dist/codex/generated/v2/AwsCredentialType.js +3 -0
- package/dist/codex/generated/v2/AwsCredentialType.js.map +1 -0
- package/dist/codex/generated/v2/BedrockAwsProfile.d.ts +4 -0
- package/dist/codex/generated/v2/BedrockAwsProfile.js +3 -0
- package/dist/codex/generated/v2/BedrockAwsProfile.js.map +1 -0
- package/dist/codex/generated/v2/BedrockDiscoverParams.d.ts +1 -0
- package/dist/codex/generated/v2/BedrockDiscoverParams.js +3 -0
- package/dist/codex/generated/v2/BedrockDiscoverParams.js.map +1 -0
- package/dist/codex/generated/v2/BedrockDiscoverResponse.d.ts +6 -0
- package/dist/codex/generated/v2/BedrockDiscoverResponse.js +3 -0
- package/dist/codex/generated/v2/BedrockDiscoverResponse.js.map +1 -0
- package/dist/codex/generated/v2/BedrockEnvironmentCredential.d.ts +5 -0
- package/dist/codex/generated/v2/BedrockEnvironmentCredential.js +3 -0
- package/dist/codex/generated/v2/BedrockEnvironmentCredential.js.map +1 -0
- package/dist/codex/generated/v2/BedrockSetupParams.d.ts +16 -0
- package/dist/codex/generated/v2/BedrockSetupParams.js +3 -0
- package/dist/codex/generated/v2/BedrockSetupParams.js.map +1 -0
- package/dist/codex/generated/v2/BedrockSetupResponse.d.ts +1 -0
- package/dist/codex/generated/v2/BedrockSetupResponse.js +3 -0
- package/dist/codex/generated/v2/BedrockSetupResponse.js.map +1 -0
- package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.d.ts +1 -0
- package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.js +3 -0
- package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.js.map +1 -0
- package/dist/codex/generated/v2/CodexErrorInfo.d.ts +1 -1
- package/dist/codex/generated/v2/CommandAction.d.ts +2 -2
- package/dist/codex/generated/v2/ConfigLayerSource.d.ts +6 -0
- package/dist/codex/generated/v2/ConfigRequirements.d.ts +5 -0
- package/dist/codex/generated/v2/ConfiguredHookHandler.d.ts +10 -0
- package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.d.ts +1 -0
- package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.js +3 -0
- package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigDetectResponse.d.ts +2 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordParams.d.ts +2 -2
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.d.ts +11 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.d.ts +8 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentConfigImportItemTypeSuccess.d.ts +4 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.d.ts +6 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.js.map +1 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.d.ts +1 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.js +3 -0
- package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.js.map +1 -0
- package/dist/codex/generated/v2/GetAccountTokenUsageParams.d.ts +6 -0
- package/dist/codex/generated/v2/GetAccountTokenUsageParams.js +3 -0
- package/dist/codex/generated/v2/GetAccountTokenUsageParams.js.map +1 -0
- package/dist/codex/generated/v2/GetAccountTokenUsageResponse.d.ts +5 -0
- package/dist/codex/generated/v2/HookHandlerType.d.ts +1 -1
- package/dist/codex/generated/v2/HookMetadata.d.ts +13 -4
- package/dist/codex/generated/v2/McpAuthStatus.d.ts +1 -1
- package/dist/codex/generated/v2/McpResourceReadParams.d.ts +5 -0
- package/dist/codex/generated/v2/McpResourceReadResponse.d.ts +4 -0
- package/dist/codex/generated/v2/McpServerOauthClientRegistration.d.ts +1 -0
- package/dist/codex/generated/v2/McpServerOauthClientRegistration.js +3 -0
- package/dist/codex/generated/v2/McpServerOauthClientRegistration.js.map +1 -0
- package/dist/codex/generated/v2/McpServerOauthLoginParams.d.ts +5 -0
- package/dist/codex/generated/v2/McpServerStatus.d.ts +1 -0
- package/dist/codex/generated/v2/Model.d.ts +6 -0
- package/dist/codex/generated/v2/ModelUpgradeInfo.d.ts +4 -0
- package/dist/codex/generated/v2/MultiAgentVersion.d.ts +4 -0
- package/dist/codex/generated/v2/MultiAgentVersion.js +3 -0
- package/dist/codex/generated/v2/MultiAgentVersion.js.map +1 -0
- package/dist/codex/generated/v2/PluginDisabledReason.d.ts +1 -0
- package/dist/codex/generated/v2/PluginDisabledReason.js +3 -0
- package/dist/codex/generated/v2/PluginDisabledReason.js.map +1 -0
- package/dist/codex/generated/v2/PluginInstallParams.d.ts +4 -0
- package/dist/codex/generated/v2/PluginSearchParams.d.ts +9 -0
- package/dist/codex/generated/v2/PluginSearchParams.js +3 -0
- package/dist/codex/generated/v2/PluginSearchParams.js.map +1 -0
- package/dist/codex/generated/v2/PluginSearchResponse.d.ts +5 -0
- package/dist/codex/generated/v2/PluginSearchResponse.js +3 -0
- package/dist/codex/generated/v2/PluginSearchResponse.js.map +1 -0
- package/dist/codex/generated/v2/PluginSearchResult.d.ts +7 -0
- package/dist/codex/generated/v2/PluginSearchResult.js +3 -0
- package/dist/codex/generated/v2/PluginSearchResult.js.map +1 -0
- package/dist/codex/generated/v2/PluginSearchScope.d.ts +1 -0
- package/dist/codex/generated/v2/PluginSearchScope.js +3 -0
- package/dist/codex/generated/v2/PluginSearchScope.js.map +1 -0
- package/dist/codex/generated/v2/PluginSummary.d.ts +13 -0
- package/dist/codex/generated/v2/Project.d.ts +12 -0
- package/dist/codex/generated/v2/Project.js +3 -0
- package/dist/codex/generated/v2/Project.js.map +1 -0
- package/dist/codex/generated/v2/ProjectChangeType.d.ts +1 -0
- package/dist/codex/generated/v2/ProjectChangeType.js +3 -0
- package/dist/codex/generated/v2/ProjectChangeType.js.map +1 -0
- package/dist/codex/generated/v2/ProjectChangedNotification.d.ts +5 -0
- package/dist/codex/generated/v2/ProjectChangedNotification.js +3 -0
- package/dist/codex/generated/v2/ProjectChangedNotification.js.map +1 -0
- package/dist/codex/generated/v2/ProjectCreateParams.d.ts +9 -0
- package/dist/codex/generated/v2/ProjectCreateParams.js +3 -0
- package/dist/codex/generated/v2/ProjectCreateParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectCreateResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectCreateResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectCreateResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectDeleteParams.d.ts +3 -0
- package/dist/codex/generated/v2/ProjectDeleteParams.js +3 -0
- package/dist/codex/generated/v2/ProjectDeleteParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectDeleteResponse.d.ts +1 -0
- package/dist/codex/generated/v2/ProjectDeleteResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectDeleteResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectImportParams.d.ts +10 -0
- package/dist/codex/generated/v2/ProjectImportParams.js +3 -0
- package/dist/codex/generated/v2/ProjectImportParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectImportResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectImportResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectImportResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectListParams.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectListParams.js +3 -0
- package/dist/codex/generated/v2/ProjectListParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectListResponse.d.ts +5 -0
- package/dist/codex/generated/v2/ProjectListResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectListResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectMoveParams.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectMoveParams.js +3 -0
- package/dist/codex/generated/v2/ProjectMoveParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectMoveResponse.d.ts +1 -0
- package/dist/codex/generated/v2/ProjectMoveResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectMoveResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectReadParams.d.ts +3 -0
- package/dist/codex/generated/v2/ProjectReadParams.js +3 -0
- package/dist/codex/generated/v2/ProjectReadParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectReadResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectReadResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectReadResponse.js.map +1 -0
- package/dist/codex/generated/v2/ProjectRoot.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectRoot.js +3 -0
- package/dist/codex/generated/v2/ProjectRoot.js.map +1 -0
- package/dist/codex/generated/v2/ProjectUpdateParams.d.ts +9 -0
- package/dist/codex/generated/v2/ProjectUpdateParams.js +3 -0
- package/dist/codex/generated/v2/ProjectUpdateParams.js.map +1 -0
- package/dist/codex/generated/v2/ProjectUpdateResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ProjectUpdateResponse.js +3 -0
- package/dist/codex/generated/v2/ProjectUpdateResponse.js.map +1 -0
- package/dist/codex/generated/v2/QueuedSubmission.d.ts +6 -0
- package/dist/codex/generated/v2/QueuedSubmission.js +3 -0
- package/dist/codex/generated/v2/QueuedSubmission.js.map +1 -0
- package/dist/codex/generated/v2/ServerDiagnosticsGauge.d.ts +4 -0
- package/dist/codex/generated/v2/ServerDiagnosticsGauge.js +3 -0
- package/dist/codex/generated/v2/ServerDiagnosticsGauge.js.map +1 -0
- package/dist/codex/generated/v2/ServerDiagnosticsParams.d.ts +1 -0
- package/dist/codex/generated/v2/ServerDiagnosticsParams.js +3 -0
- package/dist/codex/generated/v2/ServerDiagnosticsParams.js.map +1 -0
- package/dist/codex/generated/v2/ServerDiagnosticsProcess.d.ts +5 -0
- package/dist/codex/generated/v2/ServerDiagnosticsProcess.js +3 -0
- package/dist/codex/generated/v2/ServerDiagnosticsProcess.js.map +1 -0
- package/dist/codex/generated/v2/ServerDiagnosticsResponse.d.ts +6 -0
- package/dist/codex/generated/v2/ServerDiagnosticsResponse.js +3 -0
- package/dist/codex/generated/v2/ServerDiagnosticsResponse.js.map +1 -0
- package/dist/codex/generated/v2/StrictReviewRequiredNotification.d.ts +8 -0
- package/dist/codex/generated/v2/StrictReviewRequiredNotification.js +3 -0
- package/dist/codex/generated/v2/StrictReviewRequiredNotification.js.map +1 -0
- package/dist/codex/generated/v2/Thread.d.ts +11 -2
- package/dist/codex/generated/v2/ThreadBackgroundTerminal.d.ts +2 -2
- package/dist/codex/generated/v2/ThreadItem.d.ts +3 -0
- package/dist/codex/generated/v2/ThreadListParams.d.ts +8 -2
- package/dist/codex/generated/v2/ThreadMetadataUpdateParams.d.ts +5 -4
- package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.js +3 -0
- package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueAddParams.d.ts +6 -0
- package/dist/codex/generated/v2/ThreadQueueAddParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueAddParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueAddResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueAddResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueAddResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueChangedNotification.d.ts +3 -0
- package/dist/codex/generated/v2/ThreadQueueChangedNotification.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueChangedNotification.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteParams.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteResponse.d.ts +3 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueDeleteResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueListParams.d.ts +11 -0
- package/dist/codex/generated/v2/ThreadQueueListParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueListParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueListResponse.d.ts +8 -0
- package/dist/codex/generated/v2/ThreadQueueListResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueListResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueReorderParams.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueReorderParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueReorderParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueReorderResponse.d.ts +1 -0
- package/dist/codex/generated/v2/ThreadQueueReorderResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueReorderResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueStartParams.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueStartParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueStartParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueStartResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueStartResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueStartResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateParams.d.ts +6 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateParams.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadQueueUpdateResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadRealtimeStartParams.d.ts +13 -0
- package/dist/codex/generated/v2/ThreadResumeResponse.d.ts +4 -4
- package/dist/codex/generated/v2/ThreadRevertParams.d.ts +12 -0
- package/dist/codex/generated/v2/ThreadRevertParams.js +3 -0
- package/dist/codex/generated/v2/ThreadRevertParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadRevertResponse.d.ts +22 -0
- package/dist/codex/generated/v2/ThreadRevertResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadRevertResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadRevertedNotification.d.ts +3 -0
- package/dist/codex/generated/v2/ThreadRevertedNotification.js +3 -0
- package/dist/codex/generated/v2/ThreadRevertedNotification.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSearchParams.d.ts +2 -2
- package/dist/codex/generated/v2/ThreadSearchSortKey.d.ts +1 -0
- package/dist/codex/generated/v2/ThreadSearchSortKey.js +3 -0
- package/dist/codex/generated/v2/ThreadSearchSortKey.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSection.d.ts +18 -0
- package/dist/codex/generated/v2/ThreadSection.js +3 -0
- package/dist/codex/generated/v2/ThreadSection.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionAppearance.d.ts +7 -0
- package/dist/codex/generated/v2/ThreadSectionAppearance.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionAppearance.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionCreateParams.d.ts +11 -0
- package/dist/codex/generated/v2/ThreadSectionCreateParams.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionCreateParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionCreateResponse.d.ts +7 -0
- package/dist/codex/generated/v2/ThreadSectionCreateResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionCreateResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteParams.d.ts +9 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteParams.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteResponse.d.ts +4 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionDeleteResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionListParams.d.ts +13 -0
- package/dist/codex/generated/v2/ThreadSectionListParams.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionListParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionListResponse.d.ts +11 -0
- package/dist/codex/generated/v2/ThreadSectionListResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionListResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionMoveParams.d.ts +17 -0
- package/dist/codex/generated/v2/ThreadSectionMoveParams.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionMoveParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionMoveResponse.d.ts +1 -0
- package/dist/codex/generated/v2/ThreadSectionMoveResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionMoveResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateParams.d.ts +18 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateParams.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateParams.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateResponse.d.ts +7 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateResponse.js +3 -0
- package/dist/codex/generated/v2/ThreadSectionUpdateResponse.js.map +1 -0
- package/dist/codex/generated/v2/ThreadSortKey.d.ts +1 -1
- package/dist/codex/generated/v2/ThreadStartParams.d.ts +5 -0
- package/dist/codex/generated/v2/ThreadUsage.d.ts +7 -0
- package/dist/codex/generated/v2/ThreadUsage.js +3 -0
- package/dist/codex/generated/v2/ThreadUsage.js.map +1 -0
- package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.d.ts +11 -0
- package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.js +3 -0
- package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.js.map +1 -0
- package/dist/codex/generated/v2/ToolRequestUserInputParams.d.ts +4 -0
- package/dist/codex/generated/v2/index.d.ts +79 -0
- package/dist/daemon/probe.js +1 -1
- package/dist/gateway/clientConnection.js +45 -17
- package/dist/gateway/clientConnection.js.map +1 -1
- package/dist/gateway/stockRpc.d.ts +2 -0
- package/dist/gateway/stockRpc.js +13 -0
- package/dist/gateway/stockRpc.js.map +1 -1
- package/dist/gateway/threadList.js +7 -2
- package/dist/gateway/threadList.js.map +1 -1
- package/dist/gateway/transientNotice.js +3 -1
- package/dist/gateway/transientNotice.js.map +1 -1
- package/dist/handoff/lineageStore.d.ts +2 -8
- package/dist/handoff/lineageStore.js +2 -8
- package/dist/handoff/lineageStore.js.map +1 -1
- package/dist/handoff/providerEpochs.js +4 -5
- package/dist/handoff/providerEpochs.js.map +1 -1
- package/dist/handoff/service.d.ts +6 -1
- package/dist/handoff/service.js +42 -28
- package/dist/handoff/service.js.map +1 -1
- package/dist/runtime/dependencies.js +1 -1
- package/dist/store/sqliteStore.js +3 -1
- package/dist/store/sqliteStore.js.map +1 -1
- package/dist/store/threadFilter.js +11 -2
- package/dist/store/threadFilter.js.map +1 -1
- package/legal/THIRD_PARTY_NOTICES.md +234 -240
- package/package.json +6 -6
- package/skills/workforce/SKILL.md +51 -24
package/dist/claude/service.js
CHANGED
|
@@ -14,7 +14,7 @@ import { SdkTranscriptBrancher, } from "./transcriptBrancher.js";
|
|
|
14
14
|
import { ClaudeRateLimitCoordinator, } from "./rateLimits.js";
|
|
15
15
|
import { isClaudeStatusCommand } from "./statusCommand.js";
|
|
16
16
|
import { systemNoticeText } from "../gateway/transientNotice.js";
|
|
17
|
-
import { claudeCatalogId, normalizeClaudeModelIdentifier, normalizeClaudeServiceTier, resolveClaudeModel, } from "./modelSelection.js";
|
|
17
|
+
import { claudeCatalogId, normalizeClaudeModelIdentifier, normalizeClaudeServiceTier, pickClaudeModelReplacement, resolveClaudeModel, } from "./modelSelection.js";
|
|
18
18
|
import { ClaudeOutputAdapter } from "./session/outputAdapter.js";
|
|
19
19
|
import { branchRevision, ClaudeSessionRepository } from "./session/repository.js";
|
|
20
20
|
import { ActiveClaudeTurnError, ClaudeSession } from "./session/session.js";
|
|
@@ -159,7 +159,9 @@ function threadResponse(record, includeTurns) {
|
|
|
159
159
|
...settings,
|
|
160
160
|
thread: {
|
|
161
161
|
...record.thread,
|
|
162
|
-
|
|
162
|
+
section: record.thread.section ?? null,
|
|
163
|
+
sectionEnteredAt: record.thread.sectionEnteredAt ?? null,
|
|
164
|
+
projectId: record.thread.projectId ?? null,
|
|
163
165
|
canAcceptDirectInput: record.thread.parentThreadId ? false : true,
|
|
164
166
|
turns: includeTurns ? record.thread.turns : [],
|
|
165
167
|
},
|
|
@@ -303,10 +305,12 @@ export class ClaudeService {
|
|
|
303
305
|
interactiveQuestions: this.config.features?.interactiveQuestions ?? true,
|
|
304
306
|
resolveChildModel: (model) => {
|
|
305
307
|
const value = normalizeClaudeModelIdentifier(model);
|
|
306
|
-
const modelPickerId = this.
|
|
307
|
-
?? (value.startsWith(this.config.modelPrefix) ? value : `${this.config.modelPrefix}${value}`);
|
|
308
|
+
const modelPickerId = value.startsWith(this.config.modelPrefix) ? value : `${this.config.modelPrefix}${value}`;
|
|
308
309
|
const claudeModelValue = resolveClaudeModel(this.config, modelPickerId);
|
|
309
|
-
|
|
310
|
+
if (!claudeModelValue)
|
|
311
|
+
return undefined;
|
|
312
|
+
const lookup = this.cachedCatalogLookup(claudeModelValue);
|
|
313
|
+
return lookup ? this.catalogSelection(modelPickerId, claudeModelValue, lookup) : { modelPickerId, claudeModelValue };
|
|
310
314
|
},
|
|
311
315
|
}));
|
|
312
316
|
const records = this.store.allThreadRecords();
|
|
@@ -418,11 +422,47 @@ export class ClaudeService {
|
|
|
418
422
|
return threadSettings(this.withCatalogModel(this.requireRecord(threadId, false)));
|
|
419
423
|
}
|
|
420
424
|
withCatalogModel(record) {
|
|
421
|
-
const
|
|
422
|
-
if (!
|
|
425
|
+
const lookup = this.cachedCatalogLookup(record.resolvedModel ?? record.claudeModelValue);
|
|
426
|
+
if (!lookup)
|
|
423
427
|
return record;
|
|
424
|
-
const
|
|
425
|
-
return
|
|
428
|
+
const selection = this.catalogSelection(record.modelPickerId, record.claudeModelValue, lookup);
|
|
429
|
+
return selection.modelPickerId === record.modelPickerId ? record : { ...record, ...selection };
|
|
430
|
+
}
|
|
431
|
+
/** Finds the catalog entry for a Claude model value, migrating retired ids onto the closest current model. */
|
|
432
|
+
catalogLookup(models, claudeModelValue) {
|
|
433
|
+
const catalog = this.modelCatalog;
|
|
434
|
+
const cached = catalog.cachedPickerId?.(claudeModelValue);
|
|
435
|
+
if (cached)
|
|
436
|
+
return { id: cached, model: models.find((candidate) => candidate.id === cached), reason: "exact" };
|
|
437
|
+
const prefix = this.config.modelPrefix;
|
|
438
|
+
const strip = (id) => id.slice(prefix.length);
|
|
439
|
+
const defaultId = catalog.defaultModelId?.();
|
|
440
|
+
const replacement = pickClaudeModelReplacement(claudeModelValue, models.map((candidate) => strip(candidate.id)), defaultId && strip(defaultId));
|
|
441
|
+
const model = replacement && models.find((candidate) => strip(candidate.id) === replacement.value);
|
|
442
|
+
return model ? { id: model.id, model, reason: replacement.reason } : undefined;
|
|
443
|
+
}
|
|
444
|
+
cachedCatalogLookup(claudeModelValue) {
|
|
445
|
+
return this.modelCatalog && this.catalogLookup(this.modelCatalog.cachedModels?.() ?? [], claudeModelValue);
|
|
446
|
+
}
|
|
447
|
+
catalogSelection(modelPickerId, claudeModelValue, lookup) {
|
|
448
|
+
const prefix = this.config.modelPrefix;
|
|
449
|
+
if (lookup.id === `${prefix}${claudeModelValue}` || lookup.id === claudeCatalogId(this.config, modelPickerId))
|
|
450
|
+
return { modelPickerId, claudeModelValue };
|
|
451
|
+
this.logger.warn("claude.model.migrated", { from: modelPickerId, to: lookup.id, reason: lookup.reason });
|
|
452
|
+
return { modelPickerId: lookup.id, claudeModelValue: lookup.id.slice(prefix.length) };
|
|
453
|
+
}
|
|
454
|
+
/** Persists a catalog migration for a stored thread so its runtime starts on a model the account still has. */
|
|
455
|
+
async migrateStoredModel(threadId) {
|
|
456
|
+
if (!this.modelCatalog)
|
|
457
|
+
return;
|
|
458
|
+
const record = this.requireRecord(threadId, false);
|
|
459
|
+
const models = await this.modelCatalog.list().catch(() => undefined);
|
|
460
|
+
const lookup = models && this.catalogLookup(models, record.claudeModelValue);
|
|
461
|
+
if (!lookup)
|
|
462
|
+
return;
|
|
463
|
+
const selection = this.catalogSelection(record.modelPickerId, record.claudeModelValue, lookup);
|
|
464
|
+
if (selection.modelPickerId !== record.modelPickerId)
|
|
465
|
+
await this.applySettings({ threadId, model: selection.modelPickerId });
|
|
426
466
|
}
|
|
427
467
|
sideSnapshot(sourceThreadId, targetThreadId, visibleForkedFromId) {
|
|
428
468
|
const record = this.requireRecord(sourceThreadId, false);
|
|
@@ -531,6 +571,7 @@ export class ClaudeService {
|
|
|
531
571
|
: {}),
|
|
532
572
|
});
|
|
533
573
|
}
|
|
574
|
+
await this.migrateStoredModel(threadId);
|
|
534
575
|
await (await this.sessions.getOrCreate(threadId)).materializeRuntime();
|
|
535
576
|
record = await this.sessions.submit(threadId, { type: "readThread", includeTurns: true });
|
|
536
577
|
record = this.withCatalogModel(record);
|
|
@@ -967,9 +1008,20 @@ export class ClaudeService {
|
|
|
967
1008
|
}
|
|
968
1009
|
updateThreadMetadata(params) {
|
|
969
1010
|
this.requireIndependentThread(params.threadId, "update metadata for");
|
|
1011
|
+
if (params.projectId !== undefined && params.projectId !== null && params.projectId !== "") {
|
|
1012
|
+
throw invalidParams("Projects are not supported for Claude threads.");
|
|
1013
|
+
}
|
|
970
1014
|
return this.sessions.submit(params.threadId, {
|
|
971
1015
|
type: "threadAdmin",
|
|
972
|
-
command: { kind: "metadata", gitInfo: params.gitInfo
|
|
1016
|
+
command: { kind: "metadata", gitInfo: params.gitInfo },
|
|
1017
|
+
});
|
|
1018
|
+
}
|
|
1019
|
+
/** Section registry stays stock-owned; CCodex records only the membership. */
|
|
1020
|
+
setThreadSection(threadId, section) {
|
|
1021
|
+
this.requireIndependentThread(threadId, "move into a section");
|
|
1022
|
+
return this.sessions.submit(threadId, {
|
|
1023
|
+
type: "threadAdmin",
|
|
1024
|
+
command: { kind: "metadata", gitInfo: undefined, section },
|
|
973
1025
|
});
|
|
974
1026
|
}
|
|
975
1027
|
async archiveThread(threadId) {
|
|
@@ -1149,9 +1201,8 @@ export class ClaudeService {
|
|
|
1149
1201
|
if (sourceRecord.thread.ephemeral && !sidePromotion) {
|
|
1150
1202
|
throw invalidParams("Forking this ephemeral Claude source thread is not supported.");
|
|
1151
1203
|
}
|
|
1152
|
-
const
|
|
1153
|
-
|
|
1154
|
-
if (!claudeModelValue)
|
|
1204
|
+
const requestedModel = params.model ?? sourceRecord.modelPickerId;
|
|
1205
|
+
if (!resolveClaudeModel(this.config, requestedModel))
|
|
1155
1206
|
throw invalidParams("Cannot fork a Claude thread to a Codex model.");
|
|
1156
1207
|
const activeSideFork = Boolean(params.ephemeral === true && params.excludeTurns === true
|
|
1157
1208
|
&& params.threadSource === "user" && !params.lastTurnId && !params.beforeTurnId);
|
|
@@ -1195,8 +1246,10 @@ export class ClaudeService {
|
|
|
1195
1246
|
const sourceBoundaries = source.boundaries.filter((entry) => stableSelectedIds.has(entry.turnId));
|
|
1196
1247
|
const revisionTurns = sourceTurns.filter((turn) => stableSelectedIds.has(turn.id));
|
|
1197
1248
|
const revision = branchRevision(sourceRecord, sourceBoundaries, revisionTurns);
|
|
1198
|
-
const
|
|
1199
|
-
await this.
|
|
1249
|
+
const requestedServiceTier = normalizeClaudeServiceTier(this.config, requestedModel, params.serviceTier === undefined ? sourceRecord.serviceTier : params.serviceTier);
|
|
1250
|
+
const { modelPickerId, claudeModelValue, reasoningEffort, serviceTier } = await this.resolveModelSettings(requestedModel, sourceRecord.reasoningEffort, requestedServiceTier);
|
|
1251
|
+
if (serviceTier !== requestedServiceTier)
|
|
1252
|
+
throw invalidParams(`Claude model '${requestedModel}' does not support the fast service tier.`);
|
|
1200
1253
|
const boundary = selectedBoundary?.messageUuid ?? sourceBoundaries.at(-1)?.messageUuid;
|
|
1201
1254
|
const branch = boundary
|
|
1202
1255
|
? await this.transcripts.forkWithProvenance(sourceRecord.claudeSessionId, boundary, sourceRecord.thread.cwd, sourceBoundaries.map((entry) => entry.messageUuid), boundaryCorrelations(this.store, sourceRecord, sourceBoundaries))
|
|
@@ -1220,7 +1273,8 @@ export class ClaudeService {
|
|
|
1220
1273
|
});
|
|
1221
1274
|
const threadId = uuidv7();
|
|
1222
1275
|
const thread = {
|
|
1223
|
-
...sourceRecord.thread, id: threadId, ephemeral: params.ephemeral ?? false,
|
|
1276
|
+
...sourceRecord.thread, id: threadId, ephemeral: params.ephemeral ?? false,
|
|
1277
|
+
section: null, sectionEnteredAt: null, projectId: null,
|
|
1224
1278
|
sessionId: threadId, forkedFromId: visibleForkedFromId,
|
|
1225
1279
|
cwd, modelProvider: "claude", createdAt, updatedAt: createdAt, recencyAt: createdAt,
|
|
1226
1280
|
status: params.ephemeral ? { type: "idle" } : { type: "notLoaded" },
|
|
@@ -1233,7 +1287,7 @@ export class ClaudeService {
|
|
|
1233
1287
|
const copiedTurns = sourceTurns.map((turn) => forkProjection(turn, thread.id));
|
|
1234
1288
|
const record = {
|
|
1235
1289
|
...sourceRecord, thread, runtimeWorkspaceRoots,
|
|
1236
|
-
claudeSessionId: branch.sessionId, modelPickerId, claudeModelValue, serviceTier,
|
|
1290
|
+
claudeSessionId: branch.sessionId, modelPickerId, claudeModelValue, serviceTier, reasoningEffort,
|
|
1237
1291
|
approvalPolicy: params.approvalPolicy ?? sourceRecord.approvalPolicy,
|
|
1238
1292
|
approvalsReviewer: approvalsReviewer(params.approvalsReviewer, sourceRecord.approvalsReviewer),
|
|
1239
1293
|
sandboxPolicy: params.permissions
|
|
@@ -1281,21 +1335,42 @@ export class ClaudeService {
|
|
|
1281
1335
|
return threadResponse(responseRecord, !params.excludeTurns);
|
|
1282
1336
|
}
|
|
1283
1337
|
async rollbackThread(params) {
|
|
1284
|
-
this.
|
|
1285
|
-
const source = await this.sessions.submit(params.threadId, { type: "snapshotBranch" });
|
|
1286
|
-
const sourceRecord = source.record;
|
|
1287
|
-
if (sourceRecord.thread.ephemeral)
|
|
1288
|
-
throw invalidParams("Rolling back an ephemeral Claude thread is not supported.");
|
|
1338
|
+
const source = await this.truncationSource(params.threadId, "roll back");
|
|
1289
1339
|
if (!Number.isInteger(params.numTurns) || params.numTurns < 1)
|
|
1290
1340
|
throw invalidParams("numTurns must be at least 1.");
|
|
1291
|
-
if (params.numTurns >
|
|
1341
|
+
if (params.numTurns > source.record.thread.turns.length)
|
|
1292
1342
|
throw invalidParams("Cannot remove more turns than the Claude thread contains.");
|
|
1293
|
-
const
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
const
|
|
1343
|
+
const committed = await this.truncateThread(source, source.record.thread.turns.length - params.numTurns);
|
|
1344
|
+
return { thread: committed.thread };
|
|
1345
|
+
}
|
|
1346
|
+
/** `thread/revert`: drops `beforeTurnId` and every later turn; the App hydrates retained history via the cursors. */
|
|
1347
|
+
async revertThread(params) {
|
|
1348
|
+
const source = await this.truncationSource(params.threadId, "revert");
|
|
1349
|
+
const keepCount = source.record.thread.turns.findIndex((turn) => turn.id === params.beforeTurnId);
|
|
1350
|
+
if (keepCount === -1)
|
|
1351
|
+
throw invalidParams(`Unknown Claude turn '${params.beforeTurnId}'.`);
|
|
1352
|
+
const retained = (await this.truncateThread(source, keepCount)).thread;
|
|
1353
|
+
return {
|
|
1354
|
+
thread: { ...retained, turns: [] },
|
|
1355
|
+
turnsBackwardsCursor: retained.turns.length ? turnCursor(retained.turns.at(-1).id, true) : null,
|
|
1356
|
+
itemsBackwardsCursor: retained.turns.some((turn) => turn.items.length) ? "hyb-item:0" : null,
|
|
1357
|
+
};
|
|
1358
|
+
}
|
|
1359
|
+
async truncationSource(threadId, verb) {
|
|
1360
|
+
this.requireIndependentThread(threadId, verb);
|
|
1361
|
+
const snapshot = await this.sessions.submit(threadId, { type: "snapshotBranch" });
|
|
1362
|
+
if (snapshot.record.thread.ephemeral)
|
|
1363
|
+
throw invalidParams(`Cannot ${verb} an ephemeral Claude thread.`);
|
|
1364
|
+
const session = await this.sessions.getOrCreate(threadId);
|
|
1365
|
+
if ((await session.runtimeInspection())?.quiescent === false)
|
|
1366
|
+
throw invalidParams(`Cannot ${verb} a Claude thread with an active turn.`);
|
|
1367
|
+
return { ...snapshot, session };
|
|
1368
|
+
}
|
|
1369
|
+
/** Keeps the first `keepCount` turns by forking the transcript at the last retained provider boundary. */
|
|
1370
|
+
async truncateThread(source, keepCount) {
|
|
1371
|
+
const sourceRecord = source.record;
|
|
1372
|
+
const threadId = sourceRecord.thread.id;
|
|
1373
|
+
const retainedIds = new Set(sourceRecord.thread.turns.slice(0, keepCount).map((turn) => turn.id));
|
|
1299
1374
|
const sourceBoundaries = source.boundaries.filter((entry) => retainedIds.has(entry.turnId));
|
|
1300
1375
|
const boundary = sourceBoundaries.at(-1)?.messageUuid;
|
|
1301
1376
|
const branch = boundary
|
|
@@ -1303,7 +1378,7 @@ export class ClaudeService {
|
|
|
1303
1378
|
: { sessionId: uuidv7(), uuidMap: new Map() };
|
|
1304
1379
|
let committed;
|
|
1305
1380
|
try {
|
|
1306
|
-
committed = await this.sessions.submit(
|
|
1381
|
+
committed = await this.sessions.submit(threadId, {
|
|
1307
1382
|
type: "commitRollback", expectedRevision: source.revision, replacementSessionId: branch.sessionId,
|
|
1308
1383
|
keepCount, sourceBoundaries, uuidMap: [...branch.uuidMap],
|
|
1309
1384
|
});
|
|
@@ -1312,13 +1387,13 @@ export class ClaudeService {
|
|
|
1312
1387
|
await this.transcripts.delete(branch.sessionId, sourceRecord.thread.cwd).catch(() => undefined);
|
|
1313
1388
|
throw error;
|
|
1314
1389
|
}
|
|
1315
|
-
if (
|
|
1316
|
-
await
|
|
1317
|
-
this.logger.warn("claude.rollback.old-runtime-retire-failed", { threadId
|
|
1390
|
+
if (source.session.isLoaded) {
|
|
1391
|
+
await source.session.retireRuntimeSilently().catch((error) => {
|
|
1392
|
+
this.logger.warn("claude.rollback.old-runtime-retire-failed", { threadId, error: String(error) });
|
|
1318
1393
|
});
|
|
1319
1394
|
}
|
|
1320
|
-
await this.transcripts.delete(sourceRecord.claudeSessionId, sourceRecord.thread.cwd).catch((error) => this.logger.warn("claude.rollback.old-session-delete-failed", { threadId
|
|
1321
|
-
return
|
|
1395
|
+
await this.transcripts.delete(sourceRecord.claudeSessionId, sourceRecord.thread.cwd).catch((error) => this.logger.warn("claude.rollback.old-session-delete-failed", { threadId, error: String(error) }));
|
|
1396
|
+
return committed;
|
|
1322
1397
|
}
|
|
1323
1398
|
prepareGoalSet(params) {
|
|
1324
1399
|
this.requireIndependentThread(params.threadId, "set a goal on");
|
|
@@ -1637,7 +1712,9 @@ export class ClaudeService {
|
|
|
1637
1712
|
if (!native)
|
|
1638
1713
|
return {
|
|
1639
1714
|
...record.thread,
|
|
1640
|
-
|
|
1715
|
+
section: record.thread.section ?? null,
|
|
1716
|
+
sectionEnteredAt: record.thread.sectionEnteredAt ?? null,
|
|
1717
|
+
projectId: record.thread.projectId ?? null,
|
|
1641
1718
|
canAcceptDirectInput: record.thread.parentThreadId ? false : true,
|
|
1642
1719
|
};
|
|
1643
1720
|
const createdAt = native.createdAt === undefined
|
|
@@ -1646,7 +1723,9 @@ export class ClaudeService {
|
|
|
1646
1723
|
const updatedAt = Math.floor(native.lastModified / 1_000);
|
|
1647
1724
|
return {
|
|
1648
1725
|
...record.thread,
|
|
1649
|
-
|
|
1726
|
+
section: record.thread.section ?? null,
|
|
1727
|
+
sectionEnteredAt: record.thread.sectionEnteredAt ?? null,
|
|
1728
|
+
projectId: record.thread.projectId ?? null,
|
|
1650
1729
|
canAcceptDirectInput: record.thread.parentThreadId ? false : true,
|
|
1651
1730
|
name: record.thread.name || native.customTitle || native.summary,
|
|
1652
1731
|
preview: native.firstPrompt ?? record.thread.preview,
|
|
@@ -1704,17 +1783,15 @@ export class ClaudeService {
|
|
|
1704
1783
|
return undefined;
|
|
1705
1784
|
}
|
|
1706
1785
|
async newThreadRecord(params, settings) {
|
|
1707
|
-
const
|
|
1708
|
-
|
|
1709
|
-
if (!modelPickerId || !claudeModelValue)
|
|
1786
|
+
const requestedModel = params.model;
|
|
1787
|
+
if (!requestedModel || !resolveClaudeModel(this.config, requestedModel))
|
|
1710
1788
|
throw invalidParams("Claude thread requires a configured Claude model or alias.");
|
|
1711
1789
|
if (params.permissions && params.sandbox)
|
|
1712
1790
|
throw invalidParams("Claude thread start cannot combine permissions with sandbox.");
|
|
1713
|
-
const requestedServiceTier = normalizeClaudeServiceTier(this.config,
|
|
1791
|
+
const requestedServiceTier = normalizeClaudeServiceTier(this.config, requestedModel, params.serviceTier);
|
|
1714
1792
|
if (requestedServiceTier !== null && requestedServiceTier !== "default" && requestedServiceTier !== "fast")
|
|
1715
1793
|
throw invalidParams(`Unsupported Claude service tier '${requestedServiceTier}'.`);
|
|
1716
|
-
const reasoningEffort = settings?.effort ?? null;
|
|
1717
|
-
const serviceTier = await this.validatedServiceTier(modelPickerId, reasoningEffort, requestedServiceTier);
|
|
1794
|
+
const { modelPickerId, claudeModelValue, reasoningEffort, serviceTier } = await this.resolveModelSettings(requestedModel, settings?.effort ?? null, requestedServiceTier);
|
|
1718
1795
|
const createdAt = nowSeconds();
|
|
1719
1796
|
const workspace = workspaceSelection(params);
|
|
1720
1797
|
const { cwd, runtimeWorkspaceRoots } = workspace;
|
|
@@ -1727,7 +1804,9 @@ export class ClaudeService {
|
|
|
1727
1804
|
parentThreadId: null,
|
|
1728
1805
|
preview: "",
|
|
1729
1806
|
ephemeral: params.ephemeral ?? false,
|
|
1730
|
-
|
|
1807
|
+
section: null,
|
|
1808
|
+
sectionEnteredAt: null,
|
|
1809
|
+
projectId: null,
|
|
1731
1810
|
historyMode: params.historyMode ?? "legacy",
|
|
1732
1811
|
modelProvider: "claude",
|
|
1733
1812
|
createdAt,
|
|
@@ -1803,11 +1882,10 @@ export class ClaudeService {
|
|
|
1803
1882
|
const session = await this.sessions.getOrCreate(params.threadId);
|
|
1804
1883
|
for (;;) {
|
|
1805
1884
|
const before = await this.sessions.submit(params.threadId, { type: "readThread", includeTurns: false });
|
|
1806
|
-
const
|
|
1807
|
-
|
|
1808
|
-
if (!claudeModelValue)
|
|
1885
|
+
const requestedModel = params.model ?? before.modelPickerId;
|
|
1886
|
+
if (!resolveClaudeModel(this.config, requestedModel))
|
|
1809
1887
|
throw invalidParams("Cannot switch a Claude thread to a Codex model.");
|
|
1810
|
-
const requestedServiceTier = normalizeClaudeServiceTier(this.config,
|
|
1888
|
+
const requestedServiceTier = normalizeClaudeServiceTier(this.config, requestedModel, params.serviceTier === undefined ? before.serviceTier : params.serviceTier);
|
|
1811
1889
|
if (requestedServiceTier !== null && requestedServiceTier !== "default" && requestedServiceTier !== "fast")
|
|
1812
1890
|
throw invalidParams(`Unsupported Claude service tier '${requestedServiceTier}'.`);
|
|
1813
1891
|
const { cwd, runtimeWorkspaceRoots } = workspaceSelection(params, {
|
|
@@ -1817,8 +1895,7 @@ export class ClaudeService {
|
|
|
1817
1895
|
const workspaceChanged = cwd !== before.thread.cwd
|
|
1818
1896
|
|| runtimeWorkspaceRoots.length !== storedWorkspaceRoots(before).length
|
|
1819
1897
|
|| runtimeWorkspaceRoots.some((root, index) => root !== storedWorkspaceRoots(before)[index]);
|
|
1820
|
-
const reasoningEffort = params.effort === undefined ? before.reasoningEffort : params.effort;
|
|
1821
|
-
const serviceTier = await this.validatedServiceTier(modelPickerId, reasoningEffort, requestedServiceTier);
|
|
1898
|
+
const { modelPickerId, claudeModelValue, reasoningEffort, serviceTier } = await this.resolveModelSettings(requestedModel, params.effort === undefined ? before.reasoningEffort : params.effort, requestedServiceTier, params.effort !== undefined);
|
|
1822
1899
|
syncCanonicalSettings = requestedServiceTier === "fast" && serviceTier !== "fast";
|
|
1823
1900
|
const collaborationMode = params.collaborationMode === undefined
|
|
1824
1901
|
? before.collaborationMode
|
|
@@ -1873,24 +1950,30 @@ export class ClaudeService {
|
|
|
1873
1950
|
}
|
|
1874
1951
|
}
|
|
1875
1952
|
}
|
|
1876
|
-
|
|
1953
|
+
/**
|
|
1954
|
+
* Resolves requested model settings against the account catalog. A model id the catalog no longer
|
|
1955
|
+
* lists is migrated onto its closest current entry instead of failing the request, and an effort the
|
|
1956
|
+
* target model does not support is coerced to that model's default unless it was requested explicitly.
|
|
1957
|
+
*/
|
|
1958
|
+
async resolveModelSettings(modelPickerId, effort, serviceTier, explicitEffort = false) {
|
|
1959
|
+
const claudeModelValue = resolveClaudeModel(this.config, modelPickerId);
|
|
1877
1960
|
if (!this.modelCatalog)
|
|
1878
|
-
return serviceTier;
|
|
1879
|
-
const
|
|
1880
|
-
const model =
|
|
1881
|
-
if (!model)
|
|
1882
|
-
throw invalidParams(`Claude model '${
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
:
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
}
|
|
1961
|
+
return { modelPickerId, claudeModelValue, reasoningEffort: effort, serviceTier };
|
|
1962
|
+
const lookup = this.catalogLookup(await this.modelCatalog.list(), claudeModelValue);
|
|
1963
|
+
const model = lookup?.model;
|
|
1964
|
+
if (!lookup || !model)
|
|
1965
|
+
throw invalidParams(`Claude model '${modelPickerId}' is not present in the current account catalog.`);
|
|
1966
|
+
const selection = this.catalogSelection(modelPickerId, claudeModelValue, lookup);
|
|
1967
|
+
const effortSupported = !effort || model.supportedReasoningEfforts.some((level) => level.reasoningEffort === effort);
|
|
1968
|
+
if (!effortSupported && explicitEffort && selection.modelPickerId === modelPickerId)
|
|
1969
|
+
throw invalidParams(`Claude model '${modelPickerId}' does not support effort '${effort}'.`);
|
|
1970
|
+
if (!effortSupported)
|
|
1971
|
+
this.logger.warn("claude.effort.coerced", { model: model.id, from: effort, to: model.defaultReasoningEffort });
|
|
1972
|
+
return {
|
|
1973
|
+
...selection,
|
|
1974
|
+
reasoningEffort: effortSupported ? effort : model.supportedReasoningEfforts.length ? model.defaultReasoningEffort : null,
|
|
1975
|
+
serviceTier: serviceTier === "fast" && !model.serviceTiers.some((tier) => tier.id === "fast") ? null : serviceTier,
|
|
1976
|
+
};
|
|
1894
1977
|
}
|
|
1895
1978
|
async readStandaloneRateLimitStatus() {
|
|
1896
1979
|
const abort = new AbortController();
|