@cartanova/qgrid-cli 2.4.8 → 2.5.0
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.ko.md +18 -11
- package/README.md +18 -11
- package/bundle/.env +0 -0
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorate.js +2 -2
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorateMetadata.js +2 -2
- package/bundle/dist/_virtual/_rolldown/runtime.js +2 -3
- package/bundle/dist/application/monit/log-buffer.js +3 -2
- package/bundle/dist/application/monit/monit.frame.js +5 -6
- package/bundle/dist/application/monit/monit.types.js +1 -2
- package/bundle/dist/application/qgrid/conv-routing.js +1 -2
- package/bundle/dist/application/qgrid/oauth.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-response-format.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +76 -47
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +1 -2
- package/bundle/dist/application/qgrid/qgrid.frame.js +73 -97
- package/bundle/dist/application/qgrid/qgrid.types.js +11 -10
- package/bundle/dist/application/qgrid/token-subscriber.js +3 -2
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -2
- package/bundle/dist/application/qgrid/tool-emulation.js +1 -2
- package/bundle/dist/application/queries.generated.js +1 -2
- package/bundle/dist/application/request-log/request-log.model.js +116 -47
- package/bundle/dist/application/request-log/request-log.types.js +1 -2
- package/bundle/dist/application/request-log-step/request-log-step.model.js +3 -4
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -2
- package/bundle/dist/application/sonamu.generated.js +14 -15
- package/bundle/dist/application/sonamu.generated.sso.js +1 -2
- package/bundle/dist/application/token/token.model.js +3 -4
- package/bundle/dist/application/token/token.types.js +1 -2
- package/bundle/dist/codex-protocol/AbsolutePathBuf.js +0 -1
- package/bundle/dist/codex-protocol/AgentPath.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/AuthMode.js +0 -1
- package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
- package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
- package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
- package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
- package/bundle/dist/codex-protocol/ContentItem.js +0 -1
- package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
- package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/FileChange.js +0 -1
- package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitSha.js +0 -1
- package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
- package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
- package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
- package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
- package/bundle/dist/codex-protocol/InputModality.js +0 -1
- package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
- package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
- package/bundle/dist/codex-protocol/ModeKind.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
- package/bundle/dist/codex-protocol/Personality.js +0 -1
- package/bundle/dist/codex-protocol/PlanType.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/RequestId.js +0 -1
- package/bundle/dist/codex-protocol/Resource.js +0 -1
- package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
- package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
- package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
- package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
- package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
- package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
- package/bundle/dist/codex-protocol/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/Settings.js +0 -1
- package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
- package/bundle/dist/codex-protocol/ThreadId.js +0 -1
- package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
- package/bundle/dist/codex-protocol/Tool.js +0 -1
- package/bundle/dist/codex-protocol/Verbosity.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
- package/bundle/dist/codex-protocol/index.js +0 -1
- package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
- package/bundle/dist/codex-protocol/v2/Account.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/Config.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
- package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
- package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
- package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
- package/bundle/dist/codex-protocol/v2/Model.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
- package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
- package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
- package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
- package/bundle/dist/i18n/en.js +1 -2
- package/bundle/dist/i18n/ko.js +1 -2
- package/bundle/dist/i18n/sd.generated.js +54 -21
- package/bundle/dist/index.js +1 -2
- package/bundle/dist/migrations/20260410171405_create__request_logs.js +1 -2
- package/bundle/dist/migrations/20260410171406_create__tokens.js +1 -2
- package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +1 -2
- package/bundle/dist/migrations/20260415113716_alter_tokens_add_ord.js +1 -2
- package/bundle/dist/migrations/20260415134649_alter_request_logs_alter1.js +1 -2
- package/bundle/dist/migrations/20260421223627_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423180818_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423182017_alter_request_logs_add2_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423183613_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +1 -2
- package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +1 -2
- package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +1 -2
- package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +1 -2
- package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +1 -2
- package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +1 -2
- package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +1 -2
- package/bundle/dist/migrations/20260630223950_alter_tokens_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105327_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105328_alter_request_log_steps_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260705140614_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260706120000_alter_request_logs_add_image_cost.js +1 -2
- package/bundle/dist/migrations/20260710090000_alter_tokens_add_weight.js +1 -2
- package/bundle/dist/migrations/20260718180824_alter_request_logs_add5_alter1.js +1 -2
- package/bundle/dist/migrations/20260718180825_alter_request_log_steps_add7_alter1.js +1 -2
- package/bundle/dist/migrations/20260722174410_alter_request_logs_alter3.js +17 -0
- package/bundle/dist/migrations/20260722174411_alter_request_log_steps_alter3.js +17 -0
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +255 -4
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +1507 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +887 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +2756 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +922 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +386 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +121 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +51 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +1317 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +561 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +40 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +272 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +27 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +77 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +381 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +51 -0
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +103 -3
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +1 -1
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +2 -3
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +4 -4
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +2 -2
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +18 -7
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +18 -3
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_2519c2e8d8013fcbc7b443879bc9da6d/node_modules/vite/dist/node/module-runner.js +1265 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -3
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +8 -8
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +5 -5
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +3 -3
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +46 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +66 -6
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +3044 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +19 -4
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/index.js +28 -0
- package/bundle/dist/server-bootstrap.js +1 -2
- package/bundle/dist/sonamu.config.js +11 -27
- package/bundle/dist/startup-migrations.js +1 -2
- package/bundle/dist/testing/fixture.js +1 -2
- package/bundle/dist/testing/global.js +6 -7
- package/bundle/dist/testing/setup-mocks.js +3 -4
- package/bundle/dist/testing/test-database-name.js +5 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +8 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +1 -2
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +1 -2
- package/bundle/dist/utils/providers/anthropic/claude-session.js +5 -7
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +1 -2
- package/bundle/dist/utils/providers/common/credentials.js +1 -2
- package/bundle/dist/utils/providers/common/model-cost.js +3 -3
- package/bundle/dist/utils/providers/common/provider-dispatcher.js +0 -1
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -2
- package/bundle/dist/utils/providers/common/strictifier.js +2 -2
- package/bundle/dist/utils/providers/common/token-picker.js +1 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -2
- package/bundle/dist/utils/providers/openai/codex-rpc.js +4 -2
- package/bundle/dist/utils/providers/openai/codex-worker.js +2 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +103 -40
- package/bundle/dist/utils/providers/openai/openai-quota.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-refresh.js +1 -2
- package/bundle/dist/utils/subset-loaders.js +1 -2
- package/bundle/src/application/monit/monit.frame.test.ts +2 -2
- package/bundle/src/application/monit/monit.frame.ts +2 -2
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +242 -8
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +97 -57
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +400 -96
- package/bundle/src/application/qgrid/qgrid.frame.ts +85 -123
- package/bundle/src/application/qgrid/qgrid.types.ts +35 -27
- package/bundle/src/application/request-log/request-log.entity.json +2 -2
- package/bundle/src/application/request-log/request-log.model.test.ts +325 -21
- package/bundle/src/application/request-log/request-log.model.ts +233 -125
- package/bundle/src/application/request-log-step/request-log-step.entity.json +2 -2
- package/bundle/src/application/sonamu.generated.http +2 -2
- package/bundle/src/application/sonamu.generated.ts +13 -13
- package/bundle/src/i18n/sd.generated.ts +83 -14
- package/bundle/src/migrations/20260722174410_alter_request_logs_alter3.ts +19 -0
- package/bundle/src/migrations/20260722174411_alter_request_log_steps_alter3.ts +19 -0
- package/bundle/src/sonamu.config.ts +5 -23
- package/bundle/src/testing/global.ts +5 -5
- package/bundle/src/testing/test-database-name.test.ts +5 -5
- package/bundle/src/testing/test-database-name.ts +9 -8
- package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +10 -6
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +9 -5
- package/bundle/src/utils/providers/anthropic/claude-session.test.ts +18 -3
- package/bundle/src/utils/providers/anthropic/claude-session.ts +4 -4
- package/bundle/src/utils/providers/common/model-cost.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.ts +1 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +440 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +143 -45
- package/bundle/web-dist/client/assets/{index-CmuPjbCl.js → index-B8Qj0LZK.js} +3 -3
- package/bundle/web-dist/client/assets/logs-C7R8Hvyy.js +1 -0
- package/bundle/web-dist/client/assets/{monit-B5Edhvy-.js → monit-Cj2KSodR.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-UPWScORY.js → routes-DI1rjqGY.js} +1 -1
- package/bundle/web-dist/client/assets/{sd.generated-DYuKzBY6.js → sd.generated-DbBC73_z.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-D_SkWOo-.js → services.generated-BWyAypSh.js} +1 -1
- package/bundle/web-dist/client/assets/{show-pRp-eZIK.js → show-B9hDSX9F.js} +2 -2
- package/bundle/web-dist/client/assets/{tokens-DJlttxCM.js → tokens-xUexYz3u.js} +1 -1
- package/bundle/web-dist/client/assets/{use-update-token-mutation-CpFGLWUl.js → use-update-token-mutation-DeDBiZiM.js} +1 -1
- package/bundle/web-dist/client/index.html +2 -2
- package/bundle/web-dist/server/assets/{lazyRouteComponent-Cu6IkL8A.js → lazyRouteComponent-BCJr868T.js} +1 -1
- package/bundle/web-dist/server/assets/{logs-Dx2knN2T.js → logs-33YNafdW.js} +32 -11
- package/bundle/web-dist/server/assets/{monit-DU6PLatf.js → monit--9mVsjNU.js} +2 -2
- package/bundle/web-dist/server/assets/{routes-CTco1oJZ.js → routes-BK3Xh1UB.js} +3 -3
- package/bundle/web-dist/server/assets/{sd.generated-qzuRe35X.js → sd.generated-C3gcvRcU.js} +1 -0
- package/bundle/web-dist/server/assets/{services.generated-C8q1M41a.js → services.generated-B2_Auwvk.js} +1 -1
- package/bundle/web-dist/server/assets/{show-B3q8_GDh.js → show-Dxxxe608.js} +15 -9
- package/bundle/web-dist/server/assets/{tokens-Bvjn15h9.js → tokens-BWPVvdfi.js} +3 -3
- package/bundle/web-dist/server/assets/{use-update-token-mutation-BlZo6swF.js → use-update-token-mutation-CNBgTysy.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +23 -23
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +18 -12
- package/package.json +6 -6
- package/skills/qgrid/SKILL.md +4 -0
- package/skills/qgrid/references/ai-sdk-provider-contract.md +28 -2
- package/skills/qgrid/references/anthropic-claude-code-runtime.md +5 -4
- package/skills/qgrid/references/cli-env-and-server-boot.md +20 -8
- package/skills/qgrid/references/decision-rationale.md +4 -0
- package/skills/qgrid/references/docs-workflow.md +10 -0
- package/skills/qgrid/references/openai-codex-runtime.md +11 -3
- package/skills/qgrid/references/provider-runtime-differences.md +3 -3
- package/skills/qgrid/references/request-log-run-lifecycle.md +46 -28
- package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +6 -0
- package/skills/qgrid/references/tool-calling-and-multiturn.md +8 -7
- package/skills/qgrid/references/verification-and-debugging.md +1 -1
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/index.js +0 -28
- package/bundle/web-dist/client/assets/logs-cXOsDli3.js +0 -1
|
@@ -55,6 +55,14 @@ function quotaFail(reason = "rate limit lookup failed"): OpenAIQuotaUsageResult
|
|
|
55
55
|
return { kind: "lookup_failed", reason };
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
function deferred<T>(): { promise: Promise<T>; resolve: (value: T) => void } {
|
|
59
|
+
let resolve!: (value: T) => void;
|
|
60
|
+
const promise = new Promise<T>((done) => {
|
|
61
|
+
resolve = done;
|
|
62
|
+
});
|
|
63
|
+
return { promise, resolve };
|
|
64
|
+
}
|
|
65
|
+
|
|
58
66
|
function baseReq(overrides: Partial<GenerateRequest> = {}): GenerateRequest {
|
|
59
67
|
return {
|
|
60
68
|
model: "gpt-5-codex",
|
|
@@ -312,6 +320,73 @@ describe("OpenAIDispatcher autoscaling", () => {
|
|
|
312
320
|
expect(dispatcher.workerCount).toBe(2);
|
|
313
321
|
});
|
|
314
322
|
|
|
323
|
+
it("does not add workers to a quota-blocked token", async () => {
|
|
324
|
+
const dispatcher = new OpenAIDispatcher(autoscaleConfig(), () => 64);
|
|
325
|
+
const hazeCredentials = credentials({ accountId: "haze" });
|
|
326
|
+
const nkCredentials = credentials({ accountId: "nk" });
|
|
327
|
+
vi.spyOn(dispatcher, "spawnWorkers").mockResolvedValue(undefined);
|
|
328
|
+
await dispatcher.onTokenAdded(1, "openai/haze", hazeCredentials, 80, 1);
|
|
329
|
+
await dispatcher.onTokenAdded(2, "openai/nk", nkCredentials, null, 1);
|
|
330
|
+
dispatcher.workerPool.set(1, [
|
|
331
|
+
fakeWorker({ tokenId: 1, tokenName: "openai/haze", workerIndex: 0 }),
|
|
332
|
+
]);
|
|
333
|
+
dispatcher.workerPool.set(2, [
|
|
334
|
+
fakeWorker({ tokenId: 2, tokenName: "openai/nk", workerIndex: 0 }),
|
|
335
|
+
]);
|
|
336
|
+
readOpenAIQuotaUsageMock.mockResolvedValue(quotaOk(85));
|
|
337
|
+
|
|
338
|
+
const selected = await dispatcher.acquireIdleWorker();
|
|
339
|
+
expect(selected?.tokenName).toBe("openai/nk");
|
|
340
|
+
selected?.releaseTurn();
|
|
341
|
+
|
|
342
|
+
const spawnSingleWorker = vi
|
|
343
|
+
.spyOn(dispatcher, "spawnSingleWorker")
|
|
344
|
+
.mockImplementation(async (tokenId, tokenName, _credentials, workerIndex) =>
|
|
345
|
+
fakeWorker({ tokenId, tokenName, workerIndex }),
|
|
346
|
+
);
|
|
347
|
+
await dispatcher.scaleUpOneStep();
|
|
348
|
+
|
|
349
|
+
expect(spawnSingleWorker).toHaveBeenCalledTimes(1);
|
|
350
|
+
expect(spawnSingleWorker).toHaveBeenCalledWith(2, "openai/nk", nkCredentials, 1);
|
|
351
|
+
expect(dispatcher.workerPool.get(1)).toHaveLength(1);
|
|
352
|
+
expect(dispatcher.workerPool.get(2)).toHaveLength(2);
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
it("discards a worker spawned while its token becomes quota-blocked", async () => {
|
|
356
|
+
const dispatcher = new OpenAIDispatcher(autoscaleConfig(), () => 64);
|
|
357
|
+
const tokenCredentials = credentials();
|
|
358
|
+
vi.spyOn(dispatcher, "spawnWorkers").mockResolvedValue(undefined);
|
|
359
|
+
await dispatcher.onTokenAdded(1, "openai/haze", tokenCredentials, 80, 1);
|
|
360
|
+
dispatcher.workerPool.set(1, [
|
|
361
|
+
fakeWorker({ tokenId: 1, tokenName: "openai/haze", workerIndex: 0 }),
|
|
362
|
+
]);
|
|
363
|
+
readOpenAIQuotaUsageMock.mockResolvedValue(quotaOk(85));
|
|
364
|
+
|
|
365
|
+
let resolveSpawn!: (worker: CodexAppServerWorker) => void;
|
|
366
|
+
const spawnedWorker = fakeWorker({
|
|
367
|
+
tokenId: 1,
|
|
368
|
+
tokenName: "openai/haze",
|
|
369
|
+
workerIndex: 1,
|
|
370
|
+
});
|
|
371
|
+
const spawnSingleWorker = vi.spyOn(dispatcher, "spawnSingleWorker").mockImplementation(
|
|
372
|
+
() =>
|
|
373
|
+
new Promise<CodexAppServerWorker>((resolve) => {
|
|
374
|
+
resolveSpawn = resolve;
|
|
375
|
+
}),
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
const scaling = dispatcher.scaleUpOneStep();
|
|
379
|
+
await vi.waitFor(() => expect(spawnSingleWorker).toHaveBeenCalledTimes(1));
|
|
380
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
381
|
+
QuotaThresholdExceededError,
|
|
382
|
+
);
|
|
383
|
+
resolveSpawn(spawnedWorker);
|
|
384
|
+
await scaling;
|
|
385
|
+
|
|
386
|
+
expect(spawnedWorker.kill).toHaveBeenCalledTimes(1);
|
|
387
|
+
expect(dispatcher.workerPool.get(1)).toHaveLength(1);
|
|
388
|
+
});
|
|
389
|
+
|
|
315
390
|
it("does not scale past the estimated RSS guard", async () => {
|
|
316
391
|
const dispatcher = new OpenAIDispatcher(
|
|
317
392
|
autoscaleConfig({ maxEstimatedRssGiB: 0.9 }),
|
|
@@ -415,6 +490,71 @@ describe("OpenAIDispatcher token updates", () => {
|
|
|
415
490
|
expect(workerB.getRateLimits).toHaveBeenCalledTimes(1);
|
|
416
491
|
});
|
|
417
492
|
|
|
493
|
+
it("keeps fresh rate-limit cache across routing-only token updates", async () => {
|
|
494
|
+
const dispatcher = new OpenAIDispatcher();
|
|
495
|
+
const rateLimits = {
|
|
496
|
+
rateLimits: { primary: { usedPercent: 85 } },
|
|
497
|
+
rateLimitsByLimitId: null,
|
|
498
|
+
};
|
|
499
|
+
const worker = fakeWorker({
|
|
500
|
+
tokenId: 1,
|
|
501
|
+
tokenName: "openai/haze",
|
|
502
|
+
rateLimits,
|
|
503
|
+
});
|
|
504
|
+
addWorkers(dispatcher, [worker]);
|
|
505
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80, 1);
|
|
506
|
+
|
|
507
|
+
await dispatcher.getRateLimitsByTokenId(1);
|
|
508
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80, 2);
|
|
509
|
+
await expect(dispatcher.getRateLimitsByTokenId(1)).resolves.toMatchObject({
|
|
510
|
+
data: rateLimits,
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
expect(worker.getRateLimits).toHaveBeenCalledTimes(1);
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
it("does not cache a response from an outdated provider identity", async () => {
|
|
517
|
+
const dispatcher = new OpenAIDispatcher();
|
|
518
|
+
const oldRateLimits = {
|
|
519
|
+
rateLimits: { primary: { usedPercent: 85 } },
|
|
520
|
+
rateLimitsByLimitId: null,
|
|
521
|
+
};
|
|
522
|
+
const currentRateLimits = {
|
|
523
|
+
rateLimits: { primary: { usedPercent: 10 } },
|
|
524
|
+
rateLimitsByLimitId: null,
|
|
525
|
+
};
|
|
526
|
+
const oldWorker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
527
|
+
const currentWorker = fakeWorker({
|
|
528
|
+
tokenId: 1,
|
|
529
|
+
tokenName: "openai/haze",
|
|
530
|
+
rateLimits: currentRateLimits,
|
|
531
|
+
});
|
|
532
|
+
addWorkers(dispatcher, [oldWorker]);
|
|
533
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
534
|
+
const pendingRateLimits = deferred<unknown>();
|
|
535
|
+
vi.mocked(oldWorker.getRateLimits).mockImplementationOnce(() => pendingRateLimits.promise);
|
|
536
|
+
vi.mocked(oldWorker.canReuseForToken).mockReturnValue(false);
|
|
537
|
+
vi.spyOn(dispatcher, "spawnWorkers").mockImplementation(async () => {
|
|
538
|
+
dispatcher.workerPool.set(1, [currentWorker]);
|
|
539
|
+
});
|
|
540
|
+
|
|
541
|
+
const outdatedRead = dispatcher.getRateLimitsByTokenId(1);
|
|
542
|
+
await vi.waitFor(() => expect(oldWorker.getRateLimits).toHaveBeenCalledTimes(1));
|
|
543
|
+
await dispatcher.onTokenUpdated(
|
|
544
|
+
1,
|
|
545
|
+
"openai/haze",
|
|
546
|
+
credentials({ accountId: "new-account" }),
|
|
547
|
+
80,
|
|
548
|
+
);
|
|
549
|
+
pendingRateLimits.resolve(oldRateLimits);
|
|
550
|
+
|
|
551
|
+
await expect(outdatedRead).resolves.toMatchObject({ data: oldRateLimits });
|
|
552
|
+
await expect(dispatcher.getRateLimitsByTokenId(1)).resolves.toMatchObject({
|
|
553
|
+
data: currentRateLimits,
|
|
554
|
+
});
|
|
555
|
+
expect(currentWorker.getRateLimits).toHaveBeenCalledTimes(1);
|
|
556
|
+
});
|
|
557
|
+
|
|
418
558
|
it("replaceTokens removes absent OpenAI workers and updates threshold metadata", async () => {
|
|
419
559
|
const dispatcher = new OpenAIDispatcher();
|
|
420
560
|
const workerA = fakeWorker({ tokenId: 1, tokenName: "tok-A" });
|
|
@@ -565,6 +705,244 @@ describe("OpenAIDispatcher quota threshold gate", () => {
|
|
|
565
705
|
);
|
|
566
706
|
});
|
|
567
707
|
|
|
708
|
+
it("logs over-threshold and recovery only when the token gate state changes", async () => {
|
|
709
|
+
const dispatcher = new OpenAIDispatcher();
|
|
710
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
711
|
+
addWorkers(dispatcher, [worker]);
|
|
712
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
713
|
+
readOpenAIQuotaUsageMock
|
|
714
|
+
.mockResolvedValueOnce(quotaOk(85))
|
|
715
|
+
.mockResolvedValueOnce(quotaOk(85))
|
|
716
|
+
.mockResolvedValueOnce(quotaOk(10))
|
|
717
|
+
.mockResolvedValueOnce(quotaOk(10));
|
|
718
|
+
|
|
719
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
720
|
+
QuotaThresholdExceededError,
|
|
721
|
+
);
|
|
722
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
723
|
+
QuotaThresholdExceededError,
|
|
724
|
+
);
|
|
725
|
+
const recoveredWorker = await dispatcher.acquireIdleWorker();
|
|
726
|
+
recoveredWorker?.releaseTurn();
|
|
727
|
+
const stillEligibleWorker = await dispatcher.acquireIdleWorker();
|
|
728
|
+
stillEligibleWorker?.releaseTurn();
|
|
729
|
+
|
|
730
|
+
const overThresholdLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
731
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
732
|
+
);
|
|
733
|
+
const recoveredLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
734
|
+
String(message).includes("quota_threshold gate: recovered"),
|
|
735
|
+
);
|
|
736
|
+
expect(overThresholdLogs).toHaveLength(1);
|
|
737
|
+
expect(overThresholdLogs[0]).toEqual([
|
|
738
|
+
"quota_threshold gate: over_threshold openai/haze[1] (85% >= 80%)",
|
|
739
|
+
expect.objectContaining({
|
|
740
|
+
tokenId: 1,
|
|
741
|
+
tokenName: "openai/haze",
|
|
742
|
+
threshold: 80,
|
|
743
|
+
cachedUtilization: 85,
|
|
744
|
+
reason: "over_threshold",
|
|
745
|
+
}),
|
|
746
|
+
]);
|
|
747
|
+
expect(recoveredLogs).toHaveLength(1);
|
|
748
|
+
expect(recoveredLogs[0]).toEqual([
|
|
749
|
+
"quota_threshold gate: recovered openai/haze[1] (10% < 80%)",
|
|
750
|
+
expect.objectContaining({
|
|
751
|
+
tokenId: 1,
|
|
752
|
+
tokenName: "openai/haze",
|
|
753
|
+
threshold: 80,
|
|
754
|
+
cachedUtilization: 10,
|
|
755
|
+
reason: "recovered",
|
|
756
|
+
}),
|
|
757
|
+
]);
|
|
758
|
+
});
|
|
759
|
+
|
|
760
|
+
it("clears the runtime quota block when a lookup fails open", async () => {
|
|
761
|
+
const dispatcher = new OpenAIDispatcher();
|
|
762
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
763
|
+
addWorkers(dispatcher, [worker]);
|
|
764
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
765
|
+
readOpenAIQuotaUsageMock
|
|
766
|
+
.mockResolvedValueOnce(quotaOk(85))
|
|
767
|
+
.mockResolvedValueOnce(quotaFail("rpc timeout"))
|
|
768
|
+
.mockResolvedValueOnce(quotaOk(85));
|
|
769
|
+
|
|
770
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
771
|
+
QuotaThresholdExceededError,
|
|
772
|
+
);
|
|
773
|
+
const failOpenWorker = await dispatcher.acquireIdleWorker();
|
|
774
|
+
failOpenWorker?.releaseTurn();
|
|
775
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
776
|
+
QuotaThresholdExceededError,
|
|
777
|
+
);
|
|
778
|
+
|
|
779
|
+
const overThresholdLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
780
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
781
|
+
);
|
|
782
|
+
expect(overThresholdLogs).toHaveLength(2);
|
|
783
|
+
expect(loggerWarnMock).toHaveBeenCalledWith(
|
|
784
|
+
expect.stringContaining("lookup_fail_open"),
|
|
785
|
+
expect.objectContaining({ tokenId: 1, reason: "lookup_fail_open" }),
|
|
786
|
+
);
|
|
787
|
+
});
|
|
788
|
+
|
|
789
|
+
it("starts a new quota-block transition after the threshold changes", async () => {
|
|
790
|
+
const dispatcher = new OpenAIDispatcher();
|
|
791
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
792
|
+
addWorkers(dispatcher, [worker]);
|
|
793
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
794
|
+
readOpenAIQuotaUsageMock.mockResolvedValue(quotaOk(85));
|
|
795
|
+
|
|
796
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
797
|
+
QuotaThresholdExceededError,
|
|
798
|
+
);
|
|
799
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 70);
|
|
800
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
801
|
+
QuotaThresholdExceededError,
|
|
802
|
+
);
|
|
803
|
+
|
|
804
|
+
const overThresholdLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
805
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
806
|
+
);
|
|
807
|
+
expect(overThresholdLogs).toHaveLength(2);
|
|
808
|
+
expect(overThresholdLogs[1]?.[0]).toBe(
|
|
809
|
+
"quota_threshold gate: over_threshold openai/haze[1] (85% >= 70%)",
|
|
810
|
+
);
|
|
811
|
+
});
|
|
812
|
+
|
|
813
|
+
it("starts a new quota-block transition after deactivation and reactivation", async () => {
|
|
814
|
+
const dispatcher = new OpenAIDispatcher();
|
|
815
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
816
|
+
addWorkers(dispatcher, [worker]);
|
|
817
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
818
|
+
readOpenAIQuotaUsageMock.mockResolvedValue(quotaOk(85));
|
|
819
|
+
|
|
820
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
821
|
+
QuotaThresholdExceededError,
|
|
822
|
+
);
|
|
823
|
+
dispatcher.onTokenDeactivated(1);
|
|
824
|
+
dispatcher.onTokenActivated(1);
|
|
825
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
826
|
+
QuotaThresholdExceededError,
|
|
827
|
+
);
|
|
828
|
+
|
|
829
|
+
const overThresholdLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
830
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
831
|
+
);
|
|
832
|
+
expect(overThresholdLogs).toHaveLength(2);
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
it("discards an over-threshold result when the threshold changes during lookup", async () => {
|
|
836
|
+
const dispatcher = new OpenAIDispatcher();
|
|
837
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
838
|
+
addWorkers(dispatcher, [worker]);
|
|
839
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
840
|
+
const pendingQuota = deferred<OpenAIQuotaUsageResult>();
|
|
841
|
+
readOpenAIQuotaUsageMock
|
|
842
|
+
.mockImplementationOnce(() => pendingQuota.promise)
|
|
843
|
+
.mockResolvedValueOnce(quotaOk(85))
|
|
844
|
+
.mockResolvedValueOnce(quotaOk(95));
|
|
845
|
+
|
|
846
|
+
const pendingAcquire = dispatcher.acquireIdleWorker();
|
|
847
|
+
await vi.waitFor(() => expect(readOpenAIQuotaUsageMock).toHaveBeenCalledTimes(1));
|
|
848
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 90);
|
|
849
|
+
pendingQuota.resolve(quotaOk(85));
|
|
850
|
+
|
|
851
|
+
const eligibleWorker = await pendingAcquire;
|
|
852
|
+
expect(eligibleWorker).toBe(worker);
|
|
853
|
+
eligibleWorker?.releaseTurn();
|
|
854
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
855
|
+
QuotaThresholdExceededError,
|
|
856
|
+
);
|
|
857
|
+
|
|
858
|
+
const overThresholdLogs = loggerInfoMock.mock.calls.filter(([message]) =>
|
|
859
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
860
|
+
);
|
|
861
|
+
expect(overThresholdLogs).toEqual([
|
|
862
|
+
[
|
|
863
|
+
"quota_threshold gate: over_threshold openai/haze[1] (95% >= 90%)",
|
|
864
|
+
expect.objectContaining({
|
|
865
|
+
tokenId: 1,
|
|
866
|
+
threshold: 90,
|
|
867
|
+
cachedUtilization: 95,
|
|
868
|
+
}),
|
|
869
|
+
],
|
|
870
|
+
]);
|
|
871
|
+
});
|
|
872
|
+
|
|
873
|
+
it("does not re-block autoscaling when the threshold is removed during lookup", async () => {
|
|
874
|
+
const dispatcher = new OpenAIDispatcher(autoscaleConfig(), () => 64);
|
|
875
|
+
const worker = fakeWorker({
|
|
876
|
+
tokenId: 1,
|
|
877
|
+
tokenName: "openai/haze",
|
|
878
|
+
workerIndex: 0,
|
|
879
|
+
});
|
|
880
|
+
addWorkers(dispatcher, [worker]);
|
|
881
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
882
|
+
const pendingQuota = deferred<OpenAIQuotaUsageResult>();
|
|
883
|
+
readOpenAIQuotaUsageMock.mockImplementationOnce(() => pendingQuota.promise);
|
|
884
|
+
|
|
885
|
+
const pendingAcquire = dispatcher.acquireIdleWorker();
|
|
886
|
+
await vi.waitFor(() => expect(readOpenAIQuotaUsageMock).toHaveBeenCalledTimes(1));
|
|
887
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), null);
|
|
888
|
+
pendingQuota.resolve(quotaOk(85));
|
|
889
|
+
|
|
890
|
+
const eligibleWorker = await pendingAcquire;
|
|
891
|
+
expect(eligibleWorker).toBe(worker);
|
|
892
|
+
eligibleWorker?.releaseTurn();
|
|
893
|
+
expect(
|
|
894
|
+
loggerInfoMock.mock.calls.filter(([message]) =>
|
|
895
|
+
String(message).includes("quota_threshold gate:"),
|
|
896
|
+
),
|
|
897
|
+
).toHaveLength(0);
|
|
898
|
+
|
|
899
|
+
const spawnedWorker = fakeWorker({
|
|
900
|
+
tokenId: 1,
|
|
901
|
+
tokenName: "openai/haze",
|
|
902
|
+
workerIndex: 1,
|
|
903
|
+
});
|
|
904
|
+
const spawnSingleWorker = vi
|
|
905
|
+
.spyOn(dispatcher, "spawnSingleWorker")
|
|
906
|
+
.mockResolvedValue(spawnedWorker);
|
|
907
|
+
await dispatcher.scaleUpOneStep();
|
|
908
|
+
|
|
909
|
+
expect(spawnSingleWorker).toHaveBeenCalledTimes(1);
|
|
910
|
+
expect(dispatcher.workerPool.get(1)).toEqual([worker, spawnedWorker]);
|
|
911
|
+
});
|
|
912
|
+
|
|
913
|
+
it("does not restore a quota block when the token is deactivated during lookup", async () => {
|
|
914
|
+
const dispatcher = new OpenAIDispatcher();
|
|
915
|
+
const worker = fakeWorker({ tokenId: 1, tokenName: "openai/haze" });
|
|
916
|
+
addWorkers(dispatcher, [worker]);
|
|
917
|
+
await dispatcher.onTokenUpdated(1, "openai/haze", credentials(), 80);
|
|
918
|
+
const pendingQuota = deferred<OpenAIQuotaUsageResult>();
|
|
919
|
+
readOpenAIQuotaUsageMock
|
|
920
|
+
.mockImplementationOnce(() => pendingQuota.promise)
|
|
921
|
+
.mockResolvedValueOnce(quotaOk(85));
|
|
922
|
+
|
|
923
|
+
const pendingAcquire = dispatcher.acquireIdleWorker();
|
|
924
|
+
await vi.waitFor(() => expect(readOpenAIQuotaUsageMock).toHaveBeenCalledTimes(1));
|
|
925
|
+
dispatcher.onTokenDeactivated(1);
|
|
926
|
+
pendingQuota.resolve(quotaOk(85));
|
|
927
|
+
|
|
928
|
+
await expect(pendingAcquire).resolves.toBeNull();
|
|
929
|
+
expect(
|
|
930
|
+
loggerInfoMock.mock.calls.filter(([message]) =>
|
|
931
|
+
String(message).includes("quota_threshold gate:"),
|
|
932
|
+
),
|
|
933
|
+
).toHaveLength(0);
|
|
934
|
+
|
|
935
|
+
dispatcher.onTokenActivated(1);
|
|
936
|
+
await expect(dispatcher.acquireIdleWorker()).rejects.toBeInstanceOf(
|
|
937
|
+
QuotaThresholdExceededError,
|
|
938
|
+
);
|
|
939
|
+
expect(
|
|
940
|
+
loggerInfoMock.mock.calls.filter(([message]) =>
|
|
941
|
+
String(message).includes("quota_threshold gate: over_threshold"),
|
|
942
|
+
),
|
|
943
|
+
).toHaveLength(1);
|
|
944
|
+
});
|
|
945
|
+
|
|
568
946
|
it("keeps eligible busy workers queued instead of throwing quota errors", async () => {
|
|
569
947
|
const dispatcher = new OpenAIDispatcher();
|
|
570
948
|
const worker = fakeWorker({ tokenId: 1, tokenName: "tok-A", busy: true });
|
|
@@ -697,6 +1075,68 @@ describe("OpenAIDispatcher quota threshold gate", () => {
|
|
|
697
1075
|
expect(executeTurn).toHaveBeenCalledWith(worker, expect.anything(), "thread-1");
|
|
698
1076
|
});
|
|
699
1077
|
|
|
1078
|
+
it("falls back from reuse when the token is deactivated during quota lookup", async () => {
|
|
1079
|
+
const dispatcher = new OpenAIDispatcher();
|
|
1080
|
+
const workerA = fakeWorker({ tokenId: 1, tokenName: "tok-A", threads: ["thread-1"] });
|
|
1081
|
+
const workerB = fakeWorker({ tokenId: 2, tokenName: "tok-B" });
|
|
1082
|
+
addWorkers(dispatcher, [workerA, workerB]);
|
|
1083
|
+
await dispatcher.onTokenUpdated(1, "tok-A", credentials(), 80);
|
|
1084
|
+
await dispatcher.onTokenUpdated(2, "tok-B", credentials(), null);
|
|
1085
|
+
const pendingQuota = deferred<OpenAIQuotaUsageResult>();
|
|
1086
|
+
readOpenAIQuotaUsageMock.mockImplementationOnce(() => pendingQuota.promise);
|
|
1087
|
+
const executeTurn = vi
|
|
1088
|
+
.spyOn(dispatcher, "executeTurn")
|
|
1089
|
+
.mockImplementation(async (worker, _req, reuseThreadId) =>
|
|
1090
|
+
resultFor(worker, reuseThreadId ?? "thread-new"),
|
|
1091
|
+
);
|
|
1092
|
+
|
|
1093
|
+
const pendingGenerate = dispatcher.generate(
|
|
1094
|
+
baseReq({
|
|
1095
|
+
reuse: { workerId: makeOpenAIWorkerId(1, 0), threadId: "thread-1", epoch: 1 },
|
|
1096
|
+
}),
|
|
1097
|
+
);
|
|
1098
|
+
await vi.waitFor(() => expect(readOpenAIQuotaUsageMock).toHaveBeenCalledTimes(1));
|
|
1099
|
+
dispatcher.onTokenDeactivated(1);
|
|
1100
|
+
pendingQuota.resolve(quotaOk(10));
|
|
1101
|
+
|
|
1102
|
+
await expect(pendingGenerate).resolves.toMatchObject({ tokenName: "tok-B" });
|
|
1103
|
+
expect(workerA.tryAcquireTurn).not.toHaveBeenCalled();
|
|
1104
|
+
expect(executeTurn).toHaveBeenCalledWith(workerB, expect.anything());
|
|
1105
|
+
});
|
|
1106
|
+
|
|
1107
|
+
it("falls back from busy reuse when its quota metadata changes", async () => {
|
|
1108
|
+
const dispatcher = new OpenAIDispatcher();
|
|
1109
|
+
const workerA = fakeWorker({
|
|
1110
|
+
tokenId: 1,
|
|
1111
|
+
tokenName: "tok-A",
|
|
1112
|
+
threads: ["thread-1"],
|
|
1113
|
+
busy: true,
|
|
1114
|
+
});
|
|
1115
|
+
const workerB = fakeWorker({ tokenId: 2, tokenName: "tok-B" });
|
|
1116
|
+
addWorkers(dispatcher, [workerA, workerB]);
|
|
1117
|
+
await dispatcher.onTokenUpdated(1, "tok-A", credentials(), 80);
|
|
1118
|
+
await dispatcher.onTokenUpdated(2, "tok-B", credentials(), null);
|
|
1119
|
+
readOpenAIQuotaUsageMock
|
|
1120
|
+
.mockResolvedValueOnce(quotaOk(10))
|
|
1121
|
+
.mockResolvedValueOnce(quotaOk(10));
|
|
1122
|
+
const executeTurn = vi
|
|
1123
|
+
.spyOn(dispatcher, "executeTurn")
|
|
1124
|
+
.mockImplementation(async (worker, _req, reuseThreadId) =>
|
|
1125
|
+
resultFor(worker, reuseThreadId ?? "thread-new"),
|
|
1126
|
+
);
|
|
1127
|
+
|
|
1128
|
+
const pendingGenerate = dispatcher.generate(
|
|
1129
|
+
baseReq({
|
|
1130
|
+
reuse: { workerId: makeOpenAIWorkerId(1, 0), threadId: "thread-1", epoch: 1 },
|
|
1131
|
+
}),
|
|
1132
|
+
);
|
|
1133
|
+
await vi.waitFor(() => expect(workerA.tryAcquireTurn).toHaveBeenCalledTimes(1));
|
|
1134
|
+
await dispatcher.onTokenUpdated(1, "tok-A", credentials(), 5);
|
|
1135
|
+
|
|
1136
|
+
await expect(pendingGenerate).resolves.toMatchObject({ tokenName: "tok-B" });
|
|
1137
|
+
expect(executeTurn).toHaveBeenCalledWith(workerB, expect.anything());
|
|
1138
|
+
});
|
|
1139
|
+
|
|
700
1140
|
it("passes worker ttftMs into GenerateResult", async () => {
|
|
701
1141
|
const dispatcher = new OpenAIDispatcher();
|
|
702
1142
|
const worker = fakeWorker({ tokenId: 1, tokenName: "tok-A" });
|