@agent-native/core 0.98.0 → 0.98.2

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 (345) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +32 -0
  3. package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.mdx +25 -1
  4. package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +1 -1
  5. package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.mdx +25 -1
  6. package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +1 -1
  7. package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.mdx +25 -1
  8. package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +1 -1
  9. package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.mdx +25 -1
  10. package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +1 -1
  11. package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.mdx +25 -1
  12. package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +1 -1
  13. package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.mdx +25 -1
  14. package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +1 -1
  15. package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.mdx +25 -1
  16. package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +1 -1
  17. package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.mdx +25 -1
  18. package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +1 -1
  19. package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.mdx +25 -1
  20. package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +1 -1
  21. package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.mdx +25 -1
  22. package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +1 -1
  23. package/corpus/core/docs/content/pr-visual-recap.mdx +50 -1
  24. package/corpus/core/docs/content/template-plan.mdx +1 -1
  25. package/corpus/core/package.json +2 -2
  26. package/corpus/core/src/action-change-marker.ts +8 -1
  27. package/corpus/core/src/changelog/parse.ts +8 -3
  28. package/corpus/core/src/cli/plan-local.ts +43 -11
  29. package/corpus/core/src/cli/pr-visual-recap-workflow.ts +2 -9
  30. package/corpus/core/src/cli/recap.ts +356 -4
  31. package/corpus/core/src/cli/skills-content/local-files.ts +17 -12
  32. package/corpus/core/src/client/AgentPanel.tsx +2 -3
  33. package/corpus/core/src/client/AssistantChat.tsx +83 -39
  34. package/corpus/core/src/client/analytics.ts +125 -14
  35. package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +16 -2
  36. package/corpus/core/src/client/chat-model-groups.ts +28 -0
  37. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +442 -85
  38. package/corpus/core/src/client/composer/TiptapComposer.tsx +46 -29
  39. package/corpus/core/src/client/composer/VoiceButton.tsx +2 -1
  40. package/corpus/core/src/client/composer/index.ts +5 -0
  41. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +1206 -67
  42. package/corpus/core/src/client/index.ts +10 -0
  43. package/corpus/core/src/client/progress/RunsTray.tsx +13 -1
  44. package/corpus/core/src/client/session-replay.ts +10 -0
  45. package/corpus/core/src/client/settings/DemoModeSection.tsx +4 -28
  46. package/corpus/core/src/client/settings/SecretsSection.tsx +387 -266
  47. package/corpus/core/src/client/settings/SettingsPanel.tsx +117 -38
  48. package/corpus/core/src/client/url-scrub.ts +13 -0
  49. package/corpus/core/src/client/use-action.ts +12 -0
  50. package/corpus/core/src/client/use-agent-chat-home-handoff.ts +8 -1
  51. package/corpus/core/src/client/use-agent-engine-configured.ts +17 -3
  52. package/corpus/core/src/client/use-db-sync.ts +84 -34
  53. package/corpus/core/src/client/use-demo-mode-status.ts +44 -0
  54. package/corpus/core/src/client/use-pausing-interval.ts +14 -4
  55. package/corpus/core/src/integrations/scope-store.ts +1 -1
  56. package/corpus/core/src/integrations/usage-budget-store.ts +1 -1
  57. package/corpus/core/src/localization/default-messages.ts +44 -1
  58. package/corpus/core/src/mcp-client/workspace-servers.ts +4 -4
  59. package/corpus/core/src/secrets/crypto.ts +28 -8
  60. package/corpus/core/src/server/action-change.ts +5 -1
  61. package/corpus/core/src/server/action-routes.ts +8 -0
  62. package/corpus/core/src/server/poll.ts +1 -0
  63. package/corpus/core/src/server/realtime-voice.ts +299 -13
  64. package/corpus/core/src/styles/agent-native.css +2 -2
  65. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  66. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  67. package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  68. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
  69. package/corpus/core/src/vite/client.ts +9 -1
  70. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +2 -2
  71. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +10 -5
  72. package/corpus/templates/analytics/AGENTS.md +17 -13
  73. package/corpus/templates/analytics/actions/navigate.ts +59 -5
  74. package/corpus/templates/analytics/actions/view-screen.ts +3 -6
  75. package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +20 -3
  76. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +20 -5
  77. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
  78. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +21 -6
  79. package/corpus/templates/analytics/app/global.css +19 -20
  80. package/corpus/templates/analytics/app/lib/demo-chart-trend.ts +156 -0
  81. package/corpus/templates/analytics/app/lib/provider-corpus-job-sync.ts +26 -0
  82. package/corpus/templates/analytics/app/pages/Settings.tsx +35 -341
  83. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +38 -7
  84. package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +1 -1
  85. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +3 -0
  86. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +333 -272
  87. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +72 -17
  88. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +297 -108
  89. package/corpus/templates/analytics/app/root.tsx +28 -8
  90. package/corpus/templates/analytics/changelog/2026-06-24-first-party-signup-and-pageview-panels-now-honor-dashboard-filters.md +2 -1
  91. package/corpus/templates/analytics/changelog/2026-06-25-referrer-dashboard-panels-show-external-domains.md +2 -1
  92. package/corpus/templates/analytics/changelog/2026-07-06-mobile-chat-header-is-more-compact-and-the-menu-button-opens-navigation.md +1 -0
  93. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +1 -0
  94. package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +1 -0
  95. package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +1 -0
  96. package/corpus/templates/analytics/changelog/2026-07-11-analytics-no-longer-repeatedly-restarts-background-requests-.md +6 -0
  97. package/corpus/templates/analytics/changelog/2026-07-11-analytics-only-asks-for-replay-storage-when-you-enable-sessi.md +6 -0
  98. package/corpus/templates/analytics/changelog/2026-07-11-charts-now-show-their-loading-skeleton-while-refreshing.md +6 -0
  99. package/corpus/templates/analytics/changelog/2026-07-11-realtime-voice-now-shows-a-clear-connection-indicator-comple.md +6 -0
  100. package/corpus/templates/analytics/changelog/2026-07-11-replay-event-counts-stay-hidden-until-recordings-finish-load.md +6 -0
  101. package/corpus/templates/analytics/changelog/2026-07-11-replay-storage-key-mismatches-show-actionable-setup-guidance.md +6 -0
  102. package/corpus/templates/analytics/changelog/2026-07-11-replay-timelines-group-continuous-scrolling-and-dev-tools-co.md +6 -0
  103. package/corpus/templates/analytics/changelog/2026-07-11-session-filters-now-stay-compact-in-a-settings-menu-at-mediu.md +6 -0
  104. package/corpus/templates/analytics/changelog/2026-07-11-session-replay-console-errors-now-link-to-matching-issues-or.md +6 -0
  105. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-load-large-recordings-faster-and-surface-fai.md +6 -0
  106. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-preserve-recorded-styles-and-viewport-layout.md +6 -0
  107. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-stay-centered-instead-of-clipping-wide-recor.md +6 -0
  108. package/corpus/templates/analytics/changelog/2026-07-12-daily-dashboard-emails-reliably-include-the-complete-dashboa.md +6 -0
  109. package/corpus/templates/analytics/changelog/2026-07-12-demo-mode-charts-trend-upward.md +6 -0
  110. package/corpus/templates/analytics/package.json +1 -1
  111. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +1 -303
  112. package/corpus/templates/analytics/server/handlers/session-replay.ts +57 -0
  113. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +2 -0
  114. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -1
  115. package/corpus/templates/analytics/server/lib/dashboard-report.ts +17 -33
  116. package/corpus/templates/analytics/server/lib/demo-dashboards.ts +16 -3
  117. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +12 -0
  118. package/corpus/templates/analytics/server/lib/session-replay.ts +208 -2
  119. package/corpus/templates/analytics/server/plugins/onboarding.ts +7 -79
  120. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/chunks.get.ts +1 -0
  121. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +2 -2
  122. package/corpus/templates/assets/app/global.css +4 -4
  123. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +0 -1
  124. package/corpus/templates/assets/app/routes/library.tsx +0 -1
  125. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +2 -2
  126. package/corpus/templates/brain/app/global.css +5 -5
  127. package/corpus/templates/brain/app/root.tsx +0 -3
  128. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +2 -2
  129. package/corpus/templates/calendar/app/root.tsx +1 -0
  130. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +2 -2
  131. package/corpus/templates/clips/app/components/player/video-player.tsx +5 -1
  132. package/corpus/templates/clips/app/hooks/use-auto-title.ts +74 -8
  133. package/corpus/templates/clips/app/hooks/use-library.ts +12 -25
  134. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +20 -22
  135. package/corpus/templates/clips/changelog/2026-07-11-clips-no-longer-stay-stuck-on-preparing-clip-when-they-are-r.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-07-11-generated-titles-no-longer-cause-continuous-background-refreshes.md +6 -0
  137. package/corpus/templates/clips/changelog/2026-07-11-s3-storage-setup-stays-collapsed-until-you-choose-it-as-the-.md +6 -0
  138. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +2 -2
  139. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +2 -2
  140. package/corpus/templates/content/app/hooks/use-comments.ts +0 -1
  141. package/corpus/templates/content/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
  142. package/corpus/templates/content/changelog/2026-07-12-the-left-sidebar-stays-fixed-horizontally-while-scrolling-on.md +6 -0
  143. package/corpus/templates/design/app/components/layout/Header.tsx +1 -1
  144. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +2 -2
  145. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -2
  146. package/corpus/templates/macros/app/root.tsx +0 -3
  147. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +2 -2
  148. package/corpus/templates/mail/app/hooks/use-compose-state.ts +1 -0
  149. package/corpus/templates/mail/app/root.tsx +1 -12
  150. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +2 -2
  151. package/corpus/templates/plan/.agents/skills/visual-plan/references/local-files.md +17 -12
  152. package/corpus/templates/plan/.agents/skills/visual-recap/references/local-files.md +17 -12
  153. package/corpus/templates/plan/actions/validate-local-plan-source.ts +4 -4
  154. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -1
  155. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +5 -2
  156. package/corpus/templates/plan/app/hooks/use-plans.ts +6 -13
  157. package/corpus/templates/plan/app/lib/plan-local-bridge.ts +41 -0
  158. package/corpus/templates/plan/app/lib/plan-tracking.ts +3 -0
  159. package/corpus/templates/plan/app/pages/PlansPage.tsx +14 -36
  160. package/corpus/templates/plan/app/root.tsx +13 -3
  161. package/corpus/templates/plan/changelog/2026-07-11-plan-refreshes-only-when-content-changes.md +6 -0
  162. package/corpus/templates/plan/changelog/2026-07-12-local-plan-source-now-stays-on-device.md +6 -0
  163. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +4 -1
  164. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +1 -1
  165. package/corpus/templates/slides/app/components/layout/Header.tsx +1 -1
  166. package/corpus/templates/slides/app/context/DeckContext.tsx +1 -0
  167. package/corpus/templates/slides/app/hooks/use-slide-comments.ts +7 -31
  168. package/corpus/templates/slides/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
  169. package/dist/action-change-marker.d.ts +1 -0
  170. package/dist/action-change-marker.d.ts.map +1 -1
  171. package/dist/action-change-marker.js +7 -1
  172. package/dist/action-change-marker.js.map +1 -1
  173. package/dist/changelog/parse.d.ts +4 -2
  174. package/dist/changelog/parse.d.ts.map +1 -1
  175. package/dist/changelog/parse.js +5 -3
  176. package/dist/changelog/parse.js.map +1 -1
  177. package/dist/cli/plan-local.d.ts +6 -6
  178. package/dist/cli/plan-local.d.ts.map +1 -1
  179. package/dist/cli/plan-local.js +36 -7
  180. package/dist/cli/plan-local.js.map +1 -1
  181. package/dist/cli/pr-visual-recap-workflow.d.ts +2 -8
  182. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  183. package/dist/cli/pr-visual-recap-workflow.js +2 -8
  184. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  185. package/dist/cli/recap.d.ts +22 -1
  186. package/dist/cli/recap.d.ts.map +1 -1
  187. package/dist/cli/recap.js +286 -2
  188. package/dist/cli/recap.js.map +1 -1
  189. package/dist/cli/skills-content/local-files.d.ts +1 -1
  190. package/dist/cli/skills-content/local-files.d.ts.map +1 -1
  191. package/dist/cli/skills-content/local-files.js +17 -12
  192. package/dist/cli/skills-content/local-files.js.map +1 -1
  193. package/dist/client/AgentPanel.d.ts.map +1 -1
  194. package/dist/client/AgentPanel.js +2 -3
  195. package/dist/client/AgentPanel.js.map +1 -1
  196. package/dist/client/AssistantChat.d.ts +7 -0
  197. package/dist/client/AssistantChat.d.ts.map +1 -1
  198. package/dist/client/AssistantChat.js +62 -40
  199. package/dist/client/AssistantChat.js.map +1 -1
  200. package/dist/client/analytics.d.ts +8 -0
  201. package/dist/client/analytics.d.ts.map +1 -1
  202. package/dist/client/analytics.js +103 -13
  203. package/dist/client/analytics.js.map +1 -1
  204. package/dist/client/blocks/library/wireframe-kit.d.ts +2 -0
  205. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  206. package/dist/client/blocks/library/wireframe-kit.js +9 -2
  207. package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
  208. package/dist/client/chat-model-groups.d.ts.map +1 -1
  209. package/dist/client/chat-model-groups.js +24 -0
  210. package/dist/client/chat-model-groups.js.map +1 -1
  211. package/dist/client/composer/RealtimeVoiceMode.d.ts +40 -4
  212. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
  213. package/dist/client/composer/RealtimeVoiceMode.js +172 -42
  214. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
  215. package/dist/client/composer/TiptapComposer.d.ts +4 -0
  216. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  217. package/dist/client/composer/TiptapComposer.js +47 -29
  218. package/dist/client/composer/TiptapComposer.js.map +1 -1
  219. package/dist/client/composer/VoiceButton.d.ts.map +1 -1
  220. package/dist/client/composer/VoiceButton.js +2 -2
  221. package/dist/client/composer/VoiceButton.js.map +1 -1
  222. package/dist/client/composer/index.d.ts +2 -2
  223. package/dist/client/composer/index.d.ts.map +1 -1
  224. package/dist/client/composer/index.js +1 -1
  225. package/dist/client/composer/index.js.map +1 -1
  226. package/dist/client/composer/useRealtimeVoiceMode.d.ts +100 -3
  227. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  228. package/dist/client/composer/useRealtimeVoiceMode.js +952 -51
  229. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
  230. package/dist/client/index.d.ts +3 -2
  231. package/dist/client/index.d.ts.map +1 -1
  232. package/dist/client/index.js +3 -2
  233. package/dist/client/index.js.map +1 -1
  234. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  235. package/dist/client/progress/RunsTray.js +10 -1
  236. package/dist/client/progress/RunsTray.js.map +1 -1
  237. package/dist/client/session-replay.d.ts +2 -0
  238. package/dist/client/session-replay.d.ts.map +1 -1
  239. package/dist/client/session-replay.js +7 -0
  240. package/dist/client/session-replay.js.map +1 -1
  241. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  242. package/dist/client/settings/DemoModeSection.js +4 -23
  243. package/dist/client/settings/DemoModeSection.js.map +1 -1
  244. package/dist/client/settings/SecretsSection.d.ts +2 -3
  245. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  246. package/dist/client/settings/SecretsSection.js +46 -22
  247. package/dist/client/settings/SecretsSection.js.map +1 -1
  248. package/dist/client/settings/SettingsPanel.d.ts +9 -0
  249. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  250. package/dist/client/settings/SettingsPanel.js +46 -12
  251. package/dist/client/settings/SettingsPanel.js.map +1 -1
  252. package/dist/client/url-scrub.d.ts.map +1 -1
  253. package/dist/client/url-scrub.js +14 -0
  254. package/dist/client/url-scrub.js.map +1 -1
  255. package/dist/client/use-action.d.ts +2 -0
  256. package/dist/client/use-action.d.ts.map +1 -1
  257. package/dist/client/use-action.js +10 -0
  258. package/dist/client/use-action.js.map +1 -1
  259. package/dist/client/use-agent-chat-home-handoff.d.ts +2 -0
  260. package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
  261. package/dist/client/use-agent-chat-home-handoff.js +7 -1
  262. package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
  263. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  264. package/dist/client/use-agent-engine-configured.js +17 -3
  265. package/dist/client/use-agent-engine-configured.js.map +1 -1
  266. package/dist/client/use-db-sync.d.ts +8 -2
  267. package/dist/client/use-db-sync.d.ts.map +1 -1
  268. package/dist/client/use-db-sync.js +57 -32
  269. package/dist/client/use-db-sync.js.map +1 -1
  270. package/dist/client/use-demo-mode-status.d.ts +12 -0
  271. package/dist/client/use-demo-mode-status.d.ts.map +1 -0
  272. package/dist/client/use-demo-mode-status.js +30 -0
  273. package/dist/client/use-demo-mode-status.js.map +1 -0
  274. package/dist/client/use-pausing-interval.d.ts.map +1 -1
  275. package/dist/client/use-pausing-interval.js +16 -4
  276. package/dist/client/use-pausing-interval.js.map +1 -1
  277. package/dist/collab/struct-routes.d.ts +1 -1
  278. package/dist/integrations/scope-store.js +1 -1
  279. package/dist/integrations/scope-store.js.map +1 -1
  280. package/dist/integrations/usage-budget-store.js +1 -1
  281. package/dist/integrations/usage-budget-store.js.map +1 -1
  282. package/dist/localization/default-messages.d.ts +41 -1
  283. package/dist/localization/default-messages.d.ts.map +1 -1
  284. package/dist/localization/default-messages.js +41 -1
  285. package/dist/localization/default-messages.js.map +1 -1
  286. package/dist/mcp-client/workspace-servers.js +4 -4
  287. package/dist/mcp-client/workspace-servers.js.map +1 -1
  288. package/dist/notifications/routes.d.ts +3 -3
  289. package/dist/progress/routes.d.ts +1 -1
  290. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  291. package/dist/resources/handlers.d.ts +3 -3
  292. package/dist/secrets/crypto.d.ts +7 -6
  293. package/dist/secrets/crypto.d.ts.map +1 -1
  294. package/dist/secrets/crypto.js +30 -11
  295. package/dist/secrets/crypto.js.map +1 -1
  296. package/dist/server/action-change.d.ts +1 -0
  297. package/dist/server/action-change.d.ts.map +1 -1
  298. package/dist/server/action-change.js +4 -1
  299. package/dist/server/action-change.js.map +1 -1
  300. package/dist/server/action-routes.d.ts.map +1 -1
  301. package/dist/server/action-routes.js +5 -0
  302. package/dist/server/action-routes.js.map +1 -1
  303. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  304. package/dist/server/poll.d.ts.map +1 -1
  305. package/dist/server/poll.js +1 -0
  306. package/dist/server/poll.js.map +1 -1
  307. package/dist/server/realtime-voice.d.ts +7 -0
  308. package/dist/server/realtime-voice.d.ts.map +1 -1
  309. package/dist/server/realtime-voice.js +222 -12
  310. package/dist/server/realtime-voice.js.map +1 -1
  311. package/dist/styles/agent-native.css +2 -2
  312. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  313. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  314. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  315. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
  316. package/dist/vite/client.d.ts.map +1 -1
  317. package/dist/vite/client.js +6 -1
  318. package/dist/vite/client.js.map +1 -1
  319. package/docs/content/locales/ar-SA/pr-visual-recap.mdx +25 -1
  320. package/docs/content/locales/ar-SA/template-plan.mdx +1 -1
  321. package/docs/content/locales/de-DE/pr-visual-recap.mdx +25 -1
  322. package/docs/content/locales/de-DE/template-plan.mdx +1 -1
  323. package/docs/content/locales/es-ES/pr-visual-recap.mdx +25 -1
  324. package/docs/content/locales/es-ES/template-plan.mdx +1 -1
  325. package/docs/content/locales/fr-FR/pr-visual-recap.mdx +25 -1
  326. package/docs/content/locales/fr-FR/template-plan.mdx +1 -1
  327. package/docs/content/locales/hi-IN/pr-visual-recap.mdx +25 -1
  328. package/docs/content/locales/hi-IN/template-plan.mdx +1 -1
  329. package/docs/content/locales/ja-JP/pr-visual-recap.mdx +25 -1
  330. package/docs/content/locales/ja-JP/template-plan.mdx +1 -1
  331. package/docs/content/locales/ko-KR/pr-visual-recap.mdx +25 -1
  332. package/docs/content/locales/ko-KR/template-plan.mdx +1 -1
  333. package/docs/content/locales/pt-BR/pr-visual-recap.mdx +25 -1
  334. package/docs/content/locales/pt-BR/template-plan.mdx +1 -1
  335. package/docs/content/locales/zh-CN/pr-visual-recap.mdx +25 -1
  336. package/docs/content/locales/zh-CN/template-plan.mdx +1 -1
  337. package/docs/content/locales/zh-TW/pr-visual-recap.mdx +25 -1
  338. package/docs/content/locales/zh-TW/template-plan.mdx +1 -1
  339. package/docs/content/pr-visual-recap.mdx +50 -1
  340. package/docs/content/template-plan.mdx +1 -1
  341. package/package.json +2 -2
  342. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  343. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  344. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  345. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
@@ -1 +1 @@
1
- {"version":3,"file":"useRealtimeVoiceMode.js","sourceRoot":"","sources":["../../../src/client/composer/useRealtimeVoiceMode.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { requestAgentChatThreadOpen } from \"../agent-chat.js\";\nimport {\n SIDEBAR_STATE_CHANGE_EVENT,\n type AgentSidebarStateChangeDetail,\n} from \"../agent-sidebar-state.js\";\nimport { agentNativePath, appPath } from \"../api-path.js\";\nimport { readClientAppState, setClientAppState } from \"../application-state.js\";\nimport { getBrowserTabId } from \"../browser-tab-id.js\";\nimport { useT } from \"../i18n.js\";\nimport {\n createRealtimeVoiceAudioLevelStore,\n normalizeRealtimeVoiceRms,\n smoothRealtimeVoiceLevel,\n type RealtimeVoiceAudioLevelStore,\n} from \"./realtime-voice-audio-level.js\";\nimport { realtimeVoiceTranscriptRegistry } from \"./realtime-voice-transcript.js\";\nimport {\n RealtimeVoiceModeDock,\n type RealtimeVoiceModeCopy,\n type RealtimeVoiceModeState,\n} from \"./RealtimeVoiceMode.js\";\n\nconst REALTIME_VOICE_STATE_KEY = \"realtime-voice-session\";\nconst REALTIME_VOICE_REQUEST_SOURCE = \"realtime-voice\";\nconst REALTIME_VOICE_SESSION_PATH = \"/_agent-native/realtime-voice/session\";\nconst REALTIME_VOICE_TOOL_PATH = \"/_agent-native/realtime-voice/tool\";\nconst REALTIME_VOICE_CONNECTION_TIMEOUT_MS = 15_000;\n\nexport const REALTIME_VOICE_AUDIO_CONSTRAINTS: MediaTrackConstraints = {\n // Prefer the browser/OS-selected input instead of whichever physical device\n // happens to be enumerated first. `ideal` keeps browsers without the\n // synthetic `default` device from failing with OverconstrainedError.\n deviceId: { ideal: \"default\" },\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n};\n\ntype RealtimeServerEvent = Record<string, unknown> & { type?: string };\n\nexport interface RealtimeVoiceToolResult {\n callId: string;\n status: \"completed\" | \"failed\" | \"approval_required\";\n output: string;\n approvalKey?: string;\n}\n\nexport interface RealtimeVoiceModeApi {\n state: \"idle\" | RealtimeVoiceModeState;\n active: boolean;\n errorMessage: string | null;\n chatVisible: boolean;\n audioLevels: RealtimeVoiceAudioLevelStore;\n start: () => Promise<void>;\n end: () => void;\n toggleChat: () => void;\n}\n\nexport interface CompletedRealtimeVoiceTranscript {\n role: \"user\" | \"assistant\";\n text: string;\n providerId?: string;\n}\n\n/**\n * Voice mode owns the chat only temporarily. Restore the captured transcript\n * when it is still the user's active thread (or the chat has no active thread)\n * but never pull them back after they deliberately selected another thread.\n */\nexport function shouldRestoreRealtimeVoiceTranscriptThread(\n transcriptThreadId: string | undefined,\n activeThreadId: string | undefined,\n): transcriptThreadId is string {\n return Boolean(\n transcriptThreadId &&\n (!activeThreadId || activeThreadId === transcriptThreadId),\n );\n}\n\nexport function extractCompletedRealtimeVoiceTranscript(\n event: RealtimeServerEvent,\n): CompletedRealtimeVoiceTranscript | null {\n const userCompleted =\n event.type === \"conversation.item.input_audio_transcription.completed\";\n const assistantCompleted =\n event.type === \"response.output_audio_transcript.done\";\n if (!userCompleted && !assistantCompleted) return null;\n const text =\n typeof event.transcript === \"string\" ? event.transcript.trim() : \"\";\n if (!text) return null;\n const providerId = [event.item_id, event.response_id, event.event_id].find(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n );\n return {\n role: userCompleted ? \"user\" : \"assistant\",\n text,\n ...(providerId ? { providerId } : {}),\n };\n}\n\nexport interface RealtimeVoiceModeProviderProps {\n children: ReactNode;\n browserTabId?: string;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function isRealtimeVoiceAbortError(error: unknown): boolean {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n (error as { name?: unknown }).name === \"AbortError\",\n );\n}\n\nexport function createRealtimeVoiceConnectionTimeout(\n onTimeout: () => void,\n timeoutMs = REALTIME_VOICE_CONNECTION_TIMEOUT_MS,\n): () => void {\n const timeout = window.setTimeout(onTimeout, timeoutMs);\n return () => window.clearTimeout(timeout);\n}\n\nasync function readErrorResponse(response: Response): Promise<string> {\n const raw = await response.text().catch(() => \"\");\n if (!raw) return response.statusText || `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(raw) as { error?: unknown; message?: unknown };\n return String(parsed.error ?? parsed.message ?? raw);\n } catch {\n return raw.slice(0, 500);\n }\n}\n\nexport async function createRealtimeVoiceSession(\n offerSdp: string,\n options: { browserTabId?: string; signal?: AbortSignal } = {},\n): Promise<string> {\n const response = await fetch(agentNativePath(REALTIME_VOICE_SESSION_PATH), {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/sdp\",\n ...(options.browserTabId\n ? { \"X-Agent-Native-Browser-Tab\": options.browserTabId }\n : {}),\n },\n body: offerSdp,\n signal: options.signal,\n });\n if (!response.ok) {\n const message = await readErrorResponse(response);\n const error = new Error(message);\n (error as { status?: number }).status = response.status;\n throw error;\n }\n return response.text();\n}\n\nexport async function executeRealtimeVoiceTool(input: {\n name: string;\n args: Record<string, unknown>;\n callId: string;\n sessionId?: string;\n browserTabId?: string;\n signal?: AbortSignal;\n}): Promise<RealtimeVoiceToolResult> {\n const response = await fetch(agentNativePath(REALTIME_VOICE_TOOL_PATH), {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(input.browserTabId\n ? { \"X-Agent-Native-Browser-Tab\": input.browserTabId }\n : {}),\n },\n body: JSON.stringify({\n name: input.name,\n args: input.args,\n callId: input.callId,\n sessionId: input.sessionId,\n browserTabId: input.browserTabId,\n }),\n signal: input.signal,\n });\n if (!response.ok) {\n throw new Error(await readErrorResponse(response));\n }\n return (await response.json()) as RealtimeVoiceToolResult;\n}\n\nexport function extractRealtimeVoiceFunctionCalls(\n event: RealtimeServerEvent,\n): Array<{ name: string; callId: string; argumentsText: string }> {\n if (event.type === \"response.function_call_arguments.done\") {\n const name = typeof event.name === \"string\" ? event.name : \"\";\n const callId = typeof event.call_id === \"string\" ? event.call_id : \"\";\n if (!name || !callId) return [];\n return [\n {\n name,\n callId,\n argumentsText:\n typeof event.arguments === \"string\" ? event.arguments : \"{}\",\n },\n ];\n }\n if (event.type !== \"response.done\") return [];\n const response = event.response;\n if (!response || typeof response !== \"object\") return [];\n const output = (response as { output?: unknown }).output;\n if (!Array.isArray(output)) return [];\n return output.flatMap((item) => {\n if (!item || typeof item !== \"object\") return [];\n const record = item as Record<string, unknown>;\n if (record.type !== \"function_call\") return [];\n const name = typeof record.name === \"string\" ? record.name : \"\";\n const callId = typeof record.call_id === \"string\" ? record.call_id : \"\";\n if (!name || !callId) return [];\n return [\n {\n name,\n callId,\n argumentsText:\n typeof record.arguments === \"string\" ? record.arguments : \"{}\",\n },\n ];\n });\n}\n\nfunction parseFunctionArguments(text: string): Record<string, unknown> {\n const parsed = JSON.parse(text || \"{}\");\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"The voice model returned invalid tool arguments.\");\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction sendDataChannelEvent(\n channel: RTCDataChannel | null,\n event: Record<string, unknown>,\n): void {\n if (!channel || channel.readyState !== \"open\") return;\n channel.send(JSON.stringify(event));\n}\n\nfunction openOpenAiKeySettings(): void {\n if (typeof window === \"undefined\") return;\n window.location.hash = \"#secrets:OPENAI_API_KEY\";\n window.dispatchEvent(new Event(\"agent-panel:open\"));\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:open-settings\", {\n detail: { section: \"secrets\" },\n }),\n );\n}\n\nfunction openMicrophoneSettings(): void {\n if (typeof window === \"undefined\") return;\n window.location.assign(`${appPath(\"/settings\")}#voice`);\n}\n\nexport function endRealtimeVoiceBeforeNavigation(\n end: () => void,\n navigate: () => void,\n): void {\n end();\n window.setTimeout(navigate, 0);\n}\n\nexport function listenForRealtimeVoicePageHide(\n cleanup: () => void,\n): () => void {\n window.addEventListener(\"pagehide\", cleanup);\n return () => window.removeEventListener(\"pagehide\", cleanup);\n}\n\nfunction voiceCopy(t: ReturnType<typeof useT>): RealtimeVoiceModeCopy {\n return {\n entryButtonLabel: t(\"agentPanel.voiceMode.entryButtonLabel\"),\n promptTitle: t(\"agentPanel.voiceMode.promptTitle\"),\n promptDescription: t(\"agentPanel.voiceMode.promptDescription\"),\n setupTitle: t(\"agentPanel.voiceMode.setupTitle\"),\n setupDescription: t(\"agentPanel.voiceMode.setupDescription\"),\n connectBuilder: t(\"agentPanel.voiceMode.connectBuilder\"),\n useOpenAiKey: t(\"agentPanel.voiceMode.useOpenAiKey\"),\n startWithOpenAiKey: t(\"agentPanel.voiceMode.startWithOpenAiKey\"),\n startVoiceMode: t(\"agentPanel.voiceMode.start\"),\n keepDictating: t(\"agentPanel.voiceMode.keepDictating\"),\n showChat: t(\"agentPanel.voiceMode.showChat\"),\n hideChat: t(\"agentPanel.voiceMode.hideChat\"),\n endVoiceMode: t(\"agentPanel.voiceMode.end\"),\n microphoneSettings: t(\"agentPanel.voiceMode.microphoneSettings\"),\n status: {\n connecting: t(\"agentPanel.voiceMode.status.connecting\"),\n listening: t(\"agentPanel.voiceMode.status.listening\"),\n speaking: t(\"agentPanel.voiceMode.status.speaking\"),\n working: t(\"agentPanel.voiceMode.status.working\"),\n error: t(\"agentPanel.voiceMode.status.error\"),\n ending: t(\"agentPanel.voiceMode.status.ending\"),\n },\n errors: {\n unsupported: t(\"agentPanel.voiceMode.errors.unsupported\"),\n responseFailed: t(\"agentPanel.voiceMode.errors.responseFailed\"),\n sessionFailed: t(\"agentPanel.voiceMode.errors.sessionFailed\"),\n channelDisconnected: t(\"agentPanel.voiceMode.errors.channelDisconnected\"),\n connectionFailed: t(\"agentPanel.voiceMode.errors.connectionFailed\"),\n offerFailed: t(\"agentPanel.voiceMode.errors.offerFailed\"),\n },\n };\n}\n\nexport function useRealtimeVoiceModeCopy(): RealtimeVoiceModeCopy {\n const t = useT();\n return useMemo(() => voiceCopy(t), [t]);\n}\n\nfunction useRealtimeVoiceModeController(\n browserTabId?: string,\n copy?: RealtimeVoiceModeCopy,\n): RealtimeVoiceModeApi {\n const [state, setState] = useState<\"idle\" | RealtimeVoiceModeState>(\"idle\");\n const [error, setError] = useState<string | null>(null);\n const [chatVisible, setChatVisible] = useState(false);\n const [audioLevels] = useState(createRealtimeVoiceAudioLevelStore);\n const stateRef = useRef(state);\n const peerRef = useRef<RTCPeerConnection | null>(null);\n const channelRef = useRef<RTCDataChannel | null>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const audioContextRef = useRef<AudioContext | null>(null);\n const inputAnalyserRef = useRef<AnalyserNode | null>(null);\n const outputAnalyserRef = useRef<AnalyserNode | null>(null);\n const inputMeterBufferRef = useRef<Uint8Array<ArrayBuffer> | null>(null);\n const outputMeterBufferRef = useRef<Uint8Array<ArrayBuffer> | null>(null);\n const inputSourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n const outputSourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n const meterFrameRef = useRef<number | null>(null);\n const lastMeterSampleRef = useRef(0);\n const abortRef = useRef<AbortController | null>(null);\n const cancelConnectionTimeoutRef = useRef<(() => void) | null>(null);\n const handledCallsRef = useRef(new Set<string>());\n const sessionIdRef = useRef<string | undefined>(undefined);\n const startedAtRef = useRef<string | undefined>(undefined);\n const lastUserTextRef = useRef(\"\");\n const lastAssistantTextRef = useRef(\"\");\n const transcriptThreadIdRef = useRef<string | undefined>(undefined);\n const transcriptSequenceRef = useRef(0);\n\n useEffect(() => {\n stateRef.current = state;\n }, [state]);\n\n const syncAppState = useCallback(\n (nextState: \"idle\" | RealtimeVoiceModeState) => {\n const value =\n nextState === \"idle\"\n ? null\n : {\n active: true,\n status: nextState,\n model: \"gpt-realtime-2.1\",\n startedAt: startedAtRef.current,\n sessionId: sessionIdRef.current,\n browserTabId,\n lastUserText: lastUserTextRef.current || undefined,\n lastAssistantText: lastAssistantTextRef.current || undefined,\n };\n void setClientAppState(REALTIME_VOICE_STATE_KEY, value, {\n requestSource: REALTIME_VOICE_REQUEST_SOURCE,\n }).catch(() => undefined);\n },\n [browserTabId],\n );\n\n const transition = useCallback(\n (nextState: \"idle\" | RealtimeVoiceModeState) => {\n stateRef.current = nextState;\n setState(nextState);\n syncAppState(nextState);\n },\n [syncAppState],\n );\n\n const startMeterLoop = useCallback(() => {\n if (meterFrameRef.current !== null) return;\n const sample = (timestamp: number) => {\n meterFrameRef.current = requestAnimationFrame(sample);\n if (timestamp - lastMeterSampleRef.current < 50) return;\n lastMeterSampleRef.current = timestamp;\n\n const current = audioLevels.getSnapshot();\n let input = current.input;\n let output = current.output;\n const inputAnalyser = inputAnalyserRef.current;\n const inputBuffer = inputMeterBufferRef.current;\n if (inputAnalyser && inputBuffer) {\n inputAnalyser.getByteTimeDomainData(inputBuffer);\n input = smoothRealtimeVoiceLevel(\n input,\n normalizeRealtimeVoiceRms(inputBuffer),\n );\n }\n const outputAnalyser = outputAnalyserRef.current;\n const outputBuffer = outputMeterBufferRef.current;\n if (outputAnalyser && outputBuffer) {\n outputAnalyser.getByteTimeDomainData(outputBuffer);\n output = smoothRealtimeVoiceLevel(\n output,\n normalizeRealtimeVoiceRms(outputBuffer),\n );\n }\n audioLevels.set({ input, output });\n };\n meterFrameRef.current = requestAnimationFrame(sample);\n }, [audioLevels]);\n\n const attachAudioMeter = useCallback(\n (stream: MediaStream, channel: \"input\" | \"output\") => {\n try {\n const AudioCtor =\n window.AudioContext ??\n (\n window as typeof window & {\n webkitAudioContext?: typeof AudioContext;\n }\n ).webkitAudioContext;\n if (!AudioCtor) return;\n const context = audioContextRef.current ?? new AudioCtor();\n audioContextRef.current = context;\n void context.resume().catch(() => undefined);\n const analyser = context.createAnalyser();\n analyser.fftSize = 512;\n const source = context.createMediaStreamSource(stream);\n source.connect(analyser);\n const buffer = new Uint8Array(analyser.frequencyBinCount);\n if (channel === \"input\") {\n inputSourceRef.current?.disconnect();\n inputSourceRef.current = source;\n inputAnalyserRef.current = analyser;\n inputMeterBufferRef.current = buffer;\n } else {\n outputSourceRef.current?.disconnect();\n outputSourceRef.current = source;\n outputAnalyserRef.current = analyser;\n outputMeterBufferRef.current = buffer;\n }\n startMeterLoop();\n } catch {\n // Audio metering is visual-only; keep the realtime call healthy.\n }\n },\n [startMeterLoop],\n );\n\n const cleanupTransport = useCallback(() => {\n cancelConnectionTimeoutRef.current?.();\n cancelConnectionTimeoutRef.current = null;\n abortRef.current?.abort();\n abortRef.current = null;\n channelRef.current?.close();\n channelRef.current = null;\n peerRef.current?.close();\n peerRef.current = null;\n for (const track of streamRef.current?.getTracks() ?? []) track.stop();\n streamRef.current = null;\n if (audioRef.current) {\n audioRef.current.pause();\n audioRef.current.srcObject = null;\n }\n audioRef.current = null;\n if (meterFrameRef.current !== null) {\n cancelAnimationFrame(meterFrameRef.current);\n meterFrameRef.current = null;\n }\n inputSourceRef.current?.disconnect();\n outputSourceRef.current?.disconnect();\n inputSourceRef.current = null;\n outputSourceRef.current = null;\n inputAnalyserRef.current = null;\n outputAnalyserRef.current = null;\n inputMeterBufferRef.current = null;\n outputMeterBufferRef.current = null;\n lastMeterSampleRef.current = 0;\n const audioContext = audioContextRef.current;\n audioContextRef.current = null;\n if (audioContext) void audioContext.close().catch(() => undefined);\n audioLevels.reset();\n handledCallsRef.current.clear();\n }, [audioLevels]);\n\n const fail = useCallback(\n (message: string, options?: { openKeySettings?: boolean }) => {\n cleanupTransport();\n setError(message);\n transition(\"error\");\n if (options?.openKeySettings) openOpenAiKeySettings();\n },\n [cleanupTransport, transition],\n );\n\n const handleFunctionCall = useCallback(\n async (call: { name: string; callId: string; argumentsText: string }) => {\n if (handledCallsRef.current.has(call.callId)) return;\n handledCallsRef.current.add(call.callId);\n transition(\"working\");\n let result: RealtimeVoiceToolResult;\n try {\n const args = parseFunctionArguments(call.argumentsText);\n result = await executeRealtimeVoiceTool({\n name: call.name,\n args,\n callId: call.callId,\n sessionId: sessionIdRef.current,\n browserTabId,\n signal: abortRef.current?.signal,\n });\n } catch (toolError) {\n result = {\n callId: call.callId,\n status: \"failed\",\n output: errorMessage(toolError),\n };\n }\n sendDataChannelEvent(channelRef.current, {\n type: \"conversation.item.create\",\n item: {\n type: \"function_call_output\",\n call_id: call.callId,\n output: JSON.stringify(result),\n },\n });\n sendDataChannelEvent(channelRef.current, { type: \"response.create\" });\n },\n [browserTabId, transition],\n );\n\n const persistCompletedTranscript = useCallback(\n (event: RealtimeServerEvent) => {\n const transcript = extractCompletedRealtimeVoiceTranscript(event);\n const threadId = transcriptThreadIdRef.current;\n if (!transcript || !threadId) return;\n const sessionIdentity =\n sessionIdRef.current ?? startedAtRef.current ?? \"pending\";\n const providerIdentity =\n transcript.providerId ?? `sequence-${++transcriptSequenceRef.current}`;\n realtimeVoiceTranscriptRegistry.publish({\n id: `realtime-voice:${sessionIdentity}:${transcript.role}:${providerIdentity}`,\n threadId,\n role: transcript.role,\n text: transcript.text,\n createdAt: new Date().toISOString(),\n });\n },\n [],\n );\n\n const handleServerEvent = useCallback(\n (event: RealtimeServerEvent) => {\n if (event.type === \"session.created\") {\n const session = event.session;\n if (session && typeof session === \"object\") {\n const id = (session as { id?: unknown }).id;\n if (typeof id === \"string\") sessionIdRef.current = id;\n }\n transition(\"listening\");\n } else if (event.type === \"input_audio_buffer.speech_started\") {\n transition(\"listening\");\n } else if (event.type === \"input_audio_buffer.speech_stopped\") {\n transition(\"working\");\n } else if (event.type === \"response.created\") {\n lastAssistantTextRef.current = \"\";\n transition(\"working\");\n } else if (event.type === \"response.output_audio_transcript.delta\") {\n if (typeof event.delta === \"string\") {\n lastAssistantTextRef.current += event.delta;\n }\n transition(\"speaking\");\n } else if (event.type === \"response.output_audio_transcript.done\") {\n if (typeof event.transcript === \"string\") {\n lastAssistantTextRef.current = event.transcript;\n }\n persistCompletedTranscript(event);\n syncAppState(\"speaking\");\n } else if (\n event.type === \"conversation.item.input_audio_transcription.completed\"\n ) {\n if (typeof event.transcript === \"string\") {\n lastUserTextRef.current = event.transcript;\n }\n persistCompletedTranscript(event);\n syncAppState(\"working\");\n } else if (event.type === \"response.done\") {\n const response = event.response;\n const status =\n response && typeof response === \"object\"\n ? (response as { status?: unknown }).status\n : undefined;\n if (status === \"failed\") {\n fail(\n copy?.errors.responseFailed ??\n \"OpenAI could not complete the voice response.\",\n );\n return;\n }\n } else if (event.type === \"error\") {\n const detail = event.error;\n const message =\n detail && typeof detail === \"object\"\n ? String((detail as { message?: unknown }).message ?? \"\")\n : typeof detail === \"string\"\n ? detail\n : \"\";\n fail(\n message ||\n copy?.errors.sessionFailed ||\n \"The realtime voice session encountered an error.\",\n );\n return;\n }\n\n const calls = extractRealtimeVoiceFunctionCalls(event);\n for (const call of calls) void handleFunctionCall(call);\n if (event.type === \"response.done\" && calls.length === 0) {\n transition(\"listening\");\n }\n },\n [\n copy,\n fail,\n handleFunctionCall,\n persistCompletedTranscript,\n syncAppState,\n transition,\n ],\n );\n\n const start = useCallback(async () => {\n if (stateRef.current !== \"idle\") return;\n if (\n typeof RTCPeerConnection === \"undefined\" ||\n !navigator.mediaDevices?.getUserMedia\n ) {\n fail(\n copy?.errors.unsupported ??\n \"This browser does not support realtime voice conversations.\",\n );\n return;\n }\n setError(null);\n startedAtRef.current = new Date().toISOString();\n lastUserTextRef.current = \"\";\n lastAssistantTextRef.current = \"\";\n sessionIdRef.current = undefined;\n transcriptThreadIdRef.current =\n realtimeVoiceTranscriptRegistry.activeThreadId();\n transcriptSequenceRef.current = 0;\n transition(\"connecting\");\n setChatVisible(false);\n window.dispatchEvent(new Event(\"agent-panel:close\"));\n\n const abortController = new AbortController();\n abortRef.current = abortController;\n const isCurrentAttempt = () =>\n abortRef.current === abortController && !abortController.signal.aborted;\n const markConnected = () => {\n if (!isCurrentAttempt()) return;\n cancelConnectionTimeoutRef.current?.();\n cancelConnectionTimeoutRef.current = null;\n transition(\"listening\");\n };\n cancelConnectionTimeoutRef.current = createRealtimeVoiceConnectionTimeout(\n () => {\n if (!isCurrentAttempt()) return;\n fail(\n copy?.errors.connectionFailed ??\n \"The realtime voice connection timed out.\",\n );\n },\n );\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: REALTIME_VOICE_AUDIO_CONSTRAINTS,\n });\n if (!isCurrentAttempt()) {\n for (const track of stream.getTracks()) track.stop();\n return;\n }\n streamRef.current = stream;\n attachAudioMeter(stream, \"input\");\n\n const peer = new RTCPeerConnection();\n peerRef.current = peer;\n for (const track of stream.getAudioTracks()) peer.addTrack(track, stream);\n\n const audio = document.createElement(\"audio\");\n audio.autoplay = true;\n audio.setAttribute(\"playsinline\", \"\");\n audioRef.current = audio;\n peer.ontrack = (trackEvent) => {\n const remoteStream = trackEvent.streams[0] ?? null;\n audio.srcObject = remoteStream;\n if (remoteStream) attachAudioMeter(remoteStream, \"output\");\n void audio.play().catch(() => undefined);\n };\n\n const channel = peer.createDataChannel(\"oai-events\");\n channelRef.current = channel;\n channel.onopen = markConnected;\n channel.onmessage = (messageEvent) => {\n if (!isCurrentAttempt()) return;\n try {\n handleServerEvent(JSON.parse(String(messageEvent.data)));\n } catch {\n // Ignore malformed provider events without ending a healthy call.\n }\n };\n channel.onerror = () => {\n if (!isCurrentAttempt()) return;\n fail(\n copy?.errors.channelDisconnected ??\n \"The realtime voice control channel disconnected.\",\n );\n };\n peer.onconnectionstatechange = () => {\n if (!isCurrentAttempt()) return;\n if (peer.connectionState === \"connected\") markConnected();\n if (peer.connectionState === \"failed\") {\n fail(\n copy?.errors.connectionFailed ??\n \"The realtime voice connection failed.\",\n );\n }\n };\n\n const offer = await peer.createOffer();\n if (!isCurrentAttempt()) return;\n await peer.setLocalDescription(offer);\n if (!isCurrentAttempt()) return;\n if (!offer.sdp) {\n throw new Error(\n copy?.errors.offerFailed ??\n \"The browser did not create an audio offer.\",\n );\n }\n const answerSdp = await createRealtimeVoiceSession(offer.sdp, {\n browserTabId,\n signal: abortController.signal,\n });\n if (!isCurrentAttempt()) return;\n await peer.setRemoteDescription({ type: \"answer\", sdp: answerSdp });\n } catch (startError) {\n // Ending a connection aborts the SDP request by design. A superseded\n // attempt must never resurrect the dock or surface that cancellation as\n // an error after cleanup.\n if (\n isRealtimeVoiceAbortError(startError) ||\n abortController.signal.aborted ||\n abortRef.current !== abortController\n ) {\n return;\n }\n const status = (startError as { status?: unknown })?.status;\n fail(errorMessage(startError), { openKeySettings: status === 400 });\n }\n }, [\n attachAudioMeter,\n browserTabId,\n copy,\n fail,\n handleServerEvent,\n transition,\n ]);\n\n const end = useCallback(() => {\n if (stateRef.current === \"idle\" || stateRef.current === \"ending\") return;\n const transcriptThreadId = transcriptThreadIdRef.current;\n const activeThreadId = realtimeVoiceTranscriptRegistry.activeThreadId();\n transition(\"ending\");\n cleanupTransport();\n setError(null);\n sessionIdRef.current = undefined;\n startedAtRef.current = undefined;\n transcriptThreadIdRef.current = undefined;\n setChatVisible(true);\n if (\n shouldRestoreRealtimeVoiceTranscriptThread(\n transcriptThreadId,\n activeThreadId,\n )\n ) {\n requestAgentChatThreadOpen({\n threadId: transcriptThreadId,\n // The request is delivered asynchronously. Re-checking this at the\n // receiver prevents a navigation that happened during that gap from\n // being overwritten.\n onlyIfActiveThreadId: transcriptThreadId,\n });\n } else {\n window.dispatchEvent(new Event(\"agent-panel:open\"));\n }\n transition(\"idle\");\n }, [cleanupTransport, transition]);\n\n const toggleChat = useCallback(() => {\n setChatVisible((current) => !current);\n window.dispatchEvent(new Event(\"agent-panel:toggle\"));\n }, []);\n\n useEffect(() => {\n const onSidebarState = (event: Event) => {\n const detail = (event as CustomEvent<AgentSidebarStateChangeDetail>)\n .detail;\n if (detail && typeof detail.open === \"boolean\") {\n setChatVisible(detail.open);\n }\n };\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onSidebarState);\n return () =>\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onSidebarState);\n }, []);\n\n useEffect(() => {\n const stopListening = listenForRealtimeVoicePageHide(cleanupTransport);\n return () => {\n stopListening();\n cleanupTransport();\n };\n }, [cleanupTransport]);\n\n return {\n state,\n active: state !== \"idle\",\n errorMessage: error,\n chatVisible,\n audioLevels,\n start,\n end,\n toggleChat,\n };\n}\n\nconst RealtimeVoiceModeContext = createContext<RealtimeVoiceModeApi | null>(\n null,\n);\n\nexport function RealtimeVoiceModeProvider({\n children,\n browserTabId,\n}: RealtimeVoiceModeProviderProps) {\n const resolvedBrowserTabId = useMemo(\n () => browserTabId ?? getBrowserTabId(),\n [browserTabId],\n );\n const copy = useRealtimeVoiceModeCopy();\n const voice = useRealtimeVoiceModeController(resolvedBrowserTabId, copy);\n\n return (\n <RealtimeVoiceModeContext.Provider value={voice}>\n {children}\n {voice.active && typeof document !== \"undefined\"\n ? createPortal(\n <RealtimeVoiceModeDock\n state={voice.state === \"idle\" ? \"ending\" : voice.state}\n copy={copy}\n chatVisible={voice.chatVisible}\n audioLevels={voice.audioLevels}\n onToggleChat={voice.toggleChat}\n onEndVoiceMode={voice.end}\n onOpenMicrophoneSettings={() =>\n endRealtimeVoiceBeforeNavigation(\n voice.end,\n openMicrophoneSettings,\n )\n }\n errorMessage={voice.errorMessage}\n />,\n document.body,\n )\n : null}\n </RealtimeVoiceModeContext.Provider>\n );\n}\n\n/**\n * Ensure standalone/full-page composers get realtime voice without nesting a\n * second session owner inside the persistent AgentSidebar provider.\n */\nexport function RealtimeVoiceModeBoundary({\n children,\n browserTabId,\n}: RealtimeVoiceModeProviderProps) {\n const existing = useRealtimeVoiceModeOptional();\n if (existing) {\n return (\n <RealtimeVoiceModeComposerSurface>\n {children}\n </RealtimeVoiceModeComposerSurface>\n );\n }\n return (\n <RealtimeVoiceModeProvider browserTabId={browserTabId}>\n <RealtimeVoiceModeComposerSurface>\n {children}\n </RealtimeVoiceModeComposerSurface>\n </RealtimeVoiceModeProvider>\n );\n}\n\n/** Hide a composer while voice owns input; the dock can reveal it on demand. */\nfunction RealtimeVoiceModeComposerSurface({\n children,\n}: Pick<RealtimeVoiceModeProviderProps, \"children\">) {\n const voice = useRealtimeVoiceModeOptional();\n if (voice?.active && !voice.chatVisible) return null;\n return children;\n}\n\nexport function useRealtimeVoiceMode(): RealtimeVoiceModeApi {\n const value = useContext(RealtimeVoiceModeContext);\n if (!value) {\n throw new Error(\n \"useRealtimeVoiceMode must be used inside RealtimeVoiceModeProvider.\",\n );\n }\n return value;\n}\n\nexport function useRealtimeVoiceModeOptional(): RealtimeVoiceModeApi | null {\n return useContext(RealtimeVoiceModeContext);\n}\n\nexport async function readRealtimeVoiceContext(): Promise<{\n navigation: unknown;\n url: unknown;\n}> {\n const [navigation, url] = await Promise.all([\n readClientAppState(\"navigation\").catch(() => null),\n readClientAppState(\"__url__\").catch(() => null),\n ]);\n return { navigation, url };\n}\n"]}
1
+ {"version":3,"file":"useRealtimeVoiceMode.js","sourceRoot":"","sources":["../../../src/client/composer/useRealtimeVoiceMode.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { requestAgentChatThreadOpen } from \"../agent-chat.js\";\nimport {\n SIDEBAR_STATE_CHANGE_EVENT,\n type AgentSidebarStateChangeDetail,\n} from \"../agent-sidebar-state.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { readClientAppState, setClientAppState } from \"../application-state.js\";\nimport { getBrowserTabId } from \"../browser-tab-id.js\";\nimport { useT } from \"../i18n.js\";\nimport {\n createRealtimeVoiceAudioLevelStore,\n normalizeRealtimeVoiceRms,\n smoothRealtimeVoiceLevel,\n type RealtimeVoiceAudioLevelStore,\n} from \"./realtime-voice-audio-level.js\";\nimport { realtimeVoiceTranscriptRegistry } from \"./realtime-voice-transcript.js\";\nimport {\n RealtimeVoiceModeDock,\n type RealtimeVoiceModeCopy,\n type RealtimeVoiceModeState,\n} from \"./RealtimeVoiceMode.js\";\n\nconst REALTIME_VOICE_STATE_KEY = \"realtime-voice-session\";\nconst REALTIME_VOICE_PREFERENCES_KEY = \"realtime-voice-prefs\";\nconst REALTIME_VOICE_REQUEST_SOURCE = \"realtime-voice\";\nconst REALTIME_VOICE_SESSION_PATH = \"/_agent-native/realtime-voice/session\";\nconst REALTIME_VOICE_TOOL_PATH = \"/_agent-native/realtime-voice/tool\";\nconst REALTIME_VOICE_CAPABILITY_HEADER = \"X-Agent-Native-Realtime-Capability\";\nconst REALTIME_VOICE_CONNECTION_TIMEOUT_MS = 15_000;\nconst REALTIME_VOICE_MAX_TOOLS = 32;\nconst REALTIME_VOICE_MAX_TOOL_SCHEMA_BYTES = 32_000;\nconst REALTIME_VOICE_MAX_SESSION_BYTES = 64_000;\nconst REALTIME_VOICE_TOOL_UPDATE_TIMEOUT_MS = 5_000;\nconst REALTIME_VOICE_PRIORITY_TOOL_NAMES = [\n \"navigate\",\n \"set-url-path\",\n \"set-search-params\",\n \"view-screen\",\n \"tool-search\",\n] as const;\nconst REALTIME_VOICE_TOOL_NAME = /^[A-Za-z0-9_-]{1,64}$/;\nconst REALTIME_VOICE_MICROPHONE_STORAGE_KEY =\n \"agent-native:realtime-voice-microphone\";\n\nexport const REALTIME_VOICE_LANGUAGES = [\n \"auto\",\n \"en\",\n \"es\",\n \"fr\",\n \"de\",\n \"it\",\n \"pt\",\n \"ja\",\n \"ko\",\n \"zh\",\n] as const;\nexport const REALTIME_VOICE_INTELLIGENCE_LEVELS = [\n \"instant\",\n \"balanced\",\n \"deep\",\n] as const;\nexport const REALTIME_VOICES = [\n \"marin\",\n \"cedar\",\n \"coral\",\n \"sage\",\n \"verse\",\n \"alloy\",\n \"ash\",\n \"ballad\",\n \"echo\",\n \"shimmer\",\n] as const;\n\nexport type RealtimeVoiceLanguage = (typeof REALTIME_VOICE_LANGUAGES)[number];\nexport type RealtimeVoiceIntelligence =\n (typeof REALTIME_VOICE_INTELLIGENCE_LEVELS)[number];\nexport type RealtimeVoice = (typeof REALTIME_VOICES)[number];\n\nexport interface RealtimeVoicePreferences {\n language: RealtimeVoiceLanguage;\n intelligence: RealtimeVoiceIntelligence;\n voice: RealtimeVoice;\n}\n\nexport const DEFAULT_REALTIME_VOICE_PREFERENCES: RealtimeVoicePreferences = {\n language: \"auto\",\n intelligence: \"instant\",\n voice: \"marin\",\n};\n\nexport const REALTIME_VOICE_AUDIO_CONSTRAINTS: MediaTrackConstraints = {\n // Prefer the browser/OS-selected input instead of whichever physical device\n // happens to be enumerated first. `ideal` keeps browsers without the\n // synthetic `default` device from failing with OverconstrainedError.\n deviceId: { ideal: \"default\" },\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n};\n\ntype RealtimeServerEvent = Record<string, unknown> & { type?: string };\n\nexport interface RealtimeVoiceToolResult {\n callId: string;\n status: \"completed\" | \"failed\" | \"approval_required\";\n output: string;\n approvalKey?: string;\n expandedTools?: RealtimeVoiceFunctionTool[];\n}\n\nexport interface RealtimeVoiceSessionAnswer {\n sdp: string;\n capability?: string;\n}\n\nexport interface RealtimeVoiceFunctionTool {\n type: \"function\";\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n}\n\nexport interface RealtimeVoiceModeApi {\n state: \"idle\" | RealtimeVoiceModeState;\n active: boolean;\n errorMessage: string | null;\n chatVisible: boolean;\n audioLevels: RealtimeVoiceAudioLevelStore;\n preferences: RealtimeVoicePreferences;\n microphones: readonly RealtimeVoiceMicrophone[];\n microphoneDeviceId: string;\n microphoneSwitching: boolean;\n microphoneError: string | null;\n voiceChangePending: boolean;\n setLanguage: (language: RealtimeVoiceLanguage) => void;\n setIntelligence: (intelligence: RealtimeVoiceIntelligence) => void;\n setVoice: (voice: RealtimeVoice) => void;\n setMicrophone: (deviceId: string) => Promise<void>;\n start: () => Promise<void>;\n end: () => void;\n toggleChat: () => void;\n}\n\nexport interface RealtimeVoiceMicrophone {\n deviceId: string;\n label: string;\n}\n\nexport function createRealtimeVoiceAudioConstraints(\n deviceId = \"default\",\n exact = false,\n): MediaTrackConstraints {\n return {\n ...REALTIME_VOICE_AUDIO_CONSTRAINTS,\n deviceId:\n deviceId === \"default\"\n ? { ideal: \"default\" }\n : exact\n ? { exact: deviceId }\n : { ideal: deviceId },\n };\n}\n\nexport async function replaceRealtimeVoiceMicrophone(options: {\n mediaDevices: Pick<MediaDevices, \"getUserMedia\">;\n peer: Pick<RTCPeerConnection, \"getSenders\">;\n currentStream: MediaStream | null;\n deviceId: string;\n}): Promise<MediaStream> {\n const replacementStream = await options.mediaDevices.getUserMedia({\n audio: createRealtimeVoiceAudioConstraints(options.deviceId, true),\n });\n try {\n const replacementTrack = replacementStream.getAudioTracks()[0];\n const sender = options.peer\n .getSenders()\n .find((candidate) => candidate.track?.kind === \"audio\");\n if (!replacementTrack || !sender) {\n throw new Error(\"No active microphone track is available.\");\n }\n\n await sender.replaceTrack(replacementTrack);\n for (const track of options.currentStream?.getTracks() ?? []) {\n track.onended = null;\n track.stop();\n }\n return replacementStream;\n } catch (error) {\n for (const track of replacementStream.getTracks()) track.stop();\n throw error;\n }\n}\n\nfunction readRealtimeVoiceMicrophoneId(): string {\n if (typeof window === \"undefined\") return \"default\";\n try {\n return (\n window.localStorage.getItem(REALTIME_VOICE_MICROPHONE_STORAGE_KEY) ||\n \"default\"\n );\n } catch {\n return \"default\";\n }\n}\n\nfunction writeRealtimeVoiceMicrophoneId(deviceId: string): void {\n try {\n window.localStorage.setItem(\n REALTIME_VOICE_MICROPHONE_STORAGE_KEY,\n deviceId,\n );\n } catch {\n // A remembered local device is optional and must never block voice mode.\n }\n}\n\nfunction isOneOf<T extends readonly string[]>(\n values: T,\n value: unknown,\n): value is T[number] {\n return typeof value === \"string\" && values.includes(value);\n}\n\nexport function normalizeRealtimeVoicePreferences(\n value: unknown,\n): RealtimeVoicePreferences {\n const record =\n value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n return {\n language: isOneOf(REALTIME_VOICE_LANGUAGES, record.language)\n ? record.language\n : DEFAULT_REALTIME_VOICE_PREFERENCES.language,\n intelligence: isOneOf(\n REALTIME_VOICE_INTELLIGENCE_LEVELS,\n record.intelligence,\n )\n ? record.intelligence\n : DEFAULT_REALTIME_VOICE_PREFERENCES.intelligence,\n voice: isOneOf(REALTIME_VOICES, record.voice)\n ? record.voice\n : DEFAULT_REALTIME_VOICE_PREFERENCES.voice,\n };\n}\n\nexport function resolveRealtimeVoiceLanguage(\n language: RealtimeVoiceLanguage,\n browserLanguages: readonly string[] = [],\n): Exclude<RealtimeVoiceLanguage, \"auto\"> {\n if (language !== \"auto\") return language;\n for (const locale of browserLanguages) {\n const primary = locale.trim().split(\"-\")[0]?.toLowerCase();\n if (isOneOf(REALTIME_VOICE_LANGUAGES, primary) && primary !== \"auto\") {\n return primary;\n }\n }\n return \"en\";\n}\n\nexport function realtimeVoiceReasoningEffort(\n intelligence: RealtimeVoiceIntelligence,\n): \"minimal\" | \"low\" | \"medium\" {\n if (intelligence === \"balanced\") return \"low\";\n if (intelligence === \"deep\") return \"medium\";\n return \"minimal\";\n}\n\nexport function createRealtimeVoicePreferenceUpdate(\n preferences: RealtimeVoicePreferences,\n options: {\n browserLanguages?: readonly string[];\n includeVoice?: boolean;\n } = {},\n): Record<string, unknown> {\n return {\n type: \"session.update\",\n session: {\n type: \"realtime\",\n reasoning: {\n effort: realtimeVoiceReasoningEffort(preferences.intelligence),\n },\n audio: {\n input: {\n transcription: {\n model: \"gpt-4o-mini-transcribe\",\n language: resolveRealtimeVoiceLanguage(\n preferences.language,\n options.browserLanguages,\n ),\n },\n },\n ...(options.includeVoice\n ? { output: { voice: preferences.voice } }\n : {}),\n },\n },\n };\n}\n\nexport interface CompletedRealtimeVoiceTranscript {\n role: \"user\" | \"assistant\";\n text: string;\n providerId?: string;\n}\n\nexport interface RealtimeVoiceTranscriptSequencer {\n handle: (event: RealtimeServerEvent) => void;\n reset: () => void;\n}\n\ninterface SequencedRealtimeVoiceTranscript {\n status: \"pending\" | \"completed\" | \"skipped\";\n role?: CompletedRealtimeVoiceTranscript[\"role\"];\n transcript?: CompletedRealtimeVoiceTranscript;\n}\n\n/**\n * Input transcription is produced by a separate ASR model and can finish after\n * the assistant response. Reserve each message's position when OpenAI adds it\n * to the conversation, then publish only the contiguous completed prefix.\n */\nexport function createRealtimeVoiceTranscriptSequencer(\n publish: (transcript: CompletedRealtimeVoiceTranscript) => void,\n): RealtimeVoiceTranscriptSequencer {\n const order: string[] = [];\n const items = new Map<string, SequencedRealtimeVoiceTranscript>();\n const settledItemIds = new Set<string>();\n const receivedTranscriptIds = new Set<string>();\n\n const reserve = (\n id: string,\n role?: CompletedRealtimeVoiceTranscript[\"role\"],\n ) => {\n if (settledItemIds.has(id)) return;\n const existing = items.get(id);\n if (existing) {\n existing.role ??= role;\n return;\n }\n order.push(id);\n items.set(id, { status: \"pending\", role });\n };\n\n const drain = () => {\n while (order.length > 0) {\n const id = order[0]!;\n const entry = items.get(id);\n if (!entry || entry.status === \"pending\") return;\n order.shift();\n items.delete(id);\n settledItemIds.add(id);\n if (entry.status === \"completed\" && entry.transcript) {\n publish(entry.transcript);\n }\n }\n };\n\n const skip = (id: unknown) => {\n if (typeof id !== \"string\" || !id) return;\n reserve(id);\n const entry = items.get(id)!;\n if (entry.status === \"pending\") entry.status = \"skipped\";\n };\n\n return {\n handle(event) {\n if (\n event.type === \"conversation.item.added\" ||\n event.type === \"conversation.item.created\"\n ) {\n const item = event.item;\n if (item && typeof item === \"object\") {\n const record = item as Record<string, unknown>;\n if (\n record.type === \"message\" &&\n (record.role === \"user\" || record.role === \"assistant\") &&\n typeof record.id === \"string\"\n ) {\n reserve(record.id, record.role);\n }\n }\n }\n\n const transcript = extractCompletedRealtimeVoiceTranscript(event);\n if (transcript) {\n const transcriptId = transcript.providerId\n ? `${transcript.role}:${transcript.providerId}`\n : undefined;\n if (transcriptId && receivedTranscriptIds.has(transcriptId)) return;\n if (transcriptId) receivedTranscriptIds.add(transcriptId);\n const itemId =\n typeof event.item_id === \"string\" ? event.item_id : undefined;\n if (!itemId) {\n // Older providers may omit item_id. Match the first reserved slot for\n // that role so one incomplete legacy event cannot strand the queue.\n const reservedId = order.find((id) => {\n const entry = items.get(id);\n return (\n entry?.status === \"pending\" && entry.role === transcript.role\n );\n });\n if (reservedId) {\n items.set(reservedId, {\n status: \"completed\",\n role: transcript.role,\n transcript,\n });\n } else {\n publish(transcript);\n }\n } else {\n if (settledItemIds.has(itemId)) return;\n reserve(itemId, transcript.role);\n items.set(itemId, {\n status: \"completed\",\n role: transcript.role,\n transcript,\n });\n }\n } else if (\n event.type === \"conversation.item.input_audio_transcription.failed\" ||\n event.type === \"conversation.item.deleted\"\n ) {\n skip(event.item_id);\n } else if (event.type === \"response.done\") {\n const response = event.response;\n const output =\n response && typeof response === \"object\"\n ? (response as { output?: unknown }).output\n : undefined;\n if (Array.isArray(output)) {\n for (const item of output) {\n if (!item || typeof item !== \"object\") continue;\n const record = item as Record<string, unknown>;\n if (record.type === \"message\") skip(record.id);\n }\n }\n }\n drain();\n },\n reset() {\n order.length = 0;\n items.clear();\n settledItemIds.clear();\n receivedTranscriptIds.clear();\n },\n };\n}\n\nexport function createRealtimeVoiceGreetingEvent(): Record<string, unknown> {\n return {\n type: \"response.create\",\n response: {\n output_modalities: [\"audio\"],\n instructions:\n 'Say exactly: \"How can I help you?\" Do not add anything else.',\n // Do not set max_output_tokens here. Realtime counts assistant audio at\n // roughly one token per 50 ms, so a text-sized cap can cut speech off.\n // The exact-response instruction already keeps this greeting bounded.\n },\n };\n}\n\nexport function createRealtimeVoiceGreetingStarter(\n send: (event: Record<string, unknown>) => void,\n): { start: () => boolean; reset: () => void } {\n let started = false;\n return {\n start() {\n if (started) return false;\n started = true;\n send(createRealtimeVoiceGreetingEvent());\n return true;\n },\n reset() {\n started = false;\n },\n };\n}\n\n/**\n * Voice mode owns the chat only temporarily. Restore the captured transcript\n * when it is still the user's active thread (or the chat has no active thread)\n * but never pull them back after they deliberately selected another thread.\n */\nexport function shouldRestoreRealtimeVoiceTranscriptThread(\n transcriptThreadId: string | undefined,\n activeThreadId: string | undefined,\n): transcriptThreadId is string {\n return Boolean(\n transcriptThreadId &&\n (!activeThreadId || activeThreadId === transcriptThreadId),\n );\n}\n\nexport function extractCompletedRealtimeVoiceTranscript(\n event: RealtimeServerEvent,\n): CompletedRealtimeVoiceTranscript | null {\n const userCompleted =\n event.type === \"conversation.item.input_audio_transcription.completed\";\n const assistantCompleted =\n event.type === \"response.output_audio_transcript.done\";\n if (!userCompleted && !assistantCompleted) return null;\n const text =\n typeof event.transcript === \"string\" ? event.transcript.trim() : \"\";\n if (!text) return null;\n const providerId = [event.item_id, event.response_id, event.event_id].find(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n );\n return {\n role: userCompleted ? \"user\" : \"assistant\",\n text,\n ...(providerId ? { providerId } : {}),\n };\n}\n\nexport interface RealtimeVoiceModeProviderProps {\n children: ReactNode;\n browserTabId?: string;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function isRealtimeVoiceAbortError(error: unknown): boolean {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n (error as { name?: unknown }).name === \"AbortError\",\n );\n}\n\nexport function isRealtimeVoiceSetupRequiredError(error: unknown): boolean {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n (error as { status?: unknown }).status === 409,\n );\n}\n\nexport function createRealtimeVoiceConnectionTimeout(\n onTimeout: () => void,\n timeoutMs = REALTIME_VOICE_CONNECTION_TIMEOUT_MS,\n): () => void {\n const timeout = window.setTimeout(onTimeout, timeoutMs);\n return () => window.clearTimeout(timeout);\n}\n\nexport function createRealtimeVoiceConnectionGate(\n onTimeout: () => void,\n timeoutMs = REALTIME_VOICE_CONNECTION_TIMEOUT_MS,\n): {\n markTransportReady: () => void;\n markSessionCreated: () => void;\n cancel: () => void;\n} {\n const cancel = createRealtimeVoiceConnectionTimeout(onTimeout, timeoutMs);\n return {\n // RTC connectivity alone is not enough: the session may never finish its\n // Realtime handshake. Keep the deadline armed until session.created.\n markTransportReady() {},\n markSessionCreated: cancel,\n cancel,\n };\n}\n\nasync function readErrorResponse(response: Response): Promise<string> {\n const raw = await response.text().catch(() => \"\");\n if (!raw) return response.statusText || `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(raw) as { error?: unknown; message?: unknown };\n return String(parsed.error ?? parsed.message ?? raw);\n } catch {\n return raw.slice(0, 500);\n }\n}\n\ninterface RealtimeVoiceSessionOptions {\n browserTabId?: string;\n signal?: AbortSignal;\n preferences?: RealtimeVoicePreferences;\n browserLanguages?: readonly string[];\n}\n\nexport async function createRealtimeVoiceSessionWithCapability(\n offerSdp: string,\n options: RealtimeVoiceSessionOptions = {},\n): Promise<RealtimeVoiceSessionAnswer> {\n const preferences = options.preferences;\n const response = await fetch(agentNativePath(REALTIME_VOICE_SESSION_PATH), {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/sdp\",\n ...(options.browserTabId\n ? { \"X-Agent-Native-Browser-Tab\": options.browserTabId }\n : {}),\n ...(preferences\n ? {\n \"X-Agent-Native-Realtime-Language\": resolveRealtimeVoiceLanguage(\n preferences.language,\n options.browserLanguages,\n ),\n \"X-Agent-Native-Realtime-Intelligence\": preferences.intelligence,\n \"X-Agent-Native-Realtime-Voice\": preferences.voice,\n }\n : {}),\n },\n body: offerSdp,\n signal: options.signal,\n });\n if (!response.ok) {\n const message = await readErrorResponse(response);\n const error = new Error(message);\n (error as { status?: number }).status = response.status;\n throw error;\n }\n const sdp = await response.text();\n const capability = response.headers.get(REALTIME_VOICE_CAPABILITY_HEADER);\n return {\n sdp,\n ...(capability ? { capability } : {}),\n };\n}\n\n/** Backwards-compatible SDP-only session helper for existing client callers. */\nexport async function createRealtimeVoiceSession(\n offerSdp: string,\n options: RealtimeVoiceSessionOptions = {},\n): Promise<string> {\n return (await createRealtimeVoiceSessionWithCapability(offerSdp, options))\n .sdp;\n}\n\nexport async function executeRealtimeVoiceTool(input: {\n name: string;\n args: Record<string, unknown>;\n callId: string;\n sessionId?: string;\n browserTabId?: string;\n capability?: string;\n signal?: AbortSignal;\n}): Promise<RealtimeVoiceToolResult> {\n const response = await fetch(agentNativePath(REALTIME_VOICE_TOOL_PATH), {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(input.browserTabId\n ? { \"X-Agent-Native-Browser-Tab\": input.browserTabId }\n : {}),\n ...(input.capability\n ? { [REALTIME_VOICE_CAPABILITY_HEADER]: input.capability }\n : {}),\n },\n body: JSON.stringify({\n name: input.name,\n args: input.args,\n callId: input.callId,\n sessionId: input.sessionId,\n browserTabId: input.browserTabId,\n }),\n signal: input.signal,\n });\n if (!response.ok) {\n throw new Error(await readErrorResponse(response));\n }\n return (await response.json()) as RealtimeVoiceToolResult;\n}\n\nfunction jsonByteLength(value: unknown): number {\n return new TextEncoder().encode(JSON.stringify(value)).byteLength;\n}\n\nfunction normalizeRealtimeVoiceFunctionTool(\n value: unknown,\n): RealtimeVoiceFunctionTool | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const record = value as Record<string, unknown>;\n if (\n record.type !== \"function\" ||\n typeof record.name !== \"string\" ||\n !REALTIME_VOICE_TOOL_NAME.test(record.name)\n ) {\n return null;\n }\n if (\n record.description !== undefined &&\n typeof record.description !== \"string\"\n ) {\n return null;\n }\n if (\n record.parameters !== undefined &&\n (!record.parameters ||\n typeof record.parameters !== \"object\" ||\n Array.isArray(record.parameters))\n ) {\n return null;\n }\n try {\n if (jsonByteLength(record) > REALTIME_VOICE_MAX_TOOL_SCHEMA_BYTES) {\n return null;\n }\n return JSON.parse(JSON.stringify(record)) as RealtimeVoiceFunctionTool;\n } catch {\n return null;\n }\n}\n\nexport function extractRealtimeVoiceSessionTools(\n event: RealtimeServerEvent,\n): RealtimeVoiceFunctionTool[] | null {\n if (event.type !== \"session.created\" && event.type !== \"session.updated\") {\n return null;\n }\n const session = event.session;\n if (!session || typeof session !== \"object\") return null;\n const tools = (session as { tools?: unknown }).tools;\n if (!Array.isArray(tools)) return null;\n return tools\n .map(normalizeRealtimeVoiceFunctionTool)\n .filter((tool): tool is RealtimeVoiceFunctionTool => Boolean(tool));\n}\n\nfunction createRealtimeVoiceToolManifestUpdate(\n tools: RealtimeVoiceFunctionTool[],\n eventId?: string,\n): Record<string, unknown> {\n return {\n type: \"session.update\",\n ...(eventId ? { event_id: eventId } : {}),\n session: {\n type: \"realtime\",\n tools,\n tool_choice: \"auto\",\n },\n };\n}\n\n/**\n * Merge search-discovered schemas into the live manifest. Pinned navigation\n * and discovery tools stay available, then the newest discoveries take the\n * remaining slots ahead of lower-priority tools from the original manifest.\n */\nexport function mergeRealtimeVoiceToolManifest(\n currentTools: readonly RealtimeVoiceFunctionTool[],\n expandedTools: readonly RealtimeVoiceFunctionTool[],\n): RealtimeVoiceFunctionTool[] {\n const current = new Map<string, RealtimeVoiceFunctionTool>();\n for (const value of currentTools) {\n const tool = normalizeRealtimeVoiceFunctionTool(value);\n if (tool) current.set(tool.name, tool);\n }\n const expanded = new Map<string, RealtimeVoiceFunctionTool>();\n for (const value of expandedTools) {\n const tool = normalizeRealtimeVoiceFunctionTool(value);\n if (tool) expanded.set(tool.name, tool);\n }\n\n const candidates: RealtimeVoiceFunctionTool[] = [];\n const seen = new Set<string>();\n const add = (tool: RealtimeVoiceFunctionTool | undefined) => {\n if (!tool || seen.has(tool.name)) return;\n seen.add(tool.name);\n candidates.push(tool);\n };\n for (const name of REALTIME_VOICE_PRIORITY_TOOL_NAMES) {\n add(expanded.get(name) ?? current.get(name));\n }\n for (const tool of expanded.values()) add(tool);\n for (const tool of current.values()) add(tool);\n\n const packed: RealtimeVoiceFunctionTool[] = [];\n for (const tool of candidates) {\n if (packed.length >= REALTIME_VOICE_MAX_TOOLS) break;\n const candidate = [...packed, tool];\n if (\n jsonByteLength(\n createRealtimeVoiceToolManifestUpdate(\n candidate,\n \"realtime_tool_manifest_999999999\",\n ),\n ) <= REALTIME_VOICE_MAX_SESSION_BYTES\n ) {\n packed.push(tool);\n }\n }\n return packed;\n}\n\nfunction createRealtimeVoiceToolResultEvent(\n result: RealtimeVoiceToolResult,\n): Record<string, unknown> {\n const modelResult = {\n callId: result.callId,\n status: result.status,\n output: result.output,\n ...(result.approvalKey ? { approvalKey: result.approvalKey } : {}),\n };\n return {\n type: \"conversation.item.create\",\n item: {\n type: \"function_call_output\",\n call_id: result.callId,\n output: JSON.stringify(modelResult),\n },\n };\n}\n\nexport interface RealtimeVoiceToolManifestCoordinator {\n enqueue: (result: RealtimeVoiceToolResult) => void;\n setSessionTools: (tools: readonly RealtimeVoiceFunctionTool[]) => void;\n handleError: (eventId: string | undefined, message?: string) => boolean;\n reset: () => void;\n getTools: () => readonly RealtimeVoiceFunctionTool[];\n}\n\n/**\n * Realtime treats `session.update.tools` as a full replacement. Serialize\n * discovery updates and wait for a confirming `session.updated` manifest\n * before returning the search result and allowing the next model response.\n */\nexport function createRealtimeVoiceToolManifestCoordinator(\n send: (event: Record<string, unknown>) => void,\n timeoutMs = REALTIME_VOICE_TOOL_UPDATE_TIMEOUT_MS,\n): RealtimeVoiceToolManifestCoordinator {\n let currentTools: RealtimeVoiceFunctionTool[] = [];\n const queue: RealtimeVoiceToolResult[] = [];\n let updateSequence = 0;\n let active:\n | {\n result: RealtimeVoiceToolResult;\n expectedNames: string[];\n eventId: string;\n timer: ReturnType<typeof setTimeout>;\n }\n | undefined;\n\n const finish = (failureMessage?: string) => {\n if (!active) return;\n const { result, timer } = active;\n clearTimeout(timer);\n active = undefined;\n send(\n createRealtimeVoiceToolResultEvent(\n failureMessage\n ? {\n callId: result.callId,\n status: \"failed\",\n output: `${failureMessage} The discovered tools were not added to this voice session. Original tool result: ${result.output}`,\n }\n : result,\n ),\n );\n send({ type: \"response.create\" });\n drain();\n };\n\n const drain = () => {\n if (active) return;\n const result = queue.shift();\n if (!result) return;\n const expanded = Array.isArray(result.expandedTools)\n ? result.expandedTools\n .map(normalizeRealtimeVoiceFunctionTool)\n .filter((tool): tool is RealtimeVoiceFunctionTool => Boolean(tool))\n : [];\n if (result.status !== \"completed\" || expanded.length === 0) {\n send(createRealtimeVoiceToolResultEvent(result));\n send({ type: \"response.create\" });\n drain();\n return;\n }\n\n const merged = mergeRealtimeVoiceToolManifest(currentTools, expanded);\n const mergedNames = new Set(merged.map((tool) => tool.name));\n const expectedNames = expanded\n .map((tool) => tool.name)\n .filter((name) => mergedNames.has(name));\n if (expectedNames.length === 0) {\n send(createRealtimeVoiceToolResultEvent(result));\n send({ type: \"response.create\" });\n drain();\n return;\n }\n\n const eventId = `realtime_tool_manifest_${++updateSequence}`;\n active = {\n result,\n expectedNames,\n eventId,\n timer: setTimeout(\n () => finish(\"Timed out while installing the discovered tools.\"),\n timeoutMs,\n ),\n };\n send(createRealtimeVoiceToolManifestUpdate(merged, eventId));\n };\n\n return {\n enqueue(result) {\n queue.push(result);\n drain();\n },\n setSessionTools(tools) {\n currentTools = mergeRealtimeVoiceToolManifest([], tools);\n if (!active) return;\n const names = new Set(currentTools.map((tool) => tool.name));\n if (active.expectedNames.every((name) => names.has(name))) finish();\n },\n handleError(eventId, message) {\n if (!active || !eventId || active.eventId !== eventId) return false;\n finish(message || \"The provider rejected the discovered tool update.\");\n return true;\n },\n reset() {\n if (active) clearTimeout(active.timer);\n active = undefined;\n queue.length = 0;\n currentTools = [];\n },\n getTools() {\n return currentTools;\n },\n };\n}\n\nexport function extractRealtimeVoiceFunctionCalls(\n event: RealtimeServerEvent,\n): Array<{ name: string; callId: string; argumentsText: string }> {\n if (event.type === \"response.function_call_arguments.done\") {\n const name = typeof event.name === \"string\" ? event.name : \"\";\n const callId = typeof event.call_id === \"string\" ? event.call_id : \"\";\n if (!name || !callId) return [];\n return [\n {\n name,\n callId,\n argumentsText:\n typeof event.arguments === \"string\" ? event.arguments : \"{}\",\n },\n ];\n }\n if (event.type !== \"response.done\") return [];\n const response = event.response;\n if (!response || typeof response !== \"object\") return [];\n const output = (response as { output?: unknown }).output;\n if (!Array.isArray(output)) return [];\n return output.flatMap((item) => {\n if (!item || typeof item !== \"object\") return [];\n const record = item as Record<string, unknown>;\n if (record.type !== \"function_call\") return [];\n const name = typeof record.name === \"string\" ? record.name : \"\";\n const callId = typeof record.call_id === \"string\" ? record.call_id : \"\";\n if (!name || !callId) return [];\n return [\n {\n name,\n callId,\n argumentsText:\n typeof record.arguments === \"string\" ? record.arguments : \"{}\",\n },\n ];\n });\n}\n\nfunction parseFunctionArguments(text: string): Record<string, unknown> {\n const parsed = JSON.parse(text || \"{}\");\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"The voice model returned invalid tool arguments.\");\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction sendDataChannelEvent(\n channel: RTCDataChannel | null,\n event: Record<string, unknown>,\n): void {\n if (!channel || channel.readyState !== \"open\") return;\n channel.send(JSON.stringify(event));\n}\n\nfunction openOpenAiKeySettings(): void {\n if (typeof window === \"undefined\") return;\n window.location.hash = \"#secrets:OPENAI_API_KEY\";\n window.dispatchEvent(new Event(\"agent-panel:open\"));\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:open-settings\", {\n detail: { section: \"secrets\" },\n }),\n );\n}\n\nexport function listenForRealtimeVoicePageHide(\n cleanup: () => void,\n): () => void {\n window.addEventListener(\"pagehide\", cleanup);\n return () => window.removeEventListener(\"pagehide\", cleanup);\n}\n\nfunction voiceCopy(t: ReturnType<typeof useT>): RealtimeVoiceModeCopy {\n return {\n entryButtonLabel: t(\"agentPanel.voiceMode.entryButtonLabel\"),\n promptTitle: t(\"agentPanel.voiceMode.promptTitle\"),\n promptDescription: t(\"agentPanel.voiceMode.promptDescription\"),\n setupTitle: t(\"agentPanel.voiceMode.setupTitle\"),\n setupDescription: t(\"agentPanel.voiceMode.setupDescription\"),\n connectBuilder: t(\"agentPanel.voiceMode.connectBuilder\"),\n useOpenAiKey: t(\"agentPanel.voiceMode.useOpenAiKey\"),\n startWithOpenAiKey: t(\"agentPanel.voiceMode.startWithOpenAiKey\"),\n startVoiceMode: t(\"agentPanel.voiceMode.start\"),\n keepDictating: t(\"agentPanel.voiceMode.keepDictating\"),\n showChat: t(\"agentPanel.voiceMode.showChat\"),\n hideChat: t(\"agentPanel.voiceMode.hideChat\"),\n endVoiceMode: t(\"agentPanel.voiceMode.end\"),\n voiceSettings: t(\"agentPanel.voiceMode.voiceSettings\"),\n settings: {\n language: t(\"agentPanel.voiceMode.settings.language\"),\n autoLanguage: t(\"agentPanel.voiceMode.settings.autoLanguage\"),\n languages: {\n en: t(\"agentPanel.voiceMode.settings.languages.en\"),\n es: t(\"agentPanel.voiceMode.settings.languages.es\"),\n fr: t(\"agentPanel.voiceMode.settings.languages.fr\"),\n de: t(\"agentPanel.voiceMode.settings.languages.de\"),\n it: t(\"agentPanel.voiceMode.settings.languages.it\"),\n pt: t(\"agentPanel.voiceMode.settings.languages.pt\"),\n ja: t(\"agentPanel.voiceMode.settings.languages.ja\"),\n ko: t(\"agentPanel.voiceMode.settings.languages.ko\"),\n zh: t(\"agentPanel.voiceMode.settings.languages.zh\"),\n },\n intelligence: t(\"agentPanel.voiceMode.settings.intelligence\"),\n intelligenceLevels: {\n instant: t(\"agentPanel.voiceMode.settings.intelligenceLevels.instant\"),\n balanced: t(\n \"agentPanel.voiceMode.settings.intelligenceLevels.balanced\",\n ),\n deep: t(\"agentPanel.voiceMode.settings.intelligenceLevels.deep\"),\n },\n voiceStyle: t(\"agentPanel.voiceMode.settings.voiceStyle\"),\n microphone: t(\"agentPanel.voiceMode.settings.microphone\"),\n defaultMicrophone: t(\"agentPanel.voiceMode.settings.defaultMicrophone\"),\n microphoneSwitchFailed: t(\n \"agentPanel.voiceMode.settings.microphoneSwitchFailed\",\n ),\n voiceChangePending: t(\"agentPanel.voiceMode.settings.voiceChangePending\"),\n voiceDescriptions: {\n marin: t(\"agentPanel.voiceMode.settings.voiceDescriptions.marin\"),\n cedar: t(\"agentPanel.voiceMode.settings.voiceDescriptions.cedar\"),\n coral: t(\"agentPanel.voiceMode.settings.voiceDescriptions.coral\"),\n sage: t(\"agentPanel.voiceMode.settings.voiceDescriptions.sage\"),\n verse: t(\"agentPanel.voiceMode.settings.voiceDescriptions.verse\"),\n alloy: t(\"agentPanel.voiceMode.settings.voiceDescriptions.alloy\"),\n ash: t(\"agentPanel.voiceMode.settings.voiceDescriptions.ash\"),\n ballad: t(\"agentPanel.voiceMode.settings.voiceDescriptions.ballad\"),\n echo: t(\"agentPanel.voiceMode.settings.voiceDescriptions.echo\"),\n shimmer: t(\"agentPanel.voiceMode.settings.voiceDescriptions.shimmer\"),\n },\n },\n status: {\n connecting: t(\"agentPanel.voiceMode.status.connecting\"),\n listening: t(\"agentPanel.voiceMode.status.listening\"),\n speaking: t(\"agentPanel.voiceMode.status.speaking\"),\n working: t(\"agentPanel.voiceMode.status.working\"),\n error: t(\"agentPanel.voiceMode.status.error\"),\n ending: t(\"agentPanel.voiceMode.status.ending\"),\n },\n errors: {\n unsupported: t(\"agentPanel.voiceMode.errors.unsupported\"),\n responseFailed: t(\"agentPanel.voiceMode.errors.responseFailed\"),\n sessionFailed: t(\"agentPanel.voiceMode.errors.sessionFailed\"),\n channelDisconnected: t(\"agentPanel.voiceMode.errors.channelDisconnected\"),\n connectionTimedOut: t(\"agentPanel.voiceMode.errors.connectionTimedOut\"),\n connectionFailed: t(\"agentPanel.voiceMode.errors.connectionFailed\"),\n offerFailed: t(\"agentPanel.voiceMode.errors.offerFailed\"),\n },\n };\n}\n\nexport function useRealtimeVoiceModeCopy(): RealtimeVoiceModeCopy {\n const t = useT();\n return useMemo(() => voiceCopy(t), [t]);\n}\n\nfunction useRealtimeVoiceModeController(\n browserTabId?: string,\n copy?: RealtimeVoiceModeCopy,\n): RealtimeVoiceModeApi {\n const [state, setState] = useState<\"idle\" | RealtimeVoiceModeState>(\"idle\");\n const [error, setError] = useState<string | null>(null);\n const [chatVisible, setChatVisible] = useState(false);\n const [preferences, setPreferences] = useState(\n DEFAULT_REALTIME_VOICE_PREFERENCES,\n );\n const [voiceChangePending, setVoiceChangePending] = useState(false);\n const [microphones, setMicrophones] = useState<RealtimeVoiceMicrophone[]>([]);\n const [microphoneDeviceId, setMicrophoneDeviceId] = useState(\n readRealtimeVoiceMicrophoneId,\n );\n const [microphoneSwitching, setMicrophoneSwitching] = useState(false);\n const [microphoneError, setMicrophoneError] = useState<string | null>(null);\n const [audioLevels] = useState(createRealtimeVoiceAudioLevelStore);\n const stateRef = useRef(state);\n const preferencesRef = useRef(preferences);\n const hasOutputAudioRef = useRef(false);\n const peerRef = useRef<RTCPeerConnection | null>(null);\n const channelRef = useRef<RTCDataChannel | null>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const audioContextRef = useRef<AudioContext | null>(null);\n const inputAnalyserRef = useRef<AnalyserNode | null>(null);\n const outputAnalyserRef = useRef<AnalyserNode | null>(null);\n const inputMeterBufferRef = useRef<Uint8Array<ArrayBuffer> | null>(null);\n const outputMeterBufferRef = useRef<Uint8Array<ArrayBuffer> | null>(null);\n const inputSourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n const outputSourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n const meterFrameRef = useRef<number | null>(null);\n const lastMeterSampleRef = useRef(0);\n const abortRef = useRef<AbortController | null>(null);\n const connectionGateRef = useRef<ReturnType<\n typeof createRealtimeVoiceConnectionGate\n > | null>(null);\n const handledCallsRef = useRef(new Set<string>());\n const sessionIdRef = useRef<string | undefined>(undefined);\n const capabilityRef = useRef<string | undefined>(undefined);\n const transportGenerationRef = useRef(0);\n const startedAtRef = useRef<string | undefined>(undefined);\n const lastUserTextRef = useRef(\"\");\n const lastAssistantTextRef = useRef(\"\");\n const transcriptThreadIdRef = useRef<string | undefined>(undefined);\n const transcriptSequenceRef = useRef(0);\n const preferencesHydratedRef = useRef(false);\n const preferencesEditedRef = useRef(false);\n const preferenceWriteChainRef = useRef<Promise<void>>(Promise.resolve());\n const toolManifestCoordinator = useMemo(\n () =>\n createRealtimeVoiceToolManifestCoordinator((event) => {\n sendDataChannelEvent(channelRef.current, event);\n }),\n [],\n );\n const switchMicrophoneRef = useRef<\n (deviceId: string, force?: boolean) => Promise<void>\n >(async () => undefined);\n\n useEffect(() => {\n stateRef.current = state;\n }, [state]);\n\n useEffect(() => {\n preferencesRef.current = preferences;\n }, [preferences]);\n\n const hydratePreferences = useCallback(async () => {\n if (preferencesHydratedRef.current) return;\n try {\n const stored = await readClientAppState(REALTIME_VOICE_PREFERENCES_KEY);\n if (!preferencesEditedRef.current && stored != null) {\n const next = normalizeRealtimeVoicePreferences(stored);\n preferencesRef.current = next;\n setPreferences(next);\n }\n } catch {\n // Preferences are optional; keep safe defaults when storage is unavailable.\n } finally {\n preferencesHydratedRef.current = true;\n }\n }, []);\n\n const syncAppState = useCallback(\n (nextState: \"idle\" | RealtimeVoiceModeState) => {\n const value =\n nextState === \"idle\"\n ? null\n : {\n active: true,\n status: nextState,\n model: \"gpt-realtime-2.1\",\n startedAt: startedAtRef.current,\n sessionId: sessionIdRef.current,\n browserTabId,\n preferences: preferencesRef.current,\n lastUserText: lastUserTextRef.current || undefined,\n lastAssistantText: lastAssistantTextRef.current || undefined,\n };\n void setClientAppState(REALTIME_VOICE_STATE_KEY, value, {\n requestSource: REALTIME_VOICE_REQUEST_SOURCE,\n }).catch(() => undefined);\n },\n [browserTabId],\n );\n\n const transition = useCallback(\n (nextState: \"idle\" | RealtimeVoiceModeState) => {\n stateRef.current = nextState;\n setState(nextState);\n syncAppState(nextState);\n },\n [syncAppState],\n );\n\n const savePreferences = useCallback((next: RealtimeVoicePreferences) => {\n preferencesEditedRef.current = true;\n preferencesHydratedRef.current = true;\n preferencesRef.current = next;\n setPreferences(next);\n preferenceWriteChainRef.current = preferenceWriteChainRef.current\n .catch(() => undefined)\n .then(async () => {\n await setClientAppState(REALTIME_VOICE_PREFERENCES_KEY, next, {\n requestSource: REALTIME_VOICE_REQUEST_SOURCE,\n });\n })\n .catch(() => undefined);\n }, []);\n\n const updateLivePreferences = useCallback(\n (next: RealtimeVoicePreferences, includeVoice = false) => {\n sendDataChannelEvent(\n channelRef.current,\n createRealtimeVoicePreferenceUpdate(next, {\n browserLanguages:\n typeof navigator === \"undefined\" ? [] : navigator.languages,\n includeVoice,\n }),\n );\n },\n [],\n );\n\n const setLanguage = useCallback(\n (language: RealtimeVoiceLanguage) => {\n const next = { ...preferencesRef.current, language };\n savePreferences(next);\n updateLivePreferences(next);\n },\n [savePreferences, updateLivePreferences],\n );\n\n const setIntelligence = useCallback(\n (intelligence: RealtimeVoiceIntelligence) => {\n const next = { ...preferencesRef.current, intelligence };\n savePreferences(next);\n updateLivePreferences(next);\n },\n [savePreferences, updateLivePreferences],\n );\n\n const setVoice = useCallback(\n (voice: RealtimeVoice) => {\n const next = { ...preferencesRef.current, voice };\n savePreferences(next);\n if (hasOutputAudioRef.current) {\n setVoiceChangePending(true);\n updateLivePreferences(next);\n return;\n }\n setVoiceChangePending(false);\n updateLivePreferences(next, true);\n },\n [savePreferences, updateLivePreferences],\n );\n\n const refreshMicrophones = useCallback(async (): Promise<\n RealtimeVoiceMicrophone[] | null\n > => {\n const mediaDevices = navigator.mediaDevices;\n if (!mediaDevices?.enumerateDevices) return null;\n try {\n const devices = await mediaDevices.enumerateDevices();\n const inputs = devices\n .filter(\n (device) =>\n device.kind === \"audioinput\" &&\n device.deviceId &&\n device.deviceId !== \"default\" &&\n device.deviceId !== \"communications\",\n )\n .map((device, index) => ({\n deviceId: device.deviceId,\n label: device.label || `Microphone ${index + 1}`,\n }));\n setMicrophones(inputs);\n return inputs;\n } catch {\n // Enumeration is progressive enhancement; system default remains usable.\n return null;\n }\n }, []);\n\n const startMeterLoop = useCallback(() => {\n if (meterFrameRef.current !== null) return;\n const sample = (timestamp: number) => {\n meterFrameRef.current = requestAnimationFrame(sample);\n if (timestamp - lastMeterSampleRef.current < 50) return;\n lastMeterSampleRef.current = timestamp;\n\n const current = audioLevels.getSnapshot();\n let input = current.input;\n let output = current.output;\n const inputAnalyser = inputAnalyserRef.current;\n const inputBuffer = inputMeterBufferRef.current;\n if (inputAnalyser && inputBuffer) {\n inputAnalyser.getByteTimeDomainData(inputBuffer);\n input = smoothRealtimeVoiceLevel(\n input,\n normalizeRealtimeVoiceRms(inputBuffer),\n );\n }\n const outputAnalyser = outputAnalyserRef.current;\n const outputBuffer = outputMeterBufferRef.current;\n if (outputAnalyser && outputBuffer) {\n outputAnalyser.getByteTimeDomainData(outputBuffer);\n output = smoothRealtimeVoiceLevel(\n output,\n normalizeRealtimeVoiceRms(outputBuffer),\n );\n }\n audioLevels.set({ input, output });\n };\n meterFrameRef.current = requestAnimationFrame(sample);\n }, [audioLevels]);\n\n const attachAudioMeter = useCallback(\n (stream: MediaStream, channel: \"input\" | \"output\") => {\n try {\n const AudioCtor =\n window.AudioContext ??\n (\n window as typeof window & {\n webkitAudioContext?: typeof AudioContext;\n }\n ).webkitAudioContext;\n if (!AudioCtor) return;\n const context = audioContextRef.current ?? new AudioCtor();\n audioContextRef.current = context;\n void context.resume().catch(() => undefined);\n const analyser = context.createAnalyser();\n analyser.fftSize = 512;\n const source = context.createMediaStreamSource(stream);\n source.connect(analyser);\n const buffer = new Uint8Array(analyser.frequencyBinCount);\n if (channel === \"input\") {\n inputSourceRef.current?.disconnect();\n inputSourceRef.current = source;\n inputAnalyserRef.current = analyser;\n inputMeterBufferRef.current = buffer;\n } else {\n outputSourceRef.current?.disconnect();\n outputSourceRef.current = source;\n outputAnalyserRef.current = analyser;\n outputMeterBufferRef.current = buffer;\n }\n startMeterLoop();\n } catch {\n // Audio metering is visual-only; keep the realtime call healthy.\n }\n },\n [startMeterLoop],\n );\n\n const setMicrophone = useCallback(\n async (deviceId: string, force = false) => {\n if ((!force && deviceId === microphoneDeviceId) || microphoneSwitching) {\n return;\n }\n const mediaDevices = navigator.mediaDevices;\n const peer = peerRef.current;\n if (!mediaDevices?.getUserMedia || !peer) return;\n\n setMicrophoneSwitching(true);\n setMicrophoneError(null);\n try {\n const replacementStream = await replaceRealtimeVoiceMicrophone({\n mediaDevices,\n peer,\n currentStream: streamRef.current,\n deviceId,\n });\n const replacementTrack = replacementStream.getAudioTracks()[0];\n streamRef.current = replacementStream;\n if (replacementTrack) {\n replacementTrack.onended = () => {\n void switchMicrophoneRef.current(\"default\", true);\n };\n }\n attachAudioMeter(streamRef.current, \"input\");\n writeRealtimeVoiceMicrophoneId(deviceId);\n setMicrophoneDeviceId(deviceId);\n await refreshMicrophones();\n } catch {\n setMicrophoneError(\n copy?.settings.microphoneSwitchFailed ??\n \"Could not switch microphones. Your current microphone is still active.\",\n );\n } finally {\n setMicrophoneSwitching(false);\n }\n },\n [\n attachAudioMeter,\n copy,\n microphoneDeviceId,\n microphoneSwitching,\n refreshMicrophones,\n ],\n );\n switchMicrophoneRef.current = setMicrophone;\n\n const cleanupTransport = useCallback(() => {\n connectionGateRef.current?.cancel();\n connectionGateRef.current = null;\n transportGenerationRef.current += 1;\n capabilityRef.current = undefined;\n abortRef.current?.abort();\n abortRef.current = null;\n channelRef.current?.close();\n channelRef.current = null;\n peerRef.current?.close();\n peerRef.current = null;\n for (const track of streamRef.current?.getTracks() ?? []) {\n track.onended = null;\n track.stop();\n }\n streamRef.current = null;\n if (audioRef.current) {\n audioRef.current.pause();\n audioRef.current.srcObject = null;\n }\n audioRef.current = null;\n if (meterFrameRef.current !== null) {\n cancelAnimationFrame(meterFrameRef.current);\n meterFrameRef.current = null;\n }\n inputSourceRef.current?.disconnect();\n outputSourceRef.current?.disconnect();\n inputSourceRef.current = null;\n outputSourceRef.current = null;\n inputAnalyserRef.current = null;\n outputAnalyserRef.current = null;\n inputMeterBufferRef.current = null;\n outputMeterBufferRef.current = null;\n lastMeterSampleRef.current = 0;\n const audioContext = audioContextRef.current;\n audioContextRef.current = null;\n if (audioContext) void audioContext.close().catch(() => undefined);\n audioLevels.reset();\n handledCallsRef.current.clear();\n toolManifestCoordinator.reset();\n }, [audioLevels, toolManifestCoordinator]);\n\n const fail = useCallback(\n (message: string, options?: { openKeySettings?: boolean }) => {\n cleanupTransport();\n setError(message);\n transition(\"error\");\n if (options?.openKeySettings) openOpenAiKeySettings();\n },\n [cleanupTransport, transition],\n );\n\n const handleFunctionCall = useCallback(\n async (call: { name: string; callId: string; argumentsText: string }) => {\n if (handledCallsRef.current.has(call.callId)) return;\n handledCallsRef.current.add(call.callId);\n const transportGeneration = transportGenerationRef.current;\n const transportChannel = channelRef.current;\n transition(\"working\");\n let result: RealtimeVoiceToolResult;\n try {\n const args = parseFunctionArguments(call.argumentsText);\n result = await executeRealtimeVoiceTool({\n name: call.name,\n args,\n callId: call.callId,\n sessionId: sessionIdRef.current,\n browserTabId,\n capability: capabilityRef.current,\n signal: abortRef.current?.signal,\n });\n } catch (toolError) {\n result = {\n callId: call.callId,\n status: \"failed\",\n output: errorMessage(toolError),\n };\n }\n if (\n transportGeneration !== transportGenerationRef.current ||\n channelRef.current !== transportChannel\n ) {\n return;\n }\n toolManifestCoordinator.enqueue(result);\n },\n [browserTabId, toolManifestCoordinator, transition],\n );\n\n const publishCompletedTranscript = useCallback(\n (transcript: CompletedRealtimeVoiceTranscript) => {\n const threadId = transcriptThreadIdRef.current;\n if (!threadId) return;\n const sessionIdentity =\n sessionIdRef.current ?? startedAtRef.current ?? \"pending\";\n const providerIdentity =\n transcript.providerId ?? `sequence-${++transcriptSequenceRef.current}`;\n realtimeVoiceTranscriptRegistry.publish({\n id: `realtime-voice:${sessionIdentity}:${transcript.role}:${providerIdentity}`,\n threadId,\n role: transcript.role,\n text: transcript.text,\n createdAt: new Date().toISOString(),\n });\n },\n [],\n );\n\n const transcriptSequencer = useMemo(\n () => createRealtimeVoiceTranscriptSequencer(publishCompletedTranscript),\n [publishCompletedTranscript],\n );\n const greetingStarter = useMemo(\n () =>\n createRealtimeVoiceGreetingStarter((event) => {\n sendDataChannelEvent(channelRef.current, event);\n }),\n [],\n );\n\n const handleServerEvent = useCallback(\n (event: RealtimeServerEvent) => {\n transcriptSequencer.handle(event);\n const sessionTools = extractRealtimeVoiceSessionTools(event);\n if (sessionTools) toolManifestCoordinator.setSessionTools(sessionTools);\n if (event.type === \"session.created\") {\n connectionGateRef.current?.markSessionCreated();\n connectionGateRef.current = null;\n const session = event.session;\n if (session && typeof session === \"object\") {\n const id = (session as { id?: unknown }).id;\n if (typeof id === \"string\") sessionIdRef.current = id;\n }\n updateLivePreferences(preferencesRef.current, true);\n greetingStarter.start();\n transition(\"working\");\n } else if (event.type === \"input_audio_buffer.speech_started\") {\n transition(\"listening\");\n } else if (event.type === \"input_audio_buffer.speech_stopped\") {\n transition(\"working\");\n } else if (event.type === \"response.created\") {\n // From this point onward the response is committed to audio output, so\n // changing voices risks violating Realtime's per-session voice lock.\n hasOutputAudioRef.current = true;\n lastAssistantTextRef.current = \"\";\n transition(\"working\");\n } else if (event.type === \"response.output_audio_transcript.delta\") {\n hasOutputAudioRef.current = true;\n if (typeof event.delta === \"string\") {\n lastAssistantTextRef.current += event.delta;\n }\n transition(\"speaking\");\n } else if (event.type === \"response.output_audio_transcript.done\") {\n if (typeof event.transcript === \"string\") {\n lastAssistantTextRef.current = event.transcript;\n }\n syncAppState(\"speaking\");\n } else if (\n event.type === \"conversation.item.input_audio_transcription.completed\"\n ) {\n if (typeof event.transcript === \"string\") {\n lastUserTextRef.current = event.transcript;\n }\n syncAppState(\"working\");\n } else if (event.type === \"response.done\") {\n const response = event.response;\n const status =\n response && typeof response === \"object\"\n ? (response as { status?: unknown }).status\n : undefined;\n if (status === \"failed\") {\n fail(\n copy?.errors.responseFailed ??\n \"OpenAI could not complete the voice response.\",\n );\n return;\n }\n } else if (event.type === \"error\") {\n const detail = event.error;\n const message =\n detail && typeof detail === \"object\"\n ? String((detail as { message?: unknown }).message ?? \"\")\n : typeof detail === \"string\"\n ? detail\n : \"\";\n const expansionEventId =\n detail && typeof detail === \"object\"\n ? ((detail as { event_id?: unknown }).event_id ?? event.event_id)\n : event.event_id;\n if (\n toolManifestCoordinator.handleError(\n typeof expansionEventId === \"string\" ? expansionEventId : undefined,\n message,\n )\n ) {\n return;\n }\n fail(\n message ||\n copy?.errors.sessionFailed ||\n \"The realtime voice session encountered an error.\",\n );\n return;\n }\n\n const calls = extractRealtimeVoiceFunctionCalls(event);\n for (const call of calls) void handleFunctionCall(call);\n if (event.type === \"response.done\" && calls.length === 0) {\n transition(\"listening\");\n }\n },\n [\n copy,\n fail,\n greetingStarter,\n handleFunctionCall,\n syncAppState,\n transcriptSequencer,\n transition,\n toolManifestCoordinator,\n updateLivePreferences,\n ],\n );\n\n const start = useCallback(async () => {\n if (stateRef.current !== \"idle\") return;\n if (\n typeof RTCPeerConnection === \"undefined\" ||\n !navigator.mediaDevices?.getUserMedia\n ) {\n fail(\n copy?.errors.unsupported ??\n \"This browser does not support realtime voice conversations.\",\n );\n return;\n }\n setError(null);\n startedAtRef.current = new Date().toISOString();\n lastUserTextRef.current = \"\";\n lastAssistantTextRef.current = \"\";\n sessionIdRef.current = undefined;\n hasOutputAudioRef.current = false;\n greetingStarter.reset();\n setVoiceChangePending(false);\n transcriptThreadIdRef.current =\n realtimeVoiceTranscriptRegistry.activeThreadId();\n transcriptSequenceRef.current = 0;\n transcriptSequencer.reset();\n transition(\"connecting\");\n setChatVisible(false);\n window.dispatchEvent(new Event(\"agent-panel:close\"));\n\n await hydratePreferences();\n if ((stateRef.current as string) !== \"connecting\") return;\n\n const abortController = new AbortController();\n abortRef.current = abortController;\n const isCurrentAttempt = () =>\n abortRef.current === abortController && !abortController.signal.aborted;\n const connectionGate = createRealtimeVoiceConnectionGate(() => {\n if (!isCurrentAttempt()) return;\n fail(\n copy?.errors.connectionTimedOut ??\n \"The realtime voice connection timed out.\",\n );\n });\n connectionGateRef.current = connectionGate;\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: createRealtimeVoiceAudioConstraints(\n readRealtimeVoiceMicrophoneId(),\n ),\n });\n if (!isCurrentAttempt()) {\n for (const track of stream.getTracks()) track.stop();\n return;\n }\n streamRef.current = stream;\n for (const track of stream.getAudioTracks()) {\n track.onended = () => {\n void switchMicrophoneRef.current(\"default\", true);\n };\n }\n attachAudioMeter(stream, \"input\");\n void refreshMicrophones().then((inputs) => {\n const selected = readRealtimeVoiceMicrophoneId();\n if (\n inputs &&\n selected !== \"default\" &&\n !inputs.some((device) => device.deviceId === selected)\n ) {\n // The persisted device was only an ideal preference, so getUserMedia\n // already selected a usable fallback for this new session.\n writeRealtimeVoiceMicrophoneId(\"default\");\n setMicrophoneDeviceId(\"default\");\n }\n });\n\n const peer = new RTCPeerConnection();\n peerRef.current = peer;\n for (const track of stream.getAudioTracks()) peer.addTrack(track, stream);\n\n const audio = document.createElement(\"audio\");\n audio.autoplay = true;\n audio.setAttribute(\"playsinline\", \"\");\n audioRef.current = audio;\n peer.ontrack = (trackEvent) => {\n const remoteStream = trackEvent.streams[0] ?? null;\n audio.srcObject = remoteStream;\n if (remoteStream) attachAudioMeter(remoteStream, \"output\");\n void audio.play().catch(() => undefined);\n };\n\n const channel = peer.createDataChannel(\"oai-events\");\n channelRef.current = channel;\n channel.onopen = connectionGate.markTransportReady;\n channel.onmessage = (messageEvent) => {\n if (!isCurrentAttempt()) return;\n try {\n handleServerEvent(JSON.parse(String(messageEvent.data)));\n } catch {\n // Ignore malformed provider events without ending a healthy call.\n }\n };\n channel.onerror = () => {\n if (!isCurrentAttempt()) return;\n fail(\n copy?.errors.channelDisconnected ??\n \"The realtime voice control channel disconnected.\",\n );\n };\n peer.onconnectionstatechange = () => {\n if (!isCurrentAttempt()) return;\n if (peer.connectionState === \"connected\") {\n connectionGate.markTransportReady();\n }\n if (peer.connectionState === \"failed\") {\n fail(\n copy?.errors.connectionFailed ??\n \"The realtime voice connection failed.\",\n );\n }\n };\n\n const offer = await peer.createOffer();\n if (!isCurrentAttempt()) return;\n await peer.setLocalDescription(offer);\n if (!isCurrentAttempt()) return;\n if (!offer.sdp) {\n throw new Error(\n copy?.errors.offerFailed ??\n \"The browser did not create an audio offer.\",\n );\n }\n const answer = await createRealtimeVoiceSessionWithCapability(offer.sdp, {\n browserTabId,\n signal: abortController.signal,\n preferences: preferencesRef.current,\n browserLanguages: navigator.languages,\n });\n if (!isCurrentAttempt()) return;\n capabilityRef.current = answer.capability;\n await peer.setRemoteDescription({ type: \"answer\", sdp: answer.sdp });\n } catch (startError) {\n // Ending a connection aborts the SDP request by design. A superseded\n // attempt must never resurrect the dock or surface that cancellation as\n // an error after cleanup.\n if (\n isRealtimeVoiceAbortError(startError) ||\n abortController.signal.aborted ||\n abortRef.current !== abortController\n ) {\n return;\n }\n if (isRealtimeVoiceSetupRequiredError(startError)) {\n // Credentials can disappear after the entry-point status check. Treat\n // the authoritative setup response as a gate, not as an active voice\n // session failure: clean up the mic/RTC attempt, reopen chat, and\n // refresh both the chat and voice provider setup surfaces.\n cleanupTransport();\n setError(null);\n startedAtRef.current = undefined;\n sessionIdRef.current = undefined;\n transcriptThreadIdRef.current = undefined;\n transition(\"idle\");\n setChatVisible(true);\n window.dispatchEvent(new Event(\"agent-panel:open\"));\n window.dispatchEvent(new Event(\"agent-engine:configured-changed\"));\n return;\n }\n const status = (startError as { status?: unknown })?.status;\n fail(errorMessage(startError), { openKeySettings: status === 400 });\n }\n }, [\n attachAudioMeter,\n browserTabId,\n cleanupTransport,\n copy,\n fail,\n greetingStarter,\n handleServerEvent,\n hydratePreferences,\n refreshMicrophones,\n transcriptSequencer,\n transition,\n ]);\n\n const end = useCallback(() => {\n if (stateRef.current === \"idle\" || stateRef.current === \"ending\") return;\n const transcriptThreadId = transcriptThreadIdRef.current;\n const activeThreadId = realtimeVoiceTranscriptRegistry.activeThreadId();\n transition(\"ending\");\n cleanupTransport();\n setError(null);\n sessionIdRef.current = undefined;\n startedAtRef.current = undefined;\n transcriptThreadIdRef.current = undefined;\n setChatVisible(true);\n if (\n shouldRestoreRealtimeVoiceTranscriptThread(\n transcriptThreadId,\n activeThreadId,\n )\n ) {\n requestAgentChatThreadOpen({\n threadId: transcriptThreadId,\n // The request is delivered asynchronously. Re-checking this at the\n // receiver prevents a navigation that happened during that gap from\n // being overwritten.\n onlyIfActiveThreadId: transcriptThreadId,\n });\n } else {\n window.dispatchEvent(new Event(\"agent-panel:open\"));\n }\n transition(\"idle\");\n }, [cleanupTransport, transition]);\n\n const toggleChat = useCallback(() => {\n setChatVisible((current) => !current);\n window.dispatchEvent(new Event(\"agent-panel:toggle\"));\n }, []);\n\n useEffect(() => {\n const mediaDevices = navigator.mediaDevices;\n if (!mediaDevices?.addEventListener) return;\n const handleDeviceChange = () => {\n const selected = readRealtimeVoiceMicrophoneId();\n void refreshMicrophones().then((inputs) => {\n if (\n inputs &&\n selected !== \"default\" &&\n !inputs.some((device) => device.deviceId === selected)\n ) {\n void setMicrophone(\"default\");\n }\n });\n };\n mediaDevices.addEventListener(\"devicechange\", handleDeviceChange);\n return () =>\n mediaDevices.removeEventListener(\"devicechange\", handleDeviceChange);\n }, [refreshMicrophones, setMicrophone]);\n\n useEffect(() => {\n const onSidebarState = (event: Event) => {\n const detail = (event as CustomEvent<AgentSidebarStateChangeDetail>)\n .detail;\n if (detail && typeof detail.open === \"boolean\") {\n setChatVisible(detail.open);\n }\n };\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onSidebarState);\n return () =>\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onSidebarState);\n }, []);\n\n useEffect(() => {\n const stopListening = listenForRealtimeVoicePageHide(cleanupTransport);\n return () => {\n stopListening();\n cleanupTransport();\n };\n }, [cleanupTransport]);\n\n return {\n state,\n active: state !== \"idle\",\n errorMessage: error,\n chatVisible,\n audioLevels,\n preferences,\n microphones,\n microphoneDeviceId,\n microphoneSwitching,\n microphoneError,\n voiceChangePending,\n setLanguage,\n setIntelligence,\n setVoice,\n setMicrophone,\n start,\n end,\n toggleChat,\n };\n}\n\nconst RealtimeVoiceModeContext = createContext<RealtimeVoiceModeApi | null>(\n null,\n);\n\nexport function RealtimeVoiceModeProvider({\n children,\n browserTabId,\n}: RealtimeVoiceModeProviderProps) {\n const resolvedBrowserTabId = useMemo(\n () => browserTabId ?? getBrowserTabId(),\n [browserTabId],\n );\n const copy = useRealtimeVoiceModeCopy();\n const voice = useRealtimeVoiceModeController(resolvedBrowserTabId, copy);\n const inlineSettings = useMemo(\n () => ({\n dialogLabel: copy.voiceSettings,\n ...(voice.voiceChangePending\n ? { appliesNextConversationNote: copy.settings.voiceChangePending }\n : {}),\n ...(voice.microphoneError\n ? { microphoneError: voice.microphoneError }\n : {}),\n microphone: {\n label: copy.settings.microphone,\n value: voice.microphoneDeviceId,\n disabled: voice.microphoneSwitching,\n options: [\n {\n value: \"default\",\n label: copy.settings.defaultMicrophone,\n },\n ...voice.microphones.map((microphone) => ({\n value: microphone.deviceId,\n label: microphone.label,\n })),\n ],\n onValueChange: (value: string) => {\n void voice.setMicrophone(value);\n },\n },\n language: {\n label: copy.settings.language,\n value: voice.preferences.language,\n options: REALTIME_VOICE_LANGUAGES.map((language) => ({\n value: language,\n label:\n language === \"auto\"\n ? copy.settings.autoLanguage\n : copy.settings.languages[language],\n })),\n onValueChange: (value: string) => {\n if (isOneOf(REALTIME_VOICE_LANGUAGES, value)) {\n voice.setLanguage(value);\n }\n },\n },\n intelligence: {\n label: copy.settings.intelligence,\n value: voice.preferences.intelligence,\n options: REALTIME_VOICE_INTELLIGENCE_LEVELS.map((intelligence) => ({\n value: intelligence,\n label: copy.settings.intelligenceLevels[intelligence],\n })),\n onValueChange: (value: string) => {\n if (isOneOf(REALTIME_VOICE_INTELLIGENCE_LEVELS, value)) {\n voice.setIntelligence(value);\n }\n },\n },\n voiceStyle: {\n label: copy.settings.voiceStyle,\n value: voice.preferences.voice,\n options: REALTIME_VOICES.map((voiceName) => ({\n value: voiceName,\n label: `${voiceName[0]!.toUpperCase()}${voiceName.slice(1)}`,\n description: copy.settings.voiceDescriptions[voiceName],\n })),\n onValueChange: (value: string) => {\n if (isOneOf(REALTIME_VOICES, value)) voice.setVoice(value);\n },\n },\n }),\n [copy, voice],\n );\n\n return (\n <RealtimeVoiceModeContext.Provider value={voice}>\n {children}\n {voice.active && typeof document !== \"undefined\"\n ? createPortal(\n <RealtimeVoiceModeDock\n state={voice.state === \"idle\" ? \"ending\" : voice.state}\n copy={copy}\n chatVisible={voice.chatVisible}\n audioLevels={voice.audioLevels}\n onToggleChat={voice.toggleChat}\n onEndVoiceMode={voice.end}\n settings={inlineSettings}\n errorMessage={voice.errorMessage}\n />,\n document.body,\n )\n : null}\n </RealtimeVoiceModeContext.Provider>\n );\n}\n\n/**\n * Ensure standalone/full-page composers get realtime voice without nesting a\n * second session owner inside the persistent AgentSidebar provider.\n */\nexport function RealtimeVoiceModeBoundary({\n children,\n browserTabId,\n}: RealtimeVoiceModeProviderProps) {\n const existing = useRealtimeVoiceModeOptional();\n if (existing) {\n return (\n <RealtimeVoiceModeComposerSurface>\n {children}\n </RealtimeVoiceModeComposerSurface>\n );\n }\n return (\n <RealtimeVoiceModeProvider browserTabId={browserTabId}>\n <RealtimeVoiceModeComposerSurface>\n {children}\n </RealtimeVoiceModeComposerSurface>\n </RealtimeVoiceModeProvider>\n );\n}\n\n/** Hide a composer while voice owns input; the dock can reveal it on demand. */\nfunction RealtimeVoiceModeComposerSurface({\n children,\n}: Pick<RealtimeVoiceModeProviderProps, \"children\">) {\n const voice = useRealtimeVoiceModeOptional();\n if (voice?.active && !voice.chatVisible) return null;\n return children;\n}\n\nexport function useRealtimeVoiceMode(): RealtimeVoiceModeApi {\n const value = useContext(RealtimeVoiceModeContext);\n if (!value) {\n throw new Error(\n \"useRealtimeVoiceMode must be used inside RealtimeVoiceModeProvider.\",\n );\n }\n return value;\n}\n\nexport function useRealtimeVoiceModeOptional(): RealtimeVoiceModeApi | null {\n return useContext(RealtimeVoiceModeContext);\n}\n\nexport async function readRealtimeVoiceContext(): Promise<{\n navigation: unknown;\n url: unknown;\n}> {\n const [navigation, url] = await Promise.all([\n readClientAppState(\"navigation\").catch(() => null),\n readClientAppState(\"__url__\").catch(() => null),\n ]);\n return { navigation, url };\n}\n"]}
@@ -24,6 +24,7 @@ export { CodeAgentIndicator, type CodeAgentIndicatorProps, } from "./components/
24
24
  export { useDbSync, useFileWatcher, useScreenRefreshKey, } from "./use-db-sync.js";
25
25
  export { VisualControlRow, VisualColorPicker, VisualInspectorPanel, VisualInspectorSection, VisualScrubInput, VisualSegmentedControl, VisualSliderControl, VisualSwatchControl, VisualToggleControl, VisualTweakControl, type VisualControlOption, type VisualControlValue, type VisualTweakDefinition, } from "./visual-style-controls.js";
26
26
  export { useChangeVersion, useChangeVersions, getChangeVersion, bumpChangeVersion, } from "./use-change-version.js";
27
+ export { useDemoModeStatus, type DemoModeStatus, } from "./use-demo-mode-status.js";
27
28
  export { useReconciledState } from "./use-external-value.js";
28
29
  export { buildDynamicAgentSuggestions, dedupeSuggestions, mergeAgentSuggestions, normalizeAgentDynamicSuggestionsConfig, useAgentDynamicSuggestions, type AgentDynamicSuggestionContext, type AgentDynamicSuggestionsConfig, type AgentDynamicSuggestionsOption, } from "./dynamic-suggestions.js";
29
30
  export { cn } from "./utils.js";
@@ -53,7 +54,7 @@ export { RunStuckBanner, type RunStuckBannerProps } from "./RunStuckBanner.js";
53
54
  export { KeepTabOpenNotice, type KeepTabOpenNoticeProps, } from "./KeepTabOpenNotice.js";
54
55
  export { useRunStuckDetection, useAbortRun, type RunStuckState, type UseRunStuckDetectionOptions, } from "./use-run-stuck-detection.js";
55
56
  export { createAgentChatAdapter, type AgentChatSurfaceKind, type CreateAgentChatAdapterOptions, } from "./agent-chat-adapter.js";
56
- export { AgentComposerFrame, type AgentComposerFrameProps, PromptComposer, RealtimeVoiceModeBoundary, RealtimeVoiceModeProvider, RealtimeVoiceModeDock, RealtimeVoiceModeEntry, TiptapComposer, AGENT_PROMPT_MAX_INLINE_IMAGE_BYTES, AGENT_PROMPT_MAX_INLINE_TEXT_CHARS, escapePromptAttachmentAttribute, formatPromptWithAttachments, isInlineableAgentPromptFile, readAgentPromptAttachment, createRealtimeVoiceSession, executeRealtimeVoiceTool, extractRealtimeVoiceFunctionCalls, readRealtimeVoiceContext, useRealtimeVoiceMode, useRealtimeVoiceModeCopy, useRealtimeVoiceModeOptional, type PromptComposerProps, type PromptComposerFile, type PromptComposerSubmitOptions, type RealtimeVoiceModeCopy, type RealtimeVoiceModeDockProps, type RealtimeVoiceModeEntryProps, type RealtimeVoiceModeState, type RealtimeVoiceModeApi, type RealtimeVoiceModeProviderProps, type RealtimeVoiceToolResult, type ComposerSubmitIntent, type AgentPromptAttachment, type ReadAgentPromptAttachmentOptions, type AgentComposerLayoutVariant, type SlashCommand, type SkillResult, type TiptapComposerHandle, type TiptapComposerProps, type TiptapComposerSubmitOptions, } from "./composer/index.js";
57
+ export { AgentComposerFrame, type AgentComposerFrameProps, PromptComposer, RealtimeVoiceModeBoundary, RealtimeVoiceModeProvider, RealtimeVoiceModeDock, RealtimeVoiceModeEntry, TiptapComposer, AGENT_PROMPT_MAX_INLINE_IMAGE_BYTES, AGENT_PROMPT_MAX_INLINE_TEXT_CHARS, escapePromptAttachmentAttribute, formatPromptWithAttachments, isInlineableAgentPromptFile, readAgentPromptAttachment, createRealtimeVoiceSession, createRealtimeVoiceSessionWithCapability, executeRealtimeVoiceTool, extractRealtimeVoiceFunctionCalls, readRealtimeVoiceContext, useRealtimeVoiceMode, useRealtimeVoiceModeCopy, useRealtimeVoiceModeOptional, type PromptComposerProps, type PromptComposerFile, type PromptComposerSubmitOptions, type RealtimeVoiceModeCopy, type RealtimeVoiceModeDockProps, type RealtimeVoiceModeEntryProps, type RealtimeVoiceSessionAnswer, type RealtimeVoiceModeInlineSettings, type RealtimeVoiceModeSelectSetting, type RealtimeVoiceModeSettingOption, type RealtimeVoiceModeState, type RealtimeVoiceModeApi, type RealtimeVoiceModeProviderProps, type RealtimeVoiceToolResult, type ComposerSubmitIntent, type AgentPromptAttachment, type ReadAgentPromptAttachmentOptions, type AgentComposerLayoutVariant, type SlashCommand, type SkillResult, type TiptapComposerHandle, type TiptapComposerProps, type TiptapComposerSubmitOptions, } from "./composer/index.js";
57
58
  export { GuidedQuestionFlow, useGuidedQuestionFlow, askUserQuestion, formatGuidedAnswerValue, formatGuidedAnswersForAgent, getOtherGuidedAnswerText, hasGuidedAnswer, isOtherGuidedAnswer, makeOtherGuidedAnswer, normalizeGuidedAnswers, type AskUserQuestionInput, type AskUserQuestionOption, type AskUserQuestionResult, type GuidedQuestion, type GuidedQuestionAnswers, type GuidedQuestionFlowProps, type GuidedQuestionOption, type GuidedQuestionPayload, type GuidedQuestionType, type UseGuidedQuestionFlowOptions, } from "./guided-questions.js";
58
59
  export { useChatThreads, type ChatThreadScope, type ChatThreadSnapshot, type ChatThreadSummary, type ChatThreadData, type ChatThreadShareLink, type ChatThreadShareState, type UseChatThreadsOptions, } from "./use-chat-threads.js";
59
60
  export { ChatHistoryList, type ChatHistoryItem, type ChatHistorySection, type ChatHistoryListProps, } from "./chat/ChatHistoryList.js";
@@ -86,7 +87,7 @@ export { getThemeInitScript, themeInitScript, type ThemePreference, } from "./th
86
87
  export { APPEARANCE_PRESETS, applyAppearance, getStoredAppearance, useAppearance, useAppearanceSync, type AppearancePresetId, } from "./appearance.js";
87
88
  export { AppearancePicker, type AppearancePickerProps, } from "./AppearancePicker.js";
88
89
  export { AgentTerminal, type AgentTerminalProps } from "./terminal/index.js";
89
- export { trackEvent, trackSessionStatus, configureTracking, maybeStartSessionReplay, startSessionReplay, stopSessionReplay, getAnalyticsAnonymousId, getAnalyticsSessionId, getFirstTouchAttribution, setSentryUser, captureError, captureClientException, AGENT_NATIVE_EXCEPTION_EVENT_NAME, addErrorBreadcrumb, captureException, captureMessage, isErrorCaptureInstalled, type CaptureExceptionContext, type CapturedExceptionEvent, type ClientCaptureContext, type ConfigureTrackingOptions, type ErrorCaptureConfigOptions, type ExceptionBreadcrumb, type ExceptionLevel, type FirstTouchAttribution, type SessionReplayOptions, type SessionReplayStartResult, type SessionReplayUrlMatcher, } from "./analytics.js";
90
+ export { trackEvent, trackSessionStatus, configureTracking, setTrackingContentCaptureEnabled, maybeStartSessionReplay, startSessionReplay, stopSessionReplay, getAnalyticsAnonymousId, getAnalyticsSessionId, getFirstTouchAttribution, setSentryUser, captureError, captureClientException, AGENT_NATIVE_EXCEPTION_EVENT_NAME, addErrorBreadcrumb, captureException, captureMessage, isErrorCaptureInstalled, type CaptureExceptionContext, type CapturedExceptionEvent, type ClientCaptureContext, type ConfigureTrackingOptions, type ErrorCaptureConfigOptions, type ExceptionBreadcrumb, type ExceptionLevel, type FirstTouchAttribution, type SessionReplayOptions, type SessionReplayStartResult, type SessionReplayUrlMatcher, } from "./analytics.js";
90
91
  export { track } from "./track.js";
91
92
  export { useCollaborativeDoc, isReconcileLeadClient, emailToColor, emailToName, dedupeCollabUsersByEmail, type UseCollaborativeDocOptions, type UseCollaborativeDocResult, type CollabUser, } from "../collab/client.js";
92
93
  export { AGENT_CLIENT_ID } from "../collab/agent-identity.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAC5B,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,mCAAmC,EACxC,KAAK,mCAAmC,GACzC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,sCAAsC,GAC5C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sCAAsC,EACtC,KAAK,6CAA6C,EAClD,KAAK,8BAA8B,GACpC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,GACnC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,GACpC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,2CAA2C,EAC3C,uBAAuB,EACvB,KAAK,oCAAoC,EACzC,KAAK,wCAAwC,EAC7C,KAAK,mCAAmC,EACxC,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,uCAAuC,EACvC,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,gCAAgC,EACrC,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,qBAAqB,EACrB,sCAAsC,EACtC,0BAA0B,EAC1B,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,GACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,SAAS,EACT,IAAI,EACJ,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EAGL,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,kBAAkB,EAClB,sCAAsC,EACtC,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EAGvB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EAEvB,kBAAkB,EAClB,4BAA4B,EAG5B,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,UAAU,EACV,oCAAoC,EAIpC,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EAEpB,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mCAAmC,EACxC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,mCAAmC,GACzC,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,cAAc,EACd,+BAA+B,EAC/B,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,QAAQ,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,oCAAoC,EACpC,KAAK,wCAAwC,EAC7C,KAAK,kCAAkC,EACvC,KAAK,sCAAsC,EAC3C,KAAK,wBAAwB,EAC7B,KAAK,2CAA2C,GACjD,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,GAC1C,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,qCAAqC,EACrC,6CAA6C,EAC7C,+BAA+B,EAC/B,mCAAmC,EACnC,oCAAoC,EACpC,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,kCAAkC,EACvC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,EACzC,KAAK,4CAA4C,GAClD,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,qCAAqC,EAC1C,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,EACtC,KAAK,mCAAmC,GACzC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,KAAK,+BAA+B,EACpC,KAAK,sCAAsC,GAC5C,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C,EAC3C,sCAAsC,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,GACtC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,cAAc,EACd,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,GAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,mCAAmC,EACnC,4BAA4B,EAC5B,+BAA+B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,GACpC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,GACpC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,gCAAgC,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,kCAAkC,EAClC,mCAAmC,EACnC,wCAAwC,EACxC,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,sBAAsB,EAEtB,iCAAiC,EACjC,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,8BAA8B,EAC9B,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,wCAAwC,EACxC,mCAAmC,EACnC,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,kCAAkC,EAClC,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kCAAkC,EAClC,KAAK,uCAAuC,GAC7C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,yBAAyB,EACzB,YAAY,EACZ,0BAA0B,EAC1B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kCAAkC,EAClC,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,WAAW,EACX,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,2BAA2B,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,GAC/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}