@cartanova/qgrid-cli 1.8.0 → 2.0.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.md +47 -68
- package/bundle/dist/application/qgrid/oauth.js +1 -1
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +137 -0
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +143 -23
- package/bundle/dist/application/qgrid/qgrid.frame.js +350 -81
- package/bundle/dist/application/qgrid/qgrid.types.js +138 -19
- package/bundle/dist/application/qgrid/token-subscriber.js +14 -4
- package/bundle/dist/application/qgrid/token-trigger-setup.js +3 -4
- package/bundle/dist/application/qgrid/tool-emulation.js +102 -0
- package/bundle/dist/application/queries.generated.js +8 -3
- package/bundle/dist/application/request-log/request-log.model.js +105 -1
- package/bundle/dist/application/request-log/request-log.types.js +14 -3
- package/bundle/dist/application/request-log-step/request-log-step.model.js +115 -0
- package/bundle/dist/application/request-log-step/request-log-step.types.js +28 -0
- package/bundle/dist/application/sonamu.generated.js +145 -20
- package/bundle/dist/application/sonamu.generated.sso.js +63 -8
- package/bundle/dist/application/token/token.model.js +10 -8
- package/bundle/dist/application/token/token.types.js +19 -11
- package/bundle/dist/codex-protocol/AbsolutePathBuf.js +2 -0
- package/bundle/dist/codex-protocol/AgentPath.js +2 -0
- package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +2 -0
- package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +2 -0
- package/bundle/dist/codex-protocol/AuthMode.js +2 -0
- package/bundle/dist/codex-protocol/ClientInfo.js +2 -0
- package/bundle/dist/codex-protocol/ClientNotification.js +2 -0
- package/bundle/dist/codex-protocol/ClientRequest.js +2 -0
- package/bundle/dist/codex-protocol/CollaborationMode.js +2 -0
- package/bundle/dist/codex-protocol/ContentItem.js +2 -0
- package/bundle/dist/codex-protocol/ConversationGitInfo.js +2 -0
- package/bundle/dist/codex-protocol/ConversationSummary.js +2 -0
- package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +2 -0
- package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +2 -0
- package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +2 -0
- package/bundle/dist/codex-protocol/FileChange.js +2 -0
- package/bundle/dist/codex-protocol/ForcedLoginMethod.js +2 -0
- package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +2 -0
- package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/GetAuthStatusParams.js +2 -0
- package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +2 -0
- package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +2 -0
- package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +2 -0
- package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +2 -0
- package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +2 -0
- package/bundle/dist/codex-protocol/GitSha.js +2 -0
- package/bundle/dist/codex-protocol/ImageDetail.js +2 -0
- package/bundle/dist/codex-protocol/InitializeCapabilities.js +2 -0
- package/bundle/dist/codex-protocol/InitializeParams.js +2 -0
- package/bundle/dist/codex-protocol/InitializeResponse.js +2 -0
- package/bundle/dist/codex-protocol/InputModality.js +2 -0
- package/bundle/dist/codex-protocol/InternalSessionSource.js +2 -0
- package/bundle/dist/codex-protocol/LocalShellAction.js +2 -0
- package/bundle/dist/codex-protocol/LocalShellExecAction.js +2 -0
- package/bundle/dist/codex-protocol/LocalShellStatus.js +2 -0
- package/bundle/dist/codex-protocol/MessagePhase.js +2 -0
- package/bundle/dist/codex-protocol/ModeKind.js +2 -0
- package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +2 -0
- package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +2 -0
- package/bundle/dist/codex-protocol/ParsedCommand.js +2 -0
- package/bundle/dist/codex-protocol/Personality.js +2 -0
- package/bundle/dist/codex-protocol/PlanType.js +2 -0
- package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +2 -0
- package/bundle/dist/codex-protocol/RealtimeOutputModality.js +2 -0
- package/bundle/dist/codex-protocol/RealtimeVoice.js +2 -0
- package/bundle/dist/codex-protocol/RealtimeVoicesList.js +2 -0
- package/bundle/dist/codex-protocol/ReasoningEffort.js +2 -0
- package/bundle/dist/codex-protocol/ReasoningItemContent.js +2 -0
- package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +2 -0
- package/bundle/dist/codex-protocol/ReasoningSummary.js +2 -0
- package/bundle/dist/codex-protocol/RequestId.js +2 -0
- package/bundle/dist/codex-protocol/Resource.js +2 -0
- package/bundle/dist/codex-protocol/ResourceContent.js +2 -0
- package/bundle/dist/codex-protocol/ResourceTemplate.js +2 -0
- package/bundle/dist/codex-protocol/ResponseItem.js +2 -0
- package/bundle/dist/codex-protocol/ReviewDecision.js +2 -0
- package/bundle/dist/codex-protocol/ServerNotification.js +2 -0
- package/bundle/dist/codex-protocol/ServerRequest.js +2 -0
- package/bundle/dist/codex-protocol/SessionSource.js +2 -0
- package/bundle/dist/codex-protocol/Settings.js +2 -0
- package/bundle/dist/codex-protocol/SubAgentSource.js +2 -0
- package/bundle/dist/codex-protocol/ThreadId.js +2 -0
- package/bundle/dist/codex-protocol/ThreadMemoryMode.js +2 -0
- package/bundle/dist/codex-protocol/Tool.js +2 -0
- package/bundle/dist/codex-protocol/Verbosity.js +2 -0
- package/bundle/dist/codex-protocol/WebSearchAction.js +2 -0
- package/bundle/dist/codex-protocol/WebSearchContextSize.js +2 -0
- package/bundle/dist/codex-protocol/WebSearchLocation.js +2 -0
- package/bundle/dist/codex-protocol/WebSearchMode.js +2 -0
- package/bundle/dist/codex-protocol/WebSearchToolConfig.js +2 -0
- package/bundle/dist/codex-protocol/index.js +3 -0
- package/bundle/dist/codex-protocol/serde_json/JsonValue.js +2 -0
- package/bundle/dist/codex-protocol/v2/Account.js +2 -0
- package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +2 -0
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +2 -0
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +2 -0
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +2 -0
- package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +2 -0
- package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +2 -0
- package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppBranding.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppMetadata.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppReview.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppScreenshot.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppSummary.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppToolApproval.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +2 -0
- package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppsConfig.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppsListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/AppsListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/AskForApproval.js +2 -0
- package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/ByteRange.js +2 -0
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +2 -0
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/CollabAgentState.js +2 -0
- package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +2 -0
- package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandAction.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/CommandMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/Config.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigEdit.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigLayer.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +2 -0
- package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +2 -0
- package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +2 -0
- package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +2 -0
- package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +2 -0
- package/bundle/dist/codex-protocol/v2/ErrorNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +2 -0
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +2 -0
- package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileSystemPath.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +2 -0
- package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsCopyParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsWatchParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/GetAccountParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/GitInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +2 -0
- package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookEventName.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookHandlerType.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookMetadata.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookRunStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookRunSummary.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookScope.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/HooksListEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/HooksListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/HooksListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpToolCallError.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +2 -0
- package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/MemoryCitation.js +2 -0
- package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/MergeStrategy.js +2 -0
- package/bundle/dist/codex-protocol/v2/MigrationDetails.js +2 -0
- package/bundle/dist/codex-protocol/v2/Model.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelVerification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkAccess.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +2 -0
- package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +2 -0
- package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +2 -0
- package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +2 -0
- package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionProfile.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginAvailability.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginDetail.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginInterface.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareContext.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginSummary.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/PluginsMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +2 -0
- package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +2 -0
- package/bundle/dist/codex-protocol/v2/ProfileV2.js +2 -0
- package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +2 -0
- package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +2 -0
- package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +2 -0
- package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +2 -0
- package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ReviewTarget.js +2 -0
- package/bundle/dist/codex-protocol/v2/SandboxMode.js +2 -0
- package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +2 -0
- package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +2 -0
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/SessionMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/SessionSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillDependencies.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillInterface.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillMetadata.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillScope.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillSummary.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/SortDirection.js +2 -0
- package/bundle/dist/codex-protocol/v2/SubagentMigration.js +2 -0
- package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/TextElement.js +2 -0
- package/bundle/dist/codex-protocol/v2/TextPosition.js +2 -0
- package/bundle/dist/codex-protocol/v2/TextRange.js +2 -0
- package/bundle/dist/codex-protocol/v2/Thread.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadGoal.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadItem.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/ToolsV2.js +2 -0
- package/bundle/dist/codex-protocol/v2/Turn.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnError.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnItemsView.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnStartParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/UserInput.js +2 -0
- package/bundle/dist/codex-protocol/v2/WarningNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/WebSearchAction.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +2 -0
- package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +2 -0
- package/bundle/dist/codex-protocol/v2/WriteStatus.js +2 -0
- package/bundle/dist/codex-protocol/v2/index.js +7 -0
- package/bundle/dist/i18n/sd.generated.js +37 -5
- package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +22 -0
- package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +18 -0
- package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +16 -0
- package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +34 -0
- package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +31 -0
- package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +20 -0
- package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +16 -0
- package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +14 -0
- package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +16 -0
- package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +17 -0
- package/bundle/dist/sonamu.config.js +44 -42
- package/bundle/dist/utils/providers/common/credentials.js +22 -0
- package/bundle/dist/utils/providers/common/model-cost.js +117 -0
- package/bundle/dist/utils/providers/common/provider-dispatcher.js +2 -0
- package/bundle/dist/utils/providers/common/strictifier.js +81 -0
- package/bundle/dist/utils/providers/common/token-picker.js +15 -0
- package/bundle/dist/utils/providers/openai/codex-rpc.js +151 -0
- package/bundle/dist/utils/providers/openai/codex-worker.js +371 -0
- package/bundle/dist/utils/providers/openai/openai-constants.js +10 -0
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +325 -0
- package/bundle/dist/utils/providers/openai/openai-refresh.js +93 -0
- package/bundle/src/application/qgrid/oauth.ts +8 -4
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +185 -0
- package/bundle/src/application/qgrid/qgrid.dispatcher.ts +200 -37
- package/bundle/src/application/qgrid/qgrid.frame.ts +400 -76
- package/bundle/src/application/qgrid/qgrid.types.ts +153 -19
- package/bundle/src/application/qgrid/token-subscriber.ts +27 -5
- package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -3
- package/bundle/src/application/qgrid/tool-emulation.ts +95 -0
- package/bundle/src/application/queries.generated.ts +31 -3
- package/bundle/src/application/request-log/request-log.entity.json +49 -41
- package/bundle/src/application/request-log/request-log.model.ts +180 -0
- package/bundle/src/application/request-log/request-log.types.ts +15 -0
- package/bundle/src/application/request-log-step/request-log-step.entity.json +137 -0
- package/bundle/src/application/request-log-step/request-log-step.model.ts +161 -0
- package/bundle/src/application/request-log-step/request-log-step.types.ts +30 -0
- package/bundle/src/application/sonamu.generated.http +245 -23
- package/bundle/src/application/sonamu.generated.sso.ts +72 -5
- package/bundle/src/application/sonamu.generated.ts +199 -22
- package/bundle/src/application/token/token.entity.json +7 -19
- package/bundle/src/application/token/token.model.ts +13 -13
- package/bundle/src/application/token/token.types.ts +25 -12
- package/bundle/src/codex-protocol/AbsolutePathBuf.ts +14 -0
- package/bundle/src/codex-protocol/AgentPath.ts +5 -0
- package/bundle/src/codex-protocol/ApplyPatchApprovalParams.ts +24 -0
- package/bundle/src/codex-protocol/ApplyPatchApprovalResponse.ts +6 -0
- package/bundle/src/codex-protocol/AuthMode.ts +8 -0
- package/bundle/src/codex-protocol/ClientInfo.ts +5 -0
- package/bundle/src/codex-protocol/ClientNotification.ts +5 -0
- package/bundle/src/codex-protocol/ClientRequest.ts +176 -0
- package/bundle/src/codex-protocol/CollaborationMode.ts +10 -0
- package/bundle/src/codex-protocol/ContentItem.ts +9 -0
- package/bundle/src/codex-protocol/ConversationGitInfo.ts +9 -0
- package/bundle/src/codex-protocol/ConversationSummary.ts +19 -0
- package/bundle/src/codex-protocol/ExecCommandApprovalParams.ts +22 -0
- package/bundle/src/codex-protocol/ExecCommandApprovalResponse.ts +6 -0
- package/bundle/src/codex-protocol/ExecPolicyAmendment.ts +12 -0
- package/bundle/src/codex-protocol/FileChange.ts +8 -0
- package/bundle/src/codex-protocol/ForcedLoginMethod.ts +5 -0
- package/bundle/src/codex-protocol/FunctionCallOutputBody.ts +6 -0
- package/bundle/src/codex-protocol/FunctionCallOutputContentItem.ts +12 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchMatchType.ts +5 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchParams.ts +9 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchResponse.ts +6 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchResult.ts +16 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +5 -0
- package/bundle/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +10 -0
- package/bundle/src/codex-protocol/GetAuthStatusParams.ts +5 -0
- package/bundle/src/codex-protocol/GetAuthStatusResponse.ts +10 -0
- package/bundle/src/codex-protocol/GetConversationSummaryParams.ts +6 -0
- package/bundle/src/codex-protocol/GetConversationSummaryResponse.ts +6 -0
- package/bundle/src/codex-protocol/GitDiffToRemoteParams.ts +5 -0
- package/bundle/src/codex-protocol/GitDiffToRemoteResponse.ts +6 -0
- package/bundle/src/codex-protocol/GitSha.ts +5 -0
- package/bundle/src/codex-protocol/ImageDetail.ts +5 -0
- package/bundle/src/codex-protocol/InitializeCapabilities.ts +18 -0
- package/bundle/src/codex-protocol/InitializeParams.ts +10 -0
- package/bundle/src/codex-protocol/InitializeResponse.ts +22 -0
- package/bundle/src/codex-protocol/InputModality.ts +8 -0
- package/bundle/src/codex-protocol/InternalSessionSource.ts +5 -0
- package/bundle/src/codex-protocol/LocalShellAction.ts +6 -0
- package/bundle/src/codex-protocol/LocalShellExecAction.ts +11 -0
- package/bundle/src/codex-protocol/LocalShellStatus.ts +5 -0
- package/bundle/src/codex-protocol/MessagePhase.ts +11 -0
- package/bundle/src/codex-protocol/ModeKind.ts +8 -0
- package/bundle/src/codex-protocol/NetworkPolicyAmendment.ts +6 -0
- package/bundle/src/codex-protocol/NetworkPolicyRuleAction.ts +5 -0
- package/bundle/src/codex-protocol/ParsedCommand.ts +20 -0
- package/bundle/src/codex-protocol/Personality.ts +5 -0
- package/bundle/src/codex-protocol/PlanType.ts +17 -0
- package/bundle/src/codex-protocol/RealtimeConversationVersion.ts +5 -0
- package/bundle/src/codex-protocol/RealtimeOutputModality.ts +5 -0
- package/bundle/src/codex-protocol/RealtimeVoice.ts +24 -0
- package/bundle/src/codex-protocol/RealtimeVoicesList.ts +11 -0
- package/bundle/src/codex-protocol/ReasoningEffort.ts +8 -0
- package/bundle/src/codex-protocol/ReasoningItemContent.ts +7 -0
- package/bundle/src/codex-protocol/ReasoningItemReasoningSummary.ts +5 -0
- package/bundle/src/codex-protocol/ReasoningSummary.ts +10 -0
- package/bundle/src/codex-protocol/RequestId.ts +5 -0
- package/bundle/src/codex-protocol/Resource.ts +19 -0
- package/bundle/src/codex-protocol/ResourceContent.ts +27 -0
- package/bundle/src/codex-protocol/ResourceTemplate.ts +16 -0
- package/bundle/src/codex-protocol/ResponseItem.ts +63 -0
- package/bundle/src/codex-protocol/ReviewDecision.ts +17 -0
- package/bundle/src/codex-protocol/ServerNotification.ts +154 -0
- package/bundle/src/codex-protocol/ServerRequest.ts +47 -0
- package/bundle/src/codex-protocol/SessionSource.ts +15 -0
- package/bundle/src/codex-protocol/Settings.ts +13 -0
- package/bundle/src/codex-protocol/SubAgentSource.ts +20 -0
- package/bundle/src/codex-protocol/ThreadId.ts +5 -0
- package/bundle/src/codex-protocol/ThreadMemoryMode.ts +5 -0
- package/bundle/src/codex-protocol/Tool.ts +18 -0
- package/bundle/src/codex-protocol/Verbosity.ts +9 -0
- package/bundle/src/codex-protocol/WebSearchAction.ts +9 -0
- package/bundle/src/codex-protocol/WebSearchContextSize.ts +5 -0
- package/bundle/src/codex-protocol/WebSearchLocation.ts +10 -0
- package/bundle/src/codex-protocol/WebSearchMode.ts +5 -0
- package/bundle/src/codex-protocol/WebSearchToolConfig.ts +11 -0
- package/bundle/src/codex-protocol/index.ts +79 -0
- package/bundle/src/codex-protocol/serde_json/JsonValue.ts +11 -0
- package/bundle/src/codex-protocol/v2/Account.ts +9 -0
- package/bundle/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/AccountUpdatedNotification.ts +7 -0
- package/bundle/src/codex-protocol/v2/ActivePermissionProfile.ts +22 -0
- package/bundle/src/codex-protocol/v2/ActivePermissionProfileModification.ts +9 -0
- package/bundle/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +5 -0
- package/bundle/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +18 -0
- package/bundle/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +5 -0
- package/bundle/src/codex-protocol/v2/AdditionalPermissionProfile.ts +13 -0
- package/bundle/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/AnalyticsConfig.ts +14 -0
- package/bundle/src/codex-protocol/v2/AppBranding.ts +15 -0
- package/bundle/src/codex-protocol/v2/AppInfo.ts +32 -0
- package/bundle/src/codex-protocol/v2/AppListUpdatedNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/AppMetadata.ts +20 -0
- package/bundle/src/codex-protocol/v2/AppReview.ts +5 -0
- package/bundle/src/codex-protocol/v2/AppScreenshot.ts +5 -0
- package/bundle/src/codex-protocol/v2/AppSummary.ts +14 -0
- package/bundle/src/codex-protocol/v2/AppToolApproval.ts +5 -0
- package/bundle/src/codex-protocol/v2/AppToolsConfig.ts +8 -0
- package/bundle/src/codex-protocol/v2/ApprovalsReviewer.ts +12 -0
- package/bundle/src/codex-protocol/v2/AppsConfig.ts +17 -0
- package/bundle/src/codex-protocol/v2/AppsDefaultConfig.ts +9 -0
- package/bundle/src/codex-protocol/v2/AppsListParams.ts +25 -0
- package/bundle/src/codex-protocol/v2/AppsListResponse.ts +16 -0
- package/bundle/src/codex-protocol/v2/AskForApproval.ts +18 -0
- package/bundle/src/codex-protocol/v2/AutoReviewDecisionSource.ts +8 -0
- package/bundle/src/codex-protocol/v2/ByteRange.ts +5 -0
- package/bundle/src/codex-protocol/v2/CancelLoginAccountParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/CancelLoginAccountResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/CancelLoginAccountStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +5 -0
- package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +9 -0
- package/bundle/src/codex-protocol/v2/CodexErrorInfo.ts +27 -0
- package/bundle/src/codex-protocol/v2/CollabAgentState.ts +6 -0
- package/bundle/src/codex-protocol/v2/CollabAgentStatus.ts +12 -0
- package/bundle/src/codex-protocol/v2/CollabAgentTool.ts +5 -0
- package/bundle/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/CollaborationModeMask.ts +15 -0
- package/bundle/src/codex-protocol/v2/CommandAction.ts +10 -0
- package/bundle/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +31 -0
- package/bundle/src/codex-protocol/v2/CommandExecOutputStream.ts +8 -0
- package/bundle/src/codex-protocol/v2/CommandExecParams.ts +87 -0
- package/bundle/src/codex-protocol/v2/CommandExecResizeParams.ts +19 -0
- package/bundle/src/codex-protocol/v2/CommandExecResizeResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/CommandExecResponse.ts +25 -0
- package/bundle/src/codex-protocol/v2/CommandExecTerminalSize.ts +17 -0
- package/bundle/src/codex-protocol/v2/CommandExecTerminateParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/CommandExecTerminateResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/CommandExecWriteParams.ts +23 -0
- package/bundle/src/codex-protocol/v2/CommandExecWriteResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +13 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +47 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionSource.ts +9 -0
- package/bundle/src/codex-protocol/v2/CommandExecutionStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/CommandMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/Config.ts +53 -0
- package/bundle/src/codex-protocol/v2/ConfigBatchWriteParams.ts +17 -0
- package/bundle/src/codex-protocol/v2/ConfigEdit.ts +7 -0
- package/bundle/src/codex-protocol/v2/ConfigLayer.ts +12 -0
- package/bundle/src/codex-protocol/v2/ConfigLayerMetadata.ts +6 -0
- package/bundle/src/codex-protocol/v2/ConfigLayerSource.ts +27 -0
- package/bundle/src/codex-protocol/v2/ConfigReadParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/ConfigReadResponse.ts +12 -0
- package/bundle/src/codex-protocol/v2/ConfigRequirements.ts +15 -0
- package/bundle/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +11 -0
- package/bundle/src/codex-protocol/v2/ConfigValueWriteParams.ts +16 -0
- package/bundle/src/codex-protocol/v2/ConfigWarningNotification.ts +23 -0
- package/bundle/src/codex-protocol/v2/ConfigWriteResponse.ts +16 -0
- package/bundle/src/codex-protocol/v2/ConfiguredHookHandler.ts +14 -0
- package/bundle/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +9 -0
- package/bundle/src/codex-protocol/v2/ContextCompactedNotification.ts +8 -0
- package/bundle/src/codex-protocol/v2/CreditsSnapshot.ts +5 -0
- package/bundle/src/codex-protocol/v2/DeprecationNoticeNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +7 -0
- package/bundle/src/codex-protocol/v2/DynamicToolCallParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/DynamicToolCallResponse.ts +9 -0
- package/bundle/src/codex-protocol/v2/DynamicToolCallStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/DynamicToolSpec.ts +12 -0
- package/bundle/src/codex-protocol/v2/ErrorNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/ExecPolicyAmendment.ts +5 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeature.ts +38 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +10 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +13 -0
- package/bundle/src/codex-protocol/v2/ExperimentalFeatureStage.ts +10 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +8 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +15 -0
- package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +14 -0
- package/bundle/src/codex-protocol/v2/FeedbackUploadParams.ts +12 -0
- package/bundle/src/codex-protocol/v2/FeedbackUploadResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/FileChangeApprovalDecision.ts +5 -0
- package/bundle/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +15 -0
- package/bundle/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +22 -0
- package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/FileSystemAccessMode.ts +5 -0
- package/bundle/src/codex-protocol/v2/FileSystemPath.ts +10 -0
- package/bundle/src/codex-protocol/v2/FileSystemSandboxEntry.ts +7 -0
- package/bundle/src/codex-protocol/v2/FileSystemSpecialPath.ts +11 -0
- package/bundle/src/codex-protocol/v2/FileUpdateChange.ts +6 -0
- package/bundle/src/codex-protocol/v2/FsChangedNotification.ts +18 -0
- package/bundle/src/codex-protocol/v2/FsCopyParams.ts +22 -0
- package/bundle/src/codex-protocol/v2/FsCopyResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/FsCreateDirectoryParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/FsGetMetadataParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/FsGetMetadataResponse.ts +29 -0
- package/bundle/src/codex-protocol/v2/FsReadDirectoryEntry.ts +21 -0
- package/bundle/src/codex-protocol/v2/FsReadDirectoryParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/FsReadDirectoryResponse.ts +14 -0
- package/bundle/src/codex-protocol/v2/FsReadFileParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/FsReadFileResponse.ts +13 -0
- package/bundle/src/codex-protocol/v2/FsRemoveParams.ts +22 -0
- package/bundle/src/codex-protocol/v2/FsRemoveResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/FsUnwatchParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/FsUnwatchResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/FsWatchParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/FsWatchResponse.ts +14 -0
- package/bundle/src/codex-protocol/v2/FsWriteFileParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/FsWriteFileResponse.ts +8 -0
- package/bundle/src/codex-protocol/v2/GetAccountParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +15 -0
- package/bundle/src/codex-protocol/v2/GetAccountResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/GitInfo.ts +5 -0
- package/bundle/src/codex-protocol/v2/GrantedPermissionProfile.ts +10 -0
- package/bundle/src/codex-protocol/v2/GuardianApprovalReview.ts +18 -0
- package/bundle/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +34 -0
- package/bundle/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +13 -0
- package/bundle/src/codex-protocol/v2/GuardianCommandSource.ts +5 -0
- package/bundle/src/codex-protocol/v2/GuardianRiskLevel.ts +8 -0
- package/bundle/src/codex-protocol/v2/GuardianUserAuthorization.ts +8 -0
- package/bundle/src/codex-protocol/v2/GuardianWarningNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/HookCompletedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/HookErrorInfo.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookEventName.ts +13 -0
- package/bundle/src/codex-protocol/v2/HookExecutionMode.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookHandlerType.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookMetadata.ts +26 -0
- package/bundle/src/codex-protocol/v2/HookMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookOutputEntry.ts +6 -0
- package/bundle/src/codex-protocol/v2/HookOutputEntryKind.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookPromptFragment.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookRunStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookRunSummary.ts +28 -0
- package/bundle/src/codex-protocol/v2/HookScope.ts +5 -0
- package/bundle/src/codex-protocol/v2/HookSource.ts +15 -0
- package/bundle/src/codex-protocol/v2/HookStartedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/HookTrustStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/HooksListEntry.ts +12 -0
- package/bundle/src/codex-protocol/v2/HooksListParams.ts +10 -0
- package/bundle/src/codex-protocol/v2/HooksListResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ItemCompletedNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +44 -0
- package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +38 -0
- package/bundle/src/codex-protocol/v2/ItemStartedNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/ListMcpServerStatusParams.ts +20 -0
- package/bundle/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +13 -0
- package/bundle/src/codex-protocol/v2/LoginAccountParams.ts +27 -0
- package/bundle/src/codex-protocol/v2/LoginAccountResponse.ts +27 -0
- package/bundle/src/codex-protocol/v2/LogoutAccountResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ManagedHooksRequirements.ts +17 -0
- package/bundle/src/codex-protocol/v2/MarketplaceAddParams.ts +9 -0
- package/bundle/src/codex-protocol/v2/MarketplaceAddResponse.ts +10 -0
- package/bundle/src/codex-protocol/v2/MarketplaceInterface.ts +5 -0
- package/bundle/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +6 -0
- package/bundle/src/codex-protocol/v2/MarketplaceRemoveParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +9 -0
- package/bundle/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +5 -0
- package/bundle/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +11 -0
- package/bundle/src/codex-protocol/v2/McpAuthStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationArrayType.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +11 -0
- package/bundle/src/codex-protocol/v2/McpElicitationBooleanType.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationConstOption.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationEnumSchema.ts +11 -0
- package/bundle/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +13 -0
- package/bundle/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +9 -0
- package/bundle/src/codex-protocol/v2/McpElicitationNumberSchema.ts +13 -0
- package/bundle/src/codex-protocol/v2/McpElicitationNumberType.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationObjectType.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +13 -0
- package/bundle/src/codex-protocol/v2/McpElicitationSchema.ts +18 -0
- package/bundle/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +9 -0
- package/bundle/src/codex-protocol/v2/McpElicitationStringFormat.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationStringSchema.ts +15 -0
- package/bundle/src/codex-protocol/v2/McpElicitationStringType.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +6 -0
- package/bundle/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +15 -0
- package/bundle/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +13 -0
- package/bundle/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +9 -0
- package/bundle/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +15 -0
- package/bundle/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +12 -0
- package/bundle/src/codex-protocol/v2/McpResourceReadParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpResourceReadResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/McpServerElicitationAction.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +27 -0
- package/bundle/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +19 -0
- package/bundle/src/codex-protocol/v2/McpServerMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/McpServerOauthLoginParams.ts +9 -0
- package/bundle/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerRefreshResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerStartupState.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerStatus.ts +15 -0
- package/bundle/src/codex-protocol/v2/McpServerStatusDetail.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/McpServerToolCallParams.ts +12 -0
- package/bundle/src/codex-protocol/v2/McpServerToolCallResponse.ts +11 -0
- package/bundle/src/codex-protocol/v2/McpToolCallError.ts +5 -0
- package/bundle/src/codex-protocol/v2/McpToolCallProgressNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/McpToolCallResult.ts +10 -0
- package/bundle/src/codex-protocol/v2/McpToolCallStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/MemoryCitation.ts +6 -0
- package/bundle/src/codex-protocol/v2/MemoryCitationEntry.ts +10 -0
- package/bundle/src/codex-protocol/v2/MergeStrategy.ts +5 -0
- package/bundle/src/codex-protocol/v2/MigrationDetails.ts +18 -0
- package/bundle/src/codex-protocol/v2/Model.ts +30 -0
- package/bundle/src/codex-protocol/v2/ModelAvailabilityNux.ts +5 -0
- package/bundle/src/codex-protocol/v2/ModelListParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/ModelListResponse.ts +13 -0
- package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +9 -0
- package/bundle/src/codex-protocol/v2/ModelRerouteReason.ts +5 -0
- package/bundle/src/codex-protocol/v2/ModelReroutedNotification.ts +12 -0
- package/bundle/src/codex-protocol/v2/ModelServiceTier.ts +5 -0
- package/bundle/src/codex-protocol/v2/ModelUpgradeInfo.ts +10 -0
- package/bundle/src/codex-protocol/v2/ModelVerification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ModelVerificationNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/NetworkAccess.ts +5 -0
- package/bundle/src/codex-protocol/v2/NetworkApprovalContext.ts +6 -0
- package/bundle/src/codex-protocol/v2/NetworkApprovalProtocol.ts +5 -0
- package/bundle/src/codex-protocol/v2/NetworkDomainPermission.ts +5 -0
- package/bundle/src/codex-protocol/v2/NetworkPolicyAmendment.ts +6 -0
- package/bundle/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +5 -0
- package/bundle/src/codex-protocol/v2/NetworkRequirements.ts +40 -0
- package/bundle/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +5 -0
- package/bundle/src/codex-protocol/v2/NonSteerableTurnKind.ts +5 -0
- package/bundle/src/codex-protocol/v2/OverriddenMetadata.ts +11 -0
- package/bundle/src/codex-protocol/v2/PatchApplyStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/PatchChangeKind.ts +8 -0
- package/bundle/src/codex-protocol/v2/PermissionGrantScope.ts +5 -0
- package/bundle/src/codex-protocol/v2/PermissionProfile.ts +14 -0
- package/bundle/src/codex-protocol/v2/PermissionProfileFileSystemPermissions.ts +8 -0
- package/bundle/src/codex-protocol/v2/PermissionProfileModificationParams.ts +9 -0
- package/bundle/src/codex-protocol/v2/PermissionProfileNetworkPermissions.ts +5 -0
- package/bundle/src/codex-protocol/v2/PermissionProfileSelectionParams.ts +10 -0
- package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +14 -0
- package/bundle/src/codex-protocol/v2/PlanDeltaNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/PluginAuthPolicy.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginAvailability.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginDetail.ts +19 -0
- package/bundle/src/codex-protocol/v2/PluginHookSummary.ts +6 -0
- package/bundle/src/codex-protocol/v2/PluginInstallParams.ts +10 -0
- package/bundle/src/codex-protocol/v2/PluginInstallPolicy.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginInstallResponse.ts +10 -0
- package/bundle/src/codex-protocol/v2/PluginInterface.ts +46 -0
- package/bundle/src/codex-protocol/v2/PluginListMarketplaceKind.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginListParams.ts +18 -0
- package/bundle/src/codex-protocol/v2/PluginListResponse.ts +11 -0
- package/bundle/src/codex-protocol/v2/PluginMarketplaceEntry.ts +17 -0
- package/bundle/src/codex-protocol/v2/PluginReadParams.ts +10 -0
- package/bundle/src/codex-protocol/v2/PluginReadResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/PluginShareContext.ts +12 -0
- package/bundle/src/codex-protocol/v2/PluginShareDeleteParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareDeleteResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareDiscoverability.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareListItem.ts +11 -0
- package/bundle/src/codex-protocol/v2/PluginShareListParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareListResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/PluginSharePrincipal.ts +10 -0
- package/bundle/src/codex-protocol/v2/PluginSharePrincipalType.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareSaveParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/PluginShareSaveResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareTarget.ts +6 -0
- package/bundle/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +11 -0
- package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +10 -0
- package/bundle/src/codex-protocol/v2/PluginSkillReadParams.ts +9 -0
- package/bundle/src/codex-protocol/v2/PluginSkillReadResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginSource.ts +9 -0
- package/bundle/src/codex-protocol/v2/PluginSummary.ts +29 -0
- package/bundle/src/codex-protocol/v2/PluginUninstallParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginUninstallResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/PluginsMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/ProcessExitedNotification.ts +43 -0
- package/bundle/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +27 -0
- package/bundle/src/codex-protocol/v2/ProcessOutputStream.ts +8 -0
- package/bundle/src/codex-protocol/v2/ProcessTerminalSize.ts +17 -0
- package/bundle/src/codex-protocol/v2/ProfileV2.ts +37 -0
- package/bundle/src/codex-protocol/v2/RateLimitReachedType.ts +10 -0
- package/bundle/src/codex-protocol/v2/RateLimitSnapshot.ts +17 -0
- package/bundle/src/codex-protocol/v2/RateLimitWindow.ts +9 -0
- package/bundle/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/ReasoningEffortOption.ts +6 -0
- package/bundle/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +12 -0
- package/bundle/src/codex-protocol/v2/RequestPermissionProfile.ts +10 -0
- package/bundle/src/codex-protocol/v2/ResidencyRequirement.ts +5 -0
- package/bundle/src/codex-protocol/v2/ReviewDelivery.ts +5 -0
- package/bundle/src/codex-protocol/v2/ReviewStartParams.ts +15 -0
- package/bundle/src/codex-protocol/v2/ReviewStartResponse.ts +15 -0
- package/bundle/src/codex-protocol/v2/ReviewTarget.ts +16 -0
- package/bundle/src/codex-protocol/v2/SandboxMode.ts +5 -0
- package/bundle/src/codex-protocol/v2/SandboxPolicy.ts +17 -0
- package/bundle/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +10 -0
- package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +6 -0
- package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/SessionMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/SessionSource.ts +13 -0
- package/bundle/src/codex-protocol/v2/SkillDependencies.ts +6 -0
- package/bundle/src/codex-protocol/v2/SkillErrorInfo.ts +5 -0
- package/bundle/src/codex-protocol/v2/SkillInterface.ts +13 -0
- package/bundle/src/codex-protocol/v2/SkillMetadata.ts +21 -0
- package/bundle/src/codex-protocol/v2/SkillScope.ts +5 -0
- package/bundle/src/codex-protocol/v2/SkillSummary.ts +14 -0
- package/bundle/src/codex-protocol/v2/SkillToolDependency.ts +12 -0
- package/bundle/src/codex-protocol/v2/SkillsChangedNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/SkillsConfigWriteParams.ts +16 -0
- package/bundle/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/SkillsListEntry.ts +11 -0
- package/bundle/src/codex-protocol/v2/SkillsListParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/SkillsListResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/SortDirection.ts +5 -0
- package/bundle/src/codex-protocol/v2/SubagentMigration.ts +5 -0
- package/bundle/src/codex-protocol/v2/TerminalInteractionNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/TextElement.ts +15 -0
- package/bundle/src/codex-protocol/v2/TextPosition.ts +14 -0
- package/bundle/src/codex-protocol/v2/TextRange.ts +6 -0
- package/bundle/src/codex-protocol/v2/Thread.ts +88 -0
- package/bundle/src/codex-protocol/v2/ThreadActiveFlag.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +12 -0
- package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadArchiveParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadArchiveResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadArchivedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadClosedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadCompactStartParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadCompactStartResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadForkParams.ts +40 -0
- package/bundle/src/codex-protocol/v2/ThreadForkResponse.ts +30 -0
- package/bundle/src/codex-protocol/v2/ThreadGoal.ts +15 -0
- package/bundle/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadGoalStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/ThreadInjectItemsParams.ts +12 -0
- package/bundle/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadItem.ts +156 -0
- package/bundle/src/codex-protocol/v2/ThreadListParams.ts +55 -0
- package/bundle/src/codex-protocol/v2/ThreadListResponse.ts +20 -0
- package/bundle/src/codex-protocol/v2/ThreadLoadedListParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ThreadLoadedListResponse.ts +15 -0
- package/bundle/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +21 -0
- package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadReadParams.ts +11 -0
- package/bundle/src/codex-protocol/v2/ThreadReadResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +14 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +8 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +8 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +12 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +8 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +17 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +13 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +16 -0
- package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +16 -0
- package/bundle/src/codex-protocol/v2/ThreadResumeParams.ts +39 -0
- package/bundle/src/codex-protocol/v2/ThreadResumeResponse.ts +30 -0
- package/bundle/src/codex-protocol/v2/ThreadRollbackParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ThreadRollbackResponse.ts +15 -0
- package/bundle/src/codex-protocol/v2/ThreadSetNameParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadSetNameResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadShellCommandParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ThreadShellCommandResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadSortKey.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadSource.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadSourceKind.ts +15 -0
- package/bundle/src/codex-protocol/v2/ThreadStartParams.ts +33 -0
- package/bundle/src/codex-protocol/v2/ThreadStartResponse.ts +30 -0
- package/bundle/src/codex-protocol/v2/ThreadStartSource.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadStartedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadStatus.ts +10 -0
- package/bundle/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadTokenUsage.ts +10 -0
- package/bundle/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/ThreadUnarchiveParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/TokenUsageBreakdown.ts +11 -0
- package/bundle/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +8 -0
- package/bundle/src/codex-protocol/v2/ToolRequestUserInputOption.ts +8 -0
- package/bundle/src/codex-protocol/v2/ToolRequestUserInputParams.ts +14 -0
- package/bundle/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +16 -0
- package/bundle/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +11 -0
- package/bundle/src/codex-protocol/v2/ToolsV2.ts +6 -0
- package/bundle/src/codex-protocol/v2/Turn.ts +36 -0
- package/bundle/src/codex-protocol/v2/TurnCompletedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/TurnEnvironmentParams.ts +6 -0
- package/bundle/src/codex-protocol/v2/TurnError.ts +10 -0
- package/bundle/src/codex-protocol/v2/TurnInterruptParams.ts +5 -0
- package/bundle/src/codex-protocol/v2/TurnInterruptResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/TurnItemsView.ts +5 -0
- package/bundle/src/codex-protocol/v2/TurnPlanStep.ts +6 -0
- package/bundle/src/codex-protocol/v2/TurnPlanStepStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +11 -0
- package/bundle/src/codex-protocol/v2/TurnStartParams.ts +48 -0
- package/bundle/src/codex-protocol/v2/TurnStartResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/TurnStartedNotification.ts +6 -0
- package/bundle/src/codex-protocol/v2/TurnStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/TurnSteerParams.ts +13 -0
- package/bundle/src/codex-protocol/v2/TurnSteerResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/UserInput.ts +18 -0
- package/bundle/src/codex-protocol/v2/WarningNotification.ts +14 -0
- package/bundle/src/codex-protocol/v2/WebSearchAction.ts +9 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxReadiness.ts +5 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +6 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +10 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +5 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +10 -0
- package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +5 -0
- package/bundle/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +9 -0
- package/bundle/src/codex-protocol/v2/WriteStatus.ts +5 -0
- package/bundle/src/codex-protocol/v2/index.ts +446 -0
- package/bundle/src/i18n/sd.generated.ts +36 -4
- package/bundle/src/migrations/20260518145411_alter_tokens_add2_drop4_alter1.ts +23 -0
- package/bundle/src/migrations/20260520112853_alter_request_logs_add3_alter1.ts +17 -0
- package/bundle/src/migrations/20260520124755_alter_request_logs_drop1_alter1.ts +15 -0
- package/bundle/src/migrations/20260520130420_create__request_log_steps.ts +33 -0
- package/bundle/src/migrations/20260520134908_alter_request_logs_add2_alter8.ts +44 -0
- package/bundle/src/migrations/20260520134909_alter_request_log_steps_add1_alter3.ts +23 -0
- package/bundle/src/migrations/20260520141449_alter_request_logs_add1_alter1.ts +15 -0
- package/bundle/src/migrations/20260521134025_alter_request_log_steps_alter1.ts +13 -0
- package/bundle/src/migrations/20260521134026_alter_request_log_steps_foreigns.ts +17 -0
- package/bundle/src/migrations/20260522181721_alter_request_log_steps_add2_alter1.ts +16 -0
- package/bundle/src/sonamu.config.ts +58 -46
- package/bundle/src/typings/sonamu.d.ts +1 -1
- package/bundle/src/utils/providers/common/credentials.ts +26 -0
- package/bundle/src/utils/providers/common/model-cost.ts +65 -0
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +36 -0
- package/bundle/src/utils/providers/common/strictifier.ts +128 -0
- package/bundle/src/utils/providers/common/token-picker.ts +18 -0
- package/bundle/src/utils/providers/openai/codex-rpc.ts +236 -0
- package/bundle/src/utils/providers/openai/codex-worker.ts +469 -0
- package/bundle/src/utils/providers/openai/openai-constants.ts +5 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +453 -0
- package/bundle/src/utils/providers/openai/openai-refresh.ts +134 -0
- package/bundle/web-dist/client/assets/index-B5DSo5uH.css +1 -0
- package/bundle/web-dist/client/assets/index-ZV-tHpAg.js +78 -0
- package/bundle/web-dist/client/assets/logs-HJYkbqom.js +1 -0
- package/bundle/web-dist/client/assets/routes-BMRwPj6F.js +5 -0
- package/bundle/web-dist/client/assets/sd.generated-7jzAQL2_.js +51 -0
- package/bundle/web-dist/client/assets/services.generated-Bx1Eh7ot.js +1 -0
- package/bundle/web-dist/client/assets/{show-Ch7LEdBK.js → show-DI6iWDzV.js} +3 -2
- package/bundle/web-dist/client/assets/tokens-Cg1f0Ga2.js +1 -0
- package/bundle/web-dist/client/index.html +3 -3
- package/bundle/web-dist/server/assets/{lazyRouteComponent-CcyhCAoL.js → lazyRouteComponent-BEaI4mOq.js} +2 -2
- package/bundle/web-dist/server/assets/logs-Xt934T5f.js +371 -0
- package/bundle/web-dist/server/assets/{routes-CtTFrsIz.js → routes-B7QYbNIv.js} +149 -92
- package/bundle/web-dist/server/assets/{sd.generated-CkiEsOwK.js → sd.generated-BeUHLWKH.js} +538 -163
- package/bundle/web-dist/server/assets/{services.generated-D4asAlWb.js → services.generated-C39hdSv0.js} +164 -33
- package/bundle/web-dist/server/assets/{shim-BYpcQGN1.js → shim-B9ZrFt3Z.js} +1 -1
- package/bundle/web-dist/server/assets/{show-Bz0If-L7.js → show-Dxz6UJnD.js} +508 -150
- package/bundle/web-dist/server/assets/tokens-IPwv3pNB.js +477 -0
- package/bundle/web-dist/server/entry-server.generated.js +157 -197
- package/dist/cli.js +38 -17
- package/package.json +2 -2
- package/bundle/web-dist/client/assets/copy-DdGJDXSK.js +0 -1
- package/bundle/web-dist/client/assets/index-D-D8GkQh.css +0 -1
- package/bundle/web-dist/client/assets/index-DzEE3oyG.js +0 -78
- package/bundle/web-dist/client/assets/logs-Bn56eAAL.js +0 -1
- package/bundle/web-dist/client/assets/routes-BCEPwpzm.js +0 -5
- package/bundle/web-dist/client/assets/sd.generated-C9WnMJm4.js +0 -47
- package/bundle/web-dist/client/assets/services.generated-CWN1-bYW.js +0 -1
- package/bundle/web-dist/client/assets/tokens-DPvuQIs2.js +0 -1
- package/bundle/web-dist/server/assets/copy-SIUvcEcZ.js +0 -42
- package/bundle/web-dist/server/assets/logs-D1ezT2IS.js +0 -361
- package/bundle/web-dist/server/assets/tokens-BBBfLC7N.js +0 -849
|
@@ -1,43 +1,201 @@
|
|
|
1
1
|
import "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { buildAuthUrl, exchangeCodeForTokens, fetchUsage, generatePKCE, refreshAccessToken } from "./oauth.js";
|
|
3
|
-
import { QgridDispatcher } from "./qgrid.dispatcher.js";
|
|
4
3
|
import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js";
|
|
5
4
|
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
6
5
|
import { MICRO_USD, RequestLogModel } from "../request-log/request-log.model.js";
|
|
6
|
+
import { afterQuery, beforeQuery, finishRunAborted, finishRunWithError } from "./qgrid-run-lifecycle.js";
|
|
7
|
+
import { getAccessToken, getExpiresAt, getRefreshToken } from "../../utils/providers/common/credentials.js";
|
|
8
|
+
import { StreamEvents } from "./qgrid.types.js";
|
|
9
|
+
import { QgridDispatcher } from "./qgrid.dispatcher.js";
|
|
7
10
|
import { TokenModel } from "../token/token.model.js";
|
|
11
|
+
import { TokenCredentials } from "../token/token.types.js";
|
|
12
|
+
import crypto from "node:crypto";
|
|
8
13
|
import { getLogger } from "@logtape/logtape";
|
|
9
|
-
import { BaseFrameClass, api } from "sonamu";
|
|
14
|
+
import { BaseFrameClass, Sonamu, api, stream } from "sonamu";
|
|
15
|
+
import { getCacheManagerRef } from "sonamu/cache";
|
|
10
16
|
//#region src/application/qgrid/qgrid.frame.ts
|
|
11
|
-
|
|
17
|
+
var _ref;
|
|
18
|
+
const pendingStreams = /* @__PURE__ */ new Map();
|
|
19
|
+
const OAUTH_STATE_PREFIX = "oauth:state:";
|
|
20
|
+
const OAUTH_STATE_TTL = "5m";
|
|
21
|
+
async function setOAuthState(state, data) {
|
|
22
|
+
const cache = getCacheManagerRef();
|
|
23
|
+
if (!cache) throw new Error("CacheManager not initialized");
|
|
24
|
+
await cache.set({
|
|
25
|
+
key: `${OAUTH_STATE_PREFIX}${state}`,
|
|
26
|
+
value: JSON.stringify(data),
|
|
27
|
+
ttl: OAUTH_STATE_TTL
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async function getOAuthState(state) {
|
|
31
|
+
const cache = getCacheManagerRef();
|
|
32
|
+
if (!cache) throw new Error("CacheManager not initialized");
|
|
33
|
+
const raw = await cache.get({ key: `${OAUTH_STATE_PREFIX}${state}` });
|
|
34
|
+
if (!raw) return void 0;
|
|
35
|
+
return JSON.parse(raw);
|
|
36
|
+
}
|
|
37
|
+
async function deleteOAuthState(state) {
|
|
38
|
+
const cache = getCacheManagerRef();
|
|
39
|
+
if (!cache) return;
|
|
40
|
+
await cache.delete({ key: `${OAUTH_STATE_PREFIX}${state}` });
|
|
41
|
+
}
|
|
12
42
|
const logger = getLogger(["qgrid"]);
|
|
13
43
|
const oauthLogger = getLogger(["qgrid", "oauth"]);
|
|
14
44
|
var QgridFrameClass = class extends BaseFrameClass {
|
|
15
45
|
constructor() {
|
|
16
46
|
super("Qgrid");
|
|
17
47
|
}
|
|
18
|
-
async query(
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
async query(args) {
|
|
49
|
+
const effectiveLogMode = args.logMode ?? (args.isStep ? "run" : "auto");
|
|
50
|
+
if (effectiveLogMode === "run") {
|
|
51
|
+
const { requestLogId, stepIndex } = await beforeQuery(args);
|
|
52
|
+
try {
|
|
53
|
+
const result = await QgridDispatcher.query(args, args.timeout);
|
|
54
|
+
const lifecycle = await afterQuery(requestLogId, stepIndex, args, result);
|
|
55
|
+
return {
|
|
56
|
+
...result,
|
|
57
|
+
runContext: lifecycle.runContext
|
|
58
|
+
};
|
|
59
|
+
} catch (e) {
|
|
60
|
+
await finishRunWithError(requestLogId, e.message, args);
|
|
61
|
+
throw e;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const result = await QgridDispatcher.query(args, args.timeout);
|
|
65
|
+
if (effectiveLogMode === "auto") {
|
|
66
|
+
const toolCallCount = result.content.filter((item) => item.type === "tool-call").length;
|
|
67
|
+
const responseText = result.content.filter((item) => item.type === "text").map((item) => item.text).join("\n");
|
|
68
|
+
RequestLogModel.save([{
|
|
69
|
+
token_name: result.tokenName,
|
|
70
|
+
project_name: args.projectName?.length ? args.projectName : null,
|
|
71
|
+
model_name: result.model ?? null,
|
|
72
|
+
user_prompt: args.prompt,
|
|
73
|
+
system_prompt: args.system ?? null,
|
|
74
|
+
response: responseText,
|
|
75
|
+
input_tokens: result.usage.input_tokens,
|
|
76
|
+
output_tokens: result.usage.output_tokens,
|
|
77
|
+
cache_read_tokens: result.usage.cache_read_input_tokens,
|
|
78
|
+
cache_creation_tokens: result.usage.cache_creation_input_tokens,
|
|
79
|
+
duration_ms: result.durationMs,
|
|
80
|
+
cost_usd: result.costUsd !== null ? Math.round(result.costUsd * MICRO_USD) : null,
|
|
81
|
+
effort: args.effort ?? null,
|
|
82
|
+
history: args.history ? JSON.parse(args.history) : null,
|
|
83
|
+
status: "succeeded",
|
|
84
|
+
tool_call_count: toolCallCount
|
|
85
|
+
}]).catch((e) => logger.error(`requestLog save failed: ${e.message}`));
|
|
86
|
+
}
|
|
39
87
|
return result;
|
|
40
88
|
}
|
|
89
|
+
async prepareStream(args) {
|
|
90
|
+
const streamId = crypto.randomUUID();
|
|
91
|
+
pendingStreams.set(streamId, args);
|
|
92
|
+
setTimeout(() => pendingStreams.delete(streamId), 3e4);
|
|
93
|
+
return { streamId };
|
|
94
|
+
}
|
|
95
|
+
async queryStream(streamId) {
|
|
96
|
+
const args = pendingStreams.get(streamId);
|
|
97
|
+
pendingStreams.delete(streamId);
|
|
98
|
+
if (!args) throw new Error("invalid or expired streamId");
|
|
99
|
+
const shouldLog = (args.logMode ?? (args.isStep ? "run" : "auto")) === "run";
|
|
100
|
+
let runInfo;
|
|
101
|
+
if (shouldLog) try {
|
|
102
|
+
runInfo = await beforeQuery(args);
|
|
103
|
+
} catch (e) {
|
|
104
|
+
logger.error(`stream beforeQuery failed: ${e.message}`);
|
|
105
|
+
}
|
|
106
|
+
const sse = Sonamu.getContext().createSSE(StreamEvents);
|
|
107
|
+
let threadId;
|
|
108
|
+
let turnId;
|
|
109
|
+
let streamResult;
|
|
110
|
+
let streamError;
|
|
111
|
+
sse.onClose(() => {
|
|
112
|
+
if (threadId && turnId) QgridDispatcher.openaiDispatcher?.interruptWorkerTurn(threadId, turnId).catch(() => {});
|
|
113
|
+
});
|
|
114
|
+
try {
|
|
115
|
+
await QgridDispatcher.queryStream(args, {
|
|
116
|
+
onDelta: (text) => {
|
|
117
|
+
if (!sse.closed) sse.publish("delta", { text });
|
|
118
|
+
},
|
|
119
|
+
onThreadId: (id) => {
|
|
120
|
+
threadId = id;
|
|
121
|
+
if (sse.closed && turnId) QgridDispatcher.openaiDispatcher?.interruptWorkerTurn(threadId, turnId).catch(() => {});
|
|
122
|
+
},
|
|
123
|
+
onTurnId: (id) => {
|
|
124
|
+
turnId = id;
|
|
125
|
+
if (sse.closed && threadId) QgridDispatcher.openaiDispatcher?.interruptWorkerTurn(threadId, turnId).catch(() => {});
|
|
126
|
+
},
|
|
127
|
+
onComplete: (result) => {
|
|
128
|
+
streamResult = result;
|
|
129
|
+
},
|
|
130
|
+
onError: (err) => {
|
|
131
|
+
streamError = err;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
} catch (e) {
|
|
135
|
+
streamError = e;
|
|
136
|
+
}
|
|
137
|
+
if (streamResult) {
|
|
138
|
+
let runContext;
|
|
139
|
+
if (runInfo) try {
|
|
140
|
+
runContext = (await afterQuery(runInfo.requestLogId, runInfo.stepIndex, args, streamResult)).runContext;
|
|
141
|
+
} catch (e) {
|
|
142
|
+
logger.error(`stream afterQuery failed: ${e.message}`);
|
|
143
|
+
}
|
|
144
|
+
if (!sse.closed) sse.publish("done", {
|
|
145
|
+
...streamResult,
|
|
146
|
+
runContext
|
|
147
|
+
});
|
|
148
|
+
} else if (streamError) {
|
|
149
|
+
if (runInfo) await finishRunWithError(runInfo.requestLogId, streamError.message, args);
|
|
150
|
+
if (!sse.closed) sse.publish("error", { message: streamError.message });
|
|
151
|
+
} else if (sse.closed && runInfo) await finishRunAborted(runInfo.requestLogId, args);
|
|
152
|
+
await sse.end();
|
|
153
|
+
}
|
|
154
|
+
async createRun(input) {
|
|
155
|
+
return { requestLogId: await RequestLogModel.createRun({
|
|
156
|
+
user_prompt: input.userPrompt,
|
|
157
|
+
model_name: input.modelName,
|
|
158
|
+
effort: input.effort,
|
|
159
|
+
project_name: input.projectName,
|
|
160
|
+
system_prompt: input.systemPrompt
|
|
161
|
+
}) };
|
|
162
|
+
}
|
|
163
|
+
async appendStep(input) {
|
|
164
|
+
return { stepId: await RequestLogModel.appendStep(input.requestLogId, {
|
|
165
|
+
step_index: input.stepIndex,
|
|
166
|
+
type: input.type,
|
|
167
|
+
input_tokens: input.inputTokens,
|
|
168
|
+
output_tokens: input.outputTokens,
|
|
169
|
+
cache_read_tokens: input.cacheReadTokens,
|
|
170
|
+
cache_creation_tokens: input.cacheCreationTokens,
|
|
171
|
+
duration_ms: input.durationMs,
|
|
172
|
+
finish_reason: input.finishReason,
|
|
173
|
+
reasoning_text: input.reasoningText,
|
|
174
|
+
reasoning_tokens: input.reasoningTokens,
|
|
175
|
+
tool_call_index: input.toolCallIndex,
|
|
176
|
+
tool_call_id: input.toolCallId,
|
|
177
|
+
tool_name: input.toolName,
|
|
178
|
+
tool_args: input.toolArgs,
|
|
179
|
+
tool_result: input.toolResult,
|
|
180
|
+
tool_duration_ms: input.toolDurationMs,
|
|
181
|
+
error: input.error
|
|
182
|
+
}) };
|
|
183
|
+
}
|
|
184
|
+
async finishRun(input) {
|
|
185
|
+
await RequestLogModel.finishRun(input.requestLogId, {
|
|
186
|
+
status: input.status,
|
|
187
|
+
response: input.response,
|
|
188
|
+
token_name: input.tokenName,
|
|
189
|
+
input_tokens: input.totalInputTokens,
|
|
190
|
+
output_tokens: input.totalOutputTokens,
|
|
191
|
+
cache_read_tokens: input.totalCacheReadTokens,
|
|
192
|
+
cache_creation_tokens: input.totalCacheCreationTokens,
|
|
193
|
+
duration_ms: input.totalDurationMs,
|
|
194
|
+
history: input.history ? JSON.parse(input.history) : void 0,
|
|
195
|
+
error_message: input.errorMessage
|
|
196
|
+
});
|
|
197
|
+
return { ok: true };
|
|
198
|
+
}
|
|
41
199
|
async stats() {
|
|
42
200
|
return QgridDispatcher.getStats();
|
|
43
201
|
}
|
|
@@ -47,29 +205,27 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
47
205
|
async projectNames() {
|
|
48
206
|
return { names: await RequestLogModel.distinctProjectNames() };
|
|
49
207
|
}
|
|
50
|
-
async addToken(
|
|
208
|
+
async addToken(provider, credentials, name) {
|
|
51
209
|
await TokenModel.save([{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
210
|
+
provider,
|
|
211
|
+
credentials,
|
|
212
|
+
name
|
|
55
213
|
}]);
|
|
56
214
|
return { added: true };
|
|
57
215
|
}
|
|
58
|
-
async updateToken(
|
|
59
|
-
const entry = await TokenModel.
|
|
216
|
+
async updateToken(id, name) {
|
|
217
|
+
const entry = await TokenModel.findOne("A", { id });
|
|
60
218
|
if (!entry) return { updated: false };
|
|
61
|
-
const hasNewToken = newToken !== void 0 && newToken.length > 0;
|
|
62
|
-
const hasRefreshToken = refreshToken !== void 0 && refreshToken.length > 0;
|
|
63
219
|
await TokenModel.save([{
|
|
64
220
|
id: entry.id,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
221
|
+
provider: entry.provider,
|
|
222
|
+
credentials: entry.credentials,
|
|
223
|
+
name: name !== void 0 ? name : entry.name
|
|
68
224
|
}]);
|
|
69
225
|
return { updated: true };
|
|
70
226
|
}
|
|
71
|
-
async removeToken(
|
|
72
|
-
const entry = await TokenModel.
|
|
227
|
+
async removeToken(id) {
|
|
228
|
+
const entry = await TokenModel.findOne("A", { id });
|
|
73
229
|
if (!entry) return { removed: false };
|
|
74
230
|
await TokenModel.del([entry.id]);
|
|
75
231
|
return { removed: true };
|
|
@@ -83,7 +239,8 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
83
239
|
const newActive = !entry.active;
|
|
84
240
|
await TokenModel.save([{
|
|
85
241
|
id,
|
|
86
|
-
|
|
242
|
+
provider: entry.provider,
|
|
243
|
+
credentials: entry.credentials,
|
|
87
244
|
active: newActive,
|
|
88
245
|
name: entry.name
|
|
89
246
|
}]);
|
|
@@ -93,66 +250,123 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
93
250
|
const { codeVerifier, codeChallenge, state } = generatePKCE();
|
|
94
251
|
const redirectUri = `http://localhost:${process.env.PORT ?? "44900"}/callback`;
|
|
95
252
|
const authUrl = buildAuthUrl(codeChallenge, state, redirectUri);
|
|
96
|
-
|
|
253
|
+
await setOAuthState(state, {
|
|
97
254
|
codeVerifier,
|
|
98
255
|
name,
|
|
99
256
|
redirectUri
|
|
100
257
|
});
|
|
101
|
-
setTimeout(() => pendingOAuth.delete(state), 3e5);
|
|
102
258
|
return { authUrl };
|
|
103
259
|
}
|
|
104
260
|
async handleOAuthCallback(code, state, reply) {
|
|
105
|
-
const pending =
|
|
106
|
-
if (!pending)
|
|
107
|
-
|
|
261
|
+
const pending = await getOAuthState(state);
|
|
262
|
+
if (!pending) {
|
|
263
|
+
logger.warn("oauth callback: invalid_state");
|
|
264
|
+
return reply.redirect("/?oauth=error&reason=invalid_state");
|
|
265
|
+
}
|
|
266
|
+
await deleteOAuthState(state);
|
|
108
267
|
try {
|
|
109
268
|
const tokens = await exchangeCodeForTokens(code, pending.codeVerifier, state, pending.redirectUri);
|
|
110
269
|
if (tokens.accountUuid) {
|
|
111
|
-
const oldEntries = await TokenModel.
|
|
270
|
+
const oldEntries = await TokenModel.findByAccountIdentifier("A", "anthropic", tokens.accountUuid);
|
|
112
271
|
if (oldEntries.length > 0) await TokenModel.del(oldEntries.map((o) => o.id));
|
|
113
272
|
}
|
|
114
273
|
await TokenModel.save([{
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
274
|
+
provider: "anthropic",
|
|
275
|
+
credentials: {
|
|
276
|
+
accessToken: tokens.accessToken,
|
|
277
|
+
refreshToken: tokens.refreshToken,
|
|
278
|
+
expiresAt: tokens.expiresAt ?? 0,
|
|
279
|
+
accountUuid: tokens.accountUuid ?? ""
|
|
280
|
+
},
|
|
281
|
+
name: pending.name
|
|
120
282
|
}]);
|
|
121
283
|
return reply.redirect(`/?oauth=success&name=${encodeURIComponent(pending.name)}`);
|
|
122
284
|
} catch (e) {
|
|
123
285
|
return reply.redirect(`/?oauth=error&reason=${encodeURIComponent(e.message)}`);
|
|
124
286
|
}
|
|
125
287
|
}
|
|
126
|
-
async
|
|
288
|
+
async oauthStartOpenAI(name) {
|
|
289
|
+
if (!QgridDispatcher.openaiDispatcher) throw new Error("OpenAI dispatcher not initialized");
|
|
290
|
+
const { authUrl } = await QgridDispatcher.openaiDispatcher.startBrowserLogin(name);
|
|
291
|
+
QgridDispatcher.openaiDispatcher.completeBrowserLogin().then(async (creds) => {
|
|
292
|
+
if (creds.accountId) {
|
|
293
|
+
const oldEntries = await TokenModel.findByAccountIdentifier("A", "openai", creds.accountId);
|
|
294
|
+
if (oldEntries.length > 0) await TokenModel.del(oldEntries.map((o) => o.id));
|
|
295
|
+
}
|
|
296
|
+
await TokenModel.save([{
|
|
297
|
+
provider: "openai",
|
|
298
|
+
credentials: {
|
|
299
|
+
accessToken: creds.accessToken,
|
|
300
|
+
refreshToken: creds.refreshToken,
|
|
301
|
+
idToken: creds.idToken,
|
|
302
|
+
accessTokenExpiresAt: Date.now() + 240 * 3600 * 1e3,
|
|
303
|
+
accountId: creds.accountId
|
|
304
|
+
},
|
|
305
|
+
name
|
|
306
|
+
}]);
|
|
307
|
+
logger.info(`OpenAI token saved for ${name}`);
|
|
308
|
+
}).catch((e) => {
|
|
309
|
+
logger.warn(`OpenAI browser login failed: ${e.message}`);
|
|
310
|
+
});
|
|
311
|
+
return { authUrl };
|
|
312
|
+
}
|
|
313
|
+
async usage(tokenId) {
|
|
127
314
|
const { rows: allTokens } = await TokenModel.findMany("A");
|
|
128
|
-
const entry =
|
|
315
|
+
const entry = tokenId ? allTokens.find((e) => e.id === tokenId) : allTokens.findLast((e) => e.active && e.provider === "anthropic");
|
|
129
316
|
if (!entry) return { error: "NOT_FOUND" };
|
|
130
|
-
|
|
131
|
-
|
|
317
|
+
if (entry.provider === "openai") try {
|
|
318
|
+
const rl = (await QgridDispatcher.openaiDispatcher?.getRateLimits(entry.name))?.rateLimits;
|
|
319
|
+
return {
|
|
320
|
+
provider: "openai",
|
|
321
|
+
fiveHour: rl?.primary ? {
|
|
322
|
+
utilization: rl.primary.usedPercent,
|
|
323
|
+
resetsAt: (/* @__PURE__ */ new Date(rl.primary.resetsAt * 1e3)).toISOString()
|
|
324
|
+
} : null,
|
|
325
|
+
sevenDay: rl?.secondary ? {
|
|
326
|
+
utilization: rl.secondary.usedPercent,
|
|
327
|
+
resetsAt: (/* @__PURE__ */ new Date(rl.secondary.resetsAt * 1e3)).toISOString()
|
|
328
|
+
} : null
|
|
329
|
+
};
|
|
330
|
+
} catch (e) {
|
|
331
|
+
return { error: `OpenAI usage failed: ${e.message}` };
|
|
332
|
+
}
|
|
333
|
+
if (entry.provider !== "anthropic") return { error: `usage API not supported for provider: ${entry.provider}` };
|
|
334
|
+
let accessToken = getAccessToken(entry.credentials);
|
|
335
|
+
if (getExpiresAt(entry.credentials) < Date.now() && getRefreshToken(entry.credentials)) try {
|
|
132
336
|
accessToken = await this.refreshToken(entry);
|
|
133
337
|
} catch (e) {
|
|
134
338
|
oauthLogger.warn(`refresh failed for ${entry.name}: ${e.message}`);
|
|
135
339
|
return { error: "re-login required" };
|
|
136
340
|
}
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
341
|
+
const raw = await fetchUsage(accessToken);
|
|
342
|
+
if (raw.error && getRefreshToken(entry.credentials)) try {
|
|
139
343
|
accessToken = await this.refreshToken(entry);
|
|
140
|
-
|
|
344
|
+
const retried = await fetchUsage(accessToken);
|
|
345
|
+
if (retried.error) return { error: retried.error };
|
|
346
|
+
return convertAnthropicUsage(retried);
|
|
141
347
|
} catch (e) {
|
|
142
348
|
oauthLogger.warn(`refresh failed for ${entry.name}: ${e.message}`);
|
|
143
349
|
return { error: "re-login required" };
|
|
144
350
|
}
|
|
145
|
-
return
|
|
351
|
+
if (raw.error) return { error: raw.error };
|
|
352
|
+
return convertAnthropicUsage(raw);
|
|
146
353
|
}
|
|
147
354
|
async refreshToken(token) {
|
|
148
|
-
|
|
149
|
-
const
|
|
355
|
+
const creds = token.credentials;
|
|
356
|
+
const rt = getRefreshToken(creds);
|
|
357
|
+
if (!rt) throw new Error("No refresh token");
|
|
358
|
+
const refreshed = await refreshAccessToken(rt);
|
|
359
|
+
const updated = TokenCredentials.parse({
|
|
360
|
+
...creds,
|
|
361
|
+
accessToken: refreshed.accessToken,
|
|
362
|
+
refreshToken: refreshed.refreshToken,
|
|
363
|
+
expiresAt: refreshed.expiresAt
|
|
364
|
+
});
|
|
150
365
|
await TokenModel.save([{
|
|
151
366
|
id: token.id,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
name: token.name ?? ""
|
|
367
|
+
provider: token.provider,
|
|
368
|
+
credentials: updated,
|
|
369
|
+
name: token.name
|
|
156
370
|
}]);
|
|
157
371
|
return refreshed.accessToken;
|
|
158
372
|
}
|
|
@@ -170,16 +384,54 @@ __decorate([
|
|
|
170
384
|
clients: ["axios", "tanstack-mutation"]
|
|
171
385
|
}),
|
|
172
386
|
__decorateMetadata("design:type", Function),
|
|
173
|
-
__decorateMetadata("design:paramtypes", [
|
|
174
|
-
String,
|
|
175
|
-
String,
|
|
176
|
-
Number,
|
|
177
|
-
String,
|
|
178
|
-
String,
|
|
179
|
-
String
|
|
180
|
-
]),
|
|
387
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
181
388
|
__decorateMetadata("design:returntype", Promise)
|
|
182
389
|
], QgridFrameClass.prototype, "query", null);
|
|
390
|
+
__decorate([
|
|
391
|
+
api({
|
|
392
|
+
httpMethod: "POST",
|
|
393
|
+
clients: ["axios", "tanstack-mutation"]
|
|
394
|
+
}),
|
|
395
|
+
__decorateMetadata("design:type", Function),
|
|
396
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
397
|
+
__decorateMetadata("design:returntype", Promise)
|
|
398
|
+
], QgridFrameClass.prototype, "prepareStream", null);
|
|
399
|
+
__decorate([
|
|
400
|
+
stream({
|
|
401
|
+
type: "sse",
|
|
402
|
+
events: StreamEvents
|
|
403
|
+
}),
|
|
404
|
+
__decorateMetadata("design:type", Function),
|
|
405
|
+
__decorateMetadata("design:paramtypes", [String]),
|
|
406
|
+
__decorateMetadata("design:returntype", Promise)
|
|
407
|
+
], QgridFrameClass.prototype, "queryStream", null);
|
|
408
|
+
__decorate([
|
|
409
|
+
api({
|
|
410
|
+
httpMethod: "POST",
|
|
411
|
+
clients: ["axios", "tanstack-mutation"]
|
|
412
|
+
}),
|
|
413
|
+
__decorateMetadata("design:type", Function),
|
|
414
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
415
|
+
__decorateMetadata("design:returntype", Promise)
|
|
416
|
+
], QgridFrameClass.prototype, "createRun", null);
|
|
417
|
+
__decorate([
|
|
418
|
+
api({
|
|
419
|
+
httpMethod: "POST",
|
|
420
|
+
clients: ["axios", "tanstack-mutation"]
|
|
421
|
+
}),
|
|
422
|
+
__decorateMetadata("design:type", Function),
|
|
423
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
424
|
+
__decorateMetadata("design:returntype", Promise)
|
|
425
|
+
], QgridFrameClass.prototype, "appendStep", null);
|
|
426
|
+
__decorate([
|
|
427
|
+
api({
|
|
428
|
+
httpMethod: "POST",
|
|
429
|
+
clients: ["axios", "tanstack-mutation"]
|
|
430
|
+
}),
|
|
431
|
+
__decorateMetadata("design:type", Function),
|
|
432
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
433
|
+
__decorateMetadata("design:returntype", Promise)
|
|
434
|
+
], QgridFrameClass.prototype, "finishRun", null);
|
|
183
435
|
__decorate([
|
|
184
436
|
api({
|
|
185
437
|
httpMethod: "GET",
|
|
@@ -215,7 +467,7 @@ __decorate([
|
|
|
215
467
|
__decorateMetadata("design:type", Function),
|
|
216
468
|
__decorateMetadata("design:paramtypes", [
|
|
217
469
|
String,
|
|
218
|
-
|
|
470
|
+
typeof (_ref = typeof TokenCredentials !== "undefined" && TokenCredentials) === "function" ? _ref : Object,
|
|
219
471
|
String
|
|
220
472
|
]),
|
|
221
473
|
__decorateMetadata("design:returntype", Promise)
|
|
@@ -226,12 +478,7 @@ __decorate([
|
|
|
226
478
|
clients: ["axios", "tanstack-mutation"]
|
|
227
479
|
}),
|
|
228
480
|
__decorateMetadata("design:type", Function),
|
|
229
|
-
__decorateMetadata("design:paramtypes", [
|
|
230
|
-
String,
|
|
231
|
-
String,
|
|
232
|
-
String,
|
|
233
|
-
String
|
|
234
|
-
]),
|
|
481
|
+
__decorateMetadata("design:paramtypes", [Number, String]),
|
|
235
482
|
__decorateMetadata("design:returntype", Promise)
|
|
236
483
|
], QgridFrameClass.prototype, "updateToken", null);
|
|
237
484
|
__decorate([
|
|
@@ -240,7 +487,7 @@ __decorate([
|
|
|
240
487
|
clients: ["axios", "tanstack-mutation"]
|
|
241
488
|
}),
|
|
242
489
|
__decorateMetadata("design:type", Function),
|
|
243
|
-
__decorateMetadata("design:paramtypes", [
|
|
490
|
+
__decorateMetadata("design:paramtypes", [Number]),
|
|
244
491
|
__decorateMetadata("design:returntype", Promise)
|
|
245
492
|
], QgridFrameClass.prototype, "removeToken", null);
|
|
246
493
|
__decorate([
|
|
@@ -261,13 +508,22 @@ __decorate([
|
|
|
261
508
|
__decorateMetadata("design:paramtypes", [String]),
|
|
262
509
|
__decorateMetadata("design:returntype", Promise)
|
|
263
510
|
], QgridFrameClass.prototype, "oauthStart", null);
|
|
511
|
+
__decorate([
|
|
512
|
+
api({
|
|
513
|
+
httpMethod: "POST",
|
|
514
|
+
clients: ["axios", "tanstack-mutation"]
|
|
515
|
+
}),
|
|
516
|
+
__decorateMetadata("design:type", Function),
|
|
517
|
+
__decorateMetadata("design:paramtypes", [String]),
|
|
518
|
+
__decorateMetadata("design:returntype", Promise)
|
|
519
|
+
], QgridFrameClass.prototype, "oauthStartOpenAI", null);
|
|
264
520
|
__decorate([
|
|
265
521
|
api({
|
|
266
522
|
httpMethod: "GET",
|
|
267
523
|
clients: ["axios", "tanstack-query"]
|
|
268
524
|
}),
|
|
269
525
|
__decorateMetadata("design:type", Function),
|
|
270
|
-
__decorateMetadata("design:paramtypes", [
|
|
526
|
+
__decorateMetadata("design:paramtypes", [Number]),
|
|
271
527
|
__decorateMetadata("design:returntype", Promise)
|
|
272
528
|
], QgridFrameClass.prototype, "usage", null);
|
|
273
529
|
__decorate([
|
|
@@ -280,7 +536,20 @@ __decorate([
|
|
|
280
536
|
__decorateMetadata("design:returntype", Promise)
|
|
281
537
|
], QgridFrameClass.prototype, "health", null);
|
|
282
538
|
const QgridFrame = new QgridFrameClass();
|
|
539
|
+
function convertAnthropicUsage(raw) {
|
|
540
|
+
return {
|
|
541
|
+
provider: "anthropic",
|
|
542
|
+
fiveHour: raw.five_hour ? {
|
|
543
|
+
utilization: raw.five_hour.utilization,
|
|
544
|
+
resetsAt: raw.five_hour.resets_at
|
|
545
|
+
} : null,
|
|
546
|
+
sevenDay: raw.seven_day ? {
|
|
547
|
+
utilization: raw.seven_day.utilization,
|
|
548
|
+
resetsAt: raw.seven_day.resets_at
|
|
549
|
+
} : null
|
|
550
|
+
};
|
|
551
|
+
}
|
|
283
552
|
//#endregion
|
|
284
553
|
export { QgridFrame };
|
|
285
554
|
|
|
286
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlSZXBseSB9IGZyb20gXCJmYXN0aWZ5XCI7XG5pbXBvcnQgeyBhcGksIEJhc2VGcmFtZUNsYXNzIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBNSUNST19VU0QsIFJlcXVlc3RMb2dNb2RlbCB9IGZyb20gXCIuLi9yZXF1ZXN0LWxvZy9yZXF1ZXN0LWxvZy5tb2RlbFwiO1xuaW1wb3J0IHsgVG9rZW5Nb2RlbCB9IGZyb20gXCIuLi90b2tlbi90b2tlbi5tb2RlbFwiO1xuaW1wb3J0IHsgdHlwZSBSZWZyZXNoVG9rZW5QYXJhbXMgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4udHlwZXNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkQXV0aFVybCxcbiAgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zLFxuICBmZXRjaFVzYWdlLFxuICBnZW5lcmF0ZVBLQ0UsXG4gIHJlZnJlc2hBY2Nlc3NUb2tlbixcbn0gZnJvbSBcIi4vb2F1dGhcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ2xpUmVzdWx0LFxuICB0eXBlIEhlYWx0aFJlc3BvbnNlLFxuICB0eXBlIE9BdXRoU3RhcnRSZXN1bHQsXG4gIHR5cGUgVG9rZW5TdGF0cyxcbiAgdHlwZSBVc2FnZVJlc3BvbnNlLFxufSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBwZW5kaW5nT0F1dGggPSBuZXcgTWFwPHN0cmluZywgeyBjb2RlVmVyaWZpZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nOyByZWRpcmVjdFVyaTogc3RyaW5nIH0+KCk7XG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIl0pO1xuY29uc3Qgb2F1dGhMb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJvYXV0aFwiXSk7XG5cbmNsYXNzIFFncmlkRnJhbWVDbGFzcyBleHRlbmRzIEJhc2VGcmFtZUNsYXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJRZ3JpZFwiKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBxdWVyeShcbiAgICBwcm9tcHQ6IHN0cmluZyxcbiAgICBzeXN0ZW0/OiBzdHJpbmcsXG4gICAgdGltZW91dD86IG51bWJlcixcbiAgICBtb2RlbD86IHN0cmluZyxcbiAgICBwcm9qZWN0TmFtZT86IHN0cmluZyxcbiAgICBqc29uU2NoZW1hPzogc3RyaW5nLFxuICApOiBQcm9taXNlPENsaVJlc3VsdD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFFncmlkRGlzcGF0Y2hlci5xdWVyeSh7IHN5c3RlbSwgcHJvbXB0LCBtb2RlbCwganNvblNjaGVtYSB9LCB0aW1lb3V0KTtcblxuICAgIFJlcXVlc3RMb2dNb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgdG9rZW5fbmFtZTogcmVzdWx0LnRva2VuTmFtZSxcbiAgICAgICAgcHJvamVjdF9uYW1lOiBwcm9qZWN0TmFtZSAmJiBwcm9qZWN0TmFtZS5sZW5ndGggPiAwID8gcHJvamVjdE5hbWUgOiBudWxsLFxuICAgICAgICBtb2RlbF9uYW1lOiByZXN1bHQubW9kZWwgPz8gbnVsbCxcbiAgICAgICAgdXNlcl9wcm9tcHQ6IHByb21wdCxcbiAgICAgICAgc3lzdGVtX3Byb21wdDogc3lzdGVtID8/IG51bGwsXG4gICAgICAgIHJlc3BvbnNlOiByZXN1bHQudGV4dCxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiByZXN1bHQudXNhZ2UuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiByZXN1bHQudXNhZ2Uub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zLFxuICAgICAgICBkdXJhdGlvbl9tczogcmVzdWx0LmR1cmF0aW9uTXMsXG4gICAgICAgIGNvc3RfdXNkOiByZXN1bHQuY29zdFVzZCAhPT0gbnVsbCA/IE1hdGgucm91bmQocmVzdWx0LmNvc3RVc2QgKiBNSUNST19VU0QpIDogbnVsbCxcbiAgICAgIH0sXG4gICAgXSkuY2F0Y2goKGUpID0+IGxvZ2dlci5lcnJvcihgcmVxdWVzdExvZyBzYXZlIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgc3RhdHMoKTogUHJvbWlzZTxUb2tlblN0YXRzW10+IHtcbiAgICByZXR1cm4gUWdyaWREaXNwYXRjaGVyLmdldFN0YXRzKCk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyB0b3RhbENvc3QodG9rZW5OYW1lPzogc3RyaW5nKTogUHJvbWlzZTx7IHVzZDogbnVtYmVyIH0+IHtcbiAgICByZXR1cm4geyB1c2Q6IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC50b3RhbENvc3QoeyB0b2tlbl9uYW1lOiB0b2tlbk5hbWUgfSkgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHByb2plY3ROYW1lcygpOiBQcm9taXNlPHsgbmFtZXM6IHN0cmluZ1tdIH0+IHtcbiAgICByZXR1cm4geyBuYW1lczogYXdhaXQgUmVxdWVzdExvZ01vZGVsLmRpc3RpbmN0UHJvamVjdE5hbWVzKCkgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBhZGRUb2tlbih0b2tlbjogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHJlZnJlc2hUb2tlbj86IHN0cmluZyk6IFByb21pc2U8eyBhZGRlZDogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgdG9rZW4sXG4gICAgICAgIG5hbWUsXG4gICAgICAgIC4uLihyZWZyZXNoVG9rZW4gJiYgcmVmcmVzaFRva2VuLmxlbmd0aCA+IDAgPyB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9IDoge30pLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICByZXR1cm4geyBhZGRlZDogdHJ1ZSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHVwZGF0ZVRva2VuKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBuZXdUb2tlbj86IHN0cmluZyxcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyB1cGRhdGVkOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZEJ5VG9rZW4oXCJBXCIsIHRva2VuKTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyB1cGRhdGVkOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgaGFzTmV3VG9rZW4gPSBuZXdUb2tlbiAhPT0gdW5kZWZpbmVkICYmIG5ld1Rva2VuLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgaGFzUmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuICE9PSB1bmRlZmluZWQgJiYgcmVmcmVzaFRva2VuLmxlbmd0aCA+IDA7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IGVudHJ5LmlkLFxuICAgICAgICB0b2tlbjogaGFzTmV3VG9rZW4gPyBuZXdUb2tlbiA6IGVudHJ5LnRva2VuLFxuICAgICAgICBuYW1lOiBuYW1lICE9PSB1bmRlZmluZWQgPyBuYW1lIDogZW50cnkubmFtZSxcbiAgICAgICAgLi4uKGhhc1JlZnJlc2hUb2tlbiA/IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0gOiB7fSksXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiB7IHVwZGF0ZWQ6IHRydWUgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyByZW1vdmVUb2tlbih0b2tlbjogc3RyaW5nKTogUHJvbWlzZTx7IHJlbW92ZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQnlUb2tlbihcIkFcIiwgdG9rZW4pO1xuICAgIGlmICghZW50cnkpIHJldHVybiB7IHJlbW92ZWQ6IGZhbHNlIH07XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5kZWwoW2VudHJ5LmlkXSk7XG4gICAgcmV0dXJuIHsgcmVtb3ZlZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIO2GoO2BsCDtmZzshLHtmZQv67mE7Zmc7ISx7ZmUIO2GoOq4gCBEQuydmCBhY3RpdmUg7ZWE65OcIOyXheuNsOydtO2KuFxuICAgKi9cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHRvZ2dsZVRva2VuKGlkOiBudW1iZXIpOiBQcm9taXNlPHsgYWN0aXZlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE9uZShcIkFcIiwgeyBpZCB9KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBhY3RpdmU6IGZhbHNlIH07XG5cbiAgICBjb25zdCBuZXdBY3RpdmUgPSAhZW50cnkuYWN0aXZlO1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbeyBpZCwgdG9rZW46IGVudHJ5LnRva2VuLCBhY3RpdmU6IG5ld0FjdGl2ZSwgbmFtZTogZW50cnkubmFtZSB9XSk7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBuZXdBY3RpdmUgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBvYXV0aFN0YXJ0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8T0F1dGhTdGFydFJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY29kZVZlcmlmaWVyLCBjb2RlQ2hhbGxlbmdlLCBzdGF0ZSB9ID0gZ2VuZXJhdGVQS0NFKCk7XG5cbiAgICBjb25zdCBzZXJ2ZXJQb3J0ID0gcHJvY2Vzcy5lbnYuUE9SVCA/PyBcIjQ0OTAwXCI7XG4gICAgY29uc3QgcmVkaXJlY3RVcmkgPSBgaHR0cDovL2xvY2FsaG9zdDoke3NlcnZlclBvcnR9L2NhbGxiYWNrYDtcbiAgICBjb25zdCBhdXRoVXJsID0gYnVpbGRBdXRoVXJsKGNvZGVDaGFsbGVuZ2UsIHN0YXRlLCByZWRpcmVjdFVyaSk7XG5cbiAgICBwZW5kaW5nT0F1dGguc2V0KHN0YXRlLCB7IGNvZGVWZXJpZmllciwgbmFtZSwgcmVkaXJlY3RVcmkgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiBwZW5kaW5nT0F1dGguZGVsZXRlKHN0YXRlKSwgMzAwXzAwMCk7XG5cbiAgICByZXR1cm4geyBhdXRoVXJsIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVPQXV0aENhbGxiYWNrKGNvZGU6IHN0cmluZywgc3RhdGU6IHN0cmluZywgcmVwbHk6IEZhc3RpZnlSZXBseSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nT0F1dGguZ2V0KHN0YXRlKTtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHJldHVybiByZXBseS5yZWRpcmVjdChcIi8/b2F1dGg9ZXJyb3ImcmVhc29uPWludmFsaWRfc3RhdGVcIik7XG4gICAgfVxuICAgIHBlbmRpbmdPQXV0aC5kZWxldGUoc3RhdGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IGV4Y2hhbmdlQ29kZUZvclRva2VucyhcbiAgICAgICAgY29kZSxcbiAgICAgICAgcGVuZGluZy5jb2RlVmVyaWZpZXIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBwZW5kaW5nLnJlZGlyZWN0VXJpLFxuICAgICAgKTtcblxuICAgICAgaWYgKHRva2Vucy5hY2NvdW50VXVpZCkge1xuICAgICAgICBjb25zdCBvbGRFbnRyaWVzID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQnlBY2NvdW50VXVpZChcIkFcIiwgdG9rZW5zLmFjY291bnRVdWlkKTtcbiAgICAgICAgaWYgKG9sZEVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGF3YWl0IFRva2VuTW9kZWwuZGVsKG9sZEVudHJpZXMubWFwKChvKSA9PiBvLmlkKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgbmFtZTogcGVuZGluZy5uYW1lLFxuICAgICAgICAgIHJlZnJlc2hfdG9rZW46IHRva2Vucy5yZWZyZXNoVG9rZW4sXG4gICAgICAgICAgZXhwaXJlc19hdDogdG9rZW5zLmV4cGlyZXNBdCA/IEJpZ0ludCh0b2tlbnMuZXhwaXJlc0F0KSA6IG51bGwsXG4gICAgICAgICAgYWNjb3VudF91dWlkOiB0b2tlbnMuYWNjb3VudFV1aWQsXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KGAvP29hdXRoPXN1Y2Nlc3MmbmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChwZW5kaW5nLm5hbWUpfWApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiByZXBseS5yZWRpcmVjdChgLz9vYXV0aD1lcnJvciZyZWFzb249JHtlbmNvZGVVUklDb21wb25lbnQoKGUgYXMgRXJyb3IpLm1lc3NhZ2UpfWApO1xuICAgIH1cbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHVzYWdlKHRva2VuTmFtZT86IHN0cmluZyk6IFByb21pc2U8VXNhZ2VSZXNwb25zZT4ge1xuICAgIGNvbnN0IHsgcm93czogYWxsVG9rZW5zIH0gPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRNYW55KFwiQVwiKTtcbiAgICBjb25zdCBlbnRyeSA9IHRva2VuTmFtZVxuICAgICAgPyBhbGxUb2tlbnMuZmluZCgoZSkgPT4gZS5uYW1lID09PSB0b2tlbk5hbWUpXG4gICAgICA6IGFsbFRva2Vucy5maW5kTGFzdCgoZSkgPT4gZS5hY3RpdmUpO1xuXG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIHsgZXJyb3I6IFwiTk9UX0ZPVU5EXCIgfTtcblxuICAgIGxldCBhY2Nlc3NUb2tlbiA9IGVudHJ5LnRva2VuO1xuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGVudHJ5LmV4cGlyZXNfYXQgJiYgTnVtYmVyKGVudHJ5LmV4cGlyZXNfYXQpIDwgRGF0ZS5ub3coKTtcblxuICAgIGlmIChpc0V4cGlyZWQgJiYgZW50cnkucmVmcmVzaF90b2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbihlbnRyeSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9hdXRoTG9nZ2VyLndhcm4oYHJlZnJlc2ggZmFpbGVkIGZvciAke2VudHJ5Lm5hbWV9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICByZXR1cm4geyBlcnJvcjogXCJyZS1sb2dpbiByZXF1aXJlZFwiIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hVc2FnZShhY2Nlc3NUb2tlbik7XG5cbiAgICBpZiAocmVzdWx0LmVycm9yICYmIGVudHJ5LnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oZW50cnkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgZmV0Y2hVc2FnZShhY2Nlc3NUb2tlbik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9hdXRoTG9nZ2VyLndhcm4oYHJlZnJlc2ggZmFpbGVkIGZvciAke2VudHJ5Lm5hbWV9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICByZXR1cm4geyBlcnJvcjogXCJyZS1sb2dpbiByZXF1aXJlZFwiIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUb2tlbih0b2tlbjogUmVmcmVzaFRva2VuUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRva2VuLnJlZnJlc2hfdG9rZW4pIHRocm93IG5ldyBFcnJvcihcIk5vIHJlZnJlc2ggdG9rZW5cIik7XG4gICAgY29uc3QgcmVmcmVzaGVkID0gYXdhaXQgcmVmcmVzaEFjY2Vzc1Rva2VuKHRva2VuLnJlZnJlc2hfdG9rZW4pO1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIGlkOiB0b2tlbi5pZCxcbiAgICAgICAgdG9rZW46IHJlZnJlc2hlZC5hY2Nlc3NUb2tlbixcbiAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaGVkLnJlZnJlc2hUb2tlbixcbiAgICAgICAgZXhwaXJlc19hdDogQmlnSW50KHJlZnJlc2hlZC5leHBpcmVzQXQpLFxuICAgICAgICBuYW1lOiB0b2tlbi5uYW1lID8/IFwiXCIsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiByZWZyZXNoZWQuYWNjZXNzVG9rZW47XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBoZWFsdGgoKTogUHJvbWlzZTxIZWFsdGhSZXNwb25zZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IFwib2tcIixcbiAgICAgIGFjdGl2ZVRva2VuczogUWdyaWREaXNwYXRjaGVyLnRva2Vucy5zaXplLFxuICAgICAgc3Vic2NyaWJlcjogUWdyaWREaXNwYXRjaGVyLnN1YnNjcmliZXI/LnN0YXR1cygpID8/IG51bGwsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgUWdyaWRGcmFtZSA9IG5ldyBRZ3JpZEZyYW1lQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXVCQSxNQUFNLCtCQUFlLElBQUksS0FBMEU7QUFDbkcsTUFBTSxTQUFTLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDbkMsTUFBTSxjQUFjLFVBQVUsQ0FBQyxTQUFTLFFBQVEsQ0FBQztBQUVqRCxJQUFNLGtCQUFOLGNBQThCLGVBQWU7Q0FDM0MsY0FBYztBQUNaLFFBQU0sUUFBUTs7Q0FHaEIsTUFDTSxNQUNKLFFBQ0EsUUFDQSxTQUNBLE9BQ0EsYUFDQSxZQUNvQjtFQUNwQixNQUFNLFNBQVMs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
|
|
555
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlSZXBseSB9IGZyb20gXCJmYXN0aWZ5XCI7XG5pbXBvcnQgeyBhcGksIEJhc2VGcmFtZUNsYXNzLCBTb25hbXUsIHN0cmVhbSB9IGZyb20gXCJzb25hbXVcIjtcbmltcG9ydCB7IGdldENhY2hlTWFuYWdlclJlZiB9IGZyb20gXCJzb25hbXUvY2FjaGVcIjtcblxuaW1wb3J0IHtcbiAgZ2V0QWNjZXNzVG9rZW4sXG4gIGdldEV4cGlyZXNBdCxcbiAgZ2V0UmVmcmVzaFRva2VuLFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9jcmVkZW50aWFsc1wiO1xuaW1wb3J0IHsgTUlDUk9fVVNELCBSZXF1ZXN0TG9nTW9kZWwgfSBmcm9tIFwiLi4vcmVxdWVzdC1sb2cvcmVxdWVzdC1sb2cubW9kZWxcIjtcbmltcG9ydCB7IHR5cGUgVG9rZW5TdWJzZXRBIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTW9kZWwgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4ubW9kZWxcIjtcbmltcG9ydCB7IFRva2VuQ3JlZGVudGlhbHMgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4udHlwZXNcIjtcbmltcG9ydCB7XG4gIHR5cGUgQW50aHJvcGljVXNhZ2VSYXcsXG4gIGJ1aWxkQXV0aFVybCxcbiAgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zLFxuICBmZXRjaFVzYWdlLFxuICBnZW5lcmF0ZVBLQ0UsXG4gIHJlZnJlc2hBY2Nlc3NUb2tlbixcbn0gZnJvbSBcIi4vb2F1dGhcIjtcbmltcG9ydCB7XG4gIGFmdGVyUXVlcnksXG4gIGJlZm9yZVF1ZXJ5LFxuICBmaW5pc2hSdW5BYm9ydGVkLFxuICBmaW5pc2hSdW5XaXRoRXJyb3IsXG59IGZyb20gXCIuL3FncmlkLXJ1bi1saWZlY3ljbGVcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgUXVlcnlJbnB1dCxcbiAgdHlwZSBBcHBlbmRTdGVwSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUnVuSW5wdXQsXG4gIHR5cGUgRmluaXNoUnVuSW5wdXQsXG4gIHR5cGUgSGVhbHRoUmVzcG9uc2UsXG4gIHR5cGUgT0F1dGhTdGFydFJlc3VsdCxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbiAgU3RyZWFtRXZlbnRzLFxuICB0eXBlIFRva2VuU3RhdHMsXG4gIHR5cGUgVXNhZ2VSZXNwb25zZSxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgcGVuZGluZ1N0cmVhbXMgPSBuZXcgTWFwPHN0cmluZywgUXVlcnlJbnB1dD4oKTtcblxudHlwZSBQZW5kaW5nT0F1dGggPSB7IGNvZGVWZXJpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHJlZGlyZWN0VXJpOiBzdHJpbmcgfTtcbmNvbnN0IE9BVVRIX1NUQVRFX1BSRUZJWCA9IFwib2F1dGg6c3RhdGU6XCI7XG5jb25zdCBPQVVUSF9TVEFURV9UVEwgPSBcIjVtXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIHNldE9BdXRoU3RhdGUoc3RhdGU6IHN0cmluZywgZGF0YTogUGVuZGluZ09BdXRoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNhY2hlID0gZ2V0Q2FjaGVNYW5hZ2VyUmVmKCk7XG4gIGlmICghY2FjaGUpIHRocm93IG5ldyBFcnJvcihcIkNhY2hlTWFuYWdlciBub3QgaW5pdGlhbGl6ZWRcIik7XG4gIGF3YWl0IGNhY2hlLnNldCh7XG4gICAga2V5OiBgJHtPQVVUSF9TVEFURV9QUkVGSVh9JHtzdGF0ZX1gLFxuICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICB0dGw6IE9BVVRIX1NUQVRFX1RUTCxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9BdXRoU3RhdGUoc3RhdGU6IHN0cmluZyk6IFByb21pc2U8UGVuZGluZ09BdXRoIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNhY2hlID0gZ2V0Q2FjaGVNYW5hZ2VyUmVmKCk7XG4gIGlmICghY2FjaGUpIHRocm93IG5ldyBFcnJvcihcIkNhY2hlTWFuYWdlciBub3QgaW5pdGlhbGl6ZWRcIik7XG4gIGNvbnN0IHJhdyA9IGF3YWl0IGNhY2hlLmdldDxzdHJpbmc+KHsga2V5OiBgJHtPQVVUSF9TVEFURV9QUkVGSVh9JHtzdGF0ZX1gIH0pO1xuICBpZiAoIXJhdykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBQZW5kaW5nT0F1dGg7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZU9BdXRoU3RhdGUoc3RhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjYWNoZSA9IGdldENhY2hlTWFuYWdlclJlZigpO1xuICBpZiAoIWNhY2hlKSByZXR1cm47XG4gIGF3YWl0IGNhY2hlLmRlbGV0ZSh7IGtleTogYCR7T0FVVEhfU1RBVEVfUFJFRklYfSR7c3RhdGV9YCB9KTtcbn1cblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCJdKTtcbmNvbnN0IG9hdXRoTG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwib2F1dGhcIl0pO1xuXG5jbGFzcyBRZ3JpZEZyYW1lQ2xhc3MgZXh0ZW5kcyBCYXNlRnJhbWVDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiUWdyaWRcIik7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcXVlcnkoYXJnczogUXVlcnlJbnB1dCk6IFByb21pc2U8UXVlcnlPdXRwdXQ+IHtcbiAgICBjb25zdCBlZmZlY3RpdmVMb2dNb2RlID0gYXJncy5sb2dNb2RlID8/IChhcmdzLmlzU3RlcCA/IFwicnVuXCIgOiBcImF1dG9cIik7XG5cbiAgICAvLyBsb2dNb2RlOiBcInJ1blwiIOKGkiDshJzrsoTqsIAgbGlmZWN5Y2xlIOq0gOumrFxuICAgIGlmIChlZmZlY3RpdmVMb2dNb2RlID09PSBcInJ1blwiKSB7XG4gICAgICBjb25zdCB7IHJlcXVlc3RMb2dJZCwgc3RlcEluZGV4IH0gPSBhd2FpdCBiZWZvcmVRdWVyeShhcmdzKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFFncmlkRGlzcGF0Y2hlci5xdWVyeShhcmdzLCBhcmdzLnRpbWVvdXQpO1xuICAgICAgICBjb25zdCBsaWZlY3ljbGUgPSBhd2FpdCBhZnRlclF1ZXJ5KHJlcXVlc3RMb2dJZCwgc3RlcEluZGV4LCBhcmdzLCByZXN1bHQpO1xuICAgICAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJ1bkNvbnRleHQ6IGxpZmVjeWNsZS5ydW5Db250ZXh0IH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGF3YWl0IGZpbmlzaFJ1bldpdGhFcnJvcihyZXF1ZXN0TG9nSWQsIChlIGFzIEVycm9yKS5tZXNzYWdlLCBhcmdzKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBsb2dNb2RlOiBcImF1dG9cIiAo6riw7KG0IG5vbi1zdGVwIOqyveuhnCkg65iQ64qUIFwibm9uZVwiXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUWdyaWREaXNwYXRjaGVyLnF1ZXJ5KGFyZ3MsIGFyZ3MudGltZW91dCk7XG5cbiAgICBpZiAoZWZmZWN0aXZlTG9nTW9kZSA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIGNvbnN0IHRvb2xDYWxsQ291bnQgPSByZXN1bHQuY29udGVudC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gXCJ0b29sLWNhbGxcIikubGVuZ3RoO1xuICAgICAgY29uc3QgcmVzcG9uc2VUZXh0ID0gcmVzdWx0LmNvbnRlbnRcbiAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcInRleHRcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS50ZXh0KVxuICAgICAgICAuam9pbihcIlxcblwiKTtcblxuICAgICAgUmVxdWVzdExvZ01vZGVsLnNhdmUoW1xuICAgICAgICB7XG4gICAgICAgICAgdG9rZW5fbmFtZTogcmVzdWx0LnRva2VuTmFtZSxcbiAgICAgICAgICBwcm9qZWN0X25hbWU6IGFyZ3MucHJvamVjdE5hbWU/Lmxlbmd0aCA/IGFyZ3MucHJvamVjdE5hbWUgOiBudWxsLFxuICAgICAgICAgIG1vZGVsX25hbWU6IHJlc3VsdC5tb2RlbCA/PyBudWxsLFxuICAgICAgICAgIHVzZXJfcHJvbXB0OiBhcmdzLnByb21wdCxcbiAgICAgICAgICBzeXN0ZW1fcHJvbXB0OiBhcmdzLnN5c3RlbSA/PyBudWxsLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVRleHQsXG4gICAgICAgICAgaW5wdXRfdG9rZW5zOiByZXN1bHQudXNhZ2UuaW5wdXRfdG9rZW5zLFxuICAgICAgICAgIG91dHB1dF90b2tlbnM6IHJlc3VsdC51c2FnZS5vdXRwdXRfdG9rZW5zLFxuICAgICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMsXG4gICAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zLFxuICAgICAgICAgIGR1cmF0aW9uX21zOiByZXN1bHQuZHVyYXRpb25NcyxcbiAgICAgICAgICBjb3N0X3VzZDogcmVzdWx0LmNvc3RVc2QgIT09IG51bGwgPyBNYXRoLnJvdW5kKHJlc3VsdC5jb3N0VXNkICogTUlDUk9fVVNEKSA6IG51bGwsXG4gICAgICAgICAgZWZmb3J0OiBhcmdzLmVmZm9ydCA/PyBudWxsLFxuICAgICAgICAgIGhpc3Rvcnk6IGFyZ3MuaGlzdG9yeSA/IEpTT04ucGFyc2UoYXJncy5oaXN0b3J5KSA6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBcInN1Y2NlZWRlZFwiLFxuICAgICAgICAgIHRvb2xfY2FsbF9jb3VudDogdG9vbENhbGxDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIF0pLmNhdGNoKChlKSA9PiBsb2dnZXIuZXJyb3IoYHJlcXVlc3RMb2cgc2F2ZSBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcHJlcGFyZVN0cmVhbShhcmdzOiBRdWVyeUlucHV0KTogUHJvbWlzZTx7IHN0cmVhbUlkOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHN0cmVhbUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICBwZW5kaW5nU3RyZWFtcy5zZXQoc3RyZWFtSWQsIGFyZ3MpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gcGVuZGluZ1N0cmVhbXMuZGVsZXRlKHN0cmVhbUlkKSwgMzBfMDAwKTtcbiAgICByZXR1cm4geyBzdHJlYW1JZCB9O1xuICB9XG5cbiAgQHN0cmVhbSh7IHR5cGU6IFwic3NlXCIsIGV2ZW50czogU3RyZWFtRXZlbnRzIH0pXG4gIGFzeW5jIHF1ZXJ5U3RyZWFtKHN0cmVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhcmdzID0gcGVuZGluZ1N0cmVhbXMuZ2V0KHN0cmVhbUlkKTtcbiAgICBwZW5kaW5nU3RyZWFtcy5kZWxldGUoc3RyZWFtSWQpO1xuICAgIGlmICghYXJncykgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBvciBleHBpcmVkIHN0cmVhbUlkXCIpO1xuXG4gICAgY29uc3QgZWZmZWN0aXZlTG9nTW9kZSA9IGFyZ3MubG9nTW9kZSA/PyAoYXJncy5pc1N0ZXAgPyBcInJ1blwiIDogXCJhdXRvXCIpO1xuICAgIGNvbnN0IHNob3VsZExvZyA9IGVmZmVjdGl2ZUxvZ01vZGUgPT09IFwicnVuXCI7XG5cbiAgICBsZXQgcnVuSW5mbzogeyByZXF1ZXN0TG9nSWQ6IG51bWJlcjsgc3RlcEluZGV4OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoc2hvdWxkTG9nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBydW5JbmZvID0gYXdhaXQgYmVmb3JlUXVlcnkoYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihgc3RyZWFtIGJlZm9yZVF1ZXJ5IGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjdHggPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgIGNvbnN0IHNzZSA9IGN0eC5jcmVhdGVTU0UoU3RyZWFtRXZlbnRzKTtcbiAgICBsZXQgdGhyZWFkSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdHVybklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0cmVhbVJlc3VsdDogUXVlcnlPdXRwdXQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0cmVhbUVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICAgIHNzZS5vbkNsb3NlKCgpID0+IHtcbiAgICAgIGlmICh0aHJlYWRJZCAmJiB0dXJuSWQpIHtcbiAgICAgICAgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LmludGVycnVwdFdvcmtlclR1cm4odGhyZWFkSWQsIHR1cm5JZCkuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IFFncmlkRGlzcGF0Y2hlci5xdWVyeVN0cmVhbShhcmdzLCB7XG4gICAgICAgIG9uRGVsdGE6ICh0ZXh0KSA9PiB7XG4gICAgICAgICAgaWYgKCFzc2UuY2xvc2VkKSBzc2UucHVibGlzaChcImRlbHRhXCIsIHsgdGV4dCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25UaHJlYWRJZDogKGlkKSA9PiB7XG4gICAgICAgICAgdGhyZWFkSWQgPSBpZDtcbiAgICAgICAgICBpZiAoc3NlLmNsb3NlZCAmJiB0dXJuSWQpIHtcbiAgICAgICAgICAgIFFncmlkRGlzcGF0Y2hlci5vcGVuYWlEaXNwYXRjaGVyPy5pbnRlcnJ1cHRXb3JrZXJUdXJuKHRocmVhZElkLCB0dXJuSWQpLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uVHVybklkOiAoaWQpID0+IHtcbiAgICAgICAgICB0dXJuSWQgPSBpZDtcbiAgICAgICAgICBpZiAoc3NlLmNsb3NlZCAmJiB0aHJlYWRJZCkge1xuICAgICAgICAgICAgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LmludGVycnVwdFdvcmtlclR1cm4odGhyZWFkSWQsIHR1cm5JZCkuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHN0cmVhbVJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHN0cmVhbUVycm9yID0gZXJyO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc3RyZWFtRXJyb3IgPSBlIGFzIEVycm9yO1xuICAgIH1cblxuICAgIC8vIGRpc3BhdGNoZXIg7JmE66OMIO2bhCBsaWZlY3ljbGUg7LKY66asIChhd2FpdCDslYjsoIQpXG4gICAgaWYgKHN0cmVhbVJlc3VsdCkge1xuICAgICAgbGV0IHJ1bkNvbnRleHQ6IHsgcmVxdWVzdExvZ0lkOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChydW5JbmZvKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbGlmZWN5Y2xlID0gYXdhaXQgYWZ0ZXJRdWVyeShcbiAgICAgICAgICAgIHJ1bkluZm8ucmVxdWVzdExvZ0lkLFxuICAgICAgICAgICAgcnVuSW5mby5zdGVwSW5kZXgsXG4gICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgc3RyZWFtUmVzdWx0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgcnVuQ29udGV4dCA9IGxpZmVjeWNsZS5ydW5Db250ZXh0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBzdHJlYW0gYWZ0ZXJRdWVyeSBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghc3NlLmNsb3NlZCkgc3NlLnB1Ymxpc2goXCJkb25lXCIsIHsgLi4uc3RyZWFtUmVzdWx0LCBydW5Db250ZXh0IH0pO1xuICAgIH0gZWxzZSBpZiAoc3RyZWFtRXJyb3IpIHtcbiAgICAgIGlmIChydW5JbmZvKSBhd2FpdCBmaW5pc2hSdW5XaXRoRXJyb3IocnVuSW5mby5yZXF1ZXN0TG9nSWQsIHN0cmVhbUVycm9yLm1lc3NhZ2UsIGFyZ3MpO1xuICAgICAgaWYgKCFzc2UuY2xvc2VkKSBzc2UucHVibGlzaChcImVycm9yXCIsIHsgbWVzc2FnZTogc3RyZWFtRXJyb3IubWVzc2FnZSB9KTtcbiAgICB9IGVsc2UgaWYgKHNzZS5jbG9zZWQgJiYgcnVuSW5mbykge1xuICAgICAgYXdhaXQgZmluaXNoUnVuQWJvcnRlZChydW5JbmZvLnJlcXVlc3RMb2dJZCwgYXJncyk7XG4gICAgfVxuXG4gICAgYXdhaXQgc3NlLmVuZCgpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIGNyZWF0ZVJ1bihpbnB1dDogQ3JlYXRlUnVuSW5wdXQpOiBQcm9taXNlPHsgcmVxdWVzdExvZ0lkOiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IHJlcXVlc3RMb2dJZCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jcmVhdGVSdW4oe1xuICAgICAgdXNlcl9wcm9tcHQ6IGlucHV0LnVzZXJQcm9tcHQsXG4gICAgICBtb2RlbF9uYW1lOiBpbnB1dC5tb2RlbE5hbWUsXG4gICAgICBlZmZvcnQ6IGlucHV0LmVmZm9ydCxcbiAgICAgIHByb2plY3RfbmFtZTogaW5wdXQucHJvamVjdE5hbWUsXG4gICAgICBzeXN0ZW1fcHJvbXB0OiBpbnB1dC5zeXN0ZW1Qcm9tcHQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgcmVxdWVzdExvZ0lkIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgYXBwZW5kU3RlcChpbnB1dDogQXBwZW5kU3RlcElucHV0KTogUHJvbWlzZTx7IHN0ZXBJZDogbnVtYmVyIH0+IHtcbiAgICBjb25zdCBzdGVwSWQgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYXBwZW5kU3RlcChpbnB1dC5yZXF1ZXN0TG9nSWQsIHtcbiAgICAgIHN0ZXBfaW5kZXg6IGlucHV0LnN0ZXBJbmRleCxcbiAgICAgIHR5cGU6IGlucHV0LnR5cGUsXG4gICAgICBpbnB1dF90b2tlbnM6IGlucHV0LmlucHV0VG9rZW5zLFxuICAgICAgb3V0cHV0X3Rva2VuczogaW5wdXQub3V0cHV0VG9rZW5zLFxuICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGlucHV0LmNhY2hlUmVhZFRva2VucyxcbiAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogaW5wdXQuY2FjaGVDcmVhdGlvblRva2VucyxcbiAgICAgIGR1cmF0aW9uX21zOiBpbnB1dC5kdXJhdGlvbk1zLFxuICAgICAgZmluaXNoX3JlYXNvbjogaW5wdXQuZmluaXNoUmVhc29uLFxuICAgICAgcmVhc29uaW5nX3RleHQ6IGlucHV0LnJlYXNvbmluZ1RleHQsXG4gICAgICByZWFzb25pbmdfdG9rZW5zOiBpbnB1dC5yZWFzb25pbmdUb2tlbnMsXG4gICAgICB0b29sX2NhbGxfaW5kZXg6IGlucHV0LnRvb2xDYWxsSW5kZXgsXG4gICAgICB0b29sX2NhbGxfaWQ6IGlucHV0LnRvb2xDYWxsSWQsXG4gICAgICB0b29sX25hbWU6IGlucHV0LnRvb2xOYW1lLFxuICAgICAgdG9vbF9hcmdzOiBpbnB1dC50b29sQXJncyxcbiAgICAgIHRvb2xfcmVzdWx0OiBpbnB1dC50b29sUmVzdWx0LFxuICAgICAgdG9vbF9kdXJhdGlvbl9tczogaW5wdXQudG9vbER1cmF0aW9uTXMsXG4gICAgICBlcnJvcjogaW5wdXQuZXJyb3IsXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgc3RlcElkIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgZmluaXNoUnVuKGlucHV0OiBGaW5pc2hSdW5JbnB1dCk6IFByb21pc2U8eyBvazogYm9vbGVhbiB9PiB7XG4gICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmZpbmlzaFJ1bihpbnB1dC5yZXF1ZXN0TG9nSWQsIHtcbiAgICAgIHN0YXR1czogaW5wdXQuc3RhdHVzLFxuICAgICAgcmVzcG9uc2U6IGlucHV0LnJlc3BvbnNlLFxuICAgICAgdG9rZW5fbmFtZTogaW5wdXQudG9rZW5OYW1lLFxuICAgICAgaW5wdXRfdG9rZW5zOiBpbnB1dC50b3RhbElucHV0VG9rZW5zLFxuICAgICAgb3V0cHV0X3Rva2VuczogaW5wdXQudG90YWxPdXRwdXRUb2tlbnMsXG4gICAgICBjYWNoZV9yZWFkX3Rva2VuczogaW5wdXQudG90YWxDYWNoZVJlYWRUb2tlbnMsXG4gICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IGlucHV0LnRvdGFsQ2FjaGVDcmVhdGlvblRva2VucyxcbiAgICAgIGR1cmF0aW9uX21zOiBpbnB1dC50b3RhbER1cmF0aW9uTXMsXG4gICAgICBoaXN0b3J5OiBpbnB1dC5oaXN0b3J5ID8gSlNPTi5wYXJzZShpbnB1dC5oaXN0b3J5KSA6IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yX21lc3NhZ2U6IGlucHV0LmVycm9yTWVzc2FnZSxcbiAgICB9KTtcbiAgICByZXR1cm4geyBvazogdHJ1ZSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgc3RhdHMoKTogUHJvbWlzZTxUb2tlblN0YXRzW10+IHtcbiAgICByZXR1cm4gUWdyaWREaXNwYXRjaGVyLmdldFN0YXRzKCk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyB0b3RhbENvc3QodG9rZW5OYW1lPzogc3RyaW5nKTogUHJvbWlzZTx7IHVzZDogbnVtYmVyIH0+IHtcbiAgICByZXR1cm4geyB1c2Q6IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC50b3RhbENvc3QoeyB0b2tlbl9uYW1lOiB0b2tlbk5hbWUgfSkgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHByb2plY3ROYW1lcygpOiBQcm9taXNlPHsgbmFtZXM6IHN0cmluZ1tdIH0+IHtcbiAgICByZXR1cm4geyBuYW1lczogYXdhaXQgUmVxdWVzdExvZ01vZGVsLmRpc3RpbmN0UHJvamVjdE5hbWVzKCkgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBhZGRUb2tlbihcbiAgICBwcm92aWRlcjogc3RyaW5nLFxuICAgIGNyZWRlbnRpYWxzOiBUb2tlbkNyZWRlbnRpYWxzLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IGFkZGVkOiBib29sZWFuIH0+IHtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIG5hbWUsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiB7IGFkZGVkOiB0cnVlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgdXBkYXRlVG9rZW4oaWQ6IG51bWJlciwgbmFtZT86IHN0cmluZyk6IFByb21pc2U8eyB1cGRhdGVkOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE9uZShcIkFcIiwgeyBpZCB9KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyB1cGRhdGVkOiBmYWxzZSB9O1xuXG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IGVudHJ5LmlkLFxuICAgICAgICBwcm92aWRlcjogZW50cnkucHJvdmlkZXIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBlbnRyeS5jcmVkZW50aWFscyxcbiAgICAgICAgbmFtZTogbmFtZSAhPT0gdW5kZWZpbmVkID8gbmFtZSA6IGVudHJ5Lm5hbWUsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiB7IHVwZGF0ZWQ6IHRydWUgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyByZW1vdmVUb2tlbihpZDogbnVtYmVyKTogUHJvbWlzZTx7IHJlbW92ZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kT25lKFwiQVwiLCB7IGlkIH0pO1xuICAgIGlmICghZW50cnkpIHJldHVybiB7IHJlbW92ZWQ6IGZhbHNlIH07XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5kZWwoW2VudHJ5LmlkXSk7XG4gICAgcmV0dXJuIHsgcmVtb3ZlZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIO2GoO2BsCDtmZzshLHtmZQv67mE7Zmc7ISx7ZmUIO2GoOq4gCBEQuydmCBhY3RpdmUg7ZWE65OcIOyXheuNsOydtO2KuFxuICAgKi9cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHRvZ2dsZVRva2VuKGlkOiBudW1iZXIpOiBQcm9taXNlPHsgYWN0aXZlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE9uZShcIkFcIiwgeyBpZCB9KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBhY3RpdmU6IGZhbHNlIH07XG5cbiAgICBjb25zdCBuZXdBY3RpdmUgPSAhZW50cnkuYWN0aXZlO1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIGlkLFxuICAgICAgICBwcm92aWRlcjogZW50cnkucHJvdmlkZXIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBlbnRyeS5jcmVkZW50aWFscyxcbiAgICAgICAgYWN0aXZlOiBuZXdBY3RpdmUsXG4gICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiB7IGFjdGl2ZTogbmV3QWN0aXZlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgb2F1dGhTdGFydChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE9BdXRoU3RhcnRSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGNvZGVWZXJpZmllciwgY29kZUNoYWxsZW5nZSwgc3RhdGUgfSA9IGdlbmVyYXRlUEtDRSgpO1xuXG4gICAgY29uc3Qgc2VydmVyUG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgPz8gXCI0NDkwMFwiO1xuICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzZXJ2ZXJQb3J0fS9jYWxsYmFja2A7XG4gICAgY29uc3QgYXV0aFVybCA9IGJ1aWxkQXV0aFVybChjb2RlQ2hhbGxlbmdlLCBzdGF0ZSwgcmVkaXJlY3RVcmkpO1xuXG4gICAgYXdhaXQgc2V0T0F1dGhTdGF0ZShzdGF0ZSwgeyBjb2RlVmVyaWZpZXIsIG5hbWUsIHJlZGlyZWN0VXJpIH0pO1xuXG4gICAgcmV0dXJuIHsgYXV0aFVybCB9O1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlT0F1dGhDYWxsYmFjayhjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcsIHJlcGx5OiBGYXN0aWZ5UmVwbHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwZW5kaW5nID0gYXdhaXQgZ2V0T0F1dGhTdGF0ZShzdGF0ZSk7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBsb2dnZXIud2FybihcIm9hdXRoIGNhbGxiYWNrOiBpbnZhbGlkX3N0YXRlXCIpO1xuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KFwiLz9vYXV0aD1lcnJvciZyZWFzb249aW52YWxpZF9zdGF0ZVwiKTtcbiAgICB9XG4gICAgYXdhaXQgZGVsZXRlT0F1dGhTdGF0ZShzdGF0ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW5zID0gYXdhaXQgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zKFxuICAgICAgICBjb2RlLFxuICAgICAgICBwZW5kaW5nLmNvZGVWZXJpZmllcixcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHBlbmRpbmcucmVkaXJlY3RVcmksXG4gICAgICApO1xuXG4gICAgICBpZiAodG9rZW5zLmFjY291bnRVdWlkKSB7XG4gICAgICAgIGNvbnN0IG9sZEVudHJpZXMgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRCeUFjY291bnRJZGVudGlmaWVyKFxuICAgICAgICAgIFwiQVwiLFxuICAgICAgICAgIFwiYW50aHJvcGljXCIsXG4gICAgICAgICAgdG9rZW5zLmFjY291bnRVdWlkLFxuICAgICAgICApO1xuICAgICAgICBpZiAob2xkRW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgVG9rZW5Nb2RlbC5kZWwob2xkRW50cmllcy5tYXAoKG8pID0+IG8uaWQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZXI6IFwiYW50aHJvcGljXCIsXG4gICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICByZWZyZXNoVG9rZW46IHRva2Vucy5yZWZyZXNoVG9rZW4sXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHRva2Vucy5leHBpcmVzQXQgPz8gMCxcbiAgICAgICAgICAgIGFjY291bnRVdWlkOiB0b2tlbnMuYWNjb3VudFV1aWQgPz8gXCJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IHBlbmRpbmcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoYC8/b2F1dGg9c3VjY2VzcyZuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBlbmRpbmcubmFtZSl9YCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCk7XG4gICAgfVxuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIG9hdXRoU3RhcnRPcGVuQUkobmFtZTogc3RyaW5nKTogUHJvbWlzZTxPQXV0aFN0YXJ0UmVzdWx0PiB7XG4gICAgaWYgKCFRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcikgdGhyb3cgbmV3IEVycm9yKFwiT3BlbkFJIGRpc3BhdGNoZXIgbm90IGluaXRpYWxpemVkXCIpO1xuICAgIGNvbnN0IHsgYXV0aFVybCB9ID0gYXdhaXQgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXIuc3RhcnRCcm93c2VyTG9naW4obmFtZSk7XG5cbiAgICAvLyBmaXJlLWFuZC1mb3JnZXQ6IGNvZGV4IGxvZ2luIOyZhOujjCDrjIDquLAg4oaSIO2GoO2BsCDsoIDsnqVcbiAgICBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlclxuICAgICAgLmNvbXBsZXRlQnJvd3NlckxvZ2luKClcbiAgICAgIC50aGVuKGFzeW5jIChjcmVkcykgPT4ge1xuICAgICAgICBpZiAoY3JlZHMuYWNjb3VudElkKSB7XG4gICAgICAgICAgY29uc3Qgb2xkRW50cmllcyA9IGF3YWl0IFRva2VuTW9kZWwuZmluZEJ5QWNjb3VudElkZW50aWZpZXIoXG4gICAgICAgICAgICBcIkFcIixcbiAgICAgICAgICAgIFwib3BlbmFpXCIsXG4gICAgICAgICAgICBjcmVkcy5hY2NvdW50SWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAob2xkRW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBhd2FpdCBUb2tlbk1vZGVsLmRlbChvbGRFbnRyaWVzLm1hcCgobykgPT4gby5pZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiBcIm9wZW5haVwiLFxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGNyZWRzLmFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICByZWZyZXNoVG9rZW46IGNyZWRzLnJlZnJlc2hUb2tlbixcbiAgICAgICAgICAgICAgaWRUb2tlbjogY3JlZHMuaWRUb2tlbixcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW5FeHBpcmVzQXQ6IERhdGUubm93KCkgKyAxMCAqIDI0ICogMzYwMCAqIDEwMDAsXG4gICAgICAgICAgICAgIGFjY291bnRJZDogY3JlZHMuYWNjb3VudElkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBPcGVuQUkgdG9rZW4gc2F2ZWQgZm9yICR7bmFtZX1gKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgbG9nZ2VyLndhcm4oYE9wZW5BSSBicm93c2VyIGxvZ2luIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYXV0aFVybCB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgdXNhZ2UodG9rZW5JZD86IG51bWJlcik6IFByb21pc2U8VXNhZ2VSZXNwb25zZT4ge1xuICAgIGNvbnN0IHsgcm93czogYWxsVG9rZW5zIH0gPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRNYW55KFwiQVwiKTtcbiAgICBjb25zdCBlbnRyeSA9IHRva2VuSWRcbiAgICAgID8gYWxsVG9rZW5zLmZpbmQoKGUpID0+IGUuaWQgPT09IHRva2VuSWQpXG4gICAgICA6IGFsbFRva2Vucy5maW5kTGFzdCgoZSkgPT4gZS5hY3RpdmUgJiYgZS5wcm92aWRlciA9PT0gXCJhbnRocm9waWNcIik7XG5cbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBlcnJvcjogXCJOT1RfRk9VTkRcIiB9O1xuXG4gICAgaWYgKGVudHJ5LnByb3ZpZGVyID09PSBcIm9wZW5haVwiKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByYXcgPSAoYXdhaXQgUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LmdldFJhdGVMaW1pdHMoZW50cnkubmFtZSkpIGFzIHtcbiAgICAgICAgICByYXRlTGltaXRzPzoge1xuICAgICAgICAgICAgcHJpbWFyeT86IHsgdXNlZFBlcmNlbnQ6IG51bWJlcjsgd2luZG93RHVyYXRpb25NaW5zOiBudW1iZXI7IHJlc2V0c0F0OiBudW1iZXIgfTtcbiAgICAgICAgICAgIHNlY29uZGFyeT86IHsgdXNlZFBlcmNlbnQ6IG51bWJlcjsgd2luZG93RHVyYXRpb25NaW5zOiBudW1iZXI7IHJlc2V0c0F0OiBudW1iZXIgfTtcbiAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBybCA9IHJhdz8ucmF0ZUxpbWl0cztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm92aWRlcjogXCJvcGVuYWlcIixcbiAgICAgICAgICBmaXZlSG91cjogcmw/LnByaW1hcnlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHV0aWxpemF0aW9uOiBybC5wcmltYXJ5LnVzZWRQZXJjZW50LFxuICAgICAgICAgICAgICAgIHJlc2V0c0F0OiBuZXcgRGF0ZShybC5wcmltYXJ5LnJlc2V0c0F0ICogMTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHNldmVuRGF5OiBybD8uc2Vjb25kYXJ5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICB1dGlsaXphdGlvbjogcmwuc2Vjb25kYXJ5LnVzZWRQZXJjZW50LFxuICAgICAgICAgICAgICAgIHJlc2V0c0F0OiBuZXcgRGF0ZShybC5zZWNvbmRhcnkucmVzZXRzQXQgKiAxMDAwKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBgT3BlbkFJIHVzYWdlIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5LnByb3ZpZGVyICE9PSBcImFudGhyb3BpY1wiKSB7XG4gICAgICByZXR1cm4geyBlcnJvcjogYHVzYWdlIEFQSSBub3Qgc3VwcG9ydGVkIGZvciBwcm92aWRlcjogJHtlbnRyeS5wcm92aWRlcn1gIH07XG4gICAgfVxuXG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gZ2V0QWNjZXNzVG9rZW4oZW50cnkuY3JlZGVudGlhbHMpO1xuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGdldEV4cGlyZXNBdChlbnRyeS5jcmVkZW50aWFscykgPCBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGlzRXhwaXJlZCAmJiBnZXRSZWZyZXNoVG9rZW4oZW50cnkuY3JlZGVudGlhbHMpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKGVudHJ5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb2F1dGhMb2dnZXIud2FybihgcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByYXcgPSBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcbiAgICBpZiAocmF3LmVycm9yICYmIGdldFJlZnJlc2hUb2tlbihlbnRyeS5jcmVkZW50aWFscykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oZW50cnkpO1xuICAgICAgICBjb25zdCByZXRyaWVkID0gYXdhaXQgZmV0Y2hVc2FnZShhY2Nlc3NUb2tlbik7XG4gICAgICAgIGlmIChyZXRyaWVkLmVycm9yKSByZXR1cm4geyBlcnJvcjogcmV0cmllZC5lcnJvciB9O1xuICAgICAgICByZXR1cm4gY29udmVydEFudGhyb3BpY1VzYWdlKHJldHJpZWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBvYXV0aExvZ2dlci53YXJuKGByZWZyZXNoIGZhaWxlZCBmb3IgJHtlbnRyeS5uYW1lfTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IFwicmUtbG9naW4gcmVxdWlyZWRcIiB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmF3LmVycm9yKSByZXR1cm4geyBlcnJvcjogcmF3LmVycm9yIH07XG4gICAgcmV0dXJuIGNvbnZlcnRBbnRocm9waWNVc2FnZShyYXcpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKHRva2VuOiBUb2tlblN1YnNldEEpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNyZWRzID0gdG9rZW4uY3JlZGVudGlhbHM7XG4gICAgY29uc3QgcnQgPSBnZXRSZWZyZXNoVG9rZW4oY3JlZHMpO1xuICAgIGlmICghcnQpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlZnJlc2ggdG9rZW5cIik7XG4gICAgY29uc3QgcmVmcmVzaGVkID0gYXdhaXQgcmVmcmVzaEFjY2Vzc1Rva2VuKHJ0KTtcbiAgICBjb25zdCB1cGRhdGVkID0gVG9rZW5DcmVkZW50aWFscy5wYXJzZSh7XG4gICAgICAuLi5jcmVkcyxcbiAgICAgIGFjY2Vzc1Rva2VuOiByZWZyZXNoZWQuYWNjZXNzVG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hlZC5yZWZyZXNoVG9rZW4sXG4gICAgICBleHBpcmVzQXQ6IHJlZnJlc2hlZC5leHBpcmVzQXQsXG4gICAgfSk7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRva2VuLmlkLFxuICAgICAgICBwcm92aWRlcjogdG9rZW4ucHJvdmlkZXIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiB1cGRhdGVkLFxuICAgICAgICBuYW1lOiB0b2tlbi5uYW1lLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICByZXR1cm4gcmVmcmVzaGVkLmFjY2Vzc1Rva2VuO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgaGVhbHRoKCk6IFByb21pc2U8SGVhbHRoUmVzcG9uc2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBcIm9rXCIsXG4gICAgICBhY3RpdmVUb2tlbnM6IFFncmlkRGlzcGF0Y2hlci50b2tlbnMuc2l6ZSxcbiAgICAgIHN1YnNjcmliZXI6IFFncmlkRGlzcGF0Y2hlci5zdWJzY3JpYmVyPy5zdGF0dXMoKSA/PyBudWxsLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFFncmlkRnJhbWUgPSBuZXcgUWdyaWRGcmFtZUNsYXNzKCk7XG5cbmZ1bmN0aW9uIGNvbnZlcnRBbnRocm9waWNVc2FnZShyYXc6IEFudGhyb3BpY1VzYWdlUmF3KTogVXNhZ2VSZXNwb25zZSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZXI6IFwiYW50aHJvcGljXCIsXG4gICAgZml2ZUhvdXI6IHJhdy5maXZlX2hvdXJcbiAgICAgID8geyB1dGlsaXphdGlvbjogcmF3LmZpdmVfaG91ci51dGlsaXphdGlvbiwgcmVzZXRzQXQ6IHJhdy5maXZlX2hvdXIucmVzZXRzX2F0IH1cbiAgICAgIDogbnVsbCxcbiAgICBzZXZlbkRheTogcmF3LnNldmVuX2RheVxuICAgICAgPyB7IHV0aWxpemF0aW9uOiByYXcuc2V2ZW5fZGF5LnV0aWxpemF0aW9uLCByZXNldHNBdDogcmF3LnNldmVuX2RheS5yZXNldHNfYXQgfVxuICAgICAgOiBudWxsLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQTRDQSxNQUFNLGlDQUFpQixJQUFJLEtBQXlCO0FBR3BELE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sa0JBQWtCO0FBRXhCLGVBQWUsY0FBYyxPQUFlLE1BQW1DO0NBQzdFLE1BQU0sUUFBUSxvQkFBb0I7QUFDbEMsS0FBSSxDQUFDLE1BQU8sT0FBTSxJQUFJLE1BQU0sK0JBQStCO0FBQzNELE9BQU0sTUFBTSxJQUFJO0VBQ2QsS0FBSyxHQUFHLHFCQUFxQjtFQUM3QixPQUFPLEtBQUssVUFBVSxLQUFLO0VBQzNCLEtBQUs7RUFDTixDQUFDOztBQUdKLGVBQWUsY0FBYyxPQUFrRDtDQUM3RSxNQUFNLFFBQVEsb0JBQW9CO0FBQ2xDLEtBQUksQ0FBQyxNQUFPLE9BQU0sSUFBSSxNQUFNLCtCQUErQjtDQUMzRCxNQUFNLE1BQU0sTUFBTSxNQUFNLElBQVksRUFBRSxLQUFLLEdBQUcscUJBQXFCLFNBQVMsQ0FBQztBQUM3RSxLQUFJLENBQUMsSUFBSyxRQUFPO0FBQ2pCLFFBQU8sS0FBSyxNQUFNLElBQUk7O0FBR3hCLGVBQWUsaUJBQWlCLE9BQThCO0NBQzVELE1BQU0sUUFBUSxvQkFBb0I7QUFDbEMsS0FBSSxDQUFDLE1BQU87QUFDWixPQUFNLE1BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxxQkFBcUIsU0FBUyxDQUFDOztBQUc5RCxNQUFNLFNBQVMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxNQUFNLGNBQWMsVUFBVSxDQUFDLFNBQVMsUUFB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
|