@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.
Files changed (1161) hide show
  1. package/README.md +47 -68
  2. package/bundle/dist/application/qgrid/oauth.js +1 -1
  3. package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +137 -0
  4. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +116 -16
  5. package/bundle/dist/application/qgrid/qgrid.frame.js +350 -83
  6. package/bundle/dist/application/qgrid/qgrid.types.js +132 -19
  7. package/bundle/dist/application/qgrid/token-subscriber.js +14 -4
  8. package/bundle/dist/application/qgrid/token-trigger-setup.js +3 -4
  9. package/bundle/dist/application/qgrid/tool-emulation.js +102 -0
  10. package/bundle/dist/application/queries.generated.js +8 -3
  11. package/bundle/dist/application/request-log/request-log.model.js +105 -1
  12. package/bundle/dist/application/request-log/request-log.types.js +14 -3
  13. package/bundle/dist/application/request-log-step/request-log-step.model.js +115 -0
  14. package/bundle/dist/application/request-log-step/request-log-step.types.js +28 -0
  15. package/bundle/dist/application/sonamu.generated.js +145 -20
  16. package/bundle/dist/application/sonamu.generated.sso.js +63 -8
  17. package/bundle/dist/application/token/token.model.js +10 -8
  18. package/bundle/dist/application/token/token.types.js +19 -11
  19. package/bundle/dist/codex-protocol/AbsolutePathBuf.js +2 -0
  20. package/bundle/dist/codex-protocol/AgentPath.js +2 -0
  21. package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +2 -0
  22. package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +2 -0
  23. package/bundle/dist/codex-protocol/AuthMode.js +2 -0
  24. package/bundle/dist/codex-protocol/ClientInfo.js +2 -0
  25. package/bundle/dist/codex-protocol/ClientNotification.js +2 -0
  26. package/bundle/dist/codex-protocol/ClientRequest.js +2 -0
  27. package/bundle/dist/codex-protocol/CollaborationMode.js +2 -0
  28. package/bundle/dist/codex-protocol/ContentItem.js +2 -0
  29. package/bundle/dist/codex-protocol/ConversationGitInfo.js +2 -0
  30. package/bundle/dist/codex-protocol/ConversationSummary.js +2 -0
  31. package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +2 -0
  32. package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +2 -0
  33. package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +2 -0
  34. package/bundle/dist/codex-protocol/FileChange.js +2 -0
  35. package/bundle/dist/codex-protocol/ForcedLoginMethod.js +2 -0
  36. package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +2 -0
  37. package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +2 -0
  38. package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +2 -0
  39. package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +2 -0
  40. package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +2 -0
  41. package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +2 -0
  42. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +2 -0
  43. package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +2 -0
  44. package/bundle/dist/codex-protocol/GetAuthStatusParams.js +2 -0
  45. package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +2 -0
  46. package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +2 -0
  47. package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +2 -0
  48. package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +2 -0
  49. package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +2 -0
  50. package/bundle/dist/codex-protocol/GitSha.js +2 -0
  51. package/bundle/dist/codex-protocol/ImageDetail.js +2 -0
  52. package/bundle/dist/codex-protocol/InitializeCapabilities.js +2 -0
  53. package/bundle/dist/codex-protocol/InitializeParams.js +2 -0
  54. package/bundle/dist/codex-protocol/InitializeResponse.js +2 -0
  55. package/bundle/dist/codex-protocol/InputModality.js +2 -0
  56. package/bundle/dist/codex-protocol/InternalSessionSource.js +2 -0
  57. package/bundle/dist/codex-protocol/LocalShellAction.js +2 -0
  58. package/bundle/dist/codex-protocol/LocalShellExecAction.js +2 -0
  59. package/bundle/dist/codex-protocol/LocalShellStatus.js +2 -0
  60. package/bundle/dist/codex-protocol/MessagePhase.js +2 -0
  61. package/bundle/dist/codex-protocol/ModeKind.js +2 -0
  62. package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +2 -0
  63. package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +2 -0
  64. package/bundle/dist/codex-protocol/ParsedCommand.js +2 -0
  65. package/bundle/dist/codex-protocol/Personality.js +2 -0
  66. package/bundle/dist/codex-protocol/PlanType.js +2 -0
  67. package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +2 -0
  68. package/bundle/dist/codex-protocol/RealtimeOutputModality.js +2 -0
  69. package/bundle/dist/codex-protocol/RealtimeVoice.js +2 -0
  70. package/bundle/dist/codex-protocol/RealtimeVoicesList.js +2 -0
  71. package/bundle/dist/codex-protocol/ReasoningEffort.js +2 -0
  72. package/bundle/dist/codex-protocol/ReasoningItemContent.js +2 -0
  73. package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +2 -0
  74. package/bundle/dist/codex-protocol/ReasoningSummary.js +2 -0
  75. package/bundle/dist/codex-protocol/RequestId.js +2 -0
  76. package/bundle/dist/codex-protocol/Resource.js +2 -0
  77. package/bundle/dist/codex-protocol/ResourceContent.js +2 -0
  78. package/bundle/dist/codex-protocol/ResourceTemplate.js +2 -0
  79. package/bundle/dist/codex-protocol/ResponseItem.js +2 -0
  80. package/bundle/dist/codex-protocol/ReviewDecision.js +2 -0
  81. package/bundle/dist/codex-protocol/ServerNotification.js +2 -0
  82. package/bundle/dist/codex-protocol/ServerRequest.js +2 -0
  83. package/bundle/dist/codex-protocol/SessionSource.js +2 -0
  84. package/bundle/dist/codex-protocol/Settings.js +2 -0
  85. package/bundle/dist/codex-protocol/SubAgentSource.js +2 -0
  86. package/bundle/dist/codex-protocol/ThreadId.js +2 -0
  87. package/bundle/dist/codex-protocol/ThreadMemoryMode.js +2 -0
  88. package/bundle/dist/codex-protocol/Tool.js +2 -0
  89. package/bundle/dist/codex-protocol/Verbosity.js +2 -0
  90. package/bundle/dist/codex-protocol/WebSearchAction.js +2 -0
  91. package/bundle/dist/codex-protocol/WebSearchContextSize.js +2 -0
  92. package/bundle/dist/codex-protocol/WebSearchLocation.js +2 -0
  93. package/bundle/dist/codex-protocol/WebSearchMode.js +2 -0
  94. package/bundle/dist/codex-protocol/WebSearchToolConfig.js +2 -0
  95. package/bundle/dist/codex-protocol/index.js +3 -0
  96. package/bundle/dist/codex-protocol/serde_json/JsonValue.js +2 -0
  97. package/bundle/dist/codex-protocol/v2/Account.js +2 -0
  98. package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +2 -0
  99. package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +2 -0
  100. package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +2 -0
  101. package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +2 -0
  102. package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +2 -0
  103. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +2 -0
  104. package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +2 -0
  105. package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +2 -0
  106. package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +2 -0
  107. package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +2 -0
  108. package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +2 -0
  109. package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +2 -0
  110. package/bundle/dist/codex-protocol/v2/AppBranding.js +2 -0
  111. package/bundle/dist/codex-protocol/v2/AppInfo.js +2 -0
  112. package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +2 -0
  113. package/bundle/dist/codex-protocol/v2/AppMetadata.js +2 -0
  114. package/bundle/dist/codex-protocol/v2/AppReview.js +2 -0
  115. package/bundle/dist/codex-protocol/v2/AppScreenshot.js +2 -0
  116. package/bundle/dist/codex-protocol/v2/AppSummary.js +2 -0
  117. package/bundle/dist/codex-protocol/v2/AppToolApproval.js +2 -0
  118. package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +2 -0
  119. package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +2 -0
  120. package/bundle/dist/codex-protocol/v2/AppsConfig.js +2 -0
  121. package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +2 -0
  122. package/bundle/dist/codex-protocol/v2/AppsListParams.js +2 -0
  123. package/bundle/dist/codex-protocol/v2/AppsListResponse.js +2 -0
  124. package/bundle/dist/codex-protocol/v2/AskForApproval.js +2 -0
  125. package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +2 -0
  126. package/bundle/dist/codex-protocol/v2/ByteRange.js +2 -0
  127. package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +2 -0
  128. package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +2 -0
  129. package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +2 -0
  130. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +2 -0
  131. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +2 -0
  132. package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +2 -0
  133. package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +2 -0
  134. package/bundle/dist/codex-protocol/v2/CollabAgentState.js +2 -0
  135. package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +2 -0
  136. package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +2 -0
  137. package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +2 -0
  138. package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +2 -0
  139. package/bundle/dist/codex-protocol/v2/CommandAction.js +2 -0
  140. package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +2 -0
  141. package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +2 -0
  142. package/bundle/dist/codex-protocol/v2/CommandExecParams.js +2 -0
  143. package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +2 -0
  144. package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +2 -0
  145. package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +2 -0
  146. package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +2 -0
  147. package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +2 -0
  148. package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +2 -0
  149. package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +2 -0
  150. package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +2 -0
  151. package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +2 -0
  152. package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +2 -0
  153. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +2 -0
  154. package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +2 -0
  155. package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +2 -0
  156. package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +2 -0
  157. package/bundle/dist/codex-protocol/v2/CommandMigration.js +2 -0
  158. package/bundle/dist/codex-protocol/v2/Config.js +2 -0
  159. package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +2 -0
  160. package/bundle/dist/codex-protocol/v2/ConfigEdit.js +2 -0
  161. package/bundle/dist/codex-protocol/v2/ConfigLayer.js +2 -0
  162. package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +2 -0
  163. package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +2 -0
  164. package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +2 -0
  165. package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +2 -0
  166. package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +2 -0
  167. package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +2 -0
  168. package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +2 -0
  169. package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +2 -0
  170. package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +2 -0
  171. package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +2 -0
  172. package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +2 -0
  173. package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +2 -0
  174. package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +2 -0
  175. package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +2 -0
  176. package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +2 -0
  177. package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +2 -0
  178. package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +2 -0
  179. package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +2 -0
  180. package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +2 -0
  181. package/bundle/dist/codex-protocol/v2/ErrorNotification.js +2 -0
  182. package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +2 -0
  183. package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +2 -0
  184. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +2 -0
  185. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +2 -0
  186. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +2 -0
  187. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +2 -0
  188. package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +2 -0
  189. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +2 -0
  190. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +2 -0
  191. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +2 -0
  192. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +2 -0
  193. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +2 -0
  194. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +2 -0
  195. package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +2 -0
  196. package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +2 -0
  197. package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +2 -0
  198. package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +2 -0
  199. package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +2 -0
  200. package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +2 -0
  201. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +2 -0
  202. package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +2 -0
  203. package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +2 -0
  204. package/bundle/dist/codex-protocol/v2/FileSystemPath.js +2 -0
  205. package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +2 -0
  206. package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +2 -0
  207. package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +2 -0
  208. package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +2 -0
  209. package/bundle/dist/codex-protocol/v2/FsCopyParams.js +2 -0
  210. package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +2 -0
  211. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +2 -0
  212. package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +2 -0
  213. package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +2 -0
  214. package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +2 -0
  215. package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +2 -0
  216. package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +2 -0
  217. package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +2 -0
  218. package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +2 -0
  219. package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +2 -0
  220. package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +2 -0
  221. package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +2 -0
  222. package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +2 -0
  223. package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +2 -0
  224. package/bundle/dist/codex-protocol/v2/FsWatchParams.js +2 -0
  225. package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +2 -0
  226. package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +2 -0
  227. package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +2 -0
  228. package/bundle/dist/codex-protocol/v2/GetAccountParams.js +2 -0
  229. package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +2 -0
  230. package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +2 -0
  231. package/bundle/dist/codex-protocol/v2/GitInfo.js +2 -0
  232. package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +2 -0
  233. package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +2 -0
  234. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +2 -0
  235. package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +2 -0
  236. package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +2 -0
  237. package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +2 -0
  238. package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +2 -0
  239. package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +2 -0
  240. package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +2 -0
  241. package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +2 -0
  242. package/bundle/dist/codex-protocol/v2/HookEventName.js +2 -0
  243. package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +2 -0
  244. package/bundle/dist/codex-protocol/v2/HookHandlerType.js +2 -0
  245. package/bundle/dist/codex-protocol/v2/HookMetadata.js +2 -0
  246. package/bundle/dist/codex-protocol/v2/HookMigration.js +2 -0
  247. package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +2 -0
  248. package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +2 -0
  249. package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +2 -0
  250. package/bundle/dist/codex-protocol/v2/HookRunStatus.js +2 -0
  251. package/bundle/dist/codex-protocol/v2/HookRunSummary.js +2 -0
  252. package/bundle/dist/codex-protocol/v2/HookScope.js +2 -0
  253. package/bundle/dist/codex-protocol/v2/HookSource.js +2 -0
  254. package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +2 -0
  255. package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +2 -0
  256. package/bundle/dist/codex-protocol/v2/HooksListEntry.js +2 -0
  257. package/bundle/dist/codex-protocol/v2/HooksListParams.js +2 -0
  258. package/bundle/dist/codex-protocol/v2/HooksListResponse.js +2 -0
  259. package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +2 -0
  260. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +2 -0
  261. package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +2 -0
  262. package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +2 -0
  263. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +2 -0
  264. package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +2 -0
  265. package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +2 -0
  266. package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +2 -0
  267. package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +2 -0
  268. package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +2 -0
  269. package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +2 -0
  270. package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +2 -0
  271. package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +2 -0
  272. package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +2 -0
  273. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +2 -0
  274. package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +2 -0
  275. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +2 -0
  276. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +2 -0
  277. package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +2 -0
  278. package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +2 -0
  279. package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +2 -0
  280. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +2 -0
  281. package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +2 -0
  282. package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +2 -0
  283. package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +2 -0
  284. package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +2 -0
  285. package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +2 -0
  286. package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +2 -0
  287. package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +2 -0
  288. package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +2 -0
  289. package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +2 -0
  290. package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +2 -0
  291. package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +2 -0
  292. package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +2 -0
  293. package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +2 -0
  294. package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +2 -0
  295. package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +2 -0
  296. package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +2 -0
  297. package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +2 -0
  298. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +2 -0
  299. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +2 -0
  300. package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +2 -0
  301. package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +2 -0
  302. package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +2 -0
  303. package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +2 -0
  304. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +2 -0
  305. package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +2 -0
  306. package/bundle/dist/codex-protocol/v2/McpServerMigration.js +2 -0
  307. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +2 -0
  308. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +2 -0
  309. package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +2 -0
  310. package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +2 -0
  311. package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +2 -0
  312. package/bundle/dist/codex-protocol/v2/McpServerStatus.js +2 -0
  313. package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +2 -0
  314. package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +2 -0
  315. package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +2 -0
  316. package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +2 -0
  317. package/bundle/dist/codex-protocol/v2/McpToolCallError.js +2 -0
  318. package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +2 -0
  319. package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +2 -0
  320. package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +2 -0
  321. package/bundle/dist/codex-protocol/v2/MemoryCitation.js +2 -0
  322. package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +2 -0
  323. package/bundle/dist/codex-protocol/v2/MergeStrategy.js +2 -0
  324. package/bundle/dist/codex-protocol/v2/MigrationDetails.js +2 -0
  325. package/bundle/dist/codex-protocol/v2/Model.js +2 -0
  326. package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +2 -0
  327. package/bundle/dist/codex-protocol/v2/ModelListParams.js +2 -0
  328. package/bundle/dist/codex-protocol/v2/ModelListResponse.js +2 -0
  329. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +2 -0
  330. package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +2 -0
  331. package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +2 -0
  332. package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +2 -0
  333. package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +2 -0
  334. package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +2 -0
  335. package/bundle/dist/codex-protocol/v2/ModelVerification.js +2 -0
  336. package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +2 -0
  337. package/bundle/dist/codex-protocol/v2/NetworkAccess.js +2 -0
  338. package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +2 -0
  339. package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +2 -0
  340. package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +2 -0
  341. package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +2 -0
  342. package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +2 -0
  343. package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +2 -0
  344. package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +2 -0
  345. package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +2 -0
  346. package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +2 -0
  347. package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +2 -0
  348. package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +2 -0
  349. package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +2 -0
  350. package/bundle/dist/codex-protocol/v2/PermissionProfile.js +2 -0
  351. package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +2 -0
  352. package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +2 -0
  353. package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +2 -0
  354. package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +2 -0
  355. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +2 -0
  356. package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +2 -0
  357. package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +2 -0
  358. package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +2 -0
  359. package/bundle/dist/codex-protocol/v2/PluginAvailability.js +2 -0
  360. package/bundle/dist/codex-protocol/v2/PluginDetail.js +2 -0
  361. package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +2 -0
  362. package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +2 -0
  363. package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +2 -0
  364. package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +2 -0
  365. package/bundle/dist/codex-protocol/v2/PluginInterface.js +2 -0
  366. package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +2 -0
  367. package/bundle/dist/codex-protocol/v2/PluginListParams.js +2 -0
  368. package/bundle/dist/codex-protocol/v2/PluginListResponse.js +2 -0
  369. package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +2 -0
  370. package/bundle/dist/codex-protocol/v2/PluginReadParams.js +2 -0
  371. package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +2 -0
  372. package/bundle/dist/codex-protocol/v2/PluginShareContext.js +2 -0
  373. package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +2 -0
  374. package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +2 -0
  375. package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +2 -0
  376. package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +2 -0
  377. package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +2 -0
  378. package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +2 -0
  379. package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +2 -0
  380. package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +2 -0
  381. package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +2 -0
  382. package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +2 -0
  383. package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +2 -0
  384. package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +2 -0
  385. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +2 -0
  386. package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +2 -0
  387. package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +2 -0
  388. package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +2 -0
  389. package/bundle/dist/codex-protocol/v2/PluginSource.js +2 -0
  390. package/bundle/dist/codex-protocol/v2/PluginSummary.js +2 -0
  391. package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +2 -0
  392. package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +2 -0
  393. package/bundle/dist/codex-protocol/v2/PluginsMigration.js +2 -0
  394. package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +2 -0
  395. package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +2 -0
  396. package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +2 -0
  397. package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +2 -0
  398. package/bundle/dist/codex-protocol/v2/ProfileV2.js +2 -0
  399. package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +2 -0
  400. package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +2 -0
  401. package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +2 -0
  402. package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +2 -0
  403. package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +2 -0
  404. package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +2 -0
  405. package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +2 -0
  406. package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +2 -0
  407. package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +2 -0
  408. package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +2 -0
  409. package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +2 -0
  410. package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +2 -0
  411. package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +2 -0
  412. package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +2 -0
  413. package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +2 -0
  414. package/bundle/dist/codex-protocol/v2/ReviewTarget.js +2 -0
  415. package/bundle/dist/codex-protocol/v2/SandboxMode.js +2 -0
  416. package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +2 -0
  417. package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +2 -0
  418. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +2 -0
  419. package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +2 -0
  420. package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +2 -0
  421. package/bundle/dist/codex-protocol/v2/SessionMigration.js +2 -0
  422. package/bundle/dist/codex-protocol/v2/SessionSource.js +2 -0
  423. package/bundle/dist/codex-protocol/v2/SkillDependencies.js +2 -0
  424. package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +2 -0
  425. package/bundle/dist/codex-protocol/v2/SkillInterface.js +2 -0
  426. package/bundle/dist/codex-protocol/v2/SkillMetadata.js +2 -0
  427. package/bundle/dist/codex-protocol/v2/SkillScope.js +2 -0
  428. package/bundle/dist/codex-protocol/v2/SkillSummary.js +2 -0
  429. package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +2 -0
  430. package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +2 -0
  431. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +2 -0
  432. package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +2 -0
  433. package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +2 -0
  434. package/bundle/dist/codex-protocol/v2/SkillsListParams.js +2 -0
  435. package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +2 -0
  436. package/bundle/dist/codex-protocol/v2/SortDirection.js +2 -0
  437. package/bundle/dist/codex-protocol/v2/SubagentMigration.js +2 -0
  438. package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +2 -0
  439. package/bundle/dist/codex-protocol/v2/TextElement.js +2 -0
  440. package/bundle/dist/codex-protocol/v2/TextPosition.js +2 -0
  441. package/bundle/dist/codex-protocol/v2/TextRange.js +2 -0
  442. package/bundle/dist/codex-protocol/v2/Thread.js +2 -0
  443. package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +2 -0
  444. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +2 -0
  445. package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +2 -0
  446. package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +2 -0
  447. package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +2 -0
  448. package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +2 -0
  449. package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +2 -0
  450. package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +2 -0
  451. package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +2 -0
  452. package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +2 -0
  453. package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +2 -0
  454. package/bundle/dist/codex-protocol/v2/ThreadGoal.js +2 -0
  455. package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +2 -0
  456. package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +2 -0
  457. package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +2 -0
  458. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +2 -0
  459. package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +2 -0
  460. package/bundle/dist/codex-protocol/v2/ThreadItem.js +2 -0
  461. package/bundle/dist/codex-protocol/v2/ThreadListParams.js +2 -0
  462. package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +2 -0
  463. package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +2 -0
  464. package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +2 -0
  465. package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +2 -0
  466. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +2 -0
  467. package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +2 -0
  468. package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +2 -0
  469. package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +2 -0
  470. package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +2 -0
  471. package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +2 -0
  472. package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +2 -0
  473. package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +2 -0
  474. package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +2 -0
  475. package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +2 -0
  476. package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +2 -0
  477. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +2 -0
  478. package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +2 -0
  479. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +2 -0
  480. package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +2 -0
  481. package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +2 -0
  482. package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +2 -0
  483. package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +2 -0
  484. package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +2 -0
  485. package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +2 -0
  486. package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +2 -0
  487. package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +2 -0
  488. package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +2 -0
  489. package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +2 -0
  490. package/bundle/dist/codex-protocol/v2/ThreadSource.js +2 -0
  491. package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +2 -0
  492. package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +2 -0
  493. package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +2 -0
  494. package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +2 -0
  495. package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +2 -0
  496. package/bundle/dist/codex-protocol/v2/ThreadStatus.js +2 -0
  497. package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +2 -0
  498. package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +2 -0
  499. package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +2 -0
  500. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +2 -0
  501. package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +2 -0
  502. package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +2 -0
  503. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +2 -0
  504. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +2 -0
  505. package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +2 -0
  506. package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +2 -0
  507. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +2 -0
  508. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +2 -0
  509. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +2 -0
  510. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +2 -0
  511. package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +2 -0
  512. package/bundle/dist/codex-protocol/v2/ToolsV2.js +2 -0
  513. package/bundle/dist/codex-protocol/v2/Turn.js +2 -0
  514. package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +2 -0
  515. package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +2 -0
  516. package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +2 -0
  517. package/bundle/dist/codex-protocol/v2/TurnError.js +2 -0
  518. package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +2 -0
  519. package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +2 -0
  520. package/bundle/dist/codex-protocol/v2/TurnItemsView.js +2 -0
  521. package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +2 -0
  522. package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +2 -0
  523. package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +2 -0
  524. package/bundle/dist/codex-protocol/v2/TurnStartParams.js +2 -0
  525. package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +2 -0
  526. package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +2 -0
  527. package/bundle/dist/codex-protocol/v2/TurnStatus.js +2 -0
  528. package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +2 -0
  529. package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +2 -0
  530. package/bundle/dist/codex-protocol/v2/UserInput.js +2 -0
  531. package/bundle/dist/codex-protocol/v2/WarningNotification.js +2 -0
  532. package/bundle/dist/codex-protocol/v2/WebSearchAction.js +2 -0
  533. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +2 -0
  534. package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +2 -0
  535. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +2 -0
  536. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +2 -0
  537. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +2 -0
  538. package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +2 -0
  539. package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +2 -0
  540. package/bundle/dist/codex-protocol/v2/WriteStatus.js +2 -0
  541. package/bundle/dist/codex-protocol/v2/index.js +7 -0
  542. package/bundle/dist/i18n/sd.generated.js +37 -5
  543. package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +22 -0
  544. package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +18 -0
  545. package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +16 -0
  546. package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +34 -0
  547. package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +31 -0
  548. package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +20 -0
  549. package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +16 -0
  550. package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +14 -0
  551. package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +16 -0
  552. package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +17 -0
  553. package/bundle/dist/sonamu.config.js +41 -44
  554. package/bundle/dist/utils/providers/common/credentials.js +22 -0
  555. package/bundle/dist/utils/providers/common/model-cost.js +117 -0
  556. package/bundle/dist/utils/providers/common/provider-dispatcher.js +2 -0
  557. package/bundle/dist/utils/providers/common/strictifier.js +81 -0
  558. package/bundle/dist/utils/providers/common/token-picker.js +15 -0
  559. package/bundle/dist/utils/providers/openai/codex-rpc.js +151 -0
  560. package/bundle/dist/utils/providers/openai/codex-worker.js +371 -0
  561. package/bundle/dist/utils/providers/openai/openai-constants.js +10 -0
  562. package/bundle/dist/utils/providers/openai/openai-dispatcher.js +325 -0
  563. package/bundle/dist/utils/providers/openai/openai-refresh.js +93 -0
  564. package/bundle/src/application/qgrid/oauth.ts +8 -4
  565. package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +185 -0
  566. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +165 -23
  567. package/bundle/src/application/qgrid/qgrid.frame.ts +400 -81
  568. package/bundle/src/application/qgrid/qgrid.types.ts +150 -20
  569. package/bundle/src/application/qgrid/token-subscriber.ts +27 -5
  570. package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -3
  571. package/bundle/src/application/qgrid/tool-emulation.ts +95 -0
  572. package/bundle/src/application/queries.generated.ts +31 -3
  573. package/bundle/src/application/request-log/request-log.entity.json +49 -41
  574. package/bundle/src/application/request-log/request-log.model.ts +180 -0
  575. package/bundle/src/application/request-log/request-log.types.ts +15 -0
  576. package/bundle/src/application/request-log-step/request-log-step.entity.json +137 -0
  577. package/bundle/src/application/request-log-step/request-log-step.model.ts +161 -0
  578. package/bundle/src/application/request-log-step/request-log-step.types.ts +30 -0
  579. package/bundle/src/application/sonamu.generated.http +245 -24
  580. package/bundle/src/application/sonamu.generated.sso.ts +72 -5
  581. package/bundle/src/application/sonamu.generated.ts +199 -22
  582. package/bundle/src/application/token/token.entity.json +7 -19
  583. package/bundle/src/application/token/token.model.ts +13 -13
  584. package/bundle/src/application/token/token.types.ts +25 -12
  585. package/bundle/src/codex-protocol/AbsolutePathBuf.ts +14 -0
  586. package/bundle/src/codex-protocol/AgentPath.ts +5 -0
  587. package/bundle/src/codex-protocol/ApplyPatchApprovalParams.ts +24 -0
  588. package/bundle/src/codex-protocol/ApplyPatchApprovalResponse.ts +6 -0
  589. package/bundle/src/codex-protocol/AuthMode.ts +8 -0
  590. package/bundle/src/codex-protocol/ClientInfo.ts +5 -0
  591. package/bundle/src/codex-protocol/ClientNotification.ts +5 -0
  592. package/bundle/src/codex-protocol/ClientRequest.ts +176 -0
  593. package/bundle/src/codex-protocol/CollaborationMode.ts +10 -0
  594. package/bundle/src/codex-protocol/ContentItem.ts +9 -0
  595. package/bundle/src/codex-protocol/ConversationGitInfo.ts +9 -0
  596. package/bundle/src/codex-protocol/ConversationSummary.ts +19 -0
  597. package/bundle/src/codex-protocol/ExecCommandApprovalParams.ts +22 -0
  598. package/bundle/src/codex-protocol/ExecCommandApprovalResponse.ts +6 -0
  599. package/bundle/src/codex-protocol/ExecPolicyAmendment.ts +12 -0
  600. package/bundle/src/codex-protocol/FileChange.ts +8 -0
  601. package/bundle/src/codex-protocol/ForcedLoginMethod.ts +5 -0
  602. package/bundle/src/codex-protocol/FunctionCallOutputBody.ts +6 -0
  603. package/bundle/src/codex-protocol/FunctionCallOutputContentItem.ts +12 -0
  604. package/bundle/src/codex-protocol/FuzzyFileSearchMatchType.ts +5 -0
  605. package/bundle/src/codex-protocol/FuzzyFileSearchParams.ts +9 -0
  606. package/bundle/src/codex-protocol/FuzzyFileSearchResponse.ts +6 -0
  607. package/bundle/src/codex-protocol/FuzzyFileSearchResult.ts +16 -0
  608. package/bundle/src/codex-protocol/FuzzyFileSearchSessionCompletedNotification.ts +5 -0
  609. package/bundle/src/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.ts +10 -0
  610. package/bundle/src/codex-protocol/GetAuthStatusParams.ts +5 -0
  611. package/bundle/src/codex-protocol/GetAuthStatusResponse.ts +10 -0
  612. package/bundle/src/codex-protocol/GetConversationSummaryParams.ts +6 -0
  613. package/bundle/src/codex-protocol/GetConversationSummaryResponse.ts +6 -0
  614. package/bundle/src/codex-protocol/GitDiffToRemoteParams.ts +5 -0
  615. package/bundle/src/codex-protocol/GitDiffToRemoteResponse.ts +6 -0
  616. package/bundle/src/codex-protocol/GitSha.ts +5 -0
  617. package/bundle/src/codex-protocol/ImageDetail.ts +5 -0
  618. package/bundle/src/codex-protocol/InitializeCapabilities.ts +18 -0
  619. package/bundle/src/codex-protocol/InitializeParams.ts +10 -0
  620. package/bundle/src/codex-protocol/InitializeResponse.ts +22 -0
  621. package/bundle/src/codex-protocol/InputModality.ts +8 -0
  622. package/bundle/src/codex-protocol/InternalSessionSource.ts +5 -0
  623. package/bundle/src/codex-protocol/LocalShellAction.ts +6 -0
  624. package/bundle/src/codex-protocol/LocalShellExecAction.ts +11 -0
  625. package/bundle/src/codex-protocol/LocalShellStatus.ts +5 -0
  626. package/bundle/src/codex-protocol/MessagePhase.ts +11 -0
  627. package/bundle/src/codex-protocol/ModeKind.ts +8 -0
  628. package/bundle/src/codex-protocol/NetworkPolicyAmendment.ts +6 -0
  629. package/bundle/src/codex-protocol/NetworkPolicyRuleAction.ts +5 -0
  630. package/bundle/src/codex-protocol/ParsedCommand.ts +20 -0
  631. package/bundle/src/codex-protocol/Personality.ts +5 -0
  632. package/bundle/src/codex-protocol/PlanType.ts +17 -0
  633. package/bundle/src/codex-protocol/RealtimeConversationVersion.ts +5 -0
  634. package/bundle/src/codex-protocol/RealtimeOutputModality.ts +5 -0
  635. package/bundle/src/codex-protocol/RealtimeVoice.ts +24 -0
  636. package/bundle/src/codex-protocol/RealtimeVoicesList.ts +11 -0
  637. package/bundle/src/codex-protocol/ReasoningEffort.ts +8 -0
  638. package/bundle/src/codex-protocol/ReasoningItemContent.ts +7 -0
  639. package/bundle/src/codex-protocol/ReasoningItemReasoningSummary.ts +5 -0
  640. package/bundle/src/codex-protocol/ReasoningSummary.ts +10 -0
  641. package/bundle/src/codex-protocol/RequestId.ts +5 -0
  642. package/bundle/src/codex-protocol/Resource.ts +19 -0
  643. package/bundle/src/codex-protocol/ResourceContent.ts +27 -0
  644. package/bundle/src/codex-protocol/ResourceTemplate.ts +16 -0
  645. package/bundle/src/codex-protocol/ResponseItem.ts +63 -0
  646. package/bundle/src/codex-protocol/ReviewDecision.ts +17 -0
  647. package/bundle/src/codex-protocol/ServerNotification.ts +154 -0
  648. package/bundle/src/codex-protocol/ServerRequest.ts +47 -0
  649. package/bundle/src/codex-protocol/SessionSource.ts +15 -0
  650. package/bundle/src/codex-protocol/Settings.ts +13 -0
  651. package/bundle/src/codex-protocol/SubAgentSource.ts +20 -0
  652. package/bundle/src/codex-protocol/ThreadId.ts +5 -0
  653. package/bundle/src/codex-protocol/ThreadMemoryMode.ts +5 -0
  654. package/bundle/src/codex-protocol/Tool.ts +18 -0
  655. package/bundle/src/codex-protocol/Verbosity.ts +9 -0
  656. package/bundle/src/codex-protocol/WebSearchAction.ts +9 -0
  657. package/bundle/src/codex-protocol/WebSearchContextSize.ts +5 -0
  658. package/bundle/src/codex-protocol/WebSearchLocation.ts +10 -0
  659. package/bundle/src/codex-protocol/WebSearchMode.ts +5 -0
  660. package/bundle/src/codex-protocol/WebSearchToolConfig.ts +11 -0
  661. package/bundle/src/codex-protocol/index.ts +79 -0
  662. package/bundle/src/codex-protocol/serde_json/JsonValue.ts +11 -0
  663. package/bundle/src/codex-protocol/v2/Account.ts +9 -0
  664. package/bundle/src/codex-protocol/v2/AccountLoginCompletedNotification.ts +9 -0
  665. package/bundle/src/codex-protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
  666. package/bundle/src/codex-protocol/v2/AccountUpdatedNotification.ts +7 -0
  667. package/bundle/src/codex-protocol/v2/ActivePermissionProfile.ts +22 -0
  668. package/bundle/src/codex-protocol/v2/ActivePermissionProfileModification.ts +9 -0
  669. package/bundle/src/codex-protocol/v2/AddCreditsNudgeCreditType.ts +5 -0
  670. package/bundle/src/codex-protocol/v2/AddCreditsNudgeEmailStatus.ts +5 -0
  671. package/bundle/src/codex-protocol/v2/AdditionalFileSystemPermissions.ts +18 -0
  672. package/bundle/src/codex-protocol/v2/AdditionalNetworkPermissions.ts +5 -0
  673. package/bundle/src/codex-protocol/v2/AdditionalPermissionProfile.ts +13 -0
  674. package/bundle/src/codex-protocol/v2/AgentMessageDeltaNotification.ts +10 -0
  675. package/bundle/src/codex-protocol/v2/AnalyticsConfig.ts +14 -0
  676. package/bundle/src/codex-protocol/v2/AppBranding.ts +15 -0
  677. package/bundle/src/codex-protocol/v2/AppInfo.ts +32 -0
  678. package/bundle/src/codex-protocol/v2/AppListUpdatedNotification.ts +9 -0
  679. package/bundle/src/codex-protocol/v2/AppMetadata.ts +20 -0
  680. package/bundle/src/codex-protocol/v2/AppReview.ts +5 -0
  681. package/bundle/src/codex-protocol/v2/AppScreenshot.ts +5 -0
  682. package/bundle/src/codex-protocol/v2/AppSummary.ts +14 -0
  683. package/bundle/src/codex-protocol/v2/AppToolApproval.ts +5 -0
  684. package/bundle/src/codex-protocol/v2/AppToolsConfig.ts +8 -0
  685. package/bundle/src/codex-protocol/v2/ApprovalsReviewer.ts +12 -0
  686. package/bundle/src/codex-protocol/v2/AppsConfig.ts +17 -0
  687. package/bundle/src/codex-protocol/v2/AppsDefaultConfig.ts +9 -0
  688. package/bundle/src/codex-protocol/v2/AppsListParams.ts +25 -0
  689. package/bundle/src/codex-protocol/v2/AppsListResponse.ts +16 -0
  690. package/bundle/src/codex-protocol/v2/AskForApproval.ts +18 -0
  691. package/bundle/src/codex-protocol/v2/AutoReviewDecisionSource.ts +8 -0
  692. package/bundle/src/codex-protocol/v2/ByteRange.ts +5 -0
  693. package/bundle/src/codex-protocol/v2/CancelLoginAccountParams.ts +5 -0
  694. package/bundle/src/codex-protocol/v2/CancelLoginAccountResponse.ts +6 -0
  695. package/bundle/src/codex-protocol/v2/CancelLoginAccountStatus.ts +5 -0
  696. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshParams.ts +18 -0
  697. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshReason.ts +5 -0
  698. package/bundle/src/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.ts +9 -0
  699. package/bundle/src/codex-protocol/v2/CodexErrorInfo.ts +27 -0
  700. package/bundle/src/codex-protocol/v2/CollabAgentState.ts +6 -0
  701. package/bundle/src/codex-protocol/v2/CollabAgentStatus.ts +12 -0
  702. package/bundle/src/codex-protocol/v2/CollabAgentTool.ts +5 -0
  703. package/bundle/src/codex-protocol/v2/CollabAgentToolCallStatus.ts +5 -0
  704. package/bundle/src/codex-protocol/v2/CollaborationModeMask.ts +15 -0
  705. package/bundle/src/codex-protocol/v2/CommandAction.ts +10 -0
  706. package/bundle/src/codex-protocol/v2/CommandExecOutputDeltaNotification.ts +31 -0
  707. package/bundle/src/codex-protocol/v2/CommandExecOutputStream.ts +8 -0
  708. package/bundle/src/codex-protocol/v2/CommandExecParams.ts +87 -0
  709. package/bundle/src/codex-protocol/v2/CommandExecResizeParams.ts +19 -0
  710. package/bundle/src/codex-protocol/v2/CommandExecResizeResponse.ts +8 -0
  711. package/bundle/src/codex-protocol/v2/CommandExecResponse.ts +25 -0
  712. package/bundle/src/codex-protocol/v2/CommandExecTerminalSize.ts +17 -0
  713. package/bundle/src/codex-protocol/v2/CommandExecTerminateParams.ts +14 -0
  714. package/bundle/src/codex-protocol/v2/CommandExecTerminateResponse.ts +8 -0
  715. package/bundle/src/codex-protocol/v2/CommandExecWriteParams.ts +23 -0
  716. package/bundle/src/codex-protocol/v2/CommandExecWriteResponse.ts +8 -0
  717. package/bundle/src/codex-protocol/v2/CommandExecutionApprovalDecision.ts +13 -0
  718. package/bundle/src/codex-protocol/v2/CommandExecutionOutputDeltaNotification.ts +10 -0
  719. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalParams.ts +47 -0
  720. package/bundle/src/codex-protocol/v2/CommandExecutionRequestApprovalResponse.ts +8 -0
  721. package/bundle/src/codex-protocol/v2/CommandExecutionSource.ts +9 -0
  722. package/bundle/src/codex-protocol/v2/CommandExecutionStatus.ts +5 -0
  723. package/bundle/src/codex-protocol/v2/CommandMigration.ts +5 -0
  724. package/bundle/src/codex-protocol/v2/Config.ts +53 -0
  725. package/bundle/src/codex-protocol/v2/ConfigBatchWriteParams.ts +17 -0
  726. package/bundle/src/codex-protocol/v2/ConfigEdit.ts +7 -0
  727. package/bundle/src/codex-protocol/v2/ConfigLayer.ts +12 -0
  728. package/bundle/src/codex-protocol/v2/ConfigLayerMetadata.ts +6 -0
  729. package/bundle/src/codex-protocol/v2/ConfigLayerSource.ts +27 -0
  730. package/bundle/src/codex-protocol/v2/ConfigReadParams.ts +13 -0
  731. package/bundle/src/codex-protocol/v2/ConfigReadResponse.ts +12 -0
  732. package/bundle/src/codex-protocol/v2/ConfigRequirements.ts +15 -0
  733. package/bundle/src/codex-protocol/v2/ConfigRequirementsReadResponse.ts +11 -0
  734. package/bundle/src/codex-protocol/v2/ConfigValueWriteParams.ts +16 -0
  735. package/bundle/src/codex-protocol/v2/ConfigWarningNotification.ts +23 -0
  736. package/bundle/src/codex-protocol/v2/ConfigWriteResponse.ts +16 -0
  737. package/bundle/src/codex-protocol/v2/ConfiguredHookHandler.ts +14 -0
  738. package/bundle/src/codex-protocol/v2/ConfiguredHookMatcherGroup.ts +9 -0
  739. package/bundle/src/codex-protocol/v2/ContextCompactedNotification.ts +8 -0
  740. package/bundle/src/codex-protocol/v2/CreditsSnapshot.ts +5 -0
  741. package/bundle/src/codex-protocol/v2/DeprecationNoticeNotification.ts +14 -0
  742. package/bundle/src/codex-protocol/v2/DynamicToolCallOutputContentItem.ts +7 -0
  743. package/bundle/src/codex-protocol/v2/DynamicToolCallParams.ts +13 -0
  744. package/bundle/src/codex-protocol/v2/DynamicToolCallResponse.ts +9 -0
  745. package/bundle/src/codex-protocol/v2/DynamicToolCallStatus.ts +5 -0
  746. package/bundle/src/codex-protocol/v2/DynamicToolSpec.ts +12 -0
  747. package/bundle/src/codex-protocol/v2/ErrorNotification.ts +11 -0
  748. package/bundle/src/codex-protocol/v2/ExecPolicyAmendment.ts +5 -0
  749. package/bundle/src/codex-protocol/v2/ExperimentalFeature.ts +38 -0
  750. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.ts +13 -0
  751. package/bundle/src/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.ts +10 -0
  752. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListParams.ts +14 -0
  753. package/bundle/src/codex-protocol/v2/ExperimentalFeatureListResponse.ts +13 -0
  754. package/bundle/src/codex-protocol/v2/ExperimentalFeatureStage.ts +10 -0
  755. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectParams.ts +14 -0
  756. package/bundle/src/codex-protocol/v2/ExternalAgentConfigDetectResponse.ts +6 -0
  757. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.ts +5 -0
  758. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportParams.ts +8 -0
  759. package/bundle/src/codex-protocol/v2/ExternalAgentConfigImportResponse.ts +5 -0
  760. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItem.ts +15 -0
  761. package/bundle/src/codex-protocol/v2/ExternalAgentConfigMigrationItemType.ts +14 -0
  762. package/bundle/src/codex-protocol/v2/FeedbackUploadParams.ts +12 -0
  763. package/bundle/src/codex-protocol/v2/FeedbackUploadResponse.ts +5 -0
  764. package/bundle/src/codex-protocol/v2/FileChangeApprovalDecision.ts +5 -0
  765. package/bundle/src/codex-protocol/v2/FileChangeOutputDeltaNotification.ts +15 -0
  766. package/bundle/src/codex-protocol/v2/FileChangePatchUpdatedNotification.ts +11 -0
  767. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalParams.ts +22 -0
  768. package/bundle/src/codex-protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
  769. package/bundle/src/codex-protocol/v2/FileSystemAccessMode.ts +5 -0
  770. package/bundle/src/codex-protocol/v2/FileSystemPath.ts +10 -0
  771. package/bundle/src/codex-protocol/v2/FileSystemSandboxEntry.ts +7 -0
  772. package/bundle/src/codex-protocol/v2/FileSystemSpecialPath.ts +11 -0
  773. package/bundle/src/codex-protocol/v2/FileUpdateChange.ts +6 -0
  774. package/bundle/src/codex-protocol/v2/FsChangedNotification.ts +18 -0
  775. package/bundle/src/codex-protocol/v2/FsCopyParams.ts +22 -0
  776. package/bundle/src/codex-protocol/v2/FsCopyResponse.ts +8 -0
  777. package/bundle/src/codex-protocol/v2/FsCreateDirectoryParams.ts +18 -0
  778. package/bundle/src/codex-protocol/v2/FsCreateDirectoryResponse.ts +8 -0
  779. package/bundle/src/codex-protocol/v2/FsGetMetadataParams.ts +14 -0
  780. package/bundle/src/codex-protocol/v2/FsGetMetadataResponse.ts +29 -0
  781. package/bundle/src/codex-protocol/v2/FsReadDirectoryEntry.ts +21 -0
  782. package/bundle/src/codex-protocol/v2/FsReadDirectoryParams.ts +14 -0
  783. package/bundle/src/codex-protocol/v2/FsReadDirectoryResponse.ts +14 -0
  784. package/bundle/src/codex-protocol/v2/FsReadFileParams.ts +14 -0
  785. package/bundle/src/codex-protocol/v2/FsReadFileResponse.ts +13 -0
  786. package/bundle/src/codex-protocol/v2/FsRemoveParams.ts +22 -0
  787. package/bundle/src/codex-protocol/v2/FsRemoveResponse.ts +8 -0
  788. package/bundle/src/codex-protocol/v2/FsUnwatchParams.ts +13 -0
  789. package/bundle/src/codex-protocol/v2/FsUnwatchResponse.ts +8 -0
  790. package/bundle/src/codex-protocol/v2/FsWatchParams.ts +18 -0
  791. package/bundle/src/codex-protocol/v2/FsWatchResponse.ts +14 -0
  792. package/bundle/src/codex-protocol/v2/FsWriteFileParams.ts +18 -0
  793. package/bundle/src/codex-protocol/v2/FsWriteFileResponse.ts +8 -0
  794. package/bundle/src/codex-protocol/v2/GetAccountParams.ts +14 -0
  795. package/bundle/src/codex-protocol/v2/GetAccountRateLimitsResponse.ts +15 -0
  796. package/bundle/src/codex-protocol/v2/GetAccountResponse.ts +6 -0
  797. package/bundle/src/codex-protocol/v2/GitInfo.ts +5 -0
  798. package/bundle/src/codex-protocol/v2/GrantedPermissionProfile.ts +10 -0
  799. package/bundle/src/codex-protocol/v2/GuardianApprovalReview.ts +18 -0
  800. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewAction.ts +34 -0
  801. package/bundle/src/codex-protocol/v2/GuardianApprovalReviewStatus.ts +13 -0
  802. package/bundle/src/codex-protocol/v2/GuardianCommandSource.ts +5 -0
  803. package/bundle/src/codex-protocol/v2/GuardianRiskLevel.ts +8 -0
  804. package/bundle/src/codex-protocol/v2/GuardianUserAuthorization.ts +8 -0
  805. package/bundle/src/codex-protocol/v2/GuardianWarningNotification.ts +14 -0
  806. package/bundle/src/codex-protocol/v2/HookCompletedNotification.ts +10 -0
  807. package/bundle/src/codex-protocol/v2/HookErrorInfo.ts +5 -0
  808. package/bundle/src/codex-protocol/v2/HookEventName.ts +13 -0
  809. package/bundle/src/codex-protocol/v2/HookExecutionMode.ts +5 -0
  810. package/bundle/src/codex-protocol/v2/HookHandlerType.ts +5 -0
  811. package/bundle/src/codex-protocol/v2/HookMetadata.ts +26 -0
  812. package/bundle/src/codex-protocol/v2/HookMigration.ts +5 -0
  813. package/bundle/src/codex-protocol/v2/HookOutputEntry.ts +6 -0
  814. package/bundle/src/codex-protocol/v2/HookOutputEntryKind.ts +5 -0
  815. package/bundle/src/codex-protocol/v2/HookPromptFragment.ts +5 -0
  816. package/bundle/src/codex-protocol/v2/HookRunStatus.ts +5 -0
  817. package/bundle/src/codex-protocol/v2/HookRunSummary.ts +28 -0
  818. package/bundle/src/codex-protocol/v2/HookScope.ts +5 -0
  819. package/bundle/src/codex-protocol/v2/HookSource.ts +15 -0
  820. package/bundle/src/codex-protocol/v2/HookStartedNotification.ts +10 -0
  821. package/bundle/src/codex-protocol/v2/HookTrustStatus.ts +5 -0
  822. package/bundle/src/codex-protocol/v2/HooksListEntry.ts +12 -0
  823. package/bundle/src/codex-protocol/v2/HooksListParams.ts +10 -0
  824. package/bundle/src/codex-protocol/v2/HooksListResponse.ts +6 -0
  825. package/bundle/src/codex-protocol/v2/ItemCompletedNotification.ts +14 -0
  826. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.ts +44 -0
  827. package/bundle/src/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.ts +38 -0
  828. package/bundle/src/codex-protocol/v2/ItemStartedNotification.ts +14 -0
  829. package/bundle/src/codex-protocol/v2/ListMcpServerStatusParams.ts +20 -0
  830. package/bundle/src/codex-protocol/v2/ListMcpServerStatusResponse.ts +13 -0
  831. package/bundle/src/codex-protocol/v2/LoginAccountParams.ts +27 -0
  832. package/bundle/src/codex-protocol/v2/LoginAccountResponse.ts +27 -0
  833. package/bundle/src/codex-protocol/v2/LogoutAccountResponse.ts +5 -0
  834. package/bundle/src/codex-protocol/v2/ManagedHooksRequirements.ts +17 -0
  835. package/bundle/src/codex-protocol/v2/MarketplaceAddParams.ts +9 -0
  836. package/bundle/src/codex-protocol/v2/MarketplaceAddResponse.ts +10 -0
  837. package/bundle/src/codex-protocol/v2/MarketplaceInterface.ts +5 -0
  838. package/bundle/src/codex-protocol/v2/MarketplaceLoadErrorInfo.ts +6 -0
  839. package/bundle/src/codex-protocol/v2/MarketplaceRemoveParams.ts +5 -0
  840. package/bundle/src/codex-protocol/v2/MarketplaceRemoveResponse.ts +9 -0
  841. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeErrorInfo.ts +5 -0
  842. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeParams.ts +5 -0
  843. package/bundle/src/codex-protocol/v2/MarketplaceUpgradeResponse.ts +11 -0
  844. package/bundle/src/codex-protocol/v2/McpAuthStatus.ts +5 -0
  845. package/bundle/src/codex-protocol/v2/McpElicitationArrayType.ts +5 -0
  846. package/bundle/src/codex-protocol/v2/McpElicitationBooleanSchema.ts +11 -0
  847. package/bundle/src/codex-protocol/v2/McpElicitationBooleanType.ts +5 -0
  848. package/bundle/src/codex-protocol/v2/McpElicitationConstOption.ts +5 -0
  849. package/bundle/src/codex-protocol/v2/McpElicitationEnumSchema.ts +11 -0
  850. package/bundle/src/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.ts +13 -0
  851. package/bundle/src/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.ts +9 -0
  852. package/bundle/src/codex-protocol/v2/McpElicitationNumberSchema.ts +13 -0
  853. package/bundle/src/codex-protocol/v2/McpElicitationNumberType.ts +5 -0
  854. package/bundle/src/codex-protocol/v2/McpElicitationObjectType.ts +5 -0
  855. package/bundle/src/codex-protocol/v2/McpElicitationPrimitiveSchema.ts +13 -0
  856. package/bundle/src/codex-protocol/v2/McpElicitationSchema.ts +18 -0
  857. package/bundle/src/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.ts +9 -0
  858. package/bundle/src/codex-protocol/v2/McpElicitationStringFormat.ts +5 -0
  859. package/bundle/src/codex-protocol/v2/McpElicitationStringSchema.ts +15 -0
  860. package/bundle/src/codex-protocol/v2/McpElicitationStringType.ts +5 -0
  861. package/bundle/src/codex-protocol/v2/McpElicitationTitledEnumItems.ts +6 -0
  862. package/bundle/src/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.ts +15 -0
  863. package/bundle/src/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.ts +13 -0
  864. package/bundle/src/codex-protocol/v2/McpElicitationUntitledEnumItems.ts +9 -0
  865. package/bundle/src/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.ts +15 -0
  866. package/bundle/src/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.ts +12 -0
  867. package/bundle/src/codex-protocol/v2/McpResourceReadParams.ts +5 -0
  868. package/bundle/src/codex-protocol/v2/McpResourceReadResponse.ts +6 -0
  869. package/bundle/src/codex-protocol/v2/McpServerElicitationAction.ts +5 -0
  870. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestParams.ts +27 -0
  871. package/bundle/src/codex-protocol/v2/McpServerElicitationRequestResponse.ts +19 -0
  872. package/bundle/src/codex-protocol/v2/McpServerMigration.ts +5 -0
  873. package/bundle/src/codex-protocol/v2/McpServerOauthLoginCompletedNotification.ts +9 -0
  874. package/bundle/src/codex-protocol/v2/McpServerOauthLoginParams.ts +9 -0
  875. package/bundle/src/codex-protocol/v2/McpServerOauthLoginResponse.ts +5 -0
  876. package/bundle/src/codex-protocol/v2/McpServerRefreshResponse.ts +5 -0
  877. package/bundle/src/codex-protocol/v2/McpServerStartupState.ts +5 -0
  878. package/bundle/src/codex-protocol/v2/McpServerStatus.ts +15 -0
  879. package/bundle/src/codex-protocol/v2/McpServerStatusDetail.ts +5 -0
  880. package/bundle/src/codex-protocol/v2/McpServerStatusUpdatedNotification.ts +10 -0
  881. package/bundle/src/codex-protocol/v2/McpServerToolCallParams.ts +12 -0
  882. package/bundle/src/codex-protocol/v2/McpServerToolCallResponse.ts +11 -0
  883. package/bundle/src/codex-protocol/v2/McpToolCallError.ts +5 -0
  884. package/bundle/src/codex-protocol/v2/McpToolCallProgressNotification.ts +10 -0
  885. package/bundle/src/codex-protocol/v2/McpToolCallResult.ts +10 -0
  886. package/bundle/src/codex-protocol/v2/McpToolCallStatus.ts +5 -0
  887. package/bundle/src/codex-protocol/v2/MemoryCitation.ts +6 -0
  888. package/bundle/src/codex-protocol/v2/MemoryCitationEntry.ts +10 -0
  889. package/bundle/src/codex-protocol/v2/MergeStrategy.ts +5 -0
  890. package/bundle/src/codex-protocol/v2/MigrationDetails.ts +18 -0
  891. package/bundle/src/codex-protocol/v2/Model.ts +30 -0
  892. package/bundle/src/codex-protocol/v2/ModelAvailabilityNux.ts +5 -0
  893. package/bundle/src/codex-protocol/v2/ModelListParams.ts +18 -0
  894. package/bundle/src/codex-protocol/v2/ModelListResponse.ts +13 -0
  895. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadParams.ts +5 -0
  896. package/bundle/src/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.ts +9 -0
  897. package/bundle/src/codex-protocol/v2/ModelRerouteReason.ts +5 -0
  898. package/bundle/src/codex-protocol/v2/ModelReroutedNotification.ts +12 -0
  899. package/bundle/src/codex-protocol/v2/ModelServiceTier.ts +5 -0
  900. package/bundle/src/codex-protocol/v2/ModelUpgradeInfo.ts +10 -0
  901. package/bundle/src/codex-protocol/v2/ModelVerification.ts +5 -0
  902. package/bundle/src/codex-protocol/v2/ModelVerificationNotification.ts +10 -0
  903. package/bundle/src/codex-protocol/v2/NetworkAccess.ts +5 -0
  904. package/bundle/src/codex-protocol/v2/NetworkApprovalContext.ts +6 -0
  905. package/bundle/src/codex-protocol/v2/NetworkApprovalProtocol.ts +5 -0
  906. package/bundle/src/codex-protocol/v2/NetworkDomainPermission.ts +5 -0
  907. package/bundle/src/codex-protocol/v2/NetworkPolicyAmendment.ts +6 -0
  908. package/bundle/src/codex-protocol/v2/NetworkPolicyRuleAction.ts +5 -0
  909. package/bundle/src/codex-protocol/v2/NetworkRequirements.ts +40 -0
  910. package/bundle/src/codex-protocol/v2/NetworkUnixSocketPermission.ts +5 -0
  911. package/bundle/src/codex-protocol/v2/NonSteerableTurnKind.ts +5 -0
  912. package/bundle/src/codex-protocol/v2/OverriddenMetadata.ts +11 -0
  913. package/bundle/src/codex-protocol/v2/PatchApplyStatus.ts +5 -0
  914. package/bundle/src/codex-protocol/v2/PatchChangeKind.ts +8 -0
  915. package/bundle/src/codex-protocol/v2/PermissionGrantScope.ts +5 -0
  916. package/bundle/src/codex-protocol/v2/PermissionProfile.ts +14 -0
  917. package/bundle/src/codex-protocol/v2/PermissionProfileFileSystemPermissions.ts +8 -0
  918. package/bundle/src/codex-protocol/v2/PermissionProfileModificationParams.ts +9 -0
  919. package/bundle/src/codex-protocol/v2/PermissionProfileNetworkPermissions.ts +5 -0
  920. package/bundle/src/codex-protocol/v2/PermissionProfileSelectionParams.ts +10 -0
  921. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalParams.ts +18 -0
  922. package/bundle/src/codex-protocol/v2/PermissionsRequestApprovalResponse.ts +14 -0
  923. package/bundle/src/codex-protocol/v2/PlanDeltaNotification.ts +14 -0
  924. package/bundle/src/codex-protocol/v2/PluginAuthPolicy.ts +5 -0
  925. package/bundle/src/codex-protocol/v2/PluginAvailability.ts +5 -0
  926. package/bundle/src/codex-protocol/v2/PluginDetail.ts +19 -0
  927. package/bundle/src/codex-protocol/v2/PluginHookSummary.ts +6 -0
  928. package/bundle/src/codex-protocol/v2/PluginInstallParams.ts +10 -0
  929. package/bundle/src/codex-protocol/v2/PluginInstallPolicy.ts +5 -0
  930. package/bundle/src/codex-protocol/v2/PluginInstallResponse.ts +10 -0
  931. package/bundle/src/codex-protocol/v2/PluginInterface.ts +46 -0
  932. package/bundle/src/codex-protocol/v2/PluginListMarketplaceKind.ts +5 -0
  933. package/bundle/src/codex-protocol/v2/PluginListParams.ts +18 -0
  934. package/bundle/src/codex-protocol/v2/PluginListResponse.ts +11 -0
  935. package/bundle/src/codex-protocol/v2/PluginMarketplaceEntry.ts +17 -0
  936. package/bundle/src/codex-protocol/v2/PluginReadParams.ts +10 -0
  937. package/bundle/src/codex-protocol/v2/PluginReadResponse.ts +6 -0
  938. package/bundle/src/codex-protocol/v2/PluginShareContext.ts +12 -0
  939. package/bundle/src/codex-protocol/v2/PluginShareDeleteParams.ts +5 -0
  940. package/bundle/src/codex-protocol/v2/PluginShareDeleteResponse.ts +5 -0
  941. package/bundle/src/codex-protocol/v2/PluginShareDiscoverability.ts +5 -0
  942. package/bundle/src/codex-protocol/v2/PluginShareListItem.ts +11 -0
  943. package/bundle/src/codex-protocol/v2/PluginShareListParams.ts +5 -0
  944. package/bundle/src/codex-protocol/v2/PluginShareListResponse.ts +6 -0
  945. package/bundle/src/codex-protocol/v2/PluginSharePrincipal.ts +10 -0
  946. package/bundle/src/codex-protocol/v2/PluginSharePrincipalType.ts +5 -0
  947. package/bundle/src/codex-protocol/v2/PluginShareSaveParams.ts +13 -0
  948. package/bundle/src/codex-protocol/v2/PluginShareSaveResponse.ts +5 -0
  949. package/bundle/src/codex-protocol/v2/PluginShareTarget.ts +6 -0
  950. package/bundle/src/codex-protocol/v2/PluginShareUpdateDiscoverability.ts +5 -0
  951. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsParams.ts +11 -0
  952. package/bundle/src/codex-protocol/v2/PluginShareUpdateTargetsResponse.ts +10 -0
  953. package/bundle/src/codex-protocol/v2/PluginSkillReadParams.ts +9 -0
  954. package/bundle/src/codex-protocol/v2/PluginSkillReadResponse.ts +5 -0
  955. package/bundle/src/codex-protocol/v2/PluginSource.ts +9 -0
  956. package/bundle/src/codex-protocol/v2/PluginSummary.ts +29 -0
  957. package/bundle/src/codex-protocol/v2/PluginUninstallParams.ts +5 -0
  958. package/bundle/src/codex-protocol/v2/PluginUninstallResponse.ts +5 -0
  959. package/bundle/src/codex-protocol/v2/PluginsMigration.ts +5 -0
  960. package/bundle/src/codex-protocol/v2/ProcessExitedNotification.ts +43 -0
  961. package/bundle/src/codex-protocol/v2/ProcessOutputDeltaNotification.ts +27 -0
  962. package/bundle/src/codex-protocol/v2/ProcessOutputStream.ts +8 -0
  963. package/bundle/src/codex-protocol/v2/ProcessTerminalSize.ts +17 -0
  964. package/bundle/src/codex-protocol/v2/ProfileV2.ts +37 -0
  965. package/bundle/src/codex-protocol/v2/RateLimitReachedType.ts +10 -0
  966. package/bundle/src/codex-protocol/v2/RateLimitSnapshot.ts +17 -0
  967. package/bundle/src/codex-protocol/v2/RateLimitWindow.ts +9 -0
  968. package/bundle/src/codex-protocol/v2/RawResponseItemCompletedNotification.ts +10 -0
  969. package/bundle/src/codex-protocol/v2/ReasoningEffortOption.ts +6 -0
  970. package/bundle/src/codex-protocol/v2/ReasoningSummaryPartAddedNotification.ts +10 -0
  971. package/bundle/src/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.ts +11 -0
  972. package/bundle/src/codex-protocol/v2/ReasoningTextDeltaNotification.ts +11 -0
  973. package/bundle/src/codex-protocol/v2/RemoteControlConnectionStatus.ts +5 -0
  974. package/bundle/src/codex-protocol/v2/RemoteControlStatusChangedNotification.ts +12 -0
  975. package/bundle/src/codex-protocol/v2/RequestPermissionProfile.ts +10 -0
  976. package/bundle/src/codex-protocol/v2/ResidencyRequirement.ts +5 -0
  977. package/bundle/src/codex-protocol/v2/ReviewDelivery.ts +5 -0
  978. package/bundle/src/codex-protocol/v2/ReviewStartParams.ts +15 -0
  979. package/bundle/src/codex-protocol/v2/ReviewStartResponse.ts +15 -0
  980. package/bundle/src/codex-protocol/v2/ReviewTarget.ts +16 -0
  981. package/bundle/src/codex-protocol/v2/SandboxMode.ts +5 -0
  982. package/bundle/src/codex-protocol/v2/SandboxPolicy.ts +17 -0
  983. package/bundle/src/codex-protocol/v2/SandboxWorkspaceWrite.ts +10 -0
  984. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailParams.ts +6 -0
  985. package/bundle/src/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.ts +6 -0
  986. package/bundle/src/codex-protocol/v2/ServerRequestResolvedNotification.ts +6 -0
  987. package/bundle/src/codex-protocol/v2/SessionMigration.ts +5 -0
  988. package/bundle/src/codex-protocol/v2/SessionSource.ts +13 -0
  989. package/bundle/src/codex-protocol/v2/SkillDependencies.ts +6 -0
  990. package/bundle/src/codex-protocol/v2/SkillErrorInfo.ts +5 -0
  991. package/bundle/src/codex-protocol/v2/SkillInterface.ts +13 -0
  992. package/bundle/src/codex-protocol/v2/SkillMetadata.ts +21 -0
  993. package/bundle/src/codex-protocol/v2/SkillScope.ts +5 -0
  994. package/bundle/src/codex-protocol/v2/SkillSummary.ts +14 -0
  995. package/bundle/src/codex-protocol/v2/SkillToolDependency.ts +12 -0
  996. package/bundle/src/codex-protocol/v2/SkillsChangedNotification.ts +11 -0
  997. package/bundle/src/codex-protocol/v2/SkillsConfigWriteParams.ts +16 -0
  998. package/bundle/src/codex-protocol/v2/SkillsConfigWriteResponse.ts +5 -0
  999. package/bundle/src/codex-protocol/v2/SkillsListEntry.ts +11 -0
  1000. package/bundle/src/codex-protocol/v2/SkillsListParams.ts +14 -0
  1001. package/bundle/src/codex-protocol/v2/SkillsListResponse.ts +6 -0
  1002. package/bundle/src/codex-protocol/v2/SortDirection.ts +5 -0
  1003. package/bundle/src/codex-protocol/v2/SubagentMigration.ts +5 -0
  1004. package/bundle/src/codex-protocol/v2/TerminalInteractionNotification.ts +11 -0
  1005. package/bundle/src/codex-protocol/v2/TextElement.ts +15 -0
  1006. package/bundle/src/codex-protocol/v2/TextPosition.ts +14 -0
  1007. package/bundle/src/codex-protocol/v2/TextRange.ts +6 -0
  1008. package/bundle/src/codex-protocol/v2/Thread.ts +88 -0
  1009. package/bundle/src/codex-protocol/v2/ThreadActiveFlag.ts +5 -0
  1010. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.ts +12 -0
  1011. package/bundle/src/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.ts +5 -0
  1012. package/bundle/src/codex-protocol/v2/ThreadArchiveParams.ts +5 -0
  1013. package/bundle/src/codex-protocol/v2/ThreadArchiveResponse.ts +5 -0
  1014. package/bundle/src/codex-protocol/v2/ThreadArchivedNotification.ts +5 -0
  1015. package/bundle/src/codex-protocol/v2/ThreadClosedNotification.ts +5 -0
  1016. package/bundle/src/codex-protocol/v2/ThreadCompactStartParams.ts +5 -0
  1017. package/bundle/src/codex-protocol/v2/ThreadCompactStartResponse.ts +5 -0
  1018. package/bundle/src/codex-protocol/v2/ThreadForkParams.ts +40 -0
  1019. package/bundle/src/codex-protocol/v2/ThreadForkResponse.ts +30 -0
  1020. package/bundle/src/codex-protocol/v2/ThreadGoal.ts +15 -0
  1021. package/bundle/src/codex-protocol/v2/ThreadGoalClearedNotification.ts +5 -0
  1022. package/bundle/src/codex-protocol/v2/ThreadGoalStatus.ts +5 -0
  1023. package/bundle/src/codex-protocol/v2/ThreadGoalUpdatedNotification.ts +10 -0
  1024. package/bundle/src/codex-protocol/v2/ThreadInjectItemsParams.ts +12 -0
  1025. package/bundle/src/codex-protocol/v2/ThreadInjectItemsResponse.ts +5 -0
  1026. package/bundle/src/codex-protocol/v2/ThreadItem.ts +156 -0
  1027. package/bundle/src/codex-protocol/v2/ThreadListParams.ts +55 -0
  1028. package/bundle/src/codex-protocol/v2/ThreadListResponse.ts +20 -0
  1029. package/bundle/src/codex-protocol/v2/ThreadLoadedListParams.ts +14 -0
  1030. package/bundle/src/codex-protocol/v2/ThreadLoadedListResponse.ts +15 -0
  1031. package/bundle/src/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.ts +21 -0
  1032. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateParams.ts +14 -0
  1033. package/bundle/src/codex-protocol/v2/ThreadMetadataUpdateResponse.ts +6 -0
  1034. package/bundle/src/codex-protocol/v2/ThreadNameUpdatedNotification.ts +5 -0
  1035. package/bundle/src/codex-protocol/v2/ThreadReadParams.ts +11 -0
  1036. package/bundle/src/codex-protocol/v2/ThreadReadResponse.ts +6 -0
  1037. package/bundle/src/codex-protocol/v2/ThreadRealtimeAudioChunk.ts +14 -0
  1038. package/bundle/src/codex-protocol/v2/ThreadRealtimeClosedNotification.ts +8 -0
  1039. package/bundle/src/codex-protocol/v2/ThreadRealtimeErrorNotification.ts +8 -0
  1040. package/bundle/src/codex-protocol/v2/ThreadRealtimeItemAddedNotification.ts +9 -0
  1041. package/bundle/src/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.ts +12 -0
  1042. package/bundle/src/codex-protocol/v2/ThreadRealtimeSdpNotification.ts +8 -0
  1043. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartTransport.ts +17 -0
  1044. package/bundle/src/codex-protocol/v2/ThreadRealtimeStartedNotification.ts +13 -0
  1045. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.ts +16 -0
  1046. package/bundle/src/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.ts +16 -0
  1047. package/bundle/src/codex-protocol/v2/ThreadResumeParams.ts +39 -0
  1048. package/bundle/src/codex-protocol/v2/ThreadResumeResponse.ts +30 -0
  1049. package/bundle/src/codex-protocol/v2/ThreadRollbackParams.ts +14 -0
  1050. package/bundle/src/codex-protocol/v2/ThreadRollbackResponse.ts +15 -0
  1051. package/bundle/src/codex-protocol/v2/ThreadSetNameParams.ts +5 -0
  1052. package/bundle/src/codex-protocol/v2/ThreadSetNameResponse.ts +5 -0
  1053. package/bundle/src/codex-protocol/v2/ThreadShellCommandParams.ts +14 -0
  1054. package/bundle/src/codex-protocol/v2/ThreadShellCommandResponse.ts +5 -0
  1055. package/bundle/src/codex-protocol/v2/ThreadSortKey.ts +5 -0
  1056. package/bundle/src/codex-protocol/v2/ThreadSource.ts +5 -0
  1057. package/bundle/src/codex-protocol/v2/ThreadSourceKind.ts +15 -0
  1058. package/bundle/src/codex-protocol/v2/ThreadStartParams.ts +33 -0
  1059. package/bundle/src/codex-protocol/v2/ThreadStartResponse.ts +30 -0
  1060. package/bundle/src/codex-protocol/v2/ThreadStartSource.ts +5 -0
  1061. package/bundle/src/codex-protocol/v2/ThreadStartedNotification.ts +6 -0
  1062. package/bundle/src/codex-protocol/v2/ThreadStatus.ts +10 -0
  1063. package/bundle/src/codex-protocol/v2/ThreadStatusChangedNotification.ts +6 -0
  1064. package/bundle/src/codex-protocol/v2/ThreadTokenUsage.ts +10 -0
  1065. package/bundle/src/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.ts +10 -0
  1066. package/bundle/src/codex-protocol/v2/ThreadUnarchiveParams.ts +5 -0
  1067. package/bundle/src/codex-protocol/v2/ThreadUnarchiveResponse.ts +6 -0
  1068. package/bundle/src/codex-protocol/v2/ThreadUnarchivedNotification.ts +5 -0
  1069. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeParams.ts +5 -0
  1070. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeResponse.ts +6 -0
  1071. package/bundle/src/codex-protocol/v2/ThreadUnsubscribeStatus.ts +5 -0
  1072. package/bundle/src/codex-protocol/v2/TokenUsageBreakdown.ts +11 -0
  1073. package/bundle/src/codex-protocol/v2/ToolRequestUserInputAnswer.ts +8 -0
  1074. package/bundle/src/codex-protocol/v2/ToolRequestUserInputOption.ts +8 -0
  1075. package/bundle/src/codex-protocol/v2/ToolRequestUserInputParams.ts +14 -0
  1076. package/bundle/src/codex-protocol/v2/ToolRequestUserInputQuestion.ts +16 -0
  1077. package/bundle/src/codex-protocol/v2/ToolRequestUserInputResponse.ts +11 -0
  1078. package/bundle/src/codex-protocol/v2/ToolsV2.ts +6 -0
  1079. package/bundle/src/codex-protocol/v2/Turn.ts +36 -0
  1080. package/bundle/src/codex-protocol/v2/TurnCompletedNotification.ts +6 -0
  1081. package/bundle/src/codex-protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
  1082. package/bundle/src/codex-protocol/v2/TurnEnvironmentParams.ts +6 -0
  1083. package/bundle/src/codex-protocol/v2/TurnError.ts +10 -0
  1084. package/bundle/src/codex-protocol/v2/TurnInterruptParams.ts +5 -0
  1085. package/bundle/src/codex-protocol/v2/TurnInterruptResponse.ts +5 -0
  1086. package/bundle/src/codex-protocol/v2/TurnItemsView.ts +5 -0
  1087. package/bundle/src/codex-protocol/v2/TurnPlanStep.ts +6 -0
  1088. package/bundle/src/codex-protocol/v2/TurnPlanStepStatus.ts +5 -0
  1089. package/bundle/src/codex-protocol/v2/TurnPlanUpdatedNotification.ts +11 -0
  1090. package/bundle/src/codex-protocol/v2/TurnStartParams.ts +48 -0
  1091. package/bundle/src/codex-protocol/v2/TurnStartResponse.ts +6 -0
  1092. package/bundle/src/codex-protocol/v2/TurnStartedNotification.ts +6 -0
  1093. package/bundle/src/codex-protocol/v2/TurnStatus.ts +5 -0
  1094. package/bundle/src/codex-protocol/v2/TurnSteerParams.ts +13 -0
  1095. package/bundle/src/codex-protocol/v2/TurnSteerResponse.ts +5 -0
  1096. package/bundle/src/codex-protocol/v2/UserInput.ts +18 -0
  1097. package/bundle/src/codex-protocol/v2/WarningNotification.ts +14 -0
  1098. package/bundle/src/codex-protocol/v2/WebSearchAction.ts +9 -0
  1099. package/bundle/src/codex-protocol/v2/WindowsSandboxReadiness.ts +5 -0
  1100. package/bundle/src/codex-protocol/v2/WindowsSandboxReadinessResponse.ts +6 -0
  1101. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.ts +10 -0
  1102. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupMode.ts +5 -0
  1103. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartParams.ts +10 -0
  1104. package/bundle/src/codex-protocol/v2/WindowsSandboxSetupStartResponse.ts +5 -0
  1105. package/bundle/src/codex-protocol/v2/WindowsWorldWritableWarningNotification.ts +9 -0
  1106. package/bundle/src/codex-protocol/v2/WriteStatus.ts +5 -0
  1107. package/bundle/src/codex-protocol/v2/index.ts +446 -0
  1108. package/bundle/src/i18n/sd.generated.ts +36 -4
  1109. package/bundle/src/migrations/20260518145411_alter_tokens_add2_drop4_alter1.ts +23 -0
  1110. package/bundle/src/migrations/20260520112853_alter_request_logs_add3_alter1.ts +17 -0
  1111. package/bundle/src/migrations/20260520124755_alter_request_logs_drop1_alter1.ts +15 -0
  1112. package/bundle/src/migrations/20260520130420_create__request_log_steps.ts +33 -0
  1113. package/bundle/src/migrations/20260520134908_alter_request_logs_add2_alter8.ts +44 -0
  1114. package/bundle/src/migrations/20260520134909_alter_request_log_steps_add1_alter3.ts +23 -0
  1115. package/bundle/src/migrations/20260520141449_alter_request_logs_add1_alter1.ts +15 -0
  1116. package/bundle/src/migrations/20260521134025_alter_request_log_steps_alter1.ts +13 -0
  1117. package/bundle/src/migrations/20260521134026_alter_request_log_steps_foreigns.ts +17 -0
  1118. package/bundle/src/migrations/20260522181721_alter_request_log_steps_add2_alter1.ts +16 -0
  1119. package/bundle/src/sonamu.config.ts +50 -51
  1120. package/bundle/src/typings/sonamu.d.ts +1 -1
  1121. package/bundle/src/utils/providers/common/credentials.ts +26 -0
  1122. package/bundle/src/utils/providers/common/model-cost.ts +65 -0
  1123. package/bundle/src/utils/providers/common/provider-dispatcher.ts +36 -0
  1124. package/bundle/src/utils/providers/common/strictifier.ts +128 -0
  1125. package/bundle/src/utils/providers/common/token-picker.ts +18 -0
  1126. package/bundle/src/utils/providers/openai/codex-rpc.ts +236 -0
  1127. package/bundle/src/utils/providers/openai/codex-worker.ts +469 -0
  1128. package/bundle/src/utils/providers/openai/openai-constants.ts +5 -0
  1129. package/bundle/src/utils/providers/openai/openai-dispatcher.ts +453 -0
  1130. package/bundle/src/utils/providers/openai/openai-refresh.ts +134 -0
  1131. package/bundle/web-dist/client/assets/index-B5DSo5uH.css +1 -0
  1132. package/bundle/web-dist/client/assets/index-ZV-tHpAg.js +78 -0
  1133. package/bundle/web-dist/client/assets/logs-HJYkbqom.js +1 -0
  1134. package/bundle/web-dist/client/assets/routes-BMRwPj6F.js +5 -0
  1135. package/bundle/web-dist/client/assets/sd.generated-7jzAQL2_.js +51 -0
  1136. package/bundle/web-dist/client/assets/services.generated-Bx1Eh7ot.js +1 -0
  1137. package/bundle/web-dist/client/assets/{show-WxeogUIk.js → show-DI6iWDzV.js} +3 -2
  1138. package/bundle/web-dist/client/assets/tokens-Cg1f0Ga2.js +1 -0
  1139. package/bundle/web-dist/client/index.html +3 -3
  1140. package/bundle/web-dist/server/assets/{lazyRouteComponent-CcyhCAoL.js → lazyRouteComponent-BEaI4mOq.js} +2 -2
  1141. package/bundle/web-dist/server/assets/logs-Xt934T5f.js +371 -0
  1142. package/bundle/web-dist/server/assets/{routes-DQh4d03H.js → routes-B7QYbNIv.js} +149 -92
  1143. package/bundle/web-dist/server/assets/{sd.generated-CkiEsOwK.js → sd.generated-BeUHLWKH.js} +538 -163
  1144. package/bundle/web-dist/server/assets/{services.generated-Q2ZIxMdn.js → services.generated-C39hdSv0.js} +164 -34
  1145. package/bundle/web-dist/server/assets/{shim-BYpcQGN1.js → shim-B9ZrFt3Z.js} +1 -1
  1146. package/bundle/web-dist/server/assets/{show-j1j13Hq1.js → show-Dxz6UJnD.js} +508 -150
  1147. package/bundle/web-dist/server/assets/tokens-IPwv3pNB.js +477 -0
  1148. package/bundle/web-dist/server/entry-server.generated.js +157 -197
  1149. package/dist/cli.js +35 -16
  1150. package/package.json +2 -2
  1151. package/bundle/web-dist/client/assets/copy-DdGJDXSK.js +0 -1
  1152. package/bundle/web-dist/client/assets/index-D-D8GkQh.css +0 -1
  1153. package/bundle/web-dist/client/assets/index-DxJOOfGV.js +0 -78
  1154. package/bundle/web-dist/client/assets/logs-D83MPvLO.js +0 -1
  1155. package/bundle/web-dist/client/assets/routes-C1PeZiBp.js +0 -5
  1156. package/bundle/web-dist/client/assets/sd.generated-C9WnMJm4.js +0 -47
  1157. package/bundle/web-dist/client/assets/services.generated-BV5C1PQa.js +0 -1
  1158. package/bundle/web-dist/client/assets/tokens--RfCPd1y.js +0 -1
  1159. package/bundle/web-dist/server/assets/copy-SIUvcEcZ.js +0 -42
  1160. package/bundle/web-dist/server/assets/logs-9j6ES80h.js +0 -361
  1161. 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
- const pendingOAuth = /* @__PURE__ */ new Map();
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(prompt, system, timeout, model, projectName, jsonSchema, effort) {
19
- const result = await QgridDispatcher.query({
20
- system,
21
- prompt,
22
- model,
23
- jsonSchema,
24
- effort
25
- }, timeout);
26
- RequestLogModel.save([{
27
- token_name: result.tokenName,
28
- project_name: projectName && projectName.length > 0 ? projectName : null,
29
- model_name: result.model ?? null,
30
- user_prompt: prompt,
31
- system_prompt: system ?? null,
32
- response: result.text,
33
- input_tokens: result.usage.input_tokens,
34
- output_tokens: result.usage.output_tokens,
35
- cache_read_tokens: result.usage.cache_read_input_tokens,
36
- cache_creation_tokens: result.usage.cache_creation_input_tokens,
37
- duration_ms: result.durationMs,
38
- cost_usd: result.costUsd !== null ? Math.round(result.costUsd * MICRO_USD) : null
39
- }]).catch((e) => logger.error(`requestLog save failed: ${e.message}`));
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(token, name, refreshToken) {
208
+ async addToken(provider, credentials, name) {
52
209
  await TokenModel.save([{
53
- token,
54
- name,
55
- ...refreshToken && refreshToken.length > 0 ? { refresh_token: refreshToken } : {}
210
+ provider,
211
+ credentials,
212
+ name
56
213
  }]);
57
214
  return { added: true };
58
215
  }
59
- async updateToken(token, name, newToken, refreshToken) {
60
- const entry = await TokenModel.findByToken("A", token);
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
- token: hasNewToken ? newToken : entry.token,
67
- name: name !== void 0 ? name : entry.name,
68
- ...hasRefreshToken ? { refresh_token: refreshToken } : {}
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(token) {
73
- const entry = await TokenModel.findByToken("A", token);
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
- token: entry.token,
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
- pendingOAuth.set(state, {
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 = pendingOAuth.get(state);
107
- if (!pending) return reply.redirect("/?oauth=error&reason=invalid_state");
108
- pendingOAuth.delete(state);
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.findByAccountUuid("A", tokens.accountUuid);
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
- token: tokens.accessToken,
117
- name: pending.name,
118
- refresh_token: tokens.refreshToken,
119
- expires_at: tokens.expiresAt ? BigInt(tokens.expiresAt) : null,
120
- account_uuid: tokens.accountUuid
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 usage(tokenName) {
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 = tokenName ? allTokens.find((e) => e.name === tokenName) : allTokens.findLast((e) => e.active);
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
- let accessToken = entry.token;
132
- if (entry.expires_at && Number(entry.expires_at) < Date.now() && entry.refresh_token) try {
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 result = await fetchUsage(accessToken);
139
- if (result.error && entry.refresh_token) try {
341
+ const raw = await fetchUsage(accessToken);
342
+ if (raw.error && getRefreshToken(entry.credentials)) try {
140
343
  accessToken = await this.refreshToken(entry);
141
- return await fetchUsage(accessToken);
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 result;
351
+ if (raw.error) return { error: raw.error };
352
+ return convertAnthropicUsage(raw);
147
353
  }
148
354
  async refreshToken(token) {
149
- if (!token.refresh_token) throw new Error("No refresh token");
150
- const refreshed = await refreshAccessToken(token.refresh_token);
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
- token: refreshed.accessToken,
154
- refresh_token: refreshed.refreshToken,
155
- expires_at: BigInt(refreshed.expiresAt),
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
- String,
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", [String]),
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", [String]),
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/IGFsbFRva2Vucy5maW5kKChlKSA9PiBlLm5hbWUgPT09IHRva2VuTmFtZSlcbiAgICAgIDogYWxsVG9rZW5zLmZpbmRMYXN0KChlKSA9PiBlLmFjdGl2ZSk7XG5cbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBlcnJvcjogXCJOT1RfRk9VTkRcIiB9O1xuXG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gZW50cnkudG9rZW47XG4gICAgY29uc3QgaXNFeHBpcmVkID0gZW50cnkuZXhwaXJlc19hdCAmJiBOdW1iZXIoZW50cnkuZXhwaXJlc19hdCkgPCBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGlzRXhwaXJlZCAmJiBlbnRyeS5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKGVudHJ5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb2F1dGhMb2dnZXIud2FybihgcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcblxuICAgIGlmIChyZXN1bHQuZXJyb3IgJiYgZW50cnkucmVmcmVzaF90b2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbihlbnRyeSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb2F1dGhMb2dnZXIud2FybihgcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKHRva2VuOiBSZWZyZXNoVG9rZW5QYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdG9rZW4ucmVmcmVzaF90b2tlbikgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVmcmVzaCB0b2tlblwiKTtcbiAgICBjb25zdCByZWZyZXNoZWQgPSBhd2FpdCByZWZyZXNoQWNjZXNzVG9rZW4odG9rZW4ucmVmcmVzaF90b2tlbik7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRva2VuLmlkLFxuICAgICAgICB0b2tlbjogcmVmcmVzaGVkLmFjY2Vzc1Rva2VuLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoZWQucmVmcmVzaFRva2VuLFxuICAgICAgICBleHBpcmVzX2F0OiBCaWdJbnQocmVmcmVzaGVkLmV4cGlyZXNBdCksXG4gICAgICAgIG5hbWU6IHRva2VuLm5hbWUgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgcmV0dXJuIHJlZnJlc2hlZC5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIGhlYWx0aCgpOiBQcm9taXNlPEhlYWx0aFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogXCJva1wiLFxuICAgICAgYWN0aXZlVG9rZW5zOiBRZ3JpZERpc3BhdGNoZXIudG9rZW5zLnNpemUsXG4gICAgICBzdWJzY3JpYmVyOiBRZ3JpZERpc3BhdGNoZXIuc3Vic2NyaWJlcj8uc3RhdHVzKCkgPz8gbnVsbCxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBRZ3JpZEZyYW1lID0gbmV3IFFncmlkRnJhbWVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBd0JBLE1BQU0sK0JBQWUsSUFBSSxLQUEwRTtBQUNuRyxNQUFNLFNBQVMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxNQUFNLGNBQWMsVUFBVSxDQUFDLFNBQVMsUUFBUSxDQUFDO0FBRWpELElBQU0sa0JBQU4sY0FBOEIsZUFBZTtDQUMzQyxjQUFjO0FBQ1osUUFBTSxRQUFROztDQUdoQixNQUNNLE1BQ0osUUFDQSxRQUNBLFNBQ0EsT0FDQSxhQUNBLFlBQ0EsUUFDb0I7RUFDcEIsTUFBTSxTQUFTLE1BQU0sZ0JBQWdCLE1BQ25DO0dBQUU7R0FBUTtHQUFRO0dBQU87R0FBWTtHQUFRLEVBQzdDLFFBQ0Q7QUFFRCxrQkFBZ0IsS0FBSyxDQUNuQjtHQUNFLFlBQVksT0FBTztHQUNuQixjQUFjLGVBQWUsWUFBWSxTQUFTLElBQUksY0FBYztHQUNwRSxZQUFZLE9BQU8sU0FBUztHQUM1QixhQUFhO0dBQ2IsZUFBZSxVQUFVO0dBQ3pCLFVBQVUsT0FBTztHQUNqQixjQUFjLE9BQU8sTUFBTTtHQUMzQixlQUFlLE9BQU8sTUFBTTtHQUM1QixtQkFBbUIsT0FBTyxNQUFNO0dBQ2hDLHVCQUF1QixPQUFPLE1BQU07R0FDcEMsYUFBYSxPQUFPO0dBQ3BCLFVBQVUsT0FBTyxZQUFZLE9BQU8sS0FBSyxNQUFNLE9BQU8sVUFBVSxVQUFVLEdBQUc7R0FDOUUsQ0FDRixDQUFDLENBQUMsT0FBTyxNQUFNLE9BQU8sTUFBTSwyQkFBNEIsRUFBWSxVQUFVLENBQUM7QUFFaEYsU0FBTzs7Q0FHVCxNQUNNLFFBQStCO0FBQ25DLFNBQU8sZ0JBQWdCLFVBQVU7O0NBR25DLE1BQ00sVUFBVSxXQUE4QztBQUM1RCxTQUFPLEVBQUUsS0FBSyxNQUFNLGdCQUFnQixVQUFVLEVBQUUsWUFBWSxXQUFXLENBQUMsRUFBRTs7Q0FHNUUsTUFDTSxlQUE2QztBQUNqRCxTQUFPLEVBQUUsT0FBTyxNQUFNLGdCQUFnQixzQkFBc0IsRUFBRTs7Q0FHaEUsTUFDTSxTQUFTLE9BQWUsTUFBYyxjQUFvRDtBQUM5RixRQUFNLFdBQVcsS0FBSyxDQUNwQjtHQUNFO0dBQ0E7R0FDQSxHQUFJLGdCQUFnQixhQUFhLFNBQVMsSUFBSSxFQUFFLGVBQWUsY0FBYyxHQUFHLEVBQUU7R0FDbkYsQ0FDRixDQUFDO0FBQ0YsU0FBTyxFQUFFLE9BQU8sTUFBTTs7Q0FHeEIsTUFDTSxZQUNKLE9BQ0EsTUFDQSxVQUNBLGNBQytCO0VBQy9CLE1BQU0sUUFBUSxNQUFNLFdBQVcsWUFBWSxLQUFLLE1BQU07QUFDdEQsTUFBSSxDQUFDLE1BQU8sUUFBTyxFQUFFLFNBQVMsT0FBTztFQUVyQyxNQUFNLGNBQWMsYUFBYSxVQUFhLFNBQVMsU0FBUztFQUNoRSxNQUFNLGtCQUFrQixpQkFBaUIsVUFBYSxhQUFhLFNBQVM7QUFDNUUsUUFBTSxXQUFXLEtBQUssQ0FDcEI7R0FDRSxJQUFJLE1BQU07R0FDVixPQUFPLGNBQWMsV0FBVyxNQUFNO0dBQ3RDLE1BQU0sU0FBUyxTQUFZLE9BQU8sTUFBTTtHQUN4QyxHQUFJLGtCQUFrQixFQUFFLGVBQWUsY0FBYyxHQUFHLEVBQUU7R0FDM0QsQ0FDRixDQUFDO0FBQ0YsU0FBTyxFQUFFLFNBQVMsTUFBTTs7Q0FHMUIsTUFDTSxZQUFZLE9BQThDO0VBQzlELE1BQU0sUUFBUSxNQUFNLFdBQVcsWUFBWSxLQUFLLE1BQU07QUFDdEQsTUFBSSxDQUFDLE1BQU8sUUFBTyxFQUFFLFNBQVMsT0FBTztBQUNyQyxRQUFNLFdBQVcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQ2hDLFNBQU8sRUFBRSxTQUFTLE1BQU07Ozs7O0NBTTFCLE1BQ00sWUFBWSxJQUEwQztFQUMxRCxNQUFNLFFBQVEsTUFBTSxXQUFXLFFBQVEsS0FBSyxFQUFFLElBQUksQ0FBQztBQUNuRCxNQUFJLENBQUMsTUFBTyxRQUFPLEVBQUUsUUFBUSxPQUFPO0VBRXBDLE1BQU0sWUFBWSxDQUFDLE1BQU07QUFDekIsUUFBTSxXQUFXLEtBQUssQ0FBQztHQUFFO0dBQUksT0FBTyxNQUFNO0dBQU8sUUFBUTtHQUFXLE1BQU0sTUFBTTtHQUFNLENBQUMsQ0FBQztBQUN4RixTQUFPLEVBQUUsUUFBUSxXQUFXOztDQUc5QixNQUNNLFdBQVcsTUFBeUM7RUFDeEQsTUFBTSxFQUFFLGNBQWMsZUFBZSxVQUFVLGNBQWM7RUFHN0QsTUFBTSxjQUFjLG9CQURELFFBQVEsSUFBSSxRQUFRLFFBQ1k7RUFDbkQsTUFBTSxVQUFVLGFBQWEsZUFBZSxPQUFPLFlBQVk7QUFFL0QsZUFBYSxJQUFJLE9BQU87R0FBRTtHQUFjO0dBQU07R0FBYSxDQUFDO0FBQzVELG1CQUFpQixhQUFhLE9BQU8sTUFBTSxFQUFFLElBQVE7QUFFckQsU0FBTyxFQUFFLFNBQVM7O0NBR3BCLE1BQU0sb0JBQW9CLE1BQWMsT0FBZSxPQUFvQztFQUN6RixNQUFNLFVBQVUsYUFBYSxJQUFJLE1BQU07QUFDdkMsTUFBSSxDQUFDLFFBQ0gsUUFBTyxNQUFNLFNBQVMscUNBQXFDO0FBRTdELGVBQWEsT0FBTyxNQUFNO0FBRTFCLE1BQUk7R0FDRixNQUFNLFNBQVMsTUFBTSxzQkFDbkIsTUFDQSxRQUFRLGNBQ1IsT0FDQSxRQUFRLFlBQ1Q7QUFFRCxPQUFJLE9BQU8sYUFBYTtJQUN0QixNQUFNLGFBQWEsTUFBTSxXQUFXLGtCQUFrQixLQUFLLE9BQU8sWUFBWTtBQUM5RSxRQUFJLFdBQVcsU0FBUyxFQUN0QixPQUFNLFdBQVcsSUFBSSxXQUFXLEtBQUssTUFBTSxFQUFFLEdBQUcsQ0FBQzs7QUFJckQsU0FBTSxXQUFXLEtBQUssQ0FDcEI7SUFDRSxPQUFPLE9BQU87SUFDZCxNQUFNLFFBQVE7SUFDZCxlQUFlLE9BQU87SUFDdEIsWUFBWSxPQUFPLFlBQVksT0FBTyxPQUFPLFVBQVUsR0FBRztJQUMxRCxjQUFjLE9BQU87SUFDdEIsQ0FDRixDQUFDO0FBRUYsVUFBTyxNQUFNLFNBQVMsd0JBQXdCLG1CQUFtQixRQUFRLEtBQUssR0FBRztXQUMxRSxHQUFHO0FBQ1YsVUFBTyxNQUFNLFNBQVMsd0JBQXdCLG1CQUFvQixFQUFZLFFBQVEsR0FBRzs7O0NBSTdGLE1BQ00sTUFBTSxXQUE0QztFQUN0RCxNQUFNLEVBQUUsTUFBTSxjQUFjLE1BQU0sV0FBVyxTQUFTLElBQUk7RUFDMUQsTUFBTSxRQUFRLFlBQ1YsVUFBVSxNQUFNLE1BQU0sRUFBRSxTQUFTLFVBQVUsR0FDM0MsVUFBVSxVQUFVLE1BQU0sRUFBRSxPQUFPO0FBRXZDLE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxPQUFPLGFBQWE7RUFFekMsSUFBSSxjQUFjLE1BQU07QUFHeEIsTUFGa0IsTUFBTSxjQUFjLE9BQU8sTUFBTSxXQUFXLEdBQUcsS0FBSyxLQUFLLElBRTFELE1BQU0sY0FDckIsS0FBSTtBQUNGLGlCQUFjLE1BQU0sS0FBSyxhQUFhLE1BQU07V0FDckMsR0FBRztBQUNWLGVBQVksS0FBSyxzQkFBc0IsTUFBTSxLQUFLLElBQUssRUFBWSxVQUFVO0FBQzdFLFVBQU8sRUFBRSxPQUFPLHFCQUFxQjs7RUFJekMsTUFBTSxTQUFTLE1BQU0sV0FBVyxZQUFZO0FBRTVDLE1BQUksT0FBTyxTQUFTLE1BQU0sY0FDeEIsS0FBSTtBQUNGLGlCQUFjLE1BQU0sS0FBSyxhQUFhLE1BQU07QUFDNUMsVUFBTyxNQUFNLFdBQVcsWUFBWTtXQUM3QixHQUFHO0FBQ1YsZUFBWSxLQUFLLHNCQUFzQixNQUFNLEtBQUssSUFBSyxFQUFZLFVBQVU7QUFDN0UsVUFBTyxFQUFFLE9BQU8scUJBQXFCOztBQUl6QyxTQUFPOztDQUdULE1BQU0sYUFBYSxPQUE0QztBQUM3RCxNQUFJLENBQUMsTUFBTSxjQUFlLE9BQU0sSUFBSSxNQUFNLG1CQUFtQjtFQUM3RCxNQUFNLFlBQVksTUFBTSxtQkFBbUIsTUFBTSxjQUFjO0FBQy9ELFFBQU0sV0FBVyxLQUFLLENBQ3BCO0dBQ0UsSUFBSSxNQUFNO0dBQ1YsT0FBTyxVQUFVO0dBQ2pCLGVBQWUsVUFBVTtHQUN6QixZQUFZLE9BQU8sVUFBVSxVQUFVO0dBQ3ZDLE1BQU0sTUFBTSxRQUFRO0dBQ3JCLENBQ0YsQ0FBQztBQUNGLFNBQU8sVUFBVTs7Q0FHbkIsTUFDTSxTQUFrQztBQUN0QyxTQUFPO0dBQ0wsUUFBUTtHQUNSLGNBQWMsZ0JBQWdCLE9BQU87R0FDckMsWUFBWSxnQkFBZ0IsWUFBWSxRQUFRLElBQUk7R0FDckQ7Ozs7Q0F2TkYsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Ozs7Ozs7OztDQW1DcEUsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxpQkFBaUI7RUFBRSxDQUFDOzs7Ozs7Q0FLaEUsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxpQkFBaUI7RUFBRSxDQUFDOzs7Ozs7Q0FLaEUsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxpQkFBaUI7RUFBRSxDQUFDOzs7Ozs7Q0FLaEUsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Ozs7O0NBWXBFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Q0F1QnBFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7O0NBV3BFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7O0NBVXBFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7O0NBb0RwRSxJQUFJO0VBQUUsWUFBWTtFQUFPLFNBQVMsQ0FBQyxTQUFTLGlCQUFpQjtFQUFFLENBQUM7Ozs7OztDQW1EaEUsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxpQkFBaUI7RUFBRSxDQUFDOzs7OztBQVVuRSxNQUFhLGFBQWEsSUFBSSxpQkFBaUIifQ==
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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