@cartanova/qgrid-cli 1.9.0 → 2.0.1
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 +116 -16
- package/bundle/dist/application/qgrid/qgrid.frame.js +350 -83
- package/bundle/dist/application/qgrid/qgrid.types.js +132 -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 +41 -44
- 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 +165 -23
- package/bundle/src/application/qgrid/qgrid.frame.ts +400 -81
- package/bundle/src/application/qgrid/qgrid.types.ts +150 -20
- 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 -24
- 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 +50 -51
- 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-WxeogUIk.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-DQh4d03H.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-Q2ZIxMdn.js → services.generated-C39hdSv0.js} +164 -34
- package/bundle/web-dist/server/assets/{shim-BYpcQGN1.js → shim-B9ZrFt3Z.js} +1 -1
- package/bundle/web-dist/server/assets/{show-j1j13Hq1.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 +35 -16
- 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-DxJOOfGV.js +0 -78
- package/bundle/web-dist/client/assets/logs-D83MPvLO.js +0 -1
- package/bundle/web-dist/client/assets/routes-C1PeZiBp.js +0 -5
- package/bundle/web-dist/client/assets/sd.generated-C9WnMJm4.js +0 -47
- package/bundle/web-dist/client/assets/services.generated-BV5C1PQa.js +0 -1
- package/bundle/web-dist/client/assets/tokens--RfCPd1y.js +0 -1
- package/bundle/web-dist/server/assets/copy-SIUvcEcZ.js +0 -42
- package/bundle/web-dist/server/assets/logs-9j6ES80h.js +0 -361
- package/bundle/web-dist/server/assets/tokens-hSHCLF_7.js +0 -861
|
@@ -1,44 +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
|
-
|
|
39
|
-
|
|
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
|
+
}
|
|
40
87
|
return result;
|
|
41
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
|
+
}
|
|
42
199
|
async stats() {
|
|
43
200
|
return QgridDispatcher.getStats();
|
|
44
201
|
}
|
|
@@ -48,29 +205,27 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
48
205
|
async projectNames() {
|
|
49
206
|
return { names: await RequestLogModel.distinctProjectNames() };
|
|
50
207
|
}
|
|
51
|
-
async addToken(
|
|
208
|
+
async addToken(provider, credentials, name) {
|
|
52
209
|
await TokenModel.save([{
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
210
|
+
provider,
|
|
211
|
+
credentials,
|
|
212
|
+
name
|
|
56
213
|
}]);
|
|
57
214
|
return { added: true };
|
|
58
215
|
}
|
|
59
|
-
async updateToken(
|
|
60
|
-
const entry = await TokenModel.
|
|
216
|
+
async updateToken(id, name) {
|
|
217
|
+
const entry = await TokenModel.findOne("A", { id });
|
|
61
218
|
if (!entry) return { updated: false };
|
|
62
|
-
const hasNewToken = newToken !== void 0 && newToken.length > 0;
|
|
63
|
-
const hasRefreshToken = refreshToken !== void 0 && refreshToken.length > 0;
|
|
64
219
|
await TokenModel.save([{
|
|
65
220
|
id: entry.id,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
221
|
+
provider: entry.provider,
|
|
222
|
+
credentials: entry.credentials,
|
|
223
|
+
name: name !== void 0 ? name : entry.name
|
|
69
224
|
}]);
|
|
70
225
|
return { updated: true };
|
|
71
226
|
}
|
|
72
|
-
async removeToken(
|
|
73
|
-
const entry = await TokenModel.
|
|
227
|
+
async removeToken(id) {
|
|
228
|
+
const entry = await TokenModel.findOne("A", { id });
|
|
74
229
|
if (!entry) return { removed: false };
|
|
75
230
|
await TokenModel.del([entry.id]);
|
|
76
231
|
return { removed: true };
|
|
@@ -84,7 +239,8 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
84
239
|
const newActive = !entry.active;
|
|
85
240
|
await TokenModel.save([{
|
|
86
241
|
id,
|
|
87
|
-
|
|
242
|
+
provider: entry.provider,
|
|
243
|
+
credentials: entry.credentials,
|
|
88
244
|
active: newActive,
|
|
89
245
|
name: entry.name
|
|
90
246
|
}]);
|
|
@@ -94,66 +250,123 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
94
250
|
const { codeVerifier, codeChallenge, state } = generatePKCE();
|
|
95
251
|
const redirectUri = `http://localhost:${process.env.PORT ?? "44900"}/callback`;
|
|
96
252
|
const authUrl = buildAuthUrl(codeChallenge, state, redirectUri);
|
|
97
|
-
|
|
253
|
+
await setOAuthState(state, {
|
|
98
254
|
codeVerifier,
|
|
99
255
|
name,
|
|
100
256
|
redirectUri
|
|
101
257
|
});
|
|
102
|
-
setTimeout(() => pendingOAuth.delete(state), 3e5);
|
|
103
258
|
return { authUrl };
|
|
104
259
|
}
|
|
105
260
|
async handleOAuthCallback(code, state, reply) {
|
|
106
|
-
const pending =
|
|
107
|
-
if (!pending)
|
|
108
|
-
|
|
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);
|
|
109
267
|
try {
|
|
110
268
|
const tokens = await exchangeCodeForTokens(code, pending.codeVerifier, state, pending.redirectUri);
|
|
111
269
|
if (tokens.accountUuid) {
|
|
112
|
-
const oldEntries = await TokenModel.
|
|
270
|
+
const oldEntries = await TokenModel.findByAccountIdentifier("A", "anthropic", tokens.accountUuid);
|
|
113
271
|
if (oldEntries.length > 0) await TokenModel.del(oldEntries.map((o) => o.id));
|
|
114
272
|
}
|
|
115
273
|
await TokenModel.save([{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
|
121
282
|
}]);
|
|
122
283
|
return reply.redirect(`/?oauth=success&name=${encodeURIComponent(pending.name)}`);
|
|
123
284
|
} catch (e) {
|
|
124
285
|
return reply.redirect(`/?oauth=error&reason=${encodeURIComponent(e.message)}`);
|
|
125
286
|
}
|
|
126
287
|
}
|
|
127
|
-
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) {
|
|
128
314
|
const { rows: allTokens } = await TokenModel.findMany("A");
|
|
129
|
-
const entry =
|
|
315
|
+
const entry = tokenId ? allTokens.find((e) => e.id === tokenId) : allTokens.findLast((e) => e.active && e.provider === "anthropic");
|
|
130
316
|
if (!entry) return { error: "NOT_FOUND" };
|
|
131
|
-
|
|
132
|
-
|
|
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 {
|
|
133
336
|
accessToken = await this.refreshToken(entry);
|
|
134
337
|
} catch (e) {
|
|
135
338
|
oauthLogger.warn(`refresh failed for ${entry.name}: ${e.message}`);
|
|
136
339
|
return { error: "re-login required" };
|
|
137
340
|
}
|
|
138
|
-
const
|
|
139
|
-
if (
|
|
341
|
+
const raw = await fetchUsage(accessToken);
|
|
342
|
+
if (raw.error && getRefreshToken(entry.credentials)) try {
|
|
140
343
|
accessToken = await this.refreshToken(entry);
|
|
141
|
-
|
|
344
|
+
const retried = await fetchUsage(accessToken);
|
|
345
|
+
if (retried.error) return { error: retried.error };
|
|
346
|
+
return convertAnthropicUsage(retried);
|
|
142
347
|
} catch (e) {
|
|
143
348
|
oauthLogger.warn(`refresh failed for ${entry.name}: ${e.message}`);
|
|
144
349
|
return { error: "re-login required" };
|
|
145
350
|
}
|
|
146
|
-
return
|
|
351
|
+
if (raw.error) return { error: raw.error };
|
|
352
|
+
return convertAnthropicUsage(raw);
|
|
147
353
|
}
|
|
148
354
|
async refreshToken(token) {
|
|
149
|
-
|
|
150
|
-
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
|
+
});
|
|
151
365
|
await TokenModel.save([{
|
|
152
366
|
id: token.id,
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
name: token.name ?? ""
|
|
367
|
+
provider: token.provider,
|
|
368
|
+
credentials: updated,
|
|
369
|
+
name: token.name
|
|
157
370
|
}]);
|
|
158
371
|
return refreshed.accessToken;
|
|
159
372
|
}
|
|
@@ -171,17 +384,54 @@ __decorate([
|
|
|
171
384
|
clients: ["axios", "tanstack-mutation"]
|
|
172
385
|
}),
|
|
173
386
|
__decorateMetadata("design:type", Function),
|
|
174
|
-
__decorateMetadata("design:paramtypes", [
|
|
175
|
-
String,
|
|
176
|
-
String,
|
|
177
|
-
Number,
|
|
178
|
-
String,
|
|
179
|
-
String,
|
|
180
|
-
String,
|
|
181
|
-
Object
|
|
182
|
-
]),
|
|
387
|
+
__decorateMetadata("design:paramtypes", [Object]),
|
|
183
388
|
__decorateMetadata("design:returntype", Promise)
|
|
184
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);
|
|
185
435
|
__decorate([
|
|
186
436
|
api({
|
|
187
437
|
httpMethod: "GET",
|
|
@@ -217,7 +467,7 @@ __decorate([
|
|
|
217
467
|
__decorateMetadata("design:type", Function),
|
|
218
468
|
__decorateMetadata("design:paramtypes", [
|
|
219
469
|
String,
|
|
220
|
-
|
|
470
|
+
typeof (_ref = typeof TokenCredentials !== "undefined" && TokenCredentials) === "function" ? _ref : Object,
|
|
221
471
|
String
|
|
222
472
|
]),
|
|
223
473
|
__decorateMetadata("design:returntype", Promise)
|
|
@@ -228,12 +478,7 @@ __decorate([
|
|
|
228
478
|
clients: ["axios", "tanstack-mutation"]
|
|
229
479
|
}),
|
|
230
480
|
__decorateMetadata("design:type", Function),
|
|
231
|
-
__decorateMetadata("design:paramtypes", [
|
|
232
|
-
String,
|
|
233
|
-
String,
|
|
234
|
-
String,
|
|
235
|
-
String
|
|
236
|
-
]),
|
|
481
|
+
__decorateMetadata("design:paramtypes", [Number, String]),
|
|
237
482
|
__decorateMetadata("design:returntype", Promise)
|
|
238
483
|
], QgridFrameClass.prototype, "updateToken", null);
|
|
239
484
|
__decorate([
|
|
@@ -242,7 +487,7 @@ __decorate([
|
|
|
242
487
|
clients: ["axios", "tanstack-mutation"]
|
|
243
488
|
}),
|
|
244
489
|
__decorateMetadata("design:type", Function),
|
|
245
|
-
__decorateMetadata("design:paramtypes", [
|
|
490
|
+
__decorateMetadata("design:paramtypes", [Number]),
|
|
246
491
|
__decorateMetadata("design:returntype", Promise)
|
|
247
492
|
], QgridFrameClass.prototype, "removeToken", null);
|
|
248
493
|
__decorate([
|
|
@@ -263,13 +508,22 @@ __decorate([
|
|
|
263
508
|
__decorateMetadata("design:paramtypes", [String]),
|
|
264
509
|
__decorateMetadata("design:returntype", Promise)
|
|
265
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);
|
|
266
520
|
__decorate([
|
|
267
521
|
api({
|
|
268
522
|
httpMethod: "GET",
|
|
269
523
|
clients: ["axios", "tanstack-query"]
|
|
270
524
|
}),
|
|
271
525
|
__decorateMetadata("design:type", Function),
|
|
272
|
-
__decorateMetadata("design:paramtypes", [
|
|
526
|
+
__decorateMetadata("design:paramtypes", [Number]),
|
|
273
527
|
__decorateMetadata("design:returntype", Promise)
|
|
274
528
|
], QgridFrameClass.prototype, "usage", null);
|
|
275
529
|
__decorate([
|
|
@@ -282,7 +536,20 @@ __decorate([
|
|
|
282
536
|
__decorateMetadata("design:returntype", Promise)
|
|
283
537
|
], QgridFrameClass.prototype, "health", null);
|
|
284
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
|
+
}
|
|
285
552
|
//#endregion
|
|
286
553
|
export { QgridFrame };
|
|
287
554
|
|
|
288
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlSZXBseSB9IGZyb20gXCJmYXN0aWZ5XCI7XG5pbXBvcnQgeyBhcGksIEJhc2VGcmFtZUNsYXNzIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBNSUNST19VU0QsIFJlcXVlc3RMb2dNb2RlbCB9IGZyb20gXCIuLi9yZXF1ZXN0LWxvZy9yZXF1ZXN0LWxvZy5tb2RlbFwiO1xuaW1wb3J0IHsgVG9rZW5Nb2RlbCB9IGZyb20gXCIuLi90b2tlbi90b2tlbi5tb2RlbFwiO1xuaW1wb3J0IHsgdHlwZSBSZWZyZXNoVG9rZW5QYXJhbXMgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4udHlwZXNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkQXV0aFVybCxcbiAgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zLFxuICBmZXRjaFVzYWdlLFxuICBnZW5lcmF0ZVBLQ0UsXG4gIHJlZnJlc2hBY2Nlc3NUb2tlbixcbn0gZnJvbSBcIi4vb2F1dGhcIjtcbmltcG9ydCB7IFFncmlkRGlzcGF0Y2hlciB9IGZyb20gXCIuL3FncmlkLmRpc3BhdGNoZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ2xpUmVzdWx0LFxuICB0eXBlIEVmZm9ydCxcbiAgdHlwZSBIZWFsdGhSZXNwb25zZSxcbiAgdHlwZSBPQXV0aFN0YXJ0UmVzdWx0LFxuICB0eXBlIFRva2VuU3RhdHMsXG4gIHR5cGUgVXNhZ2VSZXNwb25zZSxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgcGVuZGluZ09BdXRoID0gbmV3IE1hcDxzdHJpbmcsIHsgY29kZVZlcmlmaWVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgcmVkaXJlY3RVcmk6IHN0cmluZyB9PigpO1xuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCJdKTtcbmNvbnN0IG9hdXRoTG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwib2F1dGhcIl0pO1xuXG5jbGFzcyBRZ3JpZEZyYW1lQ2xhc3MgZXh0ZW5kcyBCYXNlRnJhbWVDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiUWdyaWRcIik7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcXVlcnkoXG4gICAgcHJvbXB0OiBzdHJpbmcsXG4gICAgc3lzdGVtPzogc3RyaW5nLFxuICAgIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgbW9kZWw/OiBzdHJpbmcsXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmcsXG4gICAganNvblNjaGVtYT86IHN0cmluZyxcbiAgICBlZmZvcnQ/OiBFZmZvcnQsXG4gICk6IFByb21pc2U8Q2xpUmVzdWx0PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUWdyaWREaXNwYXRjaGVyLnF1ZXJ5KFxuICAgICAgeyBzeXN0ZW0sIHByb21wdCwgbW9kZWwsIGpzb25TY2hlbWEsIGVmZm9ydCB9LFxuICAgICAgdGltZW91dCxcbiAgICApO1xuXG4gICAgUmVxdWVzdExvZ01vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICB0b2tlbl9uYW1lOiByZXN1bHQudG9rZW5OYW1lLFxuICAgICAgICBwcm9qZWN0X25hbWU6IHByb2plY3ROYW1lICYmIHByb2plY3ROYW1lLmxlbmd0aCA+IDAgPyBwcm9qZWN0TmFtZSA6IG51bGwsXG4gICAgICAgIG1vZGVsX25hbWU6IHJlc3VsdC5tb2RlbCA/PyBudWxsLFxuICAgICAgICB1c2VyX3Byb21wdDogcHJvbXB0LFxuICAgICAgICBzeXN0ZW1fcHJvbXB0OiBzeXN0ZW0gPz8gbnVsbCxcbiAgICAgICAgcmVzcG9uc2U6IHJlc3VsdC50ZXh0LFxuICAgICAgICBpbnB1dF90b2tlbnM6IHJlc3VsdC51c2FnZS5pbnB1dF90b2tlbnMsXG4gICAgICAgIG91dHB1dF90b2tlbnM6IHJlc3VsdC51c2FnZS5vdXRwdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9yZWFkX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMsXG4gICAgICAgIGR1cmF0aW9uX21zOiByZXN1bHQuZHVyYXRpb25NcyxcbiAgICAgICAgY29zdF91c2Q6IHJlc3VsdC5jb3N0VXNkICE9PSBudWxsID8gTWF0aC5yb3VuZChyZXN1bHQuY29zdFVzZCAqIE1JQ1JPX1VTRCkgOiBudWxsLFxuICAgICAgfSxcbiAgICBdKS5jYXRjaCgoZSkgPT4gbG9nZ2VyLmVycm9yKGByZXF1ZXN0TG9nIHNhdmUgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBzdGF0cygpOiBQcm9taXNlPFRva2VuU3RhdHNbXT4ge1xuICAgIHJldHVybiBRZ3JpZERpc3BhdGNoZXIuZ2V0U3RhdHMoKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHRvdGFsQ29zdCh0b2tlbk5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHsgdXNkOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB7IHVzZDogYXdhaXQgUmVxdWVzdExvZ01vZGVsLnRvdGFsQ29zdCh7IHRva2VuX25hbWU6IHRva2VuTmFtZSB9KSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgcHJvamVjdE5hbWVzKCk6IFByb21pc2U8eyBuYW1lczogc3RyaW5nW10gfT4ge1xuICAgIHJldHVybiB7IG5hbWVzOiBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuZGlzdGluY3RQcm9qZWN0TmFtZXMoKSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIGFkZFRva2VuKHRva2VuOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmcmVzaFRva2VuPzogc3RyaW5nKTogUHJvbWlzZTx7IGFkZGVkOiBib29sZWFuIH0+IHtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICB0b2tlbixcbiAgICAgICAgbmFtZSxcbiAgICAgICAgLi4uKHJlZnJlc2hUb2tlbiAmJiByZWZyZXNoVG9rZW4ubGVuZ3RoID4gMCA/IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0gOiB7fSksXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHJldHVybiB7IGFkZGVkOiB0cnVlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgdXBkYXRlVG9rZW4oXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBuYW1lPzogc3RyaW5nLFxuICAgIG5ld1Rva2VuPzogc3RyaW5nLFxuICAgIHJlZnJlc2hUb2tlbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IHVwZGF0ZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQnlUb2tlbihcIkFcIiwgdG9rZW4pO1xuICAgIGlmICghZW50cnkpIHJldHVybiB7IHVwZGF0ZWQ6IGZhbHNlIH07XG5cbiAgICBjb25zdCBoYXNOZXdUb2tlbiA9IG5ld1Rva2VuICE9PSB1bmRlZmluZWQgJiYgbmV3VG9rZW4ubGVuZ3RoID4gMDtcbiAgICBjb25zdCBoYXNSZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW4gIT09IHVuZGVmaW5lZCAmJiByZWZyZXNoVG9rZW4ubGVuZ3RoID4gMDtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICBpZDogZW50cnkuaWQsXG4gICAgICAgIHRva2VuOiBoYXNOZXdUb2tlbiA/IG5ld1Rva2VuIDogZW50cnkudG9rZW4sXG4gICAgICAgIG5hbWU6IG5hbWUgIT09IHVuZGVmaW5lZCA/IG5hbWUgOiBlbnRyeS5uYW1lLFxuICAgICAgICAuLi4oaGFzUmVmcmVzaFRva2VuID8geyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgdXBkYXRlZDogdHJ1ZSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHJlbW92ZVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPHsgcmVtb3ZlZDogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRCeVRva2VuKFwiQVwiLCB0b2tlbik7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIHsgcmVtb3ZlZDogZmFsc2UgfTtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLmRlbChbZW50cnkuaWRdKTtcbiAgICByZXR1cm4geyByZW1vdmVkOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICog7Yag7YGwIO2ZnOyEse2ZlC/ruYTtmZzshLHtmZQg7Yag6riAIERC7J2YIGFjdGl2ZSDtlYTrk5wg7JeF642w7J207Yq4XG4gICAqL1xuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgdG9nZ2xlVG9rZW4oaWQ6IG51bWJlcik6IFByb21pc2U8eyBhY3RpdmU6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kT25lKFwiQVwiLCB7IGlkIH0pO1xuICAgIGlmICghZW50cnkpIHJldHVybiB7IGFjdGl2ZTogZmFsc2UgfTtcblxuICAgIGNvbnN0IG5ld0FjdGl2ZSA9ICFlbnRyeS5hY3RpdmU7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFt7IGlkLCB0b2tlbjogZW50cnkudG9rZW4sIGFjdGl2ZTogbmV3QWN0aXZlLCBuYW1lOiBlbnRyeS5uYW1lIH1dKTtcbiAgICByZXR1cm4geyBhY3RpdmU6IG5ld0FjdGl2ZSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIG9hdXRoU3RhcnQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxPQXV0aFN0YXJ0UmVzdWx0PiB7XG4gICAgY29uc3QgeyBjb2RlVmVyaWZpZXIsIGNvZGVDaGFsbGVuZ2UsIHN0YXRlIH0gPSBnZW5lcmF0ZVBLQ0UoKTtcblxuICAgIGNvbnN0IHNlcnZlclBvcnQgPSBwcm9jZXNzLmVudi5QT1JUID8/IFwiNDQ5MDBcIjtcbiAgICBjb25zdCByZWRpcmVjdFVyaSA9IGBodHRwOi8vbG9jYWxob3N0OiR7c2VydmVyUG9ydH0vY2FsbGJhY2tgO1xuICAgIGNvbnN0IGF1dGhVcmwgPSBidWlsZEF1dGhVcmwoY29kZUNoYWxsZW5nZSwgc3RhdGUsIHJlZGlyZWN0VXJpKTtcblxuICAgIHBlbmRpbmdPQXV0aC5zZXQoc3RhdGUsIHsgY29kZVZlcmlmaWVyLCBuYW1lLCByZWRpcmVjdFVyaSB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHBlbmRpbmdPQXV0aC5kZWxldGUoc3RhdGUpLCAzMDBfMDAwKTtcblxuICAgIHJldHVybiB7IGF1dGhVcmwgfTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZU9BdXRoQ2FsbGJhY2soY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nLCByZXBseTogRmFzdGlmeVJlcGx5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGVuZGluZyA9IHBlbmRpbmdPQXV0aC5nZXQoc3RhdGUpO1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KFwiLz9vYXV0aD1lcnJvciZyZWFzb249aW52YWxpZF9zdGF0ZVwiKTtcbiAgICB9XG4gICAgcGVuZGluZ09BdXRoLmRlbGV0ZShzdGF0ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW5zID0gYXdhaXQgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zKFxuICAgICAgICBjb2RlLFxuICAgICAgICBwZW5kaW5nLmNvZGVWZXJpZmllcixcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHBlbmRpbmcucmVkaXJlY3RVcmksXG4gICAgICApO1xuXG4gICAgICBpZiAodG9rZW5zLmFjY291bnRVdWlkKSB7XG4gICAgICAgIGNvbnN0IG9sZEVudHJpZXMgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRCeUFjY291bnRVdWlkKFwiQVwiLCB0b2tlbnMuYWNjb3VudFV1aWQpO1xuICAgICAgICBpZiAob2xkRW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgVG9rZW5Nb2RlbC5kZWwob2xkRW50cmllcy5tYXAoKG8pID0+IG8uaWQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAgICB7XG4gICAgICAgICAgdG9rZW46IHRva2Vucy5hY2Nlc3NUb2tlbixcbiAgICAgICAgICBuYW1lOiBwZW5kaW5nLm5hbWUsXG4gICAgICAgICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hUb2tlbixcbiAgICAgICAgICBleHBpcmVzX2F0OiB0b2tlbnMuZXhwaXJlc0F0ID8gQmlnSW50KHRva2Vucy5leHBpcmVzQXQpIDogbnVsbCxcbiAgICAgICAgICBhY2NvdW50X3V1aWQ6IHRva2Vucy5hY2NvdW50VXVpZCxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoYC8/b2F1dGg9c3VjY2VzcyZuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBlbmRpbmcubmFtZSl9YCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCk7XG4gICAgfVxuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgdXNhZ2UodG9rZW5OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxVc2FnZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgeyByb3dzOiBhbGxUb2tlbnMgfSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE1hbnkoXCJBXCIpO1xuICAgIGNvbnN0IGVudHJ5ID0gdG9rZW5OYW1lXG4gICAgICA/IGFsbFRva2Vucy5maW5kKChlKSA9PiBlLm5hbWUgPT09IHRva2VuTmFtZSlcbiAgICAgIDogYWxsVG9rZW5zLmZpbmRMYXN0KChlKSA9PiBlLmFjdGl2ZSk7XG5cbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBlcnJvcjogXCJOT1RfRk9VTkRcIiB9O1xuXG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gZW50cnkudG9rZW47XG4gICAgY29uc3QgaXNFeHBpcmVkID0gZW50cnkuZXhwaXJlc19hdCAmJiBOdW1iZXIoZW50cnkuZXhwaXJlc19hdCkgPCBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGlzRXhwaXJlZCAmJiBlbnRyeS5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKGVudHJ5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb2F1dGhMb2dnZXIud2FybihgcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcblxuICAgIGlmIChyZXN1bHQuZXJyb3IgJiYgZW50cnkucmVmcmVzaF90b2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbihlbnRyeSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb2F1dGhMb2dnZXIud2FybihgcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKHRva2VuOiBSZWZyZXNoVG9rZW5QYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdG9rZW4ucmVmcmVzaF90b2tlbikgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVmcmVzaCB0b2tlblwiKTtcbiAgICBjb25zdCByZWZyZXNoZWQgPSBhd2FpdCByZWZyZXNoQWNjZXNzVG9rZW4odG9rZW4ucmVmcmVzaF90b2tlbik7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRva2VuLmlkLFxuICAgICAgICB0b2tlbjogcmVmcmVzaGVkLmFjY2Vzc1Rva2VuLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoZWQucmVmcmVzaFRva2VuLFxuICAgICAgICBleHBpcmVzX2F0OiBCaWdJbnQocmVmcmVzaGVkLmV4cGlyZXNBdCksXG4gICAgICAgIG5hbWU6IHRva2VuLm5hbWUgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgcmV0dXJuIHJlZnJlc2hlZC5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIGhlYWx0aCgpOiBQcm9taXNlPEhlYWx0aFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogXCJva1wiLFxuICAgICAgYWN0aXZlVG9rZW5zOiBRZ3JpZERpc3BhdGNoZXIudG9rZW5zLnNpemUsXG4gICAgICBzdWJzY3JpYmVyOiBRZ3JpZERpc3BhdGNoZXIuc3Vic2NyaWJlcj8uc3RhdHVzKCkgPz8gbnVsbCxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBRZ3JpZEZyYW1lID0gbmV3IFFncmlkRnJhbWVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBd0JBLE1BQU0sK0JBQWUsSUFBSSxLQUEwRTtBQUNuRyxNQUFNLFNBQVMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxNQUFNLGNBQWMsVUFBVSxDQUFDLFNBQVMsUUFBUSxDQUFDO0FBRWpELElBQU0sa0JBQU4sY0FBOEIsZUFBZTtDQUMzQyxjQUFjO0FBQ1osUUFBTSxR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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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
|