@memberjunction/server 6.2.0-edge.6 → 6.2.0-edge.8

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 (463) hide show
  1. package/README.md +69 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentSessions/BridgeHostInstance.d.ts +8 -3
  4. package/dist/agentSessions/BridgeHostInstance.d.ts.map +1 -1
  5. package/dist/agentSessions/BridgeHostInstance.js +14 -4
  6. package/dist/agentSessions/BridgeHostInstance.js.map +1 -1
  7. package/dist/agentSessions/HandoffOfferExpiry.d.ts +10 -0
  8. package/dist/agentSessions/HandoffOfferExpiry.d.ts.map +1 -0
  9. package/dist/agentSessions/HandoffOfferExpiry.js +18 -0
  10. package/dist/agentSessions/HandoffOfferExpiry.js.map +1 -0
  11. package/dist/agentSessions/ReturningVisitorRecap.js +1 -0
  12. package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
  13. package/dist/agentSessions/SessionJanitor.d.ts +31 -8
  14. package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
  15. package/dist/agentSessions/SessionJanitor.js +85 -41
  16. package/dist/agentSessions/SessionJanitor.js.map +1 -1
  17. package/dist/agentSessions/SessionManager.d.ts +14 -4
  18. package/dist/agentSessions/SessionManager.d.ts.map +1 -1
  19. package/dist/agentSessions/SessionManager.js +28 -4
  20. package/dist/agentSessions/SessionManager.js.map +1 -1
  21. package/dist/agentSessions/conversationBrowsers.d.ts +61 -0
  22. package/dist/agentSessions/conversationBrowsers.d.ts.map +1 -0
  23. package/dist/agentSessions/conversationBrowsers.js +118 -0
  24. package/dist/agentSessions/conversationBrowsers.js.map +1 -0
  25. package/dist/agentSessions/sessionDeadline.d.ts +43 -0
  26. package/dist/agentSessions/sessionDeadline.d.ts.map +1 -0
  27. package/dist/agentSessions/sessionDeadline.js +68 -0
  28. package/dist/agentSessions/sessionDeadline.js.map +1 -0
  29. package/dist/auth/APIKeyScopeAuth.d.ts.map +1 -1
  30. package/dist/auth/APIKeyScopeAuth.js +5 -4
  31. package/dist/auth/APIKeyScopeAuth.js.map +1 -1
  32. package/dist/auth/loginEmailResolution.d.ts +41 -0
  33. package/dist/auth/loginEmailResolution.d.ts.map +1 -0
  34. package/dist/auth/loginEmailResolution.js +47 -0
  35. package/dist/auth/loginEmailResolution.js.map +1 -0
  36. package/dist/auth/magicLink/MagicLinkKeys.d.ts +50 -2
  37. package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
  38. package/dist/auth/magicLink/MagicLinkKeys.js +129 -12
  39. package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
  40. package/dist/auth/magicLink/MagicLinkRouter.d.ts +3 -0
  41. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  42. package/dist/auth/magicLink/MagicLinkRouter.js +23 -5
  43. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  44. package/dist/auth/magicLink/MagicLinkService.d.ts +39 -5
  45. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  46. package/dist/auth/magicLink/MagicLinkService.js +221 -9
  47. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  48. package/dist/auth/magicLink/index.d.ts +1 -1
  49. package/dist/auth/magicLink/index.d.ts.map +1 -1
  50. package/dist/auth/magicLink/index.js +1 -1
  51. package/dist/auth/magicLink/index.js.map +1 -1
  52. package/dist/auth/magicLink/redeemLanding.d.ts +2 -2
  53. package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
  54. package/dist/auth/magicLink/redeemLanding.js +7 -4
  55. package/dist/auth/magicLink/redeemLanding.js.map +1 -1
  56. package/dist/auth/magicLink/types.d.ts +27 -3
  57. package/dist/auth/magicLink/types.d.ts.map +1 -1
  58. package/dist/auth/magicLink/types.js +0 -4
  59. package/dist/auth/magicLink/types.js.map +1 -1
  60. package/dist/auth/newUsers.d.ts.map +1 -1
  61. package/dist/auth/newUsers.js +1 -0
  62. package/dist/auth/newUsers.js.map +1 -1
  63. package/dist/backgroundSweepConfigUnits.d.ts +231 -0
  64. package/dist/backgroundSweepConfigUnits.d.ts.map +1 -0
  65. package/dist/backgroundSweepConfigUnits.js +180 -0
  66. package/dist/backgroundSweepConfigUnits.js.map +1 -0
  67. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts.map +1 -1
  68. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js +2 -1
  69. package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js.map +1 -1
  70. package/dist/config.d.ts +906 -8
  71. package/dist/config.d.ts.map +1 -1
  72. package/dist/config.js +59 -0
  73. package/dist/config.js.map +1 -1
  74. package/dist/context.d.ts +2 -0
  75. package/dist/context.d.ts.map +1 -1
  76. package/dist/context.js +41 -12
  77. package/dist/context.js.map +1 -1
  78. package/dist/coreRoutes.d.ts +3 -1
  79. package/dist/coreRoutes.d.ts.map +1 -1
  80. package/dist/coreRoutes.js +6 -4
  81. package/dist/coreRoutes.js.map +1 -1
  82. package/dist/generated/graphql-schemas/__mj.d.ts +1072 -5
  83. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  84. package/dist/generated/graphql-schemas/__mj.js +10174 -4618
  85. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  86. package/dist/generic/OrphanedConversationDetailReconciler.d.ts +11 -0
  87. package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -1
  88. package/dist/generic/OrphanedConversationDetailReconciler.js +27 -1
  89. package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
  90. package/dist/generic/ResolverBase.d.ts +50 -5
  91. package/dist/generic/ResolverBase.d.ts.map +1 -1
  92. package/dist/generic/ResolverBase.js +329 -132
  93. package/dist/generic/ResolverBase.js.map +1 -1
  94. package/dist/generic/RunViewResolver.d.ts +4 -0
  95. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  96. package/dist/generic/RunViewResolver.js +47 -7
  97. package/dist/generic/RunViewResolver.js.map +1 -1
  98. package/dist/globalCors.d.ts.map +1 -1
  99. package/dist/globalCors.js +1 -0
  100. package/dist/globalCors.js.map +1 -1
  101. package/dist/index.d.ts +3 -0
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +201 -43
  104. package/dist/index.js.map +1 -1
  105. package/dist/integration/ConnectionPause.d.ts +121 -0
  106. package/dist/integration/ConnectionPause.d.ts.map +1 -0
  107. package/dist/integration/ConnectionPause.js +183 -0
  108. package/dist/integration/ConnectionPause.js.map +1 -0
  109. package/dist/integration/CustomColumnPromoter.d.ts +72 -6
  110. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  111. package/dist/integration/CustomColumnPromoter.js +87 -46
  112. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  113. package/dist/integration/EntityMapLifecycle.d.ts +78 -4
  114. package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
  115. package/dist/integration/EntityMapLifecycle.js +199 -5
  116. package/dist/integration/EntityMapLifecycle.js.map +1 -1
  117. package/dist/integration/InactiveRowWarnings.d.ts +31 -0
  118. package/dist/integration/InactiveRowWarnings.d.ts.map +1 -1
  119. package/dist/integration/InactiveRowWarnings.js +29 -0
  120. package/dist/integration/InactiveRowWarnings.js.map +1 -1
  121. package/dist/integration/ObjectNamesByID.d.ts +28 -0
  122. package/dist/integration/ObjectNamesByID.d.ts.map +1 -0
  123. package/dist/integration/ObjectNamesByID.js +87 -0
  124. package/dist/integration/ObjectNamesByID.js.map +1 -0
  125. package/dist/integration/PostRestartIntrospect.d.ts +26 -0
  126. package/dist/integration/PostRestartIntrospect.d.ts.map +1 -0
  127. package/dist/integration/PostRestartIntrospect.js +27 -0
  128. package/dist/integration/PostRestartIntrospect.js.map +1 -0
  129. package/dist/integration/RSUPostRestartProgress.d.ts +176 -0
  130. package/dist/integration/RSUPostRestartProgress.d.ts.map +1 -0
  131. package/dist/integration/RSUPostRestartProgress.js +323 -0
  132. package/dist/integration/RSUPostRestartProgress.js.map +1 -0
  133. package/dist/integration/RSUProgressBridge.d.ts +41 -2
  134. package/dist/integration/RSUProgressBridge.d.ts.map +1 -1
  135. package/dist/integration/RSUProgressBridge.js +84 -1
  136. package/dist/integration/RSUProgressBridge.js.map +1 -1
  137. package/dist/integration/RunArtifactAuthorization.d.ts +39 -0
  138. package/dist/integration/RunArtifactAuthorization.d.ts.map +1 -0
  139. package/dist/integration/RunArtifactAuthorization.js +45 -0
  140. package/dist/integration/RunArtifactAuthorization.js.map +1 -0
  141. package/dist/integration/SchemaRefreshLaunch.d.ts +9 -0
  142. package/dist/integration/SchemaRefreshLaunch.d.ts.map +1 -1
  143. package/dist/integration/SchemaRefreshLaunch.js +3 -2
  144. package/dist/integration/SchemaRefreshLaunch.js.map +1 -1
  145. package/dist/integration/ScopedFieldsForBuild.d.ts +46 -0
  146. package/dist/integration/ScopedFieldsForBuild.d.ts.map +1 -0
  147. package/dist/integration/ScopedFieldsForBuild.js +91 -0
  148. package/dist/integration/ScopedFieldsForBuild.js.map +1 -0
  149. package/dist/integration/TargetConfigGuard.d.ts +40 -0
  150. package/dist/integration/TargetConfigGuard.d.ts.map +1 -0
  151. package/dist/integration/TargetConfigGuard.js +40 -0
  152. package/dist/integration/TargetConfigGuard.js.map +1 -0
  153. package/dist/logging/StartupLogger.d.ts +50 -0
  154. package/dist/logging/StartupLogger.d.ts.map +1 -1
  155. package/dist/logging/StartupLogger.js +15 -22
  156. package/dist/logging/StartupLogger.js.map +1 -1
  157. package/dist/middleware/BaseServerMiddleware.d.ts +21 -3
  158. package/dist/middleware/BaseServerMiddleware.d.ts.map +1 -1
  159. package/dist/middleware/BaseServerMiddleware.js +4 -2
  160. package/dist/middleware/BaseServerMiddleware.js.map +1 -1
  161. package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -1
  162. package/dist/realtimeSessions/ownedRealtimeSession.js +2 -3
  163. package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -1
  164. package/dist/realtimeSessions/sessionAccess.d.ts +15 -0
  165. package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -1
  166. package/dist/realtimeSessions/sessionAccess.js +22 -0
  167. package/dist/realtimeSessions/sessionAccess.js.map +1 -1
  168. package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
  169. package/dist/realtimeWidget/WidgetSessionService.js +2 -0
  170. package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
  171. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
  172. package/dist/realtimeWidget/visitorIdentity.js +1 -0
  173. package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
  174. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  175. package/dist/realtimeWidget/widgetCore.js +4 -7
  176. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  177. package/dist/realtimeWidget/widgetGuestElevation.js +1 -0
  178. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  179. package/dist/requestOrigin.d.ts +22 -0
  180. package/dist/requestOrigin.d.ts.map +1 -0
  181. package/dist/requestOrigin.js +60 -0
  182. package/dist/requestOrigin.js.map +1 -0
  183. package/dist/resolvers/AgentRunStatusPublisher.d.ts +10 -0
  184. package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -1
  185. package/dist/resolvers/AgentRunStatusPublisher.js +18 -2
  186. package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -1
  187. package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -1
  188. package/dist/resolvers/AgentSessionResolver.js +6 -2
  189. package/dist/resolvers/AgentSessionResolver.js.map +1 -1
  190. package/dist/resolvers/AutotagPipelineResolver.d.ts +1 -1
  191. package/dist/resolvers/AutotagPipelineResolver.d.ts.map +1 -1
  192. package/dist/resolvers/AutotagPipelineResolver.js +61 -16
  193. package/dist/resolvers/AutotagPipelineResolver.js.map +1 -1
  194. package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -1
  195. package/dist/resolvers/ConversationRunEventsResolver.js +2 -0
  196. package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -1
  197. package/dist/resolvers/ExecuteRemoteOperationResolver.d.ts +6 -0
  198. package/dist/resolvers/ExecuteRemoteOperationResolver.d.ts.map +1 -1
  199. package/dist/resolvers/ExecuteRemoteOperationResolver.js +30 -7
  200. package/dist/resolvers/ExecuteRemoteOperationResolver.js.map +1 -1
  201. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  202. package/dist/resolvers/GetDataResolver.js +34 -13
  203. package/dist/resolvers/GetDataResolver.js.map +1 -1
  204. package/dist/resolvers/InfoResolver.js +1 -1
  205. package/dist/resolvers/InfoResolver.js.map +1 -1
  206. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +401 -11
  207. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  208. package/dist/resolvers/IntegrationDiscoveryResolver.js +2690 -1305
  209. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  210. package/dist/resolvers/MCPResolver.d.ts.map +1 -1
  211. package/dist/resolvers/MCPResolver.js +13 -2
  212. package/dist/resolvers/MCPResolver.js.map +1 -1
  213. package/dist/resolvers/QuerySystemUserResolver.d.ts +38 -1
  214. package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
  215. package/dist/resolvers/QuerySystemUserResolver.js +181 -88
  216. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  217. package/dist/resolvers/RealtimeBridgeResolver.d.ts.map +1 -1
  218. package/dist/resolvers/RealtimeBridgeResolver.js +1 -0
  219. package/dist/resolvers/RealtimeBridgeResolver.js.map +1 -1
  220. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +6 -0
  221. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  222. package/dist/resolvers/RealtimeClientSessionResolver.js +36 -5
  223. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  224. package/dist/resolvers/RemoteBrowserActionResolver.d.ts +62 -10
  225. package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
  226. package/dist/resolvers/RemoteBrowserActionResolver.js +217 -34
  227. package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
  228. package/dist/resolvers/RunAIAgentResolver.d.ts +24 -8
  229. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  230. package/dist/resolvers/RunAIAgentResolver.js +185 -67
  231. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  232. package/dist/resolvers/RunAIPromptResolver.d.ts +5 -3
  233. package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
  234. package/dist/resolvers/RunAIPromptResolver.js +19 -18
  235. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  236. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  237. package/dist/resolvers/RunTemplateResolver.js +3 -1
  238. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  239. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  240. package/dist/resolvers/SqlLoggingConfigResolver.js +7 -8
  241. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  242. package/dist/resolvers/TagGovernanceResolver.d.ts +12 -0
  243. package/dist/resolvers/TagGovernanceResolver.d.ts.map +1 -1
  244. package/dist/resolvers/TagGovernanceResolver.js +84 -0
  245. package/dist/resolvers/TagGovernanceResolver.js.map +1 -1
  246. package/dist/resolvers/TelemetryResolver.d.ts +13 -8
  247. package/dist/resolvers/TelemetryResolver.d.ts.map +1 -1
  248. package/dist/resolvers/TelemetryResolver.js +40 -9
  249. package/dist/resolvers/TelemetryResolver.js.map +1 -1
  250. package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
  251. package/dist/resolvers/meetingRecordingRegistration.js +2 -0
  252. package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
  253. package/dist/resolvers/meetings/meetingMutations.d.ts.map +1 -1
  254. package/dist/resolvers/meetings/meetingMutations.js +34 -4
  255. package/dist/resolvers/meetings/meetingMutations.js.map +1 -1
  256. package/dist/rest/MediaAccessKeys.d.ts.map +1 -1
  257. package/dist/rest/MediaAccessKeys.js +6 -2
  258. package/dist/rest/MediaAccessKeys.js.map +1 -1
  259. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
  260. package/dist/rest/OAuthCallbackHandler.js +11 -5
  261. package/dist/rest/OAuthCallbackHandler.js.map +1 -1
  262. package/dist/rest/RealtimeRecordingHandler.d.ts +3 -3
  263. package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -1
  264. package/dist/rest/RealtimeRecordingHandler.js +2 -4
  265. package/dist/rest/RealtimeRecordingHandler.js.map +1 -1
  266. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  267. package/dist/rest/ViewOperationsHandler.js +2 -1
  268. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  269. package/dist/rest/setupRESTEndpoints.d.ts +3 -1
  270. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  271. package/dist/rest/setupRESTEndpoints.js +11 -2
  272. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  273. package/dist/services/DurableEntityActionTaskSubmitter.d.ts.map +1 -1
  274. package/dist/services/DurableEntityActionTaskSubmitter.js +6 -1
  275. package/dist/services/DurableEntityActionTaskSubmitter.js.map +1 -1
  276. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  277. package/dist/services/TaskGraphActionRunner.js +2 -26
  278. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  279. package/dist/services/TaskGraphAgentRunner.d.ts +6 -0
  280. package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
  281. package/dist/services/TaskGraphAgentRunner.js +38 -0
  282. package/dist/services/TaskGraphAgentRunner.js.map +1 -1
  283. package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
  284. package/dist/services/TaskGraphContinuationDeliverer.js +1 -0
  285. package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
  286. package/dist/services/WorkQueueHostService.d.ts +2 -1
  287. package/dist/services/WorkQueueHostService.d.ts.map +1 -1
  288. package/dist/services/WorkQueueHostService.js +19 -4
  289. package/dist/services/WorkQueueHostService.js.map +1 -1
  290. package/dist/services/workQueueConfig.d.ts +2 -2
  291. package/dist/services/workQueueConfig.js +5 -5
  292. package/dist/services/workQueueConfig.js.map +1 -1
  293. package/dist/sharedCache.js +1 -1
  294. package/dist/sharedCache.js.map +1 -1
  295. package/dist/types.d.ts +17 -0
  296. package/dist/types.d.ts.map +1 -1
  297. package/dist/types.js.map +1 -1
  298. package/dist/util.d.ts.map +1 -1
  299. package/dist/util.js +55 -2
  300. package/dist/util.js.map +1 -1
  301. package/package.json +107 -100
  302. package/src/__tests__/APIKeyScopeAuth.test.ts +4 -8
  303. package/src/__tests__/ActiveOperations.test.ts +68 -0
  304. package/src/__tests__/AgentSessionResolver.ownership.test.ts +13 -0
  305. package/src/__tests__/AssertTargetConfigs.test.ts +75 -0
  306. package/src/__tests__/BatchApplyParity.test.ts +109 -0
  307. package/src/__tests__/BridgeHostInstance.test.ts +42 -0
  308. package/src/__tests__/CollectInactiveRowWarnings.test.ts +115 -0
  309. package/src/__tests__/ConnectionPause.test.ts +192 -0
  310. package/src/__tests__/ConnectionPauseResolver.test.ts +166 -0
  311. package/src/__tests__/ConnectionPauseSave.test.ts +143 -0
  312. package/src/__tests__/CustomColumnPromoterCompletion.test.ts +142 -0
  313. package/src/__tests__/DeleteConnectionRemovesPerConnectionCatalog.test.ts +51 -0
  314. package/src/__tests__/DetachedDiscoveryStart.test.ts +65 -0
  315. package/src/__tests__/DurableEntityActionTaskSubmitter.test.ts +73 -0
  316. package/src/__tests__/EntityMapLifecycle.rekey.test.ts +252 -0
  317. package/src/__tests__/ExecuteRemoteOperationResolver.test.ts +213 -0
  318. package/src/__tests__/HandoffOfferExpiry.test.ts +40 -0
  319. package/src/__tests__/IntegrationRunArtifactAuthorization.test.ts +126 -0
  320. package/src/__tests__/MagicLinkKeys.test.ts +102 -0
  321. package/src/__tests__/MediaAccessKeys.test.ts +57 -10
  322. package/src/__tests__/NewArrivalsDefaultDisabled.test.ts +50 -0
  323. package/src/__tests__/ObjectNamesByID.test.ts +176 -0
  324. package/src/__tests__/PostRestartMapsInCatalogScope.test.ts +146 -0
  325. package/src/__tests__/QuerySystemUserResolver.childRows.test.ts +80 -0
  326. package/src/__tests__/QuerySystemUserResolver.collision.test.ts +200 -0
  327. package/src/__tests__/QuerySystemUserResolver.permissions.test.ts +132 -0
  328. package/src/__tests__/RSUPostRestartProgress.test.ts +343 -0
  329. package/src/__tests__/RSUProgressBridge.test.ts +188 -5
  330. package/src/__tests__/RSUStartupSweepWiring.test.ts +30 -0
  331. package/src/__tests__/ReactivateRefreshMessage.test.ts +10 -3
  332. package/src/__tests__/RealtimeClientSessionResolver.test.ts +22 -0
  333. package/src/__tests__/{RefreshAdoptsNewColumns.test.ts → RefreshReportsNewColumns.test.ts} +25 -16
  334. package/src/__tests__/RemoteBrowserActionRecovery.test.ts +287 -0
  335. package/src/__tests__/RemoteBrowserActionResolver.goalRunLink.test.ts +3 -0
  336. package/src/__tests__/RemoteBrowserActionResolver.ownership.test.ts +6 -4
  337. package/src/__tests__/RemoteBrowserAudioStream.test.ts +3 -0
  338. package/src/__tests__/RemoteBrowserSnapshot.test.ts +3 -0
  339. package/src/__tests__/ResolverBase.clientOldValues.test.ts +327 -26
  340. package/src/__tests__/ResolverBase.diagnosticSenderRegistrations.test.ts +26 -0
  341. package/src/__tests__/ResolverBase.encryptedApiZeroReencrypt.test.ts +307 -0
  342. package/src/__tests__/ResolverBase.entityMessageRelay.test.ts +53 -2
  343. package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +60 -0
  344. package/src/__tests__/RunAIAgentResolver.branch.test.ts +4 -0
  345. package/src/__tests__/RunAIAgentResolver.consultPredecessor.test.ts +289 -0
  346. package/src/__tests__/RunAIAgentResolver.handoff.test.ts +649 -0
  347. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +2 -0
  348. package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +2 -0
  349. package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +87 -12
  350. package/src/__tests__/RunAIAgentResolver.streaming.test.ts +28 -4
  351. package/src/__tests__/SchemaEvolutionCustomColumns.test.ts +119 -0
  352. package/src/__tests__/SchemaRefreshLaunch.test.ts +24 -2
  353. package/src/__tests__/ScopedFieldsForBuild.test.ts +192 -0
  354. package/src/__tests__/SessionJanitor.test.ts +195 -4
  355. package/src/__tests__/SessionManager.test.ts +69 -0
  356. package/src/__tests__/TagGovernanceAndAutotagResolvers.test.ts +261 -0
  357. package/src/__tests__/TagGovernanceResolver.test.ts +60 -2
  358. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +2 -2
  359. package/src/__tests__/TaskGraphAgentRunner.test.ts +272 -16
  360. package/src/__tests__/ViewOperationsHandler.test.ts +2 -5
  361. package/src/__tests__/WorkQueueHostService.test.ts +25 -7
  362. package/src/__tests__/backgroundSweepConfigUnits.test.ts +153 -0
  363. package/src/__tests__/contextRequestOrigin.test.ts +105 -0
  364. package/src/__tests__/conversationBrowsers.test.ts +62 -0
  365. package/src/__tests__/globalCors.test.ts +12 -0
  366. package/src/__tests__/magicLinkExtensionCapabilities.test.ts +413 -0
  367. package/src/__tests__/orphanedConversationDetailReconciler.start.test.ts +82 -0
  368. package/src/__tests__/ownedRealtimeSession.test.ts +14 -0
  369. package/src/__tests__/realtimeRecordingHandler.test.ts +7 -2
  370. package/src/__tests__/realtimeSessions/sessionAccess.test.ts +79 -1
  371. package/src/__tests__/requestOrigin.test.ts +104 -0
  372. package/src/__tests__/review-capture-valid-token-log.test.ts +98 -0
  373. package/src/__tests__/runStreams.fieldSecurity.test.ts +5 -5
  374. package/src/__tests__/securityHardeningPr6034.test.ts +120 -0
  375. package/src/__tests__/sessionDeadline.test.ts +51 -0
  376. package/src/__tests__/sharedCache.test.ts +11 -0
  377. package/src/__tests__/unifiedAuth.test.ts +73 -1
  378. package/src/agentSessions/BridgeHostInstance.ts +20 -5
  379. package/src/agentSessions/HandoffOfferExpiry.ts +18 -0
  380. package/src/agentSessions/ReturningVisitorRecap.ts +1 -0
  381. package/src/agentSessions/SessionJanitor.ts +92 -42
  382. package/src/agentSessions/SessionManager.ts +38 -8
  383. package/src/agentSessions/conversationBrowsers.ts +143 -0
  384. package/src/agentSessions/sessionDeadline.ts +81 -0
  385. package/src/auth/APIKeyScopeAuth.ts +5 -4
  386. package/src/auth/__tests__/loginEmailResolution.test.ts +67 -0
  387. package/src/auth/loginEmailResolution.ts +67 -0
  388. package/src/auth/magicLink/MagicLinkKeys.ts +146 -14
  389. package/src/auth/magicLink/MagicLinkRouter.ts +33 -6
  390. package/src/auth/magicLink/MagicLinkService.ts +250 -10
  391. package/src/auth/magicLink/index.ts +1 -1
  392. package/src/auth/magicLink/redeemLanding.ts +7 -4
  393. package/src/auth/magicLink/types.ts +28 -3
  394. package/src/auth/newUsers.ts +1 -0
  395. package/src/backgroundSweepConfigUnits.ts +213 -0
  396. package/src/broadcast/BaseCacheInvalidationBroadcastProvider.ts +2 -1
  397. package/src/config.ts +69 -0
  398. package/src/context.ts +46 -15
  399. package/src/coreRoutes.ts +14 -7
  400. package/src/generated/graphql-schemas/__mj.ts +10360 -6479
  401. package/src/generic/OrphanedConversationDetailReconciler.ts +32 -1
  402. package/src/generic/ResolverBase.ts +422 -143
  403. package/src/generic/RunViewResolver.ts +96 -49
  404. package/src/globalCors.ts +1 -0
  405. package/src/index.ts +246 -44
  406. package/src/integration/ConnectionPause.ts +222 -0
  407. package/src/integration/CustomColumnPromoter.ts +123 -53
  408. package/src/integration/EntityMapLifecycle.ts +229 -6
  409. package/src/integration/InactiveRowWarnings.ts +50 -0
  410. package/src/integration/ObjectNamesByID.ts +97 -0
  411. package/src/integration/PostRestartIntrospect.ts +49 -0
  412. package/src/integration/RSUPostRestartProgress.ts +359 -0
  413. package/src/integration/RSUProgressBridge.ts +85 -2
  414. package/src/integration/RunArtifactAuthorization.ts +65 -0
  415. package/src/integration/SchemaRefreshLaunch.ts +12 -2
  416. package/src/integration/ScopedFieldsForBuild.ts +113 -0
  417. package/src/integration/TargetConfigGuard.ts +71 -0
  418. package/src/logging/StartupLogger.ts +24 -0
  419. package/src/middleware/BaseServerMiddleware.ts +20 -3
  420. package/src/realtimeSessions/ownedRealtimeSession.ts +2 -6
  421. package/src/realtimeSessions/sessionAccess.ts +30 -0
  422. package/src/realtimeWidget/WidgetSessionService.ts +2 -0
  423. package/src/realtimeWidget/visitorIdentity.ts +1 -0
  424. package/src/realtimeWidget/widgetCore.ts +4 -8
  425. package/src/realtimeWidget/widgetGuestElevation.ts +1 -0
  426. package/src/requestOrigin.ts +64 -0
  427. package/src/resolvers/AgentRunStatusPublisher.ts +27 -2
  428. package/src/resolvers/AgentSessionResolver.ts +6 -2
  429. package/src/resolvers/AutotagPipelineResolver.ts +59 -14
  430. package/src/resolvers/ConversationRunEventsResolver.ts +2 -0
  431. package/src/resolvers/ExecuteRemoteOperationResolver.ts +41 -9
  432. package/src/resolvers/GetDataResolver.ts +35 -13
  433. package/src/resolvers/InfoResolver.ts +1 -1
  434. package/src/resolvers/IntegrationDiscoveryResolver.ts +1522 -203
  435. package/src/resolvers/MCPResolver.ts +15 -2
  436. package/src/resolvers/QuerySystemUserResolver.ts +211 -100
  437. package/src/resolvers/RealtimeBridgeResolver.ts +1 -0
  438. package/src/resolvers/RealtimeClientSessionResolver.ts +40 -7
  439. package/src/resolvers/RemoteBrowserActionResolver.ts +242 -32
  440. package/src/resolvers/RunAIAgentResolver.ts +265 -86
  441. package/src/resolvers/RunAIPromptResolver.ts +18 -18
  442. package/src/resolvers/RunTemplateResolver.ts +3 -1
  443. package/src/resolvers/SqlLoggingConfigResolver.ts +7 -9
  444. package/src/resolvers/TagGovernanceResolver.ts +65 -0
  445. package/src/resolvers/TelemetryResolver.ts +44 -9
  446. package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +52 -0
  447. package/src/resolvers/meetingRecordingRegistration.ts +2 -0
  448. package/src/resolvers/meetings/meetingMutations.ts +37 -7
  449. package/src/rest/MediaAccessKeys.ts +6 -2
  450. package/src/rest/OAuthCallbackHandler.ts +13 -5
  451. package/src/rest/RealtimeRecordingHandler.ts +5 -9
  452. package/src/rest/ViewOperationsHandler.ts +2 -1
  453. package/src/rest/setupRESTEndpoints.ts +11 -2
  454. package/src/services/DurableEntityActionTaskSubmitter.ts +10 -2
  455. package/src/services/TaskGraphActionRunner.ts +2 -23
  456. package/src/services/TaskGraphAgentRunner.ts +43 -0
  457. package/src/services/TaskGraphContinuationDeliverer.ts +1 -0
  458. package/src/services/WorkQueueHostService.ts +26 -4
  459. package/src/services/workQueueConfig.ts +5 -5
  460. package/src/sharedCache.ts +1 -1
  461. package/src/types.ts +18 -0
  462. package/src/util.ts +55 -3
  463. package/src/services/TaskOrchestration-Integration.md +0 -188
package/dist/config.d.ts CHANGED
@@ -447,7 +447,7 @@ declare const multiTenancySchema: z.ZodObject<{
447
447
  defaultTenantColumn?: string;
448
448
  entityColumnMappings?: Record<string, string>;
449
449
  adminRoles?: string[];
450
- writeProtection?: "strict" | "log" | "off";
450
+ writeProtection?: "off" | "strict" | "log";
451
451
  }, {
452
452
  enabled?: string | number | boolean;
453
453
  contextSource?: "header" | "linkedEntity" | "custom";
@@ -458,7 +458,7 @@ declare const multiTenancySchema: z.ZodObject<{
458
458
  defaultTenantColumn?: string;
459
459
  entityColumnMappings?: Record<string, string>;
460
460
  adminRoles?: string[];
461
- writeProtection?: "strict" | "log" | "off";
461
+ writeProtection?: "off" | "strict" | "log";
462
462
  }>;
463
463
  declare const telemetrySchema: z.ZodObject<{
464
464
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -1039,6 +1039,13 @@ declare const magicLinkSchema: z.ZodObject<{
1039
1039
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
1040
1040
  */
1041
1041
  explorerUrl: z.ZodOptional<z.ZodString>;
1042
+ /**
1043
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
1044
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
1045
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
1046
+ * never expose an open redirect carrying session tokens.
1047
+ */
1048
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1042
1049
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1043
1050
  /** Master switch for the magic-link feature. When false, routes are not mounted and the auth provider is not registered. */
1044
1051
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -1101,6 +1108,13 @@ declare const magicLinkSchema: z.ZodObject<{
1101
1108
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
1102
1109
  */
1103
1110
  explorerUrl: z.ZodOptional<z.ZodString>;
1111
+ /**
1112
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
1113
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
1114
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
1115
+ * never expose an open redirect carrying session tokens.
1116
+ */
1117
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1104
1118
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1105
1119
  /** Master switch for the magic-link feature. When false, routes are not mounted and the auth provider is not registered. */
1106
1120
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -1163,6 +1177,13 @@ declare const magicLinkSchema: z.ZodObject<{
1163
1177
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
1164
1178
  */
1165
1179
  explorerUrl: z.ZodOptional<z.ZodString>;
1180
+ /**
1181
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
1182
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
1183
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
1184
+ * never expose an open redirect carrying session tokens.
1185
+ */
1186
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1166
1187
  }, z.ZodTypeAny, "passthrough">>;
1167
1188
  /**
1168
1189
  * Public web widget config (plans/realtime/bridges-and-widget/public-web-widget.md).
@@ -3431,6 +3452,101 @@ declare const identityVerificationSchema: z.ZodObject<{
3431
3452
  redeemPerIp?: number;
3432
3453
  }>>>;
3433
3454
  }, z.ZodTypeAny, "passthrough">>;
3455
+ /**
3456
+ * Remote browsers a TEXT conversation opens (`<mj-conversation-chat-area [AllowRemoteBrowser]>`), whose
3457
+ * agents drive them through the `browser_*` tools. Realtime calls' browsers are not affected.
3458
+ *
3459
+ * Off by default: until `enabled` is true, every remote-browser operation on a conversation is refused,
3460
+ * since each browser is a server Chromium process or a billed hosted session.
3461
+ */
3462
+ declare const conversationBrowserSchema: z.ZodObject<{
3463
+ /** Master switch. When false, no conversation can open a browser. */
3464
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3465
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3466
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3467
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3468
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3469
+ /**
3470
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3471
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3472
+ */
3473
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3474
+ /**
3475
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3476
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3477
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3478
+ */
3479
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3480
+ /**
3481
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3482
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3483
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3484
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3485
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3486
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3487
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3488
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3489
+ */
3490
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3491
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
3492
+ /** Master switch. When false, no conversation can open a browser. */
3493
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3494
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3495
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3496
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3497
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3498
+ /**
3499
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3500
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3501
+ */
3502
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3503
+ /**
3504
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3505
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3506
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3507
+ */
3508
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3509
+ /**
3510
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3511
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3512
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3513
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3514
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3515
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3516
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3517
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3518
+ */
3519
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3520
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
3521
+ /** Master switch. When false, no conversation can open a browser. */
3522
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3523
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3524
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3525
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3526
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3527
+ /**
3528
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3529
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3530
+ */
3531
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3532
+ /**
3533
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3534
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3535
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3536
+ */
3537
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3538
+ /**
3539
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3540
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3541
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3542
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3543
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3544
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3545
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3546
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3547
+ */
3548
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3549
+ }, z.ZodTypeAny, "passthrough">>;
3434
3550
  declare const realtimeSchema: z.ZodObject<{
3435
3551
  /** Master switch. When false, the WebRTC SDP broker router is not mounted. Defaults to true. */
3436
3552
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -3735,6 +3851,95 @@ declare const realtimeSchema: z.ZodObject<{
3735
3851
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
3736
3852
  */
3737
3853
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3854
+ /** Remote browsers that text conversations open (off by default). */
3855
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
3856
+ /** Master switch. When false, no conversation can open a browser. */
3857
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3858
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3859
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3860
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3861
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3862
+ /**
3863
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3864
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3865
+ */
3866
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3867
+ /**
3868
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3869
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3870
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3871
+ */
3872
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3873
+ /**
3874
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3875
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3876
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3877
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3878
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3879
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3880
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3881
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3882
+ */
3883
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3884
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
3885
+ /** Master switch. When false, no conversation can open a browser. */
3886
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3887
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3888
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3889
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3890
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3891
+ /**
3892
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3893
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3894
+ */
3895
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3896
+ /**
3897
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3898
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3899
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3900
+ */
3901
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3902
+ /**
3903
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3904
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3905
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3906
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3907
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3908
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3909
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3910
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3911
+ */
3912
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3913
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
3914
+ /** Master switch. When false, no conversation can open a browser. */
3915
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3916
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
3917
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
3918
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
3919
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3920
+ /**
3921
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
3922
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
3923
+ */
3924
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3925
+ /**
3926
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
3927
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
3928
+ * pushed screencast with nothing else happening counts as unused. Default 15.
3929
+ */
3930
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
3931
+ /**
3932
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
3933
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
3934
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
3935
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
3936
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
3937
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
3938
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
3939
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
3940
+ */
3941
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
3942
+ }, z.ZodTypeAny, "passthrough">>>>;
3738
3943
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
3739
3944
  /** Master switch. When false, the WebRTC SDP broker router is not mounted. Defaults to true. */
3740
3945
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -4039,6 +4244,95 @@ declare const realtimeSchema: z.ZodObject<{
4039
4244
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
4040
4245
  */
4041
4246
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4247
+ /** Remote browsers that text conversations open (off by default). */
4248
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
4249
+ /** Master switch. When false, no conversation can open a browser. */
4250
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4251
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4252
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4253
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4254
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4255
+ /**
4256
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4257
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4258
+ */
4259
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4260
+ /**
4261
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4262
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4263
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4264
+ */
4265
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4266
+ /**
4267
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4268
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4269
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4270
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4271
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4272
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4273
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4274
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4275
+ */
4276
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4277
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4278
+ /** Master switch. When false, no conversation can open a browser. */
4279
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4280
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4281
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4282
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4283
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4284
+ /**
4285
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4286
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4287
+ */
4288
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4289
+ /**
4290
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4291
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4292
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4293
+ */
4294
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4295
+ /**
4296
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4297
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4298
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4299
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4300
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4301
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4302
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4303
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4304
+ */
4305
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4306
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4307
+ /** Master switch. When false, no conversation can open a browser. */
4308
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4309
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4310
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4311
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4312
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4313
+ /**
4314
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4315
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4316
+ */
4317
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4318
+ /**
4319
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4320
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4321
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4322
+ */
4323
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4324
+ /**
4325
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4326
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4327
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4328
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4329
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4330
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4331
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4332
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4333
+ */
4334
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4335
+ }, z.ZodTypeAny, "passthrough">>>>;
4042
4336
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4043
4337
  /** Master switch. When false, the WebRTC SDP broker router is not mounted. Defaults to true. */
4044
4338
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -4343,6 +4637,95 @@ declare const realtimeSchema: z.ZodObject<{
4343
4637
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
4344
4638
  */
4345
4639
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4640
+ /** Remote browsers that text conversations open (off by default). */
4641
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
4642
+ /** Master switch. When false, no conversation can open a browser. */
4643
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4644
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4645
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4646
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4647
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4648
+ /**
4649
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4650
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4651
+ */
4652
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4653
+ /**
4654
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4655
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4656
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4657
+ */
4658
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4659
+ /**
4660
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4661
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4662
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4663
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4664
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4665
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4666
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4667
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4668
+ */
4669
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4670
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4671
+ /** Master switch. When false, no conversation can open a browser. */
4672
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4673
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4674
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4675
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4676
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4677
+ /**
4678
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4679
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4680
+ */
4681
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4682
+ /**
4683
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4684
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4685
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4686
+ */
4687
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4688
+ /**
4689
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4690
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4691
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4692
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4693
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4694
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4695
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4696
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4697
+ */
4698
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4699
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4700
+ /** Master switch. When false, no conversation can open a browser. */
4701
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4702
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
4703
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
4704
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
4705
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4706
+ /**
4707
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
4708
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
4709
+ */
4710
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4711
+ /**
4712
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
4713
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
4714
+ * pushed screencast with nothing else happening counts as unused. Default 15.
4715
+ */
4716
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4717
+ /**
4718
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
4719
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
4720
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
4721
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
4722
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
4723
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
4724
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
4725
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
4726
+ */
4727
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
4728
+ }, z.ZodTypeAny, "passthrough">>>>;
4346
4729
  }, z.ZodTypeAny, "passthrough">>;
4347
4730
  declare const configInfoSchema: z.ZodObject<{
4348
4731
  userHandling: z.ZodObject<{
@@ -4483,6 +4866,13 @@ declare const configInfoSchema: z.ZodObject<{
4483
4866
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
4484
4867
  */
4485
4868
  explorerUrl: z.ZodOptional<z.ZodString>;
4869
+ /**
4870
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
4871
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
4872
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
4873
+ * never expose an open redirect carrying session tokens.
4874
+ */
4875
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4486
4876
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4487
4877
  /** Master switch for the magic-link feature. When false, routes are not mounted and the auth provider is not registered. */
4488
4878
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -4545,6 +4935,13 @@ declare const configInfoSchema: z.ZodObject<{
4545
4935
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
4546
4936
  */
4547
4937
  explorerUrl: z.ZodOptional<z.ZodString>;
4938
+ /**
4939
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
4940
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
4941
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
4942
+ * never expose an open redirect carrying session tokens.
4943
+ */
4944
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4548
4945
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4549
4946
  /** Master switch for the magic-link feature. When false, routes are not mounted and the auth provider is not registered. */
4550
4947
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -4607,6 +5004,13 @@ declare const configInfoSchema: z.ZodObject<{
4607
5004
  * returns the token as JSON. Append `?format=json` to force JSON regardless.
4608
5005
  */
4609
5006
  explorerUrl: z.ZodOptional<z.ZodString>;
5007
+ /**
5008
+ * Explicit frontend origins permitted for per-invite `RedirectUrl` targets (in addition to
5009
+ * `explorerUrl` and concrete non-wildcard entries in `cors.allowedOrigins`). Wildcard `'*'`
5010
+ * entries are always ignored so deployments using the default `cors.allowedOrigins: ['*']`
5011
+ * never expose an open redirect carrying session tokens.
5012
+ */
5013
+ allowedRedirectOrigins: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4610
5014
  }, z.ZodTypeAny, "passthrough">>>>;
4611
5015
  devAuth: z.ZodDefault<z.ZodOptional<z.ZodObject<{
4612
5016
  /** Master switch for local-only development JWT auth (`MJ_DEV_AUTH_ENABLED=true`). Forbidden when NODE_ENV=production. */
@@ -6478,6 +6882,95 @@ declare const configInfoSchema: z.ZodObject<{
6478
6882
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
6479
6883
  */
6480
6884
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6885
+ /** Remote browsers that text conversations open (off by default). */
6886
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
6887
+ /** Master switch. When false, no conversation can open a browser. */
6888
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6889
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
6890
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6891
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
6892
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6893
+ /**
6894
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
6895
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
6896
+ */
6897
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6898
+ /**
6899
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
6900
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
6901
+ * pushed screencast with nothing else happening counts as unused. Default 15.
6902
+ */
6903
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6904
+ /**
6905
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
6906
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
6907
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
6908
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
6909
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
6910
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
6911
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
6912
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
6913
+ */
6914
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
6915
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
6916
+ /** Master switch. When false, no conversation can open a browser. */
6917
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6918
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
6919
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6920
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
6921
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6922
+ /**
6923
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
6924
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
6925
+ */
6926
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6927
+ /**
6928
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
6929
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
6930
+ * pushed screencast with nothing else happening counts as unused. Default 15.
6931
+ */
6932
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6933
+ /**
6934
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
6935
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
6936
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
6937
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
6938
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
6939
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
6940
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
6941
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
6942
+ */
6943
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
6944
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
6945
+ /** Master switch. When false, no conversation can open a browser. */
6946
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6947
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
6948
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
6949
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
6950
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6951
+ /**
6952
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
6953
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
6954
+ */
6955
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6956
+ /**
6957
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
6958
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
6959
+ * pushed screencast with nothing else happening counts as unused. Default 15.
6960
+ */
6961
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6962
+ /**
6963
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
6964
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
6965
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
6966
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
6967
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
6968
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
6969
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
6970
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
6971
+ */
6972
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
6973
+ }, z.ZodTypeAny, "passthrough">>>>;
6481
6974
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
6482
6975
  /** Master switch. When false, the WebRTC SDP broker router is not mounted. Defaults to true. */
6483
6976
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -6782,6 +7275,95 @@ declare const configInfoSchema: z.ZodObject<{
6782
7275
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
6783
7276
  */
6784
7277
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7278
+ /** Remote browsers that text conversations open (off by default). */
7279
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
7280
+ /** Master switch. When false, no conversation can open a browser. */
7281
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7282
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7283
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7284
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7285
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7286
+ /**
7287
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7288
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7289
+ */
7290
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7291
+ /**
7292
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7293
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7294
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7295
+ */
7296
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7297
+ /**
7298
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7299
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7300
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7301
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7302
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7303
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7304
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7305
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7306
+ */
7307
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7308
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
7309
+ /** Master switch. When false, no conversation can open a browser. */
7310
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7311
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7312
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7313
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7314
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7315
+ /**
7316
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7317
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7318
+ */
7319
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7320
+ /**
7321
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7322
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7323
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7324
+ */
7325
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7326
+ /**
7327
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7328
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7329
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7330
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7331
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7332
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7333
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7334
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7335
+ */
7336
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7337
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
7338
+ /** Master switch. When false, no conversation can open a browser. */
7339
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7340
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7341
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7342
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7343
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7344
+ /**
7345
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7346
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7347
+ */
7348
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7349
+ /**
7350
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7351
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7352
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7353
+ */
7354
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7355
+ /**
7356
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7357
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7358
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7359
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7360
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7361
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7362
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7363
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7364
+ */
7365
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7366
+ }, z.ZodTypeAny, "passthrough">>>>;
6785
7367
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
6786
7368
  /** Master switch. When false, the WebRTC SDP broker router is not mounted. Defaults to true. */
6787
7369
  enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
@@ -7086,6 +7668,95 @@ declare const configInfoSchema: z.ZodObject<{
7086
7668
  * is assembled anyway as `Partial` (gaps become silence). Defaults to 90.
7087
7669
  */
7088
7670
  recordingAssemblyGraceSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7671
+ /** Remote browsers that text conversations open (off by default). */
7672
+ conversationBrowser: z.ZodDefault<z.ZodOptional<z.ZodObject<{
7673
+ /** Master switch. When false, no conversation can open a browser. */
7674
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7675
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7676
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7677
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7678
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7679
+ /**
7680
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7681
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7682
+ */
7683
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7684
+ /**
7685
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7686
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7687
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7688
+ */
7689
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7690
+ /**
7691
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7692
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7693
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7694
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7695
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7696
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7697
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7698
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7699
+ */
7700
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7701
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
7702
+ /** Master switch. When false, no conversation can open a browser. */
7703
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7704
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7705
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7706
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7707
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7708
+ /**
7709
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7710
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7711
+ */
7712
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7713
+ /**
7714
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7715
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7716
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7717
+ */
7718
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7719
+ /**
7720
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7721
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7722
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7723
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7724
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7725
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7726
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7727
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7728
+ */
7729
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7730
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
7731
+ /** Master switch. When false, no conversation can open a browser. */
7732
+ enabled: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7733
+ /** Also let anonymous principals (public widget guests, anonymous magic links) open one. */
7734
+ allowAnonymous: z.ZodDefault<z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString, z.ZodNumber]>>>, boolean, string | number | boolean>>;
7735
+ /** Most conversation browsers one user (or one anonymous guest) may hold at once. Default 2. */
7736
+ maxPerUser: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7737
+ /**
7738
+ * Most conversation browsers all anonymous guests together may hold at once, since a guest can start a
7739
+ * new guest scope cheaply (limited only by the per-IP rate limit). Applies only with `allowAnonymous`. Default 4.
7740
+ */
7741
+ maxAnonymousTotal: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7742
+ /**
7743
+ * Minutes unused after which a conversation browser is ended (a reloaded or closed tab never ends its own).
7744
+ * Used means an agent or the user acts on it, or its open drawer polls for a snapshot; a drawer showing a
7745
+ * pushed screencast with nothing else happening counts as unused. Default 15.
7746
+ */
7747
+ idleMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7748
+ /**
7749
+ * Private hosts a conversation browser may still reach, as `host` or `host:port` (e.g. `localhost:4200`).
7750
+ * Every other loopback, link-local or private-network HOSTNAME is refused (private IPv4 and IPv6 ranges,
7751
+ * `localhost`, names under `.local`, `.localdomain`, `.internal`, `.intranet`, `.lan`, `.corp`, `.home`,
7752
+ * `.home.arpa`, `.private` and `.svc`, and the Docker, Kubernetes and cloud-metadata names), including where
7753
+ * a main-frame redirect lands, and in popups the page opens. This is a best-effort hostname check. Gets through: a public name that resolves to a
7754
+ * private address, WebSockets, service-worker fetches, an iframe whose source redirects to a private
7755
+ * host, redirects of the page's own requests, and the redirect request itself (only where it lands is
7756
+ * refused). For real isolation, run the browsers under network egress rules. Default none.
7757
+ */
7758
+ allowedPrivateHosts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
7759
+ }, z.ZodTypeAny, "passthrough">>>>;
7089
7760
  }, z.ZodTypeAny, "passthrough">>>>;
7090
7761
  databaseSettings: z.ZodObject<{
7091
7762
  connectionTimeout: z.ZodNumber;
@@ -7354,6 +8025,92 @@ declare const configInfoSchema: z.ZodObject<{
7354
8025
  defaultLockTimeout?: number;
7355
8026
  staleLockCleanupInterval?: number;
7356
8027
  }>>>;
8028
+ agentSessions: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8029
+ janitor: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8030
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8031
+ sweepIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8032
+ closeThresholdMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8033
+ }, "strip", z.ZodTypeAny, {
8034
+ enabled?: boolean;
8035
+ sweepIntervalMs?: number;
8036
+ closeThresholdMinutes?: number;
8037
+ }, {
8038
+ enabled?: boolean;
8039
+ sweepIntervalMs?: number;
8040
+ closeThresholdMinutes?: number;
8041
+ }>>>;
8042
+ bridgeReconciler: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8043
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8044
+ sweepIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8045
+ }, "strip", z.ZodTypeAny, {
8046
+ enabled?: boolean;
8047
+ sweepIntervalMs?: number;
8048
+ }, {
8049
+ enabled?: boolean;
8050
+ sweepIntervalMs?: number;
8051
+ }>>>;
8052
+ handoffOfferExpiry: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8053
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8054
+ sweepIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8055
+ }, "strip", z.ZodTypeAny, {
8056
+ enabled?: boolean;
8057
+ sweepIntervalMs?: number;
8058
+ }, {
8059
+ enabled?: boolean;
8060
+ sweepIntervalMs?: number;
8061
+ }>>>;
8062
+ }, "strip", z.ZodTypeAny, {
8063
+ janitor?: {
8064
+ enabled?: boolean;
8065
+ sweepIntervalMs?: number;
8066
+ closeThresholdMinutes?: number;
8067
+ };
8068
+ bridgeReconciler?: {
8069
+ enabled?: boolean;
8070
+ sweepIntervalMs?: number;
8071
+ };
8072
+ handoffOfferExpiry?: {
8073
+ enabled?: boolean;
8074
+ sweepIntervalMs?: number;
8075
+ };
8076
+ }, {
8077
+ janitor?: {
8078
+ enabled?: boolean;
8079
+ sweepIntervalMs?: number;
8080
+ closeThresholdMinutes?: number;
8081
+ };
8082
+ bridgeReconciler?: {
8083
+ enabled?: boolean;
8084
+ sweepIntervalMs?: number;
8085
+ };
8086
+ handoffOfferExpiry?: {
8087
+ enabled?: boolean;
8088
+ sweepIntervalMs?: number;
8089
+ };
8090
+ }>>>;
8091
+ agentRunWatchdog: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8092
+ sweepIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8093
+ heartbeatIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8094
+ staleThresholdMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8095
+ }, "strip", z.ZodTypeAny, {
8096
+ sweepIntervalMs?: number;
8097
+ heartbeatIntervalMs?: number;
8098
+ staleThresholdMinutes?: number;
8099
+ }, {
8100
+ sweepIntervalMs?: number;
8101
+ heartbeatIntervalMs?: number;
8102
+ staleThresholdMinutes?: number;
8103
+ }>>>;
8104
+ conversationDetailReconciler: z.ZodDefault<z.ZodOptional<z.ZodObject<{
8105
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8106
+ sweepIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8107
+ }, "strip", z.ZodTypeAny, {
8108
+ enabled?: boolean;
8109
+ sweepIntervalMs?: number;
8110
+ }, {
8111
+ enabled?: boolean;
8112
+ sweepIntervalMs?: number;
8113
+ }>>>;
7357
8114
  integrationSyncWorker: z.ZodDefault<z.ZodOptional<z.ZodObject<{
7358
8115
  /** Master switch — off by default so existing deployments keep running syncs inline. */
7359
8116
  enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
@@ -7499,7 +8256,7 @@ declare const configInfoSchema: z.ZodObject<{
7499
8256
  defaultTenantColumn?: string;
7500
8257
  entityColumnMappings?: Record<string, string>;
7501
8258
  adminRoles?: string[];
7502
- writeProtection?: "strict" | "log" | "off";
8259
+ writeProtection?: "off" | "strict" | "log";
7503
8260
  }, {
7504
8261
  enabled?: string | number | boolean;
7505
8262
  contextSource?: "header" | "linkedEntity" | "custom";
@@ -7510,7 +8267,7 @@ declare const configInfoSchema: z.ZodObject<{
7510
8267
  defaultTenantColumn?: string;
7511
8268
  entityColumnMappings?: Record<string, string>;
7512
8269
  adminRoles?: string[];
7513
- writeProtection?: "strict" | "log" | "off";
8270
+ writeProtection?: "off" | "strict" | "log";
7514
8271
  }>>>;
7515
8272
  serverExtensions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
7516
8273
  Enabled: z.ZodOptional<z.ZodBoolean>;
@@ -8059,6 +8816,7 @@ declare const configInfoSchema: z.ZodObject<{
8059
8816
  redeemRateLimitMax?: number;
8060
8817
  createRateLimitMax?: number;
8061
8818
  explorerUrl?: string;
8819
+ allowedRedirectOrigins?: string[];
8062
8820
  } & {
8063
8821
  [k: string]: unknown;
8064
8822
  };
@@ -8212,6 +8970,16 @@ declare const configInfoSchema: z.ZodObject<{
8212
8970
  [k: string]: unknown;
8213
8971
  };
8214
8972
  recordingAssemblyGraceSeconds?: number;
8973
+ conversationBrowser?: {
8974
+ enabled?: boolean;
8975
+ allowAnonymous?: boolean;
8976
+ maxPerUser?: number;
8977
+ maxAnonymousTotal?: number;
8978
+ idleMinutes?: number;
8979
+ allowedPrivateHosts?: string[];
8980
+ } & {
8981
+ [k: string]: unknown;
8982
+ };
8215
8983
  } & {
8216
8984
  [k: string]: unknown;
8217
8985
  };
@@ -8297,6 +9065,30 @@ declare const configInfoSchema: z.ZodObject<{
8297
9065
  defaultLockTimeout?: number;
8298
9066
  staleLockCleanupInterval?: number;
8299
9067
  };
9068
+ agentSessions?: {
9069
+ janitor?: {
9070
+ enabled?: boolean;
9071
+ sweepIntervalMs?: number;
9072
+ closeThresholdMinutes?: number;
9073
+ };
9074
+ bridgeReconciler?: {
9075
+ enabled?: boolean;
9076
+ sweepIntervalMs?: number;
9077
+ };
9078
+ handoffOfferExpiry?: {
9079
+ enabled?: boolean;
9080
+ sweepIntervalMs?: number;
9081
+ };
9082
+ };
9083
+ agentRunWatchdog?: {
9084
+ sweepIntervalMs?: number;
9085
+ heartbeatIntervalMs?: number;
9086
+ staleThresholdMinutes?: number;
9087
+ };
9088
+ conversationDetailReconciler?: {
9089
+ enabled?: boolean;
9090
+ sweepIntervalMs?: number;
9091
+ };
8300
9092
  integrationSyncWorker?: {
8301
9093
  enabled?: boolean;
8302
9094
  systemUserEmail?: string;
@@ -8335,7 +9127,7 @@ declare const configInfoSchema: z.ZodObject<{
8335
9127
  defaultTenantColumn?: string;
8336
9128
  entityColumnMappings?: Record<string, string>;
8337
9129
  adminRoles?: string[];
8338
- writeProtection?: "strict" | "log" | "off";
9130
+ writeProtection?: "off" | "strict" | "log";
8339
9131
  };
8340
9132
  serverExtensions?: z.objectOutputType<{
8341
9133
  Enabled: z.ZodOptional<z.ZodBoolean>;
@@ -8482,6 +9274,7 @@ declare const configInfoSchema: z.ZodObject<{
8482
9274
  redeemRateLimitMax?: number;
8483
9275
  createRateLimitMax?: number;
8484
9276
  explorerUrl?: string;
9277
+ allowedRedirectOrigins?: string[];
8485
9278
  } & {
8486
9279
  [k: string]: unknown;
8487
9280
  };
@@ -8635,6 +9428,16 @@ declare const configInfoSchema: z.ZodObject<{
8635
9428
  [k: string]: unknown;
8636
9429
  };
8637
9430
  recordingAssemblyGraceSeconds?: number;
9431
+ conversationBrowser?: {
9432
+ enabled?: string | number | boolean;
9433
+ allowAnonymous?: string | number | boolean;
9434
+ maxPerUser?: number;
9435
+ maxAnonymousTotal?: number;
9436
+ idleMinutes?: number;
9437
+ allowedPrivateHosts?: string[];
9438
+ } & {
9439
+ [k: string]: unknown;
9440
+ };
8638
9441
  } & {
8639
9442
  [k: string]: unknown;
8640
9443
  };
@@ -8720,6 +9523,30 @@ declare const configInfoSchema: z.ZodObject<{
8720
9523
  defaultLockTimeout?: number;
8721
9524
  staleLockCleanupInterval?: number;
8722
9525
  };
9526
+ agentSessions?: {
9527
+ janitor?: {
9528
+ enabled?: boolean;
9529
+ sweepIntervalMs?: number;
9530
+ closeThresholdMinutes?: number;
9531
+ };
9532
+ bridgeReconciler?: {
9533
+ enabled?: boolean;
9534
+ sweepIntervalMs?: number;
9535
+ };
9536
+ handoffOfferExpiry?: {
9537
+ enabled?: boolean;
9538
+ sweepIntervalMs?: number;
9539
+ };
9540
+ };
9541
+ agentRunWatchdog?: {
9542
+ sweepIntervalMs?: number;
9543
+ heartbeatIntervalMs?: number;
9544
+ staleThresholdMinutes?: number;
9545
+ };
9546
+ conversationDetailReconciler?: {
9547
+ enabled?: boolean;
9548
+ sweepIntervalMs?: number;
9549
+ };
8723
9550
  integrationSyncWorker?: {
8724
9551
  enabled?: boolean;
8725
9552
  systemUserEmail?: string;
@@ -8758,7 +9585,7 @@ declare const configInfoSchema: z.ZodObject<{
8758
9585
  defaultTenantColumn?: string;
8759
9586
  entityColumnMappings?: Record<string, string>;
8760
9587
  adminRoles?: string[];
8761
- writeProtection?: "strict" | "log" | "off";
9588
+ writeProtection?: "off" | "strict" | "log";
8762
9589
  };
8763
9590
  serverExtensions?: z.objectInputType<{
8764
9591
  Enabled: z.ZodOptional<z.ZodBoolean>;
@@ -8876,6 +9703,7 @@ export type MagicLinkConfig = z.infer<typeof magicLinkSchema>;
8876
9703
  export type WidgetConfig = z.infer<typeof widgetSchema>;
8877
9704
  export type TelephonyConfig = z.infer<typeof telephonySchema>;
8878
9705
  export type RealtimeConfig = z.infer<typeof realtimeSchema>;
9706
+ export type ConversationBrowserConfig = z.infer<typeof conversationBrowserSchema>;
8879
9707
  export type IdentityVerificationConfig = z.infer<typeof identityVerificationSchema>;
8880
9708
  export type TwilioTelephonyConfig = z.infer<typeof twilioTelephonySchema>;
8881
9709
  export type VonageTelephonyConfig = z.infer<typeof vonageTelephonySchema>;
@@ -8972,6 +9800,7 @@ export declare function LoadConfig(): {
8972
9800
  redeemRateLimitMax?: number;
8973
9801
  createRateLimitMax?: number;
8974
9802
  explorerUrl?: string;
9803
+ allowedRedirectOrigins?: string[];
8975
9804
  } & {
8976
9805
  [k: string]: unknown;
8977
9806
  };
@@ -9125,6 +9954,16 @@ export declare function LoadConfig(): {
9125
9954
  [k: string]: unknown;
9126
9955
  };
9127
9956
  recordingAssemblyGraceSeconds?: number;
9957
+ conversationBrowser?: {
9958
+ enabled?: boolean;
9959
+ allowAnonymous?: boolean;
9960
+ maxPerUser?: number;
9961
+ maxAnonymousTotal?: number;
9962
+ idleMinutes?: number;
9963
+ allowedPrivateHosts?: string[];
9964
+ } & {
9965
+ [k: string]: unknown;
9966
+ };
9128
9967
  } & {
9129
9968
  [k: string]: unknown;
9130
9969
  };
@@ -9210,6 +10049,30 @@ export declare function LoadConfig(): {
9210
10049
  defaultLockTimeout?: number;
9211
10050
  staleLockCleanupInterval?: number;
9212
10051
  };
10052
+ agentSessions?: {
10053
+ janitor?: {
10054
+ enabled?: boolean;
10055
+ sweepIntervalMs?: number;
10056
+ closeThresholdMinutes?: number;
10057
+ };
10058
+ bridgeReconciler?: {
10059
+ enabled?: boolean;
10060
+ sweepIntervalMs?: number;
10061
+ };
10062
+ handoffOfferExpiry?: {
10063
+ enabled?: boolean;
10064
+ sweepIntervalMs?: number;
10065
+ };
10066
+ };
10067
+ agentRunWatchdog?: {
10068
+ sweepIntervalMs?: number;
10069
+ heartbeatIntervalMs?: number;
10070
+ staleThresholdMinutes?: number;
10071
+ };
10072
+ conversationDetailReconciler?: {
10073
+ enabled?: boolean;
10074
+ sweepIntervalMs?: number;
10075
+ };
9213
10076
  integrationSyncWorker?: {
9214
10077
  enabled?: boolean;
9215
10078
  systemUserEmail?: string;
@@ -9248,7 +10111,7 @@ export declare function LoadConfig(): {
9248
10111
  defaultTenantColumn?: string;
9249
10112
  entityColumnMappings?: Record<string, string>;
9250
10113
  adminRoles?: string[];
9251
- writeProtection?: "strict" | "log" | "off";
10114
+ writeProtection?: "off" | "strict" | "log";
9252
10115
  };
9253
10116
  serverExtensions?: z.objectOutputType<{
9254
10117
  Enabled: z.ZodOptional<z.ZodBoolean>;
@@ -9397,6 +10260,7 @@ export declare function loadConfig(): {
9397
10260
  redeemRateLimitMax?: number;
9398
10261
  createRateLimitMax?: number;
9399
10262
  explorerUrl?: string;
10263
+ allowedRedirectOrigins?: string[];
9400
10264
  } & {
9401
10265
  [k: string]: unknown;
9402
10266
  };
@@ -9550,6 +10414,16 @@ export declare function loadConfig(): {
9550
10414
  [k: string]: unknown;
9551
10415
  };
9552
10416
  recordingAssemblyGraceSeconds?: number;
10417
+ conversationBrowser?: {
10418
+ enabled?: boolean;
10419
+ allowAnonymous?: boolean;
10420
+ maxPerUser?: number;
10421
+ maxAnonymousTotal?: number;
10422
+ idleMinutes?: number;
10423
+ allowedPrivateHosts?: string[];
10424
+ } & {
10425
+ [k: string]: unknown;
10426
+ };
9553
10427
  } & {
9554
10428
  [k: string]: unknown;
9555
10429
  };
@@ -9635,6 +10509,30 @@ export declare function loadConfig(): {
9635
10509
  defaultLockTimeout?: number;
9636
10510
  staleLockCleanupInterval?: number;
9637
10511
  };
10512
+ agentSessions?: {
10513
+ janitor?: {
10514
+ enabled?: boolean;
10515
+ sweepIntervalMs?: number;
10516
+ closeThresholdMinutes?: number;
10517
+ };
10518
+ bridgeReconciler?: {
10519
+ enabled?: boolean;
10520
+ sweepIntervalMs?: number;
10521
+ };
10522
+ handoffOfferExpiry?: {
10523
+ enabled?: boolean;
10524
+ sweepIntervalMs?: number;
10525
+ };
10526
+ };
10527
+ agentRunWatchdog?: {
10528
+ sweepIntervalMs?: number;
10529
+ heartbeatIntervalMs?: number;
10530
+ staleThresholdMinutes?: number;
10531
+ };
10532
+ conversationDetailReconciler?: {
10533
+ enabled?: boolean;
10534
+ sweepIntervalMs?: number;
10535
+ };
9638
10536
  integrationSyncWorker?: {
9639
10537
  enabled?: boolean;
9640
10538
  systemUserEmail?: string;
@@ -9673,7 +10571,7 @@ export declare function loadConfig(): {
9673
10571
  defaultTenantColumn?: string;
9674
10572
  entityColumnMappings?: Record<string, string>;
9675
10573
  adminRoles?: string[];
9676
- writeProtection?: "strict" | "log" | "off";
10574
+ writeProtection?: "off" | "strict" | "log";
9677
10575
  };
9678
10576
  serverExtensions?: z.objectOutputType<{
9679
10577
  Enabled: z.ZodOptional<z.ZodBoolean>;