@openchambery/web 2.0.0-beta.1 → 2.0.0-beta.4

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 (287) hide show
  1. package/README.md +15 -11
  2. package/bin/cli-opencode.test.js +4 -4
  3. package/bin/cli.js +1 -1
  4. package/bin/lib/cli-startup.js +1 -1
  5. package/bin/lib/cli-startup.test.js +18 -4
  6. package/dist/assets/{AgentAvatar-CLWWNu_Q.js → AgentAvatar-Q1SmFRx2.js} +1 -1
  7. package/dist/assets/AssistantView-CwXkiCAd.js +3 -0
  8. package/dist/assets/{DiagramView-xuSJTnv7.js → DiagramView-BW92schO.js} +1 -1
  9. package/dist/assets/{FadeInOnReveal-Ov0D96d0.js → FadeInOnReveal-BZmwl-zE.js} +1 -1
  10. package/dist/assets/{Icon-DD-BuMfZ.js → Icon-AQPvxMiU.js} +1 -1
  11. package/dist/assets/{MarkdownRenderer-bc_p1H7l.js → MarkdownRenderer-Bv05iDZZ.js} +2 -2
  12. package/dist/assets/{MarkdownRendererImpl-SKi4oG0c.js → MarkdownRendererImpl-C81xqYib.js} +3 -3
  13. package/dist/assets/MarkstreamRendererImpl-CXUCQuKJ.js +3 -0
  14. package/dist/assets/{MobileDetailNavigation-Bnx59U_J.js → MobileDetailNavigation-BMgIu7zc.js} +1 -1
  15. package/dist/assets/{MobileShareBridge-BQlP4J-F.js → MobileShareBridge-BOXGNHmC.js} +2 -2
  16. package/dist/assets/MobileSurface-xuc_z0_G.js +2 -0
  17. package/dist/assets/{MultiRunWindow-ChZGob0v.js → MultiRunWindow-B5At2Z95.js} +1 -1
  18. package/dist/assets/{OnboardingScreen-DtQJxZG-.js → OnboardingScreen-bsPLgz4r.js} +1 -1
  19. package/dist/assets/OverlayScrollbar-4wp4migh.js +2 -0
  20. package/dist/assets/SettingsView-CJ6tcH5_.js +25 -0
  21. package/dist/assets/{SettingsWindow-DfnsFa8y.js → SettingsWindow-CMtX2bMl.js} +1 -1
  22. package/dist/assets/{TerminalView-Dh9MWCpS.js → TerminalView-Dvr-ysTS.js} +1 -1
  23. package/dist/assets/{ToolOutputDialog-BejmjrRk.js → ToolOutputDialog-uH1ZZDSS.js} +2 -2
  24. package/dist/assets/appThemeRegistry-DK7q2juD.js +1 -0
  25. package/dist/assets/{assistant-attachment-cache-C0aRnFkj.js → assistant-attachment-cache-DphJleHr.js} +1 -1
  26. package/dist/assets/{button-D-rATN7w.js → button-CcNJUxUd.js} +1 -1
  27. package/dist/assets/collapsible-ZmZ6rLWs.js +3 -0
  28. package/dist/assets/context-menu-B2LXJgXL.js +1 -0
  29. package/dist/assets/{desktopHosts-B1ixEylr.js → desktopHosts-C6HrP0jq.js} +1 -1
  30. package/dist/assets/{desktopRelayRestore-4JmFUw8r.js → desktopRelayRestore-DdVBp45U.js} +1 -1
  31. package/dist/assets/{diagram-DQf7Y_uR.js → diagram-CxTs9hCQ.js} +1 -1
  32. package/dist/assets/{dialog-bfbvR4VH.js → dialog-KMVL9QKF.js} +1 -1
  33. package/dist/assets/es-CN3E_zXj.js +15 -0
  34. package/dist/assets/{fileMentionTouchSelection-BvrNCroG.js → fileMentionTouchSelection-7RIwlpkB.js} +1 -1
  35. package/dist/assets/{fileQueries-DQc8EJUf.js → fileQueries-CjdBRy8y.js} +1 -1
  36. package/dist/assets/fr-9zZvQZD2.js +13 -0
  37. package/dist/assets/gitApi-yuWg9BN4.js +10 -0
  38. package/dist/assets/{imageSource-BlAJJUEI.js → imageSource-9vQBq3zp.js} +1 -1
  39. package/dist/assets/{input-8r6F_Fza.js → input-CrIvk3HZ.js} +1 -1
  40. package/dist/assets/insertionBoundaries-BiUCSkx-.js +1 -0
  41. package/dist/assets/ja-Dnjk_82N.js +15 -0
  42. package/dist/assets/ko-BxCEE99C.js +15 -0
  43. package/dist/assets/{main-CCE_4y5F.js → main-C9mIBo77.js} +2 -2
  44. package/dist/assets/main-DiL6w6KF.js +169 -0
  45. package/dist/assets/markdown-worker-bS5OgGO3.js +2 -0
  46. package/dist/assets/{markdownHeightCache-1Qo6y6IJ.js → markdownHeightCache-BmXVY_gc.js} +1 -1
  47. package/dist/assets/{markdownTheme-DOfGg-A7.js → markdownTheme-CKac3wKC.js} +1 -1
  48. package/dist/assets/mcpQueries-C7jknHV8.js +1 -0
  49. package/dist/assets/miniChat-CwtUaElU.js +2 -0
  50. package/dist/assets/mobile-DB-6--ws.js +2 -0
  51. package/dist/assets/multirun-TAsxFI8e.js +4 -0
  52. package/dist/assets/{persistence-Ce3AnpEr.js → persistence-56kq8Z4V.js} +2 -2
  53. package/dist/assets/pl-CNNsWnPM.js +15 -0
  54. package/dist/assets/platform-C13fMVEs.js +6 -0
  55. package/dist/assets/pt-BR-BZB2DJMp.js +15 -0
  56. package/dist/assets/{relay-image-stream-DM7atqJs.js → relay-image-stream-DrdVj99c.js} +1 -1
  57. package/dist/assets/renderElectronMiniChatApp-CGj0MNRU.js +2 -0
  58. package/dist/assets/renderMobileApp-CGMMqbsO.js +28 -0
  59. package/dist/assets/runtime-fetch-Fs9ZV2V8.js +1 -0
  60. package/dist/assets/{runtimeConfig-BMvqa5we.js → runtimeConfig-BEANkvOd.js} +1 -1
  61. package/dist/assets/runtimeEndpointReset-A_ZBUJFS.js +147 -0
  62. package/dist/assets/sessionChangeSummary-qOLrP9fw.js +2 -0
  63. package/dist/assets/{sessionLookup-gh-hVRIc.js → sessionLookup-34XFmP9C.js} +1 -1
  64. package/dist/assets/{sortable-tabs-strip-CudoSgV4.js → sortable-tabs-strip-DyEV0Heg.js} +1 -1
  65. package/dist/assets/src-ubCWXZhR.css +2 -0
  66. package/dist/assets/store-DLCiZaA6.js +15 -0
  67. package/dist/assets/{terminalApi-DiF6JmBP.js → terminalApi-CXaBEoa_.js} +1 -1
  68. package/dist/assets/textarea-BBOlRI9O.js +1 -0
  69. package/dist/assets/{tooltip-CQvpK-UV.js → tooltip-CPI4fr1a.js} +1 -1
  70. package/dist/assets/uk-rwQrxeYM.js +15 -0
  71. package/dist/assets/{url-_z7evzdK.js → url-DRDQXjyX.js} +1 -1
  72. package/dist/assets/{useAppFontEffects-Cpmpo7Wb.js → useAppFontEffects-CiDe42I5.js} +57 -43
  73. package/dist/assets/{useAssistantUIStore-CMutVh9B.js → useAssistantUIStore-asNG6K7n.js} +1 -1
  74. package/dist/assets/useDesktopWindowControlsLayout-BlizAlOt.js +1 -0
  75. package/dist/assets/useEffectiveDirectory-C_CouL5v.js +1 -0
  76. package/dist/assets/{useFontPreferences-DcbXQOkc.js → useFontPreferences-B0oUZAiB.js} +1 -1
  77. package/dist/assets/useMobileNavigationStore-DfPClaW-.js +414 -0
  78. package/dist/assets/{useRuntimeAPIs-DSLXJybW.js → useRuntimeAPIs-DwLtO0c_.js} +1 -1
  79. package/dist/assets/useSessionAutoCleanup-DtrfbxAp.js +2 -0
  80. package/dist/assets/{useThemeSystem-DMzWVJaW.js → useThemeSystem-BlNUWH47.js} +1 -1
  81. package/dist/assets/useUIStore-CQYKJnrg.js +1 -0
  82. package/dist/assets/{useWorkerHighlightedLines-Bqn4AiBL.js → useWorkerHighlightedLines-CPNYz6Wf.js} +2 -2
  83. package/dist/assets/{vendor-base-ui-CnHfUmDN.js → vendor-base-ui-CDjyofeD.js} +1 -1
  84. package/dist/assets/{vendor-cmdk-CeAGfrLo.js → vendor-cmdk-BFH0UpXX.js} +1 -1
  85. package/dist/assets/{vendor-dnd-kit-accessibility-BY5LhhUB.js → vendor-dnd-kit-accessibility-BrR3AKvM.js} +1 -1
  86. package/dist/assets/{vendor-dnd-kit-core-CvWxUPdb.js → vendor-dnd-kit-core-CNfdvk6H.js} +1 -1
  87. package/dist/assets/{vendor-dnd-kit-sortable-hHdP9lLb.js → vendor-dnd-kit-sortable-DQUaTeGj.js} +1 -1
  88. package/dist/assets/{vendor-framer-motion-DFy_BSVd.js → vendor-framer-motion-4dogsUk3.js} +1 -1
  89. package/dist/assets/{vendor-legendapp-list-WE32lwNk.js → vendor-legendapp-list-BU7MdPZR.js} +1 -1
  90. package/dist/assets/{vendor-markstream-react-DX55XLGO.js → vendor-markstream-react-qHC2FykU.js} +3 -3
  91. package/dist/assets/{vendor-pierre-diffs-DX7XTPG3.js → vendor-pierre-diffs-CUfqC003.js} +1 -1
  92. package/dist/assets/{vendor-react-DLPElpoQ.js → vendor-react-C94A0AHl.js} +1 -1
  93. package/dist/assets/{vendor-react-drawio-ECtEwvbc.js → vendor-react-drawio-FVlWqKVE.js} +1 -1
  94. package/dist/assets/{vendor-reactuses-core-BnW6GxJt.js → vendor-reactuses-core-C2A3EjUi.js} +1 -1
  95. package/dist/assets/{vendor-sonner-DVzioF3d.js → vendor-sonner-DNqHmUQs.js} +1 -1
  96. package/dist/assets/{vendor-stream-diffs-DWy3xSmp.js → vendor-stream-diffs-CwbKsmlv.js} +2 -2
  97. package/dist/assets/{vendor-tanstack-react-query-D7pys_c9.js → vendor-tanstack-react-query-D0iFK57C.js} +1 -1
  98. package/dist/assets/{vendor-tanstack-react-virtual-tlDgH6PG.js → vendor-tanstack-react-virtual-B2kV6cnT.js} +1 -1
  99. package/dist/assets/{vendor-zustand-B4dlGEM2.js → vendor-zustand-BqLKf6ZY.js} +1 -1
  100. package/dist/assets/zh-CN-BvmBDnkD.js +15 -0
  101. package/dist/assets/zh-TW-9wcHTX0y.js +15 -0
  102. package/dist/index.html +13 -13
  103. package/dist/mini-chat.html +13 -13
  104. package/dist/mobile.html +13 -13
  105. package/package.json +1 -1
  106. package/server/index.js +327 -62
  107. package/server/lib/assistants/DOCUMENTATION.md +14 -9
  108. package/server/lib/assistants/contracts.js +11 -1
  109. package/server/lib/assistants/projection-history.test.js +265 -18
  110. package/server/lib/assistants/routes.js +6 -0
  111. package/server/lib/assistants/service.js +417 -231
  112. package/server/lib/assistants/service.test.js +392 -148
  113. package/server/lib/conversations/DOCUMENTATION.md +1 -1
  114. package/server/lib/conversations/service.js +1 -0
  115. package/server/lib/conversations/service.test.js +16 -0
  116. package/server/lib/conversations/validation.js +11 -1
  117. package/server/lib/event-stream/DOCUMENTATION.md +3 -1
  118. package/server/lib/event-stream/directory-ws-bridge.js +13 -2
  119. package/server/lib/event-stream/global-hub.js +49 -4
  120. package/server/lib/event-stream/reasoning-projection.js +16 -1
  121. package/server/lib/event-stream/reasoning-projection.test.js +15 -0
  122. package/server/lib/event-stream/runtime.js +57 -20
  123. package/server/lib/event-stream/runtime.test.js +112 -0
  124. package/server/lib/llm/DOCUMENTATION.md +33 -9
  125. package/server/lib/llm/catalog.js +1 -1
  126. package/server/lib/llm/completions.js +5 -1
  127. package/server/lib/llm/completions.test.js +3 -3
  128. package/server/lib/llm/generate.js +237 -145
  129. package/server/lib/llm/generate.test.js +201 -46
  130. package/server/lib/llm/routes.js +2 -0
  131. package/server/lib/message-queue/runtime.js +15 -2
  132. package/server/lib/notifications/runtime.js +23 -5
  133. package/server/lib/notifications/runtime.test.js +11 -0
  134. package/server/lib/opencode/DOCUMENTATION.md +85 -17
  135. package/server/lib/opencode/agent-document.d.ts +28 -0
  136. package/server/lib/opencode/agent-document.js +280 -0
  137. package/server/lib/opencode/agent-document.test.js +137 -0
  138. package/server/lib/opencode/agents.js +96 -0
  139. package/server/lib/opencode/auth-state-runtime.js +5 -0
  140. package/server/lib/opencode/bootstrap-runtime.js +2 -0
  141. package/server/lib/opencode/config-entity-routes.js +42 -99
  142. package/server/lib/opencode/config-entity-routes.test.js +107 -0
  143. package/server/lib/opencode/config-hot-reload.integration.test.js +105 -0
  144. package/server/lib/opencode/ensure-cli.js +1 -2
  145. package/server/lib/opencode/env-runtime.js +40 -26
  146. package/server/lib/opencode/env-runtime.test.js +10 -17
  147. package/server/lib/opencode/feature-routes-runtime.js +43 -4
  148. package/server/lib/opencode/feature-routes-runtime.test.js +18 -0
  149. package/server/lib/opencode/http-server-connections.js +98 -0
  150. package/server/lib/opencode/http-server-connections.test.js +321 -0
  151. package/server/lib/opencode/lifecycle.js +349 -39
  152. package/server/lib/opencode/lifecycle.test.js +322 -0
  153. package/server/lib/opencode/managed-capabilities-runtime.js +15 -2
  154. package/server/lib/opencode/managed-capabilities-runtime.test.js +1 -0
  155. package/server/lib/opencode/openchamber-routes.js +7 -1
  156. package/server/lib/opencode/opencode2-pin.js +4 -4
  157. package/server/lib/opencode/opencode2-pin.test.js +1 -0
  158. package/server/lib/opencode/opencode2-sidecar.e2e.test.js +127 -4
  159. package/server/lib/opencode/owned-runtime-upgrade.js +431 -0
  160. package/server/lib/opencode/owned-runtime-upgrade.test.js +160 -0
  161. package/server/lib/opencode/plugin-routes.js +3 -18
  162. package/server/lib/opencode/plugin-routes.test.js +9 -9
  163. package/server/lib/opencode/provider-catalog.js +58 -12
  164. package/server/lib/opencode/provider-catalog.test.js +48 -0
  165. package/server/lib/opencode/proxy.js +252 -46
  166. package/server/lib/opencode/proxy.test.js +235 -2
  167. package/server/lib/opencode/routes.js +296 -62
  168. package/server/lib/opencode/routes.test.js +278 -12
  169. package/server/lib/opencode/runtime-contract.js +401 -0
  170. package/server/lib/opencode/runtime-contract.test.js +214 -0
  171. package/server/lib/opencode/server-opencode-fetch.js +242 -0
  172. package/server/lib/opencode/server-opencode-fetch.test.js +130 -0
  173. package/server/lib/opencode/server-utils-runtime.js +33 -0
  174. package/server/lib/opencode/shared-service.integration.test.js +66 -0
  175. package/server/lib/opencode/shared-service.js +147 -0
  176. package/server/lib/opencode/shared-service.test.js +93 -0
  177. package/server/lib/opencode/shared.js +3 -3
  178. package/server/lib/opencode/shutdown-runtime.js +15 -6
  179. package/server/lib/opencode/shutdown-runtime.test.js +49 -1
  180. package/server/lib/opencode/skill-routes.js +20 -33
  181. package/server/lib/opencode/skill-routes.test.js +35 -2
  182. package/server/lib/opencode/skills.test.js +15 -0
  183. package/server/lib/opencode/startup-pipeline-runtime.js +4 -0
  184. package/server/lib/opencode/static-routes-runtime.js +3 -1
  185. package/server/lib/opencode/static-routes-runtime.test.js +33 -0
  186. package/server/lib/opencode/v2-client.js +14 -3
  187. package/server/lib/opencode/v2-plugin-host-shim/index.mjs +155 -0
  188. package/server/lib/opencode/v2-plugin-host-shim/package.json +4 -0
  189. package/server/lib/permission-auto-accept/DOCUMENTATION.md +5 -5
  190. package/server/lib/permission-auto-accept/runtime.js +14 -7
  191. package/server/lib/permission-auto-accept/runtime.test.js +27 -12
  192. package/server/lib/relay/reasoning-projection.e2e.test.ts +22 -7
  193. package/server/lib/scheduled-tasks/DOCUMENTATION.md +8 -0
  194. package/server/lib/scheduled-tasks/runtime.js +52 -4
  195. package/server/lib/scheduled-tasks/runtime.test.js +80 -1
  196. package/server/lib/session-goal/DOCUMENTATION.md +113 -13
  197. package/server/lib/session-goal/routes.js +9 -0
  198. package/server/lib/session-goal/runtime.js +1579 -117
  199. package/server/lib/session-goal/runtime.test.js +1453 -84
  200. package/server/lib/session-index/DOCUMENTATION.md +18 -15
  201. package/server/lib/session-index/event-ingest.js +89 -16
  202. package/server/lib/session-index/event-ingest.test.js +73 -0
  203. package/server/lib/session-index/host-authority-snapshot.js +92 -0
  204. package/server/lib/session-index/routes.host-archive.test.js +201 -0
  205. package/server/lib/session-index/routes.js +63 -10
  206. package/server/lib/session-index/routes.test.js +8 -8
  207. package/server/lib/session-index/service.js +7 -1
  208. package/server/lib/session-index/sync-runtime.js +161 -34
  209. package/server/lib/session-index/sync-runtime.test.js +155 -1
  210. package/server/lib/session-metadata/DOCUMENTATION.md +61 -16
  211. package/server/lib/session-metadata/routes.js +108 -9
  212. package/server/lib/session-metadata/routes.test.js +47 -2
  213. package/server/lib/session-metadata/session-archive.d.ts +73 -0
  214. package/server/lib/session-metadata/session-archive.js +654 -0
  215. package/server/lib/session-metadata/session-archive.test.js +359 -0
  216. package/server/lib/session-metadata/session-metadata-store.d.ts +36 -0
  217. package/server/lib/session-metadata/session-metadata-store.js +212 -72
  218. package/server/lib/session-metadata/session-metadata-store.test.js +205 -10
  219. package/server/lib/session-metadata/session-projection.d.ts +41 -0
  220. package/server/lib/session-metadata/session-projection.js +255 -0
  221. package/server/lib/session-metadata/session-projection.test.js +64 -0
  222. package/server/lib/session-metadata/system-session.js +55 -0
  223. package/server/lib/session-metadata/system-session.test.js +55 -0
  224. package/server/lib/session-title/DOCUMENTATION.md +40 -7
  225. package/server/lib/session-title/native-runtime.test.js +167 -0
  226. package/server/lib/session-title/runtime.js +67 -42
  227. package/server/lib/session-title/session-access.js +46 -0
  228. package/server/lib/session-title/session-access.test.js +91 -0
  229. package/server/lib/session-turn-pages/DOCUMENTATION.md +9 -8
  230. package/server/lib/session-turn-pages/routes.js +17 -102
  231. package/server/lib/session-turn-pages/routes.test.js +281 -0
  232. package/server/lib/session-turn-pages/session-message-projection.d.ts +13 -0
  233. package/server/lib/session-turn-pages/session-message-projection.js +281 -0
  234. package/server/lib/small-model/DOCUMENTATION.md +101 -147
  235. package/server/lib/small-model/catalog.js +31 -51
  236. package/server/lib/small-model/catalog.test.js +65 -10
  237. package/server/lib/small-model/custom-api.js +68 -0
  238. package/server/lib/small-model/custom-api.test.js +64 -0
  239. package/server/lib/small-model/index.js +124 -240
  240. package/server/lib/small-model/resolve.js +35 -120
  241. package/server/lib/small-model/resolve.test.js +20 -110
  242. package/server/lib/small-model/routes.js +1 -3
  243. package/server/lib/small-model/summary-settings.test.js +157 -253
  244. package/server/opencode-proxy.test.js +2 -0
  245. package/dist/assets/AssistantView-BTCkm8yk.js +0 -3
  246. package/dist/assets/MarkstreamRendererImpl-CnkodGJW.js +0 -3
  247. package/dist/assets/MobileSurface-BXLeiZ4d.js +0 -2
  248. package/dist/assets/OverlayScrollbar-pMwxaCca.js +0 -2
  249. package/dist/assets/SettingsView-B5I0KDTZ.js +0 -25
  250. package/dist/assets/appThemeRegistry-COGfxTFV.js +0 -1
  251. package/dist/assets/collapsible-BXRd5_Hr.js +0 -1
  252. package/dist/assets/context-menu-jGtH6fR9.js +0 -1
  253. package/dist/assets/es-c52LTHHe.js +0 -15
  254. package/dist/assets/fr-PisFbUE8.js +0 -13
  255. package/dist/assets/gitApi-ButwzQ0N.js +0 -9
  256. package/dist/assets/insertionBoundaries-DGs7S5zv.js +0 -1
  257. package/dist/assets/ja-C8Ikun3Z.js +0 -15
  258. package/dist/assets/ko-ClFys5o2.js +0 -15
  259. package/dist/assets/main-Dn9rpsgl.js +0 -169
  260. package/dist/assets/markdown-worker-CptoICmq.js +0 -2
  261. package/dist/assets/miniChat-BpjxVqgg.js +0 -2
  262. package/dist/assets/mobile-nMJCaNq1.js +0 -2
  263. package/dist/assets/multirun-BvSG94mW.js +0 -4
  264. package/dist/assets/pl-CnaKWN5F.js +0 -15
  265. package/dist/assets/platform-CWTIp02q.js +0 -4
  266. package/dist/assets/projectMeta-DOe49dM_.js +0 -3
  267. package/dist/assets/pt-BR-s8OpfRI6.js +0 -15
  268. package/dist/assets/renderElectronMiniChatApp-R6dKh79f.js +0 -2
  269. package/dist/assets/renderMobileApp-y-S8y8v_.js +0 -28
  270. package/dist/assets/runtime-fetch-zIalUnbb.js +0 -1
  271. package/dist/assets/runtimeEndpointReset-B6BxhvR0.js +0 -147
  272. package/dist/assets/sessionChangeSummary-VVBlEXuh.js +0 -2
  273. package/dist/assets/src-BzX5UI-c.css +0 -2
  274. package/dist/assets/store-DJczmczv.js +0 -15
  275. package/dist/assets/textarea-3XR8sUfy.js +0 -1
  276. package/dist/assets/uk-CaX0iqkB.js +0 -15
  277. package/dist/assets/useDesktopWindowControlsLayout-B1GX59-L.js +0 -1
  278. package/dist/assets/useEffectiveDirectory-CN6JoCFw.js +0 -1
  279. package/dist/assets/useMobileNavigationStore-BVjFtXSy.js +0 -414
  280. package/dist/assets/useSessionAutoCleanup-BLjymaFt.js +0 -2
  281. package/dist/assets/useUIStore-Bxv3f23A.js +0 -1
  282. package/dist/assets/zh-CN-20MYEjha.js +0 -15
  283. package/dist/assets/zh-TW-DiN04qTw.js +0 -15
  284. package/server/lib/small-model/call.js +0 -427
  285. package/server/lib/small-model/call.test.js +0 -382
  286. package/server/lib/small-model/opencode-session.js +0 -183
  287. package/server/lib/small-model/opencode-session.test.js +0 -147
@@ -1,414 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-sonner-DVzioF3d.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-base-ui-CnHfUmDN.js","assets/store-DJczmczv.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{T as n,i as r,p as i,w as a}from"./runtime-auth-D66yq6ie.js";import{_ as o,c as s,f as c,h as l,i as u,m as d,n as f,o as p,r as m,s as h,t as g}from"./runtime-switch-LvWDU-SL.js";import{n as _,r as v}from"./runtime-fetch-zIalUnbb.js";import{A as y,Cn as b,Ct as x,Dt as S,Et as C,F as w,Ft as T,I as E,It as D,L as O,M as k,Mt as A,N as j,Nt as ee,Ot as te,P as ne,Pt as re,Q as ie,Qt as ae,R as M,St as oe,Tt as se,U as ce,Vt as le,Y as ue,Zt as de,_t as fe,at as pe,bt as N,ct as me,d as P,et as F,i as I,it as he,kt as ge,nt as _e,o as ve,pt as ye,r as be,rt as xe,tn as Se,tt as L,u as R,vt as Ce,w as we,wt as Te,xt as z,yt as Ee}from"./persistence-Ce3AnpEr.js";import{a as De,i as Oe,o as ke,r as Ae}from"./vendor-zustand-B4dlGEM2.js";import{nt as je,rt as Me}from"./vendor-base-ui-CnHfUmDN.js";import{Bt as Ne,Cn as Pe,Ct as Fe,Ft as Ie,Gt as Le,Ht as Re,It as ze,Kt as Be,Lt as Ve,Mn as He,Nn as Ue,Nt as B,Ot as We,Pn as Ge,Pt as Ke,R as qe,Rt as Je,St as Ye,Ut as Xe,Vt as Ze,Wt as Qe,Xt as $e,Yt as et,Zt as tt,_n as nt,an as rt,cn as it,dn as at,en as ot,gn as V,in as st,jn as ct,kn as lt,ln as ut,n as dt,nn as ft,r as pt,t as mt,wn as ht,yn as gt,zt as _t}from"./platform-CWTIp02q.js";import{b as vt,t as yt,y as bt}from"./useUIStore-Bxv3f23A.js";import{i as xt,n as St,r as Ct,t as wt}from"./vendor-pathe-vBmvQE8f.js";import{a as Tt,n as Et,o as Dt}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as Ot}from"./vendor-react-DLPElpoQ.js";import{r as kt}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as At,l as jt,n as Mt,o as Nt,s as Pt,t as Ft}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as It}from"./vendor-sonner-DVzioF3d.js";import{a as Lt,n as Rt}from"./vendor-reactuses-core-BnW6GxJt.js";import{d as zt,f as Bt,t as Vt}from"./button-D-rATN7w.js";import{i as Ht,t as Ut}from"./store-DJczmczv.js";import{i as Wt}from"./useAssistantUIStore-CMutVh9B.js";import{a as Gt,i as Kt,n as qt,o as Jt,r as Yt,s as Xt,t as Zt}from"./vendor-zod-Dzk5kdUU.js";import{t as Qt}from"./vendor-fuse.js-DB5wDJbI.js";var $t=1048576,en=new TextEncoder,tn=e=>e instanceof Error&&e.name===`AbortError`,nn=e=>tn(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),rn=async e=>{try{await e?.cancel()}catch{}},an=async e=>{try{await e.cancel()}catch{}},on=async(e,t={})=>{let n=t.fetch??_,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||tn(e)?nn(e):Error(`SSE request failed`)}if(!r.ok)throw await rn(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await rn(r.body),Error(`SSE response has invalid content type`);if(!r.body)throw Error(`SSE response has no body`);let i=r.body.getReader();try{t.onOpen?.()}catch(e){throw await an(i),i.releaseLock(),t.signal?.aborted||tn(e)?nn(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
3
- `)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>$t)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=en.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>$t)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
4
- `&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
5
- `)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
6
- `?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||tn(e)?nn(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await an(i),i.releaseLock()}},sn=null,cn=null,ln=null,un=0,dn=null,fn=new Set,pn=new Map,mn=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,hn=()=>{pn.clear()},gn=e=>pn.get(e),_n=(e,t)=>{let n=pn.get(e);(n===void 0||t>n)&&pn.set(e,t)},vn=3e4,yn=45e3,bn=()=>{ln&&=(clearTimeout(ln),null)},xn=()=>{if(cn||fn.size===0)return;let e=Math.min(1e3*2**Math.min(un,5),vn);cn=setTimeout(()=>{cn=null,un+=1,Dn()},e)},Sn=()=>{bn();let e=sn;sn=null,e?.controller.abort()},Cn=e=>{if(bn(),fn.size===0||sn!==e)return;let t=setTimeout(()=>{sn===e&&ln===t&&(ln=null,Sn(),xn())},yn);ln=t},wn=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},Tn=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:contact-turn-start`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=typeof t?.messageID==`string`?t.messageID.trim():``,i=t?.occurredAt;return!e||!n||!r||n!==r||typeof i!=`number`||!Number.isFinite(i)?null:{type:`contact-turn-start`,assistantID:e,turnID:n,messageID:r,occurredAt:i}}if(e.type===`openchamber:contact-bubble-delta`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.bubbleIndex,i=t?.delta,a=t?.done,o=t?.occurredAt;return!e||!n||typeof r!=`number`||!Number.isSafeInteger(r)||r<0||typeof i!=`string`||typeof a!=`boolean`||typeof o!=`number`||!Number.isFinite(o)?null:{type:`contact-bubble-delta`,assistantID:e,turnID:n,bubbleIndex:r,delta:i,done:a,occurredAt:o}}if(e.type===`openchamber:contact-turn-end`){let e=typeof t?.assistantID==`string`?t.assistantID.trim():``,n=typeof t?.turnID==`string`?t.turnID.trim():``,r=t?.status,i=t?.occurredAt;if(!e||!n||r!==`complete`&&r!==`error`||typeof i!=`number`||!Number.isFinite(i))return null;let a=typeof t?.error==`string`&&t.error.trim()?t.error.trim():void 0;return{type:`contact-turn-end`,assistantID:e,turnID:n,status:r,...a?{error:a}:{},occurredAt:i}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},En=e=>{let t=Tn(e);if(t){t.type===`event-stream-ready`&&(un=0),mn(t.type)&&`revision`in t&&_n(t.type,t.revision);for(let e of fn)try{e(t)}catch{}}},Dn=()=>{if(typeof window>`u`||fn.size===0||sn)return;let e={controller:new AbortController};sn=e,on(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{sn===e&&Cn(e)},onActivity:()=>{sn===e&&Cn(e)},onMessage:t=>{if(sn!==e)return;let n=wn(t);n&&En(n)}}).then(()=>{sn===e&&(sn=null,bn(),xn())},()=>{sn===e&&(sn=null,bn(),e.controller.signal.aborted||xn())})},On=()=>{dn||typeof window>`u`||(dn=s(()=>{hn(),cn&&=(clearTimeout(cn),null),Sn(),un=0,Dn()}))},kn=()=>{dn?.(),dn=null},An=e=>(fn.add(e),On(),Dn(),()=>{fn.delete(e),fn.size===0&&(hn(),cn&&=(clearTimeout(cn),null),un=0,Sn(),kn())}),jn=!1,Mn=Promise.resolve(),Nn=null,Pn=()=>{jn||(jn=!0,Mn=new Promise(e=>{Nn=e}))},Fn=async()=>Mn,In=()=>{if(!jn)return;jn=!1;let e=Nn;Nn=null,e?.()},Ln=`openchamber_input_draft_metadata_v1`,Rn=`openchamber_input_draft_metadata_migration_v1`,zn=`openchamber_chat_input_draft_`,Bn=`openchamber_chat_confirmed_mentions_`,Vn=()=>({ok:!1,error:{code:`unavailable`}}),Hn=()=>({ok:!1,error:{code:`cancelled`}}),Un=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),Wn=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Gn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Kn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,qn=e=>typeof e==`string`&&e.length>0,Jn=e=>({read:async t=>{if(!e)return Vn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return Un(e)}},write:async(t,n)=>{if(!e)return Vn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return Un(e)}},remove:async t=>{if(!e)return Vn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return Un(e)}},keys:async()=>{if(!e)return Vn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return Un(e)}}}),Yn=()=>{try{return Jn(typeof window>`u`?null:window.localStorage)}catch{return Jn(null)}},Xn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},Zn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(zn)&&n.add(e.slice(29)),e.startsWith(Bn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${zn}${i}`,a=`${Bn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(Xn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},Qn=e=>{if(!(!Wn(e)||!Gn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},$n=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&qn(t[0])&&(t[1]===`session`||t[1]===`draft`)&&qn(t[2])&&e===JSON.stringify(t)}catch{return!1}},er=e=>{if(!Wn(e)||!Gn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!qn(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},tr=e=>{if(!Wn(e)||!Gn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!Wn(e.drafts)||!Wn(e.tombstones)||!Wn(e.legacy)||!Gn(e.legacy,[`new`,`entries`])||!Wn(e.legacy.entries))return;let t=er(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=te(r);if(!e||t!==z(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!$n(t)||!Kn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=Qn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:Qn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},nr=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),rr=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},ir=async e=>{let t=await e.read(Ln);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=tr(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},ar=async(e,t)=>{let n=tr(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=rr(n);return r.ok?e.write(Ln,r.value):r},or=e=>Wn(e)&&Gn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&qn(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,sr=e=>rr({version:1,claimedTransportIdentity:e}),cr=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},lr=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],ur=new WeakMap,dr=e=>{let t=ur.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=tr(t);return n?i?a(async()=>i?ar(e,n):Vn()):Promise.resolve(Vn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await ir(e);if(!r.ok)return r;let a=r.value??nr(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await Zn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:cr(a,n.value,``)};if(a=cr(a,n.value,t),!i)return{ok:!0,value:a};let r=await ar(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await Zn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(Rn);if(!s.ok)return s;if(s.value!==null)try{let t=or(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=sr(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Rn,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=sr(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(Rn,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of lr(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await ar(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return ur.set(e,o),o},fr=e=>{let t=dr(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=tr(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(Vn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(Hn())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(Hn()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},pr=`openchamber-input-drafts`,mr=1,hr=`blobs`,gr=`blobRefs`,_r=class extends Error{code;constructor(e){super(e),this.code=e}},vr=e=>({ok:!1,error:{code:e instanceof _r?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),yr=e=>{if(!(e instanceof Blob)&&!Te(e))throw new _r(`invalid-value`)},br=e=>{if(!e)throw new _r(`invalid-value`)},xr=(e,t)=>({id:N(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Sr=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},Cr=async(e,t)=>(e.fingerprint??await Sr(e.value))===t,wr=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Tr=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},Er=(e,t)=>{let n=Tr(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Dr=(e=Or())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(N(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await wr(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return vr(e)}};return{put:async(t,n)=>{try{br(t),yr(n);let r=await Sr(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await Cr(i,r))throw new _r(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return vr(e)}},putAndRetain:async(t,n,r)=>{try{br(n),yr(r);let i=await Sr(r);return await e.transaction(async e=>{let a=N(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new _r(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await Cr(s,i))throw new _r(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(xr(t,n)),await wr(e)}),{ok:!0,value:void 0}}catch(e){return vr(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return vr(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(N(t))))?.blobID}}catch(e){return vr(e)}},retain:async(t,n)=>{try{return br(n),await e.transaction(async e=>{let r=await e.getBlobRef(N(t));if(r&&r.blobID!==n)throw new _r(`blob-id-conflict`);if(!await e.getBlob(n))throw new _r(`missing-blob`);r||await e.putBlobRef(xr(t,n)),await wr(e)}),{ok:!0,value:void 0}}catch(e){return vr(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)Er(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Tr(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await wr(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return vr(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(N({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await wr(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return vr(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return vr(e)}}}},Or=()=>({transaction:async e=>{let t=await kr(),n=t.transaction([hr,gr],`readwrite`),r=n.objectStore(hr),i=n.objectStore(gr),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),kr=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new _r(`database-unavailable`));return}let n=indexedDB.open(pr,mr),r=!1,i=()=>{r||(r=!0,t(new _r(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(hr)||e.createObjectStore(hr,{keyPath:`id`}),e.objectStoreNames.contains(gr)||e.createObjectStore(gr,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),Ar=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),jr=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Mr=e=>{let t=jr(e),n=Nr(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Nr=e=>{let t=tr(e);if(!t)throw Error(`invalid draft snapshot`);return t},Pr=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Fr=e=>typeof e==`string`?e:z(e),Ir=[`session`,`draft`,`surface`],Lr=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),Rr=e=>JSON.parse(JSON.stringify(e)),zr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:Lr(e.reference)}:{}},Br=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(zr),cleanupErrors:e.cleanupErrors.map(zr)}),Vr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,Hr=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Ir.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},Ur=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:Rr(t)}]:[]),Wr=e=>{let t=new Map;for(let n of Object.values(e))for(let e of Ur(n))t.set(N(e.reference),e);return t},Gr=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:Lr(t)}:{}}),Kr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),qr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,Jr=(e,t,n={})=>{let r=Ar(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?Br(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...Wr(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches(Lr(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(Gr(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=Lr(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(N(o),{reference:Lr(o),expectedBlobID:n,generation:a,reason:i}),r.push(Gr(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=Lr(t.reference),a=Rr(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:Gr(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:Gr({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:Gr(t.error,i)};let o=await n?.(Lr(i),Rr(a));if(o===void 0)return{acquired:!1,error:Gr({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:Gr(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:Gr(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:Gr(s.error,i)};let c=await n?.(Lr(i),Rr(a));if(c===void 0)return{acquired:!1,error:Gr({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:Gr(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return Kr(`disabled`);if(o)return{...Kr(`failed`),errors:[Gr({code:`invalid-record`})]};let n;try{if(!t)n=Ar();else{let e=Nr(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...Kr(`failed`),errors:[Gr({code:`invalid-record`})]}}let a=Wr(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,qr(t)])),{ownerKinds:Ir});return s.ok?(r=n,o=!0,{...Kr(`committed`),errors:s.value.missing.map(e=>Gr({code:`missing-blob`},a.get(e)?.reference))}):{...Kr(`failed`),errors:[Gr(s.error)]}}),commit:e=>{let n=[...Pr(e.drafts).map(([e])=>e),...(e.delete??[]).map(Fr)];return i?l(async()=>{if(!o)return Kr(`unseeded`,n);if(!i)return Kr(`disabled`,n);let s=a,c=[],l=Mr(r),p=Pr(e.drafts),m=Pr(e.tombstones),h=(e.delete??[]).map(Fr);if(p.some(([e,t])=>!Hr(e)||!Vr(t.revision))||m.some(([e,t])=>!Hr(e)||!Vr(t))||h.some(e=>!Hr(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...Kr(`failed`,n),errors:[Gr({code:`invalid-record`})]};try{for(let[e,t]of p){let n=te(t);if(!n||e!==z(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Nr(jr(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...Kr(`failed`,n),errors:[Gr({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return Kr(`stale`,n);let g=Wr(r.drafts),_=Wr(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,qr(_.get(N(e))),c,`acquire-failed`);return{...Kr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,qr(_.get(N(e))),c,`stale`);return{...Kr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,qr(_.get(N(e))),c,`disabled`);return{...Kr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(jr(l));if(!y.ok){for(let e of v.reverse())await d(e,qr(_.get(N(e))),c,`metadata-failed`);return{...Kr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...Kr(`committed`,n),cleanupErrors:c}}):Promise.resolve(Br(Kr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return Kr(`unseeded`);if(!i)return Kr(`disabled`);let t=await u(),n=new Map([...Wr(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Ir}),s=a.ok?a.value.missing.map(e=>Gr({code:`missing-blob`},Wr(r.drafts).get(e)?.reference)):[Gr(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...Kr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},Yr=`openchamber-composer-reference-draft`,Xr=`openchamber-pasted-text-draft`,Zr=e=>Array.from(e).length,Qr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),$r=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,ei=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,fe.referenceCount);a+=1){let o=t[a];if(!(!Qr(o)||!$r(o.id,fe.idLength)||!$r(o.token,fe.displayLength)||typeof o.text!=`string`||o.text.length>fe.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==Zr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<fe.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>fe.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},ti=e=>{try{let t=JSON.parse(e);if(!Qr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===Yr)return(t.version===2?C(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===Xr){let e=t.version===1&&Array.isArray(t.references)?ei(t.text,t.references):[];return C(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},ni=`file://`,ri=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},ii=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(ni)?t:`${ni}${ri(t)}`},ai=(e,t)=>`${e}\u0000${t}`,oi=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),si=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},ci=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,li=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),ui=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),di=((e={})=>{let t=e.sink??Yn(),n=e.repository??dr(t),r=e.coordinator??fr(t),i=e.blobStore??Dr(),a=e.durability??Jr(i,r,{enabled:e.persistenceEnabled??!0}),o=new Map,s=new Map,c=new Map,l=new Map,d=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,S,C=new Set,w=new Map,T=new Set;return De()((t,r)=>{let E=e=>o.set(e,(o.get(e)??0)+1),D=(...e)=>{for(let t of e)c.set(t,(c.get(t)??0)+1),l.delete(t)},O=e=>te(e),k=()=>e.runtimeCapture?.()??{transportIdentity:u(),generation:f()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),ne=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},re=()=>e.createID?.()??_e(),ie=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await oi(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},ae=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},M=(e,n)=>{let i=r(),s=_,c=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!i.persistenceEnabled)return l.forEach(e=>C.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,o.get(e)??0])),d=new Map(l.map(e=>[e,i.drafts[e]?.revision??i.tombstones[e]??0])),f=l.filter(e=>i.drafts[e]),v=Object.fromEntries(f.map(e=>[e,i.draftPersistence[e]?.status===`error`?i.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,i.draftAttachmentPersistence[e]?.status===`error`?i.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>C.add(e));let x=(async()=>{let e=r(),n=await a.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===s&&r().persistenceEnabled&&A(c)&&l.every(e=>(o.get(e)??0)===u.get(e)&&(r().drafts[e]?.revision??r().tombstones[e]??0)===d.get(e))}),i=_===s&&r().persistenceEnabled&&A(c);return(!i||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>C.add(e)),i&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:ae(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((o.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:ae(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},se=e=>{let n=r(),i=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(i).length&&t(e=>({draftPersistence:{...e.draftPersistence,...i}}))},ce=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?M(e,t).then(()=>void 0):Promise.resolve()},le=e=>{if(!r().persistenceEnabled){C.add(e);return}m.add(e),se([e]),!h&&(g=k(),h=setTimeout(()=>{ce()},40))},ue=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),M(t)},de=(e,n,i,a=`immediate`)=>{let o=z(e),s=r().drafts[o];if(!s||i!==void 0&&s.revision!==i)return;let c=O(n(s));if(!(!c||z(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...ne(e,o,c)})),a===`deferred`?le(o):ue([o]),c},fe=e=>e?Ce(e):void 0,pe=(e=[])=>JSON.parse(JSON.stringify(e)),N=(e,t,n,r=!1,i=!1)=>({status:e,...fe(n)?{record:fe(n)}:{},errors:pe(t?.errors),cleanupErrors:pe(t?.cleanupErrors),current:r,durable:i}),me=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:pe(t?.errors),cleanupErrors:pe(t?.cleanupErrors),current:i,durable:a,source:fe(n),destination:fe(r)}),P=e=>e.status,F=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},he=async(e,t)=>{let n={},i=r().draftAttachmentViews[z(e.key)]??{};for(let r of j(e)){let e;if(r.locator.kind===`url`){let n=t?.get(r.attachmentRefID);e=n===void 0?r.locator.url:n}else e=t?.get(r.attachmentRefID)??i[r.attachmentRefID]?.file??(typeof i[r.attachmentRefID]?.dataUrl==`string`&&Te(i[r.attachmentRefID].dataUrl)?i[r.attachmentRefID].dataUrl:void 0);if(r.locator.kind===`url`&&e!==void 0&&(e!==r.locator.url||!Te(e))||r.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&Te(e)))return;e!==void 0&&(n[r.attachmentRefID]=await ie(r,e))}return n},ge=e=>e?z(e):`legacy-unowned`,ve=e=>w.get(e)??0,ye=e=>{w.set(e,ve(e)+1)},be=(e,n,r=!1)=>{r&&ye(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ge(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return N(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!F(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return N(`failed`,void 0);if(e.expectedRevision===`absent`?c:c?.revision!==e.expectedRevision)return N(`conflict`,void 0,c);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!F(u))return N(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return N(`failed`,void 0);let f=await he(d,e.values);if(!f)return N(`failed`,void 0);let p=o.get(n)??0,m=c?.revision??l,h=await a.commit({drafts:{[n]:d},isCurrent:()=>A(i)&&(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return N(P(h),h,c);let g=(o.get(n)??0)===p&&(r().drafts[n]?.revision??r().tombstones[n]??0)===m,_=A(i);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),N(`stale`,h,d,!1,!0);let v=Ce(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:ae(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),N(_?`committed`:`stale`,h,v,_,!0)):N(`failed`,h)},deleteDraftSnapshot:async e=>{let n=z(e.key),i=e.runtime;if(i.transportIdentity!==e.key.transportIdentity||!A(i))return N(`stale`,void 0);let s=r(),c=s.drafts[n],l=s.tombstones[n]??0;if(!F(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return N(`failed`,void 0);if(!c||c.revision!==e.expectedRevision)return N(`conflict`,void 0);let u=e.expectedRevision+1;if(!F(u))return N(`failed`,void 0);let d=o.get(n)??0,f=c.revision,p=Math.max(l,u),m=await a.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(i)&&(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l});if(m.status!==`committed`)return N(P(m),m);let h=(o.get(n)??0)===d&&r().drafts[n]?.revision===f&&(r().tombstones[n]??0)===l,g=A(i);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),N(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),N(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=z(e.source),i=z(e.destination),s=e.runtime,c=r(),l=c.drafts[n],u=c.drafts[i];if(n===i||e.destination.owner.kind!==`session`||e.source.transportIdentity!==s.transportIdentity||e.destination.transportIdentity!==s.transportIdentity||!A(s))return me(`stale`,void 0,l,u);if(!F(e.expectedSourceRevision))return me(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return me(`conflict`,void 0,l,u);let d=o.get(n)??0,f=o.get(i)??0,p=c.tombstones[n]??0,m=c.tombstones[i]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return me(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!F(h))return me(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...li(e.destination),revision:h});if(!g)return me(`failed`,void 0,l,u);let _=await a.commit({drafts:{[i]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(s)&&(o.get(n)??0)===d&&(o.get(i)??0)===f&&r().drafts[n]?.revision===l.revision&&!r().drafts[i]&&(r().tombstones[n]??0)===p&&(r().tombstones[i]??0)===m,resolveBlobValue:e=>c.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return me(P(_),_,l,u);let v=(o.get(n)??0)===d&&r().drafts[n]?.revision===l.revision&&(r().tombstones[n]??0)===p,y=(o.get(i)??0)===f&&!r().drafts[i]&&(r().tombstones[i]??0)===m,b=A(s),x=Ce(g);if(!x)return me(`failed`,_,l,u);if(b&&!v&&!y)return me(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(i),D(i)),t(t=>{let r=t.drafts,a=t.tombstones;(v||y)&&(r={...r}),(v||y)&&(a={...a}),v&&(delete r[n],a[n]=Math.max(a[n]??0,h)),y&&(r[i]=x,delete a[i]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,i),s={...I(s,i),[i]:{status:`saved`,revision:x.revision}},c=I(c,i),l=I(l,i),u={...I(u,i),[i]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:ae(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[i]:t.draftAttachmentViews[n]??{}},l={...l,[i]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,i),s=I(s,n,i),c=I(c,n,i),l=I(l,n,i),u=I(u,n,i)),{drafts:r,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return me(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await ce();p.size;)await Promise.all([...p]);await a.flush()},ensureDraft:e=>{let n=z(e),i=r().drafts[n];if(i)return i;let a=O({...li(e),revision:(r().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),ue([n]),a},getDraft:e=>r().drafts[z(e)],setDraftText:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return r().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=r().getDraft(e)??r().ensureDraft(e);return de(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>de(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>de(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>de(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=r().getDraft(e);if(!n)return null;let i=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return de(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?i:null},setDraftAttachments:(e,t)=>de(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,i={})=>{let a=r().getDraft(e);if(i.partID&&!a?.syntheticParts.some(e=>e.partID===i.partID))return;let s=z(e),c=o.get(s)??0,l=r().tombstones[s]??0,u=k(),d=n instanceof File?n:new File([n],i.filename??`attachment`,{type:n.type}),f;try{f=await oi(d)}catch{let e=r().drafts[s];if(A(u)&&(r().tombstones[s]??0)===l&&(e?z(e.key)===s:(o.get(s)??0)===c)&&(!i.partID||e?.syntheticParts.some(e=>e.partID===i.partID))){let n=e?.revision??r().tombstones[s]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[s]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(r().tombstones[s]??0)!==l)return;let p=r().drafts[s];if(!p&&(o.get(s)??0)!==c)return;let m=p??r().ensureDraft(e);if(z(m.key)!==s||i.partID&&!m.syntheticParts.some(e=>e.partID===i.partID))return;let h=i.attachmentID??re(),g=i.partID?x(i.partID,h):oe(h),_=re(),v={attachmentID:h,attachmentRefID:g,filename:i.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:i.source??`local`,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}},y=i.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===i.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(s);let S={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...i.vscodePath?{vscodePath:i.vscodePath}:{},...i.vscodeSource?{vscodeSource:i.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[s]:b},draftAttachmentViews:{...e.draftAttachmentViews,[s]:{...e.draftAttachmentViews[s],[g]:S}}})),await M([s]),v},addDraftDurableAttachment:(e,n)=>{let i=r().getDraft(e)??r().ensureDraft(e);if(n.partID&&!i.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??re(),o=n.partID?x(n.partID,a):oe(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...i,revision:i.revision+1,syntheticParts:i.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...i,revision:i.revision+1,attachments:[...i.attachments,s]},l=O(c);if(!l)return;let u=z(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),M([u]),s},getDraftAttachmentViews:e=>{let t=z(e),n=r().drafts[t],i=r().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>i[e.attachmentRefID]?[i[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=z(e);if(!r().persistenceEnabled||!r().drafts[n]&&!r().tombstones[n])return;let i=await a.retryCleanup();i.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:ae(i)}}})),await M([n])},hydrateDraftAttachments:async e=>{let n=z(e),a=l.get(n);if(a)return a;let o=r().drafts[n];if(!o)return;let s=(c.get(n)??0)+1;c.set(n,s);let u=k(),d=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(c.get(n)!==s)return;let e=r(),i=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(i??{}).length?`ready`:`idle`}}))},a={},l=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await i.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)l.push(f.attachmentRefID);else{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{a[f.attachmentRefID]=await ie(f,p.value)}catch{c.get(n)===s&&_===d&&A(u)&&r().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=r(),p=f.drafts[n],m=c.get(n);if(m===s&&_===d&&A(u)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:a},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:l},draftHydration:{...e.draftHydration,[n]:l.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();l.set(n,f);try{await f}finally{l.get(n)===f&&l.delete(n)}},removeDraftAttachment:async(e,n)=>{let i=z(e),a=r().drafts[i],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=ct(o)?He(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(i),t(e=>{let t={...e.draftAttachmentViews[i]};return delete t[n],{drafts:{...e.drafts,[i]:c},draftAttachmentViews:{...e.draftAttachmentViews,[i]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[i]:(e.draftMissingAttachmentRefIDs[i]??[]).filter(e=>e!==n)}}}),(await M([i])).status===`committed`):!1},replaceDraftAttachment:async(e,n,i,a)=>{let o=z(e),s=r().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=r().tombstones[o]??0,d=i instanceof File?i:new File([i],a?.filename??`attachment`,{type:i.type}),f;try{f=await oi(d)}catch{let e=r().drafts[o],i=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(r().tombstones[o]??0)===u&&e&&i?.attachmentID===c.attachmentID&&i.attachmentRefID===c.attachmentRefID&&z(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=r().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(r().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||z(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=re(),_={attachmentID:g,attachmentRefID:h?x(h.partID,g):oe(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:re()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await M([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return N(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=oe(t);if(e.source===`server`&&e.dataUrl&&Te(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&Te(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:i})},restoreDraftRootAttachments:async(e,t)=>{let n=z(e),i=k();if(i.transportIdentity!==e.transportIdentity||!A(i))return N(`stale`,void 0);let a=r().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=oe(t);if(e.source===`server`&&e.dataUrl&&Te(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&Te(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=re();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=r().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&Te(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return r().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:i})},deleteDraft:(e,n)=>{let i=z(e),a=r().drafts[i];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return F(o)?(E(i),D(i),t(e=>{let t={...e.drafts};delete t[i];let n={...e.draftHydration},r={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[i],delete r[i],delete a[i],delete s[i],delete c[i],{drafts:t,tombstones:{...e.tombstones,[i]:Math.max(e.tombstones[i]??0,o)},draftHydration:n,draftPersistence:r,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),M([i]),!0):!1},moveDraft:(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),M([a,o]),c},moveDraftWithAttachments:async(e,n,i)=>{let a=z(e),o=z(n),s=r().drafts[a];if(!s||a===o||i!==void 0&&s.revision!==i||r().drafts[o]||(r().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await M([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await a.setEnabled(!1),await a.flush();return}t({persistenceEnabled:!0}),await a.setEnabled(!0);let n=k();b||await r().hydrateDraftMetadata(n.transportIdentity);let i=new Set([...Object.keys(r().drafts),...Object.keys(r().tombstones),...C]);C.clear(),await M(i),await a.flush()},hydrateDraftMetadata:e=>{let i=d.get(e);if(i)return i;let c=(async()=>{let i=(s.get(e)??0)+1;s.set(e,i);let c=k();if(c.transportIdentity!==e)return!1;let l=_,u=new Map(o),d=v,f=Object.entries(r().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=r().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){S??=a.seed(h).finally(()=>{S=void 0});let n;try{n=await S}catch{return!1}if(s.get(e)!==i||_!==l||!A(c))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=r(),x={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(o.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(x[e]?.revision??0)<=t&&delete x[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(o.get(t)??0)!==(u.get(t)??0))continue;let r=x[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(x[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=z(r),a=ti(n.text),s=O({...li(r),text:a.text,composerReferences:a.references,mentions:ui(a.text,n.mentions)});s&&!x[i]&&!w[i]&&(o.get(i)??0)===(u.get(i)??0)&&(x[i]=s),delete E[t],T.add(i)}t(e=>({drafts:x,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...C];for(let e of D)T.add(e);C.clear();try{await M(T),await a.flush()}catch{return!1}return s.get(e)===i&&_===l&&A(c)})();return d.set(e,c),c.finally(()=>{d.get(e)===c&&d.delete(e)}).catch(()=>void 0),c},claimLegacyNewDraft:async e=>{let n=r().legacyNewDraft;if(!n)return r().getDraft(e);let i=z(e),a=r().drafts[i];if(v+=1,y=!0,a||r().tombstones[i])return t({legacyNewDraft:void 0}),M([i]),a;let o=ti(n.text),s=O({...li(e),text:o.text,composerReferences:o.references,mentions:ui(o.text,n.mentions)});if(s)return E(i),t(e=>({drafts:{...e.drafts,[i]:s},legacyNewDraft:void 0})),M([i]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=r();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=r();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=r();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ge(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=r().activeAttachmentDraft;if(t){let n=ge(t),i=ve(n),a=await r().addDraftLocalAttachment(t,e);i!==ve(n)&&a&&r().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,i=ge(null),a=ve(i),o;try{o=await oi(e)}catch{return}if(a!==ve(i))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};be(i,e=>[...e,s])},removeAttachedFile:e=>{let t=r().activeAttachmentDraft;if(t){let n=r().getDraft(t),i=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;i&&r().removeDraftAttachment(t,i.attachmentRefID);return}be(ge(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{be(ge(r().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=r().activeAttachmentDraft;if(e){ye(ge(e)),r().getDraft(e)||r().ensureDraft(e),r().setDraftAttachments(e,[]);return}be(ge(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,i)=>{if(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=ii(t);r().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:i||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let i=z(e),a=ve(i),o=`${i}\u0000${ai(t,n.name)}`;if(!(r().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(r().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await r().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ve(i)&&o&&r().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let i=r().activeAttachmentDraft;if(i){r().addDraftVSCodeFileAttachment(i,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ge(null);if((r().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=ii(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};be(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=r().activeAttachmentDraft;if(n){await r().addDraftVSCodeSelectionAttachment(n,e,t);return}let i=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ge(null),o=ve(a),s=`${a}\u0000${ai(e,t.name)}`;if((r().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await oi(t)}catch{return}finally{T.delete(s)}if(o!==ve(a))return;let l={id:i,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};be(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let i=new File([n],t,{type:`text/plain`});await r().addVSCodeSelectionAttachment(e,i)},setActiveEditorFile:e=>{ci(r().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let i=r().activeAttachmentDraft;if(i){if(e.startsWith(`data:`)){let a=z(i);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=r().activeAttachmentDraft;if(!c||z(c)!==a)return;await r().addDraftLocalAttachment(i,s)}catch{}})();return}if(!Te(e))return;r().addDraftDurableAttachment(i,{filename:n,mimeType:t,size:si(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:si(e),source:`local`,serverPath:e};be(ge(null),e=>[...e,a])}}})})(),fi=new Set;function pi(e){return fi.add(e),()=>{fi.delete(e)}}function mi(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of fi)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function hi(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var gi=`Updating OpenCode configuration...`,_i=0,vi=gi,yi=new Set;function bi(){let e={isUpdating:_i>0,message:vi};yi.forEach(t=>t(e))}function xi(e){_i+=1,_i===1?(vi=e||gi,bi()):e&&(vi=e,bi())}function Si(){_i!==0&&(--_i,_i===0&&(vi=gi,bi()))}function Ci(e){vi===e&&_i>0||(vi=e,_i>0&&bi())}function wi(e){return yi.add(e),e({isUpdating:_i>0,message:vi}),()=>{yi.delete(e)}}function Ti(){return{isUpdating:_i>0,message:vi}}var Ei=vt(),Di=`projects`,Oi=`activeProjectId`,ki=`projects:manualOrder`,Ai=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},ji=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Mi=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Ni=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&ji.test(t)?t.toLowerCase():null},Pi=e=>{let t=e.trim();if(!t)return``;let n=Ai(t,re(`homeDirectory`,{storage:Ei})||Fe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Fi=e=>{let t=Pi(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Ii=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},Li=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},Ri=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),zi=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Pi(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=Ii(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Mi(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Ni(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},Bi=()=>{try{let e=re(Di,{storage:Ei});return e?zi(JSON.parse(e)):[]}catch{return[]}},Vi=()=>{if(!ee())return null;let e=g().trim().replace(/\/+$/,``);return e?Ei.getItem(`${Di}:${encodeURIComponent(e)}:manualOrder`):null},Hi=()=>{try{let e=re(ki,{storage:Ei})||Vi();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},Ui=()=>{try{let e=re(Oi,{storage:Ei});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},Wi=(e,t)=>{try{D(Di,JSON.stringify(e),{storage:Ei})}catch{}try{t?D(Oi,t,{storage:Ei}):T(Oi,{storage:Ei})}catch{}},Gi=(e,t,n)=>{Wi(e,t),n&&Ki(n),be({projects:e,activeProjectId:t??void 0})},Ki=e=>{try{D(ki,JSON.stringify(e),{storage:Ei})}catch{}},qi=Bi(),Ji=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},Yi=e=>{let t=[],n=new Set;for(let r of e){let e=Pi(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},Xi=(e,t,n,r)=>{let i=Pi(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Fi(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},Zi=()=>{if(typeof window>`u`||!b()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return Yi(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:Yi([{path:n}])},Qi=(e,t,n)=>{let r=Yi(e),i=n?Pi(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>Xi(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return We(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},$i=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,ea=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&$i(e.iconImage,r.iconImage):!1}),ta=(()=>{let e=Zi();if(!e)return null;let t=Qi(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),na=typeof window>`u`?!1:!!b()?.runtime?.isVSCode,ra=ta?.projects??(na?[]:qi),ia=ta?.activeProjectId??(na?null:Ui()),aa=ra.some(e=>e.id===ia)?ia:ra[0]?.id??null;ta&&Wi(ra,aa);var oa=De()(Ae((e,t)=>({projects:ra,activeProjectId:aa,manualProjectOrder:Hi(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Pi(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(na)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||Fi(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c},{projects:d,manualProjectOrder:f}=t();return e({projects:[u,...d],manualProjectOrder:[u.id,...f.filter(e=>e!==u.id)]}),We(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(na)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),Gi(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(B.setDirectory(e.path),Fe.getState().setDirectory(e.path,{showOverlay:!1}))}else Fe.getState().goHome()},setActiveProject:n=>{if(na)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),Gi(r,n,t().manualProjectOrder),B.setDirectory(a.path),Fe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(na)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),Gi(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(na)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),Gi(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(na)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Ni(r.iconBackground)),r.defaultModel!==void 0){let e=Mi(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),Gi(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(na)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=Li(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await Ri(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await _(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(na)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await _(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(na)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await _(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(na)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),Gi(o,a,c)},reorderProjectsById:(n,r)=>{if(na)return;let{projects:i,activeProjectId:a}=t(),o=Ji(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),Gi(o,a,s)},moveProjectToTop:n=>{if(na)return;let{projects:r,activeProjectId:i}=t(),a=r.findIndex(e=>e.id===n);if(a<=0)return;let o=[...r],[s]=o.splice(a,1);o.unshift(s),e({projects:o}),Gi(o,i)},resetForRuntimeSwitch:()=>{if(na)return;let t=Bi(),n=Ui(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:Hi().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(na)return;let r=zi(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),Wi(a.projects,i),Ki(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),Wi(r,i),Ki(l),i){let e=r.find(e=>e.id===i);e&&(B.setDirectory(e.path),Fe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!na)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=Qi(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),Wi([],null)),null;let c=!ea(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),Wi(s.projects,s.activeProjectId)),s.activeProject&&(B.setDirectory(s.activeProject.path),Fe.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&oa.getState().synchronizeFromSettings(t)});var H=Ot(),sa=e=>e?.trim()||null,ca=()=>{let e=oa.getState().getActiveProject?.();return sa(e?.path)??sa(B.getDirectory())},la=(e,t=u())=>P.commands.list(e,t),ua=(e=ca(),t=u())=>{let n=sa(e);return{queryKey:la(n,t),queryFn:async({signal:e})=>{let t=await _(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},da=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=oa(ma),i=ua(sa(n.directory)??sa(r)??sa(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],Pt(a)},fa=(e=ca(),t=u())=>R.getQueryData(la(sa(e),t))??[],pa=async(e,t,n)=>{let r=sa(t);if(u()!==n)return e.getQueryData(la(r,n))??[];let i=ua(r,n);return e.fetchQuery({...i,staleTime:0})};function ma(e){return e.getActiveProject?.()?.path??null}var ha=200,ga=500,_a=512,va=1024,ya=64,ba=100,xa=100,Sa=new Set([`__proto__`,`prototype`,`constructor`]),Ca=new Set([`text`,`audio`,`image`,`video`,`pdf`]),wa=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Ta=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Ea=e=>{if(typeof e==`string`)return e.length>0&&e.length<=_a&&e.trim()===e&&!wa(e)&&!Sa.has(e)?e:void 0},Da=e=>typeof e==`string`&&e.length>0&&e.length<=va&&e.trim()===e&&!wa(e)?e:void 0,Oa=e=>typeof e==`string`&&e.length>0&&e.length<=ya&&e.trim()===e&&!wa(e)?e:void 0,ka=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Aa=e=>{let t=Ta(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Ca.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},ja=e=>{let t=Ta(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=Aa(t.input),i=Aa(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Ma=e=>{let t=Ta(e),n=Ea(t?.id),r=Da(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=ja(t.capabilities);o&&(i.capabilities=o);let s=Ta(t.cost);if(s){let e={},t=ka(s.input);t!==void 0&&(e.input=t);let n=ka(s.output);n!==void 0&&(e.output=n);let r=Ta(s.cache);if(r){let t={},n=ka(r.read);n!==void 0&&(t.read=n);let i=ka(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Ta(t.limit);if(c){let e={},t=ka(c.context);t!==void 0&&(e.context=t);let n=ka(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Oa(t.release_date);l&&(i.release_date=l);let u=Ta(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=xa){a=!0;break}!Ea(n)||!Ta(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Na=e=>{let t=Ta(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Ta(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>ha;for(let[e,a]of t.providers.entries()){if(e>=ha)continue;let t=Ta(a),o=Ea(t?.id),s=Da(t?.name),c=Ta(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=ga||!Ea(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Ma(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Ta(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Ea(t),a=Ea(n);if(e>=ba||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Pa=e=>(t=>e(t.state.data)?1/0:0),Fa=e=>{let t=e;return!!(t&&t.providers.length>0)},Ia=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},La=e=>e?{location:{directory:e}}:void 0,Ra=async(e,t)=>{let n=B.getSdkClient(),r=La(e),i={signal:t},[a,o,s]=await Promise.all([n.provider.list(r,i),n.model.list(r,i),n.config.get(r,i)]);if(!Array.isArray(a.data)||!Array.isArray(o.data)||!Array.isArray(s))throw Error(`v2 provider catalog request failed`);let c=new Map;for(let e of o.data){let t=typeof e?.providerID==`string`?e.providerID:``,n=typeof e?.modelID==`string`&&e.modelID?e.modelID:typeof e?.id==`string`?e.id:``,r=typeof e?.name==`string`?e.name:n;if(!t||!n||!r)continue;let i=c.get(t)??{};i[n]={id:n,name:r},c.set(t,i)}let l={};for(let e of s){let t=e?.type===`document`?e.info?.model:void 0;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=typeof t.providerID==`string`?t.providerID:``,n=typeof t.model==`string`?t.model:``;e&&n&&(l[e]=n)}}return{schemaVersion:1,providers:a.data.map(e=>({id:e.id,name:e.name,models:c.get(e.id)??{}})),default:l,partial:!1}},za=(e,t=u())=>{let n=Ia(e);return{queryKey:P.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await _(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Na(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);i=Na(await Ra(n,e))}let a=R.getQueryData(P.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Pa(Fa),gcTime:1/0,retry:2,retryDelay:100}},Ba=(e,t=u())=>{let n=Ia(e);return{queryKey:P.agents.raw(n,t),queryFn:({signal:e})=>B.listAgents(n,e),staleTime:Pa(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},Va=(e,t,n=u())=>{if(t.providerCatalogPartial===!0)return;let r=za(e,n);if(R.getQueryData(r.queryKey)===void 0)try{let e=Na({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial||e.providers.length===0)return;R.setQueryData(r.queryKey,e)}catch{}},Ha=(e,t=u())=>R.fetchQuery(za(e,t)),Ua=(e,t=u())=>R.fetchQuery(Ba(e,t)),Wa=async(e,t=u())=>{let n=za(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},Ga=async(e,t=u())=>{let n=Ba(e,t);return await R.invalidateQueries({queryKey:n.queryKey,exact:!0}),R.fetchQuery(n)},Ka=(e,t=u())=>R.invalidateQueries({queryKey:za(e,t).queryKey,exact:!0}),qa=e=>e?.trim()||null,Ja=(e,t=u())=>P.agents.list(e,t),Ya=(e,t=u())=>P.providers.list(e,t);function Xa(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var Za=(e=ca(),t=u())=>{let n=qa(e);return{queryKey:Ja(n,t),queryFn:async({signal:e})=>{let r=await R.fetchQuery(Ba(n,t)),i=await _(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=Xa(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},Qa=(e,t=u())=>{let n=qa(e);return{queryKey:Ya(n,t),queryFn:async()=>{let e=await B.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},$a=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=oa(ro),a;t[2]===i?a=t[3]:(a=Za(qa(i)??qa(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],Pt(o)},eo=(e,t)=>{let n=(0,H.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=Qa(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],Pt(o)},to=(e=ca(),t=u())=>R.getQueryData(Ja(qa(e),t))??[],no=async(e,t,n)=>{let r=qa(t);if(u()!==n)return e.getQueryData(Ja(r,n))??[];let i=Za(r,n);return await e.invalidateQueries({queryKey:i.queryKey,exact:!0}),e.fetchQuery(i)};function ro(e){return e.getActiveProject?.()?.path??null}var io=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],ao=e=>e?.trim()||null,oo=()=>{let e=oa.getState().getActiveProject?.();return ao(e?.path)??ao(B.getDirectory())},so=(e,t=u())=>P.skillsCatalog.sources(e,t),co=(e,t,n=u())=>P.skillsCatalog.source(e,t,n),lo=new Map,uo=(e=oo(),t=u(),n=!1)=>{let r=ao(e);return{queryKey:so(r,t),queryFn:({signal:e})=>xo(r,n,e),staleTime:5e3,retry:2}},fo=(e,t,n=u(),r=!1)=>{let i=ao(e);return At({queryKey:co(i,t,n),queryFn:({signal:e,pageParam:n})=>So(i,t,n,r,e),initialPageParam:null,getNextPageParam:(e,t)=>Co(e,t),staleTime:5e3,retry:2})},po=e=>{let t=(0,H.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=oa(Eo),a;t[2]===i?a=t[3]:(a=uo(ao(i)??ao(B.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],Pt(o)},mo=(e,t)=>{let n=(0,H.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=oa(Do),o;n[2]!==a||n[3]!==e?(o=fo(ao(a)??ao(B.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],Ft(c)},ho=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},go=(e=R,t=oo(),n=u())=>e.getQueryData(so(ao(t),n))??io,_o=(e=R,t,n,r=u())=>e.getQueryData(co(ao(t),n,r)),vo=async(e,t,n)=>{let r=ao(t);return u()===n?e.fetchQuery({...uo(r,n,!0),staleTime:0}):go(e,r,n)},yo=async(e,t,n,r)=>{let i=ao(t);if(u()!==r)return _o(e,i,n,r);let a=co(i,n,r),o=JSON.stringify(a),s=(lo.get(o)??0)+1;lo.set(o,s),await e.cancelQueries({queryKey:a,exact:!0});let c=await So(i,n,null,!0,new AbortController().signal);if(u()!==r||lo.get(o)!==s)return _o(e,i,n,r);let l={pages:[c],pageParams:[null]};return e.setQueryData(a,l),l},bo=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:so(ao(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,ao(t)],exact:!1})]);async function xo(e,t,n){let r=await To(wo(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:io}async function So(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await To(wo(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await To(wo(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Co(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function wo(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function To(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await _(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Eo(e){return e.getActiveProject?.()?.path??null}function Do(e){return e.getActiveProject?.()?.path??null}var Oo=e=>e?.trim()||null,ko=()=>{let e=oa.getState().getActiveProject?.();return Oo(e?.path)??Oo(B.getDirectory())},Ao=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},jo=(e,t=u())=>P.skills.list(e,t),Mo=(e=ko(),t=u())=>{let n=Oo(e);return{queryKey:jo(n,t),queryFn:async({signal:e})=>{let t=await _(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Ao(e.path)}))},retry:2}},No=e=>{let t=(0,H.c)(3),n=e===void 0?{}:e,r=oa(Io),i=Mo(Oo(n.directory)??Oo(r)??Oo(B.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],Pt(a)},Po=(e=R,t=ko(),n=u())=>e.getQueryData(jo(Oo(t),n))??[],Fo=async(e,t,n=u())=>{let r=Oo(t);return u()===n?e.fetchQuery({...Mo(r,n),staleTime:0}):Po(e,r,n)};function Io(e){return e.getActiveProject?.()?.path??null}var Lo=()=>{let e=B.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},Ro=ca,zo=e=>{let t=e;return t.native===!0||t.builtIn===!0},Bo=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},Vo=e=>e.filter(e=>!Bo(e)),Ho=`useAgentsStore`,Uo=e=>new Promise(t=>setTimeout(t,e)),Wo=2e4,Go=300,Ko=4,qo=800,Jo=200,Yo=2e3,Xo=e=>e!=null,Zo=De()(Ae(Oe(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Ro(),t=u();try{return await no(R,e,t),!0}catch{return!1}},createAgent:async t=>$o(`POST`,t.name,t,e),updateAgent:async(t,n)=>$o(`PATCH`,t,n,e),deleteAgent:async(t,n)=>$o(`DELETE`,t,{scope:n},e),getAgentByName:e=>to().find(t=>t.name===e),getVisibleAgents:()=>Vo(to())}),{name:`agents-store`,storage:bt(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=Zo);async function Qo(e,t){await no(R,e,t),u()===t&&mi(`agents`,{source:Ho})}async function $o(e,t,n,r){xi(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let i=Ro(),a=u();try{let o={};if(e===`POST`&&(o.mode=n?.mode||`subagent`,n?.description&&(o.description=n.description),n?.model&&(o.model=n.model),n?.variant&&(o.variant=n.variant),Xo(n?.temperature)&&(o.temperature=n.temperature),Xo(n?.top_p)&&(o.top_p=n.top_p),n?.prompt&&(o.prompt=n.prompt),n?.permission&&(o.permission=n.permission),n?.disable!==void 0&&(o.disable=n.disable),n?.scope&&(o.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(o[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(o[e]=n?.[e]??null)}let s=i?`?directory=${encodeURIComponent(i)}`:``,c=await _(`/api/config/agents/${encodeURIComponent(t)}${s}`,{method:e,headers:{"Content-Type":`application/json`,...i?{"x-opencode-directory":i}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:o)}),l=await c.json().catch(()=>null);if(!c.ok)throw Error(l?.error||`Failed to ${e.toLowerCase()} agent`);return u()===a?(e===`DELETE`&&Zo.getState().selectedAgentName===t&&r({selectedAgentName:null}),l?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(l?.requiresReload??!0?await rs({message:l?.message,delayMs:l?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:a,queryDirectory:i}):await Qo(i,a),{ok:!0})):{ok:!0,...l?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Si()}}async function es(e){let t=typeof e==`number`&&e>0?Math.min(e,Go):0;t>0&&await Uo(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<Wo;){r+=1,Ci(`Waiting for OpenCode… (attempt ${r})`);try{if(await B.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await Uo(r<=Ko&&e<1200?Go:Math.min(qo+Math.max(0,r-Ko)*Jo,Yo))}throw i||Error(`OpenCode did not become ready in time`)}var ts=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function ns(e={}){let{message:t,delayMs:n}=e,r=e.transportIdentity??u(),i=e.queryDirectory??Ro(),a=ts(e.scopes),o=e.mode??(a.includes(`all`)?`projects`:`active`);try{Ci(t||`Refreshing configuration…`)}catch{}try{if(u()!==r||(await es(n),u()!==r))return;let e=Up.getState(),t=a.includes(`all`)||a.includes(`providers`),s=a.includes(`all`)||a.includes(`agents`),c=a.includes(`all`)||a.includes(`agents`),l=a.includes(`all`)||a.includes(`commands`),d=a.includes(`all`)||a.includes(`skills`),f=Lo(),p=o===`projects`?oa.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));a.includes(`all`)&&o===`projects`&&Up.setState({directoryScoped:{}}),t&&Up.getState().invalidateProviderCache(o===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),s&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];c&&g.push(no(R,i,r).then(()=>void 0)),l&&g.push(pa(R,i,r).then(()=>void 0)),d&&(g.push(Fo(R,i,r).then(()=>void 0)),g.push(bo(R,i,r).then(()=>void 0))),Ci(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw Ci(`OpenCode refresh failed. Please retry.`),await Uo(1500),e}finally{Si()}}async function rs(e){await ns(e)}async function is(e){xi(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??u(),n=e?.queryDirectory??Ro();try{let r=await _(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),i=await r.json().catch(()=>null);if(!r.ok){let e=i?.error||`Failed to reload configuration`;throw Error(e)}if(u()!==t){Si();return}let a={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};i?.requiresReload?await rs({...a,message:i.message,delayMs:i.reloadDelayMs}):await rs(a)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),Ci(`Failed to reload configuration. Please try again.`),await Uo(2e3),Si(),e}}var as=null;as||=pi(e=>{if(e.source!==Ho&&hi(e,`agents`)){let{loadAgents:e}=Zo.getState();e()}});var os=e=>typeof e==`string`?e.trim():``,ss=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,cs={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},ls=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,us=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},ds=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},fs=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},ps=e=>{let t=e.toLowerCase(),n=cs[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?ls(t).replace(/([a-z])(\d)/i,`$1$2`):ls(e)},ms=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},hs=e=>{let t=os(e).toLowerCase();return t?t===`free`||t===`thinking`?t:gs(t):``},gs=e=>{let t=os(e);if(!t)return``;let{base:n,suffix:r}=ds(us(t)),i=ms(fs(n).map(ps));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=hs(r);return s?`${o} (${s})`:o},_s=e=>!/\s/.test(e)&&/[-_]/.test(e),vs=(e,t,n={})=>{let r=os(e?.name),i=os(e?.id)||os(t);return r&&!_s(r)?ss(r,n.maxLength):i?ss(gs(i),n.maxLength):r?ss(gs(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},ys=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>os(e.id)===t):n[t]},bs=(e,t,n={})=>{let r=os(t);return vs(ys(e,r),r,n)},xs=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Ss=e=>e===`primary`||e===`all`||e==null,Cs=e=>e.filter(e=>Ss(e.mode)),ws=(e,t,n=1)=>{let r=Cs(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},Ts=e=>e.charAt(0).toUpperCase()+e.slice(1),Es=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Ts(n?n.name:t)}let n=e.filter(e=>Ss(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Ts(r.name):`Select agent`},Ds=(e,t,n=``)=>bs(e,t,{fallbackLabel:n}),Os=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Ts(t)},ks=e=>typeof e==`object`&&!!e,As=e=>typeof e==`string`&&e.length>0,js=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!As(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!As(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!As(t)||!As(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Ms=De()(Oe((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:bt(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=ks(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!As(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!As(t)||typeof n!=`object`||!n||!As(n.providerId)||!As(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:js(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Ns=L,Ps=(e,t)=>{let n=Ns(t);if(!n)return null;let r=null;for(let t of e){let e=Ns(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Ns(r.path)?.length??0))&&(r=t))}return r},Fs=(e,t,n)=>{let r=Ns(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=Ns(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Ns(e)))}if(!i)return null;let s=[Ns(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Ns(e.path)===t)??null;if(n)return n;let r=Ps(e,t);if(r)return r}return null},Is=(e,t,n)=>Fs(e,t,n)??Ps(e,n),Ls=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},Rs=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],zs=e=>typeof e==`string`&&Rs.includes(e),Bs=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},Vs=new Map,Hs=new Map,Us=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:zs(t)?Bs(t):null:null,Ws=(e,t=u())=>{Vs.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},Gs=(e=u())=>{let t=Vs.get(e);if(t)return Us(t)},Ks=async()=>{let e=u(),t=Gs(e);if(t!==void 0)return t;let n=Hs.get(e);if(n)return n;let r=(async()=>{let t=await I(e);return Ws({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),Gs(e)??null})();Hs.set(e,r);try{return await r}finally{Hs.get(e)===r&&Hs.delete(e)}},qs;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(qs||={});function Js(e,t){return e.findIndex(e=>e.id===t)}function Ys(e,t){if(!t)return e.slice();let n=Js(e,t);return n<0?e.slice():e.slice(0,n)}function Xs(e,t,n){let r=Js(e,n);return r<0?!1:Js(e,t)>=r}function Zs(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=Js(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function Qs(e,t){let n=Js(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var $s=`openchamber:sync:debug`,ec;function tc(){if(ec!==void 0)return ec;try{ec=typeof localStorage<`u`&&localStorage.getItem($s)===`1`}catch{ec=!1}return ec}function nc(e,...t){tc()&&(`${e}`,[...t])}var rc={pipeline:{coalesced:(e,t)=>nc(`pipeline`,`coalesced`,e,t),flush:e=>nc(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>nc(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>nc(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>nc(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>nc(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>nc(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>nc(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>nc(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>nc(`recovery`,`materializing session`,e)}},ic=new Set([`patch`,`step-start`,`step-finish`]),ac=[`text`,`output`],oc=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function sc(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function cc(e,t){let n=[];for(let r of ac){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function lc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function uc(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function dc(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=uc(e),r=uc(t);if(n&&oc.has(n)&&(!r||!oc.has(r)))return!0;let i=lc(e),a=lc(t);return typeof i==`number`&&typeof a!=`number`}function fc(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var pc=[`agent`,`mode`,`providerID`,`modelID`,`variant`],mc=e=>typeof e==`object`&&!!e&&!Array.isArray(e),hc=[`input`,`output`,`reasoning`];function gc(e){if(!e||typeof e!=`object`)return!1;let t=e;return hc.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function _c(e){if(!e||typeof e!=`object`)return!1;let t=e;return hc.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function vc(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function yc(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of pc){let t=vc(i[e]),n=vc(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}let o=i.model,s=r.model;return mc(o)?a.model=o:mc(s)?a.model=s:delete a.model,(e.time||t.time)&&(n.time={...e.time,...t.time}),gc(r.tokens)&&_c(i.tokens)&&(a.tokens=r.tokens),n}function bc(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!fc(e[n],t[n]))return!1;return!0}function xc(e,t,n){if(!t)return!1;let r=e.message[t];return r?Js(r,n)>=0:!1}function Sc(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=Js(r,n.id);if(a>=0){let t=r[a],i=yc(t,n);if(bc(t,i))return rc.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=Js(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(ic.has(r.type))return rc.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!xc(e,a,i),s=e.part[i];if(!s)return rc.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=qs.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(dc(e,r))return!1;let t=cc(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=qs.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=qs.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return rc.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=qs.search(r,n.partID,e=>e.id);if(!i.found)return rc.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?sc(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return zc(e,t)}}function Cc(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function wc(e){return typeof e==`string`&&e.length>0?e:void 0}function Tc(e,t,n){return`${e}:${t}:${n}`}function Ec(e){return typeof e?.created==`number`&&Number.isFinite(e.created)&&e.created>0?e.created:Date.now()}function Dc(e){let t=e.eventCreated;return typeof t==`number`&&Number.isFinite(t)&&t>0?t:void 0}function Oc(e,t,n,r){let i=e.message[t],a=i?Js(i,n):-1;if(a>=0&&i){let n=i[a],o=n.time?.created,s=!1,c={...n,time:{...n.time}};if((o===void 0||o<=0)&&typeof r?.created==`number`&&r.created>0&&(c.time={...c.time,created:r.created},s=!0),!vc(n.agent)&&r?.agent&&(c.agent=r.agent,s=!0),!vc(n.modelID)&&r?.modelID&&(c.modelID=r.modelID,s=!0),!vc(n.providerID)&&r?.providerID&&(c.providerID=r.providerID,s=!0),!vc(n.variant)&&r?.variant&&(c.variant=r.variant,s=!0),!n.model&&r?.model&&(c.model=r.model,s=!0),!s)return!1;let l=[...i];return l[a]=c,e.message[t]=l,!0}let o={id:n,sessionID:t,role:`assistant`,time:{created:Ec(r)},...r?.agent?{agent:r.agent}:{},...r?.modelID?{modelID:r.modelID}:{},...r?.providerID?{providerID:r.providerID}:{},...r?.variant?{variant:r.variant}:{},...r?.model?{model:r.model}:{}};return e.message[t]=i?[...i,o]:[o],!0}function kc(e){let t=wc(e.agent),n=Cc(e.model),r=n?wc(n.id)??wc(n.modelID):void 0,i=n?wc(n.providerID):void 0,a=n?wc(n.variant):void 0;return{...t?{agent:t}:{},...r?{modelID:r}:{},...i?{providerID:i}:{},...a?{variant:a}:{},...r||i||a?{model:{...i?{providerID:i}:{},...r?{modelID:r}:{},...a?{variant:a}:{}}}:{}}}function Ac(e){let t=Cc(e);if(!t)return;let n=Cc(t.cache),r={...typeof t.input==`number`?{input:t.input}:{},...typeof t.output==`number`?{output:t.output}:{},...typeof t.reasoning==`number`?{reasoning:t.reasoning}:{},...n?{cache:{...typeof n.read==`number`?{read:n.read}:{},...typeof n.write==`number`?{write:n.write}:{}}}:{}};return Object.keys(r).length>0?r:void 0}function jc(e,t,n,r){let i=e.message[t];if(!i)return e.message[t]=[r],!0;let a=Js(i,n);if(a<0)return e.message[t]=[...i,r],!0;let o=i[a],s=yc(o,r);if(bc(o,s)&&o.time?.created===s.time?.created)return!1;let c=[...i];return c[a]=s,e.message[t]=c,!0}function Mc(e,t,n){let r=e.message[t];if(!r)return;let i=Js(r,n);if(i<0)return;let a=r[i]?.time?.created;return typeof a==`number`&&Number.isFinite(a)&&a>0?a:void 0}function Nc(e,t,n,r,i){let a=Dc(i);if(t===`session.step.started`)return Oc(e,n,r,{created:a,...kc(i)});if(t===`session.step.ended`){Oc(e,n,r,{created:a});let t=wc(i.finish),o=Ac(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return jc(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Mc(e,n,r)??Ec({created:a}),...a?{completed:a}:{}},...t?{finish:t}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}if(t===`session.step.failed`){Oc(e,n,r,{created:a});let t=Cc(i.error),o=Ac(i.tokens),s=typeof i.cost==`number`&&Number.isFinite(i.cost)?i.cost:void 0;return jc(e,n,r,{id:r,sessionID:n,role:`assistant`,time:{created:Mc(e,n,r)??Ec({created:a}),...a?{completed:a}:{}},finish:`error`,...t?{error:{type:wc(t.type)??`error`,message:wc(t.message)??``}}:wc(i.error)?{error:{type:`error`,message:wc(i.error)}}:{},...o?{tokens:o}:{},...s===void 0?{}:{cost:s}})}return!1}function Pc(e){if(Array.isArray(e))return e.flatMap(e=>{let t=Cc(e);return t&&t.type===`text`&&typeof t.text==`string`?[t.text]:[]}).join(`
7
- `)}function Fc(e,t,n,r){let i=Tc(n,t,r),a=e.findIndex(e=>e.id===i);return a>=0?a:e.map((e,t)=>({part:e,index:t})).filter(e=>e.part.type===t)[r]?.index??-1}function Ic(e,t,n,r,i,a,o){Oc(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=Fc(s,r,n,i);if(c<0){let e={id:Tc(n,r,i),sessionID:t,messageID:n,type:r,text:``};s.push(e),c=s.length-1}let l=s[c],u=typeof a==`function`?a(l.text??``):a;return s[c]={...l,text:u},e.part[n]=s,!0}function Lc(e,t){return e.findIndex(e=>e.id===t||e.callID===t||e.type===`tool`&&e.id===t)}function Rc(e,t,n,r,i,a,o){Oc(e,t,n,o);let s=e.part[n]?[...e.part[n]]:[],c=Lc(s,r);return c<0&&(s.push({id:r,sessionID:t,messageID:n,type:`tool`,tool:i??`tool`,callID:r,state:{status:`pending`,input:``,output:void 0,metadata:{}}}),c=s.length-1),s[c]=a(s[c]),e.part[n]=s,!0}function zc(e,t){let n=String(t.type);if(n.startsWith(`session.compaction.`))return ot(e,t);let r=Cc(t.properties);if(!r)return!1;let i=wc(r.sessionID),a=wc(r.assistantMessageID);if(!i||!a)return!1;let o=typeof r.ordinal==`number`?r.ordinal:0,s={created:Dc(r)};if(n===`session.step.started`||n===`session.step.ended`||n===`session.step.failed`)return Nc(e,n,i,a,r);if(n===`session.text.started`)return Ic(e,i,a,`text`,o,``,s);if(n===`session.text.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?Ic(e,i,a,`text`,o,e=>e+t,s):!1}if(n===`session.text.ended`)return Ic(e,i,a,`text`,o,typeof r.text==`string`?r.text:``,s);if(n===`session.reasoning.started`)return Ic(e,i,a,`reasoning`,o,``,s);if(n===`session.reasoning.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?Ic(e,i,a,`reasoning`,o,e=>e+t,s):!1}if(n===`session.reasoning.ended`)return Ic(e,i,a,`reasoning`,o,typeof r.text==`string`?r.text:``,s);let c=wc(r.id);if(!c)return!1;let l=wc(r.name);if(n===`session.tool.input.started`)return Rc(e,i,a,c,l,e=>e,s);if(n===`session.tool.input.delta`){let t=typeof r.delta==`string`?r.delta:``;return t?Rc(e,i,a,c,l,e=>{let n=Cc(e.state)??{};if(wc(n.status)&&n.status!==`pending`&&n.status!==`streaming`)return e;let r=typeof n.input==`string`?n.input+t:t;return{...e,state:{...n,status:`pending`,input:r}}},s):!1}if(n===`session.tool.input.ended`){let t=typeof r.text==`string`?r.text:``;return Rc(e,i,a,c,l,e=>{let n=Cc(e.state)??{};return{...e,state:{...n,input:t}}},s)}return n===`session.tool.called`?Rc(e,i,a,c,l,e=>{let t=Cc(e.state)??{};return{...e,state:{...t,status:`pending`,input:r.input??t.input??{},metadata:Cc(t.metadata)??{}}}},s):n===`session.tool.progress`?Rc(e,i,a,c,l,e=>{let t=Cc(e.state)??{};return{...e,state:{...t,metadata:Cc(r.metadata)??Cc(t.metadata)??{}}}},s):n===`session.tool.success`?Rc(e,i,a,c,l,e=>{let t=Cc(e.state)??{};return{...e,state:{...t,status:`completed`,input:t.input??r.input??{},output:Pc(r.content),metadata:Cc(r.metadata)??Cc(t.metadata)??{}}}},s):n===`session.tool.failed`&&Rc(e,i,a,c,l,e=>{let t=Cc(e.state)??{},n=Cc(r.error);return{...e,state:{...t,status:`error`,input:t.input??{},output:Pc(r.content),error:n?wc(n.message)??wc(r.error):wc(r.error),metadata:Cc(r.metadata)??Cc(t.metadata)??{}}}},s)}function Bc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Vc(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Hc(e){return e.slim===!0}function Uc(e,t){if(!e||e.length===0||!t.some(e=>Hc(e)))return t;let n=new Map;for(let t of e){let e=Vc(t);e&&!Hc(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Hc(e))return e;let t=Vc(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Wc(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Gc(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Kc(e){return Gc(e)!==`assistant`||!Bc(e)}function qc(e,t,n){if(!e||e.length===0)return t;let r=Uc(e,t);if(Kc(n))return Wc(r,e);let i=new Set;for(let e of r){let t=Vc(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Vc(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Wc(r,e);let l=[...o];for(let e of r){l.push(e);let t=Vc(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Wc(l,e)}var Jc=e=>Object.freeze(e),Yc=Object.freeze({initial:Jc({id:`initial`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Jc({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Jc({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Jc({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Jc({id:`materialize`,onStale:`backfill`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Xc=Jc({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Zc=Jc({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Qc=Yc.initial;function $c(e){let t=Yc[e.purpose]??Qc;return!e.stale||t.onStale===`drop`?t:Xc}function el(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var tl=e=>structuredClone(e),nl=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function rl(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function il(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function al(e){return JSON.stringify([e.transport,e.generation])}function ol(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function sl(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function cl(e){return Kc(e)}function ll(e){return Hc(e)?`slim`:`full`}function ul(e){return e.some(e=>Hc(e))?`slim`:`full`}var dl=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(dl);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=dl(r))}return n},fl=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function pl(e,t){let n=JSON.stringify(dl({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:fl(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var ml=e=>({scope:nl(e.scope),messageID:e.messageID,info:tl(e.info),parts:tl(e.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),hl=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},gl=(e,t)=>{let n=t.slice().sort((e,t)=>ol(e.sortKey,t.sortKey)).map(ml);return{scope:nl(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},_l=e=>tl(e),vl=e=>nl(e),yl=(e=Date.now)=>hl(e),bl=e=>ml(e),xl=(e,t)=>gl(e,t.slice());function Sl(e){return cl(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var Cl=(e,t)=>e<t?-1:+(e>t),wl=[`text`,`output`],Tl={pending:1,started:2,running:3,completed:4,error:4};function El(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>Cl(e.id,t.id))}function Dl(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function Ol(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function kl(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Al(e){return Ol(e)===void 0&&wl.some(t=>{let n=kl(e,t);return typeof n==`string`&&n.length>0})}function jl(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Ml(e){let t=jl(e)?.status;return typeof t==`string`?t:void 0}function Nl(e){return e?Tl[e]??0:0}function Pl(e,t){if(Al(e))return!0;if(Ol(e)===void 0){if(e.type===`tool`){let n=Ml(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Fl(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Il(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Ll(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=jl(e);if(!r)return n;let i=jl(n)??{},a=jl(t)??{},o={...i},s=!1,c=Ml(e),l=Ml(t);Nl(c)>Nl(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Il(u)&&!Il(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Il(m)&&!Il(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Rl(e,t){if(!e||Ol(t)!==void 0)return t;let n=t;for(let r of wl){let i=kl(e,r);if(!i)continue;let a=kl(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=Fl(e);if(r){let e=Fl(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Ll(e,t,n),n}function zl(e,t){if(!e||e.length===0||!t.some(e=>Hc(e)))return t;let n=new Map;for(let t of e)t.id&&!Hc(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Hc(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Bl(e){return e.__openchamberOptimistic===!0}function Vl(e){return!!(e&&e.length>0&&e.some(Bl))}function Hl(e){return e.length===0||e.some(e=>Hc(e))}function Ul(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Vl(e)&&Hl(t))return e;let o=zl(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Rl(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Hc(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Pl(e,i)||d&&!Hc(e)));return f.length===0?c:[...c,...f].sort((e,t)=>Cl(e.id,t.id))}var Wl=e=>e,Gl=e=>{let t=Wl(e).finish;return typeof t==`string`&&t.length>0},Kl=e=>typeof Wl(e).time?.completed==`number`,ql=e=>!!Wl(e).error;function Jl(e,t){let n=Wl(t),r=n.finish,i=n.time?.completed,a=n.error,o=e.tokens,s=t.tokens,c=!Gl(e)&&typeof r==`string`&&r.length>0,l=!Kl(e)&&typeof i==`number`,u=!ql(e)&&!!a,d=!gc(o)&&gc(s);if(!c&&!l&&!u&&!d)return e;let f={...e};return c&&(f.finish=r),l&&(f.time={...Wl(e).time,completed:i}),u&&(f.error=a),d&&(f.tokens=s),f}function Yl(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?Xl(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function Xl(e,t){let n=e.slice();for(let e of t){let t=sl(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ol(t,sl(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Zl(e,t,n){return Yl(e,t,(e,t)=>t?Jl(e,t):e,n)}function Ql(e,t,n){return Yl(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:yc(e,t),n)}function $l(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Qc,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Ql(u,c,o):Zl(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=Ul(r,El(e.parts??[],i),i,el(a,e.info.role),Bc(e.info),a.protectOptimistic);(r?Dl(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function eu(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function tu(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&eu(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var nu=(e,t)=>e<t?-1:+(e>t);function ru(e){return e.filter(e=>!!e?.id).sort((e,t)=>nu(e.id,t.id))}function iu(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,ru(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,ru(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,ru(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>nu(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var au={kind:`unknown`,loadedTurns:0},ou=3e4,su=12e5,cu={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_error_at:{},session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},lu={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function uu(e,t){return e===void 0||t===void 0?!1:t>e}var du=class extends Error{};function fu(e,t,n){if(n===`reconcile-page`)return e??au;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new du(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new du(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new du(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function pu(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function mu(e,t,n,r){let i=uu(r.capturedRevision,r.liveRevision),a=$c({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=iu({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=$l(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=fu(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof du))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!pu(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var hu=new Set([`tool`,`reasoning`,`file`,`text`]),gu=new Set([`tool`,`reasoning`,`file`]);function _u(e){return e.some(e=>Hc(e)&&hu.has(e.type))}function vu(e,t){let n=!1,r=!1;for(let t of e)gu.has(t.type)&&(n=!0,Hc(t)&&(r=!0));return n?r?!0:t?Bc(t):!1:!1}var yu=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function bu(e,t){return!e?.id||yu(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function xu(e){let t=0;for(let n of e.messageOrder)bu(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var Su=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(bu(a,e.partsByMessageID[n]))break;if(yu(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},Cu=(e,t)=>Bc(e)?!0:Array.isArray(t)&&t.length>0;function wu(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(bu(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?Su(e,t).some(t=>Cu(t,e.partsByMessageID[t.id])):!1}function Tu(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Eu=new Set([`stop`,`length`]);function Du(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||yu(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Eu.has(r)?!1:typeof n.time?.completed!=`number`||r===`stop`&&!gc(n.tokens)}function Ou(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function ku(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var Au=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`,`session.step.started`,`session.step.ended`,`session.step.failed`,`session.text.started`,`session.text.delta`,`session.text.ended`,`session.reasoning.started`,`session.reasoning.delta`,`session.reasoning.ended`,`session.tool.input.started`,`session.tool.input.delta`,`session.tool.input.ended`,`session.tool.called`,`session.tool.progress`,`session.tool.success`,`session.tool.failed`,`session.compaction.started`,`session.compaction.delta`,`session.compaction.ended`,`session.compaction.failed`];function ju(e){return Au.includes(e)}function Mu(e){return e.trim()}function Nu(e){return`${Mu(e.directory)}\n${e.sessionID}`}function Pu(e,t){return e.session_history_boundary?.[t]??au}function Fu(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Iu(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Lu(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Iu(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Ru(e,t,n){let r=e.getState(),i=n.page,a=mu(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return a.applied?(Lu(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function zu(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!ju(e.type))continue;i=!0;let t=Sc(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Bu(e,t){return zu(e,[t.event])}function Vu(e,t){return zu(e,t.events)}function Hu(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=$l({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function Uu(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Wu(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=Fu(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Gu(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Ku(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function qu(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Ju(e,t,n){let r=qu(e,t);if(!n.page)return{applied:!0,changed:r};let i=Ru(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function Yu(e){let t=new Map,n=new Map,r=r=>{let i=Nu(r);if(n.has(i))return;let a=Mu(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Pu(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Pu(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Iu(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Mu(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return ku({sessionID:i,messages:a,parts:r.part??{},boundary:Pu(r,i),liveRevision:o})},getPagination(t){let n=Mu(t.directory),r=e.getStore(n).getState();return Ou(t.sessionID,Pu(r,t.sessionID))},getRequestState(t){let n=Mu(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=wu(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Tu({p0Satisfied:n,earlierHistoryLoaded:xu(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Mu(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Mu(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Mu(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Ru(i,a,n);case`sse-event`:return Bu(i,n);case`sse-event-batch`:return Vu(i,n);case`optimistic-add`:return Wu(i,a,n,e,r);case`optimistic-confirm`:return Ku(a,n.messageID,e,r);case`optimistic-remove`:return Gu(i,a,n.messageID,e,r);case`reset`:return Ju(i,a,n);case`materialize-snapshots`:return Hu(i,a,n);case`remove-message`:return Uu(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=Nu(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var Xu=new Set,Zu=new Set;function Qu(e,t){return`${e}\n${t}`}function $u(){for(let e of Zu)e()}function ed(e,t){!e||!t||(Xu.add(Qu(e,t)),$u())}function td(e,t){!e||!t||Xu.delete(Qu(e,t))&&$u()}function nd(e,t){if(!e)return!1;if(t)return Xu.has(Qu(t,e));let n=`\n${e}`;for(let e of Xu)if(e.endsWith(n))return!0;return!1}function rd(e){return Zu.add(e),()=>{Zu.delete(e)}}var id=[],ad=new Map,od=new Map,sd=0,cd=()=>{let e=id.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=id.splice(e,1);return t}return id.shift()},ld=()=>{for(;sd<4;){let e=cd();if(!e)return;ad.delete(e.key),sd+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--sd,od.delete(e.key),ld()})}};function ud(e,t,n){let r=n?.priority??`background`,i=od.get(e);if(i){let t=ad.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return id.push(c),ad.set(e,c),od.set(e,s),ld(),s}var dd=null,fd=0,pd=new Set;function md(){fd+=1;for(let e of pd)e()}function hd(e){return e}function gd(e){return pd.add(e),()=>{pd.delete(e)}}function _d(){return fd}function vd(e){return dd?.repository===e?e:(dd={kind:`query`,repository:e},md(),e)}function yd(){dd&&(dd=null,md())}function U(){return dd?.repository??null}function bd(){let e=U();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function W(e,t){let n=U();if(n)return n;let r=hd(t);return Yu({getStore:e=>r})}function G(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function xd(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function Sd(e,t){let n=U();return n?n.apply(e,t):null}async function Cd(e,t){let n=bd();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(G(e,t))}async function wd(e,t){let n=bd();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(G(e,t))}async function Td(e,t){let n=bd(),r=G(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Ed(e,t){let n=bd();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);ed(e,t);try{await n.refreshFromAuthority(G(e,t))}finally{td(e,t)}}async function Dd(e,t,n,r){let i=bd();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=G(e,t);await ud(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Od(e,t,n){let r=U();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(G(e,t),n)}function kd(e,t){U()?.purgeSession?.(G(e,t))}var Ad=null;function jd(e){Ad&&Ad!==e&&Ad.cancelAll(`reregister`),Ad=e}function Md(e){Ad?.captureCheckpoints(e)}function Nd(e){Ad?.onCompensation(e)}async function Pd(e){return Ad?Ad.ensureOnObserve(e):null}function Fd(e){Ad?.cancelAll(e)}var K=e(Me(),1),Id=[],Ld=[],Rd={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:au,liveRevision:0};Ou(``,au);var zd={sessionID:``,phase:`idle`,p0Satisfied:!1};function Bd(e,t){return W(e,t)}var Vd=new Set;function Hd(e,t){return`${e}\n${t}`}function Ud(e,t){if(!t)return;let n=Hd(e,t);Vd.has(n)||(Vd.add(n),Pd(G(e,t)).catch(()=>{}).finally(()=>{Vd.delete(n)}))}function Wd(e,t){if(e&&t){Vd.delete(Hd(e,t));return}Vd.clear()}function Gd(e,t,n,r,i=Object.is,a){let o=(0,K.useRef)(r);o.current=r;let s=(0,K.useRef)(i);s.current=i;let c=(0,K.useRef)(void 0),l=a?.enabled!==!1,u=(0,K.useCallback)(()=>{if(!e||!l){let e=o.current(Rd);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Bd(t,n).getTranscript(G(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,K.useCallback)(r=>{if(!e||!l)return()=>void 0;Ud(t,e);let i=Bd(t,n).subscribe(G(t,e),()=>{r()}),a=gd(()=>{i(),c.current=void 0,Wd(t,e),Ud(t,e),i=Bd(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return K.useSyncExternalStore(d,u,u)}function Kd(e,t){if(e.messageOrder.length===0)return Id;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function qd(e,t){return e.messageOrder.length===0?t?.resolved===!0?tu({messages:Id,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:tu({messages:Kd(e),parts:e.partsByMessageID})}function Jd(e,t,n,r){let i=(0,H.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Bd(t,n).hasSession?.(G(t,e));return qd(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Gd(e,t,n,a,Yd,r)}function Yd(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function Xd(e,t,n,r){return Gd(e,t,n,Qd,Zd,r)}function Zd(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Qd(e){return Kd(e)}function $d(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function ef(e,t,n,r){return Gd(e,t,n,tf,$d,r)}function tf(e){return e}function nf(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=U();if(o){i.push(o.subscribe(G(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=W(a.directory,s);i.push(c.subscribe(G(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=gd(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function rf(e,t){return e.length===0?``:e.map(e=>{let n=gf(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function af(e,t,n){return Gd(e,t,n,of)}function of(e){return e.messageOrder.length}function sf(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Bd(t,n),a=r.hasSession?.(G(t,e))??r.getTranscript(G(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Bd(t,n).subscribe(G(t,e),()=>{r()}):cf,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function cf(){}function lf(e,t,n,r){let i=(0,H.c)(10),a=(0,K.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Ld,Ld;let i=Bd(t,n),o=r||e,s=i.getParts(G(t,o),e),c=s.length===0?Ld:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return df;let a=Bd(t,n);return r?a.subscribe(G(t,r),()=>{i()}):uf},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return K.useSyncExternalStore(l,s,s)}function uf(){}function df(){}function ff(e,t,n){let r=(0,H.c)(8),i=(0,K.useRef)(zd),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==zd&&(i.current=zd),i.current;let r=Bd(t,n).getHydrationState?.(G(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return pf;Ud(t,e);let a=Bd(t,n).subscribe(G(t,e),()=>{r()}),o=gd(()=>{a(),i.current=zd,Wd(t,e),Ud(t,e),a=Bd(t,n).subscribe(G(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return K.useSyncExternalStore(c,o,o)}function pf(){}function mf(e,t,n){let r=(0,H.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Ou(e,t.boundary),r[0]=e,r[1]=i),Gd(e,t,n,i,hf)}function hf(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function gf(e,t,n){if(!t)return[];let r=U();if(r){let n=r.getTranscript(G(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=W(e,n).getTranscript(G(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var _f=null,vf=``,yf=null,bf=new Set,xf=null,Sf=new Map,Cf=new Map;function wf(e,t,n,r){_f=t,xf!==t&&(xf=null,Sf=new Map,Cf=new Map),vf=n,r&&(yf=r)}function Tf(e,t){yf?.(e,t)}function Ef(){if(!_f)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return _f}function Df(e){let t=_f;if(!t)return;let n=e||vf;if(n)return t.getState(n)}function Of(e){let t=Df(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function kf(e){return bf.add(e),()=>{bf.delete(e)}}function Af(e,t){if(e)for(let n of bf)n(e,t)}function jf(e){return Df(e)?.session??[]}function Mf(){return Array.from(Nf().values())}function Nf(){let e=_f;if(!e)return Cf;let t=xf!==e||Sf.size!==e.children.size;for(let[n,r]of e.children)if(Sf.get(n)!==r.getState().session){t=!0;break}if(!t)return Cf;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return xf=e,Sf=n,Cf=r,Cf}function Pf(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=U();if(_f){for(let[i,a]of _f.children)if(a.getState().session.some(t=>t.id===e)&&(n??W(i,a)).hasSession?.(G(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Ff(e,t){if(!e)return[];try{let n=U(),r=t??vf;if(n){let t=n.getTranscript(G(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(_f){let t=_f.getChild(r);if(t){let n=W(r,t).getTranscript(G(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function If(e,t){if(!e)return[];try{let n=U(),r=t??vf;if(n)return[...n.getParts(G(r,e),e)];if(_f){let t=_f.getChild(r);if(t)return[...W(r,t).getParts(G(r,e),e)]}}catch{}return[]}function Lf(e,t){return Df(t)?.session_status[e]}var Rf=`opencode`,zf=`big-pickle`,Bf=`__add_provider__`,Vf=`zen`,Hf=`big-pickle`,Uf=async(e,t)=>{V(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return V(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await I(e);return Ws({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){V(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=ve(e);return i&&Ws({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Wf=e=>Ls(e),Gf=e=>e===Bf?``:e??``,Kf=(e,t)=>e===Bf?Bf:t,qf=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Jf=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!ep(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return Na({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Yf=e=>{try{return Na({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Xf=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Zf=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Xf(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Wf(i);if(t&&Xf(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Xf(e,Rf,zf))return{providerId:Rf,modelId:zf};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Qf=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Ss(r.mode)||r.hidden===!0||!Xf(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Ss(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Ss(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Wf(y);e&&Xf(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Xf(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Wf(s);e&&Xf(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Xf(t,Rf,zf))g=Rf,_=zf;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},$f=({providers:e,settingsZenModel:t})=>{let n=qf(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Vf,modelId:n}:null;if(n&&Xf(e,Vf,n))return{providerId:Vf,modelId:n};if(Xf(e,Vf,Hf))return{providerId:Vf,modelId:Hf};let r=e.find(e=>e.id===Vf);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=qf(r.models[e]?.id);if(t)return{providerId:Vf,modelId:t}}return null},ep=e=>typeof e==`object`&&!!e,tp=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},np=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:tp(t.capabilities.input),output:tp(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),rp=e=>new Promise(t=>setTimeout(t,e)),ip=800,ap=async(e=ip)=>Promise.race([B.checkHealth().catch(()=>!1),rp(Math.max(1,e)).then(()=>!1)]),op=`__global__`,sp=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:op},cp=e=>e===op?null:e,lp=()=>typeof window>`u`?op:vp(B.getDirectory()??Fe.getState().currentDirectory),up=`oc.worktreeProjectMap`,dp=null,fp=()=>{if(dp===null)try{let e=typeof localStorage<`u`?localStorage.getItem(up):null;dp=e?JSON.parse(e):{}}catch{dp={}}return dp},pp=(e,t)=>{if(!e||!t||e===t)return;let n=fp();if(n[e]!==t){n[e]=t;try{localStorage.setItem(up,JSON.stringify(n))}catch{}}},mp=e=>{let t=L(e);return t===null?null:t||`/`},hp=()=>{try{return oa.getState().projects.map(e=>mp(e.path)).filter(e=>!!e)}catch{return[]}},gp=()=>{try{let{projects:e,activeProjectId:t}=oa.getState();return mp((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},_p=e=>{let t=mp(e),n=hp();if(!t)return null;if(n.includes(t))return t;let r=mp(fp()[t]);if(r)return r;try{let e=mp(Is(oa.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return pp(t,e),e}catch{return null}return null},vp=e=>sp(_p(e)),yp=e=>vp(e),bp=1e3,xp=125e4,Sp=100,Cp=256,wp=new Set([`__proto__`,`prototype`,`constructor`]),Tp=/[\u0000-\u001F\u007F]/u,Ep=new TextEncoder,Dp=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&Va(cp(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Op=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Cp||t&&n!==e||Tp.test(n)||wp.has(n)))return n},kp=e=>{if(!ep(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Sp||!ep(r))continue;let e=Op(n,!0),i=Op(r.providerId),a=Op(r.modelId),o=Op(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Ap=e=>{if(!ep(e))return;let t=Op(e.agentName,!0),n=Op(e.providerId),r=Op(e.modelId),i=Op(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},jp=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Mp=(e,t,n)=>Ap(e)??jp(t,n),Np=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Pp=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??jp(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Np(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Fp=e=>{if(!ep(e))return{};let t=qf(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=qf(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let r={};if(ep(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!ep(n))continue;let e=n.providerCatalogPartial===!0,i=e?[]:Jf(n.providers),a=e?{}:Yf(n.defaultProviders),o=kp(n.agentModelSelections),s=Op(n.lastSelectedAgentName,!0),c=Mp(n.lastUserSelection,s,o);r[t]={...Np(),providers:i,agents:[],currentProviderId:qf(n.currentProviderId)??``,currentModelId:qf(n.currentModelId)??``,currentVariant:qf(n.currentVariant),currentAgentName:qf(n.currentAgentName),selectedProviderId:Gf(qf(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:qf(n.opencodeDefaultAgent),opencodeDefaultModel:qf(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let i=kp(e.agentModelSelections),a=Op(e.lastSelectedAgentName,!0),o=Mp(e.globalLastUserSelection,a,i)??(()=>{let t=qf(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),s=u();if(t!==s){let t=Pp(r),i=qf(e.activeDirectoryKey),a=i?t[i]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:s,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??o?.agentName,lastUserSelection:a,globalLastUserSelection:o,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:r,providers:[],agents:[],defaultProviders:{},currentProviderId:qf(e.currentProviderId)??``,currentModelId:qf(e.currentModelId)??``,currentVariant:qf(e.currentVariant),currentAgentName:qf(e.currentAgentName),selectedProviderId:Gf(qf(e.selectedProviderId)),agentModelSelections:i,lastSelectedAgentName:o?.agentName??a,lastUserSelection:(()=>{let t=qf(e.activeDirectoryKey);return t?r[t]?.lastUserSelection:void 0})(),globalLastUserSelection:o}},Ip=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},Lp=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Xf(t,r,i)&&Ip(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Rp=null,zp=null,Bp=null,Vp={},Hp={},Up=De()(Ae(Oe((e,t)=>({activeDirectoryKey:lp(),catalogTransportIdentity:u(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=_p(n);if(!i){V(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=sp(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:cp(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:cp(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{Ka(null,u())},loadProviders:async n=>{let r=n?.directory??cp(t().activeDirectoryKey),i=_p(r);if(!i){V(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`});return}let a=i??B.getDirectory()??null,o=sp(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&_p(r)===i,p=(Vp[o]??0)+1;Vp[o]=p,V(`loadProviders:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();V(`loadProviders:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().providers.length>0?t().providers:l?.providers??[],f=Object.keys(t().defaultProviders).length>0?t().defaultProviders:l?.defaultProviders??{};try{let t=await nt(`loadProviders:api`,()=>n?.forceRefresh?Wa(cp(o),c):Ha(cp(o),c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),l=Jf(t.providers),f=Yf(t.default);if(!d()||t.partial&&u.length>0||l.length===0||(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let n=e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===o?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===o?e.currentModelId:n.currentModelId,a=e.activeDirectoryKey===o?e.currentVariant:n.currentVariant,s=Zf({providers:l,currentProviderId:r,currentModelId:i,currentVariant:a,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),u=e.activeDirectoryKey===o?e.selectedProviderId:n.selectedProviderId,p=u===Bf||l.some(e=>e.id===u)?u:s?.providerId??l[0]?.id??``,m={...n,providers:l,defaultProviders:f,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:l,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:m}};return e.activeDirectoryKey===o&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!d()))return;let p=typeof performance<`u`?performance.now():Date.now();V(`loadProviders:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(p-i),providers:l.length,models:l.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!d())return;console.error(`Failed to load providers:`,e),V(`loadProviders:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:e instanceof Error?e.message:String(e)})}d()&&e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:u,defaultProviders:f},n={providers:u,defaultProviders:f,directoryScoped:{...e.directoryScoped,[o]:t}};if(e.activeDirectoryKey===o&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Wf(e.settingsDefaultModel);if(r){let i=u.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Vp[o]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[o]:!1}}))})},refreshMissingCatalogs:e=>{if(zp)return zp;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{zp=null});return zp=r,r},refreshCatalogsOnPickerOpen:e=>{if(Bp)return Bp;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Bp=null});return Bp=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let r=n?.directory??cp(t().activeDirectoryKey),i=_p(r);if(!i)return V(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:r,source:n?.source??`unknown`}),!1;let a=i??B.getDirectory()??null,o=sp(i),s=n?.source??`unknown`,c=u(),l=f(),d=()=>f()===l&&u()===c&&t().catalogTransportIdentity===c&&_p(r)===i,p=(Hp[o]??0)+1;Hp[o]=p,V(`loadAgents:called`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let m=t().directoryScoped[o];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!0}})),(async()=>{let i=typeof performance<`u`?performance.now():Date.now();V(`loadAgents:start`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a});let l=t().directoryScoped[o],u=t().agents.length>0?t().agents:l?.agents??[];try{let l=cp(o);(Of(r??void 0)??Of(l??void 0))&&V(`loadAgents:syncConfigHit`,{directoryKey:o,source:s});let[f,p]=await Promise.all([nt(`loadAgents:api`,()=>n?.forceRefresh?Ga(l,c):Ua(l,c),{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a}),Uf(c,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(f)?f:[];if(!d())return!1;let h=Of(r??void 0)??Of(l??void 0),g=h!==void 0,_=g?qf(h.default_agent):void 0,v=g?qf(h.model):void 0,y=t().activeDirectoryKey===o?t().providers:t().directoryScoped[o]?.providers??[],b=qf(t().settingsZenModel),x=qf(p.zenModel),S=$f({providers:y,settingsZenModel:b}),C=$f({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:u,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===o?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===o?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[o]:i}};return e.activeDirectoryKey===o&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[o],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===o?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===o?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(d()&&k&&w&&be({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(u.length>0&&!n?.forceRefresh){if(!d())return!1;let e=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(e-i),agents:u.length,retainedPrevious:!0}),!0}if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t={...e.directoryScoped[o]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[o]:t}};return e.activeDirectoryKey===o&&(n.currentAgentName=void 0),n}),!d())return!1;let t=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(t-i),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Wf(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[o]?.lastUserSelection??(ee.activeDirectoryKey===o?ee.lastUserSelection:void 0),ne=Qf({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),re=ne.agentName??m[0].name,ie=ne.providerId,ae=ne.modelId,M=ne.variant;if(e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.directoryScoped[o]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===o,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,s=n?e.currentVariant:t.currentVariant,l=n?e.selectionSource:t.selectionSource??`auto`,u=Lp({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:s,selectionSource:l,resolvedAgentName:re,resolvedProviderId:ie,resolvedModelId:ae,resolvedVariant:M}),f={...t,providers:y,agents:m,currentAgentName:u.agentName,currentProviderId:u.providerId??t.currentProviderId,currentModelId:u.modelId??t.currentModelId,currentVariant:u.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:u.selectionSource},p={directoryScoped:{...e.directoryScoped,[o]:f}};return n&&(p.currentAgentName=u.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,u.providerId&&u.modelId&&(p.currentProviderId=u.providerId,p.currentModelId=u.modelId,p.currentVariant=u.variant),p.selectionSource=u.selectionSource),p}),d()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),be(j).catch(()=>{})),!d())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return V(`loadAgents:end`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,durationMs:Math.round(oe-i),agents:m.length}),!0}catch(t){return!d()||(console.error(`Failed to load agents:`,t),V(`loadAgents:error`,{directoryKey:o,source:s,requestedDirectory:r,effectiveDirectory:a,error:t instanceof Error?t.message:String(t)}),!d())||e(e=>{if(!d()||e.catalogTransportIdentity!==c)return e;let t=e.activeDirectoryKey===o?e.providers:e.directoryScoped[o]?.providers??[],n={...e.directoryScoped[o]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:u},r={directoryScoped:{...e.directoryScoped,[o]:n}};return e.activeDirectoryKey===o&&(r.agents=u),r}),!1}})().finally(()=>{Hp[o]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[o]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=Ms.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Kf(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Kf(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?Ms.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=Ms.getState().getAgentModelForSession(l,n);if(e&&Xf(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=Wf(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=Qf({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:Kf(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=Kf(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??cp(t().activeDirectoryKey),o=vp(a),s=cp(o),c=i??Of(a??void 0)??Of(s??void 0);if(!c)return;let l=qf(c.default_agent),u=qf(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Np(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=Qf({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=Lp({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:Kf(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==Kf(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=Kf(x,S.providerId))),V(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return $f({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),be({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),be({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),be({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),be({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),be({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),be({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await ap(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{V(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{V(`checkConnection:attempt`,{attempt:n+1});let r=await nt(`checkConnection:health`,()=>B.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await rp(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),V(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await rp(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),V(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Rp)return V(`initializeApp:deduped`),Rp;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();V(`initializeApp:start`);try{if(We(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}V(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=B.getDirectory()??Fe.getState().currentDirectory??cp(t().activeDirectoryKey),i=_p(Is(oa.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??gp();if(!a){V(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(V(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),B.setDirectory(a),Fe.getState().setDirectory(a,{showOverlay:!1}));let o=sp(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();V(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),V(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Rp=null});return Rp=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=vp(e??cp(t().activeDirectoryKey)),r=oa.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=vp(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=cp(n);o&&a.push(o)}for(let e of a){if(await rp(bp),!t().isConnected)return;let n=vp(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return np(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return Vo(e)}}),{name:`config-store`,version:4,storage:bt(),migrate:e=>Fp(e),merge:(e,t)=>Dp({...t,...Fp(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:Jf(e.providers),defaultProviders:Yf(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:Jf(t.providers),defaultProviders:Yf(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},r=(t,r)=>{let i=Ap(r?.lastUserSelection)??jp(Op(r?.lastSelectedAgentName,!0),kp(r?.agentModelSelections))??(t===e.activeDirectoryKey?Ap(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Gf(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Op(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},i=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,r(e,t)]));e.activeDirectoryKey&&!i[e.activeDirectoryKey]&&(i[e.activeDirectoryKey]=r(e.activeDirectoryKey,void 0));let a=JSON.stringify(n);if(Ep.encode(a).byteLength>xp){let t=i[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let o=Ap(e.globalLastUserSelection)??Ap(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:u(),directoryScoped:i,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Gf(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:o?.agentName??Op(e.lastSelectedAgentName,!0),lastUserSelection:Ap(e.lastUserSelection)??o,globalLastUserSelection:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=Up);var Wp=async e=>{await Up.getState().loadProviders({source:e,forceRefresh:!0})},Gp=null;Gp||=pi(async e=>{let t=[];if(B.clearConfigCache(),hi(e,`agents`)){let{loadAgents:e}=Up.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}hi(e,`providers`)&&t.push(Wp(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Kp=null,qp=null;qp||=kf((e,t)=>{Up.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Kp&&(Kp=Fe.subscribe((e,t)=>{let n=sp(e.currentDirectory),r=sp(t.currentDirectory);n!==r&&(V(`directoryStore:changed`,{previous:r,next:n}),Up.getState().activateDirectory(e.currentDirectory))}));var Jp=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Yp=e=>{let t=e.metadata;return Jp(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Jp(e.time?.updated)??Jp(e.time?.created)??0},Xp=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function Zp(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Xp.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Qp(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Zp}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var $p=[`file`,`status`,`additions`,`deletions`],em=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},tm=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),nm=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function rm(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!nm(t))return e;let n={};for(let e of $p)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function im(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=rm(e);return n!==e&&(t=!0),n});return t?n:e}function am(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=im(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function om(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=am(r?n:e);return i===(r?n:e)?n:i}function sm(e){let t=e;if(!(tm(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=om(e),r={...n};delete r.permission;let i=em(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function cm(e){return am(e)}var lm=new Set([`smartfetch-secondary`]),um=e=>typeof e==`string`&&e.length>0,dm=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return r.assigned?.from!==`contact`&&!!(um(r.assistant?.assistantID)||um(r.scheduledTask?.taskID)||um(r.smallModel?.purpose)||um(r.llm?.purpose))},fm=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},pm=e=>!(e.title&&lm.has(e.title)||fm(e)||dm(e)),mm=e=>{let t=e.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:0},hm=e=>typeof e.time?.archived==`number`,gm=e=>{let t=Ge(e);return sm({...t,directory:t.directory||e.directory})};async function _m(e,t){let n=[],r=new Set,i=t.cursor,a;for(;;){let o=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(o===0)break;let s=Math.min(t.pageSize,o),c=await Qp(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,i=await e.session.list({...t.directory?{directory:t.directory}:{},...t.roots===!0?{parentID:null}:{},limit:s,...a?{cursor:a}:{}},r?{signal:r}:void 0);if(!i||!Array.isArray(i.data)){let e=Error(`session.list returned no data`);throw e.status=503,e}return i},{attempts:t.retryAttempts??3,delay:500}),l=c.data.map(e=>gm(e));if(l.length===0)break;let u=l.filter(e=>(t.archived?!hm(e):hm(e))||t.start!==void 0&&mm(e)<t.start||i!==void 0&&mm(e)>=i?!1:pm(e)),d=0;for(let e of u)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),d+=1);if(d>0&&t.onPage?.(u),t.maxItems!==void 0&&n.length>=t.maxItems||l.length<s)break;let f=typeof c.cursor?.next==`string`&&c.cursor.next.length>0?c.cursor.next:void 0;if(!f||f===a)break;a=f}return n}var vm=`/api/magic-prompts`,ym=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
8
-
9
- The JSON object must have exactly this shape:
10
- {"subject": string, "highlights": string[]}
11
-
12
- Rules:
13
- - subject format: <type>: <summary>
14
- - allowed types: feat, fix, refactor, perf, docs, test, build, ci, chore, style, revert
15
- - no scope in subject
16
- - keep subject concise and user-facing
17
- - highlights: 0-3 concise user-facing points
18
- - use double quotes for all JSON strings
19
- - do not include trailing commas or comments
20
-
21
- Selected files:
22
- {{selected_files}}`},{id:`git.pr.generate.visible`,title:`PR Generation Visible Prompt`,group:`Git`,description:`Visible user message for PR title/body generation.`,template:`You are drafting GitHub Pull Request title and body using session context, commit list, and changed files.`},{id:`git.pr.generate.instructions`,title:`PR Generation Instructions`,group:`Git`,description:`Hidden instructions for PR title/body generation.`,placeholders:[{key:`base_branch`,description:`Base branch name.`},{key:`head_branch`,description:`Head branch name.`},{key:`commits`,description:`Bullet list of commits in base...head.`},{key:`changed_files`,description:`Bullet list of changed files in base...head.`},{key:`additional_context_block`,description:`Optional Additional context block (already formatted).`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown outside JSON, explanations, or code fences.
23
-
24
- The JSON object must have exactly this shape:
25
- {"title": string, "body": string}
26
-
27
- Rules:
28
- - title: concise, outcome-first, conventional style
29
- - body: markdown with sections: ## Summary, ## Why, ## Testing
30
- - keep output concrete and user-facing
31
- - put all markdown inside the body string
32
- - use double quotes for all JSON strings and escape newlines as \\n
33
- - do not include trailing commas or comments
34
-
35
- Base branch: {{base_branch}}
36
- Head branch: {{head_branch}}
37
-
38
- Commits in range (base...head):
39
- {{commits}}
40
-
41
- Files changed across these commits:
42
- {{changed_files}}{{additional_context_block}}`},{id:`github.pr.review.visible`,title:`PR Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating PR review requests from GitHub context.`,placeholders:[{key:`pr_number`,description:`Pull request number.`}],template:`Review this pull request #{{pr_number}} using the provided PR context`},{id:`github.pr.review.instructions`,title:`PR Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating a PR review response.`,template:`You are drafting a pull request review comment that will be posted back to the PR author. You are not the implementer; do not propose to write code or run commands.
43
-
44
- Before drafting:
45
- - Read the PR title and body first to anchor on the author's intent. Evaluate whether the implementation matches that intent — missing pieces, incorrect behavior vs intent, scope creep.
46
- - The PR diff is the source of truth for what changed; the repo on disk may not yet reflect those changes. Read the diff carefully. Use the repo only as ancillary context (imports, call sites, existing patterns, nearby code) when you need to verify a specific claim — not to discover the changes themselves.
47
- - No speculation: every reported issue must be grounded in the diff plus ancillary repo evidence you actually read. If a claim cannot be verified, drop it — do not hedge or guess.
48
- - Clarifying question: if the PR's intent itself is unreadable (title/body give no "why", diff is ambiguous on purpose), ask me one focused question about intent and stop. Do not open a discovery loop — this is a review, not a planning session.
49
-
50
- High-signal bar — only report issues that meet all of:
51
- - Objective and verifiable from the diff plus ancillary repo evidence.
52
- - Introduced by this PR (not pre-existing).
53
- - Material: bugs that will cause incorrect runtime behavior, security/privacy risks, correctness edge cases, backwards-compat breakage, missing implementations across modules/targets, boundary violations, OR a clear CLAUDE.md / AGENTS.md violation where you can quote the exact rule.
54
-
55
- Do NOT report:
56
- - Pre-existing issues unrelated to the diff.
57
- - Pedantic nitpicks a senior engineer would not flag.
58
- - Issues a linter would catch.
59
- - Subjective style preferences not explicitly required by CLAUDE.md / AGENTS.md.
60
- - "Might" / "could" / "potential" concerns without concrete evidence.
61
- - Rules mentioned in CLAUDE.md / AGENTS.md but explicitly silenced in the code (e.g., via an ignore comment or documented exception).
62
- - Missing tests / coverage gaps unless CLAUDE.md / AGENTS.md explicitly requires them for the changed area.
63
-
64
- Validation pass: before writing the final comment, re-check each candidate issue against the diff + ancillary repo evidence. Drop anything you are not certain about. False positives waste the author's time.
65
-
66
- Output rules:
67
- - Produce a single review comment addressed to the PR author, using the exact format below.
68
- - No emojis. No code snippets. No fenced blocks. Short inline code identifiers are fine.
69
- - Reference evidence with file paths and line ranges (e.g., path/to/file.ts:120-138) derived from the diff. Use "approx" only as a last resort when the diff does not expose exact lines.
70
- - One bullet per unique issue; do not duplicate an issue across sections.
71
- - Keep the whole comment under ~300 words.
72
-
73
- Format exactly:
74
- <1-2 sentence summary of intent and top-level verdict>
75
-
76
- Must-fix:
77
- - <issue> - <brief why> - <file:line-range> - Action: <one-line action>
78
- Nice-to-have:
79
- - <issue> - <brief why> - <file:line-range> - Action: <one-line action>
80
-
81
- If nothing clears the high-signal bar, write:
82
- Must-fix:
83
- - None
84
- Nice-to-have:
85
- - None`},{id:`github.issue.review.visible`,title:`Issue Review Visible Prompt`,group:`GitHub`,description:`Visible user message when creating issue review requests from GitHub context.`,placeholders:[{key:`issue_number`,description:`Issue number.`}],template:`Review this issue #{{issue_number}} using the provided issue context`},{id:`github.issue.review.instructions`,title:`Issue Review Instructions`,group:`GitHub`,description:`Hidden instructions attached when generating an issue review response.`,template:`Review this issue using the provided issue context.
86
-
87
- Process:
88
- - First classify the issue type (bug / feature request / question/support / refactor / ops) and state it as: Type: <one label>.
89
- - Gather any needed repository context (code, config, docs) to validate assumptions.
90
- - After gathering, if anything is still unclear or cannot be verified, do not speculate — state what's missing and ask targeted questions.
91
-
92
- Mode selection by type:
93
- - Bug / Question/Support / Ops: deliver the response directly using the matching template below. Do not bombard me with questions for straightforward diagnosis; use "Missing info" / "Repro/diagnostics needed" fields instead.
94
- - Feature request / Refactor with substantive unknowns: this is effectively a planning session. Do not emit the Feature template on the first turn. Instead, ask me focused clarifying questions in batches of at most 3, one topic at a time (scope, constraints, tradeoffs, UX, etc.), wait for answers, drop questions that became irrelevant, and repeat until you have no more substantive questions. Only then emit the Feature template.
95
-
96
- Output rules:
97
- - Compact output; pick ONE template below and omit the others.
98
- - No emojis. No code snippets. No fenced blocks.
99
- - Short inline code identifiers allowed.
100
- - Reference evidence with file paths and line ranges when applicable; if exact lines are not available, cite the file and say "approx" + why.
101
- - Keep the entire response under ~300 words (applies to the final template output, not to clarifying-question turns).
102
-
103
- Templates (choose one):
104
- Bug:
105
- - Summary (1-2 sentences)
106
- - Likely cause (max 2)
107
- - Repro/diagnostics needed (max 3)
108
- - Fix approach (max 4 steps)
109
- - Verification (max 3)
110
-
111
- Feature:
112
- - Summary (1-2 sentences)
113
- - Requirements (max 4)
114
- - Unknowns/questions (max 4)
115
- - Proposed plan (max 5 steps)
116
- - Verification (max 3)
117
-
118
- Question/Support:
119
- - Summary (1-2 sentences)
120
- - Answer/guidance (max 6 lines)
121
- - Missing info (max 4)
122
-
123
- Do not implement changes until I confirm; end with: "Next actions: <1 sentence>".`},{id:`github.pr.checks.review.visible`,title:`PR Failed Checks Visible Prompt`,group:`GitHub`,description:`Visible user message for PR failed checks analysis.`,template:`Review these PR failed checks and propose likely fixes. Do not implement until I confirm.`},{id:`github.pr.checks.review.instructions`,title:`PR Failed Checks Instructions`,group:`GitHub`,description:`Hidden instructions for PR failed checks analysis.`,template:`Use the attached checks payload.
124
- - Summarize what is failing.
125
- - Prioritize check annotations/errors over generic status text.
126
- - Identify likely root cause(s).
127
- - Propose a minimal fix plan and verification steps.
128
- - No speculation: ask for missing info if needed.`},{id:`github.pr.comments.review.visible`,title:`PR Comments Review Visible Prompt`,group:`GitHub`,description:`Visible user message for PR comments analysis.`,template:`Review these PR comments and propose the required changes and next actions. Do not implement until I confirm.`},{id:`github.pr.comments.review.instructions`,title:`PR Comments Review Instructions`,group:`GitHub`,description:`Hidden instructions for PR comments analysis.`,template:`Use the attached comments payload.
129
- - Identify required vs optional changes.
130
- - Call out intent/implementation mismatch if present.
131
- - Before proposing a plan: if a comment's intent is ambiguous, or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
132
- - Once intent is clear, propose a minimal plan and verification steps.`},{id:`github.pr.comment.single.visible`,title:`Single PR Comment Visible Prompt`,group:`GitHub`,description:`Visible user message for single PR comment analysis.`,template:`Address this comment from PR and propose required changes. Do not implement until I confirm.`},{id:`github.pr.comment.single.instructions`,title:`Single PR Comment Instructions`,group:`GitHub`,description:`Hidden instructions for single PR comment analysis.`,template:`Use the attached single-comment payload.
133
- - Explain what the reviewer is asking for.
134
- - Identify exact code areas likely impacted.
135
- - Before proposing a plan: if the reviewer's intent is ambiguous or the required change depends on a tradeoff only I can decide, ask me focused clarifying questions in batches of at most 3 and wait for answers. Do not speculate.
136
- - Once intent is clear, propose a minimal implementation plan and verification steps.`},{id:`git.conflict.resolve.visible`,title:`Merge/Rebase Conflict Visible Prompt`,group:`Git`,description:`Visible user message for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`head_ref`,description:`Head reference for preserving intent.`}],template:`Investigate the {{operation_label}} conflicts and concisely report the intended resolution strategy without making modifications. Wait for confirmation before resolving, staging, or continuing the {{operation_label}}. Preserve the intent of changes from {{head_ref}}.`},{id:`git.conflict.resolve.instructions`,title:`Merge/Rebase Conflict Instructions`,group:`Git`,description:`Hidden instructions for merge/rebase conflict resolution help.`,placeholders:[{key:`operation_label`,description:`Operation label in lower-case (merge/rebase).`},{key:`directory`,description:`Repository directory path.`},{key:`operation`,description:`Operation name.`},{key:`head_info`,description:`Head metadata if available.`},{key:`continue_cmd`,description:`Command to continue operation.`}],template:`Git {{operation_label}} operation is in progress with conflicts.
137
- - Directory: {{directory}}
138
- - Operation: {{operation}}
139
- - Head Info: {{head_info}}
140
-
141
- Required steps before confirmation:
142
- 1. Read each conflicted file to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
143
- 2. Inspect the relevant surrounding code and changes from both sides
144
- 3. Report a concise per-file resolution strategy and any assumptions or tradeoffs
145
- 4. Wait for explicit user confirmation before editing files, staging files, or running: {{continue_cmd}}
146
-
147
- Important:
148
- - Do not modify files before the user confirms the proposed strategy
149
- - Do not stage files before the user confirms the proposed strategy
150
- - Do not continue the {{operation_label}} before the user confirms the proposed strategy
151
- - Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
152
- - Make sure the final code is syntactically correct and preserves intent from both sides
153
- - Do not leave any files with unresolved conflict markers
154
- - After completing all steps, confirm the {{operation_label}} was successful`},{id:`git.integrate.cherrypick.resolve.visible`,title:`Cherry-pick Conflict Visible Prompt`,group:`Git`,description:`Visible user message for cherry-pick conflict resolution help.`,placeholders:[{key:`current_commit`,description:`Current commit hash being applied.`},{key:`target_branch`,description:`Target branch name.`}],template:`Resolve cherry-pick conflicts, stage the resolved files, and continue the cherry-pick. Keep intent of commit {{current_commit}} onto branch {{target_branch}}.`},{id:`git.integrate.cherrypick.resolve.instructions`,title:`Cherry-pick Conflict Instructions`,group:`Git`,description:`Hidden instructions for cherry-pick conflict resolution help.`,placeholders:[{key:`repo_root`,description:`Repository root path.`},{key:`temp_worktree_path`,description:`Temporary worktree path.`},{key:`source_branch`,description:`Source branch name.`},{key:`target_branch`,description:`Target branch name.`},{key:`current_commit`,description:`Current commit hash being applied.`}],template:`Worktree commit integration (cherry-pick) is in progress with conflicts.
155
- - Repo root: {{repo_root}}
156
- - Temp target worktree: {{temp_worktree_path}}
157
- - Source branch: {{source_branch}}
158
- - Target branch: {{target_branch}}
159
- - Current commit: {{current_commit}}
160
-
161
- Required steps:
162
- 1. Read each conflicted file in the temp worktree to understand the conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)
163
- 2. Edit each file to resolve conflicts by choosing the correct code or merging both changes appropriately
164
- 3. Stage all resolved files with: git add <file>
165
- 4. Complete the cherry-pick with: git cherry-pick --continue
166
-
167
- Important:
168
- - Work inside the temp worktree directory: {{temp_worktree_path}}
169
- - Remove ALL conflict markers from files (<<<<<<< HEAD, =======, >>>>>>>)
170
- - Preserve the intent of the commit being applied
171
- - Make sure the final code is syntactically correct
172
- - Do not leave any files with unresolved conflict markers
173
- - After completing all steps, confirm the cherry-pick was successful`},{id:`session.summary.visible`,title:`Session Summary Visible Prompt`,group:`Session`,description:`Visible user message sent by the /summary command.`,placeholders:[{key:`topic_line`,description:`Pre-formatted topic clause (e.g. " focused on: <topic>") or empty string.`}],template:`Summarize this session{{topic_line}}.`},{id:`session.summary.instructions`,title:`Session Summary Instructions`,group:`Session`,description:`Hidden instructions attached to the /summary command. Produces a non-destructive summary usable for handing off to a new session.`,placeholders:[{key:`topic_block`,description:`Pre-formatted topic focus paragraph, or empty string when no topic hint was given.`}],template:`Produce a non-destructive summary of this conversation. Do NOT compact or mutate session history — your output is an additional assistant message the user will read and may use to hand off to a new session.
174
-
175
- Cover the information useful for continuing this work:
176
- - What was done (completed work, in order)
177
- - What is currently in progress
178
- - Files modified — brief what and why per file
179
- - Open questions and next steps
180
- - User requests, constraints, or preferences to carry forward
181
- - Important technical decisions and why they were made
182
-
183
- {{topic_block}}
184
-
185
- Formatting:
186
- - Concise markdown with short sections and bullet lists
187
- - No preamble like "Here is a summary" — jump straight to content
188
- - Do not answer questions found in the conversation — only summarize
189
- - Keep length proportional to session length; do not pad
190
-
191
- Respond in the same language the user used most in the conversation.`},{id:`session.review.visible`,title:`Workspace Review Visible Prompt`,group:`Session`,description:`Visible user message sent by the /workspace-review command.`,template:`Review the changes made in this workspace.`},{id:`session.review.instructions`,title:`Workspace Review Instructions`,group:`Session`,description:`Hidden instructions attached to the /workspace-review command. Reviews the workspace diff for intent, correctness, and adequacy, with severity-classified findings.`,template:`Review the changes in this workspace and judge whether they are correct and adequate — not just whether they contain catastrophic bugs.
192
-
193
- The diff is the source of truth. Read the relevant code around the diff too, not only the diff itself, so you understand the change in context.
194
-
195
- First, understand the intent and whether it was achieved:
196
- - Work out what these changes are trying to do — the intent behind them — from the diff and the surrounding code.
197
- - Judge whether the implementation actually achieves that intent, and whether it is the smallest correct way to do it. Call out where the change is incomplete, only partially solves the goal, misses cases it clearly set out to handle, or solves it in a way that will not hold up.
198
-
199
- Then look for concrete problems. Report real failure modes, not abstract suspicions, and do not nitpick without impact.
200
-
201
- Correctness focus:
202
- - race conditions, stale async results, event ordering
203
- - data loss or failed writes
204
- - lifecycle and cleanup (listeners, timers, subscriptions, resources)
205
- - non-transitive comparators or unstable sorting
206
- - state/store fanout and render performance
207
- - optimistic state rollback and reconciliation
208
- - accessibility semantics
209
- - regressions introduced by the changes
210
- - missing implementations across affected modules or targets when the diff clearly introduced the gap
211
- - missing targeted tests for risky or regression-prone changes
212
- - clear CLAUDE.md or AGENTS.md violations that apply to the changed files
213
-
214
- Security and supply-chain focus (when the diff touches these):
215
- - dependencies, build/release/CI scripts
216
- - auth, tokens, secrets, credentials
217
- - filesystem boundaries and path traversal
218
- - shell execution
219
- - network calls, telemetry, exfiltration
220
- - IPC, native bridge, updater, desktop shell
221
- - hidden behavior behind small diffs or broad refactors
222
-
223
- Do not report:
224
- - pre-existing issues unrelated to the diff
225
- - pedantic nitpicks a senior engineer would not flag, or issues a linter would catch
226
- - subjective style preferences not required by CLAUDE.md or AGENTS.md
227
- - speculative concerns you cannot tie to a concrete failure
228
- - rules mentioned in CLAUDE.md or AGENTS.md but explicitly silenced in the code
229
-
230
- Validation pass:
231
- - Before reporting an issue, re-check it against the diff plus only the context you actually read.
232
- - For CLAUDE.md or AGENTS.md violations, verify the rule applies to the affected file path and cite the exact rule.
233
- - If you cannot tie a finding to a concrete impact, drop it.
234
-
235
- Classify each finding:
236
- - blocker: likely regression, data loss, security issue, broken invariant, or a serious correctness problem — or the change does not actually achieve its intent
237
- - non-blocker: a real but minor issue, a test gap, or a maintainability concern
238
- - nit: mention only if useful, never treat as blocking
239
-
240
- This is a review only — do not edit, fix, or commit anything unless the user asks you to.
241
-
242
- Output:
243
- - Start with one or two sentences: what the change does and whether it achieves its intent.
244
- - Then list findings grouped by severity. For each: short title, why it is a real problem, the affected file path, and category (correctness / security / rule violation / adequacy gap).
245
- - If you find nothing real, say so plainly instead of inventing findings.
246
-
247
- Keep the review concise and practical. Respond in the same language the user uses.`},{id:`session.reviewHandoff.visible`,title:`Review Handoff Visible Prompt`,group:`Session`,description:`Visible user message sent by the /handoff-review command.`,template:`Prepare a handoff for another agent to review this work.`},{id:`session.reviewHandoff.instructions`,title:`Review Handoff Instructions`,group:`Session`,description:`Hidden instructions attached to the /handoff-review command. Produces a handoff for a separate review agent.`,template:`Produce a review handoff for another agent. Do not compact or mutate session history. Your output is an assistant message that OpenChamber will send to a separate reviewer agent.
248
-
249
- Include:
250
- - The user's original intent and any later clarifications that changed the intent
251
- - What was implemented and why
252
- - Files changed, with brief purpose per file
253
- - Important design decisions and tradeoffs
254
- - Validation/tests run, if known
255
- - Known gaps, uncertainty, or areas the reviewer should inspect closely
256
-
257
- Formatting:
258
- - Concise markdown with clear sections
259
- - No preamble like "Here is a handoff"
260
- - Do not mention OpenChamber metadata, linked sessions, session IDs, or routing
261
- - Respond in the same language the user used most in the conversation`},{id:`session.reviewSession.visible`,title:`Review Session Starter Prompt`,group:`Session`,description:`Visible user message sent to the generated review session.`,placeholders:[{key:`handoff`,description:`The generated implementation handoff.`}],template:`Please review the changes described in this handoff.
262
-
263
- Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation satisfies the stated intent. Provide concise, actionable feedback for the agent implementing the changes.
264
-
265
- {{handoff}}`},{id:`session.reviewSessionWithoutHandoff.visible`,title:`Review Session Starter Prompt Without Handoff`,group:`Session`,description:`Visible user message sent to a generated review session when no implementation handoff is generated first.`,template:`Please review the current workspace changes.
266
-
267
- There is no generated implementation handoff. Infer the likely user intent from the current diff, recent session context if available, changed files, and surrounding code. Judge whether the implementation is correct for that inferred intent, and call out uncertainty explicitly when intent cannot be recovered.
268
-
269
- Focus on correctness, regressions, missing implementation, missing tests, and whether the implementation is the smallest maintainable way to satisfy the likely goal. Provide concise, actionable feedback for the agent implementing the changes.`},{id:`session.reviewFeedbackToImplementer.visible`,title:`Review Feedback Transfer Prompt`,group:`Session`,description:`Visible user message sent from a review session back to the implementing agent.`,placeholders:[{key:`review_feedback`,description:`Reviewer assistant feedback text.`}],template:`Another agent reviewed your changes and left the feedback below.
270
-
271
- Please review the feedback, resolve the relevant issues, and explain what you changed.
272
-
273
- {{review_feedback}}`},{id:`session.implementationResponseToReviewer.visible`,title:`Implementation Response Transfer Prompt`,group:`Session`,description:`Visible user message sent from the implementing agent back to the review session.`,placeholders:[{key:`implementation_response`,description:`Implementing assistant response text.`}],template:`The agent implementing the changes has responded to the previous review feedback.
274
-
275
- Please review the latest state again and report any remaining issues.
276
-
277
- {{implementation_response}}`},{id:`session.craftGoal.visible`,title:`Goal Crafting Visible Prompt`,group:`Session`,description:`Visible user message sent by the /craft-goal command.`,placeholders:[{key:`idea_block`,description:`Optional initial task or idea supplied after the command.`}],template:`Help me turn an idea or task into a clear, verifiable Goal.{{idea_block}}`},{id:`session.craftGoal.instructions`,title:`Goal Crafting Instructions`,group:`Session`,description:`Hidden instructions attached to the /craft-goal command. Guides discovery and produces a ready-to-use Goal objective.`,template:`The user wants help turning a task, idea, or desired outcome into a strong Goal for an autonomous, multi-turn working session.
278
-
279
- A Goal is a persistent completion contract, not an implementation plan and not a larger one-shot prompt. Help the user define what "done" means clearly enough that another agent can work toward it, verify it against evidence, continue through uncertain intermediate steps, and stop honestly when completion is blocked.
280
-
281
- Run this as a guided dialogue, not a one-shot answer.
282
-
283
- 1. Start from the user's intent. If the visible message includes an initial idea, use it immediately. Otherwise ask what they want to accomplish. Do not ask them to formulate the Goal themselves.
284
-
285
- 2. Investigate before asking when context is available. For repository work, inspect relevant code, tests, scripts, documentation, and conventions when that would answer questions or expose constraints. Do not ask for information that can be determined reliably from the workspace.
286
-
287
- 3. Decide whether a Goal is appropriate. Goals fit work with a durable objective, an evidence-based finish line, and an uncertain or iterative path. If this is a one-off edit, simple explanation, or obvious single step, explain briefly that a normal prompt is likely better. Continue crafting a Goal if the user still wants one.
288
-
289
- 4. Resolve the Goal contract:
290
- - Outcome: what must be true when the work is complete.
291
- - Verification surface: which tests, benchmarks, commands, artifacts, source material, observations, or other evidence prove completion.
292
- - Constraints: what behavior, quality, compatibility, safety, performance, or scope must remain intact.
293
- - Boundaries: which files, systems, tools, data, repositories, environments, or resources may or may not be used.
294
- - Iteration policy: how the working agent should evaluate evidence and choose the next useful action after each attempt.
295
- - Blocked stop condition: when it should stop, what evidence and attempted paths it should report, and what input would unlock progress.
296
-
297
- 5. Ask only necessary questions, in batches of at most 3. Prefer concrete, decision-oriented questions. Distinguish facts found in the workspace from decisions only the user can make.
298
-
299
- 6. Do not over-prescribe the path. Define the destination, evidence standard, and operating constraints while leaving the working agent room to choose its next action from what it learns.
300
-
301
- 7. Do not invent precision. Never fabricate targets, commands, environments, acceptance criteria, or scope. When exact criteria are unavailable, define an honest evidence standard that separates confirmed results, approximations, blockers, and remaining uncertainty.
302
-
303
- 8. Do not implement the task. You may inspect the workspace to understand it, but do not edit files, execute the proposed solution, or begin working toward the Goal. This session's deliverable is the Goal itself.
304
-
305
- 9. Once the contract is resolved, respond in exactly this structure:
306
-
307
- ## Proposed Goal
308
-
309
- \`\`\`text
310
- <one self-contained Goal objective ready to paste into the Goal dialog; do not prefix it with /goal>
311
- \`\`\`
312
-
313
- ## Why This Is Verifiable
314
-
315
- - <brief explanation of the outcome and evidence>
316
- - <brief explanation of the preserved constraints>
317
- - <brief explanation of the blocked stop condition>
318
-
319
- ## Assumptions
320
-
321
- - <only assumptions that still matter, or "None">
322
-
323
- The proposed Goal should normally be one compact paragraph. Keep enough operational detail to make completion auditable, but remove conversational history, rationale, repetition, and implementation details that are not part of the completion contract.
324
-
325
- Do not activate, execute, or claim completion of the proposed Goal. End by inviting the user to revise it or use it in the Goal dialog.
326
-
327
- Respond in the same language the user uses.`},{id:`session.catchup.visible`,title:`Catch Up Visible Prompt`,group:`Session`,description:`Visible user message sent by the /catch-up command.`,template:`Catch me up on where this project is right now.`},{id:`session.catchup.instructions`,title:`Catch Up Instructions`,group:`Session`,description:`Hidden instructions attached to the /catch-up command. Inspects git state and branches on it: in-progress diff, open PR review state, or recent commits.`,template:`The user is returning to this project after stepping away and wants to quickly get their bearings — a quick, easy-to-digest "here's where you are and where to pick up", not a status report. Investigate the actual repository state first, then orient them conversationally. Do not assume; check.
328
-
329
- Quietly inspect git state first, and do this work silently — the user wants the takeaway, not a play-by-play of the commands you ran. Look at: the current branch and whether it is the repo's default branch (main/master, or whatever this repo uses), uncommitted changes (status and diff), recent commits, and where the branch stands relative to its remote.
330
-
331
- Build context in LAYERS — they combine, they are not either/or. Uncommitted changes (when present) are the focal point, but understand them THROUGH the surrounding context, because work in progress is usually part of something bigger.
332
-
333
- First, get the branch context:
334
- - If this is NOT the default branch (a feature branch): understand what the branch is for as a whole. Read its recent commits and their diffs — not all of them, just enough, going back until the intent and how it is being implemented become clear. Also check whether the branch has its OWN open pull request, even when there are uncommitted changes — the PR explains what the current diff is in service of (continuing the feature, or addressing review feedback) and helps you judge whether the work looks finished or still mid-flight. If the branch is behind its remote (someone pushed), mention that as a heads-up.
335
- - If this IS the default branch: take a light skim of the last few commits (no deep dive) to see whether the uncommitted work is a continuation of recent work, and of what.
336
-
337
- Then focus and synthesize:
338
- - If there are uncommitted changes, lead with them — what they were doing and why, what looks done versus still in progress, and where they likely stopped — interpreted through the branch context above (is this completing the feature? addressing review? a new direction?). Open with that, e.g. "Looks like you were in the middle of X…".
339
- - If the tree is clean, orient from the branch's own work and PR (feature branch) or the recent commits (default branch).
340
-
341
- End with a clear next step, and make it about continuing the actual work, not housekeeping. The fact that they ran this command means they stepped away — if the work were finished they would most likely have shipped it already, so assume there is more to do and point to the substantive next piece ("next you'd wire X into Y and handle Z"). Only suggest housekeeping — pushing, opening a PR, running checks — when there is genuinely nothing left to build, or when it is truly the most useful thing to do next.
342
-
343
- Hard rules:
344
- - Only ever discuss the CURRENT branch and its own work. Never mention unrelated branches, other people's PRs, review requests assigned to the user, or PRs that belong to other branches — that is noise here.
345
- - Use ahead/behind and commit history to understand intent, not as something to dump. Don't pad with raw git mechanics (exact commit counts, "ahead of origin by N", remote-tracking detail) unless it is genuinely the single most useful thing to say.
346
- - Depth goes into your understanding, not the length of the reply. Keep the output short, easy to digest, and scannable — a couple of sentences of orientation plus a clear next step. Write like a teammate catching them up, not a CI summary.
347
-
348
- Respond in the same language the user uses.`},{id:`session.debug.visible`,title:`Debugging Visible Prompt`,group:`Session`,description:`Visible user message sent by the /debug command.`,template:`I want to debug an issue.`},{id:`session.debug.instructions`,title:`Debugging Instructions`,group:`Session`,description:`Hidden instructions attached to the /debug command. Runs a guided root-cause investigation before proposing a fix.`,template:`The user wants help debugging an issue. Drive this as a focused root-cause investigation — not a plan, and not an immediate fix.
349
-
350
- 1. Get the symptom. When the user describes the problem, capture exactly what is observed versus expected — error messages, stack traces, failing behavior, and when it started. If a key detail is missing to even begin, ask for it briefly.
351
-
352
- 2. Form hypotheses. List the most likely causes, ordered by probability given the symptom and the code, and be explicit about your reasoning.
353
-
354
- 3. Investigate to confirm or rule out. Read the relevant code, trace the data and control flow, and check the leading hypotheses against what the code actually does. Prefer evidence from the code over speculation.
355
-
356
- 4. Ask only what you need. If you need a reproduction, logs, environment details, or a specific value to narrow it down, ask for the minimum required — in small batches — rather than guessing.
357
-
358
- 5. Identify the root cause. Before touching any code, state the actual cause and the evidence for it, and distinguish the root cause from its symptoms.
359
-
360
- 6. Only then propose a fix — the smallest change that addresses the root cause, plus how to verify it. Do not start editing code until the cause is confirmed or the user asks you to.
361
-
362
- Respond in the same language the user uses.`},{id:`session.weigh.visible`,title:`Weigh Options Visible Prompt`,group:`Session`,description:`Visible user message sent by the /weigh command.`,template:`Help me decide how to approach this.`},{id:`session.weigh.instructions`,title:`Weigh Options Instructions`,group:`Session`,description:`Hidden instructions attached to the /weigh command. Investigates the code, then compares distinct approaches with trade-offs and a recommendation — no plan, no code.`,template:`The user knows WHAT they want to do but not HOW to approach it. Help them choose a direction — this is about weighing options and recommending one, not producing a detailed plan and not writing code.
363
-
364
- First, investigate. Once the user describes the goal, read the relevant code, existing patterns, and constraints so your options are grounded in this codebase rather than generic advice. Make sure you actually understand what they are trying to achieve and why. Ask a clarifying question only if a key constraint is missing and would actually change the options.
365
-
366
- Then lay out 2-3 genuinely distinct approaches — real alternatives, not minor variations of one idea. Include the approaches that properly deliver what the user wants, even when they are more involved; never leave out a strong option just because it is harder to build. For each, cover:
367
- - what it involves, in a sentence or two
368
- - how well it actually satisfies the user's goal — does it fully solve it, or only partially?
369
- - how it fits (or fights) the existing patterns in this codebase
370
- - trade-offs and consequences: complexity, risk, blast radius, effort, long-term maintainability
371
- - when it is the right choice
372
-
373
- Then give a clear recommendation. Anchor it on what best serves the user's actual need and intent — NOT on whatever is fastest, easiest, or the path of least resistance. Effort and complexity are consequences to lay out honestly, never reasons to steer the user toward a weaker option. Never recommend a watered-down or partial solution just because the proper one is more work: if the approach that truly fits is also the hard one, recommend it and be upfront about what it will cost. Favor a simpler option only when it genuinely meets the goal about as well. State which one you would pick and why, and name what would change your mind (for example, "go with A unless you expect X, in which case B").
374
-
375
- Keep it concrete and scannable. Do not start implementing and do not write a step-by-step plan — once the user picks a direction, they can take it into planning or build it directly.
376
-
377
- Respond in the same language the user uses.`},{id:`session.explore.visible`,title:`Codebase Tour Visible Prompt`,group:`Session`,description:`Visible user message sent by the /explore command.`,template:`Give me a high-level tour of this codebase.`},{id:`session.explore.instructions`,title:`Codebase Tour Instructions`,group:`Session`,description:`Hidden instructions attached to the /explore command. Investigates the repository and gives a structured orientation rather than a file-by-file dump.`,template:`The user wants to get oriented in this codebase — a high-level tour, as if you were onboarding a new contributor. Investigate first, then explain; do not guess from file or symbol names alone.
378
-
379
- Explore the actual repository: entry points, the top-level structure, how it is built and run, and the main modules and how they connect. Read enough real code to be accurate.
380
-
381
- Then give a clear orientation covering:
382
- - The big picture: what this project is and how it is structured at a high level.
383
- - Main parts: the key modules, packages, or directories, what each is responsible for, and where they live.
384
- - How it fits together: the main flow — how a request or action moves through the system, and how the pieces talk to each other.
385
- - Conventions worth knowing: notable patterns, where shared code, types, and config live, and anything non-obvious a newcomer would trip on.
386
- - Where to start: a few concrete pointers for finding your way around or making a first change.
387
-
388
- Keep it a readable orientation, not an exhaustive file-by-file dump — favor the structure and the mental model over listing everything. Lead with the big picture, then drill down. If the user named a specific area, focus the tour there.
389
-
390
- Respond in the same language the user uses.`},{id:`session.fusion.visible`,title:`Fusion Visible Prompt`,group:`Session`,description:`Visible user message for multi-run fusion sessions.`,template:`Create the best combined answer from the multi-run results.`},{id:`session.fusion.instructions`,title:`Fusion Instructions`,group:`Session`,description:`Hidden instructions used before multi-run source outputs in fusion sessions.`,template:`You are performing fusion over multiple model outputs from the same original task.
391
-
392
- Goal: produce the strongest possible final answer by combining complementary information, resolving conflicts, removing duplicates, and preserving useful nuance.
393
-
394
- Use the results below as source material. Do not mention that the inputs were hidden parts. If sources disagree, prefer the most specific, well-supported, and internally consistent answer.
395
-
396
- --- FUSION INPUTS START ---`}].map(e=>[e.id,e])),bm={"git.commit.generate":{visible:`git.commit.generate.visible`,instructions:`git.commit.generate.instructions`},"git.pr.generate":{visible:`git.pr.generate.visible`,instructions:`git.pr.generate.instructions`}},xm=null,Sm=null,Cm=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),wm=e=>{let t=e?.overrides;if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);for(let[e,t]of Object.entries(bm)){let r=n[e];if(typeof r!=`string`)continue;let i=r.indexOf(`
397
- `),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},Tm=async()=>xm||(Sm||=_(vm,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=wm(await e.json().catch(()=>({})));return xm=t,t}).finally(()=>{Sm=null}),Sm),Em=e=>{let t=ym.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},Dm=e=>Em(e).template,Om=async e=>{let t=(await Tm().catch(()=>({})))[e];return typeof t==`string`?t:Dm(e)},km=async(e,t={})=>Cm(await Om(e),t),Am=async(e,t)=>{let n=await _(`${vm}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return xm=wm(r),{version:typeof r?.version==`number`?r.version:1,overrides:xm}},jm=async e=>{let t=await _(`${vm}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return xm=wm(n),{version:typeof n?.version==`number`?n.version:1,overrides:xm}},Mm=async()=>{let e=await _(vm,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return xm=wm(t),{version:typeof t?.version==`number`?t.version:1,overrides:xm}},Nm=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
398
- `).replace(/\n\s*\n+/g,`
399
- `),Pm=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Fm=e=>{let t=e?.metadata;return Pm(t)?t:{}},Im=e=>{let t=e.openchamber;return Pm(t)?t:{}},Lm=e=>{let t=Im(Fm(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Rm=e=>{let t=Im(Fm(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},zm=e=>Im(Fm(e)).kind===`review`&&!!Rm(e),Bm=(e,t)=>{let n=Im(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Vm=(e,t)=>{let n=Im(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Hm=(e,t)=>{let n=Im(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},Um=De()(Oe((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:bt(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Wm=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Gm=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=Wm(t.parentSessionId),r=Wm(t.sessionId);if(!(!n||!r||n===r))return{parentSessionId:n,sessionId:r}},Km=e=>{let t=[];for(let n of e){if(n?.type!==`tool`||n.tool!==`task`)continue;let e=n.state;if(!e||typeof e!=`object`||Array.isArray(e))continue;let r=e;if(r.status!==`running`)continue;let i=r.metadata,a=Gm(i);a&&t.push(a)}return t},qm=[],Jm=(e,t,n)=>{let r=new Map;for(let t of e){if(!t.parentID)continue;let e=r.get(t.parentID)??[];e.push(t.id),r.set(t.parentID,e)}if(n)for(let e of n){let t=r.get(e.parentSessionId)??[];t.push(e.sessionId),r.set(e.parentSessionId,t)}let i=new Set([t]),a=[t];for(let e of a){let t=r.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}return i},Ym=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},Xm=(e,t,n,r,i)=>{if(!n)return r;let a=Jm(e,n,i);if(a.size===0)return r;let o=new Set,s=[];for(let e of a){let n=t[e];if(n)for(let e of n)o.has(e.id)||(o.add(e.id),s.push(e))}return s.length===0?r:s},Zm=`GitHub issue context (JSON)`,Qm=`GitHub pull request context (JSON)`,$m=e=>!e||typeof e!=`object`?!1:!!e.synthetic,eh=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>$m(e)),th=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!$m(e)),n=e=>{if(!$m(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Zm)||n.startsWith(Qm)};return t&&e.some(e=>$m(e))?e.filter(e=>!$m(e)||n(e)):e},nh=new Map,rh=new Map,ih=new Map,ah=e=>{nh.set(e,(nh.get(e)??0)+1)},oh=e=>(nh.get(e)??0)>0,sh=e=>{let t=nh.get(e)??0;return t<=0?!1:(t===1?nh.delete(e):nh.set(e,t-1),!0)},ch=(e,t)=>{rh.set(e,t)},lh=e=>rh.get(e)??null,uh=e=>{rh.delete(e)},dh=({sessionId:e,currentUserOrder:t,animatedIds:n})=>{let r=ih.get(e),i=null;if(oh(e)){let r=t[t.length-1];r!==void 0&&!n.has(r)&&sh(e)&&(ch(e,r),n.add(r),i=r)}if((!r||t.length>=r.length)&&ih.set(e,t),i!==null)return i;let a=lh(e);return a===null?null:(t.includes(a)&&n.add(a),a)},fh=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},ph=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,mh=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},hh=e=>e.replace(/\\/g,`/`),gh=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,_h=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),hh(n)}catch{return null}},vh=(e,t)=>{let n=gh(hh(e)),r=gh(hh(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},yh=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),bh=(e,t)=>{let n=hh(e),r=gh(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=vh(n,t);if(r!==null){let t=gh(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return yh(a)},xh=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},Sh=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},Ch=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},wh=async(e,t={})=>{let n=t.createID??_e,r=t.directory??t.root??null,i=e.filter(e=>!$m(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(ph).join(`
400
- `),l=[];for(let e of o){let t=Ch(e);t&&l.push(t)}for(let e of[...l].reverse())Sh(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=ce(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=Sh(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?_h(t):null;if(o){let e=bh(o,r),t=null;for(let n of e){let e=Sh(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=mh(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=oe(s);if(t.startsWith(`data:`)){let e=await xh(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(fh(t)){if(!Te(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=S(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=C(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},Th=async(e,t={})=>{let n=t.createID??_e,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=C(r,i),o=S(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=oe(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await xh(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(fh(i)){if(!Te(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},Eh=e=>e?JSON.parse(JSON.stringify(e)):null,Dh=e=>e?{...e}:{},Oh=(e,t=di.getState())=>{let n=t.getDraft?.(e)??null,r=Dh(t.draftAttachmentViews?.[z(e)]);return{record:Eh(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},kh=async e=>{let t=e.input??di.getState(),n=Oh(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},Ah=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},jh=async e=>{let t=e.input??di.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?Ah({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},Mh=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},Nh=e=>e?.status===`committed`&&e.current===!0,Ph=new Map,Fh=async(e,t)=>{let n=z(e),r=Ph.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Ph.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Ph.get(n)===o&&Ph.delete(n)}},Ih=(e,t)=>({key:e,addLocal:async n=>{await Fh(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Fh(e,async()=>{let r=t(),i=Mh(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Fh(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Fh(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:Nh(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Fh(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Fh(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Fh(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Lh=4e4,Rh=0,zh=null;function Bh(e=Date.now()){Rh=e}function Vh(e){return zh=e,()=>{zh===e&&(zh=null)}}function Hh(e){zh?.(e)}function Uh(e=Date.now(),t=Lh){return Rh<=0?!1:e-Rh>=t}var Wh=3e4,Gh=200,Kh=new Map;function qh(e,t,n){return`${n?.transport??u()}\n${n?.generation??f()}\n${e.trim()}\n${t}`}function Jh(e,t,n){if(!e||!t)return!1;let r=Kh.get(qh(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Wh}function Yh(e,t,n){if(!e||!t)return;let r=qh(e,t,n);for(Kh.has(r)&&Kh.delete(r);Kh.size>=Gh;){let e=Kh.keys().next().value;if(typeof e!=`string`)break;Kh.delete(e)}Kh.set(r,n?.now??Date.now())}var Xh=768,Zh=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Qh=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(ae())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Xh&&Zh()?`mobile`:`desktop`},$h=()=>Qh()===`mobile`,eg=3,tg=2,ng=4,rg=4,ig=100,ag=30;function og(){return a()?`relay`:`local`}function sg(e=og()){return e===`relay`?tg:eg}function cg(e=og()){return e===`relay`?rg:ng}function lg(e){return sg(fg(e))}function ug(){return ig}function dg(){return ag}function fg(e){return e===`relay`||e===`local`?e:og()}var pg=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function mg(){return{pages:[],pageParams:[]}}function hg(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function gg(e){return{pages:Object.freeze(e.pages.map(hg)),pageParams:Object.freeze([...e.pageParams])}}function _g(e,t,n=pg){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return hg({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function vg(e){if(!e||e.pages.length===0)return au;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function yg(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=vg(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function bg(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function xg(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return hg({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:bg(t)}})}function Sg(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return gg({pages:[xg(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(e=>!!(i.records.some(t=>t.info.id===e.id)||!r.has(e.id))),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=xg(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(wg(i,o,s,a)),_.push(e.pageParams[r]??null)}return gg({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?wg(t,r===`reconcile-page`?Cg(i,p):[...i,...p],s,a):wg(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=hg({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return gg({pages:m,pageParams:[...e.pageParams]})}function Cg(e,t){let n=e.slice();for(let e of t){let t=sl(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ol(t,sl(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function wg(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&Tg(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||Dg(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:hg({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:bg(t)}})}function Tg(e,t){return e===t||e.id===t.id&&e===t}function Eg(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function Dg(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Eg(e[n],t[n]))return!1;return!0}function Og(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function kg(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.assistantMessageID==`string`)return t.assistantMessageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function Ag(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=Sg(e??mg(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&Dg(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return gg({pages:e.pages.map((t,n)=>wg(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function jg(e,t){let n=yg(e,t),r=vg(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function Mg(e,t,n,r){if(!ju(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jg(e,t),o=Sc(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=kg(n),c=new Set;return s&&c.add(s),{data:Ag(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function Ng(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Pg(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Fg(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=jg(e,t),o=!1,s=0,c,l=new Set,u=Ng(e),d=Pg(e),f=i.message[t]??[],p=new Map,m=new Map,h=[],g=e=>{if(p.clear(),m.clear(),h=[],e)for(let t=0;t<e.length;t+=1){let n=e[t];n?.id&&(p.set(n.id,n),m.set(n.id,t),h.push(n.id))}};g(f);let _=h.slice();for(let e of n){if(!ju(e.type))continue;o=!0;let n=Sc(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let v=i.message[t]??[];v!==f&&(f=v,g(v));let y=kg(e),b=h.length!==_.length||h.some((e,t)=>e!==_[t]),x=b;if(y){let e=i.part[y],t=u.get(y);e&&t&&Dg(t,e)?i.part[y]=[...t]:e?(x=!0,u.set(y,e)):t&&(x=!0,u.delete(y));let n=p.get(y),r=d.get(y);if(!(n&&r&&r===n))if(n&&r&&Tg(r,n)){let e=m.get(y);e!==void 0&&f[e]&&(f[e]=r,p.set(y,r))}else n?(x=!0,d.set(y,n)):r&&(x=!0,d.delete(y))}else x=!0;if(b){_=h.slice();for(let e of f)e?.id&&!d.has(e.id)&&d.set(e.id,e)}x&&(s+=1,y&&l.add(y))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:Ag(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Ig(e,t,n,r,i){let a=e&&e.pages.length>0?e:gg({pages:[xg(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=yg(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:Og(r)};return{data:gg({pages:a.pages.map((e,t)=>t===a.pages.length-1?wg(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?wg(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Lg(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:gg({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return wg(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Rg(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=yg(e,t),i=$l({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:vg(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=gg({pages:[xg(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:vg(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=gg({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?wg(t,Cg(r,l),o,a):wg(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:vg(u)}}}function zg(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=mu(yg(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:Sg(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Mg(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Fg(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ig(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Lg(e,n.messageID,t)}case`durable-seed`:return Rg(e,t,n);case`reset`:return n.page?zg(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Bg(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Vg(e,t,n,r=`materialize`){return zg(e,n,{type:`http-page`,purpose:r,page:Bg(t),liveRevision:t.sync.liveRevision}).data}function Hg(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return gg(t);if(t.pages.length===e.pages.length){let r=Kg(e,t);if(r===e)return e;if(Gg(e,t)||Wg(e,t))return r;let i=t.pages[t.pages.length-1];return Vg(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return zg(e,n,{type:`http-page`,purpose:`prepend`,page:Bg(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Vg(e,r,n)??gg(t)}return gg(t)}function Ug(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Wg(e,t){let n=Ug(e),r=Ug(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=qg(e,``),a=qg(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Gg(e,t){let n=Ug(e);if(n.size===0)return!1;let r=Ug(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=qg(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||ol(sl(t),sl(n))>0)return!1}return!0}function Kg(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,hg(t))});return!n&&e.pageParams.length===t.pageParams.length?e:gg({pages:r,pageParams:[...t.pageParams]})}function qg(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:vg(e),liveRevision:a}}var Jg=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Yg=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Xg=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Zg=e=>e.trim(),Qg=e=>e?.trim()||`tail`,$g=new Set([502,503,504]),e_=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function t_(e){if(!e||e instanceof Jg||e instanceof Yg)return!1;if(e instanceof Xg)return e.status>=400&&e.status<500?!1:$g.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if($g.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if($g.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:e_.some(e=>n.includes(e))}function n_(e,t){return e>=2?!1:t_(t)}var r_=(e,t=u(),n=f())=>[t,n,`sessionMessages`,`page`,Zg(e.directory),e.sessionID,e.limit,Qg(e.before)],i_=(e,t=u(),n=f())=>[t,n,`session-transcript`,Zg(e.directory),e.sessionID];function a_(e){if(!e||typeof e!=`object`)throw new Yg(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Yg(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Yg(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Yg(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Yg(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Yg(`session message page: cursor must be string when set`);return e}var o_=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},s_=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw new Jg},c_=(e,t,n=u(),r={},i=(r.getGeneration??f)())=>{let a=Zg(e.directory),o=e.sessionID,s=e.limit,c=e.before?.trim()||void 0;return{queryKey:r_({directory:a,sessionID:o,limit:s,before:c},n,i),queryFn:async({signal:e})=>{s_(n,i,r);let l=await t({directory:a,sessionID:o,limit:s,before:c,signal:e});return s_(n,i,r),o_(a_(l))},staleTime:1/0,gcTime:3e5,retry:n_,retryDelay:e=>Math.min(500*2**e,4e3)}},l_=(e,t,n=R,r=u(),i={},a=(i.getGeneration??f)())=>n.fetchQuery(c_(e,t,r,i,a));function u_(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function d_(e){return o_({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function f_(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function p_(e){let t=Zg(e.directory),n=e.sessionID,r=e.transport??u(),i=e.probe??{},a=e.generation??(i.getGeneration??f)(),o=e.initialLimit??sg(),s=e.historyLimit??cg(),c=e.client??R,l=i_({directory:t,sessionID:n},r,a),d=async t=>d_(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:l,queryFn:async e=>{s_(r,a,i);let l=e.pageParam?.trim()||void 0,u=l?s:o,f=l?`prepend`:`initial`,p=await l_({directory:t,sessionID:n,limit:u,before:l},d,c,r,i,a);s_(r,a,i);let m=u_(p);return _g(m,f===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:f_,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:n_,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Hg(e,t,n)}}function m_(e){let t=e.client??R,n=p_({...e,client:t}),r=new kt(t,{...n,structuralSharing:(t,n)=>Hg(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return gg(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return gg(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:gg(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return gg(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:gg(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function h_(e,t,n,r){let i=e.getQueryData(t),a=zg(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function g_(e,t=R,n=u(),r=f()){return t.getQueryData(i_(e,n,r))}function __(){return Se()||$h()}function v_(){return Se()?4:$h()?12:40}var y_=1048576,b_=4*y_,x_=12*y_,S_=40*y_;function C_(){return Se()?b_:$h()?x_:S_}var w_=e=>e.trim();function T_(e){return{transport:e.transport,generation:e.generation,directory:w_(e.directory),sessionID:e.sessionID}}function E_(e){let t=T_(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function D_(e){return`${e.transport}\n${e.generation}\n${w_(e.directory)}`}var O_={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function k_(e,t,n){return[t,n,O_.taskRoot,O_.reconcileTaskKind,w_(e.directory),e.sessionID,e.checkpoint]}function A_(e,t,n){return[t,n,O_.checkpoint,w_(e.directory),e.sessionID]}function j_(e){let t=T_(e);return[{queryKey:i_({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,O_.transportPageRoot,O_.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,O_.taskRoot,O_.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,O_.taskRoot,O_.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:A_({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function M_(){let e=new Map;return{retain(t){let n=T_(t),r=E_(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(E_(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(E_(t))?.count??0},clear(){e.clear()}}}function N_(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var P_=3e4;function F_(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function I_(e){return!Array.isArray(e)||e.length<5||e[2]!==O_.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function L_(e){let t=e.client,n=e.activeRegistry??M_(),r=e.counters??N_(),i=e.getLimit??v_,a=e.now??Date.now,o=e.minResidencyMs??P_,s=new Map,c=new Map,l=e=>{let t=T_(e),n=E_(t),r=c.get(t.sessionID);r||(r=new Map,c.set(t.sessionID,r)),r.set(n,t)},u=e=>{let t=T_(e),n=E_(t),r=c.get(t.sessionID);r&&(r.delete(n),r.size===0&&c.delete(t.sessionID))},d=(e,t)=>{for(let[n,r]of c){for(let[n,i]of r)i.transport===e&&i.generation===t&&r.delete(n);r.size===0&&c.delete(n)}let n=`${e}\n${t}\n`;for(let e of s.keys())e.startsWith(n)&&s.delete(e)};for(let e of t.getQueryCache().getAll()){let t=I_(e.queryKey);t&&l(t)}let f=t.getQueryCache().subscribe(e=>{if(e.type===`added`||e.type===`updated`){let t=I_(e.query.queryKey);t&&l(t);return}if(e.type===`removed`){let t=I_(e.query.queryKey);t&&u(t)}}),p=e=>{let t=E_(T_(e));s.set(t,a())},m=e=>{let t=E_(T_(e)),n=s.get(t);return n!==void 0&&a()-n<o},h=e=>{let r=T_(e);if(n.isRetained(r))return!0;let i=i_({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},g=e=>{let r=e?.directory===void 0?void 0:w_(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=I_(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:F_(a.state.data)})}return i},_=(e,t)=>{let n=c.get(e);if(!n||n.size===0)return[];let r=t?.directory===void 0?void 0:w_(t.directory),i=[];for(let e of n.values())(t?.transport===void 0||e.transport===t.transport)&&(t?.generation===void 0||e.generation===t.generation)&&(r===void 0||e.directory===r)&&i.push(e);return i},v=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},y=e=>{r.purgeSession+=1;let t=T_(e);s.delete(E_(t)),u(t);for(let t of j_(e))v(t)},b=(e,t)=>{r.purgeGeneration+=1,d(e,t);let n=[[e,t,O_.canonical],[e,t,O_.transportPageRoot,O_.transportPageKind],[e,t,O_.taskRoot],[e,t,O_.checkpoint]];for(let e of n)v({queryKey:e})},x=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>E_(T_(e)))),o=g({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=D_(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let e of c.values()){for(let t of e){let e=E_(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(E_(e.scope))||m(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,u=0;for(;c>t&&u<i.length&&!(c-1<o);){let e=i[u];u+=1,y(e.scope),l.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:l}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:h,listCanonical:g,listCanonicalScopesForSession:_,purgeSession:y,purgeGeneration:b,enforce:x,destructiveReset:async(e,t)=>{r.destructiveReset+=1,y(e);try{let n=await t();return x({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw y(e),t}},noteScopeObserved:p,dispose:()=>{f(),c.clear(),s.clear()}}}var R_=new Map,z_=new Set;function B_(e,t){return`${e}\n${t}`}function V_(){for(let e of z_)e()}function H_(e,t){if(!e||!t)return;let n=B_(e,t),r=R_.get(n)??0;R_.set(n,r+1),r===0&&V_()}function U_(e,t){if(!e||!t)return;let n=B_(e,t),r=R_.get(n);if(r){if(r<=1){R_.delete(n),V_();return}R_.set(n,r-1)}}function W_(e,t){if(!e)return!1;if(t)return R_.has(B_(t,e));let n=`\n${e}`;for(let e of R_.keys())if(e.endsWith(n))return!0;return!1}function G_(e){return z_.add(e),()=>{z_.delete(e)}}var K_=3e4;async function q_(e,t=K_){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var J_=3e4,Y_=2,X_=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Z_=e=>e?e.toLowerCase().includes(`text/html`):!1,Q_=e=>new Promise(t=>{setTimeout(t,e)});function $_(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Yg(`session transcript reconcile: ${t} must be string or null`);return e}function ev(e){if(!e||typeof e!=`object`)throw new Yg(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Yg(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Yg(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Yg(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Yg(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Yg(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Yg(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=$_(t.capturedHeadMessageID,`capturedHeadMessageID`),r=$_(t.latestHeadMessageID,`latestHeadMessageID`),i=$_(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Yg(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Yg(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Yg(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Yg(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Yg(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Yg(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Yg(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Yg(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function tv(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Yg(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function nv(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),q_((async()=>{let t;try{t=await _(r,{method:`GET`,query:i,signal:X_(e.signal,n)})}catch(e){throw e instanceof Jg||e instanceof Yg||e instanceof Xg||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Xg(t.status,`session transcript reconcile failed (${t.status})`);if(Z_(t.headers.get(`content-type`)))throw new Yg(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Yg(`session transcript reconcile: malformed JSON`)}return ev(a)})(),n)}async function rv(e){let t=tv(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:J_,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Y_,i=e.sleep??Q_,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await nv(e,t,n)}catch(t){if(t instanceof Jg||t instanceof Yg||t instanceof Xg&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!t_(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var iv=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),av=e=>e.filter(iv),ov=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},sv=e=>{if(e.type!==`text`)return!1;let t=ov(e);return!t||t.trim().length===0},cv=(e,t={})=>{let{includeReasoning:n=!0}=t,r=av(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&ov(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},lv=`GitHub issue context (JSON)`,uv=`GitHub pull request context (JSON)`,dv=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,fv=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},pv=e=>{let t=fv(e,lv);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!dv(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=fv(e,uv);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!dv(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},mv=e=>!!e.trim().startsWith(`The following tool was executed by the user`),hv=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),gv=e=>e.trim()===`/compact`,_v=e=>e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(hv(t)||gv(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return mv(t)||n.startsWith(lv)||n.startsWith(uv)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=pv(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e}),vv=e=>e.some(e=>{if(e.type===`text`)return!sv(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!ht(e)}return!0}),yv=e=>e?.length?vv(_v(e)):!1,bv=`oc_asst_session_divider:`,xv=[],Sv=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),Cv=(e,t=0)=>({info:{id:`${bv}${e}`,role:`system`,time:{created:t}},parts:[]}),wv=e=>!!(e?.info&&typeof e.info==`object`&&e.info.openchamberAssistantAdmission),Tv=(e,t,n=xv)=>{if(!e.length)return xv;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(Cv(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?xv:Av(n,r)?n:r},Ev=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},Dv=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=Ev(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return yv(e.parts)?e:yv(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},Ov=(e,t,n,r=xv)=>{if(!t)return n.length>0?Array.from(n):xv;let i=new Map,a=0;for(let n of e)n.sessionID===t&&(wv(n)||i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++}));for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:Dv(e,t?.message),order:t?.order??a++})}if(i.size===0)return xv;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return Av(r,o)?r:o},kv=(e,t)=>{if(!Sv(e)||!Sv(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},Av=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||kv(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},jv=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),Mv=e=>e.startsWith(bv);function Nv(e,t){if(!e?.id||Mv(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(jv(t,`subtask`)||jv(t,`compaction`)||t.every(e=>$m(e))):!1}function Pv(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(Nv(r,i))return n}return null}function Fv(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function Iv(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:Pv(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:Fv(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function Lv(e,t){return{...e,...t}}function Rv(e,t){let n=A_({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function zv(e,t){let n=A_({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function Bv(e,t){let n=A_({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function Vv(e){return e.slim===!0}var Hv=/bearer|token|authorization|password|secret|cookie/i,Uv=new Set([`message.part.delta`]);function Wv(e){return typeof e==`string`&&e.includes(`-`)}var Gv=`openchamber.client-diagnostics.enabled`;function Kv(e){return e===`true`||e!==`false`&&null}function qv(e){return e.preference===!0||e.preference!==!1&&Wv(e.version)}function Jv(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function Yv(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function Xv(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function Zv(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return Hv.test(t)?`redacted-error`:t}function Qv(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)Vv(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function $v(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function ey(e){let t=0;for(let n of e.messageOrder)my(e.messagesByID[n])===!0&&(t+=1);return t}function ty(e){let t=e.transcript?Qv(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:$v(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:ey(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...Zv(e.error??e.request?.error)?{error:Zv(e.error??e.request?.error)}:{},...Xv(e.error)===void 0?{}:{httpStatus:Xv(e.error)}}}function ny(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function ry(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function iy(e){return typeof e==`string`&&Uv.has(e)}function ay(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return iy(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>iy(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function oy(e){if(e.type===`http-page`)return e.purpose}function sy(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function cy(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function ly(e){return e.__openchamberOptimistic===!0}function uy(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
401
- `).trim();if(n)return Hv.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function dy(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function fy(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var py=e=>typeof e==`string`&&e.trim().length>0;function my(e){if(!e||dy(e)!==`assistant`)return;let t=e,n=!py(t.mode)&&!py(t.agent),r=!py(t.modelID)||!py(t.providerID);return n||r}function hy(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function gy(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)Vv(e)?r+=1:i+=1,ly(e)&&(a=!0);let o=e.messagesByID[t],s=dy(o),c=my(o),l=s===`user`?uy(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:fy(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function _y(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:hy(e),after:hy(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function vy(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:_y(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function yy(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function by(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function xy(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Sy(e){let t=xy(e.partID),n=xy(e.messageID),r=xy(e.directory),i=xy(e.childSessionID),a=xy(e.toolStatus),o=xy(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function Cy(e){return[e.sessionID,xy(e.partID)??``,e.childSessionPresent?`1`:`0`,xy(e.childSessionID)??``,xy(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,xy(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function wy(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...Sy(e)}}function Ty(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:by(e),...Sy(e)}}var Ey=`openchamber-transcript-diagnostics`,Dy=`events`,Oy=1,ky=(e,t)=>{try{return e.error??Error(t)}catch{return Error(t)}},Ay=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>{try{r(e.error??t?.error??Error(`IndexedDB request failed`))}catch{r(t?.error??Error(`IndexedDB request failed`))}}}),jy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,Oy),i=!1,a=()=>{i||(i=!0,n(ky(r,`IndexedDB open failed`)))};r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Dy)||e.createObjectStore(Dy,{autoIncrement:!0})},r.onsuccess=()=>{let e=r.result;if(i){try{e.close()}catch{}return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),My=(e=Ey)=>{let t=null,n=null,r=Promise.resolve(),i=[],a=500,o=0,s=null,c=[],l=()=>{let e=t;if(t=null,n=null,e)try{e.onversionchange=null,e.onclose=null,e.close()}catch{}},u=e=>(e.onversionchange=()=>{l()},e.onclose=()=>{t===e&&(t=null,n=null)},t=e,e),d=()=>t?Promise.resolve(t):n||(n=jy(e).then(e=>(n=null,u(e))).catch(e=>{throw n=null,e}),n),f=e=>{let t=r.then(e,e);return r=t.then(()=>void 0,()=>void 0),t},p=async(e,t)=>{let n=await d(),r;try{r=n.transaction(Dy,e)}catch(e){throw l(),e}let i=r.objectStore(Dy),a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{}}),o;try{let e=await t(i);return await a,e}catch(e){o=e;try{r.abort()}catch{}try{await a}catch(e){o===void 0&&(o=e)}throw l(),o}},m=e=>{for(let t of e)t.resolve()},h=(e,t)=>{for(let n of e)n.reject(t)},g=e=>{if(i.length<=e)return;let t=i.splice(0,i.length-e);m(t)},_=async(e,t)=>{e.length!==0&&await p(`readwrite`,async n=>{for(let t of e)await Ay(n.add(t),n.transaction);let r=await Ay(n.getAllKeys(),n.transaction),i=r.length-t;if(i>0)for(let e of r.slice(0,i))await Ay(n.delete(e),n.transaction)})},v=()=>c.length===0?1/0:Math.min(...c),y=async()=>{if(i.length===0)return!1;let e=v(),t=i.filter(t=>t.seq<=e);if(t.length===0)return!1;i=i.filter(t=>t.seq>e);let n=a;try{return await _(t.map(e=>e.event),n),m(t),!0}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},b=async e=>{if(i.length===0)return;let t=i.filter(t=>t.seq<=e);if(t.length===0)return;i=i.filter(t=>t.seq>e);let n=a;try{await _(t.map(e=>e.event),n),m(t)}catch(e){throw i=t.map(e=>({seq:e.seq,event:e.event,resolve:()=>{},reject:()=>{}})).concat(i),g(n),h(t,e),e}},x=()=>{s||=f(async()=>{let e=!1;try{e=await y()}finally{s=null}e&&i.length>0&&x()}).then(()=>void 0,()=>{s=null})};return{append(e,t){return a=t,new Promise((n,r)=>{i.push({seq:++o,event:e,resolve:n,reject:r}),g(t),x()})},read(){let e=o;return c.push(e),f(async()=>{try{return await b(e),await p(`readonly`,e=>Ay(e.getAll(),e.transaction))}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})},clear(){let e=o;return c.push(e),f(async()=>{try{let t=[],n=[];for(let r of i)r.seq<=e?n.push(r):t.push(r);i=t,m(n),await p(`readwrite`,async e=>{await Ay(e.clear(),e.transaction)})}finally{c=c.filter(t=>t!==e),i.length>0&&x()}})}}};function Ny(e={}){let t=e.driver??My(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var Py=Tt(`OpenChamberMedia`);function Fy(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Iy(){return dt()&&Et!==void 0&&Et.isPluginAvailable(`OpenChamberMedia`)}function Ly(){return`2.0.0-beta.1`}function Ry(){if(typeof localStorage>`u`)return null;try{return Kv(localStorage.getItem(Gv))}catch{return null}}function zy(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Gv,e?`true`:`false`)}catch{}}function By(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Vy;function Hy(e=Ly()){return qv({version:e,preference:Ry()})}function Uy(e={}){return ry({sink:By()===`indexeddb`?(e.createIndexedDBSink??Ny)():(e.createMemorySink??ny)(),isEnabled:e.isEnabled??Hy})}function Wy(){return Vy??=Uy(),Vy}function Gy(e){Wy().record(e)}function Ky(e){try{return Hy()?gy(e()):void 0}catch{return}}function qy(e){try{Gy(vy(e))}catch{}}function Jy(e){try{Gy(wy(e))}catch{}}function Yy(e){try{Gy(Ty(e))}catch{}}function Xy(e){if(e!==void 0)return typeof e==`function`?e():e}function Zy(e){return!ay(e.command)||e.changed===!1&&(e.command.type===`sse-event`||e.command.type===`sse-event-batch`)?!1:(e.isEnabled??(()=>Wy().isEnabled()))()}function Qy(e){if(!Zy(e))return;let t=ay(e.command);t&&Gy(ty({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:Xy(e.transcript),request:Xy(e.request),hydration:Xy(e.hydration),command:e.command.type,purpose:oy(e.command),sseType:sy(e.command),source:cy(e.command),error:e.error}))}async function $y(){let e=await Wy().exportReport(),t=b()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function eb(e,t=Jv()){if(Iy())return(await Py.saveFile({dataBase64:Fy(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function tb(){let e=await $y(),t=Jv();return{content:e,fileName:t,outcome:await eb(e,t),eventCount:Yv(e)}}function nb(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var rb=2,ib=6e4,ab=6e4;function ob(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??u)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??f)()}}function sb(e,t){let n=(t.probe?.getTransport??u)(),r=(t.probe?.getGeneration??f)();if(n!==e.transport||r!==e.generation)throw new Jg}function cb(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function lb(e,t){return T_({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function ub(e,t){return`${e.trim()}\n${t}`}function db(e){let t=e.client,n=e.repository,r=e.cacheBudget??n.getCacheBudget?.()??L_({client:t,activeRegistry:M_()}),i=Math.max(1,Math.floor(e.directoryConcurrency??rb)),a=e.fetchReconcile??rv,o=e.now??Date.now,s=Math.max(0,e.destructiveResetDedupeMs??ib),c=!1,l=0,d=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set,y=new Map,b=(e,t)=>{g.add(ub(e,t))},x=(e,t)=>{g.delete(ub(e,t))},S=e=>{let t=p.get(e);t&&(t.abort(),p.delete(e)),d.delete(e)},C=e=>{l+=1;for(let e of[...p.keys()])S(e);m.clear(),h.clear(),y.clear()},w=(e,t)=>{let n=t===void 0?void 0:t.trim(),i=new Map;for(let t of r.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&i.set(ub(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of r.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&i.set(ub(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(i.values())},T=(t,n)=>{let i=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of r.listCanonical({transport:t.transport,generation:t.generation}))i.add(e.scope.directory);for(let e of r.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&i.add(e.directory);for(let e of n)e.directory&&i.add(e.directory.trim());return i},E=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=ub(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},D=i=>{if(c)return;let a={transport:i.transport??ob(e).transport,generation:i.generation??ob(e).generation},s=o(),l=E(),u=T(a,l),d=r.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(ub(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of r.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(ub(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of l)f.set(ub(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(ub(t,n),{directory:t,sessionID:n});for(let e of f.values()){let r=cb(e,a),o=n.getTranscript(r),c=Iv({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:o,lastEventID:i.lastEventID,capturedAt:s});zv(t,c)}let p=new Set;for(let t of u){let n=nb({directory:t,activeScopes:w(a,t),viewedSessions:l,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(ub(e.directory,e.sessionID))}for(let e of d){let t=ub(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&b(e.scope.directory,e.scope.sessionID)}},O=(e,t,r)=>{let i=Ky(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Ky(()=>n.getTranscript(e));i&&t&&qy({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},k=e=>{let t=n.getTranscript(e),r=t.messageOrder[t.messageOrder.length-1];if(!r)return!1;let i=t.messagesByID[r];return!i||i.role!==`assistant`?!1:Bc(i)},A=async(r,i,a)=>{if(sb({transport:i.transport,generation:i.generation},e),a!==l)throw new Jg;zv(t,Lv(Rv(t,i)??Iv({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let s=Ky(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),sb({transport:i.transport,generation:i.generation},e),a!==l)throw new Jg;Bv(t,i),x(i.directory,i.sessionID),y.set(ub(i.directory,i.sessionID),o());try{let e=Ky(()=>n.getTranscript(r));s&&e&&qy({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:s,after:e})}catch{}}catch(e){throw zv(t,Lv(Rv(t,i)??Iv({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},j=async(r,i,a)=>{if(sb({transport:i.transport,generation:i.generation},e),a!==l)throw new Jg;zv(t,Lv(Rv(t,i)??Iv({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Ky(()=>n.getTranscript(r));try{if(typeof n.refreshFromAuthority!=`function`)throw Error(`reconnect alignment requires refreshFromAuthority`);if(await n.refreshFromAuthority(r),sb({transport:i.transport,generation:i.generation},e),a!==l)throw new Jg;Bv(t,i),x(i.directory,i.sessionID);try{let e=Ky(()=>n.getTranscript(r));o&&e&&qy({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw zv(t,Lv(Rv(t,i)??Iv({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},ee=async(r,i,c,u)=>{let d=cb(r,i),f=lb(r,i),p=k_({directory:f.directory,sessionID:f.sessionID,checkpoint:String(Rv(t,f)?.capturedAt??o())},f.transport,f.generation);t.setQueryData(p,{status:`running`,startedAt:o()});try{if(sb(i,e),c!==l||u.aborted)throw new Jg;let m=Rv(t,f);if(m||(m=Iv({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(d),lastEventID:null,capturedAt:o()}),zv(t,m)),!m.anchorMessageID){if(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}m=Lv(m,{state:`reconciling`}),zv(t,m);let h=m.anchorMessageID,g=0;for(;g<32;){if(g+=1,sb(i,e),c!==l||u.aborted)throw new Jg;let _=null,v=null,b=null,S=0;for(;;){if(S+=1,sb(i,e),c!==l||u.aborted)throw new Jg;let g=n.getTranscript(d).liveRevision;if(!_&&!h){await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()});return}let x=await a({sessionID:r.sessionID,directory:r.directory.trim(),..._?{continuation:_}:{anchor:h},signal:u});if(sb(i,e),c!==l||u.aborted)throw new Jg;if(x.resetRequired){let n=y.get(ub(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}if(S===1&&(v=x.capturedHeadMessageID),b=x.latestHeadMessageID??b,x.records.length>0&&O(d,x,g),m=Lv(Rv(t,f)??m,{state:`reconciling`,capturedHeadMessageID:v,latestHeadMessageID:b,continuation:x.continuation}),zv(t,m),x.complete||!x.continuation)break;_=x.continuation}let C=v,w=b;if(C&&w&&w!==C){h=C,m=Lv(Rv(t,f)??m,{state:`reconciling`,anchorMessageID:C,continuation:null,capturedHeadMessageID:null}),zv(t,m);continue}if(m=Lv(Rv(t,f)??m,{state:`complete`,continuation:null,capturedHeadMessageID:C,latestHeadMessageID:w}),zv(t,m),x(r.directory,r.sessionID),t.setQueryData(p,{status:`complete`,finishedAt:o()}),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}return}{let n=y.get(ub(r.directory,r.sessionID))??-1/0;if(o()-n<s?(await j(d,f,c),t.setQueryData(p,{status:`ensure`,finishedAt:o()})):(await A(d,f,c),t.setQueryData(p,{status:`reset`,finishedAt:o()})),e.confirmSessionStatus)try{await e.confirmSessionStatus(r,{tailOpen:k(d)})}catch{}}}catch(n){if(n instanceof Jg||n instanceof Error&&n.name===`AbortError`){t.setQueryData(p,{status:`cancelled`,finishedAt:o()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(p,{status:`error`,finishedAt:o(),code:n instanceof Error?n.name:`error`}),n}},te=t=>{let n=t.trim(),r=h.get(n)??0;if(r>=i)return;let a=m.get(n);if(!a||a.length===0)return;let o=a.shift();h.set(n,r+1);let s=ub(o.directory,o.sessionID);if(d.has(s)){h.set(n,(h.get(n)??1)-1),te(n);return}let c=ob(e),u=l,f=new AbortController;p.set(s,f);let g=(async()=>{H_(n,o.sessionID);try{await ee(o,c,u,f.signal)}catch{}finally{U_(n,o.sessionID),p.delete(s),d.delete(s),h.set(n,Math.max(0,(h.get(n)??1)-1)),te(n)}})();d.set(s,g)},ne=e=>{let t=e.directory.trim(),n=ub(t,e.sessionID);if(d.has(n))return;let r=m.get(t);r||(r=[],m.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),te(t))},re=t=>{let n=E(),i=T(t,n);for(let a of i){let i=nb({directory:a,activeScopes:w(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of i)ne(e);for(let e of r.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=ub(e.scope.directory,e.scope.sessionID);i.some(e=>ub(e.directory,e.sessionID)===t)||b(e.scope.directory,e.scope.sessionID)}}},ie=t=>{if(c||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??u)(),generation:t.runtimeGeneration},r=(e.probe?.getGeneration??f)(),i=(e.probe?.getTransport??u)();if(r!==n.generation||i!==n.transport){C(`generation_mismatch`);return}re(n)},ae=t=>{if(c)return;let r=t.directory.trim(),i=ob(e,t),s=cb({directory:r,sessionID:t.sessionID},i),l=E_(lb({directory:r,sessionID:t.sessionID},i)),u=_.get(l);if(u&&o()-u.checkedAt<ab||v.has(l)||d.has(ub(r,t.sessionID))||!n.hasSession?.(s))return;let f=n.getTranscript(s),p=f.messageOrder[f.messageOrder.length-1];p&&(v.add(l),(async()=>{try{if(sb(i,e),c)return;let u=await a({sessionID:t.sessionID,directory:r,anchor:p});if(sb(i,e),c||(_.set(l,{checkedAt:o()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(s).liveRevision;O(s,u,d)}catch{}finally{v.delete(l)}})())};return{captureCheckpoints:D,onCompensation:ie,ensureOnObserve:async r=>{if(c)return null;let i=r.directory.trim(),a=ub(i,r.sessionID);if(!g.has(a))return ae(r),null;x(i,r.sessionID);let o=ob(e,r),s=cb({directory:i,sessionID:r.sessionID},o),l=lb({directory:i,sessionID:r.sessionID},o),u=Rv(t,l);if(u&&u.state!==`complete`&&u.anchorMessageID){ne({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{if(sb(o,e),typeof n.refreshFromAuthority!=`function`)throw Error(`reconnect alignment requires refreshFromAuthority`);H_(i,r.sessionID);try{let e=await n.refreshFromAuthority(s);return Bv(t,l),e}finally{U_(i,r.sessionID)}}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:C,getCheckpoint:n=>{let r=ob(e,n);return Rv(t,lb({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(ub(e,t)),destroy:()=>{c=!0,C(`destroy`)}}}var fb=e=>e.trim(),pb=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session status runtime changed`)},mb=(e,t={})=>{let n=fb(e),r=t.transport??u(),i=t.loadSnapshot??((e,t)=>B.getSessionStatusForDirectory(e,t)),a=t.now??Date.now,o=t.runtimeProbe??{},s=(o.getGeneration??f)();return Nt({queryKey:P.sessionStatus.snapshot(n,r),queryFn:async({signal:e})=>{pb(r,s,o);let t=a(),c=await i(n,e);if(pb(r,s,o),c===null)throw Error(`session status snapshot unavailable`);return{snapshot:c,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},hb=(e,t={})=>{let{client:n=R,...r}=t;return n.fetchQuery(mb(e,r))},gb=(e,t,n)=>{let r=(n.getTransport??u)(),i=(n.getGeneration??f)();if(r!==e||i!==t)throw Error(`session active runtime changed`)},_b=(e={})=>{let t=e.transport??u(),n=e.loadActive??(e=>B.getSessionActive(e)),r=e.now??Date.now,i=e.runtimeProbe??{},a=(i.getGeneration??f)();return Nt({queryKey:P.sessionActive.snapshot(t,a),queryFn:async({signal:e})=>{gb(t,a,i);let o=r(),s=await n(e);return gb(t,a,i),{result:s,requestedAt:o}},staleTime:0,gcTime:3e5,retry:!1})},vb=(e={})=>{let{client:t=R,...n}=e;return t.fetchQuery(_b(n))},yb;function bb(e){yb=e}function xb(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function Sb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Cb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function wb(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>{let r={...e.session_error_at};return delete r[t],{session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n},session_error_at:r}}),!0)}function Tb(e,t,n,r=Date.now(),i){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let a=e.membership,o=t??{},s=new Set([...n,...Object.keys(o)]);if(s.size===0)return{snapshot:null,source:`none`};let c={};for(let e of s){let t=Object.prototype.hasOwnProperty.call(a,e),n=xb(o[e]);if(t){c[e]=n&&Cb(n,r)?n:{type:`busy`};continue}if(i?.tailOpenSessionIds?.has(e)){c[e]=n?.type===`retry`?n:{type:`busy`};continue}c[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:c,source:`fused`}}function Eb(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c,l=()=>o??={...a},u=()=>s??={...e.session_status_observed_at},d=()=>c??={...e.session_error_at},f=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(u()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=xb(t[o]);if(n&&n.type!==`idle`){Sb(a[o],n)||(l()[o]=n,i=!0),(n.type===`busy`||n.type===`retry`)&&e.session_error_at?.[o]!==void 0&&(delete d()[o],i=!0),f(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(l()[o]={type:`idle`},i=!0),f(o)}return!o&&!s&&!c?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{},...c?{session_error_at:c}:{}}}),i}function Db(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Ob(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await hb(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await vb({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=Tb(l,h,n,Date.now(),{tailOpenSessionIds:r.tailOpenSessionIds});if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=Db(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Eb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??yb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function kb({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Ob(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}function Ab(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function jb(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Mb(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function Nb(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(rl(e))??Promise.resolve(),r.get(al(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=rl(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=al(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??C_)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Pb=new Map;function Fb(e,t){let n=Pb.get(e);if(n)return n;let r=t().finally(()=>{Pb.get(e)===r&&Pb.delete(e)});return Pb.set(e,r),r}var Ib=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Lb(e){return Fb(Ib(e),e.request)}function Rb(e,t){return`${e}\n${t}`}var zb=new Map;function Bb(e){return zb.get(e)}async function Vb(e){return Lb({runtimeKey:Rb(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return zb.set(r.id,i),{info:cm(r),parts:i}}})}function Hb(e,t){let n=e.info;return n.role===t||n.clientRole===t}function Ub(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!Hb(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function Wb(e){if(e.complete){let t=e.records.some(e=>Hb(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=Ub(e.records);if(t.length===0){let t=e.records.some(e=>Hb(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>Hb(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function Gb(e){return e.trim()}function Kb(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??u)(),r=e.generation??t.generation??(t.probe?.getGeneration??f)();return{directory:Gb(e.directory),sessionID:e.sessionID,transport:n,generation:r}}function q(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function qb(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:au,liveRevision:0}}function Jb(e,t){if(!e||e.pages.length===0)return qb(t);let n=qg(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function Yb(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function Xb(e,t,n){let r=new Set,i=new Set([...Object.keys(e),...Object.keys(t),...n.messageOrder,...Object.keys(n.messagesByID),...Object.keys(n.partsByMessageID)]);for(let a of i)e[a]!==n.messagesByID[a]&&r.add(a),t[a]!==n.partsByMessageID[a]&&r.add(a);for(let e of n.messageOrder)Yb(n.partsByMessageID[e])&&r.add(e);return r}function Zb(e){let t=[];for(let n of e.messageOrder){let r=e.messagesByID[n];r?.id&&t.push({info:r,parts:[...e.partsByMessageID[n]??[]]})}return t}function Qb(e){let t=[];for(let n of e.records)n.info?.id&&t.push({info:n.info,parts:[...n.parts??[]]});return t}function $b(e,t){let n=[];for(let r of e.messageOrder)t.has(r)||Yb(e.partsByMessageID[r])||n.push(r);return n}function ex(e={}){let t=e.client??R,n=e.cacheBudget??L_({client:t,activeRegistry:e.activeRegistry??M_()}),r=n.activeRegistry,i=new Map,a=new Map,o=new Map,s=new Map,c=new Map,p=e.durableStore?Nb(e.durableStore,{getProtectScopes:()=>r.listRetained().map(Ab),getByteBudget:e.getDurableByteBudget}):void 0,m=new Map,h=new Map,g=new Map,_=new Map,v=new Map,y=new Set,b=new Map,x=new Set,S=new Set,C=(e,t)=>{let n=q(t);if(x.has(n))return;let r=ie(e);!wu(r)&&!b.has(n)||(x.add(n),Gy(ty({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},w=0,T=e=>{let t=c.get(e);return t||(t={messages:new Map,parts:new Map},c.set(e,t)),t},E=n=>{let r=Kb(n,e);return g_({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},D=t=>{let n=Kb(t,e);return i_({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},O=t=>{let n=Kb(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},k=e=>{let t=O(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},A=n=>{let r=e.probe??{getTransport:u,getGeneration:f},a=Kb(n,{...e,transport:void 0,generation:void 0,probe:r}),o=q(a),s=i.get(o);if(s)return s;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let c=m_({directory:a.directory,sessionID:a.sessionID,fetcher:e.fetcher,transport:a.transport,generation:a.generation,probe:r,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return i.set(o,c),c},j=t=>{let n=q(Kb(t,e)),r=a.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},ee=n=>{let r=q(Kb(n,e));if(o.has(r))return;let i=D(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&j(n)});o.set(r,a)},te=e=>{let t=a.get(e);if(t&&t.size>0)return;let n=o.get(e);n&&(n(),o.delete(e)),a.delete(e)},ne=(e,t)=>{let n=T(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},re=(e,t)=>{let n=T(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},ie=t=>{let n=Kb(t,e),r=q(n),i=E(t),a=T(r);if(a.hasTranscriptCache&&a.cachedFrom===i&&a.transcript)return a.transcript;a.cachedFrom!==i&&(a.messages.clear(),a.parts.clear(),a.pagination=void 0);let o=Jb(i,n.sessionID),s=ne(r,o);return a.cachedFrom=i,a.hasTranscriptCache=!0,s},ae=(e,t)=>`${q(e)}\n${t}`,M=(e,t)=>{let n=q(e),r=v.get(n);r&&(r.delete(t),r.size===0&&v.delete(n))},oe=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t)},se=e=>{for(let t of g.keys())t.startsWith(e)&&g.delete(t);for(let t of _.keys())t.startsWith(e)&&_.delete(t)},ce=e=>{for(let t of b.keys())(t===e||t.startsWith(e))&&b.delete(t);for(let t of[...x])(t===e||t.startsWith(e))&&x.delete(t);for(let t of S)(t===e||t.startsWith(e))&&S.delete(t)},le=e=>{let t=`${q(e)}\n`;for(let[e,n]of g)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of _.keys())if(e.startsWith(t))return!0;return!1},ue=t=>{let n=Kb({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},de=(e,t,n)=>{p&&d()&&p.persistSettled(Ab(e),t,n??[])},fe=(e,t,n,r)=>{if(!p||w>0||!d()||!r.applied||!r.changed)return;let i=Ab(t);if(n.type===`remove-message`){p.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(p.clearSession(i),n.page){let r=ie(e);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;de(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=ie(e);for(let e of r){let n=Mb(e);if(n.action===`remove`){p.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&de(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=ie(e),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&de(t,n,r.partsByMessageID[e.info.id])}}}},pe=async(n,r)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let i=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},a=e.probe??{getTransport:u,getGeneration:f},o={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??sg()};return jb(r?.fresh?await t.fetchQuery({...c_(o,i,n.transport,a,n.generation),staleTime:0}):await l_(o,i,t,n.transport,a,n.generation))},N=(e,t)=>{for(let n of t)ud(`${e.directory}\n${e.sessionID}\n${n}`,()=>I.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},me=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now();m.set(r,{status:`loading`});try{let i=await pe(t);if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);I.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Yh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let o=v.get(r);if(o&&o.size>0){let n=[],r=0;for(let a of i.records){let i=a.info.id;if(!(!i||!o.has(i))){if(!vu(I.getParts(e,i),I.getMessage(e,i)??a.info)){M(t,i),g.set(ae(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&j(e),N(e,n)}return m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e)}catch(n){if(n instanceof Jg||!ue(t))return m.delete(r),I.getTranscript(e);throw m.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),Gy(ty({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),n}finally{h.delete(r)}})();return h.set(r,o),o},P=(e,t)=>{let r=q(t),i=h.get(r);if(i)return i;let a=l(),o=(async()=>{let i=Date.now(),o=I.getTranscript(e).liveRevision;m.set(r,{status:`loading`});try{let i=await pe(t,{fresh:!0});if(!ue(t)||l()!==a)return m.delete(r),I.getTranscript(e);let s=I.getTranscript(e).liveRevision;return s<o||nd(t.sessionID,t.directory)?(m.delete(r),I.getTranscript(e)):(I.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:o,liveRevision:s}),Yh(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),m.delete(r),n.noteScopeObserved(O(e)),k(e),I.getTranscript(e))}catch(n){return m.delete(r),n instanceof Jg||!ue(t)||Gy(ty({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:ie(e),request:I.getRequestState?.(e),hydration:I.getHydrationState?.(e),error:n})),I.getTranscript(e)}finally{h.delete(r)}})();return h.set(r,o),o},F=t=>{let n=E(t);return!n||n.pages.length===0||y.has(q(Kb(t,e)))?!0:vg(n).kind===`unknown`},I={getTranscript(e){return ie(e)},getPagination(t){let n=Kb(t,e),r=q(n),i=I.getTranscript(t);return re(r,Ou(n.sessionID,i.boundary))},getRequestState(t){let n=Kb(t,e),r=m.get(q(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let a=i.get(q(n));if(!a){let e=E(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=a.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=Kb(t,e),r=q(n),i=I.getTranscript(t);wu(i)&&b.set(r,!0);let a=b.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Tu({p0Satisfied:a,prependActive:S.has(r),materializeActive:le(n),earlierHistoryLoaded:xu(i)>1})}},hasSession(e){return E(e)!==void 0},getMessage(t,n){let r=q(Kb(t,e)),i=T(r),a=I.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=q(Kb(t,e)),i=T(r),a=I.getTranscript(t).partsByMessageID[n]??tx,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=Kb(t,e),i=g.get(ae(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!I.getMessage(t,n)||v.get(q(r))?.has(n)||_u(I.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=Kb(t,e),i=l(),a=ae(r,n),o=Ky(()=>I.getTranscript(t)),s=e=>{try{let t=Ky(e);if(!o||!t)return;qy({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:o,after:t})}catch{}},c=_.get(a);if(c)return c.then(e=>s(()=>e)).catch(()=>void 0),c;let u=(async()=>{try{if(!I.getMessage(t,n))return g.set(a,{status:`idle`}),I.getTranscript(t);if(!_u(I.getParts(t,n))&&!v.get(q(r))?.has(n))return g.set(a,{status:`ready`}),I.getTranscript(t);g.set(a,{status:`loading`}),j(t);try{let o=await Vb({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}let t=await B.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n}),i=it(r.sessionID,t);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{data:{info:i.info,parts:[...i.parts??[]]}}}});return!ue(r)||l()!==i?(g.delete(a),I.getTranscript(t)):(I.apply(t,{type:`materialize-snapshots`,records:[{info:o.info,parts:o.parts??[]}]}),_u(I.getParts(t,n))?g.set(a,{status:`error`,error:`session.message failed: slim parts remain`}):g.set(a,{status:`ready`}),j(t),I.getTranscript(t))}catch(e){if(!ue(r)||l()!==i)return g.delete(a),I.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return g.set(a,{status:`error`,error:n}),j(t),I.getTranscript(t)}}finally{M(r,n)}})();return _.set(a,u),u.then(e=>s(()=>e)).catch(()=>void 0),u.finally(()=>{_.get(a)===u&&_.delete(a)}),u},apply(r,i){let a=Kb(r,e),o=D(r),s=(()=>{switch(i.type){case`http-page`:{let e=h_(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&y.delete(q(a)),e.result.changed&&(j(r),k(r)),e.result}case`sse-event`:{let e=h_(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`sse-event-batch`:{let e=h_(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&y.delete(q(a)),e.result.changed&&j(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=h_(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&j(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),h_(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=h_(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&j(r),n.result}case`reset`:{if(S.delete(q(a)),v.delete(q(a)),y.delete(q(a)),n.purgeSession(O(r)),!i.page)return j(r),{applied:!0,changed:!0};let e=h_(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(j(r),k(r)),e.result}case`materialize-snapshots`:return nx(t,o,a.sessionID,i,()=>j(r));case`remove-message`:{let e=h_(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&j(r),e.result}default:return{applied:!1,changed:!1}}})();return fe(r,a,i,s),s.applied&&(Qy({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:()=>I.getTranscript(r),request:()=>I.getRequestState?.(r),hydration:()=>I.getHydrationState?.(r),error:s.error,changed:s.changed}),C(r,a)),s},subscribe(t,i){let o=q(Kb(t,e)),c=a.get(o);if(!c){c=new Set,a.set(o,c);let e=O(t);s.set(o,r.retain(e)),n.noteScopeObserved(e)}return c.add(i),ee(t),()=>{let e=a.get(o);if(e){if(e.delete(i),e.size===0){let e=s.get(o);e&&(e(),s.delete(o))}te(o)}}},async ensureInitial(t){let a=Kb(t,e),o=l(),s=q(a);if(p&&await p.wait(Ab(a)),l()!==o)return I.getTranscript(t);if(E(t)===void 0&&e.durableStore&&d())try{let n=await e.durableStore.readSession(Ab(a));if(ue(a)&&l()===o&&E(t)===void 0&&n.records.length>0){w+=1;try{I.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)vu(t.parts,t.info)&&e.add(t.info.id);e.size>0&&v.set(s,e),y.add(s)}finally{--w}}}catch(e){Gy(ty({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(l()!==o)return I.getTranscript(t);if(F(t)&&E(t)!==void 0){let e=Date.now(),n=await me(t,a);return Gy(ty({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let u=E(t);if(u&&u.pages.length>0&&!F(t)&&e.fetcher&&!r.isRetained(O(t))){let e=Date.now(),n=await P(t,a);return Gy(ty({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),n}let f=A(t),h=Date.now(),g=E(t)!==void 0;m.delete(s);try{await f.ensureInitial()}catch(e){if(l()!==o)return I.getTranscript(t);throw Gy(ty({kind:`request-error`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-h,transcript:ie(t),request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t),error:e})),e}if(l()!==o)return i.get(s)===f&&(n.purgeSession(O(t)),c.delete(s),j(t)),I.getTranscript(t);m.delete(s),g||Yh(a.directory,a.sessionID,{transport:a.transport,generation:a.generation}),n.noteScopeObserved(O(t)),k(t);let _=I.getTranscript(t);return Gy(ty({kind:`ensure-initial`,sessionID:a.sessionID,directory:a.directory,transport:a.transport,generation:a.generation,source:g?`query-cache`:`network`,durationMs:Date.now()-h,transcript:_,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),C(t,a),_},async fetchPreviousPage(t){if(F(t)&&await I.ensureInitial(t),vg(E(t)).kind!==`has-more`)return I.getTranscript(t);let n=Kb(t,e),r=q(n);S.add(r),j(t);let i=Date.now();try{await A(t).fetchPreviousPage(),k(t);let e=I.getTranscript(t);return Gy(ty({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:I.getRequestState?.(t),hydration:I.getHydrationState?.(t)})),e}catch(e){throw Gy(ty({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{S.delete(r),j(t)}},getController(t){let n=Kb(t,e);return i.get(q(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=Kb(t,e),i=l(),a=Ky(()=>I.getTranscript(t)),o=I.getTranscript(t),s={...o.messagesByID},c={...o.partsByMessageID},u=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??sg(),signal:new AbortController().signal});if(l()!==i)return I.getTranscript(t);if(!ue(r))return I.getTranscript({directory:r.directory,sessionID:r.sessionID,transport:r.transport,generation:r.generation});let d=I.getTranscript(t),f=Xb(s,c,d),p=ut({fetched:Qb(u),previous:Zb(d),touched:f,completeTail:u.complete===!0}),m=d.liveRevision;I.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:p.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:m,liveRevision:m});let h=new Set(p.map(e=>e.info.id)),g=$b(I.getTranscript(t),h);for(let n of g)I.apply(t,{type:`remove-message`,messageID:n}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:n});let _=I.getTranscript(t);n.noteScopeObserved(O(t)),at(r.sessionID,_.messageOrder);try{let e=Ky(()=>_);a&&e&&qy({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:a,after:e})}catch{}return _},async destructiveReset(t){let r=Ky(()=>I.getTranscript(t)),a=O(t);return p&&await p.clearSession(Ab(Kb(t,e))),n.destructiveReset(a,async()=>{let n=Kb(t,e),a=q(n),o=i.get(a);if(o&&(o.destroy(),i.delete(a)),c.delete(a),ce(a),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await I.ensureInitial(t);try{let e=Ky(()=>s);r&&e&&qy({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=q(Kb(t,e)),a=i.get(r);a&&(a.destroy(),i.delete(r)),c.delete(r),se(`${r}\n`),v.delete(r),ce(r),n.purgeSession(O(t)),j(t)},resetReasoningProjection(){let t=`${(e.probe?.getTransport??u)()}\n${(e.probe?.getGeneration??f)()}\n`,r=new Set;for(let e of i.keys())e.startsWith(t)&&r.add(e);for(let e of c.keys())e.startsWith(t)&&r.add(e);for(let e of a.keys())e.startsWith(t)&&r.add(e);for(let e of r){let t=i.get(e);t&&(t.destroy(),i.delete(e)),c.delete(e);let r=e.split(`
402
- `);if(r.length>=4){let e={transport:r[0],generation:Number(r[1]),directory:r[2],sessionID:r[3]};n.purgeSession(O(e)),j(e)}}se(t),oe(t),ce(t);for(let e of[...m.keys()])e.startsWith(t)&&m.delete(e);for(let e of[...h.keys()])e.startsWith(t)&&h.delete(e);for(let e of[...y])e.startsWith(t)&&y.delete(e)},purgeGeneration(e,t){for(let[n,r]of i)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),i.delete(n),c.delete(n);let e=s.get(n);e&&(e(),s.delete(n));let t=o.get(n);t&&(t(),o.delete(n)),a.delete(n)}se(`${e}\n${t}\n`),oe(`${e}\n${t}\n`),ce(`${e}\n${t}\n`),n.purgeGeneration(e,t),p&&p.clearGeneration({transport:e,generation:t})},destroy(){for(let e of i.values())e.destroy();i.clear();for(let e of o.values())e();o.clear();for(let e of s.values())e();s.clear(),a.clear(),c.clear(),m.clear(),h.clear(),g.clear(),_.clear(),v.clear(),b.clear(),x.clear(),S.clear(),n.dispose()}};return I}var tx=Object.freeze([]);function nx(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=h_(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var rx=`/api/openchamber/transcript-cache`,ix=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),ax=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ox=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},sx=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},cx=e=>{if(!ax(e))throw Error(`Invalid transcript cache scope`);return{transport:ox(e.transport,`scope`),generation:sx(e.generation,`scope`),directory:ox(e.directory,`scope`),sessionID:ox(e.sessionID,`scope`)}},lx=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},ux=e=>{if(!ax(e)||!ax(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!ax(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:cx(e.scope),messageID:ox(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>lx(e,`part completeness`)),completeness:lx(e.completeness,`completeness`),contentHash:ox(e.contentHash,`content hash`),byteSize:sx(e.byteSize,`byte size`),lastAccessedAt:sx(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:sx(e.sortKey.created,`sort key`),messageID:ox(e.sortKey.messageID,`sort key`)}}},dx=(e,t)=>{if(!ax(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(ux);return{scope:e.scope===void 0?vl(t):cx(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},fx=e=>{if(!ax(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:ux(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!ix.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:ux(e.record)}}}throw Error(`Invalid transcript cache upsert`)},px=e=>{if(!ax(e))throw Error(`Invalid transcript cache evict`);return{evicted:sx(e.evicted,`evict`),freedBytes:sx(e.freedBytes,`evict`),remainingBytes:sx(e.remainingBytes,`evict`)}},mx=e=>({scope:vl(e),records:[],byteSize:0}),hx=(e,t)=>ax(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,gx=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},_x=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await gx(r)};let i=await gx(r).catch(()=>void 0);throw Error(hx(i,`Transcript cache request failed (${r.status})`))},vx=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),yx=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function bx(e={}){let t=e.fetch??_;return{async readSession(e){let n=await _x(t,`${rx}/session`,{method:`GET`,query:vx(e)});return n.kind===`disabled`||n.kind===`not-found`?mx(e):dx(n.payload,e)},async readMessage(e,n){let r=await _x(t,`${rx}/message`,{method:`GET`,query:{...vx(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!ax(r.payload))throw Error(`Invalid transcript cache record`);return ux(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await _x(t,`${rx}/message`,yx(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return fx(i.payload)},async removeMessage(e,n){let r=await _x(t,`${rx}/message`,yx(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await _x(t,`${rx}/session`,yx(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await _x(t,`${rx}/generation`,yx(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await _x(t,`${rx}/evict`,yx(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return px(r.payload)},async clearAll(){let e=await _x(t,`${rx}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var xx=`openchamber-transcript-durable`,Sx=1,Cx=`transcriptIndex`,wx=`transcriptContent`,Tx=class extends Error{code;constructor(e){super(e),this.code=e}},Ex=e=>({id:il(e.scope,e.messageID),scope:vl(e.scope),scopeKey:rl(e.scope),generationKey:al(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Dx=(e,t)=>({scope:vl(e.scope),messageID:e.messageID,info:_l(t.info),parts:_l(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Ox=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Dx(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},kx=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},Ax=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),jx=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Tx(`database-unavailable`));return}let r=indexedDB.open(e,Sx),i=!1,a=()=>{i||(i=!0,n(new Tx(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Cx)){let t=e.createObjectStore(Cx,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(wx)||e.createObjectStore(wx,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Mx=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Tx(`database-unavailable`)),r.onblocked=()=>void 0}),Nx=(e=xx)=>({transaction:async t=>{let n=await jx(e),r=n.transaction([Cx,wx],`readwrite`),i=r.objectStore(Cx),a=r.objectStore(wx),o=e=>Ax(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Mx(e)});function Px(e,t={}){let n=yl(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Ex(t)),bl(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(rl(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Dx(t,r);a.lastAccessedAt=n(),await e.putIndex(Ex(a)),i.push(a)}return xl(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ox(e,il(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=Sl({info:i,incomingCompleteness:ul(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=_l(a.slice()),c=ul(s),l=await pl(i,s),u=il(t,i.id);return e.transaction(async e=>{let a=await Ox(e,u),o=Sl({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:bl(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:vl(t),messageID:i.id,info:_l(i),parts:s,partCompleteness:s.map(ll),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:sl(i)};return await e.putIndex(Ex(d)),await e.putContent({id:u,info:_l(i),parts:s}),{status:`written`,record:bl(d)}})},async removeMessage(t,n){await e.transaction(e=>kx(e,il(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(rl(t));for(let t of n)await kx(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(al(t));for(let t of n)await kx(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(rl)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ol(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await kx(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function Fx(e={}){return Px(e.driver??Nx(e.databaseName),e)}function Ix(e={}){let t=e.isDesktopShell??ae,n=e.isDesktopLocalOriginActive??de,r=e.isVSCodeRuntime??Se,i=e.isCapacitorApp??dt;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var Lx=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Rx(e={}){let t,n,r=()=>(t??=(e.createHttpStore??bx)(),t),i=()=>(n??=(e.createIndexedDBStore??Fx)(),n),a=()=>Ix(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>Lx([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function zx(e={}){await Rx(e).clearAll()}var Bx=(e,t)=>e<t?-1:+(e>t);function Vx(e){return e.filter(e=>!!e?.id).sort((e,t)=>Bx(e.id,t.id))}async function Hx(e){e.before||e.purpose;let t=await rt({sessionID:e.sessionID,directory:e.directory,...e.before?{cursor:e.before}:{},signal:e.signal}),n=e.before?null:await st({sessionID:e.sessionID,directory:e.directory,signal:e.signal}),r=n&&n.records.length>0?{records:n.records,cursor:t.cursor,complete:t.complete,turnCount:n.turnCount}:t,i=r.records.map(e=>({info:cm(e.info),parts:Vx(e.parts??[])}));if(!e.before&&!r.complete&&Ub(i).length>0){let t=B.getScopedSdkClient(e.directory);i=(await Wb({records:i,complete:r.complete,requestMessage:async n=>{let r=await Vb({transport:u(),generation:f(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:async()=>{let r=await t.session.message({sessionID:e.sessionID,messageID:n}),i=it(e.sessionID,r);if(!i?.info?.id)throw Error(`session.message failed: empty response`);return{info:cm(i.info),parts:Vx(i.parts??[])}}});return{info:r.info,parts:Vx(r.parts??[])}}})).records.map(e=>({info:e.info,parts:Vx(e.parts??[])}))}return ft(e.sessionID,i),{records:i,cursor:r.cursor??void 0,complete:r.complete,turnCount:r.turnCount,requestedTurnLimit:e.limit}}function Ux(e){let t=e.client??R,n=M_(),r=L_({client:t,activeRegistry:n}),i=ex({client:t,cacheBudget:r,activeRegistry:n,probe:{getTransport:u,getGeneration:f},fetcher:e=>Hx({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:sg(),historyLimit:cg(),durableStore:e.durableStore??Rx()}),a=db({client:t,repository:i,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:r,probe:{getTransport:u,getGeneration:f},confirmSessionStatus:async(t,n)=>{let r=e.childStores.getChild(t.directory);if(!r)return;let i=r.getState().session_status?.[t.sessionID];!n.tailOpen&&i?.type!==`busy`&&i?.type!==`retry`||await Ob(t.directory,r,[t.sessionID],n.tailOpen?{tailOpenSessionIds:new Set([t.sessionID])}:{})}});return vd(i),jd(a),{repository:i,destroy:()=>{a.cancelAll(`dispose`),jd(null),i.destroy(),yd()}}}function Wx(e){return bd().apply(G(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var Gx=new Map;function Kx(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function qx(e,t,n,r={}){let i=r.getTransportIdentity??u,a=r.getGeneration??f,o=i(),s=a(),c=Kx(e,t,o,s),l=()=>i()===o&&a()===s,d=Gx.get(c)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=d.catch(()=>void 0).then(()=>m);Gx.set(c,h);try{if(await d.catch(()=>void 0),!l())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:o,generation:s,isCurrent:l})}finally{p(),Gx.get(c)===h&&Gx.delete(c)}}var Jx=()=>!1,Yx=new Set,Xx=new Set,Zx=new Set,Qx=new Set,$x={onDeleteRequest(e){return Yx.add(e),()=>{Yx.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||Yx.forEach(t=>t(e))},onCreateRequest(e){return Xx.add(e),()=>{Xx.delete(e)}},requestCreate(e){let t=e??{};Xx.forEach(e=>e(t))},onDirectoryRequest(e){return Zx.add(e),()=>{Zx.delete(e)}},requestDirectoryDialog(){Zx.forEach(e=>e())},onGitRefreshHint(e){return Qx.add(e),()=>{Qx.delete(e)}},requestGitRefresh(e){e.directory.trim()&&Qx.forEach(t=>t(e))}},eS=50,tS=e=>{let t=Object.keys(e);if(t.length<=eS)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-eS).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},nS=De()(Ae(Oe((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:tS(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:bt(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),rS=new Set([`todowrite`,`todoread`]),iS=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),aS=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),oS=(e,t)=>{nS.getState().setSessionTodos(e,t)},sS=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},cS=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},lS=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},uS=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=lS(n);e&&t.push(e)}return t},dS=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return uS(t);if(t&&typeof t==`object`)return uS(t.todos)}catch{}return[]},fS=e=>{if(!rS.has(sS(e)))return[];let t=cS(e);if(t&&iS.has(t))return[];let n=e.state,r=uS(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=uS(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=uS(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?dS(i):[]};function pS(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=fS(r[e]);if(t.length>0)return t}}return[]}function mS(e){if(!e.sessionID||e.isStale?.()||aS(e.store.getState().todo,e.sessionID))return!1;let t=pS(e.transcript);return t.length===0||e.isStale?.()||aS(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function hS(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??U()?.getTranscript(G(e.directory,e.sessionID));return t?mS({sessionID:e.sessionID,store:e.store,transcript:t,persist:oS,isStale:e.isStale}):!1}var gS=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>yw,COMBINED_SEND_PRESENCE_GRACE_MS:()=>vw,SESSION_DELETE_UNDO_MS:()=>HC,abortBusySessionForMessageEdit:()=>Nw,abortCurrentOperation:()=>ww,archiveSession:()=>QC,beginOptimisticSend:()=>lw,cancelScheduledSessionDeletes:()=>ZC,classifySendFailure:()=>dC,combinedSendConfirmationOptions:()=>bw,commitMessageEdit:()=>Fw,commitStagedRevertBeforeSend:()=>nw,createSession:()=>IC,deleteSession:()=>YC,dirStoreForDirectory:()=>ZS,dismissOpenQuestionsForSession:()=>Ow,ensureSentUserMessagePresence:()=>Cw,fetchMessagesForSession:()=>Vw,fetchRecentSendConfirmationRecords:()=>gw,forkSession:()=>zw,getSendFailureKind:()=>lC,isQuestionRequestNotFoundError:()=>NC,isQuestionSubmissionClaimedError:()=>MC,materializeConfirmedSendRecords:()=>_w,mirrorSessionIntoLiveStores:()=>iC,optimisticInsertUserMessage:()=>mw,optimisticSend:()=>pw,patchSessionMetadata:()=>LC,refetchSessionMessages:()=>Lw,rejectQuestion:()=>Dw,releaseUnconfirmedQueueSend:()=>JS,requestSessionSmartTitle:()=>tw,resolveForkMessageId:()=>NS,respondToPermission:()=>Tw,respondToQuestion:()=>Ew,revertToMessage:()=>kw,rollbackOptimisticSend:()=>dw,scheduleSessionDeletes:()=>XC,setActionRefs:()=>KS,setOptimisticRefs:()=>qS,settleOptimisticSend:()=>fw,settleSessionPromptAfterSend:()=>GS,shareSession:()=>rw,shouldSuppressForkCopyEvent:()=>FS,stageMessageEdit:()=>jw,trackForkCopySessionCreated:()=>TS,unarchiveSession:()=>$C,unrevertSession:()=>Rw,unshareSession:()=>iw,updateSessionTitle:()=>ew,waitForConnectionOrThrow:()=>hC,waitForSessionIdleForMessageEdit:()=>Pw}),_S=2,vS=150,yS=new Set([`patch`,`step-start`,`step-finish`]),bS=3,xS=150,SS=null,CS=new Map,wS=3e4;function TS(e,t){let n=t?.id;!SS||SS.runtimeKey!==m()||SS.directory!==e||!n||t?.title!==SS.expectedTargetTitle||n===SS.sourceSessionID||SS.targetSessionID||(SS.targetSessionID=n)}function ES(e){let t=e?.trim()||`session`,n=t.match(/^(.+) \(fork #(\d+)\)$/);return n?`${n[1]} (fork #${Number.parseInt(n[2],10)+1})`:`${t} (fork #1)`}async function DS(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function OS(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function kS(e){return e?.type===`busy`||e?.type===`retry`}function AS(e){for(let t=e.length-1;t>=0;--t)if(e[t]?.role===`user`)return t;return-1}function jS(e){let t=e.at(-1);return t?.role===`assistant`&&t.time.completed==null}function MS(e,t){return kS(e)||e==null&&jS(t)}function NS(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!MS(n,t))return;let r=AS(t);if(r!==-1)return t[r+1]?.id}async function PS(e,t){let n=Fm(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return B.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function FS(e,t,n){if(SS&&SS.runtimeKey===m()&&SS.directory===e&&t&&t===SS.targetSessionID)return!0;if(!t||!n)return!1;let r=`${m()}:${e}:${t}`,i=CS.get(r);return i?i.expiresAt<=Date.now()?(CS.delete(r),!1):n<=i.messageID:!1}var IS=null,LS=null,RS=()=>``,zS=new Map,BS=null,VS=null,HS=null,US=e=>new Promise(t=>setTimeout(t,e));async function WS(e){return(await rt({sessionID:e.sessionID,directory:e.directory??``,limit:e.limit,...e.signal?{signal:e.signal}:{}})).records.filter(e=>!!e?.info?.id)}async function GS(e){if(e.text,e.delivery,e.inboxID&&!(await $e({sessionID:e.sessionId,directory:e.directory})).some(t=>t.id===e.inboxID))throw Error(`session prompt inbox item was not found after send`);let t=await WS({sessionID:e.sessionId,directory:e.directory,limit:dg()});await et({optimisticID:e.optimisticID,promotedIDs:t.map(e=>e.info.id),removeOptimistic:t=>{VS?.({sessionID:e.sessionId,directory:e.directory,messageID:t})},refreshFromAuthority:async()=>{await Lw(e.sessionId,e.directory??void 0)}})}function KS(e,t,n){if(IS=e,LS=t,RS=n,zS.size>0){let e=[...zS.values()];zS.clear(),queueMicrotask(()=>{for(let t of e)Vw(t.sessionID,t.directory)})}}function qS(e,t,n){BS=e,VS=t,HS=n??null}function JS(e){let t=e.directory??null;VS?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function YS(){if(!IS)throw Error(`SDK not initialized — is SyncProvider mounted?`);return IS}function XS(){if(!LS)throw Error(`Child stores not initialized`);let e=RS();if(!e)throw Error(`No current directory`);return LS.ensureChild(e)}function ZS(e,t){if(!LS)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return LS.ensureChild(e,t)}function QS(e,t){let n=t??xC(e);return n?{store:ZS(n),directory:n}:{store:XS(),directory:aC()}}function $S(e,t){let{store:n,directory:r}=QS(e,t??void 0),i=r??aC()??``;return{repository:U()??W(i,n),directory:i,store:n}}function eC(e,t){let{repository:n,directory:r,store:i}=$S(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(G(r,e))}}function tC(e,t){return Kd(eC(e,t).data)}function nC(e,t){return eC(e,t).data.messageOrder.length}function rC(e,t){let n=LS;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=iO(e,n[r]),t.setState({session:i}),!0}return!1}function iC(e,t){t&&rC(e,t)||rC(e)}function aC(){return RS()||void 0}function oC(){let{hasEverConnected:e,lastDisconnectReason:t}=Up.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function sC(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var cC=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function lC(e){return e instanceof cC?e.kind:null}function uC(e){let t=sC(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function dC(e,t){return t?uC(e)||sC(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var fC=2e3,pC=5e3,mC=3e4;async function hC(){let e=Uh();e&&Hh(`send_stream_stale`);let t=Date.now()+(e?pC:fC);for(;Date.now()<t;){if(Up.getState().isConnected&&!Uh()||n()&&!Uh())return;let e=t-Date.now();if(e<=0)break;if(await Up.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Uh())return;let r=Math.min(100,t-Date.now());r>0&&await new Promise(e=>setTimeout(e,r))}throw oC()}function gC(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Hh(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},mC);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function _C(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function vC(e){e&&Y.getState().upsertSession(e)}function yC(e,t){let n=om(t),r=[...e.getState().session],i=qs.search(r,n.id,e=>e.id);if(i.found){let t=iO(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function bC(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=_C(e);if(i)return yC(t,i);try{return yC(t,await B.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function xC(e){return SC(e)||$.getState().getDirectoryForSession(e)||aC()}function SC(e){let t=LS;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=U()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function CC(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?B.getScopedSdkClient(t):YS()}function wC(e){di.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&di.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var TC=()=>new Map(Array.from(Nf(),([e,t])=>[e,t.title||e]));function EC(e){return!(e.type!==`file`||$m(e))}function DC(e){return EC(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function OC(e){return e.some(DC)}async function kC(e){let t=[...e.parts];if(!OC(t))return t;let n=f(),r=e.directory??``;try{await Dd(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||f()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=$S(e.sessionID,r);if(t=[...i.getParts(G(a,e.sessionID),e.messageID)],OC(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function AC(e){if(OC(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await wh(e.parts,{sessionTitles:TC(),directory:e.directory}),n=di.getState(),r=n.getDraft(e.key);return{payload:t,commit:await kh({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function jC(e,t,n){let r=LS;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function MC(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.status===409&&t.code===`question_submission_claimed`}function NC(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function PC(e,t){let n=LS;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function FC(e,t,n,r){let i=(typeof r==`string`&&r.trim().length>0?r.trim():null)||jC(e,t,n)||xC(t)||aC();return i?B.getScopedSdkClient(i):CC(t)}async function IC(e,t,n,r){try{let i=await B.createSession({title:e,parentID:n??void 0,metadata:r},t??aC()),a=i.directory??null;return a&&Tf(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function LC(e,t,n){let r=t??xC(e),i=n(Fm(await B.getSession(e,r))),a=await B.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Tf(a.id,o),a}async function RC(e,t){let n;try{n=await B.getSession(e,t??xC(e))}catch{return}if(!zm(n))return;let r=Rm(n);if(r)try{await LC(r,t??xC(r),t=>Hm(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function zC(e,t){if(!LS)return[];let n=[],r=new Set,i=[];if(t){let e=LS.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of LS.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function BC(e){if(LS)for(let t of e){let e=LS.children.get(t.directory);e&&e.setState({session:t.sessions})}}function VC(e){$.getState().setWorktreeMetadata(e,null)}var HC=1e4,UC=new Map,WC=0;function GC(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function KC(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),BC(e.listSnapshots),vC(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function qC(e,t){let n=t??xC(e);Y.getState().markSessionsPendingDeletion([e]);let r=zC(e,n),i=_C(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function JC(e,t){try{if(await RC(e,t),await B.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return zC(e,t),Y.getState().removeSessions([e]),VC(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(zC(e,t),Y.getState().removeSessions([e]),VC(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function YC(e,t){let n=qC(e);return await JC(e,n.directory)?!0:(KC(n),!1)}function XC(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>qC(e)),i=`session-delete-${Date.now()}-${WC+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=UC.get(i);if(!e)return;UC.delete(i);let t=[],n=[];for(let r of e.entries)await JC(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),KC(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return UC.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function ZC(e){if(!e)return!1;let t=UC.get(e);if(!t)return!1;clearTimeout(t.timer),UC.delete(e);for(let e of[...t.entries].reverse())KC(e);return!0}async function QC(e){let t=xC(e),n=zC(e,t),r=_C(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await RC(e,t);let n=await B.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),BC(n),vC(r),!1}}async function $C(e){let t=xC(e),n=_C(e),r=n?GC(n):null;if(r&&(Y.getState().upsertSession(r),t&&LS)){let e=LS.children.get(t);e&&yC(e,r)}try{let n=await B.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=GC(n);if(Y.getState().upsertSession(r),t&&LS){let e=LS.children.get(t);e?yC(e,r):iC(r,t)}else iC(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&zC(e,t)),!1}}async function ew(e,t){let n=xC(e),r=_C(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Yp(r):0,c=await B.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),iC(c,n)}async function tw(e){let t=xC(e),n=_C(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await B.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),iC(s,t)}async function nw(e,t){let n;try{n=QS(e,t??void 0)}catch{return}let{store:r,directory:i}=n;if(!r.getState().session?.find(t=>t.id===e)?.revert)return;await Le({sessionID:e,directory:i});let a=[...r.getState().session],o=a.findIndex(t=>t.id===e);o>=0&&(a[o]={...a[o],revert:void 0},r.setState({session:a}))}async function rw(e){if(!Jx())return null;throw Ze(`session.share`)}async function iw(e){throw Ze(`session.unshare`)}function aw(e){let t=LS,n=e??RS();if(!t||!n)return{store:e?ZS(e):XS(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function ow(){return{identity:u(),generation:f()}}function sw(e,t){return e.isCurrent()&&u()===t.identity&&f()===t.generation}function cw(e,t){if(!sw(e,t))throw Error(`Send target changed before transport dispatch`)}function lw(e){if(!BS||!VS)throw new cC(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??aC()??null,n=aw(t),r=ow();cw(n,r),e.beforeOptimisticInsert?.(),cw(n,r);let i=e.messageID??he(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),ah(e.sessionId),mw({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof cC?e:new cC(lC(e)??dC(e,!1),e)}}function uw(e){if(!sw(e.capture,e.transport)||!VS)return;VS({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function dw(e){uw(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function fw(e){if(!BS||!VS)throw new cC(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await hC(),cw(n,r),s=!0,await gC(e.send(i)),!sw(n,r))throw new cC(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=lC(c)??dC(c,s),u=c instanceof cC?c:new cC(l,c,i);if(!sw(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await gw(a,i,o):null;if(d&&sw(n,r)){_w(n.store,a,i,d,{directory:o??void 0}),HS?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||uw(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function pw(e){await fw({ticket:e.ticket??lw({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function mw(e){if(!BS)return!1;let t=e.directory??aC(),n=t?ZS(t):XS(),r=t??aC()??``;if(xw(n,e.sessionId,e.messageID,r)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let i=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:he(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)i.push({id:he(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let a=Date.now(),o={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:a,completed:0}},s=Ky(()=>eC(e.sessionId,t).data);BS({sessionID:e.sessionId,directory:t,message:o,parts:i});let c=Ky(()=>eC(e.sessionId,t).data);try{s&&c&&qy({trigger:`user-send`,sessionID:e.sessionId,directory:r,transport:u(),generation:f(),before:s,after:c})}catch{}let l=n.getState();return n.setState({session_status:{...l.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...l.session_status_observed_at,[e.sessionId]:a}}),!0}function hw(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function gw(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??_S,c=r?.retryDelayMs??vS;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!hw(r?.isCurrent)||a>0&&(await US(c),i?.signal.aborted||!hw(r?.isCurrent)))return null;try{let a=await WS({sessionID:e,directory:n,limit:dg(),...i?{signal:i.signal}:{}});if(!hw(r?.isCurrent))return null;if(a.some(e=>e.info.id===t))return a}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function _w(e,t,n,r,i){if(!r.length)return;let a=i?.directory??xC(t)??RS(),o=G(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:cm(e.info),parts:e.parts??[]})),skipPartTypes:yS,merge:i?.gapFillOnly===!0?Zc:$c({purpose:`recovery`})};Sd(o,s)||W(a,e).apply(o,s)}var vw=2e3,yw={attempts:12,retryDelayMs:500},bw={presenceGraceMs:vw,recovery:{...yw}};function xw(e,t,n,r){let i=r??xC(t)??RS()??``,a=U()??W(i,e),o=G(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function Sw(e,t,n,r){let i=r?.directory??xC(t)??RS()??``;if(xw(e,t,n,i))return Promise.resolve(!0);if(!hw(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=U()??W(i,e),f=G(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!hw(r?.isCurrent)){l(!1);return}xw(e,t,n,i)&&l(!0)}),xw(e,t,n,i)&&l(!0)})}async function Cw(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await Sw(t,n,r,{timeoutMs:e.graceMs??bw.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!hw(a))return`cancelled`;let o=await gw(n,r,i,{...bw.recovery,isCurrent:a});return o?hw(a)?(_w(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:hw(a)?`missing`:`cancelled`}async function ww(e){let{store:t,directory:n}=QS(e),r=n?{state:`bound`,transportIdentity:u(),directory:n,sessionID:e}:null,i=r?$.getState().beginQueueAbortBlock(r):null;try{await tt({sessionID:e,directory:n});let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){r&&i&&$.getState().clearQueueAbortBlock(r,i),Dt(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>zU);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function Tw(e,t,n){await hC();let r=jC(`permission`,e,t)||xC(e)||aC();await Re({sessionID:e,requestID:t,reply:n,directory:r})}async function Ew(e,t,n,r){await hC();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];await FC(`question`,e,t,r).session.form.reply({sessionID:e,formID:t,answer:Ie(i)})}catch(n){throw NC(n)&&PC(e,t),n}}async function Dw(e,t,n){await hC();try{await FC(`question`,e,t,n).session.form.cancel({sessionID:e,formID:t})}catch(n){throw NC(n)&&PC(e,t),n}}async function Ow(e){if(!e)return!1;let t=LS;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Jm(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)PC(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await Dw(e,t)}catch(e){if(NC(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function kw(e,t,n){let r=typeof n==`string`?n:n?.directory,i=typeof n==`string`?void 0:n?.draftKey,a=typeof n==`string`||n?.restorePrimaryInput!==!1,o=i!==null&&(i!==void 0||a);return qx(e,r??(()=>{try{return QS(e,r).directory}catch{return r}})(),async({isCurrent:n})=>{let{store:a,directory:s}=QS(e,r);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=a.getState().session_status[e];if(c&&c.type!==`idle`){try{await tt({sessionID:e,directory:s})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let l=tC(e,s).find(e=>e.id===t),d=tC(e,s).find(e=>e.id===t)??l;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=$S(e,s),m=[...f.getParts(G(p,e),t)],h=i===void 0?o?ge({transportIdentity:u()},e):null:i,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await kC({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await wh(m,{sessionTitles:TC(),directory:s})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=a.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),C={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},C.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(a.setState(C),h){let t=di.getState(),r=await kh({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await jh({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await Be({sessionID:e,messageID:t,directory:s});if(!n()){let t=[...a.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),a.setState({session:t}),h&&v&&_!==void 0&&await jh({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...a.getState().session],o=i.findIndex(t=>t.id===e);return o>=0&&(i[o]={...i[o],revert:r},a.setState({session:i})),s&&$x.requestGitRefresh({directory:s}),g}catch(t){let r=[...a.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(a.setState({session:r}),h&&v&&_!==void 0&&await jh({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(a.setState({session:r}),h&&v&&_!==void 0&&await jh({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function Aw(e,t,n,r){let i=r??xC(t)??RS(),a=G(i,t),o=Ky(()=>eC(t,i).data),s=[...xd(t)];s.some(e=>e.directory===i&&e.sessionID===t)||s.push(a);let c=!1;for(let e of s)Sd(e,{type:`remove-message`,messageID:n})!=null&&(c=!0);c||W(i,e).apply(a,{type:`remove-message`,messageID:n});let l=Ky(()=>eC(t,i).data);try{o&&l&&qy({trigger:`user-delete`,sessionID:t,directory:i,transport:u(),generation:f(),before:o,after:l})}catch{}}async function jw(e,t,n,r){let i=n?.info,a=n?.parts,o=r?.directory,s;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);s=QS(e,o).directory}else{s=QS(e,o).directory;let{data:n}=eC(e,s),r=Kd(n),c=r.findIndex(e=>e.id===t),l=c>=0?r[c]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);i=l,a=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!i||n&&a===void 0)throw Error(`The selected user message is unavailable`);let c=r?.draftKey??ge({transportIdentity:u()},e),{commit:l}=await AC({key:c,parts:await kC({directory:s,sessionID:e,messageID:t,parts:a??[]}),directory:s});if(l.status!==`committed`||!l.current)throw Error(`composer-restoration-commit-${l.status}`);let d=l.result?.record?.revision,f=l.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await jh({key:c,restoredRevision:d,previous:f})).status})}}function Mw(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function Nw(e,t){let n=t?.directory,{store:r,directory:i}=QS(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await tt({sessionID:e,directory:i})}catch{}}async function Pw(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=QS(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function Fw(e,t,n){let r=n?.directory,i=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:a,directory:o}=QS(e,r),s=Ky(()=>eC(e,r).data);try{await Nw(e,{directory:r}),await Pw(e,{directory:r});let n=new Set((await Iw(e,r)).map(e=>e.id)),s=Mw(t,tC(e,r),n,{preserveMessageId:i});for(let t of[...s].reverse())await B.deleteSessionMessage(e,t.id,o),Aw(a,e,t.id,o)}finally{try{let t=Ky(()=>eC(e,r).data);s&&t&&qy({trigger:`user-edit`,sessionID:e,directory:o,transport:u(),generation:f(),before:s,after:t})}catch{}}}async function Iw(e,t){let{directory:n}=QS(e,t);return(await WS({sessionID:e,directory:n,limit:ug()})).map(e=>cm(e.info))}async function Lw(e,t){let{store:n,directory:r}=QS(e,t),i=Ky(()=>eC(e,t).data),a=await WS({sessionID:e,directory:r,limit:ug()});if(a.length===0){try{let n=Ky(()=>eC(e,t).data);i&&n&&qy({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return[]}let o=a.map(e=>({info:cm(e.info),parts:e.parts??[]})),s=G(r??RS(),e);Sd(s,{type:`materialize-snapshots`,records:o,skipPartTypes:yS})||W(r??RS(),n).apply(s,{type:`materialize-snapshots`,records:o,skipPartTypes:yS});try{let n=Ky(()=>eC(e,t).data);i&&n&&qy({trigger:`materialize`,sessionID:e,directory:r,transport:u(),generation:f(),purpose:`refetch`,before:i,after:n})}catch{}return o.map(e=>e.info)}async function Rw(e,t){return qx(e,t??(()=>{try{return QS(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=QS(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=nC(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await tt({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}if(await Qe({sessionID:e,directory:i}),!n())throw Error(`Session history mutation aborted because the runtime changed`);let c=[...r.getState().session],l=c.findIndex(t=>t.id===e);l>=0&&(c[l]={...c[l],revert:void 0},r.setState({session:c}));for(let r=0;r<bS;r+=1){if(r>0&&(await US(xS),!n())||(await Lw(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(nC(e,i)>o)return}if(nC(e,i)<=o){let n=i??RS(),a=U()??W(n,r),o=G(n,e),s=a.destructiveReset;typeof s==`function`?await s(o):await Lw(e,t)}})}async function zw(e,t,n,r){let i=m(),{store:a,directory:o}=QS(e,r);if(!o)throw Error(`Fork session directory is unavailable`);let s=await bC(e,a,o);Tf(e,o);let c=a.getState(),l=c.session_status[e],u=tC(e,o);l?.type,u.length;let d=NS(n,u,l);if(!n&&MS(l,u)&&AS(u)===-1&&(await Lw(e),c=a.getState(),l=c.session_status[e],u=tC(e,o),d=NS(void 0,u,l)),!n&&MS(l,u)&&AS(u)===-1)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:c.session_status[e]?.type??`unknown`,messageCount:nC(e,o)}),Error(`Fork source user message is unavailable`);c.session_status[e]?.type;let{repository:f,data:p}=eC(e,o),h=(n?p.messagesByID[n]??u.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...f.getParts(G(o,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!$m(e)).map(e=>e.text||e.content||``).join(`
403
- `).trim();let v=g.filter(e=>e.type===`file`&&!$m(e));SS={operationId:t,runtimeKey:i,directory:o,sourceSessionID:e,expectedTargetTitle:ES(s.title)},await DS(t,`copying`);let y;try{if(y=await B.forkSession(e,d,o),y.id,m()!==i)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),SS?.operationId===t&&(SS=null),!1;let n=[...a.getState().session],r=qs.search(n,y.id,e=>e.id);r.found||(n.splice(r.index,0,y),a.setState({session:n})),OS(t,y.id);let s=$.getState().currentSessionId;(s===e||s===y.id)&&$.getState().setCurrentSession(y.id,o,{skipMessageFetch:!0}),await DS(t,`opening`);try{y=await PS(y,o)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw SS?.operationId===t&&(SS=null),e}try{let e=G(o,y.id),r=U(),i=r?.destructiveReset;r&&typeof i==`function`?await i(e):Sd(e,{type:`reset`}),await DS(t,`loading`),y.id,$.getState().currentSessionId,y.id;let s=U()??W(o,a),c=G(o,y.id),l=s.getRequestState?.(c);(!(s.hasSession?.(c)??!1)||l?.status===`error`)&&await Vw(y.id,o);let u=tC(y.id,o).at(-1)?.id;u&&CS.set(`${m()}:${o}:${y.id}`,{messageID:u,expiresAt:Date.now()+wS});let d=$.getState().currentSessionId===y.id;d&&h&&_&&di.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&wC(v)}finally{SS?.operationId===t&&(SS=null)}return y.id,!0}var Bw=new Map;async function Vw(e,t){let n=t??aC();if(!n)return;let r=m(),i=lg(),a=`${r}:${n}:${e}:${i}`;if(!IS||!LS){zS.set(a,{sessionID:e,directory:n});return}let o=Bw.get(a);if(o)return o;let s=Hw(e,n,r,i).finally(()=>{Bw.get(a)===s&&Bw.delete(a)});return Bw.set(a,s),s}async function Hw(e,t,n,r){YS();let i=ZS(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=U()??W(t,i),l=G(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Jh(t,e)){hS({directory:t,sessionID:e,store:i,transcript:u});return}if(U()){try{await wd(t,e)}catch{return}if(y())return;hS({directory:t,sessionID:e,store:i,isStale:y}),await kb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}hS({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await Hx({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:yS}),b=n.records.length,Yh(t,e)}catch{return}y()||(hS({directory:t,sessionID:e,store:i,isStale:y}),await kb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var Uw=18e4,Ww=400,Gw=300,Kw=15,qw=`FINAL_REVIEW_STATUS: no_remaining_findings`,Jw=qw.toLowerCase(),Yw=new Set,Xw=new Set,Zw=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},Qw=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},$w=e=>{let t=e.role;return typeof t==`string`?t:``},eT=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},tT=(e,t)=>If(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),nT=(e,t,n,r=0,i)=>{let a=Ff(e,t),o=new Set;for(let e of a)tT(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if($w(s)!==`assistant`||!Zw(s)||Qw(s)<r-1e3)continue;let c=eT(s);if(!uT(s,i)||c&&o.has(c))continue;let l=Nm(If(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},rT=(e,t)=>Lf(e,t)?.type===`idle`,iT=e=>e===m(),aT=e=>{Um.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},oT=e=>{if(e&&!iT(e))throw Error(`Auto-review stopped because the runtime changed.`)},sT=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),cT=e=>e.trim().split(`
404
- `).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===Jw,lT=e=>{let t=e.trimEnd().split(`
405
- `);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===Jw&&t.pop(),t.join(`
406
- `).trim()},uT=(e,t)=>!t||eT(e)===t,dT=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),fT=(e,t)=>{let n=dT(e,t);return Xw.has(n)?null:(Xw.add(n),n)},pT=e=>{Xw.delete(e)},mT=()=>[{synthetic:!0,text:`This review is part of an automatic review loop. If there are no remaining issues, end your response with this exact final line:\n${qw}\nIf you found issues that require changes, do not include that final status line.`}],hT=async e=>{for(;;){let t=Um.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!iT(t.runtimeKey)){aT(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!rT(n,t.directory)){await new Promise(e=>setTimeout(e,Gw));continue}let r=nT(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,Gw));continue}if(t.phase===`waiting_for_reviewer`){let e=fT(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Gw));continue}if(!iT(t.runtimeKey)){pT(e),aT(t);return}try{let e=Date.now(),n=cT(r.text),i=n?lT(r.text):r.text,a=await DT(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Um.getState().completeRun(t.originalSessionID);return}Um.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{pT(e)}}else{if(t.iteration>=t.maxIterations){Um.getState().stopRun(t.originalSessionID);return}let e=fT(t,r.id);if(!e){await new Promise(e=>setTimeout(e,Gw));continue}if(!iT(t.runtimeKey)){pT(e),aT(t);return}try{let e=Date.now(),n=await OT(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Um.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{pT(e)}}}},gT=e=>{Um.getState().upsertRun(e),_T(e.originalSessionID)},_T=e=>{let t=Um.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!iT(t.runtimeKey)||Yw.has(e)||(Yw.add(e),hT(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Um.getState().updateRun(t.originalSessionID,t=>({...t,status:sT(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{Yw.delete(e)}))},vT=async(e,t,n)=>{let r=Date.now()+Uw;for(;Date.now()<r;){let r=Ff(e,t).filter(e=>$w(e)===`assistant`).filter(e=>Qw(e)>=n-1e3).filter(Zw).sort((e,t)=>Qw(t)-Qw(e));for(let e of r){let n=Nm(If(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,Ww))}throw Error(`Timed out waiting for handoff response`)},yT=e=>{let t=Ms.getState(),n=Up.getState(),r=$.getState().getLastUserChoice(e),i=r?.agent||t.getSessionAgentSelection(e)||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=s||o||a||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;if(s)return{providerID:s.providerId,modelID:s.modelId,agent:i,variant:r?.variant};let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0;return{providerID:c.providerId,modelID:c.modelId,agent:i,variant:l||u||void 0}},bT=async(e,t,n,r,i,a)=>{oT(a);let o=r??yT(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Ms.getState();s.saveSessionModelSelection(e,o.providerID,o.modelID),o.agent&&(s.saveSessionAgentSelection(e,o.agent),s.saveAgentModelForSession(e,o.agent,o.providerID,o.modelID),s.saveAgentModelVariantForSession(e,o.agent,o.providerID,o.modelID,o.variant)),ah(e);let c=null;if(await pw({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>oT(a),onOptimisticInsert:()=>xT(e),send:r=>(oT(a),B.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},xT=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},ST=(e,t)=>{yt.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},CT=async(e,t)=>{try{return await B.getSession(e,t)}catch{return null}},wT=e=>`Review: ${e.title?.trim()||e.id}`,TT=async(e,t,n)=>{oT(n);let r=await B.getSession(e,t);oT(n);let i=Lm(r);if(i){let r=await CT(i,t);if(oT(n),r&&zm(r))return r;await LC(e,t,e=>{let t={...e},n=t.openchamber;if(n&&typeof n==`object`&&!Array.isArray(n)){let e={...n};delete e.reviewSessionID,t.openchamber=e}return t})}oT(n);let a=await B.createSession({title:wT(r),metadata:Vm({},e)},t);oT(n),Tf(a.id,t);try{oT(n),await LC(e,t,e=>Bm(e,a.id))}catch(e){throw oT(n),await B.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},ET=async e=>{await hC();let t=e.autoReview?m():void 0,n;if(e.generateHandoff??!0){let n=await km(`session.reviewHandoff.visible`),r=await km(`session.reviewHandoff.instructions`),i=Date.now();await bT(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let a=async()=>{let n=await vT(e.originalSessionID,e.directory,i);oT(t);let r=await km(`session.reviewSession.visible`,{handoff:n}),a=await TT(e.originalSessionID,e.directory,t),o=t??m(),s=Date.now(),c=await bT(a.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?mT():void 0,e.autoReview?o:void 0);e.autoReview&&gT({originalSessionID:e.originalSessionID,reviewSessionID:a.id,directory:e.directory,runtimeKey:o,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:Kw,expectedAssistantParentID:c,waitAfterCreatedAt:s}),e.autoReview||ST(e.directory,a)};if(e.returnAfterHandoffRequest){a().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await a();return}n=await km(`session.reviewSessionWithoutHandoff.visible`);let r=await TT(e.originalSessionID,e.directory,t),i=t??m(),a=Date.now(),o=await bT(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?mT():void 0,e.autoReview?i:void 0);e.autoReview&&gT({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:i,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:Kw,expectedAssistantParentID:o,waitAfterCreatedAt:a}),e.autoReview||ST(e.directory,r)},DT=async(e,t,n,r)=>{oT(r);let i=Rm(await B.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await km(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return oT(r),bT(i,t,a,void 0,void 0,r)},OT=async(e,t,n,r=!1,i)=>{oT(i);let a=Lm(await B.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await B.getSession(a,t)}catch(n){throw oT(i),await LC(e,t,e=>Hm(e,a)),n}let s=await km(`session.implementationResponseToReviewer.visible`,{implementation_response:n});oT(i);let c=await bT(a,t,s,void 0,r?mT():void 0,i);return r||ST(t,o),c},kT=e=>zm(e)?`review-to-original`:Lm(e)?`original-to-review`:null,AT=[0,250,500,1e3,2e3,2e3,2e3,2e3],jT=5e3,MT=(e=>{let t=new Map,n=new Set,r=new Map,i=new Map,a=0,o=e=>`${a}:${i.get(e)??0}`;return{waitUntilReady:i=>{if(n.has(i))return Promise.resolve();let a=t.get(i);if(a)return a;let s=e.now??Date.now,c=e.failureCooldownMs??jT,l=r.get(i);if(l!==void 0&&s()-l<c)return Promise.reject(Error(`OpenCode readiness is cooling down for runtime ${i}`));let u=e.retryDelaysMs??AT,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>B.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),NT=()=>MT.waitUntilReady(m()),PT=e=>{MT.reset(e)},FT=100,IT=1500,LT=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},RT=e=>{if(e.available!==!0||!Array.isArray(e.directories))return null;let t=Array.isArray(e.pinnedSessionIds)?e.pinnedSessionIds.filter(e=>typeof e==`string`&&e.length>0):void 0;return{revision:typeof e.revision==`number`?e.revision:0,sync:e.sync??{active:!1,completed:0,total:0,pendingDirectories:[],completedDirectories:[],failedDirectories:[],enriching:!1},directories:e.directories,...t?{pinnedSessionIds:t}:{}}},zT,BT=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await _(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await LT(e);let r=await e.json();if(r.available!==!0||!r.session)return null;let i=typeof r.session.directory==`string`?r.session.directory.trim():``,a=typeof r.session.id==`string`?r.session.id:n;return i?{id:a,directory:i,title:typeof r.session.title==`string`?r.session.title:void 0,parentID:r.session.parentID??null}:null}catch{return null}},VT=async e=>{if(typeof window>`u`)return null;if(zT)return zT;let t=(async()=>{let t=await _(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await LT(t),RT(await t.json()))})().finally(()=>{zT===t&&(zT=void 0)});return zT=t,t},HT=async e=>{if(typeof window>`u`)return null;let t=await _(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await LT(t),t.json())},UT=(e,t,n)=>new Promise(r=>{if(t.aborted){r(`aborted`);return}let i=n?.safetyTimeoutMs===null?null:typeof n?.safetyTimeoutMs==`number`&&n.safetyTimeoutMs>0?n.safetyTimeoutMs:IT,a,o,s=e=>{a!==void 0&&clearTimeout(a),u!==void 0&&clearTimeout(u),d(),t.removeEventListener(`abort`,l),r(e)},c=e=>{o=e,a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,s(o??e)},FT)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=An(t=>{if(t.type===`event-stream-ready`){c(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){c(`tip`);return}});t.addEventListener(`abort`,l,{once:!0})}),WT=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await _(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`POST`,signal:t?.signal});if(r.status===501)throw Error(`session index pin is unsupported`);await LT(r)},GT=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await _(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`DELETE`,signal:t?.signal});if(r.status===501)throw Error(`session index unpin is unsupported`);await LT(r)},KT=async e=>{if(typeof window>`u`)return;let t=await _(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await LT(t)},qT=async e=>{if(typeof window>`u`||e.length===0)return;let t=await _(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await LT(t)},JT=1,YT=`oc.sessionIndexStartupCache`,XT=1e6,ZT=e=>!!e&&typeof e==`object`&&!Array.isArray(e),QT=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),$T=e=>!(!ZT(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!QT(e.pendingDirectories)||!QT(e.completedDirectories)||!QT(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),eE=e=>ZT(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&ZT(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),tE=e=>!ZT(e)||typeof e.directory!=`string`||!e.directory.trim()||e.cursor!==null&&(typeof e.cursor!=`number`||!Number.isFinite(e.cursor))||typeof e.hasMore!=`boolean`||typeof e.lastSyncedAt!=`number`||!Number.isFinite(e.lastSyncedAt)||typeof e.lastFullSyncedAt!=`number`||!Number.isFinite(e.lastFullSyncedAt)||typeof e.lastAccessedAt!=`number`||!Number.isFinite(e.lastAccessedAt)?!1:Array.isArray(e.sessions)&&e.sessions.every(eE),nE=e=>!ZT(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!$T(e.sync)||!Array.isArray(e.directories)||e.pinnedSessionIds!==void 0&&!QT(e.pinnedSessionIds)?!1:e.directories.every(tE),rE=e=>ZT(e)&&e.version===JT&&ZT(e.entries),iE=e=>{if(!e)return null;try{let t=JSON.parse(e);return rE(t)?{version:JT,entries:t.entries}:null}catch{return null}},aE=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>XT)return;e.setItem(YT,n)}catch{}},oE=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(YT)}catch{return null}let r=iE(n);if(!r)return null;let i=r.entries[e];return nE(i)?i:null},sE=(e,t,n)=>{if(!e||!nE(t))return;let r=null;try{r=n.getItem(YT)}catch{return}let i={...iE(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);aE(n,{version:JT,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},cE=(e,t)=>{let n=e?.identity===t.identity?e:null,r=t.content.trim().length>0,i=n?.appeared??!1,a=(n?.wasActive??!1)||t.isActive,o=t.content!==(n?.content??``);return{shouldEmit:t.mode===`appearance`?a&&r&&!i:a&&r&&o,nextState:{identity:t.identity,content:t.content,appeared:i||r,wasActive:a}}},lE=(e,t)=>!e||t,uE=(e=1e3)=>{let t=new Set,n=Math.max(1,Math.floor(e));return e=>{if(e.kind===`text`)return!0;let r=`${e.sessionID}\u0000${e.messageID}\u0000${e.partID}\u0000${e.kind}`;if(t.has(r))return!1;for(t.add(r);t.size>n;){let e=t.values().next().value;if(typeof e!=`string`)break;t.delete(e)}return!0}},dE=new Set,fE=()=>dE.size>0,pE=e=>{for(let t of dE)t(e)},mE=e=>(dE.add(e),()=>dE.delete(e)),hE=3e4,gE=3e3,_E=1e3,vE=0,yE=0,bE=0,xE=null;function SE(e){try{if(e===`medium`){yE+=1;return}if(e===`heavy`){bE+=1;return}vE+=1}catch{}}function CE(){return{light:vE,medium:yE,heavy:bE}}function wE(){vE=0,yE=0,bE=0}function TE(e){if(e.length===0)return{avg:null,min:null,p10:null};let t=e.map(e=>e>0?1e3/e:0),n=t.reduce((e,t)=>e+t,0)/t.length,r=Math.min(...t),i=[...t].sort((e,t)=>e-t);return{avg:n,min:r,p10:i[Math.max(0,Math.min(i.length-1,Math.floor(.1*(i.length-1))))]??r}}function EE(){let e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l=[];return{addLongTaskMs(r){!Number.isFinite(r)||r<0||(e+=1,t+=r,r>n&&(n=r))},addLagMs(e){!Number.isFinite(e)||e<0||(r+=1,i+=e,e>a&&(a=e))},addFpsDelta(e){!Number.isFinite(e)||e<0||l.push(e)},noteHaptic(e){if(e===`medium`){s+=1;return}if(e===`heavy`){c+=1;return}o+=1},snapshotWindow(){let u=TE(l),d={longTaskCount:e,longTaskTotalMs:t,longTaskMaxMs:n,eventLoopLagMaxMs:a,eventLoopLagAvgMs:r>0?i/r:0,hapticLightCount:o,hapticMediumCount:s,hapticHeavyCount:c};return u.avg==null?d:{...d,fpsAvg:u.avg,fpsMin:u.min??void 0,fpsP10:u.p10??void 0}},reset(){e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0,l.length=0}}}function DE(){try{let e=performance.memory;return e?{used:typeof e.usedJSHeapSize==`number`?Math.round(e.usedJSHeapSize/1048576):void 0,limit:typeof e.jsHeapSizeLimit==`number`?Math.round(e.jsHeapSizeLimit/1048576):void 0}:{}}catch{return{}}}function OE(){let e={};try{typeof document<`u`&&document.visibilityState&&(e.visible=document.visibilityState===`visible`)}catch{}try{typeof document<`u`&&document.documentElement&&(e.foreground=document.documentElement.classList.contains(`oc-native-app-active`))}catch{}return e}function kE(e){let t=DE(),n=OE();return{at:e.at,feat:`perf`,kind:`perf-window`,sessionID:`app`,longTaskCount:e.snapshot.longTaskCount,longTaskTotalMs:e.snapshot.longTaskTotalMs,longTaskMaxMs:e.snapshot.longTaskMaxMs,eventLoopLagMaxMs:e.snapshot.eventLoopLagMaxMs,eventLoopLagAvgMs:e.snapshot.eventLoopLagAvgMs,hapticLightCount:e.haptics.light,hapticMediumCount:e.haptics.medium,hapticHeavyCount:e.haptics.heavy,platform:e.platform,...e.snapshot.fpsAvg==null?{}:{fpsAvg:e.snapshot.fpsAvg,fpsMin:e.snapshot.fpsMin,fpsP10:e.snapshot.fpsP10},...t.used==null?{}:{jsHeapUsedMB:t.used},...t.limit==null?{}:{jsHeapLimitMB:t.limit},...n.visible==null?{}:{visible:n.visible},...n.foreground==null?{}:{foreground:n.foreground}}}function AE(e={}){if(xE)return xE;let t=e.isEnabled??Hy,n=e.record??Gy,r=e.now??(()=>Date.now()),i=e.getPlatform??(()=>mt()),a=EE(),o=!1,s,c,l,u,d,f,p=e=>{try{e()}catch{}},m=()=>{if(l!=null&&(clearTimeout(l),l=void 0),u!=null&&typeof cancelAnimationFrame==`function`){try{cancelAnimationFrame(u)}catch{}u=void 0}d=void 0},h=()=>{if(m(),typeof requestAnimationFrame!=`function`)return;let e=r()+gE,t=n=>{o||p(()=>{d!=null&&a.addFpsDelta(n-d),d=n,r()<e?u=requestAnimationFrame(t):(u=void 0,d=void 0)})};u=requestAnimationFrame(t),l=setTimeout(()=>{p(()=>{u!=null&&typeof cancelAnimationFrame==`function`&&(cancelAnimationFrame(u),u=void 0),d=void 0})},gE)},g=()=>{p(()=>{let e=a.snapshotWindow(),o=CE();t()&&n(kE({at:r(),snapshot:e,haptics:o,platform:i()})),wE(),a.reset()})},_=()=>{s=setTimeout(()=>{o||(g(),h(),_())},hE)},v=()=>{let e=r()+_E;c=setTimeout(()=>{o||(p(()=>{let t=Math.max(0,r()-e);a.addLagMs(t)}),v())},_E)};p(()=>{if(!(typeof PerformanceObserver>`u`))try{f=new PerformanceObserver(e=>{p(()=>{for(let t of e.getEntries())a.addLongTaskMs(t.duration)})}),f.observe({entryTypes:[`longtask`]})}catch{f=void 0}}),h(),v(),_();let y=()=>{if(!o){if(o=!0,s!=null&&clearTimeout(s),c!=null&&clearTimeout(c),m(),f){try{f.disconnect()}catch{}f=void 0}xE===y&&(xE=null)}};return xE=y,y}var jE=typeof window<`u`?K.useLayoutEffect:K.useEffect,ME=Tt(`OpenChamberHaptics`),NE=null,PE=()=>(NE??=Et.isPluginAvailable(`OpenChamberHaptics`),NE);function FE(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function IE(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function LE(){if(!IE())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function RE(e){let{eventSessionId:t,currentSessionId:n,isForeground:r,isVisible:i}=e;return!n||t!==n?{shouldTrigger:!1,reason:`different-session`}:r?i?{shouldTrigger:!0,reason:`trigger`}:{shouldTrigger:!1,reason:`hidden`}:{shouldTrigger:!1,reason:`background`}}var zE=20,BE=750;function VE(e,t){return t-e>=zE}function HE(e,t){return t-e>=BE}function UE(e){return!e.thresholdReached&&e.available&&e.distance>=e.enterDistance?{thresholdReached:!0,event:`enter`}:e.thresholdReached&&(!e.available||e.distance<=e.cancelDistance)?{thresholdReached:!1,event:`cancel`}:{thresholdReached:e.thresholdReached,event:null}}var WE=-1/0;function GE(e=`light`,t){if(!LE()||!PE()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!VE(WE,n)?!1:(WE=n,ME[FE(e)]().catch(()=>void 0),SE(e),!0)}var KE=`button, [role="button"], [role="menuitem"]`;function qE(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],K.useEffect(JE,t)}function JE(){if(!LE())return;let e=YE;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function YE(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(KE);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||GE(`light`))}function XE(){let e=(0,H.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],jE(ZE,t)}function ZE(){if(!LE())return;let e=uE(),t=mt()===`android`,n=-1/0;return mE(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(RE({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!HE(n,e))return;GE()&&(n=e);return}GE()}})}var QE=async e=>{let t=await zt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},$E=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map($E).join(` `).trim():(0,K.isValidElement)(e)?$E(e.props?.children):``,eD=e=>typeof e==`function`?e():e,tD=(e,t)=>{let n=$E(eD(t?.description));return n.length>0?n:$E(e)},nD=Object.assign((...e)=>(GE(),It(...e)),{...It,success:(...e)=>{let[t,n]=e;return GE(),It.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return GE(),It.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return GE(),It.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>QE(tD(t,n))}})},warning:(...e)=>{let[t,n]=e;return GE(),It.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>QE(tD(t,n))}})},loading:(...e)=>(GE(),It.loading(...e)),custom:(...e)=>(GE(),It.custom(...e)),promise:(...e)=>(GE(),It.promise(...e))}),rD=new Set,iD,aD=rD,oD=null,sD=(e,t)=>Ut(Ht.getState().dictionary,e,t),cD=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},lD=e=>{if(!e)return rD;let t=new Set;if(Array.isArray(e.pinnedSessionIds))for(let n of e.pinnedSessionIds)typeof n==`string`&&n&&t.add(n);for(let n of e.directories)for(let e of n.sessions)cD(e)&&t.add(e.id);return t.size===0?rD:t},uD=(e,t)=>{if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0},dD=(e=R,t=u())=>{let n=SD(e,t);if(n===iD&&t===oD)return aD;let r=lD(n);return iD=n,oD=t,aD=uD(aD,r)?aD:r,aD},fD=(e,t,n)=>{let r=!1,i=e.directories.map(e=>{let i=!1,a=e.sessions.map(e=>{if(e.id!==t)return e;let a=e.time?.pinned??null;return(a==null||a===``?null:a)===n?e:(i=!0,r=!0,{...e,time:{...e.time,pinned:n}})});return i?{...e,sessions:a}:e}),a=lD(e),o=new Set(a);return n==null||n===``?o.delete(t):o.add(t),uD(a,o)||(r=!0),r?{...e,directories:i,pinnedSessionIds:[...o]}:e},pD=(e,t,n,r)=>{let i=SD(e,t);if(!i)return null;let a=fD(i,n,r?new Date().toISOString():null);return a!==i&&wD(a,{client:e,transport:t,persist:!1}),i},mD=e=>R.getQueryCache().subscribe(t=>{if(t.type!==`updated`&&t.type!==`removed`)return;let n=t.query.queryKey;!Array.isArray(n)||n[1]!==`sessionIndex`||n[2]!==`snapshot`||e()}),hD=()=>dD(),gD=()=>(0,K.useSyncExternalStore)(mD,hD,vD),_D=()=>{let e=(0,H.c)(6),t=jt(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`sessionIndex`,`pin`],e[0]=n):n=e[0];let r;e[1]===t?r=e[2]:(r={mutationKey:n,mutationFn:yD,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:pD(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&wD(r.previous,{client:t,transport:r.transport,persist:!1}),nD.error(e instanceof Error?e.message:sD(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=r);let i=Mt(r),a;return e[3]!==t||e[4]!==i?(a=e=>{let n=e.trim();if(!n)return;let r=u(),a=SD(t,r);if(!a)return;let o=lD(a).has(n);i.mutate({sessionId:n,nextPinned:!o,transport:r})},e[3]=t,e[4]=i,e[5]=a):a=e[5],Rt(a)};function vD(){return rD}async function yD(e){let{sessionId:t,nextPinned:n}=e;n?await WT(t):await GT(t)}var bD=(e=u())=>P.sessionIndex.snapshot(e),xD=(e=u(),t=m(),n=vt(),r=VT)=>{let i=t,a=n,o=r;return{queryKey:bD(e),queryFn:async({signal:e})=>{let t=await o({signal:e});return t&&sE(i,t,a),t},staleTime:0,gcTime:1/0,initialData:()=>oE(i,a)??void 0,initialDataUpdatedAt:0}},SD=(e=R,t=u())=>e.getQueryData(bD(t))??null,CD=(e=R,t=u(),n=m(),r=vt())=>{let i=xD(t,n,r);return e.getQueryCache().build(e,i),e.getQueryData(i.queryKey)??null},wD=(e,t)=>{if(!nE(e))return;let n=t?.client??R,r=t?.transport??u(),i=t?.runtimeKey??m(),a=t?.storage??vt();n.setQueryData(bD(r),e),t?.persist!==!1&&sE(i,e,a)},TD=(e=R,t=u(),n=m(),r=vt(),i=VT)=>{let a={...xD(t,n,r,i),staleTime:0};return e.getQueryCache().build(e,a),e.fetchQuery(a)},ED=500,DD=20,OD=6e3,kD=7,AD=3,jD=1,MD=2,ND=750,PD=500,FD=1e4,ID=2,LD=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),n()};t.addEventListener(`abort`,i,{once:!0})}),RD=null,zD=0,BD=new Map,VD=new Map,HD=new Map,UD=[],WD=new Set,GD=0,KD=AD,qD=0,JD=null,YD,XD=new Map,ZD=()=>({loadGeneration:zD,runtimeGeneration:f(),transportIdentity:u()}),J=e=>e.loadGeneration===zD&&e.runtimeGeneration===f()&&e.transportIdentity===u(),QD=e=>{let t=e?.status;if(t===429||t===502||t===503)return!0;let n=String(e instanceof Error?e.message:e).toLowerCase();return n.includes(`signal timed out`)||n.includes(`timeout`)},$D=e=>{qD=0,QD(e)&&(KD=KD>AD?AD:jD)},eO=()=>{qD+=1,!(qD<MD||KD>=kD)&&(KD+=1,qD=0)},tO=()=>{for(;GD<KD&&UD.length>0;){let e=UD.shift();if(!e)return;GD+=1,e()}},nO=e=>new Promise((t,n)=>{UD.push(()=>{e().then(t,n).finally(()=>{--GD,tO()})}),tO()}),rO=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},iO=(e,t)=>{if(!t)return e;let n=e,r=t,i=L(n.directory??null),a=L(n.project?.worktree??null),o=L(r.directory??null),s=L(r.project?.worktree??null),c=!1,l={...n};!i&&o&&(l.directory=r.directory,c=!0),!a&&s?(l.project={...r.project??{},...n.project??{},worktree:r.project?.worktree},c=!0):!n.project&&r.project&&(l.project=r.project,c=!0);let u=n.hasChildren,d=r.hasChildren;typeof u!=`boolean`&&typeof d==`boolean`&&(l.hasChildren=d,c=!0);let f=Yp(t);if(f>Yp(e)){let e=n.metadata&&typeof n.metadata==`object`?n.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},r=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};l.metadata={...e,openchamber:{...t,titleRefresh:{...r,activityUpdatedAt:f}}},c=!0}return c?l:e},aO=(e,t)=>{let n=iO(e,t);return n.share===t.share?n:{...n,share:t.share}},oO=e=>{let t=new Map;for(let n of e){let e=rO(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},sO=e=>[e.id,e.title??``,e.time?.created??0,e.time?.updated??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(e.metadata??null),String(e.hasChildren??!1),rO(e)??``].join(`:`),cO=e=>{let t=e;return[e.id,e.title??``,t.parentID??``,e.time?.created??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(t.metadata??null),String(t.hasChildren??!1),rO(e)??``].join(`:`)},lO=(e,t)=>e.time?.updated!==t.time?.updated&&cO(e)===cO(t),uO=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(sO(e[n])!==sO(t[n]))return!1;return!0},dO=e=>!!e.time?.archived,fO=(e,t)=>{let n=new Set,r=!1;for(let t of e){if(!t?.id||n.has(t.id)||dO(t)){r=!0;break}n.add(t.id)}if(!r){let e=new Set;for(let i of t){if(!i?.id||e.has(i.id)||n.has(i.id)||!dO(i)){r=!0;break}e.add(i.id)}}if(!r)return{activeSessions:e,archivedSessions:t};let i=new Map;for(let t of e)t?.id&&i.set(t.id,t);for(let e of t){if(!e?.id)continue;let t=i.get(e.id);i.set(e.id,t?iO(e,t):e)}let a=[],o=[],s=new Set,c=e=>{if(!e?.id||s.has(e.id))return;s.add(e.id);let t=i.get(e.id)??e;dO(t)?o.push(t):a.push(t)};return e.forEach(c),t.forEach(c),{activeSessions:a,archivedSessions:o}},pO=(e,t)=>{if(t.size===0)return e;let n=e.findIndex(e=>t.has(e.id));return n===-1?e:e.filter((e,r)=>r!==n&&!t.has(e.id))},mO=e=>[...e].sort((e,t)=>{let n=Yp(t)-Yp(e);return n===0?t.id.localeCompare(e.id):n}),hO=e=>{let t=new Set;for(let n of e){let e=L(n);e&&t.add(e)}return t},gO=e=>{let t=hO(e);for(let e of t)XD.set(e,(XD.get(e)??0)+1);return t},_O=e=>{let t=new Set;for(let n of e){let e=XD.get(n)??0;if(e<=1){XD.delete(n),t.add(n);continue}XD.set(n,e-1)}return t},vO=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)BD.has(i)||(n.has(i)&&(n===e.loadingDirectories&&(n=new Set(e.loadingDirectories)),n.delete(i)),r.has(i)&&(r===e.refreshingDirectories&&(r=new Set(e.refreshingDirectories)),r.delete(i)));return n===e.loadingDirectories&&r===e.refreshingDirectories?e:{loadingDirectories:n,refreshingDirectories:r}},yO=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},bO=(e,t)=>{let n=yO(e);return{cursor:n,hasMore:e.length===DD&&n!==null&&(t==null||n<t),loadingMore:!1}},xO=(e,t,n)=>{if(n.size===0)return e;let r=new Map(e.map(e=>[e.id,e])),i=new Map;for(let e of t)e?.id&&i.set(e.id,iO(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=rO(e);return!t||!n.has(t)});return mO([...i.values(),...a])},SO=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,CO=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=mO(e),r=n[n.length-1];return r?Yp(r):null},wO=(e,t)=>Yp(e)<=t,TO=(e,t,n,r,i)=>{if(n.size===0)return e;let a=new Map(e.map(e=>[e.id,e])),o=new Map;for(let e of t.values())for(let t of e)t?.id&&o.set(t.id,iO(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=rO(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&wO(e,a)});return mO([...o.values(),...s])},EO=(e,t,n)=>{let r=new Set(t.directories.map(e=>e.directory)),i=new Map;for(let n of t.directories)i.set(n.directory,pO(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=rO(t);!e||!r.has(e)||o.set(e,(o.get(e)??0)+1)}let s=new Map,c=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),a=(o.get(n.directory)??0)>DD;n.hasMore&&a&&r&&SO(r,t)&&c.add(n.directory),s.set(n.directory,CO(i.get(n.directory)??[],n.cursor))}let l=n?TO(e.activeSessions,i,r,s,c):mO(kO(e.activeSessions,a)),u=new Map(e.activePaginationByDirectory),d=new Map(e.sessionIndexSyncByDirectory);for(let r of t.directories){let t={cursor:r.cursor,hasMore:r.hasMore,loadingMore:!1},i=e.activePaginationByDirectory.get(r.directory);u.set(r.directory,n&&c.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),d.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let f=new Set(e.loadedDirectories);for(let e of r)f.add(e);let p=new Set(e.loadingDirectories),m=new Set(e.refreshingDirectories),h=new Set(t.sync.pendingDirectories);for(let e of h)l.some(t=>rO(t)===e)?(m.add(e),p.delete(e)):p.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])p.delete(e),m.delete(e);if(n)for(let e of XD.keys())h.has(e)||BD.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:oO(l),reviewTransferBySessionId:jO(l),cachedDirectories:r,sessionIndexSyncByDirectory:d,activePaginationByDirectory:u,loadedDirectories:f,loadingDirectories:p,refreshingDirectories:m,hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status}},DO=(e,t)=>{let n=pO(t.activeSessions,e.pendingDeletionIds),r=pO(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?mO(kO(e.activeSessions,n)):xO(e.activeSessions,n,t.directories);i=kO(i,r);let a=t.archivedSessions===void 0?void 0:pO(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:xO(e.archivedSessions,a,t.directories),s=fO(i,o);i=s.activeSessions,o=s.archivedSessions,uO(e.activeSessions,i)&&(i=e.activeSessions),uO(e.archivedSessions,o)&&(o=e.archivedSessions);let c=i===e.activeSessions?e.sessionsByDirectory:oO(i),l=e.loadedDirectories,u=!1;for(let n of t.directories)l.has(n)||(u||=(l=new Set(e.loadedDirectories),!0),l.add(n));let d=e.loadingDirectories,f=!1;for(let n of t.directories)d.has(n)&&(f||=(d=new Set(e.loadingDirectories),!0),d.delete(n));let p=t.markReady?`ready`:e.status,m=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.loadedDirectories&&d===e.loadingDirectories&&e.status===p&&e.hasLoaded===m?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:c,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:jO(i),loadedDirectories:l,loadingDirectories:d,hasLoaded:m,status:p}},OO=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=iO(t,r);if(lO(r,i)||sO(r)===sO(i))return e;let a=[...e];return a[n]=i,a},kO=(e,t)=>{if(!t||t.length===0)return e;if(e.length===0)return t;let n=new Map(e.map(e=>[e.id,e]));t.forEach(e=>{n.set(e.id,iO(e,n.get(e.id)))});let r=[],i=new Set;return e.forEach(e=>{let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),t.forEach(e=>{if(i.has(e.id))return;let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),r},AO=(e,t,n,r)=>{let i=fO(t,n),a=pO(i.activeSessions,e.pendingDeletionIds),o=pO(i.archivedSessions,e.pendingDeletionIds),s=uO(e.activeSessions,a)?e.activeSessions:a,c=uO(e.archivedSessions,o)?e.archivedSessions:o,l=s===e.activeSessions?e.sessionsByDirectory:oO(s),u=s===e.activeSessions?e.reviewTransferBySessionId:jO(s);return s===e.activeSessions&&c===e.archivedSessions&&l===e.sessionsByDirectory&&u===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:s,archivedSessions:c,sessionsByDirectory:l,reviewTransferBySessionId:u,hasLoaded:!0,status:r}},jO=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=kT(r);if(!e)continue;let i=e===`review-to-original`?Rm(r):Lm(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=De((e,t)=>({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0},applySnapshot:(t,n,r=`ready`)=>{e(e=>AO(e,t,n,r))},resetForRuntimeSwitch:()=>{zD+=1,PT(),RD=null,BD.clear(),VD.clear(),HD.clear(),WD.forEach(e=>e.abort()),WD.clear(),KD=AD,qD=0,JD?.abort(),JD=null,YD=void 0,XD.clear(),e({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}})},hydrateSessionIndex:async()=>{if(YD)return YD;if(t().hasHydratedSessionIndex)return;let n=ZD(),r=u(),i=m(),a=CD(void 0,r,i);a&&J(n)&&e(e=>({...EO(e,a,!1),hasCachedSessionIndex:!0}));let o=(async()=>{try{let t;try{t=await TD(void 0,r,i)}catch(e){if(!J(n))return;if(a){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...EO(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return YD=o.finally(()=>{YD===o&&(YD=void 0)}),YD},startSessionIndexStartup:async(n,r)=>{let i=ZD();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=hO([...n,...t().cachedDirectories]);if(a.size===0){e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let n=t();return{activeSessions:n.activeSessions,archivedSessions:n.archivedSessions}}let o=t().hasCachedSessionIndex,s=r?.priorityDirectories?hO(r.priorityDirectories):null,c=!!(o&&s&&s.size>0&&[...s].some(e=>a.has(e))),l=c?new Set([...a].filter(e=>s.has(e))):a,u=c?new Set([...a].filter(e=>!s.has(e))):new Set,d={activeSessions:t().activeSessions,archivedSessions:t().archivedSessions},f=null,p=ZD();try{if(f=await HT([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&wD(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=LO(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}JD?.abort();let h=new AbortController;JD=h;let g=gO(l),_=()=>{if(!J(i))return;let t=_O(g);t.size!==0&&e(e=>vO(e,t))},v=!o,y=f;v||e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let b=()=>void 0,x=new Promise(e=>{b=e}),S=!1,C=()=>{S||(S=!0,b())};if((async()=>{let t=y,n=PD;for(;!h.signal.aborted&&J(i);){e(e=>({...EO(e,t,!0),startupSyncProgress:v?{active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total}:e.startupSyncProgress})),t.sync.active||C();let r=ZD(),a=await UT(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=ZD();try{o=await TD()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await LD(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*ID,FD);continue}if(!J(e)){o=void 0;break}if(!o)break;n=PD;break}if(o===void 0||!o)break;t=o}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{_(),C(),JD===h&&(JD=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(RD)return RD;e(e=>e.status===`loading`?e:{status:`loading`});let r=zD,i=Promise.resolve().then(async()=>{let a=t();try{if(await NT(),r!==zD)return{activeSessions:[],archivedSessions:[]};let i=B.getSdkClient(),[o,s]=await Promise.allSettled([_m(i,{archived:!1,pageSize:ED}),_m(i,{archived:!0,pageSize:ED})]),c=kO(a.activeSessions,n),l=o.status===`fulfilled`?o.value:c,u=s.status===`fulfilled`?s.value:a.archivedSessions;return o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,o.reason),s.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,s.reason),r===zD?(e(e=>{let t=o.status===`fulfilled`&&s.status===`fulfilled`?`ready`:`error`,n=AO(e,l,u,t);if(o.status!==`fulfilled`||s.status!==`fulfilled`)return n===e?e:n;let r=new Set([...o.value.map(e=>e.id),...s.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}}catch(i){if(r!==zD)return{activeSessions:[],archivedSessions:[]};let o=kO(a.activeSessions,n),s=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,i),e(e=>AO(e,o,s,`error`)),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}}finally{RD===i&&(RD=null)}});return RD=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=hO(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=zD;e(e=>{let t=kO(e.activeSessions,pO(r??[],e.pendingDeletionIds)),n=new Set(e.loadingDirectories),i=new Set(e.refreshingDirectories);for(let t of a)i.add(t),e.loadedDirectories.has(t)||e.sessionsByDirectory.has(t)||r?.some(e=>rO(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:oO(t),reviewTransferBySessionId:jO(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=BD.get(n);if(r)return r;let a=nO(async()=>{let r=new AbortController;WD.add(r);try{if(o!==zD||(await NT(),o!==zD))return!1;let a=await _m(B.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:DD,maxItems:DD,timeoutMs:OD,retryAttempts:2,signal:r.signal});if(o!==zD)return!1;if(e(e=>{let t=DO(e,{activeSessions:a,directories:new Set([n]),markReady:!0,mergeOnly:i?.incrementalStart!==void 0}),r=new Set(e.refreshingDirectories),o=new Map(e.activePaginationByDirectory);return r.delete(n),i?.incrementalStart===void 0&&o.set(n,bO(a)),t===e?{refreshingDirectories:r,activePaginationByDirectory:o}:{...t,refreshingDirectories:r,activePaginationByDirectory:o}}),i?.persist!==!1){let e=t().sessionsByDirectory.get(n)??[],r=t().activePaginationByDirectory.get(n)??bO(a);try{await KT({directory:n,sessions:e,cursor:r.cursor,hasMore:r.hasMore,fullSync:i?.incrementalStart===void 0})}catch(e){console.warn(`[GlobalSessions] Failed to persist session index for ${n}:`,e)}}return eO(),!0}catch(t){return $D(t),o===zD&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{WD.delete(r)}});return BD.set(n,a),a.finally(()=>{BD.get(n)===a&&BD.delete(n)}),a}),c=await Promise.all(s);return o===zD?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=ZD(),a=hO(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=ZD();try{if(o=await HT([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&wD(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;WD.add(c);let l=gO(a),u=()=>{if(!J(i))return;let t=_O(l);t.size!==0&&e(e=>vO(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>EO(e,t,!0)),t.sync.active);){let e=ZD(),n=await UT(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=ZD(),a;try{a=await TD()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),WD.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=L(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=HD.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=zD;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=nO(async()=>{let t=new AbortController;WD.add(t);try{if(await NT(),o!==zD)return!1;let n=await _m(B.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:DD,maxItems:DD,timeoutMs:OD,retryAttempts:2,signal:t.signal});return o===zD&&(e(e=>{let t=e.activeSessions.filter(e=>rO(e)===r),i=new Map(t.map(e=>[e.id,e]));pO(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,iO(e,i.get(e.id)))});let o=mO([...i.values()]),s=xO(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,bO(n,a.cursor)),{activeSessions:uO(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:oO(s),reviewTransferBySessionId:jO(s),activePaginationByDirectory:c}}),eO(),!0)}catch(t){return $D(t),o===zD&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{WD.delete(t)}});HD.set(r,s);try{await s}finally{HD.get(r)===s&&HD.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=hO(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=zD;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=VD.get(t);if(n)return n;let r=nO(async()=>{let n=new AbortController;WD.add(n);try{if(i!==zD||(await NT(),i!==zD))return!1;let r=await _m(B.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:DD,maxItems:DD,timeoutMs:OD,retryAttempts:2,signal:n.signal});return i===zD&&(e(e=>{let n=xO(e.archivedSessions,pO(r,e.pendingDeletionIds),new Set([t])),i=fO(e.activeSessions,n),a=uO(e.activeSessions,i.activeSessions)?e.activeSessions:i.activeSessions,o=uO(e.archivedSessions,i.archivedSessions)?e.archivedSessions:i.archivedSessions,s=new Set(e.archivedLoadedDirectories),c=new Set(e.archivedLoadingDirectories);return s.add(t),c.delete(t),{activeSessions:a,archivedSessions:o,sessionsByDirectory:a===e.activeSessions?e.sessionsByDirectory:oO(a),reviewTransferBySessionId:a===e.activeSessions?e.reviewTransferBySessionId:jO(a),archivedLoadedDirectories:s,archivedLoadingDirectories:c}}),!0)}catch(n){return i===zD&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{WD.delete(n)}});return VD.set(t,r),r.finally(()=>{VD.get(t)===r&&VD.delete(t)}),r});return await Promise.all(a),i===zD?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!pm(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=iO(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=dO(t),i=r?e.activeSessions.filter(e=>e.id!==n.id):OO(e.activeSessions,t),a=r?OO(e.archivedSessions,t):e.archivedSessions.filter(e=>e.id!==n.id);return i===e.activeSessions&&a===e.archivedSessions?e:{activeSessions:i,archivedSessions:a,sessionsByDirectory:i===e.activeSessions?e.sessionsByDirectory:oO(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:jO(i)}})},markSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)!r||e.pendingDeletionIds.has(r)||(n??=new Set(e.pendingDeletionIds),n.add(r));return n?{pendingDeletionIds:n}:e})},clearSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)e.pendingDeletionIds.has(r)&&(n??=new Set(e.pendingDeletionIds),n.delete(r));return n?{pendingDeletionIds:n}:e})},removeSessions:t=>{let n=t instanceof Set?t:new Set(t);n.size!==0&&e(e=>{let t=e.activeSessions.filter(e=>!n.has(e.id)),r=e.archivedSessions.filter(e=>!n.has(e.id));return t.length===e.activeSessions.length&&r.length===e.archivedSessions.length?e:{activeSessions:t,archivedSessions:r,sessionsByDirectory:oO(t),reviewTransferBySessionId:jO(t)}})},archiveSessions:(t,n=Date.now())=>{let r=t instanceof Set?t:new Set(t);r.size!==0&&e(e=>{let t=[],i=e.activeSessions.filter(e=>!r.has(e.id)||(t.push({...e,time:{...e.time,archived:n}}),!1));if(t.length===0)return e;let a=e.archivedSessions.filter(e=>!r.has(e.id));return{activeSessions:i,archivedSessions:[...t,...a],sessionsByDirectory:oO(i),reviewTransferBySessionId:jO(i)}})}})),MO=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},NO=async()=>{await Y.getState().hydrateSessionIndex()},PO=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),FO=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),IO=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),LO=async(e,t,n)=>{let r=hO(e),i=zD;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===zD&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===zD&&await new Promise(e=>setTimeout(e,ND));while(o.size>0&&n?.retryFailed===!0&&i===zD);if(i===zD){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await qT(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===zD&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},RO=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),zO=async e=>Y.getState().loadMoreSessionsForDirectory(e),BO=(e,t)=>{if(!t)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>t[n]===e[n])},VO=`oc.sessions.folders`,HO=`oc.sessions.folderCollapse`,UO=`oc.sessions.order`,WO=`oc.sessions.orderActivity`,GO=`/api/session-folders`,KO=250,qO=`__archived__:`,JO=A(vt()),YO=null,XO=!1,ZO=!1,QO=0,$O,ek,tk=null,nk=null,rk=()=>typeof window>`u`?!1:Se()?!0:window.__VSCODE_CONFIG__!==void 0,ik=(e,t)=>{if(typeof window>`u`||rk())return;YO&&clearTimeout(YO);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);YO=setTimeout(()=>{YO=null,_(GO,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},KO)},ak=()=>{try{let e=JO.getItem(VO);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=[];for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=typeof n.id==`string`?n.id.trim():``,i=typeof n.name==`string`?n.name.trim():``,a=typeof n.createdAt==`number`?n.createdAt:0;if(!r||!i)continue;let o=Array.isArray(n.sessionIds)?n.sessionIds.filter(e=>typeof e==`string`&&e.trim().length>0):[],s=typeof n.parentId==`string`?n.parentId:null;t.push({id:r,name:i,sessionIds:o,createdAt:a,parentId:s})}t.length>0&&(n[e]=t)}return n}catch{return{}}},ok=()=>{try{let e=JO.getItem(HO);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}},sk=()=>{try{let e=JO.getItem(UO);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!Array.isArray(t))return[];let n=t.filter(e=>typeof e==`string`&&e.length>0);return n.length>0?[[e,n]]:[]}))}catch{return{}}},ck=()=>{try{let e=JO.getItem(WO);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!t||typeof t!=`object`||Array.isArray(t))return[];let n=Object.fromEntries(Object.entries(t).flatMap(([e,t])=>typeof t==`number`&&Number.isFinite(t)?[[e,t]]:[]));return Object.keys(n).length>0?[[e,n]]:[]}))}catch{return{}}},lk=(e,t)=>{try{JO.setItem(UO,JSON.stringify(e)),JO.setItem(WO,JSON.stringify(t))}catch{}},uk=e=>{tk=e,clearTimeout($O),$O=setTimeout(()=>{try{JO.setItem(VO,JSON.stringify(e)),tk=null}catch{}},300)},dk=e=>{nk=e,clearTimeout(ek),ek=setTimeout(()=>{try{JO.setItem(HO,JSON.stringify(Array.from(e))),nk=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(tk!==null){clearTimeout($O);try{JO.setItem(VO,JSON.stringify(tk))}catch{}tk=null}if(nk!==null){clearTimeout(ek);try{JO.setItem(HO,JSON.stringify(Array.from(nk)))}catch{}nk=null}});var fk=(e,t)=>{uk(e),dk(t),ik(e,t)},pk=()=>_e(),mk=(e,t,n)=>{let r=new Set(t.map(e=>e.id)),i=null;for(let t of e)!r.has(t.id)&&n.has(t.id)&&(i||=new Set(n),i.delete(t.id));return i},hk=(e,t)=>e.startsWith(qO)?t.filter(e=>e.sessionIds.length>0):t,gk=De()(Ae((e,t)=>({foldersMap:ak(),collapsedFolderIds:ok(),sessionOrderByScope:sk(),sessionOrderActivityByScope:ck(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:pk(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),fk(l,t().collapsedFolderIds),o},renameFolder:(n,r,i)=>{let a=i.trim();if(!a||!n)return;let o=t().foldersMap,s=o[n];if(!s)return;let c=s.map(e=>e.id===r?{...e,name:a}:e),l={...o,[n]:c};e({foldersMap:l}),fk(l,t().collapsedFolderIds)},deleteFolder:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set([r]),s=!0;for(;s;){s=!1;for(let e of a)e.parentId&&o.has(e.parentId)&&!o.has(e.id)&&(o.add(e.id),s=!0)}let c=a.filter(e=>!o.has(e.id)),l={...i,[n]:c};e({foldersMap:l}),fk(l,t().collapsedFolderIds);let u=t().collapsedFolderIds;if(Array.from(o).some(e=>u.has(e))){let t=new Set(u);o.forEach(e=>t.delete(e)),e({collapsedFolderIds:t}),fk(l,t)}},addSessionToFolder:(n,r,i)=>{if(!n||!r||!i)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=o.find(e=>e.id===r);if(!s)return;let c=o.reduce((e,t)=>e+ +!!t.sessionIds.includes(i),0);if(s.sessionIds.includes(i)&&c===1)return;let l=o.map(e=>{let t=e.sessionIds.filter(e=>e!==i);return e.id===r?{...e,sessionIds:[...t,i]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),u={...a,[n]:l},d=mk(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),fk(u,d??t().collapsedFolderIds)},addSessionsToFolder:(n,r,i)=>{if(!n||!r||i.length===0)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=new Set(i.filter(e=>typeof e==`string`&&e.length>0));if(s.size===0)return;let c=o.find(e=>e.id===r);if(!c)return;let l=!1;for(let e of o){for(let t of s)if(e.sessionIds.includes(t)&&(e.id!==r||!c.sessionIds.includes(t))){l=!0;break}if(l)break}if(!l){for(let e of s)if(!c.sessionIds.includes(e)){l=!0;break}}if(!l)return;let u=o.map(e=>{let t=e.sessionIds.filter(e=>!s.has(e));return e.id===r?{...e,sessionIds:[...t,...s]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),d={...a,[n]:u},f=mk(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),fk(d,f??t().collapsedFolderIds)},removeSessionsFromFolders:(n,r)=>{if(!n||r.length===0)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set(r.filter(e=>typeof e==`string`&&e.length>0));if(o.size===0)return;let s=!1,c=a.map(e=>{let t=e.sessionIds.filter(e=>!o.has(e));return t.length===e.sessionIds.length?e:(s=!0,{...e,sessionIds:t})});if(!s)return;let l={...i,[n]:c},u=mk(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),fk(l,u??t().collapsedFolderIds)},removeSessionFromFolder:(n,r)=>{if(!n||!r)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=!1,s=a.map(e=>{let t=e.sessionIds.filter(e=>e!==r);return t.length===e.sessionIds.length?e:(o=!0,{...e,sessionIds:t})});if(!o)return;let c={...i,[n]:s},l=mk(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),fk(c,l??t().collapsedFolderIds)},toggleFolderCollapse:n=>{let r=t().collapsedFolderIds,i=new Set(r);i.has(n)?i.delete(n):i.add(n),e({collapsedFolderIds:i}),fk(t().foldersMap,i)},cleanupSessions:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n],o=t().sessionOrderByScope[n]??[],s=t().sessionOrderActivityByScope[n]??{};if((!a||a.length===0)&&o.length===0&&Object.keys(s).length===0)return;let c=!1,l=(a??[]).map(e=>{let t=e.sessionIds.filter(e=>r.has(e));return t.length===e.sessionIds.length?e:(c=!0,{...e,sessionIds:t})}),u=hk(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.keys(s).some(e=>!r.has(e));if(!c&&!f&&!p)return;let m={...i,[n]:u},h=mk(a??[],u,t().collapsedFolderIds),g=f?{...t().sessionOrderByScope,[n]:d}:t().sessionOrderByScope,_=f||p?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):t().sessionOrderActivityByScope;e(h?{foldersMap:m,collapsedFolderIds:h,sessionOrderByScope:g,sessionOrderActivityByScope:_}:{foldersMap:m,sessionOrderByScope:g,sessionOrderActivityByScope:_}),fk(m,h??t().collapsedFolderIds),lk(g,_)},getSessionFolderId:(e,n)=>{if(!e||!n)return null;let r=t().foldersMap[e];if(!r)return null;for(let e of r)if(e.sessionIds.includes(n))return e.id;return null},reorderSessions:(n,r,i,a,o)=>{if(!n||i===a)return;let s=Array.from(new Set(r)),c=s.indexOf(i),l=s.indexOf(a);if(c===-1||l===-1)return;let u=t().sessionOrderByScope[n]??[],d=t().sessionOrderActivityByScope[n],f=BO(o,d),p=f?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,m=p.indexOf(i),h=p.indexOf(a);if(m===-1||h===-1||m===h)return;let g=[...p];g.splice(m,1),g.splice(h,0,i);let _=new Set(s),v=f?u.filter(e=>!_.has(e)):[],y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:y,sessionOrderActivityByScope:b}),lk(y,b)}}),{name:`session-folders-store`})),_k=async()=>{if(XO||ZO||typeof window>`u`)return;if(rk()){XO=!0;return}ZO=!0;let e=QO;try{let t=await _(GO).catch(()=>null);if(e!==QO||!t||!t.ok)return;let n=await t.json().catch(()=>null);if(!n)return;let r=n.foldersMap&&typeof n.foldersMap==`object`?n.foldersMap:{},i=Array.isArray(n.collapsedFolderIds)?new Set(n.collapsedFolderIds.filter(e=>typeof e==`string`)):new Set;if(e!==QO||!(Object.keys(r).length>0||i.size>0))return;gk.setState({foldersMap:r,collapsedFolderIds:i}),uk(r),dk(i)}catch{}finally{e===QO&&(ZO=!1,XO=!0)}},vk=()=>{typeof window>`u`||_k()},yk=()=>{QO+=1,XO=!1,ZO=!1,tk=null,nk=null,$O&&=(clearTimeout($O),void 0),ek&&=(clearTimeout(ek),void 0),gk.setState({foldersMap:ak(),collapsedFolderIds:ok(),sessionOrderByScope:sk(),sessionOrderActivityByScope:ck()}),_k()};typeof window<`u`&&s(e=>{h(e)&&yk()}),vk();var bk=new Map,xk=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},Sk=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,Ck=()=>{let e=Sk();return bk.set(e,xk()),e},wk=(e,t)=>{let n=bk.get(e);n&&(bk.delete(e),n.resolve(t))},Tk=(e,t)=>{let n=bk.get(e);n&&(bk.delete(e),n.reject(t))},Ek=e=>{let t=bk.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},Dk=3e5,Ok=5e3,kk=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,Ak=new Map,jk=new Map,Mk=new Map,Nk=new Map,Pk=new Set,Fk=null,Ik=!1,Lk=e=>kk(e),Rk=e=>Nk.get(e)??0,zk=e=>{let t=Rk(e)+1;return Nk.set(e,t),t},Bk=async e=>{let t=b()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):qe(e)},Vk=(e,t)=>{for(let n of Pk)try{n(e,t)}catch{}},Hk=e=>(Pk.add(e),()=>{Pk.delete(e)}),Uk=(e,t)=>{let n=Lk(e);if(!n)return!1;let r=Ak.get(n),i=r?.status===`pending`&&t.status!==`pending`;return r&&typeof r.updatedAt==`number`&&Number.isFinite(r.updatedAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)&&t.updatedAt<r.updatedAt&&!i?!1:(Ak.set(n,t),t.status!==`pending`&&jk.delete(n),Vk(n,t),!0)},Wk=(e,t)=>{let n=Lk(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?Uk(n,{status:r,error:typeof t.error==`string`&&t.error.trim().length>0?t.error.trim():null,updatedAt:typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now()}):!1},Gk=()=>{Fk||=An(e=>{e.type===`worktree-bootstrap-status`&&Wk(e.directory,e)}),!(typeof window>`u`||Ik)&&(Ik=!0,window.addEventListener(`openchamber:worktree-bootstrap-status`,(e=>{let t=e.detail;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=typeof n.directory==`string`?n.directory:``;r&&Wk(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},Kk=e=>{let t=Lk(e);t&&(Gk(),Uk(t,{status:`pending`,error:null,updatedAt:Date.now()}))},qk=e=>{let t=Lk(e);if(!t)return;zk(t);let n=Mk.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,Mk.delete(t));let r=jk.get(t);r&&(r.dispose(),jk.delete(t)),Ak.delete(t)},Jk=e=>{let t=Lk(e);return t?Ak.get(t)??null:null},Yk=(e,t)=>{let n=Ht.getState().dictionary;return Ut(n,e,t)},Xk=e=>({status:`failed`,error:e,updatedAt:Date.now()}),Zk=(e,t,n)=>{let r=Xk(t);return Uk(e,r),n?.(r),r},Qk=async(e,t=()=>!0)=>{try{let n=await Bk(e);return t()?Uk(e,n)?n:Jk(e):null}catch{return null}},$k=(e,t,n=Ok)=>{let r=Lk(e),i=Rk(r);Gk();let a=!1,o=null,s=null,c=!1,l=null,u=null,d=()=>{},f=()=>{o&&clearTimeout(o),o=null,s&&clearInterval(s),s=null},p=()=>{a||s||(s=setInterval(()=>{a||c||(c=!0,Qk(e,()=>!a&&Rk(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):Ok))},m=e=>{a||(a=!0,f(),l?.(),l=null,e&&u?.(e))},h=new Promise((n,i)=>{u=i;let s=e=>{a||(a=!0,f(),l?.(),l=null,e())};d=e=>{if(e){if(e.status===`ready`){s(()=>n(e));return}e.status===`failed`&&s(()=>i(Error(e.error||`Worktree bootstrap failed`)))}},l=Hk((e,t)=>{Lk(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=Zk(e,Yk(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(Ak.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},eA=async(e,t,n,r,i,a)=>{let o=Lk(e),s=$k(e,n,r);t.disposeSettlement=s.dispose;let c=await Qk(e,()=>!t.cancelled&&Mk.get(o)===t&&Rk(o)===t.epoch);if(t.cancelled||Mk.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),nD.error(Yk(`worktree.bootstrap.toast.failed`),{description:c.error||Yk(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||Mk.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||Mk.get(o)!==t)return;let r=Jk(e);if(r?.status===`failed`){i?.(r),nD.error(Yk(`worktree.bootstrap.toast.failed`),{description:r.error||Yk(`worktree.bootstrap.toast.failedDescription`)});return}let a=Zk(e,n instanceof Error?n.message:String(n),i);nD.error(Yk(`worktree.bootstrap.toast.failed`),{description:a.error||Yk(`worktree.bootstrap.toast.failedDescription`)})}},tA=(e,t)=>{let n=Lk(e);if(!n||Ak.get(n)?.status!==`pending`||Mk.has(n))return;let r={cancelled:!1,epoch:Rk(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=eA(e,r,t?.timeoutMs??Dk,t?.pollIntervalMs??Ok,t?.onFailed,t?.onReady).finally(()=>{Mk.get(n)===r&&Mk.delete(n)}),Mk.set(n,r)},nA=async(e,t=Dk)=>{let n=Lk(e);if(!n)return;let r=Ak.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=jk.get(n);if(i)return i.promise;let a=()=>{},o=Rk(n),s=(async()=>{let r=$k(e,t,Ok);a=r.dispose;let i=await Qk(e,()=>Rk(n)===o);if(Rk(n)!==o){r.dispose();return}if(i?.status===`ready`){r.dispose();return}if(i?.status===`failed`)throw r.dispose(),Error(i.error||`Worktree bootstrap failed`);r.startCompensation(),await r.promise})().finally(()=>{jk.get(n)?.promise===s&&jk.delete(n)});return jk.set(n,{promise:s,dispose:()=>a()}),s},rA=`openchamber.json`,iA=`.openchamber`,aA=[`.config`,`openchamber`,`projects`];function oA(){let e=b();return e?.files?e.files:null}var sA=80,cA=4e3,lA=2e3,uA=300,dA=new Set([`macos`,`linux`,`windows`]),fA=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},pA=(e,t)=>{let n=fA(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},mA=e=>pA(pA(e,iA),rA),hA=()=>{let e=`/api`;return e.startsWith(`/`),e},gA=async(e,t)=>{try{let n=await _(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},_A=async e=>{let t=oA();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await gA(`${hA()}/fs/mkdir`,{path:e})).ok},vA=async e=>{let t=oA();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await _(`${hA()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},yA=async(e,t)=>{let n=oA();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await gA(`${hA()}/fs/write`,{path:e,content:t})).ok},bA=async()=>{try{let e=await _(`${hA()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return fA(n)}catch{}if(!Se()){let e=await le().catch(()=>null);if(e&&e.trim().length>0)return fA(e)}return null},xA=async()=>{let e=await bA();return e?aA.reduce((e,t)=>pA(e,t),e):null},SA=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?fA(t):``;return n&&xe(n)||null},CA=async e=>{let t=await xA();if(!t)return null;let n=SA(e);return n?pA(t,`${n}.json`):null},wA=(e,t)=>e.length<=t?e:e.slice(0,t),TA=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!dA.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},EA=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=wA(typeof e.name==`string`?e.name.trim():``,sA),o=wA(typeof e.command==`string`?e.command.trim():``,cA);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=TA(e.platforms),l=e.autoOpenUrl===!0,u=wA(typeof e.openUrl==`string`?e.openUrl.trim():``,lA),d=wA(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,uA);t.push({id:i,name:a,command:o,icon:s||null,...l?{autoOpenUrl:!0}:{},...u?{openUrl:u}:{},...d?{desktopOpenSshForward:d}:{},...c.length>0?{platforms:c}:{}})}return t},DA=e=>{let t=EA(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}};async function OA(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await CA(e),r=async e=>{let t=await vA(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(mA(t)));if(!a)return null;try{await kA(e,a)&&await BA(t)}catch{}return a}async function kA(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await xA(),i=await CA(e);if(!r||!i)return!1;try{if(!await _A(r))return!1;let e=await vA(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await yA(i,JSON.stringify({...a,...t,...o,projectPath:fA(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function AA(e,t){return kA(e,{...await OA(e)||{},...t})}async function jA(e){return(await OA(e))?.[`setup-worktree`]??[]}async function MA(e,t){return AA(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function NA(e){return(await OA(e))?.[`setup-worktree-wait`]===!0}async function PA(e,t){return AA(e,{"setup-worktree-wait":t})}async function FA(e){let t=await OA(e);return we(t?.draftStarters)}async function IA(e,t){return AA(e,{draftStarters:we(t)})}async function LA(e){let t=await OA(e);return DA({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function RA(e,t){let n=DA({actions:t.actions,primaryActionId:t.primaryActionId});return AA(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function zA(e,t){return e.replace(/\$ROOT_PROJECT_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_PROJECT_PATH\}/g,t.rootWorktreePath).replace(/\$ROOT_WORKTREE_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_WORKTREE_PATH\}/g,t.rootWorktreePath)}async function BA(e){let t=mA(e),n=oA();if(n?.delete)try{await n.delete(t);return}catch{}try{await gA(`${hA()}/fs/delete`,{path:t})}catch{}}var VA=e=>typeof e==`number`&&Number.isFinite(e)?e:0,HA=e=>VA(e.input)+VA(e.output)+VA(e.reasoning)+VA(e.cache?.read)+VA(e.cache?.write),UA=e=>e?.type===`compaction`,WA=e=>!!e&&e.some(UA),GA=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&WA(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=HA(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},KA=500,qA=2592e6;function JA(e){let t=Date.now()-qA,n=e.filter(e=>e.time>=t);return n.length<=KA?n:n.slice(n.length-KA)}function YA(e){let t={session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}};for(let n of e)n.viewed||(n.session&&(t.session.unseenCount[n.session]=(t.session.unseenCount[n.session]??0)+1,n.type===`error`&&(t.session.unseenHasError[n.session]=!0)),n.directory&&(t.project.unseenCount[n.directory]=(t.project.unseenCount[n.directory]??0)+1,n.type===`error`&&(t.project.unseenHasError[n.directory]=!0)));return t}var XA=De((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=JA([...r,n]);e({list:i,index:YA(i)})},markSessionViewed:n=>{let r=t();if((r.index.session.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.session===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:YA(i)})},markProjectViewed:n=>{let r=t();if((r.index.project.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.directory===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:YA(i)})},sessionUnseenCount:e=>t().index.session.unseenCount[e]??0,sessionHasError:e=>t().index.session.unseenHasError[e]??!1,projectUnseenCount:e=>t().index.project.unseenCount[e]??0,projectHasError:e=>t().index.project.unseenHasError[e]??!1}));function ZA(e){XA.getState().append(e)}function QA(e){XA.getState().markSessionViewed(e)}function $A(e){let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),XA(n)}var ej=/^(.*)\.(\d+)$/,tj=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`,`session.step.`,`session.text.`,`session.reasoning.`,`session.tool.`,`session.compaction.`],nj=new Set([`session.next.step.ended`,`session.next.step.failed`,`session.step.ended`,`session.step.failed`]);function rj(e){return ej.exec(e)?.[1]??e}function ij(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function aj(e){let t=e.sessionID;if(typeof t==`string`&&t.length>0)return t;let n=e.sessionId;if(typeof n==`string`&&n.length>0)return n}function oj(e){let t=ij(e.durable);if(!t)return!1;let n=t.kind??t.type??t.source;if(typeof n==`string`&&n.toLowerCase()===`sync`||t.sync===!0)return!0;let r=t.aggregateID;return!!(typeof r==`string`&&r.startsWith(`sync:`))}function sj(e){let t=ij(e.location);if(t){let e=t.path??t.directory;if(typeof e==`string`&&e.length>0)return e}let n=e.directory;if(typeof n==`string`&&n.length>0)return n}function cj(e){let t=ij(e);if(!t)return e;if(t.payload&&typeof t.payload==`object`){let e=t.payload;if(typeof e.type==`string`)return{...e,...typeof t.directory==`string`&&!sj(e)?{directory:t.directory}:{}}}return e}function lj(e,t){if(e===`session.status`){let e=aj(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function uj(e,t){let n=aj(t);return n?e===`session.next.prompt.admitted`?{admissionHint:{sessionID:n,messageID:typeof t.messageID==`string`?t.messageID:void 0},domainActivityHint:{sessionID:n,kind:`activity`}}:nj.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:tj.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function dj(e){let t=ij(cj(e));if(!t)return{action:`drop`,reason:`invalid`};let n=t.type;if(typeof n!=`string`||n.length===0)return{action:`drop`,reason:`invalid`};if(oj(t))return{action:`drop`,reason:`sync-duplicate`};let r=rj(n),i=ij(t.data),a=ij(t.properties),o=i??a;if(!o)return r.startsWith(`openchamber:`)?{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:a??{},locationDirectory:sj(t)}}:{action:`drop`,reason:`invalid`};let s={...lj(r,o)};typeof t.created==`number`&&Number.isFinite(t.created)&&t.created>0&&typeof s.eventCreated!=`number`&&(s.eventCreated=t.created);let c=sj(t)??sj(o)??(()=>{let e=ij(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=uj(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function fj(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var pj=33,mj=200,hj=1e4,gj=8,_j=250,vj=3e4,yj=6e4,bj=2,xj=2e3,Sj=8e3,Cj=250,wj=5e3,Tj=6e4,Ej=8,Dj=e=>{let t=e;if(t.type!==`openchamber:session-status`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:typeof t.properties?.sessionId==`string`&&t.properties.sessionId.length>0?t.properties.sessionId:``,r=typeof t.properties?.status==`string`?t.properties.status:``;if(!n||!r)return null;let i=null;if(r===`idle`||r===`busy`)i={type:r};else if(r===`retry`){let e=t.properties?.metadata;typeof e?.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`&&(i={type:`retry`,attempt:e.attempt,message:e.message,next:e.next})}return i?{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-status-${n}-${Date.now()}`,type:`session.status`,properties:{sessionID:n,status:i}}:null},Oj=e=>{let t=e;if(t.type!==`openchamber:session-metadata`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:``,r=t.properties?.metadata;return!n||!r||typeof r!=`object`||Array.isArray(r)?null:{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-metadata-${n}-${Date.now()}`,type:`openchamber:session-metadata`,properties:{sessionID:n,metadata:r}}},kj=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=Dj(e);if(t){let e=t.properties;return{status:`event`,event:t,normalized:{id:typeof t.id==`string`?t.id:void 0,type:`session.status`,properties:e}}}let n=Oj(e);if(n){let e=n.properties;return{status:`event`,event:n,normalized:{id:typeof n.id==`string`?n.id:void 0,type:`openchamber:session-metadata`,properties:e}}}let r=dj(e);return r.action===`drop`?r.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:fj(r.event),normalized:r.event}};function Aj(e,t,n,r){if(typeof t==`object`&&t&&typeof t.data==`object`&&t.data!==null&&r&&r.length>0)return r;let i=typeof e==`object`&&e&&typeof e.directory==`string`?e.directory:null;if(i&&i.length>0)return i;if(r&&r.length>0)return r;let a=typeof n.properties==`object`&&n.properties!==null?n.properties:null,o=typeof a?.directory==`string`?a.directory:null;if(o&&o.length>0)return o;let s=typeof a?.info==`object`&&a.info!==null?a.info:null,c=typeof s?.directory==`string`?s.directory:null;return c&&c.length>0?c:`global`}function jj(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type==`string`?e:t.payload&&typeof t.payload==`object`&&typeof t.payload.type==`string`?t.payload:null}function Mj(e){let t=`/api`;try{let e=B;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`,r={};return e&&e.length>0&&(r.lastEventId=e),d()||(r.includeReasoning=`false`),c().websocket(`${n}global/event/ws`,Object.keys(r).length>0?r:void 0)}function Nj(e){let t=Mj(e);return Ye(t)}function Pj(e){let{sdk:t,onEvent:n,onFlushStart:o,onFlushEnd:s,onNormalizedEvent:c,onReconnect:l,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:p,onTransportActivity:m,onTransportSwitch:h,routeDirectory:g,transport:_=`auto`,heartbeatTimeoutMs:v=vj,reconnectDelayMs:y=_j,wsReadyTimeoutMs:b}=e,x=b??(a()?Sj:xj),S=new AbortController,C=!1,w,T=0,E,D=0,O=null,k=new Map,A=e=>{let t=k.get(e);return t||(t={queue:[],buffer:[],coalesced:new Map,timer:void 0,last:0},k.set(e,t),t)},j=e=>{if(e.type===`session.status`)return`session.status:${e.properties.sessionID}`;if(e.type===`session.updated`){let t=e.properties;return t.info?.id?`session.updated:${t.info.id}`:void 0}if(e.type===`lsp.updated`)return`lsp.updated`;if(e.type===`message.part.delta`){let t=e.properties;return`message.part.delta:${t.messageID}:${t.partID}:${t.field}`}if(e.type===`session.text.delta`||e.type===`session.reasoning.delta`){let t=e.properties;return t.assistantMessageID?`${e.type}:${t.assistantMessageID}:${t.ordinal??0}`:void 0}if(e.type===`session.tool.input.delta`){let t=e.properties;return!t.assistantMessageID||!t.id?void 0:`session.tool.input.delta:${t.assistantMessageID}:${t.id}`}},ee=e=>{let t=k.get(e);if(!t||(t.timer&&=(clearTimeout(t.timer),void 0),t.queue.length===0))return;let r=t.queue;t.queue=t.buffer,t.buffer=r,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),rc.pipeline.flush(r.length),o?.();try{for(let t of r)n(e,t)}finally{s?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},ne=()=>{for(let e of k.values())e.timer&&=(clearTimeout(e.timer),void 0),e.queue.length=0,e.buffer.length=0,e.coalesced.clear()},re=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>ee(e),Math.max(0,(Date.now()<I?mj:pj)-n))},ie=e=>new Promise(t=>setTimeout(t,e)),ae=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,M=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,oe=()=>typeof document<`u`&&document.visibilityState!==`visible`,se=e=>{if(!e||typeof e!=`object`)return;let t=e.status;if(typeof t==`number`)return t;let n=e.response?.status;if(typeof n==`number`)return n},ce=e=>!(e<400||e>=500||e===408||e===429),le=e=>new Promise(t=>{if(e<=0||S.signal.aborted){t();return}let n=()=>{a!==void 0&&(clearTimeout(a),a=void 0),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`online`,r),globalThis.window.removeEventListener(`openchamber:system-resume`,r)),typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),S.signal.removeEventListener(`abort`,r)},r=()=>{n(),t()},i=()=>{typeof document<`u`&&document.visibilityState===`visible`&&r()},a=setTimeout(r,e);globalThis.window!==void 0&&(globalThis.window.addEventListener(`online`,r,{once:!0}),globalThis.window.addEventListener(`openchamber:system-resume`,r,{once:!0})),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),S.signal.addEventListener(`abort`,r,{once:!0})}),ue=e=>{if(e<=0)return 0;if(M())return Tj;let t=oe()?Tj:wj,n=Math.min(e-1,Ej);return Math.min(t,Cj*2**n)},de=!1,fe,pe=Date.now(),N,me=_===`ws`?`ws`:`sse`,P=null,F=0,I=0,he=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:f(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},ge=e=>{C||(C=!0,he(e),p?.(e))},_e=()=>{let e=O;O=null;let t=e!==null;u?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??f(),reason:e?.reason??`ready`,transport:me,isReconnect:t})},ve=()=>{C=!1,F=0,te(),l?.(),_e()},ye=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){c?.(e,n);return}n&&c?.(e,n);let r=t,i=g?.(e,r)||e,a=A(i);if(r.type===`message.part.updated`){let e=r.properties.part,t=typeof e?.messageID==`string`?e.messageID:void 0,n=typeof e?.id==`string`?e.id:void 0;if(t&&n){let e=`message.part.delta:${t}:${n}:`;for(let t of a.coalesced.keys())t.startsWith(e)&&a.coalesced.delete(t)}}let o=j(r);if(o){let e=a.coalesced.get(o);if(e!==void 0){if(r.type===`message.part.delta`||r.type===`session.text.delta`||r.type===`session.reasoning.delta`||r.type===`session.tool.input.delta`){let t=a.queue[e],n=r.properties;a.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else a.queue[e]=r;rc.pipeline.coalesced(r.type,o);return}a.coalesced.set(o,a.queue.length)}a.queue.push(r),re(i)},be=(e,t)=>{let n=jj(t);if(!n)return`unusable`;let r=kj(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=Aj(e,n,r.event,r.normalized.locationDirectory);return ye(i,r.event,r.normalized),`ingested`},xe=()=>{pe=Date.now(),N&&clearTimeout(N),N=setTimeout(()=>{P=`${me}_heartbeat_timeout`,fe?.abort()},v)},Se=()=>{xe(),m?.()},L=()=>{N&&=(clearTimeout(N),void 0)},R=async(e,t)=>{if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n,r=new Promise((e,r)=>{n=()=>r(new DOMException(`Aborted`,`AbortError`)),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener(`abort`,n)}},Ce=async e=>{xe();let n=await R(Promise.resolve(t.event.subscribe({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{}})),e);ve();let r=Date.now();Se();for await(let e of n){Se(),de=!1;let t=typeof e.id==`string`?e.id:void 0;t&&t.length>0&&(w=t),be(e,e.payload??e),!(Date.now()-r<gj)&&(r=Date.now(),await ie(0))}if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=async e=>{try{await i()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+yj,t.code=`WS_FALLBACK`),t.reason=`ws_auth_token_unavailable`,t}if(e.aborted)throw new DOMException(`Aborted`,`AbortError`);await new Promise((t,n)=>{let i=!1,a=!1,o=0,s=Nj(w),c=(e,t=!1)=>{(t||!a)&&_===`auto`&&(T=Date.now()+yj,e.code=`WS_FALLBACK`)},l=setTimeout(()=>{l=void 0;let e=Error(`Message stream WebSocket ready timeout`);c(e),f(e);try{s.close()}catch{}},x),u=()=>{l&&=(clearTimeout(l),void 0),s.onopen=null,s.onmessage=null,s.onerror=null,s.onclose=null},d=()=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),t())},f=t=>{i||(i=!0,e.removeEventListener(`abort`,p),u(),n(t))},p=()=>{try{s.close()}catch{}d()};e.addEventListener(`abort`,p,{once:!0}),s.onopen=()=>{};let m=e=>{_===`auto`&&(T=Date.now()+yj);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,f(t);try{s.close()}catch{}};s.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{m(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){m(`ws_invalid_frame:type`);return}if(t.type===`ready`){Se(),a=!0,o=Date.now(),l&&=(clearTimeout(l),void 0),de=!1,ve();return}if(t.type===`error`){Se();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,c(e),f(e);try{s.close()}catch{}return}if(t.type===`backpressure`){Se(),I=Date.now()+hj;return}if(t.type!==`event`){m(`ws_invalid_frame:type`);return}let n=typeof t.eventId==`string`&&t.eventId.length>0?t.eventId:void 0;if(be({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=bj&&(w=n,E=void 0,D=0)),m(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,Se(),de=!1,n&&(w=n)},s.onerror=()=>{},s.onclose=t=>{if(e.aborted){d();return}let n=Error(`Global message stream WebSocket closed`);n.reason=a?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,a||r();let i=o>0?Date.now()-o:0;c(n,a&&i>0&&i<2e3),f(n)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){fe=new AbortController,pe=Date.now(),P=null;let e=y,t=Te();me=t;let n=()=>{P=`pipeline_stopped`,fe?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(fe.signal):await Ce(fe.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,h?.();else if(!ae(n)){F+=1,de||(de=!0,console.error(`[event-pipeline] stream failed`,n));let r=typeof n==`object`&&n?n.reason:void 0,i=typeof n==`object`&&n?n.message:void 0,a=typeof r==`string`&&r.length>0?r:typeof i==`string`&&i.length>0?`${t}_error:${i.slice(0,80)}`:`${t}_error:unknown`;ge(a);let o=se(n);e=o!==void 0&&ce(o)?Tj:ue(F)}}finally{S.signal.removeEventListener(`abort`,n),fe=void 0,L()}if(S.signal.aborted)return;P&&P!==`pipeline_stopped`&&(ge(P),F+=1,e=y>0?ue(F):0,P=null),e>0&&await le(e)}})().finally(te);let z=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){he(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-pe<v||fe?.abort())}},Ee=e=>{e.persisted&&(he(`pageshow_persisted`),fe?.abort())},De=()=>{he(`system_resume`),fe&&(P=`${me}_system_resume`,fe.abort())},Oe=()=>{C&&(he(`online`),fe?.abort())},ke=()=>{fe?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,z),window.addEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,z),window.removeEventListener(`pageshow`,Ee)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),L(),te()},reconnect:(e=`manual`)=>{e===`reasoning_projection`&&ne(),P=`${me}_${e}`,fe?.abort()}}}var Fj=Jt({epoch:Xt().min(1),revision:Gt().int().nonnegative(),serverNow:Gt(),enabled:Yt(),delayMs:Kt(3e4),coverage:Jt({state:Zt([`ready`,`reconciling`,`partial`]),failedDirectories:qt(Xt())}),requests:qt(Jt({requestID:Xt(),sessionID:Xt(),directory:Xt(),questionCount:Gt(),state:Zt([`counting`,`paused`,`disabled`,`submitting`,`uncertain`,`settled`]),deadlineAt:Gt().nullable(),pauseReason:Zt([`interaction`,`user`,`goal`]).nullable(),submittedBy:Zt([`manual`,`auto`]).nullable(),resolution:Zt([`replied`,`rejected`,`external`]).nullable()}))}),Ij=Jt({outcome:Zt([`ok`,`paused`,`delegated`,`submitted`,`claimed`,`uncertain`,`settled`,`not_found`,`disabled`,`error`]),snapshot:Fj}),Lj=0,Rj=()=>({transport:u(),generation:f()}),zj=e=>e.transport===u()&&e.generation===f(),Bj=e=>[e.transport,`question-auto-delegate`,e.generation];function Vj(e,t){return e?e.snapshot.epoch===t.snapshot.epoch?t.snapshot.revision<e.snapshot.revision||t.snapshot.revision===e.snapshot.revision&&t.sequence<e.sequence?e:{...t,sequence:Math.max(e.sequence,t.sequence),retiredEpochs:e.retiredEpochs}:t.sequence<e.sequence||e.retiredEpochs.includes(t.snapshot.epoch)?e:{...t,retiredEpochs:[...e.retiredEpochs,e.snapshot.epoch]}:t}var Hj=(e,t)=>({snapshot:e,receivedAt:performance.now(),sequence:t,retiredEpochs:[]});function Uj(e=Rj()){return Nt({queryKey:Bj(e),queryFn:async({signal:t})=>{if(!zj(e))throw Error(`Runtime changed`);let n=++Lj,r=await _(`/api/question-auto-delegate`,{signal:t});if(!r.ok)throw Error(`Question snapshot: ${r.status}`);let i=Fj.parse(await r.json());if(!zj(e)||t.aborted)throw Error(`Runtime changed`);return Hj(i,n)},structuralSharing:(e,t)=>Vj(e,t),staleTime:1/0,retry:1,refetchOnWindowFocus:`always`})}function Wj(){let e=(0,H.c)(1);(0,K.useSyncExternalStore)(s,f,f);let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=Uj(),e[0]=t):t=e[0],Pt(t,R)}var Gj=()=>R.getQueryData(Uj().queryKey),Kj=()=>R.ensureQueryData(Uj()),qj=async()=>{let e=Bj(Rj());await R.cancelQueries({queryKey:e,exact:!0},{revert:!1}),await R.invalidateQueries({queryKey:e,exact:!0})};async function Jj(e,t,n){let r=Rj(),i=++Lj,a=await _(`/api/question-auto-delegate/requests/${encodeURIComponent(t.requestID)}/${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionID:t.sessionID,directory:t.directory,...n?{reason:n}:{}})}),o=Ij.parse(await a.json());if(!zj(r))throw Error(`Runtime changed`);if(R.setQueryData(Bj(r),e=>Vj(e,Hj(o.snapshot,i))),qj(),!a.ok&&![`claimed`,`uncertain`,`not_found`].includes(o.outcome))throw Error(`Question ${e}: ${a.status}`);return o.outcome}var Yj=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function Xj(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function Zj(e,t){if(!t)return 0;if(!e)return null;let n=e.toLowerCase(),r=t.toLowerCase(),i=n.indexOf(r);if(i<0)return null;let a=(n.length-r.length)/1e4;if(n===r)return-2;if(i===0)return-1+a;let o=n[i-1]??``;return(Yj.has(o)?0:.5)+i/1e3+a}function Qj(e,t,n,r){if(!t)return e.map(e=>({item:e,score:0}));let i=r?.limit??e.length,a=r?.threshold??.3,o=r?.noFuzzy??!1,s=t.toLowerCase(),c=[],l=[],u=new Set;for(let t of e){let e=Xj(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=Zj(e,s);n!==null&&(r===null||n<r)&&(r=n,i=e)}if(r!==null){c.push({item:t,score:r,sortKey:i}),u.add(t);continue}if(!o)for(let n of e)l.push({item:t,text:n,sortKey:e[0].toLowerCase()})}if(l.length>0){let e=new Qt(l.map(e=>e.text),{threshold:a,ignoreLocation:!0,distance:100,includeScore:!0,minMatchCharLength:2}),n=new Map;for(let r of e.search(t)){let e=l[r.refIndex];if(!e||u.has(e.item))continue;let t=1+(r.score??1),i=n.get(e.item);(!i||t<i.score)&&n.set(e.item,{score:t,sortKey:e.sortKey})}for(let[e,t]of n)c.push({item:e,score:t.score,sortKey:t.sortKey})}return c.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),c.slice(0,i).map(({item:e,score:t})=>({item:e,score:t}))}var $j=je(),eM=3e4,tM=(e,t)=>e?.find(e=>e.requestID===t.id);function nM(e){let t=Wj(),n=tM(t.data?.snapshot.requests,e),r=`${f()}:${e.sessionID}:${e.id}`,[i,a]=K.useState({scope:r,pending:null,failed:null}),o=i.scope===r?i.pending:null,s=i.scope===r?i.failed:null,[c,l]=K.useState(null),u=c?.scope===r&&(!c.epoch||c.epoch===t.data?.snapshot.epoch),d=u&&(!n||![`submitting`,`uncertain`,`settled`].includes(n.state)),[p,m]=K.useState(null),h=p?.scope===r,g=K.useRef(null),_=K.useRef(null),v=K.useRef(r);v.current=r;let y=Rt(()=>{u||m(e=>e?.scope===r?e:{scope:r})}),b=Rt(async(t,n=`user`)=>{if(u||(t===`pause`&&y(),g.current===r||n===`interaction`&&_.current===r))return;let i=Gj(),o=tM(i?.snapshot.requests,e);if(o&&(t===`pause`&&o.state!==`counting`||[`submitting`,`uncertain`,`settled`].includes(o.state))){n===`user`&&(a({scope:r,pending:null,failed:null}),_.current=null,qj());return}let s=f();g.current=r,_.current=null,a({scope:r,pending:t,failed:null});let c=r;try{let r={requestID:e.id,sessionID:o?.sessionID||e.sessionID,directory:o?.directory||``};if(t===`delegate`&&!o){let t=i??await Kj();if(s!==f())throw Error(`Runtime changed`);let n=tM(t.snapshot.requests,e);if(!n)throw Error(`Question identity unavailable`);r={requestID:n.requestID,sessionID:n.sessionID,directory:n.directory}}let a=await Jj(t,r,t===`pause`?n:void 0);if(a===`not_found`&&t===`pause`&&n===`interaction`)return;if([`error`,`not_found`,`disabled`].includes(a))throw Error(`Question operation failed`)}catch{v.current===c&&(_.current=c,a({scope:c,pending:t,failed:t}))}finally{g.current===c&&(g.current=null),v.current===c&&a(e=>({...e,pending:null}))}}),x=Rt(e=>{e.target.closest(`[data-question-delegation-controls]`)||(y(),b(`pause`,`interaction`))}),S=Rt(async n=>{n===`${f()}:${e.sessionID}:${e.id}`&&(l({scope:r,epoch:t.data?.snapshot.epoch}),a({scope:r,pending:null,failed:null}),await qj())});return K.useEffect(()=>{!h||u||n&&n.state!==`counting`||b(`pause`,`interaction`)},[h,u,n?.state,n?.requestID]),{query:t,request:n,pending:o,failed:s,run:b,interaction:x,submissionClaimed:S,claimed:u,awaitingClaim:d,scope:r,held:h}}function rM(e){let t=(0,H.c)(2),{remaining:n,delayMs:r}=e,i=`scaleX(${r>0?Math.min(1,n/r):0})`,a;return t[0]===i?a=t[1]:(a=(0,$j.jsx)(`div`,{"data-question-delegate-bar":!0,"aria-hidden":!0,className:`h-1 w-full overflow-hidden rounded-full bg-muted/40`,children:(0,$j.jsx)(`div`,{className:`h-full origin-left bg-primary/70 transition-transform duration-300 ease-linear motion-reduce:transition-none`,style:{transform:i}})}),t[0]=i,t[1]=a),a}function iM(e){let t=(0,H.c)(11),{data:n,deadlineAt:r,startedAt:i,delayMs:a}=e,{t:o}=Bt(),[,s]=K.useReducer(aM,0),c=Math.max(0,r!=null&&n?r-n.snapshot.serverNow-(performance.now()-n.receivedAt):a-(performance.now()-i));Lt(s,c>0?250:null);let l;t[0]!==c||t[1]!==o?(l=c>0?o(`chat.questionDelegate.countdown`,{seconds:Math.ceil(c/1e3)}):o(`chat.questionDelegate.awaiting`),t[0]=c,t[1]=o,t[2]=l):l=t[2];let u;t[3]===l?u=t[4]:(u=(0,$j.jsx)(`span`,{className:`typography-micro tabular-nums text-muted-foreground`,role:`status`,children:l}),t[3]=l,t[4]=u);let d;t[5]!==a||t[6]!==c?(d=(0,$j.jsx)(rM,{remaining:c,delayMs:a}),t[5]=a,t[6]=c,t[7]=d):d=t[7];let f;return t[8]!==u||t[9]!==d?(f=(0,$j.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10],f}function aM(e){return e+1}function oM({delegation:e}){let{t}=Bt(),{query:n,request:r,pending:i,failed:a,run:o,claimed:s,awaitingClaim:c,scope:l,held:u}=e,d=K.useRef(performance.now()),f=K.useRef(l);f.current!==l&&(f.current=l,d.current=performance.now());let p=s||r?.state===`submitting`||r?.state===`uncertain`||r?.state===`settled`,m=n.data?.snapshot.enabled!==!1,h=m&&!c&&!i&&!u&&(!r||r.state===`counting`),g=n.data?.snapshot.delayMs??eM,_=c?`chat.questionDelegate.uncertain`:i?i===`pause`?`chat.questionDelegate.pausing`:`chat.questionDelegate.submitting`:r?.state===`submitting`?`chat.questionDelegate.submitting`:r?.state===`uncertain`?`chat.questionDelegate.uncertain`:r?.state===`settled`&&r.submittedBy===`auto`&&r.resolution===`replied`?`chat.questionDelegate.success`:r?.state===`settled`?`chat.questionDelegate.settled`:m?u||r?.state===`paused`?`chat.questionDelegate.paused`:r?.state===`disabled`?`chat.questionDelegate.disabled`:`chat.questionDelegate.settled`:`chat.questionDelegate.disabled`;return(0,$j.jsxs)(`div`,{"data-question-delegation-controls":!0,className:`flex flex-col gap-1.5 border-t border-border/20 px-2 py-1.5`,children:[h?(0,$j.jsx)(iM,{data:n.data,deadlineAt:r?.deadlineAt??null,startedAt:d.current,delayMs:g}):null,(0,$j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[h?null:(0,$j.jsx)(`div`,{className:`min-w-0 flex-1 basis-40 typography-micro text-muted-foreground`,children:(0,$j.jsx)(`span`,{role:`status`,children:t(_)})}),n.isError||a?(0,$j.jsx)(`div`,{role:`alert`,className:`min-w-0 flex-1 basis-40 typography-micro text-[var(--status-error)]`,children:t(a===`pause`?`chat.questionDelegate.pauseFailed`:a===`delegate`?`chat.questionDelegate.delegateFailed`:`chat.questionDelegate.loadFailed`)}):null,(n.isError||a||c)&&(0,$j.jsx)(Vt,{variant:`ghost`,size:`xs`,disabled:!!i||n.isFetching,onClick:()=>a&&!s?void o(a):void n.refetch(),children:t(s?`chat.questionDelegate.refreshStatus`:`chat.questionDelegate.retry`)}),r?.state===`counting`&&!p&&m&&!u&&(0,$j.jsx)(Vt,{variant:`ghost`,size:`xs`,disabled:!!i,onClick:()=>void o(`pause`),children:t(`chat.questionDelegate.pause`)}),r&&!p&&(0,$j.jsx)(Vt,{variant:`outline`,size:`xs`,disabled:!!i,onClick:()=>void o(`delegate`),children:t(`chat.questionDelegate.delegate`)})]})]})}function sM(){let e=(0,H.c)(5),t=Wj(),{t:n}=Bt(),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=f(),e[0]=r):r=e[0];let i=r,a=K.useRef(void 0),o,s;return e[1]!==t.data||e[2]!==n?(o=()=>{let e=t.data;if(!e)return;let r=a.current;if(a.current={generation:i,data:e},!r||r.generation!==i)return;let o=r.data;if(o.snapshot.epoch!==e.snapshot.epoch||o.snapshot.revision===e.snapshot.revision||document.visibilityState!==`visible`)return;let s=new Map(o.snapshot.requests.map(cM));for(let t of e.snapshot.requests)s.get(t.requestID)?.state!==`settled`&&t.state===`settled`&&t.submittedBy===`auto`&&t.resolution===`replied`&&nD.success(n(`chat.questionDelegate.success`),{id:`question-delegate:${e.snapshot.epoch}:${t.requestID}`})},s=[i,t.data,n],e[1]=t.data,e[2]=n,e[3]=o,e[4]=s):(o=e[3],s=e[4]),K.useEffect(o,s),null}function cM(e){return[e.requestID,e]}function lM(e){let t=new Set;for(let[n,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&t.add(n);for(let[n,r]of Object.entries(e.permission??{}))(r?.length??0)>0&&t.add(n);for(let[n,r]of Object.entries(e.question??{}))(r?.length??0)>0&&t.add(n);return t}function uM(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size!==0)for(let t of n)delete e.todo[t],delete e.session_diff[t],delete e.session_status[t],e.session_status_observed_at&&delete e.session_status_observed_at[t],e.session_error_at&&delete e.session_error_at[t],delete e.permission[t],delete e.question[t]}function dM(e){let t=[],n=new Set([e.keep,...Array.from(e.preserve??[])]);e.seen.has(e.keep)&&e.seen.delete(e.keep),e.seen.add(e.keep);for(let r of e.seen){if(e.seen.size-t.length<=e.limit)break;n.has(r)||t.push(r)}for(let n of t)e.seen.delete(n);return t}var fM=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},pM=(e,t)=>e?fM(t)<fM(e):!1;function mM(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function hM(e){return typeof e==`string`&&e.length>0?e:void 0}function gM(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function _M(e){let t=mM(e);if(!t)return null;let n=hM(t.id),r=hM(t.sessionID)??hM(t.sessionId),i=hM(t.permission)??hM(t.action);if(!n||!r||!i)return null;let a=mM(t.source)??mM(t.tool),o=gM(t.patterns),s=gM(t.resources),c=gM(t.always),l=gM(t.save);return Ve({id:n,sessionID:r,action:i,resources:o.length>0?o:s,save:c.length>0?c:l,metadata:mM(t.metadata)??{},source:a?{messageID:hM(a.messageID),id:hM(a.callID)??hM(a.id)}:void 0})}function vM(e){let t=mM(e);if(!t)return null;let n=hM(t.id),r=hM(t.sessionID)??hM(t.sessionId);if(!n||!r)return null;let i=(Array.isArray(t.questions)?t.questions:[]).flatMap(e=>{let t=mM(e);if(!t)return[];let n=Array.isArray(t.options)?t.options.flatMap(e=>{let t=mM(e);if(!t)return[];let n=hM(t.label);return n?[{label:n,description:typeof t.description==`string`?t.description:``}]:[]}):[];return[{question:hM(t.question)??``,header:hM(t.header)??``,options:n,...t.multiple===!0?{multiple:!0}:{}}]}),a=mM(t.tool);return _t({id:n,sessionID:r,questions:i,tool:a?{messageID:hM(a.messageID),id:hM(a.callID)??hM(a.id)}:void 0})}function yM(e,t,n){return e.session_error_at?.[t]!==n&&(e.session_error_at={...e.session_error_at,[t]:n},!0)}function bM(e,t){if(e.session_error_at?.[t]===void 0)return!1;let n={...e.session_error_at};return delete n[t],e.session_error_at=n,!0}function xM(e,t){return e===t?!0:!e||e.type!==t.type?!1:e.type!==`retry`||t.type===`retry`&&e.attempt===t.attempt&&e.message===t.message&&e.next===t.next}function SM(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function CM(e,t){let n=[...e.projects],r=qs.search(n,t.id,e=>e.id);return r.found?n[r.index]={...n[r.index],...t}:n.splice(r.index,0,t),{...e,projects:n}}function wM(e,t,n){t&&(n?.(t,void 0),uM(e,[t]))}var TM=e=>e.title===`smartfetch-secondary`;function EM(e,t,n,r){return n.found?(e.session.splice(n.index,1),TM(t)&&wM(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function DM(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=om(t.properties.info),i=e.session,a=qs.search(i,r.id,e=>e.id);return pm(r)?a.found&&pM(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),OM(e),r.parentID||(e.sessionTotal+=1)),!0):EM(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=om(t.properties.info),i=e.session,a=qs.search(i,r.id,e=>e.id);return a.found&&pM(i[a.index],r)?!1:!pm(r)||r.time?.archived?EM(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),OM(e)),!0)}case`openchamber:session-metadata`:{let n=t.properties,r=typeof n.sessionID==`string`?n.sessionID:``;if(!r||n.metadata===void 0)return!1;let i=e.session,a=qs.search(i,r,e=>e.id);return a.found?(i[a.index]={...i[a.index],metadata:n.metadata},!0):!1}case`session.deleted`:{let r=t.properties.info,i=e.session,a=qs.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),wM(e,r.id,n?.onSetSessionTodo),r.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0}case`session.diff`:{let n=t.properties;return e.session_diff[n.sessionID]=im(n.diff),!0}case`todo.updated`:{let r=t.properties;return e.todo[r.sessionID]=r.todos,n?.onSetSessionTodo?.(r.sessionID,r.todos),!0}case`session.status`:{let r=t.properties;r.status.type===`idle`&&n?.onServerSessionIdle?.(r.sessionID);let i=!1;return(r.status.type===`busy`||r.status.type===`retry`)&&(i=bM(e,r.sessionID)),n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),xM(e.session_status[r.sessionID],r.status)?!!n?.now||i:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),xM(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`},a=n?.now?.();a!==void 0&&(e.session_status_observed_at[r.sessionID]=a);let o=a!==void 0&&yM(e,r.sessionID,a);return xM(e.session_status[r.sessionID],i)?a!==void 0||o:(e.session_status[r.sessionID]=i,!0)}case`session.execution.started`:{let r=t.properties,i={type:`busy`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),xM(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.execution.succeeded`:case`session.execution.failed`:case`session.execution.interrupted`:{let r=t.properties;n?.onServerSessionIdle?.(r.sessionID);let i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),xM(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`message.updated`:case`message.removed`:case`message.part.updated`:case`message.part.removed`:case`message.part.delta`:return!1;case`vcs.branch.updated`:{let n=hM(mM(t.properties)?.branch);return!n||e.vcs?.branch?.current===n?!1:(e.vcs={...e.vcs,branch:{...e.vcs?.branch,current:n}},!0)}case`permission.asked`:{let n=_M(t.properties);if(!n)return!1;let r=[...e.permission[n.sessionID]??[]],i=qs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.permission[n.sessionID]=r,!0}case`permission.replied`:{let n=t.properties,r=e.permission[n.sessionID];if(!r)return!1;let i=qs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.permission[n.sessionID]=t,!0}return!1}case`question.asked`:{let n=vM(t.properties);if(!n)return!1;let r=[...e.question[n.sessionID]??[]],i=qs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.question[n.sessionID]=r,!0}case`question.replied`:case`question.rejected`:{let n=t.properties,r=e.question[n.sessionID];if(!r)return!1;let i=qs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.question[n.sessionID]=t,!0}return!1}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function OM(e){if(e.session.length<=e.limit)return;let t=new Set(Object.entries(e.permission??{}).filter(([,e])=>e&&e.length>0).map(([e])=>e));for(;e.session.length>e.limit;){let n=e.session[0];if(t.has(n.id))break;e.session.shift()}}var kM=De()(e=>({...lu,actions:{set:t=>e(t),reset:()=>e(lu)}}));function AM(e){if(!e)return!1;for(let t of Object.values(e.question??{}))if(t&&t.length>0)return!0;for(let t of Object.values(e.permission??{}))if(t&&t.length>0)return!0;return!1}function jM(e){let t=Math.max(0,e.stores.length-e.max),n=e.graceMs??0,r=e.stores.filter(t=>!e.pins.has(t)).filter(t=>!e.hasPendingBlockingRequests?.(t)).slice().sort((t,n)=>(e.state.get(t)?.lastAccessAt??0)-(e.state.get(n)?.lastAccessAt??0)),i=[];for(let a of r){let r=e.state.get(a)?.lastAccessAt??0,o=e.now-r,s=o>=e.ttl;!s&&t<=0||!s&&o<n||(i.push(a),t>0&&--t)}return i}function MM(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function NM(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t).toString(36)}function PM(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${NM(m().trim()||`default`)}.${t}.${NM(e)}`}function FM(e,t){return`${PM(e)}.${t}`}function IM(e,t){try{let n=localStorage.getItem(FM(e,t));return n?JSON.parse(n):void 0}catch{return}}function LM(e,t,n){try{let r=FM(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function RM(e){return{vcs:IM(e,`vcs`),projectMeta:IM(e,`projectMeta`),icon:IM(e,`icon`)}}function zM(e){try{localStorage.removeItem(`${PM(e)}.sessions`)}catch{}}function BM(e,t){LM(e,`vcs`,t)}function VM(e,t){LM(e,`projectMeta`,t)}function HM(e,t){LM(e,`icon`,t)}function UM(e){let t=RM(e);zM(e);let n=De()(e=>({...cu,vcs:t.vcs??cu.vcs,projectMeta:t.projectMeta??cu.projectMeta,icon:t.icon??cu.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&BM(e,t.vcs),t.projectMeta!==n.projectMeta&&VM(e,t.projectMeta),t.icon!==n.icon&&HM(e,t.icon)}),n}var WM=class{children=new Map;lifecycle=new Map;pins=new Map;disposers=new Map;registrySubscribers=new Set;generations=new Map;evictionScheduled=!1;onBootstrap;onDispose;isBooting;isLoadingSessions;notifyRegistrySubscribers(){for(let e of this.registrySubscribers)e()}configure(e){this.onBootstrap=e.onBootstrap,this.onDispose=e.onDispose,this.isBooting=e.isBooting,this.isLoadingSessions=e.isLoadingSessions}mark(e){let t=F(e);t&&(this.lifecycle.set(t,{lastAccessAt:Date.now()}),this.scheduleEviction())}scheduleEviction(){this.evictionScheduled||(this.evictionScheduled=!0,queueMicrotask(()=>{this.evictionScheduled=!1,this.runEviction()}))}pin(e){let t=F(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=F(e);if(!t)return;let n=(this.pins.get(t)??0)-1;if(n>0){this.pins.set(t,n);return}this.pins.delete(t),this.scheduleEviction()}pinned(e){return(this.pins.get(F(e))??0)>0}ensureChild(e,t){let n=F(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=UM(n),this.children.set(n,r),this.generations.set(n,(this.generations.get(n)??0)+1),this.notifyRegistrySubscribers()),this.mark(n),(t?.bootstrap??!0)&&r.getState().status===`loading`&&this.onBootstrap?.(n),r}getChild(e){return this.children.get(F(e))}captureChild(e,t){let n=F(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=F(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=F(e);if(!MM({directory:t,hasStore:this.children.has(t),pinned:this.pinned(t),booting:this.isBooting?.(t)??!1,loadingSessions:this.isLoadingSessions?.(t)??!1,hasPendingBlockingRequests:this.hasPendingBlockingRequestsForDirectory(t)}))return!1;this.lifecycle.delete(t),this.children.delete(t),this.notifyRegistrySubscribers();let n=this.disposers.get(t);return n&&(n(),this.disposers.delete(t)),this.onDispose?.(t),!0}runEviction(e){let t=[...this.children.keys()];if(t.length===0)return;let n=jM({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:su,graceMs:ou,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return AM(this.getChild(e)?.getState())}update(e,t){let n=this.getChild(e);if(!n)return;let r=t(n.getState());n.setState(r)}getState(e){return this.getChild(e)?.getState()}disposeAll(){for(let e of[...this.children.keys()])this.children.delete(e);this.notifyRegistrySubscribers(),this.lifecycle.clear(),this.pins.clear(),this.disposers.clear()}subscribeRegistry(e){return this.registrySubscribers.add(e),()=>{this.registrySubscribers.delete(e)}}subscribeAll(e){let t=new Map,n=()=>{let n=new Set(this.children.keys());for(let[e,r]of t.entries())n.has(e)||(r(),t.delete(e));for(let[n,r]of this.children.entries())t.has(n)||t.set(n,r.subscribe(e))};n();let r=this.subscribeRegistry(()=>{n(),e()});return()=>{r();for(let e of t.values())e();t.clear()}}subscribeAllSelected(e,t){let n=new Map,r=()=>{let r=new Set(this.children.keys());for(let[e,t]of n.entries())r.has(e)||(t(),n.delete(e));for(let[r,i]of this.children.entries())n.has(r)||n.set(r,i.subscribe((n,r)=>{Object.is(e(n),e(r))||t()}))};r();let i=this.subscribeRegistry(()=>{r(),t()});return()=>{i();for(let e of n.values())e();n.clear()}}},GM=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},KM=e=>{let t=e.directory??``,n=e.parentID??``;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``].join(`|`)},qM=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},JM=e=>{let t=e?.message;return typeof t==`string`?t:null},YM=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},XM=(e,t)=>e?.type===t?.type&&JM(e)===JM(t)&&YM(e,`attempt`)===YM(t,`attempt`)&&YM(e,`next`)===YM(t,`next`),ZM=(e,t)=>{let n=e.session_status?.[t];if(!n)return null;let r=e.session.find(e=>e.id===t);return{status:n,sessionUpdatedAt:r?GM(r):-1}},QM=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?qM(t.status)>=qM(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,$M=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(KM(e[n])!==KM(t[n]))return!1;return!0},eN=(e,t)=>{if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){if(!(r in t))return!1;let n=e[r],i=t[r];if(!XM(n,i))return!1}return!0};function tN(e,t){let n=new Map;for(let r of e)for(let e of r.session){if(!e?.id||t?.has(e.id)||e.parentID||!pm(e))continue;let r=n.get(e.id);(!r||GM(e)>=GM(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>GM(t)-GM(e))}function nN(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=ZM(n,e);r&&QM(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function rN(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||GM(e)>=GM(n))&&(n=e)}return n}function iN(e,t){if(!t)return;let n;for(let r of e){let e=ZM(r,t);e&&QM(n,e)&&(n=e)}return n?.status}var aN=(e,t)=>e<t?-1:+(e>t);function oN(e){if(typeof e==`string`&&e.trim().length!==0)return{location:{directory:e}}}var sN=e=>!e||e.length===0?``:e.map(e=>e.id).sort(aN).join(`|`);function cN(e){return e.reduce((e,t)=>{if(!t?.id||!t.sessionID)return e;let n=e[t.sessionID];return n?n.push(t):e[t.sessionID]=[t],e},{})}function lN(e,t,n){let r=n,i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a];i!==e[a]&&(r===n&&(r={...n}),i?r[a]=i:delete r[a])}return r}function uN(e,t){return t.find(t=>Ne(t)===e||t.sandboxes?.includes(e))?.id}async function dN(e,t){let n=await Promise.allSettled([Qp(()=>e.location.get().then(e=>t({path:ze(e)}))),Qp(()=>e.config.get().then(e=>t({config:Ue(e)}))),Qp(()=>e.project.list().then(e=>{t({projects:e.filter(e=>!!e?.id).map(Je).filter(e=>!!Ne(e)&&!Ne(e).includes(`opencode-test`)).sort((e,t)=>aN(e.id,t.id))})}))]),r=n.filter(e=>e.status===`rejected`).map(e=>e.reason);if(r.length&&console.error(`[bootstrap] global bootstrap failed`,r[0]),r.length===n.length){let e=r[0]instanceof Error?r[0].message:String(r[0]);try{let t=await _(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();n.lastOpenCodeError?e=n.lastOpenCodeError:n.openCodeRunning||(e=`OpenCode process is not running`)}}catch{}t({ready:!0,error:{type:`init`,message:e}})}else t({ready:!0,error:void 0})}async function fN(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=uN(t,a.projects);if(c&&i({project:c}),Object.keys(o.config??{}).length===0&&Object.keys(a.config??{}).length>0){let e=a.config;i({config:e}),Af(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Qp(()=>n.location.get(oN(t)).then(e=>{let t=e?.project?.id;t&&i({project:t})})),Qp(()=>n.config.get(oN(t)).then(e=>{let n=Ue(e);i({config:n}),Af(t,n)})),Qp(()=>n.location.get(oN(t)).then(e=>{let n=ze(e);i({path:n});let r=uN(n.directory||t,a.projects);r&&i({project:r})})),Qp(async()=>{let e=Date.now(),t=r().session_status,a=await n.session.active(),o=new Set([...Object.keys(t),...r().session.map(e=>e.id)]),s=Ke(a,o),c=r().session_status,l={...r().session_status_observed_at};for(let n of Object.keys(s))c[n]===t[n]&&(l[n]=e);i({session_status:lN(t,c,s),session_status_observed_at:l,session_status_snapshot_at:e})})]),u=l.filter(e=>e.status===`rejected`).map(e=>e.reason),[,,d]=l,f=d.status===`rejected`&&!r().project;if(u.length===l.length||f){console.error(`[bootstrap] directory bootstrap failed for ${t}`,u[0]);return}s&&i({status:`complete`}),Promise.allSettled([Qp(async()=>{let e=await n.mcp.list(oN(t)),r={};for(let t of e.data)t?.name&&(r[t.name]=t.status);i({mcp:r})}),Qp(async()=>{throw Ze(`lsp.status`)}),Qp(async()=>{let e=await n.vcs.get(oN(t));if(!e?.data)throw Error(`vcs.get returned no data`);i({vcs:e.data})}),Qp(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,sN(t)])),o=cN((await n.form.list(oN(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(e=>_t({id:e.id,sessionID:e.sessionID,title:e.title,fields:e.fields,...e.metadata?{metadata:e.metadata}:{}}))),s=r(),c={...s.question};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>aN(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;sN(s.question[e])===t&&delete c[e]}i({question:c})}),Qp(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,sN(t)])),o=cN((await n.permission.request.list(oN(t))).data.filter(e=>!!e?.id&&!!e?.sessionID).map(Ve)),s=r(),c={...s.permission};for(let[e,t]of Object.entries(o))c[e]=t.filter(e=>!!e?.id).sort((e,t)=>aN(e.id,t.id));for(let e of a.keys()){if(o[e])continue;let t=a.get(e)??``;sN(s.permission[e])===t&&delete c[e]}i({permission:c})})]).then(e=>{let n=e.filter(e=>e.status===`rejected`).map(e=>e.reason);n.length&&console.error(`[bootstrap] deferred phase failed for ${t}`,n[0])})}var pN=De()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function mN(){pN.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var hN=1e3;function gN(e,t){let n=Date.now(),r=pN.getState(),i=r.streamingMessageIds,a=r.messageStreamStates,o=new Map,s=new Map(a),c=!1,l=new Set;for(let[t,n]of Object.entries(e.session_status??{}))n.type===`busy`&&l.add(t);let u=(e,t)=>{o.set(e,null);let r=s.get(t);r&&r.phase===`streaming`&&s.set(t,{...r,phase:`completed`,completedAt:n}),c=!0},d=t?.directory??``,f=U();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Kd(f.getTranscript(G(d,e)))),t.length===0)continue;let r=null;for(let e=t.length-1;e>=0&&t[e].role!==`user`;e--)if(t[e].role===`assistant`){r=t[e];break}if(!r){let t=i.get(e);t&&u(e,t);continue}i.get(e)!==r.id&&(c=!0),o.set(e,r.id);let a=s.get(r.id);!a||a.phase!==`streaming`?(s.set(r.id,{phase:`streaming`,startedAt:a?.startedAt??n,lastUpdateAt:n}),c=!0):n-a.lastUpdateAt>=hN&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&pN.setState({streamingMessageIds:o,messageStreamStates:s})}function _N(e){let t=e.listCanonicalScopes(e.sessionID).filter(t=>t.sessionID===e.sessionID&&t.transport===e.transport&&t.generation===e.generation);return t.length>0?[...t]:[{directory:e.resolvedDirectory,sessionID:e.sessionID,transport:e.transport,generation:e.generation}]}function vN(e){return!e.idleSessionID||!e.directory||e.directory===`global`?{action:`none`}:e.parentID?{action:`materialize-parent`,sessionID:e.parentID}:e.idleSessionID===e.activeSessionID&&e.directory===e.activeDirectory?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var yN=new Set,bN=(e,t)=>`${e}\n${t}`;function xN(e,t){!e||e===`global`||!t||yN.add(bN(e,t))}function SN(e,t){let n=bN(e,t);return yN.has(n)?(yN.delete(n),!0):!1}var CN=(e,t)=>{if(e.type!==`session.created`&&e.type!==`session.updated`&&e.type!==`session.deleted`)return null;let n=e.properties;if(!n||typeof n!=`object`)return null;let r=n.info;if(!r||typeof r!=`object`)return null;let i=r;if(typeof i.id!=`string`||!i.time)return null;let a=om(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},wN=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},TN=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},EN=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=CN(e,t);if(n){let e=wN(n.id);(!e||TN(e)!==TN(n))&&!pM(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`openchamber:session-metadata`){let t=e.properties,n=typeof t?.sessionID==`string`?t.sessionID:``,r=t?.metadata;if(!n||!r||typeof r!=`object`||Array.isArray(r))return;let i=wN(n);if(!i)return;Y.getState().upsertSession({...i,metadata:r});return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??CN(e)?.id;t&&Y.getState().removeSessions([t])}};function DN(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function ON(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function kN(e,t){let n=new Set;for(let[t,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&n.add(t);let r=new Set;for(let t of e.session){let e=t.parentID;e&&r.add(e)}for(let e of r)n.add(e);let i=t?.viewedSession;if(i?.sessionId&&i.directory===t?.directory){let t=i.sessionId;(e.session.some(e=>e.id===t)||Object.hasOwn(e.session_status??{},t))&&n.add(t)}return Array.from(n)}var AN=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},jN=(e,t,n)=>{let r=n??AN(t),i=[],a=new Set,o=e;for(;o&&!a.has(o);)a.add(o),i.push(o),o=r.get(o)?.parentID;return i},MN=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=jN(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},NN=t({usePermissionStore:()=>LN}),PN=async e=>{if(!e.ok)throw Error(`Permission auto-accept request failed (${e.status})`);let t=await e.json();if(!t.sessions||typeof t.sessions!=`object`)throw Error(`Invalid permission auto-accept response`);let n={};for(let[e,r]of Object.entries(t.sessions))e&&typeof r==`boolean`&&(n[e]=r);return{sessions:n}},FN=async(e,t)=>PN(await _(e,t)),IN=(e,t,n)=>MN({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),LN=De()(Oe((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await FN(`/api/permission-auto-accept`),r=Object.entries(t().autoAccept).filter(([e,t])=>!e.includes(`/`)&&typeof t==`boolean`);if(Object.keys(n.sessions).length===0&&r.length>0)for(let[e,t]of r)!e||typeof t!=`boolean`||(n=await FN(`/api/permission-auto-accept/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})}));e({autoAccept:n.sessions,loaded:!0})},reset:()=>{e({autoAccept:{},loaded:!1,saving:!1})},applySnapshot:t=>{let n={};for(let[e,r]of Object.entries(t.sessions??{}))e&&typeof r==`boolean`&&(n[e]=r);e({autoAccept:n,loaded:!0})},isSessionAutoAccepting:e=>{if(!e)return!1;let n=t().autoAccept;return Object.keys(n).length!==0&&IN(n,Nf(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(Se()){let r=await _(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??B.getDirectory()??void 0;e({autoAccept:(await FN(`/api/permission-auto-accept/sessions/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n,directory:r})})).sessions,loaded:!0})}finally{e({saving:!1})}}}}),{name:`permission-store`,storage:bt(),partialize:e=>({autoAccept:e.autoAccept})})),RN=De(()=>({statusById:new Map})),zN=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,BN=e=>Ns(e)??e,VN=(e,t,n)=>{RN.setState(r=>{let i=r.statusById.get(e);if(n===`idle`){if(!i)return r;let t=new Map(r.statusById);return t.delete(e),{statusById:t}}if(i&&i.status===n&&i.directory===t)return r;let a=new Map(r.statusById);return a.set(e,{status:n,directory:t}),{statusById:a}})},HN=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=zN(n.status?.type);VN(n.sessionID,BN(e),r);return}case`session.idle`:case`session.error`:case`session.execution.succeeded`:case`session.execution.failed`:case`session.execution.interrupted`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&VN(n.sessionID,BN(e),`idle`);return}case`session.execution.started`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&VN(n.sessionID,BN(e),`busy`);return}default:return}},UN=(e,t,n)=>{let r=BN(e),i=new Set(n??[]);RN.setState(e=>{let n=!1,a=new Map(e.statusById);for(let[o,s]of e.statusById)(s.directory===r||i.has(o))&&!(o in t)&&(a.delete(o),n=!0);for(let[e,i]of Object.entries(t)){let t=zN(i?.type),o=a.get(e);if(t===`idle`){o&&o.directory===r&&(a.delete(e),n=!0);continue}(!o||o.status!==t||o.directory!==r)&&(a.set(e,{status:t,directory:r}),n=!0)}return n?{statusById:a}:e})},WN=e=>typeof e==`string`&&e.trim().length>0;function GN(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function KN(e,t){return Ut(Ht.getState().dictionary,e,t)}function qN(e,t=`missing-directory`){let n=WN(e)?GN(e):null;if(t===`missing-session-id`||!n){nD.error(KN(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){nD.error(KN(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}nD.error(KN(`sessions.toast.openFailed`,{sessionId:n}))}function JN(e,t,n={}){let r=n.notify!==!1;if(!WN(e))return r&&qN(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!WN(t))return r&&qN(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!pt()?(MK.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!yt.getState().setActiveMainTab(`chat`)?(r&&qN(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var YN=null,XN=e=>{YN=e},ZN=(e,t)=>typeof YN==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(YN(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):JN(e,t,{switchToChat:!0}),QN=(e,t)=>!e||!t?null:`${e}:${t}`,$N=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=QN(e.sessionID,e.id);if(n||!o||r.has(o))return!1;r.add(o);let s=typeof e.permission==`string`&&e.permission.trim().length>0?e.permission:`Agent needs your approval`;return i(`Permission needed`,{id:`permission-${o}`,description:s,action:{label:`Open session`,onClick:()=>a(e.sessionID,t)}}),!0},eP=e=>e?e.toLowerCase().includes(`text/html`):!1;function tP(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function nP(e){return typeof e==`string`&&e.length>0?e:void 0}function rP(e,t,n){let r=n?`: ${n}`:``,i=Error(`${e} (${t})${r}`);throw i.status=t,i}async function iP(e){try{return(await e.text()).trim()}catch{return``}}async function aP(e,t){if(eP(e.headers.get(`content-type`)))throw Error(`${t}: unexpected HTML response`);if(e.status===204)return null;let n=await e.text();if(!n.trim()){if(e.ok)return null;throw Error(`${t}: empty response`)}try{return JSON.parse(n)}catch{throw Error(`${t}: malformed JSON`)}}function oP(e){return e?{directory:e}:{}}function sP(e){if(!tP(e))return null;let t=nP(e.value),n=nP(e.label);return!t||!n?null:{value:t,label:n,...nP(e.description)?{description:nP(e.description)}:{}}}function cP(e){if(!tP(e))return null;let t=nP(e.key),n=nP(e.type);if(!t||!n)return null;let r=nP(e.title),i=nP(e.description);if(n===`external`){let a=nP(e.url);return a?{key:t,type:n,url:a,...r?{title:r}:{},...i?{description:i}:{}}:null}if(n===`string`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=sP(e);return t?[t]:[]}):void 0;return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...nP(e.placeholder)?{placeholder:nP(e.placeholder)}:{},...typeof e.default==`string`?{default:e.default}:{},...a&&a.length>0?{options:a}:{}}}if(n===`number`||n===`integer`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`number`?{default:e.default}:{}};if(n===`boolean`)return{key:t,type:n,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...typeof e.default==`boolean`?{default:e.default}:{}};if(n===`multiselect`){let a=Array.isArray(e.options)?e.options.flatMap(e=>{let t=sP(e);return t?[t]:[]}):[];return a.length===0?null:{key:t,type:n,options:a,...r?{title:r}:{},...i?{description:i}:{},...typeof e.required==`boolean`?{required:e.required}:{},...Array.isArray(e.default)?{default:e.default.filter(e=>typeof e==`string`)}:{}}}return null}function lP(e){let t=tP(e)?e:null,n=t&&tP(t.data)?t.data:t&&tP(t.form)?t.form:t;if(!n)throw Error(`session form: expected form payload`);let r=nP(n.id),i=nP(n.sessionID),a=nP(n.title);if(!r||!r.startsWith(`frm_`)||!i||!a)throw Error(`session form: missing id, sessionID, or title`);let o=Array.isArray(n.fields)?n.fields.flatMap(e=>{let t=cP(e);return t?[t]:[]}):[];if(o.length===0)throw Error(`session form: expected fields`);return{id:r,sessionID:i,title:a,fields:o,...tP(n.metadata)?{metadata:n.metadata}:{}}}function uP(e){let t=tP(e)?e:null,n=t&&Array.isArray(t.data)?t.data:Array.isArray(e)?e:null;if(!n)throw Error(`session form: expected list payload`);return n.map(e=>lP(e))}function dP(e){return`/api/session/${encodeURIComponent(e)}/form`}function fP(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/reply`}function pP(e,t){return`/api/session/${encodeURIComponent(e)}/form/${encodeURIComponent(t)}/cancel`}async function mP(e){let t=await _(dP(e.sessionID),{method:`GET`,query:oP(e.directory),signal:e.signal});return t.ok||rP(`session form list`,t.status,await iP(t)),uP(await aP(t,`session form list`))}async function hP(e){let t=await _(fP(e.sessionID,e.formID),{method:`POST`,headers:{"Content-Type":`application/json`},query:oP(e.directory),body:JSON.stringify({answer:e.answer}),signal:e.signal});t.ok||rP(`session form reply`,t.status,await iP(t))}async function gP(e){let t=await _(pP(e.sessionID,e.formID),{method:`POST`,query:oP(e.directory),signal:e.signal});t.ok||rP(`session form cancel`,t.status,await iP(t))}var _P=De((e,t)=>({forms:{},upsert:t=>e(e=>{let n=e.forms[t.sessionID]??[],r=n.findIndex(e=>e.id===t.id),i=r>=0?n.map((e,n)=>n===r?t:e):[...n,t];return{forms:{...e.forms,[t.sessionID]:i}}}),remove:(t,n)=>e(e=>{let r=e.forms[t];if(!r?.length)return e;let i=r.filter(e=>e.id!==n);if(i.length===r.length)return e;let a={...e.forms};return i.length>0?a[t]=i:delete a[t],{forms:a}}),replaceSession:(t,n)=>e(e=>({forms:{...e.forms,[t]:n}})),formsForSession:e=>t().forms[e]??[]}));async function vP(e){let t=await mP(e);_P.getState().replaceSession(e.sessionID,t)}var yP=15e3,bP=new Map,xP=(e,t)=>`${e}\n${t}`;function SP(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of bP)n.expiresAt<=t&&bP.delete(e);bP.set(xP(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+yP})}function CP(e,t){let n=bP.get(xP(e,t));return n?n.expiresAt<=Date.now()?(bP.delete(xP(e,t)),null):n:null}var wP=[],TP=[],EP=[],DP={sessionID:``,revertMessageID:void 0,records:TP,history:EP},OP=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},kP=e=>{for(let t of e){let e=OP(t);if(e.length>0)return e}return``},AP=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]?.message!==t[n]?.message||e[n]?.parts!==t[n]?.parts)return!1;return!0},jP=(e,t=DP)=>{let n=e.sessionID;if(!n)return DP;let r=e.messages,i=e.revertMessageID,a=[];for(let t=r.length-1;t>=0;--t){let n=r[t];n.role===`user`&&(i&&Xs(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??wP}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:TP,history:EP};if(t.sessionID===n&&t.revertMessageID===i&&AP(t.records,a))return t;let o=[];for(let e of a){let t=kP(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function MP(e,t){let n=e.getChild(t.directory)?.getState();if(!n)return`unknown`;let r=n.session_status?.[t.sessionID];return r?r.type:n.session_status_snapshot_at===void 0?`unknown`:`idle`}function NP(e,t){return t.map(t=>{let n=e.getChild(t.directory)?.getState();return`${t.directory}\n${t.sessionID}\n${n?.session_status?.[t.sessionID]?.type??``}\n${n?.session_status_snapshot_at??``}`}).join(`\0`)}function PP(e,t,n){let r=new Map,i=new Map;for(let e of t){let t=i.get(e.directory)??[];t.push(e),i.set(e.directory,t)}let a=()=>{let t=!1;for(let[n,a]of r)i.has(n)&&e.getChild(n)||(a(),r.delete(n),t=!0);for(let[a,o]of i){if(r.has(a))continue;let i=e.getChild(a);i&&(r.set(a,i.subscribe((e,t)=>{for(let r of o)if(e.session_status?.[r.sessionID]!==t.session_status?.[r.sessionID]||e.session_status_snapshot_at!==t.session_status_snapshot_at){n();return}})),t=!0)}return t};a();let o=e.subscribeRegistry(()=>{a()&&n()});return()=>{o();for(let e of r.values())e();r.clear()}}function FP(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function IP(e,t,n,r){if(!t||t.id!==e||!t.parentID)return null;let i=t.parentID,a=n?.id===i?n??null:null;return{id:i,directory:a?.directory??t.directory??r??null,session:a}}var LP=`__openchamber_sync_context__`,RP=globalThis,zP=RP[LP]??(0,K.createContext)(null);RP[LP]=zP;function BP(){let e=(0,K.useContext)(zP);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function VP(e){return Array.from(e.children.values(),e=>e.getState())}function HP(e,t,n){let r=(0,H.c)(7),i=t===void 0?Object.is:t,{childStores:a}=BP(),o=(0,K.useRef)(void 0),s=(0,K.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(VP(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],K.useSyncExternalStore(u,l,l)}function UP(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:(n=t=>iN(t,e),t[0]=e,t[1]=n);let r;return t[2]===e?r=t[3]:(r=(t,n)=>t.subscribeAllSelected(t=>t.session_status?.[e],n),t[2]=e,t[3]=r),HP(n,Object.is,r)}function WP(e){let t=(0,H.c)(5),n=UP(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=RN(r),a;return t[2]!==i||t[3]!==n?(a=GP(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function GP(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var KP=[],qP={};function JP(e){let t=(0,H.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?nN(e):qP,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(YP,t):XP,t[2]=n,t[3]=i),HP(r,eN,i)}function YP(e){return e.session_status}function XP(){}function ZP(e){let t=(0,H.c)(5),n=e?.enabled??!0,r=Y(eF),i;t[0]!==n||t[1]!==r?(i=e=>n?tN(e,r):KP,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===n?a=t[4]:(a=(e,t)=>n?e.subscribeAllSelected(QP,t):$P,t[3]=n,t[4]=a),HP(i,$M,a)}function QP(e){return e.session}function $P(){}function eF(e){return e.pendingDeletionIds}var tF=!1,nF=0,rF=0,iF=1500,aF=new Set([`patch`,`step-start`,`step-finish`]),oF=5e3,sF=4e4,cF=15e3,lF=6e4,uF=6e4,dF=e=>!e||e.length===0?``:e.map(e=>e.id).sort(fF).join(`|`),fF=(e,t)=>e<t?-1:+(e>t),pF=e=>JSON.stringify(e);function mF(e,t){return pF(e)===pF(t)}var hF=5e3,gF=new Map,_F=(e,t)=>`${e}:${t}`;function vF(e,t){try{let n=U();return n?Du(n.getTranscript(G(e,t))):!1}catch{return!1}}async function yF(e,t){try{if(!U())return;await Ed(e,t)}catch{}}function bF(e,t,n,r){if(!e||e===`global`||!t)return;let i=_F(e,t),a=gF.get(i);if(a&&Date.now()-a.enqueuedAt<hF){Promise.resolve().then(()=>{vF(e,t)&&yF(e,t)});return}gF.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){gF.delete(i);return}try{await SF(e,t,a,r)}catch{}finally{gF.delete(i)}})}function xF(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let t=n.getChild(e);t&&wb(t,r)}t.domainActivityHint?.kind===`terminal`&&r===wF&&e===CF&&bF(e,r,n,{reason:`session-idle`})}}async function SF(e,t,n,r){let i=n.getState().session_status?.[t];rc.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return U()?.getTranscript(G(e,t)).liveRevision}catch{return}},o=a(),s=await Hx({directory:e,sessionID:t,limit:sg(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=Wx({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:aF});return vF(e,t)&&await yF(e,t),c.applied?(hS({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await Ob(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var CF=``,wF=``,TF=null,EF=``,DF=``,OF=new Map,kF=15e3,AF=(e,t)=>`${e}\n${t}`;function jF(e=Date.now()){for(let[t,n]of OF.entries())n<=e&&OF.delete(t)}var MF=new Set,NF=new Set,PF=(e,t)=>!e||!t?null:`${e}:${t}`,FF=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},IF=(e,t)=>{if(e.type!==`openchamber:notification`)return!1;let n=e.properties;if(!n||typeof n!=`object`)return!0;let r=n;if((r.desktopNotificationDelivered===!0||r.desktopStdoutActive===!0)&&m()===`local`)return!0;let i=b()?.notifications;return i?.notifyAgentCompletion&&i.notifyAgentCompletion({title:FF(r.title),body:FF(r.body),tag:FF(r.tag),kind:FF(r.kind),sessionId:FF(r.sessionId),assistantID:FF(r.assistantID),directory:FF(r.directory)??(t&&t!==`global`?t:void 0),requireHidden:r.requireHidden===!0}).catch(e=>{console.warn(`[notifications] failed to dispatch UI notification`,e)}),!0};function LF(e,t){!e||!t||!TF||SN(e,t)&&bF(e,t,TF,{reason:`session-idle`})}function RF(e){TF=e,e&&LF(CF,wF)}function zF(e,t){CF=e,wF=t,LF(e,t)}function BF(e,t,n){if(!e||!t)return;let r=AF(e,t);if(!n){OF.delete(r);return}OF.set(r,Date.now()+kF)}function VF(e,t){if(!e||!t){EF=``,DF=``;return}EF=e,DF=t}function HF(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=AF(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(EF,DF),n(CF,wF),e}function UF(){return typeof document<`u`&&document.hasFocus()}function WF(e,t){return t?CF&&wF&&e===CF&&t===wF&&UF()?!0:(jF(),OF.has(AF(e,t))):!1}function GF(){return tF||Date.now()-nF<iF}function KF(e){return!CF||!wF||e!==CF?null:{directory:CF,sessionId:wF}}function qF(e,t){return kN(t,{directory:e,viewedSession:KF(e)})}function JF(e,t,n,r=sF,i=cF){return!(e<=0||n-e<r||n-t<i)}function YF({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=sF,domainStaleThresholdMs:s=lF,recoveryCooldownMs:c=uF}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var XF=Se(),ZF=(e,t)=>{!XF||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},QF=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),$F=e=>{if(!e||e===`global`)return e;let t=e.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return t.length>1?t.replace(/\/+$/,``):t},eI=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`session.status`||e.type===`session.idle`||e.type===`session.error`||e.type===`todo.updated`||e.type===`permission.asked`||e.type===`permission.replied`||e.type===`question.asked`||e.type===`question.replied`||e.type===`question.rejected`||e.type===`form.replied`||e.type===`form.cancelled`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`form.created`){let e=n.form;if(e&&typeof e==`object`){let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}return null}if(e.type===`message.part.updated`){let e=n.sessionID;if(typeof e==`string`&&e.length>0)return e;let t=n.part;if(!t||typeof t!=`object`)return null;let r=t.sessionID;return typeof r==`string`&&r.length>0?r:null}if(e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`session.created`||e.type===`session.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}let r=n.sessionID;return typeof r==`string`&&r.length>0?r:null},tI=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.messageID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.part;if(!e||typeof e!=`object`)return null;let t=e.messageID;return typeof t==`string`&&t.length>0?t:null}let r=n.messageID??n.assistantMessageID;return typeof r==`string`&&r.length>0?r:null},nI=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},rI=(e,t,n,r)=>{if(!t)return;nI(e,t,n);let i=e.sessionMessageIdsById.get(t),a=new Set;for(let n of r)n?.id&&(a.add(n.id),e.messageSessionById.set(n.id,t));if(i)for(let t of i)a.has(t)||e.messageSessionById.delete(t);e.sessionMessageIdsById.set(t,a)},iI=(e,t,n,r)=>{if(!t||!n)return;nI(e,t,r),e.messageSessionById.set(n,t);let i=e.sessionMessageIdsById.get(t);i?i.add(n):e.sessionMessageIdsById.set(t,new Set([n]))},aI=(e,t,n)=>{if(!t)return;let r=n??e.messageSessionById.get(t);if(e.messageSessionById.delete(t),!r)return;let i=e.sessionMessageIdsById.get(r);i&&(i.delete(t),i.size===0&&e.sessionMessageIdsById.delete(r))},oI=(e,t)=>{if(!t)return;e.sessionDirectoryById.delete(t);let n=e.sessionMessageIdsById.get(t);if(n)for(let t of n)e.messageSessionById.delete(t);e.sessionMessageIdsById.delete(t)},sI=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),nI(e,i.id,t));try{let n=U(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),nI(e,a.scope.sessionID,t);let i=n?.getTranscript?.(G(t,a.scope.sessionID));if(i){let n=Kd(i);rI(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||oI(e,n))},cI=(e,t,n)=>{for(let[r,i]of t.children){let t=i.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e))return nI(n,e,r),r}try{let t=U()?.getCacheBudget?.().listCanonical()?.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory)??[],r=[...new Set(t)];if(r.length===1){let t=r[0];return nI(n,e,t),t}}catch{}return null},lI=(e,t,n)=>{let r=e.getChild(t);if(!r)return!1;let i=r.getState();if(i.session.some(e=>e.id===n)||Object.prototype.hasOwnProperty.call(i.session_status??{},n))return!0;try{return(U()??W(t,r)).hasSession?.(G(t,n))??!1}catch{return!1}},uI=(e,t,n)=>{try{let e=U();if(e&&e.getParts(G(t,n),n).length>0)return!0}catch{}return!1},dI=e=>!CF||!wF?null:e.getChild(CF)?CF:null,fI=(e,t,n,r)=>{let i=$F(t),a=eI(n);if(a){if(i&&i!==`global`&&lI(r,i,a))return nI(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=cI(a,r,e);if(n)return n}let o=tI(n);if(o){if(i&&i!==`global`&&uI(r,i,o))return i;let t=e.messageSessionById.get(o);if(t){let n=e.sessionDirectoryById.get(t);if(n&&r.getChild(n))return n}if(uI(r,i,o))return i;for(let[e]of r.children)if(uI(r,e,o))return e;let n=dI(r);if(n)return n}if((a||o)&&(!i||i===`global`)&&r.children.size===1){let e=r.children.keys().next().value;if(typeof e==`string`&&e.length>0)return e}return i},pI=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===CF&&wF)return wF};function mI(e,t){let n=eI(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=tI(e);return r?t.get(r):void 0}function hI(e,t){return e===t}var gI=e=>e.type===`session.created`||e.type===`session.updated`||e.type===`session.deleted`||e.type===`message.updated`||e.type===`message.removed`||e.type===`message.part.updated`||e.type===`message.part.removed`||e.type===`message.part.delta`,_I=(e,t,n)=>{if(!t||t===`global`)return;let r=eI(n);switch(r&&nI(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&nI(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&oI(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&iI(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&aI(e,t.messageID,t.sessionID);return}case`message.part.updated`:{let r=n.properties,i=r.part,a=i?.sessionID??r.sessionID,o=i?.messageID;o&&a&&iI(e,a,o,t);return}default:return}};async function vI(e,t,n){let r=t.getState(),i=new Set([...r.session.map(e=>e.id),...Object.keys(r.session_status??{}),...Object.keys(r.question??{}),...Object.keys(r.permission??{})]),a=n??Array.from(i);if(a.length!==0){try{let n=new Map(a.map(e=>[e,dF(r.question[e])])),o=await B.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!WF(e,t))for(let r of n){if(i.has(r.id))continue;let n=PF(t,r.id);if(!n||MF.has(n))continue;MF.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;nD.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>ZN(t,e)}})}}t.setState(e=>{let t={...e.question};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;dF(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,dF(r.permission[e])])),o=await B.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=LN.getState(),l=Se()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await B.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await Tw(r.sessionID,r.id,`once`);let t=e.get(n)??new Set;t.add(r.id),e.set(n,t)}else if(i.state===`resolved`){let e=t.get(n)??new Set;e.add(r.id),t.set(n,e)}}catch{}})));for(let n of l){let r=e.get(n),i=t.get(n);if(!r&&!i)continue;let a=e=>r?.has(e)||i?.has(e)||!1,o=(s[n]??[]).filter(e=>!a(e.id));o.length>0?s[n]=o:delete s[n]}}for(let[t,n]of Object.entries(s)){let i=new Set((r.permission[t]??[]).map(e=>e.id)),a=WF(e,t);if(!a)for(let t of n)i.has(t.id)||$N({permission:t,directory:e,isViewed:a,pendingIds:NF,show:(e,t)=>nD.info(e,t),openSession:ZN})}t.setState(e=>{let t={...e.permission};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;dF(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function yI(e,t,n){n?.statusOnly}function bI(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function xI(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function SI(e,t,n,r,i,a){let o=qF(e,t.getState());await Ob(e,t,o);let s=ON(qF(e,t.getState()),{directory:e,viewedSession:KF(e)});if(s.length>0){let a=B.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);rc.recovery.materializing({reason:r,directory:e,sessionID:o});let c=await Qp(async()=>await a.session.get({sessionID:o})).catch(()=>null);if(c&&hI(s,i(o))){let r=om(Ge(c));t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?mF(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>fF(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),nI(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!hI(l,i(o)),m=l;H_(e,o);try{let r=await Hx({directory:e,sessionID:o,limit:sg(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!Wx({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:aF}).applied)return;let a=bd().getTranscript(G(e,o));rI(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),hS({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await kb({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}finally{U_(e,o)}}))}let c=xI(a);c.resyncBlockingRequests&&await vI(e,t,o),c.ingestRoutingIndex&&sI(n,e,t.getState())}function CI(e){try{let t=U(),n=u(),r=f();return t?.getCacheBudget?.().listCanonicalScopesForSession(e,{transport:n,generation:r})?.map(e=>G(e.directory,e.sessionID,{transport:e.transport,generation:e.generation}))??[]}catch{return[]}}function wI(e){let t=eI(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var TI=null,EI=0;function DI(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function OI(){EI===0&&(TI={byScope:new Map,routing:[],debug:[]}),EI+=1}function kI(){if(EI===0||(--EI,EI>0))return;let e=TI;if(TI=null,e)try{for(let t of e.byScope.values()){let n=Sd(t.scope,{type:`sse-event-batch`,events:t.events})??{applied:!1,changed:!1};if(n.changed)for(let n of e.debug)n.transcriptSessionID===t.transcriptSessionID&&(n.changed=!0);let r=n.materialization;if(r){let e=t.eventMessageIDs.find(e=>typeof e==`string`),n=pI(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&bF(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?rc.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):rc.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)_I(t.routingIndex,t.resolvedDirectory,t.payload)}finally{TI=null,EI=0}}function AI(e,t,n,r,i,a){let o=_N({sessionID:t,resolvedDirectory:n,transport:u(),generation:f(),listCanonicalScopes:CI});if(TI){for(let n of o){let o=DI(n),s=TI.byScope.get(o);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:i,routingIndex:a},TI.byScope.set(o,s)),s.events.push(e),s.eventMessageIDs.push(r)}TI.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:r,changed:!1}),TI.routing.push({routingIndex:a,resolvedDirectory:n,payload:e});return}let s=!1;for(let n of o){let o=Sd(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};o.changed&&(s=!0);let c=o.materialization;if(c){let e=pI(c.sessionID??t,c.messageID??r,n.directory,a);e&&bF(n.directory,e,i,{reason:c.reason,messageID:c.messageID,partID:c.partID})}}s?rc.dispatch.eventApplied(e.type,t,r):rc.dispatch.eventNoChange(e.type,t,r),_I(a,n,e)}function jI(e,t,n,r){if(t.type===`openchamber:worktree-bootstrap-status`){let e=t.properties;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e,n=typeof t.directory==`string`?t.directory:``;n&&Wk(n,{status:t.status,error:typeof t.error==`string`?t.error:null,updatedAt:typeof t.updatedAt==`number`?t.updatedAt:Date.now()})}return}if(t.type===`openchamber:question-auto-delegate-changed`){qj();return}if(t.type===`openchamber:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&LN.getState().applySnapshot({sessions:t.sessions})}return}let i=fI(r,e,t,n);if(IF(t,i))return;if(EN(t,i),HN(i,t),i===`global`||!i){if(ju(t.type)){let e=wI(t);if(e){AI(t,e,i||`global`,tI(t)??void 0,n,r);return}}let e=GF(),a=SM(t);if(!a)return;if(a.type===`refresh`)e||kM.setState({reload:`pending`});else if(a.type===`project`){let e=kM.getState();kM.setState({projects:CM(e,a.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e)for(let e of n.children.keys()){let t=n.getChild(e);t&&t.getState().status!==`loading`&&(t.setState({status:`loading`,session_status_snapshot_at:void 0}),n.ensureChild(e))}return}let a=n.getChild(i),o=i;if(!a){let e=eI(t);if(e){let t=cI(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(ju(t.type)){let e=wI(t);if(e){AI(t,e,o,tI(t)??void 0,n,r);return}}let e=SM(t);if(e?.type===`refresh`)kM.setState({reload:`pending`});else if(e?.type===`project`){let t=kM.getState();kM.setState({projects:CM(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=_M(t.properties);if(!e)return;if(LN.getState().isSessionAutoAccepting(e.sessionID)){_I(r,o,t),Se()&&Tw(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=WF(o,e.sessionID);$N({permission:e,directory:o,isViewed:t,pendingIds:NF,show:(e,t)=>nD.info(e,t),openSession:ZN})}}if(t.type===`permission.replied`){let e=t.properties,n=QN(e.sessionID,e.requestID);n&&(NF.delete(n),nD.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=vM(t.properties);if(!e)return;let n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=PF(n,e.id);if(!WF(o,n)&&t&&!MF.has(t)){MF.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;nD.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>ZN(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=PF(e.sessionID,e.requestID);n&&(MF.delete(n),nD.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??Y.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&ZA({directory:o,session:e,time:Date.now(),viewed:WF(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=eI(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=vN({idleSessionID:e,directory:o,parentID:r,activeSessionID:wF,activeDirectory:CF});i.action===`materialize-parent`?bF(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?bF(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&xN(o,i.sessionID)}}let s=a.getState(),c=eI(t)??void 0,l=tI(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;TS(o,e)}if((t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&FS(o,c,l))return;if(ju(t.type)){let e=wI(t);if(!e){_I(r,o,t);return}AI(t,e,o,l,n,r);return}let u={...s};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:case`openchamber:session-metadata`:u.session=[...s.session],u.session_status_observed_at={...s.session_status_observed_at},u.permission={...s.permission},u.todo={...s.todo};break;case`session.diff`:u.session_diff={...s.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:u.session_status={...s.session_status??{}},u.session_status_observed_at={...s.session_status_observed_at},u.session_error_at={...s.session_error_at};break;case`todo.updated`:u.todo={...s.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:u.permission={...s.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:u.question={...s.question};break;case`lsp.updated`:u.lsp=[...s.lsp]}let d=DM(u,t,{onSetSessionTodo:(e,t)=>{nS.getState().setSessionTodos(e,t)},onServerSessionIdle:e=>{$.getState().releaseQueueAbortBlocksForServerIdle(o,e)},now:Date.now}),f=typeof d==`boolean`?d:d.changed,p=typeof d==`boolean`?void 0:d.materialization;if(f){a.setState(u);let e=eI(t)??void 0,n=tI(t)??void 0;rc.dispatch.eventApplied(t.type,e,n)}else{let e=eI(t)??void 0,n=tI(t)??void 0;rc.dispatch.eventNoChange(t.type,e,n)}if(p){let e=pI(p.sessionID??eI(t)??void 0,p.messageID??tI(t)??void 0,o,r);e&&bF(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}_I(r,o,t)}var MI=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},NI=null,PI=async()=>{let e=m();return(!NI||NI.runtimeKey!==e)&&(NI={runtimeKey:e,promise:_(`/api/config/opencode-resolution`,{signal:AbortSignal.timeout(4e3)}).then(async e=>{if(e.ok){let t=await e.json();return t.source===`bundled`||t.detectedSourceNow===`bundled`}let t=await _(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),NI.promise},FI=e=>{typeof window>`u`||PI().then(t=>{t||MI(e)})};function II(e,t,n){return e!==t||n!==!1}function LI(e){let t=Up(e=>e.settingsMessageStreamTransport),n=(0,K.useRef)(null);n.current||=new WM;let r=n.current,i=(0,K.useRef)(null);i.current||=QF();let a=i.current,c=(0,K.useRef)(0),l=(0,K.useRef)(new Map),d=(0,K.useRef)(new Map),p=(0,K.useRef)(new Map),h=(0,K.useRef)(new Set),g=(0,K.useRef)(null),_=(0,K.useRef)(!1),v=(0,K.useRef)(!1),y=(0,K.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return II(e,t.directory,t.enabled)},x=(0,K.useMemo)(()=>({childStores:r,sdk:e.sdk,directory:e.directory}),[r,e.sdk,e.directory]);(0,K.useEffect)(()=>(RF(r),()=>{RF(null)}),[r]);let S=(0,K.useCallback)((e,t,n)=>{if(yI(e,r.children.get(e),n),!b(e))return;let i=r.children.get(e);if(!i)return;let o=h.current;o.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),o.add(e),SI(e,i,a,t,t=>d.current.get(AF(e,t))??0,n).catch(()=>{}).finally(()=>{o.delete(e)}))},[r,a]);(0,K.useEffect)(()=>{Se()||LN.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,K.useEffect)(()=>{let t=new Set;r.configure({onBootstrap:n=>{if(!b(n)||t.has(n))return;t.add(n);let i=r.getChild(n);i&&(async()=>{if(await Fn(),!b(n))return;let t=kM.getState();await fN({directory:n,sdk:e.sdk,getState:()=>i.getState(),set:e=>{i.setState(e),e.session&&sI(a,n,i.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[r,e.sdk,a]),(0,K.useEffect)(()=>{let t=++rF;tF=!0;let n=kM.getState().actions;return Fn().then(()=>{if(rF===t)return dN(e.sdk,e=>{rF===t&&n.set(e)})}).then(()=>{rF===t&&(nF=Date.now())}).finally(()=>{rF===t&&(tF=!1)}),()=>{rF===t&&(tF=!1)}},[e.sdk]),(0,K.useEffect)(()=>{let n=Pj({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>fI(a,e,t,r),onFlushStart:()=>{OI()},onFlushEnd:()=>{kI()},onNormalizedEvent:(e,t)=>{xF(e,t,r);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===CF&&n===wF&&(t.domainActivityHint||t.admissionHint)&&l.current.set(AF(e,n),Date.now())},onEvent:(e,t)=>{let n=mI(t,a.messageSessionById)??null;if(n&&gI(t)){let t=AF(e,n);d.current.set(t,(d.current.get(t)??0)+1)}if(n&&e===CF&&n===wF&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&l.current.set(AF(e,n),Date.now()),n&&e===CF&&n===wF&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=AF(e,n);l.current.has(t)||l.current.set(t,Date.now())}r?.type===`idle`&&l.current.delete(AF(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&l.current.delete(AF(e,n)),ZF(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&FI({version:e})}jI(e,t,r,a)},onTransportActivity:()=>{let e=Date.now();c.current=e,Bh(e)},onReconnect:()=>{Up.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!_.current;_.current=!0;let t=bI({isFirstConnect:e,disconnectedBeforeFirstConnect:v.current});for(let e of r.children.keys())S(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{_.current||(v.current=!0);let{hasEverConnected:t}=Up.getState();Up.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{Md({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{qj(),Nd(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=Up.getState();Up.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of r.children.keys())S(e,`transport-switch`)}});g.current=n.reconnect;let i=Vh(n.reconnect);return()=>{i(),g.current===n.reconnect&&(g.current=null),n.cleanup()}},[e.sdk,r,a,t,S]),(0,K.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of r.children.entries()){let r=n.getState();if(DN(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;JF(c.current,i,t)&&(g.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=KF(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=AF(e,a.sessionId),u=l.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!u){l.current.set(s,t);continue}if(o?.type===`idle`||!o){l.current.delete(s);continue}YF({isViewed:!0,status:o,lastTransportActivityAt:c.current,lastDomainActivityAt:u??0,lastFullResyncAt:i,now:t})&&S(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},i=setInterval(n,oF);return n(),()=>{e=!0,clearInterval(i)}},[r,S]),(0,K.useEffect)(()=>{let t;if(e.directory){let n=r.ensureChild(e.directory,{bootstrap:II(e.directory,e.directory,e.bootstrapDirectory)}),i=CP(m(),e.directory);i&&(n.setState(e=>({session_status:{...e.session_status,[i.sessionId]:e.session_status[i.sessionId]??i.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[i.sessionId]===i.status?{session_status:{...e.session_status,[i.sessionId]:{type:`idle`}}}:e)},yP)),sI(a,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,r,a]);let C=(0,K.useRef)(null),w=(0,K.useRef)({transport:u(),generation:f()});return(0,K.useEffect)(()=>{if(C.current)return;let e=Ux({childStores:r,getViewedSession:()=>HF()[0]??null,getViewedSessions:()=>HF()});return C.current=e,w.current={transport:u(),generation:f()},()=>{let e=w.current;Fd(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[r]),(0,K.useEffect)(()=>(wf(e.sdk,r,e.directory,(e,t)=>{nI(a,e,t)}),KS(e.sdk,r,()=>B.getDirectory()||e.directory),bb((e,t,n)=>{let r=new Set(n),i=Ns(e)??e,a={...t};for(let[e,t]of RN.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});UN(e,a,n)}),()=>{bb(void 0)}),[e.sdk,e.directory,r,a]),(0,K.useEffect)(()=>s(e=>{if(!e.transportIdentityChanged){w.current={transport:u(),generation:f()};return}let t=w.current;Fd(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:u(),generation:f()}}),[]),(0,K.useEffect)(()=>o(()=>{Hh(`reasoning_projection`),(C.current?.repository)?.resetReasoningProjection?.();let e=HF();for(let t of e)wd(t.directory,t.sessionID).catch(()=>void 0)}),[]),(0,K.useEffect)(()=>{if(!e.directory)return;let t=r.getChild(e.directory);if(!t)return;let n=e.directory,i=()=>{gN(t.getState(),{directory:n,store:t})};i();let a=t.subscribe(()=>{i()}),o=[],s=()=>{for(let e of o)e();o=[];let e=U()??W(n,t),r=t.getState().session_status??{};for(let[t,a]of Object.entries(r))!a||a.type===`idle`||o.push(e.subscribe(G(n,t),i));i()};s();let c=gd(s);return()=>{c(),a();for(let e of o)e()}},[e.directory,r]),(0,$j.jsxs)(zP.Provider,{value:x,children:[(0,$j.jsx)(sM,{}),e.children]})}function RI(e,t){let n=(0,H.c)(4),r=BP(),i=e??r.directory,a;return n[0]!==i||n[1]!==t||n[2]!==r.childStores?(a=r.childStores.ensureChild(i,t),n[0]=i,n[1]=t,n[2]=r.childStores,n[3]=a):a=n[3],a}function zI(e,t){let n=RI(t);return ke(n,e)}function BI(e){let{childStores:t}=BP(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,K.useRef)(e);r.current=e;let i=(0,K.useCallback)(e=>n?PP(t,r.current,e):()=>void 0,[t,n]),a=(0,K.useCallback)(()=>n?NP(t,r.current):``,[t,n]);return K.useSyncExternalStore(i,a,a)}function VI(){let e=(0,H.c)(2),{childStores:t}=BP(),n;return e[0]===t?n=e[1]:(n=e=>MP(t,e),e[0]=t,e[1]=n),n}function HI(e,t){let n=BP(),r=t??n.directory;return Xd(e,r,RI(r))}function UI(e,t){let n=BP(),r=t??n.directory;return sf(e,r,RI(r))}function WI(e,t){let n=(0,H.c)(8),r=BP(),i=t??r.directory,a=RI(i),o=(0,K.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(U()??W(i,a)).getRequestState?.(G(i,e)),n=t?{status:t.status===`idle`?`ready`:t.status,error:t.error,requestedLimit:t.requestedLimit??0,at:Date.now(),loadGeneration:0}:void 0,r=o.current;return r&&n&&r.status===n.status&&r.error===n.error&&r.requestedLimit===n.requestedLimit?r:(o.current=n,n)},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return GI;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=gd(()=>{n(),o.current=void 0,n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function GI(){}function KI(e,t,n){let r=BP(),i=t??r.directory;return lf(e,i,RI(i),n)}function qI(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=RI(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):JI,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function JI(){}function YI(e,t){let n=(0,H.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=RI(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status_observed_at?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):XI,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return K.useSyncExternalStore(c,o,o)}function XI(){}function ZI(e,t){let n=(0,H.c)(7),r=t===void 0||t,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=RI(e,i),o;n[1]!==r||n[2]!==a?(o=()=>r?a.getState().session_status_snapshot_at:void 0,n[1]=r,n[2]=a,n[3]=o):o=n[3];let s=o,c;n[4]!==r||n[5]!==a?(c=e=>r?a.subscribe(e):QI,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return K.useSyncExternalStore(l,s,s)}function QI(){}function $I(e,t,n){let r=(0,H.c)(6),i=RI(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??$L:$L,r[0]=e,r[1]=i,r[2]=a):a=r[2];let o=a,s;r[3]!==e||r[4]!==i?(s=t=>e?i.subscribe(t):eL,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return K.useSyncExternalStore(c,o,o)}function eL(){}function tL(e,t,n){let r=(0,H.c)(2),i=RI(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??eR:eR,r[0]=e,r[1]=a),ke(i,a)}function nL(e){return zI(rL,e)}function rL(e){return e.session}var iL=e=>e.permission,aL=e=>e.question;function oL(e){if(!e)return qm;let t=[];for(let n of e.messageOrder){let r=e.partsByMessageID[n];if(r)for(let e of Km(r))t.push(e)}return t.length===0?qm:t}function sL(){let e=null;return t=>{let n=oL(t);if(n.length===0)return qm;let r=n.map(e=>`${e.parentSessionId}\u0000${e.sessionId}`).join(``);return e&&e.signature===r?e.edges:(e={signature:r,edges:n},n)}}function cL(e,t){let n=BP(),r=t??n.directory,i=RI(r),a=(0,K.useRef)(sL()).current,o=(0,K.useCallback)(()=>{if(!e)return qm;try{let t=U()?.getTranscript(G(r,e));return a(t)}catch{return qm}},[a,e,r]),s=(0,K.useCallback)(t=>{if(!e)return()=>void 0;let n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),a=gd(()=>{n(),n=(U()??W(r,i))?.subscribe(G(r,e),()=>{t()})??(()=>void 0),t()});return()=>{a(),n()}},[e,i,r]);return K.useSyncExternalStore(s,o,o)}function lL(e,t,n,r){let i=(0,H.c)(7),a=cL(e,t),o;i[0]===r?o=i[1]:(o={sessionID:null,sessions:null,requestsBySession:null,dispatchEdges:null,result:r},i[0]=r,i[1]=o);let s=(0,K.useRef)(o),c;return i[2]!==a||i[3]!==r||i[4]!==n||i[5]!==e?(c=t=>{let i=n(t),o=s.current;if(o.sessionID===e&&o.sessions===t.session&&o.requestsBySession===i&&o.dispatchEdges===a)return o.result;let c=Xm(t.session,i,e,r,a),l=Ym(o.result,c)?o.result:c;return s.current={sessionID:e,sessions:t.session,requestsBySession:i,dispatchEdges:a,result:l},l},i[2]=a,i[3]=r,i[4]=n,i[5]=e,i[6]=c):c=i[6],zI(c,t)}function uL(e,t){return lL(e,t,iL,$L)}function dL(e,t){return lL(e,t,aL,eR)}function fL(e,t){let n=(0,H.c)(9),r=pL(e,t),i=pL(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=Y(a),s=r??i??o,c=s?.parentID??null,l=pL(c,t),u=pL(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=IP(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function pL(e,t){let n=(0,H.c)(7),{childStores:r}=BP(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>{if(typeof window<`u`){let n=window;n.__snapCalls=(n.__snapCalls??0)+1;let i=t?r.getChild(t)?.getState().session.find(t=>t.id===e):rN(VP(r),e);return n.__prevSnap!==void 0&&!Object.is(n.__prevSnap,i)&&(n.__snapChanges=(n.__snapChanges??0)+1,performance.now()-(n.__lastNotifyAt??0)>100&&(n.__selfDriven=(n.__selfDriven??0)+1)),n.__prevSnap=i,i}return t?r.getChild(t)?.getState().session.find(t=>t.id===e):rN(VP(r),e)},n[0]=r,n[1]=t,n[2]=e,n[3]=i):i=n[3];let a=i,o;n[4]!==r||n[5]!==t?(o=e=>{if(typeof window<`u`){let n=window;n.__notifySubs=(n.__notifySubs??0)+1;let i=()=>{n.__notifyCalls=(n.__notifyCalls??0)+1,e()};return t?r.ensureChild(t).subscribe(i):r.subscribeAllSelected(hL,i)}return t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(mL,e)},n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return K.useSyncExternalStore(s,a,a)}function mL(e){return e.session}function hL(e){return e.session}function gL(e){let t=FP(e,pL(e),Y((0,K.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,K.useRef)(null),[,r]=K.useState(0);if((0,K.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function _L(e,t){return pL(e,t)?.directory??void 0}function vL(){return BP().directory}function yL(){return BP().childStores}var bL=[],xL=40,SL=4,CL=30,wL=4,TL=30,EL=new WeakMap,DL=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,OL=e=>{let t=EL.get(e);return t||(t=new Map,EL.set(e,t)),t},kL=(e,t,n,r)=>{let i=EL.get(e);if(!i)return;let a=DL(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},AL=(e,t)=>{if(!t.sessionID)return;let n=OL(e),r=DL(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=Se()?CL:$h()?TL:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=Se()?SL:$h()?wL:xL;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function jL(e,t){let n=EL.get(e);if(n)for(let e of t){if(!e)continue;let t=`${e}\u0000`;for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}}var ML=`The following tool was executed by the user`,NL=(e,t,n)=>{if(!n||n.length!==1)return!1;let r=n[0];if(r?.type!==`tool`||typeof r.tool!=`string`||r.tool.toLowerCase()!==`bash`)return!1;let i=t.parentID;if(typeof i!=`string`||i.length===0)return!1;let a=e[i];return a?a.some(e=>{if(e?.type!==`text`||e.synthetic!==!0)return!1;let t=e.text;return typeof t==`string`&&t.trim().startsWith(ML)}):!1};function PL(e,t){if(e.length!==t.length)return!0;for(let n=0;n<t.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.type!==i.type||i.type===`tool`&&r!==i)return!0}return!1}var FL=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??QL;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!NL(t.parts,n.info,r)&&!PL(n.parts,r))continue}if(qc(n.parts,r,n.info)!==n.parts)return!1}return!0},IL=(e,t,n,r)=>{let i=kL(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&FL(i,t))return i};function LL(e,t){let n=e.messages,r=e.revertMessageID;if(t&&t.sourceMessages===n&&t.revertMessageID===r)return{sourceMessages:n,visibleMessages:t.visibleMessages,revertMessageID:r};let i=n;return{sourceMessages:n,visibleMessages:r?Ys(i,r):n.length===0?ZL:i.slice(),revertMessageID:r}}function RL(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=LL(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??QL,s=n&&a&&(!r||i.id===r)&&!NL(e.parts,i,o)&&!PL(a.parts,o)?a.parts:qc(a?.parts,o,i),l=a&&a.info===i&&a.parts===s?a:{info:i,parts:s};return c.set(i.id,l),l});return t&&t?.visibleMessages===o&&t.suspendPartUpdates===n&&t.suspendedPartUpdatesMessageID===r&&t.list.length===l.length&&t.list.every((e,t)=>e===l[t])&&t?t:{sessionID:i,sourceMessages:a,visibleMessages:o,revertMessageID:s,suspendPartUpdates:n,suspendedPartUpdatesMessageID:r,list:l,byId:c}}function zL(e,t){let n=BP(),r=t??n.directory;return af(e,r,RI(r))}function BL(e,t){let n=BP(),r=t??n.directory;return mf(e,r,RI(r))}function VL(e,t){let n=BP(),r=t??n.directory;return ff(e,r,RI(r))}function HL(e,t){let n=(0,H.c)(8),r=BP(),i=t??r.directory,a=RI(i),o=(0,K.useRef)(DP),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=DP,DP.history;let t=(U()??W(i,a)).getTranscript(G(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=jP({sessionID:e,messages:Kd(t),parts:t.partsByMessageID,revertMessageID:n},o.current);return o.current=r,r.history},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return UL;let n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),r=gd(()=>{n(),n=(U()??W(i,a)).subscribe(G(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return K.useSyncExternalStore(u,c,c)}function UL(){}var WL=(e,t,n)=>({sessionID:e,directory:t,store:n,bindingRevision:_d(),transportIdentity:u(),generation:f()}),GL=(e,t)=>e.sessionID===t.sessionID&&e.directory===t.directory&&e.store===t.store&&e.bindingRevision===t.bindingRevision&&e.transportIdentity===t.transportIdentity&&e.generation===t.generation;function KL(e,t,n){let r=(0,H.c)(23),i=BP(),a=t??i.directory,o=RI(a),c=n?.enabled??!0,l=!!n?.suspendPartUpdates,u=n?.suspendPartUpdatesForMessageId??void 0,d,f;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=[],f=new Map,r[0]=d,r[1]=f):(d=r[0],f=r[1]);let p;r[2]!==e||r[3]!==l||r[4]!==u?(p={sessionID:e,sourceMessages:ZL,visibleMessages:ZL,revertMessageID:void 0,suspendPartUpdates:l,suspendedPartUpdatesMessageID:u,list:d,byId:f},r[2]=e,r[3]=l,r[4]=u,r[5]=p):p=r[5];let m=(0,K.useRef)(p),h=(0,K.useRef)(null);n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let g;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(g=()=>{if(!e)return bL;let t=(U()??W(a,o)).getTranscript(G(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Kd(t,m.current.sessionID===e?m.current.sourceMessages:kL(o,e,r,i)?.sourceMessages),c=o.getState().session.find(t=>t.id===e)?.revert?.messageID,l={sessionID:e,messages:s,parts:t.partsByMessageID,revertMessageID:c},u=IL(o,l,r,i);if(u)return m.current=u,u.list;let d=RL(l,m.current.sessionID===e?m.current:kL(o,e,r,i),r,i);return m.current=d,AL(o,d),d.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=g):g=r[11];let _=g,v;r[12]!==c||r[13]!==_||r[14]!==e||r[15]!==o||r[16]!==a?(v=()=>{let t=WL(e,a,o);if(!e)return h.current={scope:t,list:bL},bL;if(!c){let e=h.current;if(e&&GL(e.scope,t))return e.list}let n=_();return h.current={scope:t,list:n},n},r[12]=c,r[13]=_,r[14]=e,r[15]=o,r[16]=a,r[17]=v):v=r[17];let y=v,b;r[18]!==c||r[19]!==e||r[20]!==o||r[21]!==a?(b=t=>{if(!e)return qL;if(!c){let e=gd(()=>{t()}),n=s(()=>{t()});return()=>{e(),n()}}Ud(a,e);let n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),r=gd(()=>{n(),n=(U()??W(a,o)).subscribe(G(a,e),()=>{t()}),Wd(a,e),Ud(a,e),t()}),i=s(()=>{t()}),l=o.subscribe(()=>{t()});return()=>{r(),i(),n(),l()}},r[18]=c,r[19]=e,r[20]=o,r[21]=a,r[22]=b):b=r[22];let x=b;return K.useSyncExternalStore(x,y,y)}function qL(){}var JL=new Set;function YL(e,t){let n=vL(),r=t??n,i=RI(r),a=K.useRef(0);K.useEffect(()=>{if(!e)return;let t=U()??W(r,i),n=G(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(qd(o,{resolved:s===!0||void 0}).renderable){hS({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(JL.has(c))return;let l=++a.current,u=()=>l!==a.current;JL.add(c),(async()=>{try{if(U())try{if(await wd(r,e),u())return;hS({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await SF(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await SF(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{JL.delete(c)}})()},[e,i,r])}function XL(e,t){let n=BP(),r=t??n.directory;return Jd(e,r,RI(r))}var ZL=[],QL=[],$L=[],eR=[],tR=[],nR=()=>({requestID:_e(),queueItemID:_e(),operationID:_e(),messageID:he(`msg`)}),rR=e=>({kind:`pending-admission`,requestID:e.requestID,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,createdAt:e.createdAt,phase:`admitting`,attachmentCount:e.attachmentCount,...e.composerDocument?{composerDocument:e.composerDocument}:{},...e.composerMentions?{composerMentions:e.composerMentions}:{}}),iR,aR=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return tR;if(iR&&iR.pending===n.pending&&iR.draftID===t)return iR.items;let r=n.pending.map(rR);return iR={pending:n.pending,draftID:t,items:r},r},oR=e=>t=>t.flights[e]??null,sR=e=>t=>!!e&&t.establishing?.draftID===e,cR=e=>t=>aR(t,e),lR=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),uR=De()((e,t)=>({flights:{},establishing:null,beginFlight:(n,r=`send`)=>{let i=n.trim();return!i||t().flights[i]?!1:(e(e=>({flights:{...e.flights,[i]:r}})),!0)},endFlight:n=>{let r=n.trim();!r||!t().flights[r]||e(e=>{if(!e.flights[r])return e;let t={...e.flights};return delete t[r],{flights:t}})},isInFlight:e=>!!t().flights[e.trim()],beginEstablishing:({draftID:n,primaryMessageID:r})=>{let i=n.trim(),a=r.trim();if(!i||!a)return!1;let o=t().establishing;return o?o.draftID===i&&o.primaryMessageID===a:(e({establishing:{draftID:i,primaryMessageID:a,pending:[]}}),!0)},isEstablishing:e=>e?t().establishing?.draftID===e:!1,getEstablishing:()=>t().establishing,enqueueEstablishingFollowUp:n=>{let r=t().establishing;if(!r||r.draftID!==n.draftID||!n.sendConfig.providerID||!n.sendConfig.modelID)return null;let i=n.content;if(!i.trim()&&(n.attachments?.length??0)===0)return null;let a=n.identity??nR(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||he(`msg`),content:i,createdAt:n.createdAt??Date.now(),phase:`admitting`,attachmentCount:o.length,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},draftID:n.draftID,sendConfig:{providerID:n.sendConfig.providerID,modelID:n.sendConfig.modelID,...n.sendConfig.agent?{agent:n.sendConfig.agent}:{},...n.sendConfig.variant?{variant:n.sendConfig.variant}:{}},attachments:o};return e({establishing:{...r,pending:[...r.pending,s]}}),s},removeEstablishingFollowUp:n=>{let r=t().establishing;if(!r)return null;let i=r.pending.findIndex(e=>e.requestID===n);if(i<0)return null;let a=r.pending[i];return e({establishing:{...r,pending:[...r.pending.slice(0,i),...r.pending.slice(i+1)]}}),a??null},takeEstablishingPending:n=>{let r=t().establishing;if(!r||r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},clearEstablishing:n=>{let r=t().establishing;if(!r||n!=null&&n!==``&&r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},shouldBlockNewSessionDraftOpen:()=>t().establishing!==null})),dR=De((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},fR=`/api/openchamber/message-queue`,pR=new Set([`validation_error`,`revision_conflict`,`row_version_conflict`,`idempotency_conflict`,`generation_conflict`,`authority_conflict`,`not_found`,`scope_locked`,`scope_limit`,`reserved`,`internal_error`,`unavailable`]),mR=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),hR=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),gR=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,_R=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),vR=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(gR(t)&&typeof t.code==`string`&&pR.has(t.code))return t.code}catch{}return`unavailable`},yR=async(e,t)=>{let n;try{n=await _(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await vR(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},bR=()=>{throw new X(200,`unavailable`)},xR=e=>gR(e)&&Object.getPrototypeOf(e)===Object.prototype,SR=e=>{if(!(!xR(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!xR(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},CR=e=>Array.isArray(e)&&e.every(xR)?e.map(e=>({...e})):void 0,wR=e=>{if(!(!gR(e)||typeof e.providerID!=`string`||typeof e.modelID!=`string`)&&!(e.agent!==void 0&&typeof e.agent!=`string`||e.variant!==void 0&&typeof e.variant!=`string`))return{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}},TR=e=>gR(e)?e.kind===`primary`&&Object.keys(e).length===1?{kind:`primary`}:e.kind===`assistant`&&Object.keys(e).every(e=>e===`kind`||e===`assistantID`)&&typeof e.assistantID==`string`&&e.assistantID?{kind:`assistant`,assistantID:e.assistantID}:null:null,ER=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!xR(r))return null;if(r.type===`text`&&Object.keys(r).every(e=>e===`type`||e===`text`||e===`synthetic`)&&typeof r.text==`string`&&(r.synthetic===void 0||typeof r.synthetic==`boolean`)){t.push({type:`text`,text:r.text,...r.synthetic===void 0?{}:{synthetic:r.synthetic}});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.attachmentID==`string`&&r.attachmentID){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,attachmentID:r.attachmentID});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.url==`string`){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,url:r.url});continue}return null}return t},DR=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!xR(r)||Object.keys(r).some(e=>![`partID`,`text`,`synthetic`,`attachmentIDs`,`deliveryPartIndexes`].includes(e))||typeof r.partID!=`string`||!r.partID||t.has(r.partID)||typeof r.text!=`string`||r.synthetic!==void 0&&typeof r.synthetic!=`boolean`||!Array.isArray(r.attachmentIDs)||r.attachmentIDs.some(e=>typeof e!=`string`||!e)||new Set(r.attachmentIDs).size!==r.attachmentIDs.length||!Array.isArray(r.deliveryPartIndexes)||r.deliveryPartIndexes.length!==r.attachmentIDs.length+1||r.deliveryPartIndexes.some(e=>!Number.isSafeInteger(e)||e<0)||new Set(r.deliveryPartIndexes).size!==r.deliveryPartIndexes.length)return null;t.add(r.partID),n.push({partID:r.partID,text:r.text,...r.synthetic===!0?{synthetic:!0}:{},attachmentIDs:[...r.attachmentIDs],deliveryPartIndexes:[...r.deliveryPartIndexes]})}return n},OR=e=>{if(!xR(e)||Object.keys(e).some(e=>![`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`locator`].includes(e))||typeof e.attachmentID!=`string`||!e.attachmentID||typeof e.filename!=`string`||!e.filename||typeof e.mimeType!=`string`||!e.mimeType||!Z(e.size)||![`local`,`vscode`,`server`].includes(String(e.source))||!xR(e.locator))return null;let t=e.occurrenceRefID;if(!(Array.isArray(t)&&(t.length===2&&t[0]===`root`&&t[1]===e.attachmentID||t.length===3&&t[0]===`part`&&typeof t[1]==`string`&&t[1]&&t[2]===e.attachmentID)))return null;let n=e.locator;return n.kind===`upload`&&Object.keys(n).every(e=>[`kind`,`uploadID`,`storageKey`].includes(e))&&typeof n.uploadID==`string`&&n.uploadID&&(n.storageKey===void 0||typeof n.storageKey==`string`)&&n.storageKey!==``?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`upload`,uploadID:n.uploadID}}:n.kind===`server-path`&&Object.keys(n).every(e=>[`kind`,`path`].includes(e))&&typeof n.path==`string`&&n.path?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`server-path`,path:n.path}}:null},kR=e=>Array.isArray(e)&&e.map(OR).every(e=>e!==null)?e.map(OR):null,AR=e=>{if(!gR(e)||typeof e.queueItemID!=`string`||typeof e.operationID!=`string`||typeof e.messageID!=`string`||typeof e.content!=`string`||typeof e.status!=`string`||!Z(e.attemptCount)||!Z(e.position)||!Z(e.rowVersion)||!Z(e.createdAt)||e.manualDispatchRequested!==void 0&&typeof e.manualDispatchRequested!=`boolean`)return null;let t=e.composerDocument===void 0?void 0:SR(e.composerDocument),n=e.composerMentions===void 0?void 0:CR(e.composerMentions),r=e.sendConfig===void 0?void 0:wR(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:TR(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:ER(e.deliveryParts),o=e.syntheticParts===void 0?void 0:DR(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:CR(e.attachmentIssues);if(e.composerDocument!==void 0&&!t||e.composerMentions!==void 0&&!n||e.sendConfig!==void 0&&!r||!i||e.deliveryParts!==void 0&&!a||i.kind===`assistant`&&!a||e.syntheticParts!==void 0&&!o||e.attachmentIssues!==void 0&&!s)return null;let c=e.attachments===void 0?void 0:kR(e.attachments);if(e.attachments!==void 0&&!c)return null;if(o&&a){let e=new Set,t=new Set;for(let n of o){let[r,...i]=n.deliveryPartIndexes;if(r===void 0||e.has(r)||a[r]?.type!==`text`||a[r].text!==n.text)return null;e.add(r);for(let t of i){if(e.has(t)||a[t]?.type!==`file`||!(`attachmentID`in a[t])||a[t].attachmentID!==n.attachmentIDs[i.indexOf(t)])return null;e.add(t)}for(let e of n.attachmentIDs){let r=c?.find(t=>t.attachmentID===e);if(!r||t.has(e)||r.occurrenceRefID[0]!==`part`||r.occurrenceRefID[1]!==n.partID||r.occurrenceRefID[2]!==e)return null;t.add(e)}}if(c?.some(e=>e.occurrenceRefID[0]===`part`&&!t.has(e.attachmentID)))return null}return{queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,status:e.status,attemptCount:e.attemptCount,position:e.position,rowVersion:e.rowVersion,createdAt:e.createdAt,deliveryTarget:i,...e.manualDispatchRequested===!0?{manualDispatchRequested:!0}:{},...t?{composerDocument:t}:{},...n?{composerMentions:n}:{},...r?{sendConfig:r}:{},...a?{deliveryParts:a}:{},...o?{syntheticParts:o}:{},...c?{attachments:c}:{},...s?{attachmentIssues:s}:{}}},jR=e=>{if(!gR(e)||typeof e.scopeID!=`string`||!Z(e.revision)||typeof e.directory!=`string`||typeof e.sessionID!=`string`||typeof e.worktreeState!=`string`||!Z(e.itemCount)||!Array.isArray(e.items)||e.items.length>8||e.nextOffset!==void 0&&(!Z(e.nextOffset)||e.nextOffset<=0))return null;let t=e.items.map(AR);return t.every(e=>e!==null)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount,items:t,...e.nextOffset===void 0?{}:{nextOffset:e.nextOffset}}:null},MR=e=>gR(e)&&Object.keys(e).every(e=>hR.has(e))&&typeof e.scopeID==`string`&&Z(e.revision)&&typeof e.directory==`string`&&typeof e.sessionID==`string`&&typeof e.worktreeState==`string`&&Z(e.itemCount)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}:null,NR=e=>gR(e)&&typeof e.projectDirectory==`string`&&_R(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,PR=e=>{if(!gR(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return bR();let t=e.scopes.map(MR),n=e.worktreeOrders.map(NR);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?bR():{revision:e.revision,scopes:t,worktreeOrders:n}},FR=e=>!gR(e)||!Z(e.revision)||Object.keys(e).some(e=>!mR.has(e))||e.scopeID!==void 0&&typeof e.scopeID!=`string`||e.queueItemID!==void 0&&typeof e.queueItemID!=`string`||e.rowVersion!==void 0&&!Z(e.rowVersion)||e.removedQueueItemID!==void 0&&typeof e.removedQueueItemID!=`string`||e.projectDirectory!==void 0&&typeof e.projectDirectory!=`string`||e.token!==void 0&&typeof e.token!=`string`||e.state!==void 0&&typeof e.state!=`string`||e.scopeCount!==void 0&&!Z(e.scopeCount)||e.statusCounts!==void 0&&(!gR(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?bR():{revision:e.revision,...typeof e.scopeID==`string`?{scopeID:e.scopeID}:{},...typeof e.queueItemID==`string`?{queueItemID:e.queueItemID}:{},...Z(e.rowVersion)?{rowVersion:e.rowVersion}:{},...typeof e.removedQueueItemID==`string`?{removedQueueItemID:e.removedQueueItemID}:{},...typeof e.projectDirectory==`string`?{projectDirectory:e.projectDirectory}:{},...typeof e.token==`string`?{token:e.token}:{},...typeof e.state==`string`?{state:e.state}:{},...Z(e.scopeCount)?{scopeCount:e.scopeCount}:{},...gR(e.statusCounts)?{statusCounts:e.statusCounts}:{}},IR=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),LR=(e,t)=>{let{signal:n,...r}=t;return IR(e,r,n)},RR=async e=>PR(await yR(fR,{signal:e})),zR=new Map,BR=(e,t)=>`${c().api(fR)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,VR=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=BR(e,t),r=zR.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>jR(await yR(`${fR}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??bR())().finally(()=>{zR.get(n)===i&&zR.delete(n)});return zR.set(n,i),i},HR=15e3,UR=(e,t={})=>new Promise(n=>{let r=t.signal;if(r?.aborted){n(`aborted`);return}let i=typeof t.safetyTimeoutMs==`number`&&t.safetyTimeoutMs>0?t.safetyTimeoutMs:HR,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=An(t=>{if(t.type===`event-stream-ready`){o(`ready`);return}t.type===`message-queue-changed`&&t.revision>e&&o(`tip`)}),l=setTimeout(()=>o(`timeout`),i),u=gn(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),WR=async e=>{let t=await yR(`${fR}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!gR(t)||Object.keys(t).some(e=>!n.has(e))||typeof t.capability!=`boolean`||t.authority!==void 0&&t.authority!==`shadow`&&t.authority!==`active`&&t.authority!==`paused`||t.generation!==void 0&&!Z(t.generation)||t.activationEpoch!==void 0&&!Z(t.activationEpoch)||t.activatedAt!==void 0&&!Z(t.activatedAt)||t.protocol!==void 0&&t.protocol!==4||t.manifestHash!==void 0&&typeof t.manifestHash!=`string`||t.worker!==void 0&&(!gR(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?bR():{capability:t.capability,...typeof t.authority==`string`?{authority:t.authority}:{},...Z(t.generation)?{generation:t.generation}:{},...Z(t.activationEpoch)?{activationEpoch:t.activationEpoch}:{},...Z(t.activatedAt)?{activatedAt:t.activatedAt}:{},...typeof t.manifestHash==`string`?{manifestHash:t.manifestHash}:{},...t.protocol===4?{protocol:4}:{},...gR(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},GR=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),KR=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!gR(e)||Object.keys(e).some(e=>!t.includes(e))||!Z(e.revision)||typeof e.importID!=`string`||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(e.state))||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`||e.manifestHash!==void 0&&typeof e.manifestHash!=`string`)return bR();let n=e.commit===void 0?void 0:YR(e.commit);return e.commit!==void 0&&!n?bR():{revision:e.revision,importID:e.importID,state:e.state,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{},...typeof e.manifestHash==`string`?{manifestHash:e.manifestHash}:{},...n?{commit:n}:{}}},qR=e=>!gR(e)||!GR(e,e.duplicate===void 0?[`revision`,`importID`,`staged`]:[`revision`,`importID`,`staged`,`duplicate`])||!Z(e.revision)||typeof e.importID!=`string`||e.staged!==!0||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`?bR():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},JR=e=>!gR(e)||!GR(e,[`revision`,`importID`,`manifestHash`,`state`,`itemCount`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||e.state!==`sealed`||!Z(e.itemCount)?bR():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},YR=e=>!gR(e)||!GR(e,[`revision`,`importID`,`manifestHash`,`generation`,`activationEpoch`,`added`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||!Z(e.generation)||!Z(e.activationEpoch)||!Z(e.added)?bR():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},XR=e=>YR(e),ZR=e=>YR(e),QR=(e,t)=>!gR(e)||!GR(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?bR():{authority:t,generation:e.generation,revision:e.revision},$R=async e=>KR(await yR(`${fR}/imports`,LR(`POST`,e))),ez=async(e,t)=>{let n=await yR(`${fR}/imports/${encodeURIComponent(e)}`,{signal:t});if(!gR(n)||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(n.state))||!Z(n.itemCount)||!Array.isArray(n.staged)||n.manifestHash!==void 0&&typeof n.manifestHash!=`string`)return bR();let r=n.staged.map(e=>gR(e)&&Z(e.scopeOrdinal)&&Z(e.itemOrdinal)&&typeof e.payloadHash==`string`?{scopeOrdinal:e.scopeOrdinal,itemOrdinal:e.itemOrdinal,payloadHash:e.payloadHash}:null),i=n.commit===void 0?void 0:YR(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?bR():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},tz=async(e,t)=>qR(await yR(`${fR}/imports/${encodeURIComponent(e)}/items`,LR(`POST`,t))),nz=async(e,t)=>JR(await yR(`${fR}/imports/${encodeURIComponent(e)}/seal`,LR(`POST`,t))),rz=async(e,t)=>XR(await yR(`${fR}/imports/${encodeURIComponent(e)}/activate`,LR(`POST`,t))),iz=async(e,t)=>ZR(await yR(`${fR}/imports/${encodeURIComponent(e)}/late-commit`,LR(`POST`,t))),az=async e=>QR(await yR(`${fR}/authority/pause`,LR(`POST`,e)),`paused`),oz=async e=>QR(await yR(`${fR}/authority/resume`,LR(`POST`,e)),`active`),sz=async(e={})=>{let t=await yR(`${fR}/attachments/uploads`,LR(`POST`,e));return!gR(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?bR():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},cz=async(e,t,n,r)=>{let i;try{i=await _(`${fR}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await vR(i))},lz=e=>!gR(e)||!Z(e.revision)||typeof e.scopeID!=`string`||typeof e.queueItemID!=`string`||!Z(e.rowVersion)||typeof e.token!=`string`||!Z(e.expiresAt)||!Z(e.generation)?bR():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},uz=e=>!gR(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?bR():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},dz=async(e,t)=>lz(await yR(`${fR}/items/${encodeURIComponent(e)}/reserve`,LR(`POST`,t))),fz=async(e,t)=>{await yR(`${fR}/items/${encodeURIComponent(e)}/release`,LR(`POST`,t))},pz=async(e,t)=>uz(await yR(`${fR}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,LR(`POST`,t))),mz=async(e,t)=>FR(await yR(`${fR}/items/${encodeURIComponent(e)}/reserved-remove`,LR(`DELETE`,t))),hz=async(e,t,n)=>{let r;try{r=await _(`${fR}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await vR(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},gz=async e=>FR(await yR(`${fR}/items`,LR(`POST`,e))),_z=async(e,t)=>FR(await yR(`${fR}/items/${encodeURIComponent(e)}`,LR(`PATCH`,t))),vz=async(e,t)=>FR(await yR(`${fR}/items/${encodeURIComponent(e)}/send`,LR(`POST`,t))),yz=async(e,t)=>FR(await yR(`${fR}/items/${encodeURIComponent(e)}`,LR(`DELETE`,t))),bz=async(e,t)=>FR(await yR(`${fR}/scopes/${encodeURIComponent(e)}/order`,LR(`PUT`,t))),xz=async(e,t)=>NR(await yR(`${fR}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??bR(),Sz=async e=>FR(await yR(`${fR}/worktrees/order`,LR(`PUT`,e))),Cz=(e=u())=>P.messageQueue.snapshot(e),wz=(e=u())=>P.messageQueue.status(e),Tz=(e,t,n=u())=>P.messageQueue.scope(e,t,n),Ez=(e=u())=>({queryKey:wz(e),queryFn:({signal:e})=>WR(e),retry:!1,staleTime:3e4}),Dz=(e=u())=>({queryKey:Cz(e),queryFn:({signal:e})=>RR(e),staleTime:5e3}),Oz=(e=R,t=u())=>e.fetchQuery(Ez(t)),kz=(e=R,t=u())=>e.fetchQuery(Dz(t)),Az=async(e=R,t=u())=>e.fetchQuery({...Ez(t),staleTime:0}),jz=async(e=R,t=u())=>e.fetchQuery({...Dz(t),staleTime:0}),Mz=(e,t,n=u())=>{e.setQueryData(Tz(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},Nz=(e,t,n=u())=>{e.setQueryData(wz(n),t)},Pz=(e,t,n=u())=>{e.setQueryData(Cz(n),t)},Fz=(e,t,n,r=u())=>{let i=e.getQueryData(Tz(t,n,r));if(!i?.pages.length)return;let a=i.pages[0];if(!a)return;let o=i.pages.flatMap(e=>e.items);return o.length===a.itemCount&&i.pages.every(e=>e.revision===a.revision)?{...a,items:o,nextOffset:void 0}:void 0},Iz=(e,t=u())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),Lz=(e,t,n=u())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),Rz=(e,t,n=u())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),zz=`openchamber_message_queue_ledger_v4`,Bz=`message-queue-store`,Vz={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},Hz=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,Uz=(e,t)=>Object.keys(e).every(e=>t.includes(e)),Wz=(e,t=Vz.string)=>typeof e==`string`&&e.length>0&&e.length<=t,Gz=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,Kz=e=>JSON.parse(JSON.stringify(e)),qz=(e,t,n,r)=>{let i=Hz(t)?t:{};return{...e?{scopeKey:e}:{},...Wz(i.queueItemID)?{queueItemID:i.queueItemID}:{},...Wz(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},Jz=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,Yz=e=>{if(typeof e!=`string`)return;let t=e.startsWith(`bound:`)?(()=>{try{return JSON.parse(e.slice(6))}catch{return}})():e.startsWith(`unbound-legacy:`)?(()=>{try{return JSON.parse(e.slice(15))}catch{return}})():void 0,n=Zz(e.startsWith(`bound:`)&&Array.isArray(t)&&t.length===3?{state:`bound`,transportIdentity:t[0],directory:t[1],sessionID:t[2]}:e.startsWith(`unbound-legacy:`)&&Array.isArray(t)&&t.length===1?{state:`unbound-legacy`,sessionID:t[0]}:void 0);return n&&Jz(n)===e?n:void 0},Xz=()=>({version:4,queues:{},migration:{v3State:`pending`}}),Zz=e=>!Hz(e)||!Wz(e.state)?void 0:e.state===`bound`&&Uz(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&Wz(e.transportIdentity)&&Wz(e.directory)&&Wz(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&Uz(e,[`state`,`sessionID`])&&Wz(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,Qz=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&(n.length===2&&n[0]===`root`&&n[1]===t||n.length===3&&typeof n[1]==`string`&&n[0]===`part`&&n[2]===t)}catch{return!1}},$z=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],eB=e=>{if(!Wz(e.attachmentID)||!Wz(e.occurrenceRefID)||!Qz(e.occurrenceRefID,e.attachmentID)||!Wz(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>Vz.string||!Gz(e.size))return;let t={attachmentID:e.attachmentID,occurrenceRefID:e.occurrenceRefID,filename:e.filename,mimeType:e.mimeType,size:e.size};if(e.source===`local`&&e.serverPath===void 0&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`local`};if(e.source===`server`&&Wz(e.serverPath)&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`server`,serverPath:e.serverPath};if(e.source===`vscode`&&e.serverPath===void 0&&Wz(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},tB=e=>{if(!Hz(e)||!Uz(e,[...$z,`version`,`locator`])||e.version!==1)return;let t=eB(e);if(!t||!Hz(e.locator))return;let n=e.locator.kind===`blob`&&Uz(e.locator,[`kind`,`blobID`])&&Wz(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&Uz(e.locator,[`kind`,`url`])&&Te(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},nB=e=>{if(!Hz(e)||!Uz(e,[...$z,`reason`]))return;let t=eB(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},rB=(e,t)=>{if(!Hz(e)||!Uz(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=C(e.text,e.references),r=n&&ue(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},iB=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=S(t.text,e);return!n||n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},aB=(e,t)=>{if(!Hz(e)||!Uz(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!Wz(e.queueItemID)||!Wz(e.operationID)||!Wz(e.messageID)||typeof e.content!=`string`||e.content.length>Vz.content||!Gz(e.createdAt)||!Gz(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>Vz.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>Vz.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=Zz(e.owner),r=e.attachments.map(tB),i=e.attachmentIssues.map(nB),a=e.composerDocument===void 0?void 0:rB(e.composerDocument,e.content),o=iB(e.composerMentions,a);if(!n||e.composerDocument!==void 0&&!a||e.composerMentions!==void 0&&!o||!r.every(Boolean)||!i.every(Boolean))return;let s=new Set(r.map(e=>e.occurrenceRefID)),c=new Set(a?ie(a).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]);if(s.size!==r.length||new Set(i.map(e=>e.occurrenceRefID)).size!==i.length||i.some(e=>s.has(e.occurrenceRefID))||[...c].some(e=>!s.has(e))||e.sendConfig!==void 0&&(!Hz(e.sendConfig)||!Uz(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!Wz(e.sendConfig.providerID)||!Wz(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!Wz(e))))return;let l=[e.nextAttemptAt,e.reconciliationStartedAt,e.reconciliationDeadlineAt,e.reconciliationChecks,e.reconciliationNextCheckAt],u=e.reconciliationStartedAt!==void 0&&e.reconciliationDeadlineAt!==void 0&&e.reconciliationChecks!==void 0&&e.reconciliationDeadlineAt>=e.reconciliationStartedAt,d=e.reconciliationStartedAt===void 0&&e.reconciliationDeadlineAt===void 0&&e.reconciliationChecks===void 0&&e.reconciliationNextCheckAt===void 0,f=e.nextAttemptAt===void 0,p=e.failureKind===void 0,m=e.status===`queued`||e.status===`sending`?f&&d&&p&&i.length===0:e.status===`retrying`?e.nextAttemptAt!==void 0&&e.failureKind===`pre-dispatch`&&d&&i.length===0:e.status===`reconciling`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0:e.status===`unresolved`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0||f&&d&&p&&i.length>0:f&&d&&e.failureKind===`definitive`&&i.length===0;if(l.some(e=>e!==void 0&&!Gz(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!Gz(g))return;let _=h?e.createdAt:e.reconciliationStartedAt,v=h?0:e.reconciliationChecks;return{version:1,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,owner:n,content:e.content,...a?{composerDocument:a}:{},...o?.length?{composerMentions:o}:{},attachments:r,attachmentIssues:i,createdAt:e.createdAt,...e.sendConfig?{sendConfig:Kz(e.sendConfig)}:{},status:h?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{nextAttemptAt:e.nextAttemptAt},..._===void 0?{}:{reconciliationStartedAt:_,reconciliationDeadlineAt:g,reconciliationChecks:v,...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt}},...h?{failureKind:`ambiguous-dispatch`}:e.failureKind?{failureKind:e.failureKind}:{}}},oB=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:Xz(),issues:[qz(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!Hz(e)||!Uz(e,[`version`,`queues`,`migration`])||e.version!==4||!Hz(e.queues)||!Hz(e.migration)||!Uz(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>Vz.scopes)return n(`snapshot`);let r=0,i={},a=[],o=new Set,s=new Map,c=new Map,l=new Map,u=(e,t,n,r)=>{a.push(qz(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!Yz(a)){u(a,d,`$.queues.${JSON.stringify(a)}`,`scope`);continue}if(!Array.isArray(d)){u(a,d,`$.queues.${JSON.stringify(a)}`,`queue`);continue}let e=[];for(let i=0;i<d.length;i++){if(++r>Vz.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=aB(f,t.normalizeSending===!0);if(!m||Jz(m.owner)!==a){u(a,f,p,`item`);continue}let h=[[s,m.queueItemID,`duplicate-queue-item-id`],[c,m.operationID,`duplicate-operation-id`],[l,m.messageID,`duplicate-message-id`]].find(([e,t])=>e.has(t));if(h){let[e,,t]=h;u(a,f,p,t),o.add(e.get(h[1]));continue}s.set(m.queueItemID,a),c.set(m.operationID,a),l.set(m.messageID,a),e.push(m)}e.length&&(i[a]=e)}return{status:`ok`,snapshot:Kz({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},sB=e=>{let t=oB(e);if(t.status===`corrupt`||t.issues.length)return{ok:!1,error:{code:`corrupt`}};try{return{ok:!0,value:JSON.stringify(t.snapshot)}}catch{return{ok:!1,error:{code:`serialization`}}}},cB=()=>({ok:!1,error:{code:`unavailable`}}),lB=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),uB=e=>({read:async t=>{if(!e)return cB();try{return{ok:!0,value:e.getItem(t)}}catch(e){return lB(e)}},write:async(t,n)=>{if(!e)return cB();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return lB(e)}},remove:async t=>{if(!e)return cB();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return lB(e)}}}),dB=()=>{try{return uB(typeof window>`u`?null:window.localStorage)}catch{return uB(null)}},fB=async e=>{let t=await e.read(zz);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=oB(JSON.parse(t.value),{normalizeSending:!0});return{ok:!0,value:{raw:t.value,snapshot:e.status===`ok`?e.snapshot:null,status:e.status===`corrupt`?`corrupt`:e.issues.length?`partial`:`ok`,issues:e.issues,degradedScopeKeys:e.degradedScopeKeys}}}catch{return{ok:!0,value:{raw:t.value,snapshot:null,status:`corrupt`,issues:[qz(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},pB=async e=>{let t=await fB(e);return t.ok?t.value.status===`empty`?{ok:!0,value:null}:t.value.status===`ok`?{ok:!0,value:t.value.snapshot}:{ok:!1,error:{code:`corrupt`}}:t},mB=async(e,t)=>{let n=sB(t);return n.ok?e.write(zz,n.value):n},hB=e=>{let t=!0,n=[],r=!1,i=new Set,a=()=>{if(!r&&n.length===0){for(let e of i)e();i.clear()}},o=()=>{if(r)return;let t=n.shift();if(!t){a();return}r=!0,mB(e,t.snapshot).then(t.resolve).finally(()=>{r=!1,o()})},s=()=>{let e=n;n=[],e.forEach(e=>e.resolve({ok:!1,error:{code:`cancelled`}})),a()};return{readDetailed:()=>fB(e),read:()=>pB(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=oB(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=Kz(r.snapshot);return new Promise(e=>{n.push({snapshot:i,resolve:e}),o()})},flush:()=>!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)),setEnabled:async e=>{t=e,t||s(),await(!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)))},cancelPending:s}},gB=Vz.string,_B=Vz.dataURL,vB=Vz.bytes,yB=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,bB=(e,t,n=!1)=>typeof e==`string`&&e.length<=gB&&(n||e.length>0)?e:t,xB=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,SB=(e,t)=>Jz(e)===Jz(t),CB=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),wB=async(e,t)=>{let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`${e}-${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`},TB=e=>typeof e==`string`&&e.length>0&&e.length<=gB,EB=e=>Yz(e)??(TB(e)?{state:`unbound-legacy`,sessionID:e}:void 0),DB=e=>{if(yB(e)){if(e.state===`bound`&&TB(e.transportIdentity)&&TB(e.directory)&&TB(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&TB(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},OB=e=>{if(e.length>_B)return;let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return;let n=t[1].split(`;`),r=n.at(-1)?.toLowerCase()===`base64`,i=(r?n.slice(0,-1):n).join(`;`)||`application/octet-stream`,a=t[2];try{let e;if(r){if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))return;let t=atob(a);if(t.length>vB)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>vB)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},kB=e=>yB(e)&&TB(e.providerID)&&TB(e.modelID)&&(e.agent===void 0||TB(e.agent))&&(e.variant===void 0||TB(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,AB=async(e,t)=>{let n=await fB(e);if(!n.ok)return{status:`failed`,error:n.error,issues:[],cleanupErrors:[]};if(n.value.status===`ok`){let e=n.value.snapshot;return e.migration.v3State===`degraded`?{status:`degraded`,snapshot:e,issues:[CB(``,``,`$.migration.v3State`,`existing-degraded`)],cleanupErrors:[]}:{status:`committed`,snapshot:e,issues:[],cleanupErrors:[]}}if(n.value.status===`partial`||n.value.status===`corrupt`)return{status:`recovery-required`,issues:n.value.issues.map(e=>CB(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(Bz);if(!r.ok)return{status:`failed`,error:r.error,issues:[],cleanupErrors:[]};let i=[],a=[],o=[],s=async()=>{for(let e of o.reverse()){let n=await t.releaseIfMatches(e.reference,e.blobID);n.ok||a.push({...e.issue,reason:`rollback-${n.error.code}`})}};if(r.value===null){let t={...Xz(),migration:{v3State:`complete`}},n=await mB(e,t);return n.ok?{status:`committed`,snapshot:t,issues:i,cleanupErrors:a}:{status:`failed`,error:n.error,issues:i,cleanupErrors:a}}let c;try{c=JSON.parse(r.value)}catch{return{status:`failed`,error:{code:`corrupt`},issues:[CB(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=yB(c)&&yB(c.state)?c.state.queuedMessages:yB(c)?c.queuedMessages:void 0;if(!yB(l))return{status:`failed`,error:{code:`corrupt`},issues:[CB(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...Xz(),migration:{v3State:`complete`}},d=new Set,f=new Set,p=new Set,m=0,h=Object.entries(l);for(let e=0;e<h.length;e++){let[n,r]=h[e];if(e>=Vz.scopes){i.push(CB(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=EB(n),l=c?Jz(c):n;if(!c||!Array.isArray(r)){i.push(CB(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=Vz.totalItems){i.push(CB(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=yB(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(CB(l,``,h,`legacy-item`));continue}let _=DB(g.owner);if(g.owner!==void 0&&(!_||!SB(c,_))){i.push(CB(l,TB(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=TB(g.queueItemID)?g.queueItemID:TB(g.id)?g.id:await wB(`queue`,v),b=TB(g.operationID)?g.operationID:await wB(`operation`,`${v}:operation`),x=TB(g.messageID)?g.messageID:await wB(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(CB(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let w=[],T=[],E=new Set,D=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(CB(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<D.length&&e<Vz.attachmentsPerItem;e++){let n=yB(D[e])?D[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(CB(l,y,r,`legacy-attachment`));continue}let u=TB(n.id)?n.id:await wB(`attachment`,`${v}:attachment:${e}`),d=oe(u),f=bB(n.filename,u),p=bB(n.mimeType,``,!0),m=xB(n.size);if(E.has(d)){i.push(CB(l,y,r,`duplicate-attachment-occurrence`));continue}E.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?TB(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&TB(n.vscodePath)&&(n.vscodeSource===`file`||n.vscodeSource===`selection`)&&n.serverPath===void 0,_=g?n.source:`local`,b=_===`server`?n.serverPath:void 0,x=_===`vscode`?n.vscodePath:void 0,S=_===`vscode`?n.vscodeSource:void 0,C={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...S?{vscodeSource:S}:{}},O=e=>{T.push({...C,reason:e}),i.push(CB(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(CB(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),O(`legacy-bytes-missing`);continue}let k=typeof n.dataUrl==`string`?n.dataUrl:``;if(Te(k)){w.push({version:1,...C,locator:{kind:`url`,url:k}});continue}if(k.startsWith(`blob:`)){O(`legacy-blob-url`);continue}if(!k.startsWith(`data:`)){O(`legacy-bytes-missing`);continue}let A=OB(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await wB(`legacy-blob`,`${y}:${u}`),ee={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(ee);if(!te.ok||te.value!==void 0&&te.value!==j||!(await t.putAndRetain(ee,j,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:ee,blobID:j,issue:CB(l,y,r,`blob-retain`)}),w.push({version:1,...C,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}D.length>Vz.attachmentsPerItem&&i.push(CB(l,y,`${h}.attachments`,`legacy-attachment-limit`));let O=xB(g.createdAt),k=typeof g.status==`string`?g.status:`queued`,A=yB(g.failure)?g.failure.kind:g.failureKind,j=A===`pre-dispatch`||A===`ambiguous-dispatch`||A===`definitive`?A:void 0,ee=k===`retrying`||j===`pre-dispatch`,te=k===`sending`||k===`reconciling`||j===`ambiguous-dispatch`,ne=k===`unresolved`&&T.length===0,re=T.length>0,ie=xB(g.reconciliationStartedAt,O),ae=xB(g.reconciliationDeadlineAt,-1),M=ie>2**53-1-3e4?ie:ie+3e4,se=Math.max(ie,ae>=0?ae:M),ce=xB(g.reconciliationChecks),le=xB(g.reconciliationNextCheckAt,ie);te&&ae<0&&ie>2**53-1-3e4&&i.push(CB(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let de=re||ne||c.state===`unbound-legacy`&&te?`unresolved`:ee?`retrying`:te?`reconciling`:k===`failed`||j===`definitive`?`failed`:`queued`,fe=de===`reconciling`||de===`unresolved`&&!re,pe=yB(g.composerDocument)&&typeof g.composerDocument.text==`string`?C(g.composerDocument.text,g.composerDocument.references):void 0,N=pe&&ue(pe,`queue-canonical`);g.composerDocument!==void 0&&(!N||!N.ok||N.text!==g.content)&&i.push(CB(l,y,`${h}.composerDocument`,`degraded-composer-document`));let me=N&&N.ok&&N.text===g.content?pe:void 0,P=me?S(me.text,g.composerMentions):void 0,F=P&&!P.some(e=>me.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!F&&i.push(CB(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let I={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...me?{composerDocument:me}:{},...F&&P.length?{composerMentions:P}:{},attachments:w,attachmentIssues:T,createdAt:O,...kB(g.sendConfig)?{sendConfig:kB(g.sendConfig)}:{},status:de,attemptCount:xB(g.attemptCount),...de===`retrying`?{nextAttemptAt:xB(g.nextAttemptAt,O),failureKind:`pre-dispatch`}:fe?{reconciliationStartedAt:ie,reconciliationDeadlineAt:se,reconciliationChecks:ce,reconciliationNextCheckAt:le,failureKind:`ambiguous-dispatch`}:de===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(I)}}i.length&&(u.migration.v3State=`degraded`);let g=await mB(e,u);return g.ok?{status:u.migration.v3State===`complete`?`committed`:`degraded`,snapshot:u,issues:i,cleanupErrors:a}:(await s(),{status:`failed`,error:g.error,issues:i,cleanupErrors:a})},jB=(e,t)=>JSON.stringify(e)===JSON.stringify(t),MB=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),NB=e=>e.status===`sending`||e.status===`reconciling`,PB=(e,t,n={})=>{let r={hydration:`idle`,snapshot:Xz(),issues:[],enabled:n.enabled??!0},i,a=Promise.resolve(),o=new Set,s=e=>{r=e,o.forEach(e=>e())},c=e=>{let t={};for(let[n,i]of Object.entries(e.queues))t[n]=jB(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=jB(r.snapshot.queues,t)&&jB(r.snapshot.migration,e.migration)?r.snapshot:{...e,queues:t};s({...r,snapshot:n})},l=e=>{let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t},u=e=>{let t=r.snapshot.queues[e.scopeKey]?.find(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID);return t&&Jz(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?MB(`unseeded`):r.hydration===`recovery-required`?MB(`recovery-required`,[...r.issues]):r.hydration===`failed`?MB(`failed`,[...r.issues]):void 0,f=async t=>{let n=r.snapshot,i=await t();return i.status===`committed`&&c(e.getSnapshot()),i.status===`committed`&&i.current===!1?{...i,status:`stale`}:(i.status!==`committed`&&r.snapshot!==n&&s({...r,snapshot:n}),i)},p=()=>t(),m=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,h=new Map,g=e=>`${e.scopeKey}\u0000${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,_=e=>h.has(g(e)),v=()=>MB(`failed`,[{phase:`identity`,code:`reserved`}]),y=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,b=async()=>{for(let[t,n]of h){let[,r,i,a]=t.split(`\0`);try{(await e.releaseSend({queueItemID:r,operationID:i,messageID:a},n.token,n.runtime)).status!==`stale`&&h.delete(t)}catch{h.delete(t)}}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getState:()=>r,captureRuntime:p,hydrate:t=>i??=l(async()=>{await b(),s({...r,hydration:`hydrating`});let n=await e.hydrate(t),i=n.errors.map(e=>({phase:e.phase,code:e.code,scopeKey:e.scopeKey,path:e.path})),a=n.status===`committed`||n.status===`disabled`?`ready`:n.status===`recovery-required`?`recovery-required`:`failed`;return c(e.getSnapshot()),s({...r,hydration:a,issues:i,enabled:r.enabled}),n}).finally(()=>{i=void 0}),flush:()=>l(()=>e.flush()),setEnabled:t=>l(async()=>{t||await b(),await e.setEnabled(t),s({...r,enabled:t})}),admit:(t,n,r=p())=>l(async()=>d()||(m(t,r)?f(()=>e.admit(t,r,n)):MB(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return MB(`stale`);if(NB(i))return MB(`failed`,[{phase:`identity`,code:`locked`}]);if(_(t))return v();let a=await e.acquireSendPayload(t,n);return a.status!==`committed`||!a.token?a.status===`committed`?MB(`failed`,[{phase:`identity`,code:`missing-send-token`}]):a:(h.set(g(t),{token:a.token,runtime:n}),{...a,item:JSON.parse(JSON.stringify(i)),values:a.values?.map(({attachment:e,value:t})=>({attachment:JSON.parse(JSON.stringify(e)),value:t}))})}),releaseEditReservation:(t,n,r=p())=>l(async()=>{let i=g(t),a=h.get(i);if(!a||a.token!==n||!y(a.runtime,r))return MB(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),MB(`failed`,[{phase:`runtime`,code:`reservation-release-threw`}])}}),removeEditReservation:(t,n,i=p())=>l(async()=>{let a=g(t),o=h.get(a),l=d(),f=u(t);if(l)return{...l,durableRemoval:!1};if(!o||o.token!==n||!y(o.runtime,i)||!f||!m(f,i))return{...MB(`stale`),durableRemoval:!1};if(NB(f))return{...MB(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let p=r.snapshot,_=await e.remove(t,i),v=_.status===`committed`;return v&&(h.delete(a),c(e.getSnapshot())),v&&_.current===!1?{..._,status:`stale`,durableRemoval:v}:(!v&&r.snapshot!==p&&s({...r,snapshot:p}),{..._,durableRemoval:v})}),remove:(t,n=p())=>l(async()=>{let i=d(),a=u(t);if(i)return{...i,durableRemoval:!1};if(!a||!m(a,n))return{...MB(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(NB(a))return{...MB(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let o=r.snapshot,l=await e.remove(t,n),f=l.status===`committed`;return f&&c(e.getSnapshot()),f&&l.current===!1?{...l,status:`stale`,durableRemoval:f}:(!f&&r.snapshot!==o&&s({...r,snapshot:o}),{...l,durableRemoval:f})}),reorder:(t,n,i=p())=>l(async()=>{let a=d(),o=r.snapshot.queues[t];return a||(o?o.some(e=>_({scopeKey:t,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}))?v():o.some(e=>NB(e)||!m(e,i))?MB(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):MB(`failed`,[{phase:`identity`,code:`locked`}]))}),bind:(t,n,r=p())=>l(async()=>{let i=d(),a=u(t);return i||(!a||n.transportIdentity!==r.transportIdentity||!m(a,r)?MB(`stale`):_(t)?v():NB(a)?MB(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.bind(t,n,r)))}),bindMany:(t,n,r=p())=>l(async()=>{let i=d(),a=t.map(u);return i||(t.some(_)?v():!a.length||a.some(e=>!e||NB(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?MB(`stale`):f(()=>e.bindMany(t,n,r)))}),transition:(t,n,r,i=p())=>l(async()=>{let a=d(),o=u(t);return a||(!o||!m(o,i)?MB(`stale`):_(t)?MB(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):MB(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?MB(`stale`):_(t)?MB(`failed`,[{phase:`identity`,code:`reserved`}]):f(()=>e.remove(t,n)))}),acquireSendPayload:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?MB(`stale`):_(t)?MB(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},FB=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),IB=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,LB=(e,t,n)=>e.owner.state===`bound`?{transportIdentity:e.owner.transportIdentity,owner:{kind:t,ownerID:t===`queue`?e.queueItemID:e.operationID},attachmentOccurrenceRefID:n}:void 0,RB=e=>JSON.stringify(e),zB=e=>({owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,attachments:e.attachments,attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,sendConfig:e.sendConfig}),BB=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,VB=e=>typeof e==`number`&&Number.isSafeInteger(e),HB=(e,t)=>{if(RB(zB(e))!==RB(zB(t))||!VB(t.attemptCount)||t.attemptCount<e.attemptCount)return!1;let n=`${e.status}:${t.status}`;return!(![`queued:sending`,`retrying:sending`,`sending:retrying`,`sending:reconciling`,`sending:failed`,`reconciling:reconciling`,`reconciling:unresolved`].includes(n)||t.status===`sending`&&t.attemptCount!==e.attemptCount+1||t.status!==`sending`&&t.attemptCount!==e.attemptCount||[t.reconciliationStartedAt,t.reconciliationDeadlineAt,t.reconciliationChecks,t.reconciliationNextCheckAt].some(e=>e!==void 0&&!VB(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},UB=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?ie(e.composerDocument).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]),n=new Set(e.attachments.map(e=>e.occurrenceRefID));return[...t].every(e=>n.has(e))},WB=(e,t,n={})=>{let r=Xz(),i=!1,a=n.enabled??!0,o=0,s=!1,c=!1,l=Promise.resolve(),u=new Map,d=new Map,f=new Map,p=0n,m=e=>{let t=l.then(e,e);return l=t.then(()=>void 0,()=>void 0),t},h=()=>Object.values(r.queues).flat(),g=e=>h().find(t=>IB(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:Jz(n.owner),queueItemID:n.queueItemID,operationID:n.operationID}:{},...r?{attachmentID:r.attachmentID,occurrenceRefID:r.occurrenceRefID}:{},...i?{path:i}:{}}),v=(e,t)=>e.attachments.flatMap(n=>n.locator.kind===`blob`?(()=>{let r=LB(e,t,n.occurrenceRefID);return r?[{reference:r,blobID:n.locator.blobID,attachment:n,item:e}]:[]})():[]),y=(e,t)=>({transportIdentity:e.transportIdentity,generation:e.generation,enableGeneration:o,identity:{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID}}),b=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,x=async(e,t)=>{if(!a||t.enableGeneration!==o||e.transportIdentity!==t.transportIdentity||e.generation!==t.generation||!await e.isCurrent())return!1;let n=await e.current?.();return n===void 0||n.transportIdentity===t.transportIdentity&&n.generation===t.generation},S=()=>Q(a?`stale`:`disabled`,[],[],!1),C=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),w=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(N(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},T=async e=>{let t=[];for(let n of[...e].reverse())await w(n,t);return t},E=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(N(n.reference),n.blobID);return e},D=(e,t,n=E())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,O=async(e,n,i)=>{if(!await x(n,i))return{committed:!1,current:!1};let a=await t.persist(e);return a.ok?(r=e,{committed:!0,current:await x(n,i)}):{committed:!1,current:!0,error:_(`metadata`,a.error.code)}},k=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return C();let n=E(),r=t?new Map:new Map([...d].map(([e,t])=>[e,t.blobID])),o=new Map;for(let e of h())for(let t of v(e,`queue`))o.set(N(t.reference),t);let l=new Map(d),u=[];if(!s){let t=await e.reconcileReferences(n,{ownerKinds:[`queue`]});if(!t.ok)u.push(_(`blob`,t.error.code));else for(let e of t.value.missing){let t=o.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}}let f=await e.reconcileReferences(r,{ownerKinds:[`send`]});if(!f.ok)u.push(_(`blob`,f.error.code));else for(let e of f.value.missing){let t=l.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}return Q(u.length?`failed`:`committed`,u)};return{hydrate:e=>m(async()=>{let n=e===void 0?t.readDetailed?await t.readDetailed():t.read?await t.read().then(e=>e.ok?{ok:!0,value:e.value===null?{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}:{raw:null,snapshot:e.value,status:`ok`,issues:[],degradedScopeKeys:[]}}:e):void 0:void 0;if(n&&!n.ok)return Q(`failed`,[_(`metadata`,n.error.code)]);let o=n?.value??e,l=o&&`status`in o?o:void 0,u=l?.snapshot??(o&&!(`status`in o)?o:null);if(l?.snapshot===null&&l.raw!==null)try{u=JSON.parse(l.raw)}catch{u=null}let p=u?oB(u,{normalizeSending:!0}):{status:`ok`,snapshot:Xz(),issues:[],degradedScopeKeys:[]},m=l?.issues??p.issues;i=!0;let h=l?.status===`corrupt`||p.status===`corrupt`,g=l?.status===`partial`||m.length>0;return d.clear(),f.clear(),h?(c=!0,s=!0,Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e})))):(r=p.snapshot,c=g,s=g,g?Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))):a?k(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>FB(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();if(!b(t,n))return S();let s=Jz(t.owner),l=FB(r);l.queues[s]=[...l.queues[s]??[],t];let d=oB(l);if(!UB(t))return Q(`failed`,[_(`identity`,`composer-attachment-mismatch`,t)]);if(d.status===`corrupt`||d.issues.length)return Q(`failed`,d.issues.map(e=>({phase:`identity`,code:e.reason,...e})));let f=y(n,t);if(!await x(n,f))return S();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...S(),cleanupErrors:await T(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await T(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await T(p));if(i.value===r.blobID){let n=await e.read(r.blobID);if(n.ok)continue;if(n.error.code!==`missing-blob`)return Q(`failed`,[_(`blob`,n.error.code,t,r.attachment)],await T(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await T(p));let a=await e.putAndRetain(r.reference,r.blobID,i);if(!a.ok)return Q(`failed`,[_(`blob`,a.error.code,t,r.attachment)],await T(p));continue}let a=await e.read(r.blobID),s=a.ok?await e.retain(r.reference,r.blobID):a.error.code===`missing-blob`?await(async()=>{let t=await o?.(r.attachment);return t===void 0?{ok:!1,error:{code:`missing-blob`}}:e.putAndRetain(r.reference,r.blobID,t)})():a;if(!s.ok)return Q(`failed`,[_(`blob`,s.error.code,t,r.attachment)],await T(p));p.push(r)}let m=await O(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await T(p)):{...S(),cleanupErrors:await T(p)};for(let e of v(t,`queue`))u.delete(N(e.reference));return Q(`committed`,[],[],m.current)}),transition:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o||!b(o,n))return S();let s=y(n,o);if(!await x(n,s))return S();let l=t(FB(o)),u=FB(r),d=Jz(o.owner);u.queues[d]=u.queues[d].map(t=>IB(t,e)?l:t);let f=oB(u);if(!IB(l,e)||!HB(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await O(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):S()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=r.queues[e];if(!o||o.length!==t.length||new Set(t).size!==o.length||o.some(e=>!t.includes(e.queueItemID)))return Q(`failed`,[_(`identity`,`invalid-reorder`)]);if(o.some(e=>!b(e,n)))return S();let s=y(n,o[0]);if(!await x(n,s))return S();let l=new Map(o.map(e=>[e.queueItemID,e])),u=FB(r);u.queues[e]=t.map(e=>l.get(e));let d=await O(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):S()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return S();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=Jz(o.owner),l=r.queues[s];if(!l||l.length!==1||!IB(l[0],e)||l[0].owner.state!==`unbound-legacy`||l[0].attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let u=y(n,o);if(!await x(n,u))return S();let d={...FB(o),owner:t},f=oB({version:4,queues:{[Jz(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=FB(r),m=s,h=Jz(t);p.queues[m]=p.queues[m].filter(t=>!IB(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=oB(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=e.map(g);if(!o.length||o.some(e=>!e||!b(e,n)||e.owner.state!==`unbound-legacy`)||t.transportIdentity!==n.transportIdentity)return S();let s=o[0].owner,l=r.queues[Jz(s)];if(!l||l.length!==e.length||o.some(e=>RB(e.owner)!==RB(s)||e.attachments.length)||l.some((t,n)=>!IB(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return S();let d=o,f=d.map(e=>({...FB(e),owner:t})),p=FB(r),m=Jz(s),h=Jz(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>IB(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=oB(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let r=g(t);if(!r||!b(r,n))return S();if(f.has(BB(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return S();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};if(t.locator.kind===`url`){l.push({attachment:t,value:t.locator.url});continue}let i=v(r,`send`).find(e=>e.attachment.occurrenceRefID===t.occurrenceRefID),a=await e.readReference(i.reference);if(!a.ok||a.value&&a.value!==i.blobID)return Q(`failed`,[_(`blob`,a.ok?`blob-id-conflict`:a.error.code,r,t)],await T(s));if(a.value!==i.blobID){let n=await e.retain(i.reference,i.blobID);if(!n.ok)return Q(`failed`,[_(`blob`,n.error.code,r,t)],await T(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await T(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(N(e.reference),e);return f.set(BB(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(BB(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(BB(e));let r=[];for(let e of n.held)d.delete(N(e.reference)),await w(e,r);return Q(r.length?`failed`:`committed`,[],r,!0)}),remove:(e,t)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let n=g(e);if(!n||!b(n,t))return S();let o=y(t,n);if(!await x(t,o))return S();let s=FB(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!IB(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await O(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):S();let u=f.get(BB(e));f.delete(BB(e));let p=[];for(let e of v(n,`queue`))await w(e,p);for(let e of u?.held??v(n,`send`))d.delete(N(e.reference)),await w(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>k(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return C();let t=[],n=E();for(let[r,i]of u){if(D(r,i,n)){u.delete(r);continue}let a=await e.releaseIfMatches(i.reference,i.blobID);a.ok?u.delete(r):t.push(_(`blob`,a.error.code,i.item,i.attachment))}return Q(t.length?`failed`:`committed`,[],t)}),flush:()=>l.then(()=>t.flush()),setEnabled:async e=>{a=e,o++,t.cancelPending(),await t.setEnabled(e),await l}}},GB=()=>{let e=dB(),t=hB(e),n=Dr();return{controller:PB(WB(n,t),()=>{let e=u(),t=f();return{transportIdentity:e,generation:t,isCurrent:()=>u()===e&&f()===t}}),migrate:async()=>AB(e,n)}},KB=(e=GB)=>{let t,n,r=()=>(t??=e()).controller;return{subscribe:e=>r().subscribe(e),getState:()=>r().getState(),captureRuntime:()=>r().captureRuntime(),hydrate:r=>n??=(async()=>{let n=t??=e();if(r!==void 0)return n.controller.hydrate(r);let i=await n.migrate();return i.status===`committed`?n.controller.hydrate(i.snapshot):i.status===`degraded`?n.controller.hydrate({raw:null,snapshot:i.snapshot,status:`partial`,issues:i.issues??[{path:`$.migration`,reason:`degraded`}],degradedScopeKeys:[]}):n.controller.hydrate({raw:null,snapshot:null,status:`corrupt`,issues:i.issues??[{path:`$`,reason:i.status}],degradedScopeKeys:[]})})().finally(()=>{n=void 0}),flush:()=>r().flush(),setEnabled:e=>r().setEnabled(e),admit:(e,t,n)=>r().admit(e,t,n),materializeForEdit:(e,t)=>r().materializeForEdit(e,t),releaseEditReservation:(e,t,n)=>r().releaseEditReservation(e,t,n),removeEditReservation:(e,t,n)=>r().removeEditReservation(e,t,n),remove:(e,t)=>r().remove(e,t),reorder:(e,t,n)=>r().reorder(e,t,n),bind:(e,t,n)=>r().bind(e,t,n),bindMany:(e,t,n)=>r().bindMany(e,t,n),transition:(e,t,n,i)=>r().transition(e,t,n,i),confirm:(e,t)=>r().confirm(e,t),acquireSendPayload:(e,t)=>r().acquireSendPayload(e,t),releaseSend:(e,t,n)=>r().releaseSend(e,t,n)}},qB,JB=()=>qB??=KB(),YB=26214400,XB=52428800,ZB=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),QB=async(e,t)=>{let n=0;for(let t of e){let e=t.source===`local`?t.value.size:t.size;if(!Number.isSafeInteger(e)||e<0||e>YB)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>XB)throw RangeError(`message-queue-attachments-too-large`);let r=[];for(let n of e){if(n.source===`server`){r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||`application/octet-stream`,size:n.size,source:`server`,locator:{kind:`server-path`,path:n.path}});continue}let e=await sz({signal:t});await cz(e,n.value,await ZB(n.value),t),r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||n.value.type||`application/octet-stream`,size:n.value.size,source:`local`,locator:{kind:`upload`,uploadID:e.uploadID}})}return{attachments:r,totalBytes:n}},$B,eV=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=_e();return t.setItem(e,r),r}catch{return $B??=_e()}},tV={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:gz,create:$R,details:ez,stage:tz,seal:nz,upload:QB,resolveURL:async(e,t)=>{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`durable-url-scheme`);let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`durable-url-unavailable`);return r.blob()},existing:()=>[],refresh:async()=>{},publish:()=>{}},nV=e=>({scopeKey:Jz(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),rV=async e=>`shadow-import:${[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,iV=e=>({status:e.status===`sending`?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{dueAt:e.nextAttemptAt},...e.reconciliationStartedAt===void 0?{}:{reconciliationStartedAt:e.reconciliationStartedAt},...e.reconciliationDeadlineAt===void 0?{}:{reconciliationDeadlineAt:e.reconciliationDeadlineAt},...e.reconciliationChecks===void 0?{}:{reconciliationChecks:e.reconciliationChecks},...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt},...e.failureKind===void 0?{}:{failureKind:e.failureKind}}),aV=e=>Array.isArray(e)?`[${e.map(aV).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${aV(e[t])}`).join(`,`)}}`:JSON.stringify(e),oV=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(aV(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),sV=e=>{let t={...tV,...e},n=e.create!==void 0||e.stage!==void 0||e.seal!==void 0||e.admit===void 0,r=e=>(t.publish(e),e);return{run:async e=>{let i=t.capture(),a=new AbortController,o=e??a.signal,s=await t.queue.hydrate();if(!t.current(i))return r({status:`pending`,imported:0,total:0,issues:[`runtime-stale`],canActivate:!1});let c=t.queue.getState();if(s.status===`recovery-required`||c.hydration===`recovery-required`||c.snapshot.migration.v3State===`degraded`)return r({status:`degraded`,imported:0,total:0,issues:[`recovery-required`],canActivate:!1});if(c.hydration!==`ready`)return r({status:`error`,imported:0,total:0,issues:[`hydrate-failed`],canActivate:!1});let l=Object.entries(c.snapshot.queues).sort(([e],[t])=>e.localeCompare(t)).flatMap(([,e])=>e).filter(e=>e.owner.state===`bound`&&e.owner.transportIdentity===i.transportIdentity),u=t.queue.captureRuntime(),d=Object.values(c.snapshot.queues).flat().some(e=>e.owner.state!==`bound`),f=0,p=`prepare`;try{let e=[],a=new Map;for(let s of l){if(!t.current(i)||o.aborted)return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});let c=t.existing().filter(e=>e.queueItemID===s.queueItemID||e.operationID===s.operationID||e.messageID===s.messageID);if(c.length){if(!c.some(e=>e.queueItemID===s.queueItemID&&e.operationID===s.operationID&&e.messageID===s.messageID))return r({status:`degraded`,imported:f,total:l.length,issues:[`cross-id-conflict`],canActivate:!1});f++;continue}if(s.attachments.some(e=>e.source===`vscode`))return r({status:`degraded`,imported:f,total:l.length,issues:[`vscode-attachment`],canActivate:!1});let d=s.owner;if(d.state!==`bound`)return r({status:`pending`,imported:f,total:l.length,issues:[`unbound-legacy`],canActivate:!1});p=`acquire`;let m=await t.queue.acquireSendPayload(nV(s),u);if(m.status!==`committed`||!m.token)return r({status:`degraded`,imported:f,total:l.length,issues:[`payload-unavailable`],canActivate:!1});try{let i=new Map(m.values?.map(e=>[e.attachment.occurrenceRefID,e.value])),c=[];for(let e of s.attachments){let n=JSON.parse(e.occurrenceRefID);if(e.source===`server`&&e.serverPath){c.push({attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`server-path`,path:e.serverPath}});continue}let a=i.get(e.occurrenceRefID),s=typeof a==`string`?await t.resolveURL(a,o):a??(e.locator.kind===`url`?await t.resolveURL(e.locator.url,o):void 0);if(!s||typeof s!=`object`||typeof s.arrayBuffer!=`function`||s.size!==e.size||s.type&&s.type!==e.mimeType)return r({status:`degraded`,imported:f,total:l.length,issues:[`attachment-bytes-unavailable`],canActivate:!1});p=`upload`;let u=await t.upload([{attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,source:`local`,value:s}],o);c.push(u.attachments[0])}let u=`${d.directory}\u0000${d.sessionID}`,h=a.get(u)??a.size;a.set(u,h);let g=e.filter(e=>e.scopeOrdinal===h).length,_={scope:{directory:d.directory,sessionID:d.sessionID},item:{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID,content:s.content,...s.composerDocument?{composerDocument:s.composerDocument}:{},...s.composerMentions?{composerMentions:s.composerMentions}:{},...s.sendConfig?{sendConfig:s.sendConfig}:{},attachments:c,attachmentIssues:s.attachmentIssues,createdAt:s.createdAt,migrationImport:!0,migrationState:iV(s)}};n||(p=`admit`,await t.admit({requestID:await rV(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await oV(_)}),f++}finally{await t.queue.releaseSend(nV(s),m.token,u)}}if(!n){p=`refresh`,await t.refresh();let e=l.every(e=>t.existing().some(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID));return r({status:d?`pending`:e?`complete`:`error`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:e?[]:[`catalog-incomplete`],canActivate:e&&!d})}let s=await oV(e.map(({item:e,scopeOrdinal:t,itemOrdinal:n})=>({scopeOrdinal:t,itemOrdinal:n,owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,sendConfig:e.sendConfig,attachments:e.attachments.map(({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})=>({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})),attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,status:e.status,attemptCount:e.attemptCount})));p=`create`;let c=t.kind??`activation`,m=eV(),h=t.authorityGeneration?.()??i.generation,g=await t.create({requestID:`shadow-create:${c}:${h}:${m}:${s}`,kind:c,clientID:m,snapshotHash:s,itemCount:e.length,protocol:4,expectedGeneration:h,signal:o});if(g.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:g.manifestHash,activationEpoch:g.commit?.activationEpoch});let _=await t.details(g.importID,o);if(_.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:_.manifestHash,activationEpoch:_.commit?.activationEpoch});let v=new Set(_.staged.map(e=>`${e.scopeOrdinal}:${e.itemOrdinal}`));if(p=`stage`,_.state===`staging`){for(let n of e)if(!v.has(`${n.scopeOrdinal}:${n.itemOrdinal}`)){if(!t.current(i))return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});await t.stage(g.importID,{requestID:`shadow-stage:${g.importID}:${n.scopeOrdinal}:${n.itemOrdinal}:${n.payloadHash}`,scopeOrdinal:n.scopeOrdinal,itemOrdinal:n.itemOrdinal,payload:n.payload,payloadHash:n.payloadHash,signal:o})}}p=`seal`;let y=_.state===`sealed`?{manifestHash:_.manifestHash}:await t.seal(g.importID,{requestID:`shadow-seal:${g.importID}:${s}`,signal:o});return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:y.manifestHash})}catch{return r({status:`error`,imported:f,total:l.length,issues:[`shadow-${p}-failed`],canActivate:!1})}}}},cV=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,lV=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),uV={snapshot:e=>lV(jz(R),e),status:e=>lV(Oz(R),e),scope:VR,waitInvalidation:UR,admit:gz,edit:_z,remove:yz,reserve:dz,renew:pz,release:fz,removeReserved:mz,reorder:bz,manualSend:vz,upload:QB,client:R,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),legacyManualSend:async()=>{},shadowQueue:JB,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},dV=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),fV=e=>e instanceof X&&e.code===`unavailable`,pV=8,mV=(e,t)=>{if(!t)return[...e];let n=t.items.map(e=>e.queueItemID),r=new Set(n),i=e.filter(e=>r.has(e)),a=new Set(i);return[...i,...n.filter(e=>!a.has(e))]},hV=e=>`${e.transportIdentity}\u0000${F(e.directory)}\u0000${e.sessionID}`,gV=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),_V=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},vV=(e={})=>{let t={...uV,...e},n={...t,snapshot:e.snapshot??(e=>lV(jz(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>lV(Oz(t.client,t.capture().transportIdentity),e))},r={transportIdentity:n.capture().transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}},i,a=0,o,s=new Set,c=new Map,l=new Map,u=new Map,d=[],f=e=>c.get(e)?.forEach(e=>e()),p=(e,t)=>{let n=u.get(e)??d,r=t(n);r!==n&&(r.length?u.set(e,r):u.delete(e),f(e))},m=e=>{r={...r,...e},s.forEach(e=>e()),`scopes`in e||c.forEach(e=>e.forEach(e=>e()))},h=e=>{let t=n.capture();return r.transportIdentity===e.transportIdentity&&t.transportIdentity===e.transportIdentity&&t.generation===e.generation&&n.current(e)},g=e=>{let t=[...u.keys()];i?.abort(),i=void 0,o=void 0,l.clear(),u.clear(),m({transportIdentity:e.transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),t.forEach(f)},_=()=>{let e=n.capture();return r.transportIdentity!==e.transportIdentity&&g(e),e},v=(e,t,n)=>{let r=new Set([...e.keys(),...t.keys()]);for(let i of r){let r=e.get(i),a=t.get(i);if(r?.revision===a?.revision&&r?.directory===a?.directory&&r?.sessionID===a?.sessionID)continue;let o=a?hV({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?hV({transportIdentity:n,directory:r.directory,sessionID:r.sessionID}):``;c.get(o)?.forEach(e=>e())}},y=(e,t)=>{if(!h(t))return;let n=r.scopes,i=new Map(e.map(e=>[e.scopeID,e]));for(let[e,t]of l)i.get(t.scope.scopeID)?.revision!==t.revision&&l.delete(e);m({scopes:i}),v(n,i,t.transportIdentity)},b=async(e,t,r,i)=>{let a=0,o,s,c=[];do{let t=i??await n.scope(e.scopeID,{offset:a,limit:8,expectedRevision:o,signal:r});if(i=void 0,s||=t,t.revision!==e.revision||t.scopeID!==e.scopeID||o!==void 0&&t.revision!==o)throw new X(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new X(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),S=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),C=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;Mz(n.client,e,t.transportIdentity);let a=hV({transportIdentity:t.transportIdentity,directory:e.directory,sessionID:e.sessionID});return(!i||i.revision!==e.revision||i.directory!==e.directory||i.sessionID!==e.sessionID)&&y([...r.scopes.values()].filter(t=>t.scopeID!==e.scopeID).concat(x(e)),t),p(a,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n}),e},w=(e,t,i)=>{if(!h(i)||e.revision<S(i))return!1;let a=new Map(e.scopes.map(e=>[e.scopeID,e]));if([...r.scopes.values()].some(e=>{let t=a.get(e.scopeID);return t!==void 0&&t.revision<e.revision}))return!1;let o=r.scopes;for(let e of t)Mz(n.client,e,i.transportIdentity);if(Pz(n.client,e,i.transportIdentity),e.scopes.length===0)Iz(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||Lz(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=hV({transportIdentity:i.transportIdentity,directory:e.directory,sessionID:e.sessionID});p(t,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n})}return!0},T=async()=>{let e=_(),t=i?.signal??new AbortController().signal;m({isFetching:!0,hydration:`hydrating`,error:void 0});try{let i=await n.status(t);if(!h(e)||(Nz(n.client,i,e.transportIdentity),m({capability:i.capability?`available`:`unsupported`,authority:i.authority}),!i.capability))return;let a=await n.snapshot(t);if(!h(e))return;let o=r.scopes,s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));w(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof X&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},E=async(e,t)=>{for(;!t.aborted&&i;){if(!h(e))return`stale`;let i=n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`]),a=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;let o=new Map(r.scopes);if(!(i?.revision!==a.revision||a.scopes.some(e=>o.get(e.scopeID)?.revision!==e.revision)||[...o.keys()].some(e=>!a.scopes.some(t=>t.scopeID===e))))return`applied`;let s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;w(a,s,e)&&m({hydration:`ready`,error:void 0});let c=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;if(c.revision===a.revision)return`applied`}return`aborted`},D=async()=>{await T();let e=0,t=i;if(!t)return;let r=t.signal;for(;!r.aborted&&i===t;){let a=n.capture();try{let t=await E(a,r);if(t===`aborted`||t===`stale`)return;let i=S(a),o=await n.waitInvalidation(i,{signal:r});if(!h(a)||r.aborted||o===`aborted`)return;e=0}catch(n){if(r.aborted||i!==t||!h(a))return;if(n instanceof X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await gV(Math.min(3e4,500*2**e++),r)}}},O=async(e,t,a)=>{let o=await n.snapshot(i?.signal);if(!h(t))return;let s=o.scopes.find(t=>t.scopeID===e);if(!s)throw a;let c=await b(s,t,i?.signal??new AbortController().signal);return C(c,t)??Fz(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},k=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?Fz(n.client,e,o.revision,i.transportIdentity):void 0;if(s)return s;let c=await n.scope(e,{offset:0,limit:8,signal:a});if(!h(i)||c.scopeID!==e||c.revision<t)return;let l=r.scopes.get(e);if(l&&l.revision>c.revision)return;let u=await b({scopeID:e,revision:c.revision,directory:c.directory,sessionID:c.sessionID,worktreeState:c.worktreeState,itemCount:c.itemCount},i,a,c);return C(u,i)},A=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<pV;t++){let s=r.scopes.get(e),c=s?Fz(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!fV(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(dV(n)&&t+1<pV){let t=await O(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await O(e,a,n).catch(()=>void 0),n}if(!h(a))return{status:`stale`};let u=e=>l===void 0?e:{...e,committedRevision:l};for(let t=0;t<2;t++)try{let t=await O(e,a,new X(409,`revision_conflict`));if(!t)return u({status:`stale`});await Rz(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?Fz(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(dV(r)&&!t)continue;return h(a)?(m({error:r}),Rz(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(409,`revision_conflict`)},j,ee=()=>{i?.abort(),i=void 0,o=void 0},te=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},ne=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||ee()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=hV(e),r=c.get(n)??new Set;return r.add(t),c.set(n,r),()=>{r.delete(t),r.size||c.delete(n)}},getState:()=>(_(),r),captureRuntime:()=>_(),getScope:e=>{let t=_();if(e.transportIdentity!==t.transportIdentity||r.transportIdentity!==e.transportIdentity)return;let i=[...r.scopes.values()].find(t=>F(t.directory)===F(e.directory)&&t.sessionID===e.sessionID);if(!i)return;let a=`${e.transportIdentity}\u0000${i.scopeID}`,o=l.get(a);if(o?.revision===i.revision)return o.scope;let s=Fz(n.client,i.scopeID,i.revision,e.transportIdentity);return s&&l.set(a,{revision:i.revision,scope:s}),s},getPendingAdmissions:e=>{let t=_();return e.transportIdentity===t.transportIdentity&&r.transportIdentity===e.transportIdentity?u.get(hV(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||ne()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),ee(),g(n.capture()),a&&te()},refresh:T,runShadowImport:()=>{if(o)return o;let e=(async()=>{let e=_();if(r.capability!==`available`||r.authority!==`shadow`){let e={status:`pending`,imported:0,total:0,issues:[`shadow-unavailable`],canActivate:!1};return m({importState:e}),e}return sV({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>Fz(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:T,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await az({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await oz({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=hV({transportIdentity:_().transportIdentity,...t}),i={kind:`pending-admission`,requestID:e,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`uploading`,attachmentCount:n.attachmentCount??0,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},...n.sendConfig?{sendConfig:n.sendConfig}:{}};p(r,t=>[...t.filter(t=>t.requestID!==e&&t.queueItemID!==n.queueItemID),i])},unstageAdmission:({requestID:e,scope:t})=>{let n=hV({transportIdentity:_().transportIdentity,...t});p(n,t=>t.filter(t=>t.requestID!==e))},admit:async({requestID:e,scope:t,item:r,attachments:a=[]})=>{let o=_(),s=hV({transportIdentity:o.transportIdentity,...t}),c=(u.get(s)??d).find(t=>t.requestID===e||t.queueItemID===r.queueItemID),l=c&&(c.requestID===e||c.queueItemID===r.queueItemID)?{...c,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}}:{kind:`pending-admission`,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}},f=t=>p(s,n=>n.map(n=>n.requestID===e||n.queueItemID===r.queueItemID?t:n)),m=()=>p(s,t=>t.filter(t=>t.requestID!==e&&t.queueItemID!==r.queueItemID));c?f(l):p(s,e=>[...e,l]);let g;try{g=await _V(e=>n.upload(a,e),i?.signal,n.admissionUploadTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}if(!h(o))return m(),{status:`stale`};let v={requestID:e,scope:t,item:{...r,attachments:g.attachments}};f({...l,phase:`admitting`});let y;try{y=await _V(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await _V(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}}return f({...l,phase:`acknowledged`,acknowledgedRevision:y.revision}),y.scopeID?_V(e=>k(y.scopeID,y.revision,o,e),i?.signal,n.admissionReconcileTimeoutMs).then(m,m):m(),{status:`committed`}},edit:({requestID:e,scopeID:t,revision:r,item:a,patch:o})=>A(t,r,(t,r)=>{let s=r?.items.find(e=>e.queueItemID===a.queueItemID)??a;return n.edit(s.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:s.rowVersion,item:o,signal:i?.signal})}),remove:({requestID:e,scopeID:t,revision:r,item:a})=>A(t,r,async(r,o)=>{let s=o?.items.find(e=>e.queueItemID===a.queueItemID)??a;try{return await n.remove(s.queueItemID,{requestID:e,expectedRevision:r,expectedRowVersion:s.rowVersion,signal:i?.signal})}catch(e){if(!(e instanceof X)||e.code!==`not_found`)throw e;let n=await O(t,_(),e);if(!n||n.items.some(e=>e.queueItemID===a.queueItemID))throw e;return{revision:n.revision,removedQueueItemID:a.queueItemID}}}),reserveEdit:async({requestID:e,scopeID:t,revision:a,item:o,owner:s,ttlMs:c,runtime:l})=>{if(!h(l))return;let u=a;for(let a=0;a<pV;a++){let d=r.scopes.get(t),f=(d?Fz(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{let t=await n.reserve(f.queueItemID,{requestID:e,expectedRevision:u,rowVersion:f.rowVersion,owner:s,ttlMs:c,signal:i?.signal});if(!h(l)){await n.release(f.queueItemID,{token:t.token,signal:i?.signal}).catch(()=>{});return}return t}catch(e){if(!dV(e)||a+1>=pV)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return;u=n.revision}}},renewEdit:async({item:e,token:t,generation:r,ttlMs:a,runtime:o,signal:s})=>{if(!h(o))return;let c=await n.renew(e.queueItemID,{token:t,generation:r,ttlMs:a,signal:s??i?.signal});if(!(!h(o)||c.queueItemID!==e.queueItemID||c.token!==t||c.generation!==r))return c},releaseEdit:async({item:e,token:t,runtime:r})=>{h(r)&&(await n.release(e.queueItemID,{token:t,signal:i?.signal.aborted?void 0:i?.signal}),h(r)&&await T())},removeReserved:async({requestID:e,scopeID:t,revision:a,item:o,token:s,generation:c,runtime:l})=>{if(!h(l))return!1;let u=a;for(let a=0;a<pV;a++){let d=r.scopes.get(t),f=(d?Fz(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{return await n.removeReserved(f.queueItemID,{requestID:e,expectedRevision:u,expectedRowVersion:f.rowVersion,token:s,generation:c,signal:i?.signal}),h(l)?(await O(t,l,new X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!dV(e)||a+1>=pV)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return!1;u=n.revision}}return!1},reorder:({requestID:e,scopeID:t,revision:r,queueItemIDs:a})=>A(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:mV(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return A(t,a,(t,r)=>{let a=r?.items.find(e=>e.queueItemID===o.queueItemID)??o;return n.manualSend(a.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:a.rowVersion,signal:i?.signal})});if(r.authority===`shadow`||r.capability===`unsupported`){let e=_();return h(e)?(await n.legacyManualSend(o),h(e)?{status:`committed`}:{status:`stale`}):{status:`stale`}}throw new X(0,`unavailable`)}}},yV,bV=()=>yV??=vV(),xV=new WeakMap,SV=e=>{let t=e,n=xV.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),xV.delete(t))};let r={refs:1,unsubscribe:s(t=>{p(t)&&e.restart()})};return xV.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),xV.delete(t))}},CV=(e,t)=>{let n,r=[],i=[...e.semantics];return{text:e.chunks.map((a,o)=>{if(a.provenance!==`authored`)return a.text;let s=a.text;o===0&&(s=s.replace(/^\n+/,``)),o===e.chunks.length-1&&(s=s.replace(/\n+$/,``));let c=t(s);return n??=c.agent,r.push(...c.attachments??[]),i.push(...c.semantics??[]),c.text}).join(``),agent:n,attachments:wV(r),semantics:i}},wV=e=>{let t=new Set;return e.filter(e=>{let n=e.serverPath?.replace(/\\/g,`/`).replace(/\/+/g,`/`),r=n?`path:${n}`:`id:${e.id}`;return!t.has(r)&&(t.add(r),!0)})},TV=`The user referenced these OpenCode sessions (id, title, owning directory). Entries may carry messages inlined from the client cache; an empty messages array only means the transcript was not loaded client-side — it never means the session is empty. To read any referenced session yourself, query the OpenCode SQLite store read-only (replace SESSION_ID): sqlite3 "file:$HOME/.local/share/opencode/opencode.db?mode=ro" ".timeout 5000" "SELECT json_extract(m.data,'$.role') AS role, json_extract(p.data,'$.text') AS text FROM part p JOIN message m ON m.id = p.message_id WHERE p.session_id = 'SESSION_ID' AND json_extract(p.data,'$.type') = 'text' AND json_extract(p.data,'$.synthetic') IS NULL ORDER BY p.time_created". If that file does not exist, resolve the OpenChamber-hosted store first (ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db) and use its path in the same file: URI. The database is live — always open it read-only as shown.
407
- `,EV=e=>{if(!e.startsWith(TV))return[];try{let t=JSON.parse(e.slice(TV.length));return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;if(typeof t.id!=`string`||typeof t.title!=`string`)return[];let n=typeof t.directory==`string`?t.directory:void 0,r=Array.isArray(t.messages)?t.messages.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.role==`string`&&typeof t.text==`string`?[{role:t.role,text:t.text}]:[]}):[];return[{id:t.id,title:t.title,...n===void 0?{}:{directory:n},messages:r}]}):[]}catch{return[]}},DV=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),OV=(e,t=36e3)=>{if(e.length===0)return null;let n=TV,r=t-n.length;if(r<2)return n.slice(0,t);let i=e.length+1,a=Math.max(2,Math.floor((r-i)/e.length));return`${n}[${e.map(e=>{let t={id:e.id,title:e.title,messages:[],...e.directory===void 0?{}:{directory:e.directory}};if(JSON.stringify(t).length>a){let e=0,n=t.title.length,r=``;for(;e<=n;){let i=Math.floor((e+n)/2),o=`${t.title.slice(0,i)}...`;JSON.stringify({...t,title:o}).length<=a?(r=o,e=i+1):n=i-1}t.title=r}for(let n of e.messages){let e=[...t.messages,n];if(JSON.stringify({...t,messages:e}).length<=a){t.messages=e;continue}let r=0,i=n.text.length,o=``;for(;r<=i;){let e=Math.floor((r+i)/2),s=`${n.text.slice(0,e)}\n[Message truncated]`,c={...t,messages:[...t.messages,{...n,text:s}]};JSON.stringify(c).length<=a?(o=s,r=e+1):i=e-1}o&&t.messages.push({...n,text:o});break}return JSON.stringify(t)}).join(`,`)}]`},kV=e=>{let t=[],n=[],r=[],i={session:new Set,skill:new Set,attachment:new Set};for(let a of e)switch(a.type){case`session`:i.session.has(a.sessionId)||(i.session.add(a.sessionId),t.push(a.sessionId));break;case`skill`:i.skill.has(a.skillName)||(i.skill.add(a.skillName),n.push(a.skillName));break;case`attachment`:i.attachment.has(a.attachmentRefID)||(i.attachment.add(a.attachmentRefID),r.push(a.attachmentRefID))}return{sessionIds:t,skillNames:n,attachmentRefIDs:r}},AV=(e,t)=>{let{sessionIds:n,skillNames:r}=kV(e),i=n.flatMap(e=>{let n=Pf(e,t);if(!n)return[];let r=jf(n).find(t=>t.id===e);if(!r)return[];let i=Ff(e,n).flatMap(e=>{let t=If(e.id,n).filter(e=>e.type===`text`&&!$m(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
408
- `);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=DV(r);o&&a.push({text:o,synthetic:!0});let s=OV(i);return s&&a.push({text:s,synthetic:!0}),a},jV=50,MV=15e4,NV=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!$m(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},PV=async(e,t,n)=>{let{sessionIds:r}=kV(e);if(r.length===0)return;let i=U();if(!i)return;let a=n?.maxPages??jV,o=n?.maxChars??MV;await Promise.all(r.map(async e=>{let n=Pf(e,t);if(!n)return;let r=G(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await wd(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&NV(s)<o;)await Cd(n,e),s=i.getTranscript(r),c+=1}))},FV=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),IV=(e,t)=>{if(typeof e!=`string`||e.length===0)return{sanitizedText:e,mention:null};let n=t.filter(e=>e.mode&&e.mode!==`primary`);if(n.length===0||!e.includes(`@`))return{sanitizedText:e,mention:null};let r=null;for(let t of n){let n=t.name.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=RegExp(`@${n}\\b`,`gi`),a;for(;(a=i.exec(e))!==null;){let n=a.index,i=n+a[0].length;if(!FV(n>0?e[n-1]:null))continue;let o={name:t.name,source:{value:a[0],start:n,end:i}};r||=o}}return r?{sanitizedText:e,mention:r}:{sanitizedText:e,mention:null}},LV=/\.[a-z0-9]{1,8}$/i,RV=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`e2e`,`__mocks__`]),zV=/\.(?:test|spec|e2e)\./i,BV=.85,VV=3,HV=3,UV=1.25,WV=-.35,GV=-.5,KV=e=>{let t=e.trim().replace(/^\.\//,``).replace(/^[/\\]+/,``).toLowerCase(),n=/[/\\]$/.test(t),r=t.replace(/[/\\]+$/,``),i=Math.max(r.lastIndexOf(`/`),r.lastIndexOf(`\\`)),a=(i>=0?r.slice(i+1):r).match(LV),o=!n&&a!==null,s=o&&a?a[0].slice(1):null;return{raw:t,search:r,stem:o&&a?r.slice(0,r.length-a[0].length):r,extension:s,fileIntent:o,directoryIntent:n}},qV=e=>{let t=KV(e);return(t.fileIntent||t.directoryIntent)&&t.stem?t.stem:t.search},JV=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase();if(!t)return!1;let n=t.split(`/`).filter(Boolean);if(n.some(e=>RV.has(e)))return!0;let r=n.at(-1)??t;return zV.test(r)},YV=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``).toLowerCase(),XV=(e,t)=>(e.name||t.split(`/`).filter(Boolean).pop()||t).toLowerCase(),ZV=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),QV=(e,t)=>{let n=YV(e.relativePath),r=XV(e,n),i=e.isDirectory===!0,a=ZV(Zj(n,t.search),Zj(r,t.search)),o;if(a!==null)o=a;else if(t.stem&&t.stem!==t.search){let e=ZV(Zj(n,t.stem),Zj(r,t.stem));if(e===null)return null;o=e+BV}else return null;return t.fileIntent&&i&&(o+=VV),t.directoryIntent&&!i&&(o+=HV),t.fileIntent&&!i&&t.extension&&e.extension===t.extension&&(o+=WV),t.directoryIntent&&i&&r===t.stem&&(o+=GV),JV(n)&&!JV(t.search)&&(o+=UV),o},$V=(e,t,n)=>{let r=n?.limit??20,i=KV(t);if(!i.search&&!i.stem)return e.slice(0,r);let a=e.flatMap(e=>{let t=QV(e,i);return t===null?[]:[{item:e,score:t,sortKey:YV(e.relativePath)}]});return a.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),a.slice(0,r).map(({item:e})=>e)},eH=/\.[a-z0-9]{1,8}$/i,tH=/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/,nH=e=>e.includes(`/`)||e.includes(`\\`)||e.includes(`.`),rH=e=>{if(!nH(e))return!1;let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return!0;let n=t.split(`/`).filter(Boolean).pop()??t;return eH.test(n)},iH=({files:e,directories:t,query:n,excludePaths:r,limit:i=20})=>{let a=new Map;for(let e of t)!e.path||r?.has(e.path)||a.set(e.path,{...e,isDirectory:!0});for(let t of e)!t.path||r?.has(t.path)||a.has(t.path)||a.set(t.path,{...t,isDirectory:t.isDirectory===!0});return $V(Array.from(a.values()),n,{limit:i})},aH=6,oH=(e,t,n)=>$V(e,t,{limit:n?.limit??aH}),sH=(e,t)=>e===null&&t===null?null:Math.min(e??1/0,t??1/0),cH=(e,t)=>{let n=t.trim().toLowerCase();if(!n)return[...e].sort((e,t)=>e.name.localeCompare(t.name));let r=e.flatMap(e=>{let t=sH(Zj(e.name,n),Zj(e.description??``,n));return t===null?[]:[{agent:e,score:t}]});return r.sort((e,t)=>e.score===t.score?e.agent.name.localeCompare(t.agent.name):e.score-t.score),r.map(e=>e.agent)},lH=(e,t)=>{let n=e[t];return n!==void 0&&/\s/.test(n)},uH=({mention:e,confirmed:t,terminated:n})=>!e||e.startsWith(`session:`)?!1:t?!0:n&&nH(e),dH=(e,{confirmedValues:t,agentNames:n})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=a[0],o=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),s=a.index,c=s+i.length,l=s>0?e[s-1]:null;if(!(!l||tH.test(l))||o.length===0||o.startsWith(`session:`))continue;if(n.has(o.toLowerCase())){r.push({start:s,end:c,kind:`agent`});continue}let u=lH(e,s+1+o.length);uH({mention:o,confirmed:t.has(o),terminated:u})&&r.push({start:s,end:c,kind:`file`})}return r},fH=(e,{agentNames:t,includeUnterminatedPastedReferences:n=!1}={})=>{if(!e.includes(`@`))return[];let r=[],i=/@([^\s]+)/g,a;for(;(a=i.exec(e))!==null;){let i=String(a[1]||``).trim().replace(/[),.;:!?`"'>]+$/g,``),o=a.index,s=o>0?e[o-1]:null;if(!(!s||tH.test(s))||!i||i.startsWith(`session:`)||t?.has(i.toLowerCase()))continue;let c=o+1+i.length,l=lH(e,c),u=n&&rH(i);!l&&!u||!nH(i)&&!u||r.push({kind:i.endsWith(`/`)||i.endsWith(`\\`)?`directory`:`file`,value:i,start:o,end:c})}return r},pH=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,mH=e=>{let t=[];pH.lastIndex=0;let n;for(;(n=pH.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},hH=e=>{let t=[],n=new Set;for(let{id:r}of mH(e))n.has(r)||(n.add(r),t.push(r));return t},gH=(e,t)=>{let n=e;for(let r of mH(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},_H=({sessions:e,currentSessionId:t,searchQuery:n})=>{let r=n.trim().toLowerCase();return e.filter(e=>e.id!==t).filter(e=>!r||`${e.title??``} ${e.id}`.toLowerCase().includes(r)).sort((e,t)=>(t.time?.updated??t.time?.created??0)-(e.time?.updated??e.time?.created??0)).slice(0,r?10:3)},vH=({value:e,cursorPosition:t,inputSource:n=`manual`,insertedText:r})=>{if(n===`paste`&&r?.includes(`@`))return null;let i=e.substring(0,t),a=i.lastIndexOf(`@`);if(a===-1)return null;let o=a>0?i[a-1]:null,s=i.substring(a+1);return!(!o||/\s/.test(o))||s.includes(` `)||s.includes(`
409
- `)?null:s},yH=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,bH=e=>xt(e.trim()),xH=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=bH(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},SH=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),CH=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?bH(t).replace(/\/+$/,``):``,c=e=>bH(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=/@([^\s]+)/g,f;for(;(f=d.exec(e))!==null;){let t=f.index>0?e[f.index-1]:null;if(t&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(t))continue;let n=f[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``);if(!n||i.has(n.toLowerCase()))continue;let r=c(n),d=St(n)||St(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=St(n)||St(r)?r:s?Ct(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=wt(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?gt:`text/plain`;a.push({id:_e(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:xH(p),source:`server`,serverPath:p})}return a},wH=(e,t)=>{let n=[],r=new Set;yH.lastIndex=0;let i;for(;(i=yH.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},TH=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${me}${i}`))&&n.push(r);return n},EH=({plan:e,agents:t,installedSkillNames:n,directory:r,root:i,confirmedFilePaths:a=[],confirmedDirectoryPaths:o=[],citationAttachments:s=[]})=>{let c=new Set(t.map(e=>e.name.toLowerCase())),l=new Map(jf(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of Nf().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return CV(e,e=>{let r=IV(e,t),d=[...new Set([...hH(e),...TH(e,u)])],f=[...wH(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=CH({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:gH(lt(Pe(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},DH=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:wV(e.attachments)}:{},synthetic:!0})),OH=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...wV(t).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id})),...n.map(e=>({type:`text`,text:e.text,synthetic:!0})),...(r??[]).flatMap(e=>[{type:`text`,text:e.text,synthetic:!0},...wV(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],kH=(e,t)=>{let n=t.map(e=>({...e,attachments:wV(e.attachments??[])})),r=e.length-n.reduce((e,t)=>e+1+t.attachments.length,0);if(r<0)throw Error(`assistant-queue-synthetic-parts-mismatch`);return n.map(e=>{let t=[r++];for(let n of e.attachments)t.push(r++);return{partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachmentIDs:e.attachments.map(e=>e.id),deliveryPartIndexes:t}})},AH=e=>e?.trim()||void 0,jH=(e,t)=>e!==`assistant`||t===`server`,MH=(e,t,n)=>{let r=(e.current.get(t)??Promise.resolve()).catch(()=>void 0).then(n),i=r.then(()=>void 0,()=>void 0);return e.current.set(t,i),r.finally(()=>{e.current.get(t)===i&&e.current.delete(t)})},NH=({currentConfig:e,sessionID:t,selection:n})=>{let r=AH(e.currentAgentName),i=t?AH(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=AH(a?.providerId)??AH(o?.providerId)??AH(e.currentProviderId),c=AH(a?.modelId)??AH(o?.modelId)??AH(e.currentModelId);if(!s||!c)return;let l=t&&i?AH(n.getAgentModelVariantForSession(t,i,s,c))??AH(e.currentVariant):AH(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},PH=e=>!!(AH(e?.providerID)&&AH(e?.modelID)),FH=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,IH=(e,t)=>FH(e,t),LH=e=>JSON.stringify([e.text,e.references]),RH=e=>JSON.stringify(e),zH=(e,t)=>e.id===t.id&&e.file===t.file&&e.dataUrl===t.dataUrl&&e.mimeType===t.mimeType&&e.filename===t.filename&&e.size===t.size&&e.source===t.source&&e.serverPath===t.serverPath&&e.vscodePath===t.vscodePath&&e.vscodeSource===t.vscodeSource,BH=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:z(e),runtime:{...t},documentFingerprint:LH(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,RH(e)]))}),VH=async({capture:e,admit:t,captureRuntime:n,getCurrentDraftKey:r,getDocument:i,consumeBody:a,getAttachments:o,removeAttachment:s,getInlineDrafts:c,removeInlineDraft:l})=>{let u=await t(),d=r();if(u.status!==`committed`||!IH(e.runtime,n())||!d||z(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=LH(i())===e.documentFingerprint;f&&a();let p=[],m=[],h=new Map(o().map(e=>[e.id,e]));for(let[t,n]of e.attachments){let e=h.get(t);if(!e||!zH(n,e))continue;let r=!1;try{r=await s(t)}catch{r=!1}r?p.push(t):m.push(t)}let g=[],_=new Map(c().map(e=>[e.id,e]));for(let[t,n]of e.inlineDrafts){let e=_.get(t);!e||RH(e)!==n||(l(t),g.push(t))}return m.length>0?{status:`partial`,bodyConsumed:f,attachmentIDsConsumed:p,attachmentIDsFailed:m,inlineDraftIDsConsumed:g}:{status:`committed`,bodyConsumed:f,attachmentIDsConsumed:p,inlineDraftIDsConsumed:g}},HH=(e,t)=>e.map(e=>{let n=e.mimeType||e.file.type||`application/octet-stream`;if(e.source===`server`){if(!e.serverPath)throw Error(`message-queue-server-attachment-unavailable`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`server`,path:e.serverPath,size:e.size}}if(e.source===`vscode`)throw Error(`message-queue-vscode-attachment-unsupported`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`local`,value:e.file.slice(0,e.file.size,n)}}),UH=(e=_e,t=()=>he(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),WH=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},GH=`blocked`,KH=new Set,qH=()=>GH,JH=e=>{if(GH!==e){GH=e;for(let e of KH)e()}},YH=e=>(KH.add(e),()=>KH.delete(e)),XH=()=>GH===`legacy-enabled`,ZH=2e3,QH=6e4,$H=5e3,eU=3,tU=e=>Math.min(ZH*2**Math.max(e-1,0),QH),nU=new Map,rU=new Map,iU=new Set,aU=new Set,oU=0,sU=()=>{oU+=1;for(let e of aU)e()},cU=(e,t)=>JSON.stringify([E(e),t.queueItemID,t.operationID]),lU=e=>`scope:${E(e)}`,uU=()=>new Set([...nU.keys(),...rU.keys()]),dU=e=>(aU.add(e),()=>aU.delete(e)),fU=e=>{let t=(0,H.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?rU.has(lU(e)):!1,t[0]=e,t[1]=n),K.useSyncExternalStore(dU,n,NU)},pU=()=>structuredClone(M.getState().queuedMessages),mU=async()=>{for(JH(`blocked`);nU.size||rU.size||iU.size;)await Promise.allSettled([...new Set([...nU.values(),...rU.values(),...iU])]);return y(),pU()},hU=e=>e===`idle`,gU=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},_U=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?hU(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:hU(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=eU||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},vU=(e,t)=>{let n=new Set;for(let[r,i]of Object.entries(e))i?.status===`running`&&i.runtimeKey===t&&n.add(r);return n},yU=(e,t)=>{let n;for(let r of Ff(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},bU=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},xU=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=uU(),blockedSessions:s,blockedScopeKeys:c=new Set,now:l})=>{let u={dispatchScopes:[],queryOperations:[],resolveOperations:[],recoverOperations:[],inspectedScopeCount:0},d=new Set;for(let[f,p]of Object.entries(e)){let e=p[0],m=e?.owner;if(!e||m?.state!==`bound`||m.transportIdentity!==t)continue;u.inspectedScopeCount+=1;let h=`${f}:${e.queueItemID}`,g=cU(m,e),_=lU(m);d.add(h);let v=n(m),y=_U(e,v,i.get(f),l,o.has(g),r(m));i.set(f,v),y.nextWakeAt&&(!u.nextWakeAt||y.nextWakeAt<u.nextWakeAt)&&(u.nextWakeAt=y.nextWakeAt),y.dispatch&&!s.has(m.sessionID)&&!c.has(E(m))&&!o.has(g)&&!o.has(_)&&u.dispatchScopes.push(m),y.query&&!a.has(h)&&u.queryOperations.push({scope:m,item:e,key:h}),y.resolve&&u.resolveOperations.push({scope:m,item:e,key:h}),y.recover&&!a.has(h)&&u.recoverOperations.push({scope:m,item:e,key:h})}for(let e of a)d.has(e)||a.delete(e);for(let t of i.keys())e[t]||i.delete(t);return u},SU=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ue(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=EH({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:SH(t.content),agents:Up.getState().getVisibleAgents(),installedSkillNames:new Set(Po(R,r).map(e=>e.name)),directory:r,root:r,confirmedFilePaths:t.composerMentions?.filter(e=>e.kind===`file`||e.kind===`directory`).map(e=>e.path||e.value),confirmedDirectoryPaths:t.composerMentions?.filter(e=>e.kind===`directory`).map(e=>e.path||e.value),citationAttachments:t.attachments}),a=AV(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:wV([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},CU=(e,t,n,r)=>$.getState().sendMessage(t.primaryText,n.providerID,n.modelID,n.agent,t.primaryAttachments,t.agentMentionName,t.additionalParts,n.variant,`normal`,{sessionId:e,directoryHint:r.directory,delivery:r.delivery,messageID:t.messageID,ticket:r.ticket,preserveOptimisticOnAmbiguous:!0,onSendConfirmed:r.onSendConfirmed}),wU=(e,t)=>t?{...t}:NH({currentConfig:Up.getState(),sessionID:e,selection:Ms.getState()})??{providerID:``,modelID:``},TU=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:u(),directory:t,sessionID:e}:null},EU=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),DU=e=>e.status===`sending`||e.status===`reconciling`,OU=(e,t,n,r)=>{if(!r||r.sessionID!==t)return null;let i=e.getQueueForScope(r),a=n?i.find(e=>e.queueItemID===n||e.id===n):i[0];return!a||a.owner?.state!==`bound`||E(a.owner)!==E(r)?null:{scope:r,item:a}};function kU(e,t={}){if(!XH())return Promise.resolve();let n=M.getState(),r=t.scope??TU(e),i=t.manual===!0||t.delivery===`steer`;if(!r||r.transportIdentity!==u())return Promise.resolve();let a=OU(n,e,t.queueItemID,r??void 0);if((i||!t.scope)&&!rU.has(lU(r))){let i=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),o=n.getQueueForScope(r),s=t.queueItemID?i.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):i[0];(a||s)&&!i.some(DU)&&!o.some(DU)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},r),a=OU(n,e,t.queueItemID,r))}if(!a||a.scope.transportIdentity!==u())return Promise.resolve();let o=a.scope;if(o.deliveryTarget?.kind===`assistant`)return Promise.resolve();let s=a.item,c={queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID},l=cU(o,c),d=nU.get(l);if(d)return d;if(rU.has(lU(o))||!EU(s.status,i)||s.status===`retrying`&&!i&&(s.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return nU.set(l,m),rU.set(lU(o),m),sU(),(async()=>{try{let r=yU(e,o.directory),a=YU(e),l=a?.queueItemID===s.queueItemID?a.messageID:pe(`msg`,r),d=n.beginQueueItemDispatch(o,c,l,i);if(!d)return;s=d;let p={queueItemID:d.queueItemID,operationID:d.operationID,messageID:d.messageID};if(!y()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+tU(d.attemptCount+1));return}let m=f(),h=SU([d]);if(!h)return;let g=wU(e,d.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(o,p,Date.now()+tU(d.attemptCount+1));return}if(!XH()){n.markQueueItemPreDispatchRetry(o,p,Date.now()+tU(d.attemptCount+1));return}let _=()=>{let e=M.getState().getQueueForScope(o)[0];return u()===o.transportIdentity&&f()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&E(e.owner)===E(o)},v=()=>{let e=M.getState().getQueueForScope(o)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&E(e.owner)===E(o)},b=t=>{_()&&t===p.messageID&&(M.getState().confirmQueueItem(o,p),lW(e))};try{await CU(e,h,g,{directory:o.directory,delivery:t.delivery,onSendConfirmed:b}),b(p.messageID)}catch(e){if(!v())return;let t=lC(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(o,p,Date.now()+tU(d.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(o,p):n.markQueueItemReconciling(o,p)}}finally{let e=!1;nU.get(l)===m&&(nU.delete(l),e=!0),rU.get(lU(o))===m&&(rU.delete(lU(o)),e=!0),e&&sU(),p?.()}})(),m}async function AU(e,t=f()){if(!XH())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+$H),r=new AbortController,i=setTimeout(()=>r.abort(),Math.max(0,n-Date.now())),a=null;try{a=await gw(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:r.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{a=null}finally{clearTimeout(i)}let o=M.getState().getQueueForScope(e.scope)[0];o?.queueItemID===e.item.queueItemID&&o.operationID===e.item.operationID&&o.messageID===e.item.messageID&&E(o.owner)===E(e.scope)&&u()===e.scope.transportIdentity&&f()===t&&(a?.some(t=>t.info.id===e.item.messageID)?(OG(e.scope.sessionID,e.item.messageID),M.getState().confirmQueueItem(e.scope,{queueItemID:o.queueItemID,operationID:o.operationID,messageID:o.messageID})):M.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var jU=(e,t)=>{JS({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),M.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function MU(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=K.useSyncExternalStore(YH,qH,qH),r=M(e=>e.queuedMessages),i=Um(e=>e.runsByOriginalSessionID),a=$(e=>e.queueAbortBlocks),o=K.useSyncExternalStore(s,u,u),c=K.useSyncExternalStore(s,m,m),l=K.useSyncExternalStore(dU,()=>oU,()=>oU),d=K.useMemo(()=>Object.values(r).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===o?[t]:[]}),[o,r]),p=BI(d),h=VI(),g=yL(),_=K.useMemo(()=>d.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[d]),v=K.useRef(d);v.current=d;let y=K.useSyncExternalStore(K.useMemo(()=>e=>_?nf(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),K.useMemo(()=>()=>_?rf(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=K.useCallback(e=>h(e),[h]),x=K.useCallback(e=>gU(gf(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=K.useState(0),w=K.useRef(new Map),T=K.useRef(new Set);K.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let s=new Set,l=new Set;for(let[t,n]of a)n.expiresAt>e&&l.add(t);for(let e of vU(i,c))s.add(e);let u=xU({queuedMessages:r,activeTransportIdentity:o,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:s,blockedScopeKeys:l,now:e});for(let e of u.recoverOperations)M.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of u.dispatchScopes)M.getState().getQueueForScope(e)[0]&&kU(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of u.resolveOperations)jU(e.scope,e.item);for(let e of u.queryOperations){T.current.add(e.key);let t=AU(e,f()).finally(()=>{T.current.delete(e.key),iU.delete(t),C(e=>e+1)});iU.add(t)}let d=bU(a,e),p=u.nextWakeAt?d?Math.min(u.nextWakeAt,d):u.nextWakeAt:d,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[c,o,g,l,t,n,r,a,i,p,y,b,x,S])}function NU(){return!1}var PU={server:bV(),queue:JB(),status:e=>Oz(R).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:rz,lateCommit:iz,capture:()=>({transportIdentity:u(),generation:f()}),current:e=>e.transportIdentity===u()&&e.generation===f(),quiesce:async()=>{await mU()},flush:async()=>{y()},prepare:w,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},FU=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),IU=(e={})=>{let t={...PU,...e},n=FU(),r=0,i,a,o,c=500,l,u=!1,d=new Set,f=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;JH(r?`legacy-enabled`:`blocked`),O(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&ne(t.capture().transportIdentity),d.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},c),c=Math.min(3e4,c*2)},h=e=>{f({ownership:`blocked`,migration:`idle`,frozen:!0,admission:`frozen`,error:e}),m()},g=(e,n,r,i,a)=>{t.current(e)&&(n.authority===`active`||n.authority===`paused`||r===`late`?f({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):f({ownership:`probing`,migration:i.status===`error`||i.status===`degraded`?`error`:`staging`,frozen:!0,admission:`frozen`,status:n,importState:i,error:a}),m())},_=async e=>{await t.quiesce();let n=t.prepare(e.transportIdentity,t.resolveDirectory);return n.ok?(await t.flush(),t.current(e)):(h(Error(`unresolved-legacy-queue-directories:${n.unresolvedSessionIDs.join(`,`)}`)),!1)},v=async()=>{let e=t.capture();i?.abort(),i=new AbortController;try{if(await t.server.refresh(),!t.current(e)||i.signal.aborted)return n;let r=await t.status(i.signal);return!t.current(e)||i.signal.aborted?n:r.capability?r.protocol!==void 0&&r.protocol!==4?(h(Error(`protocol-unsupported`)),n):(f({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await _(e)?r.authority===`active`||r.authority===`paused`?(f({ownership:r.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:r,error:void 0}),await b(e,r,`late`),n):(f({migration:`staging`}),await b(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&r.status===501?(f({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>l?(u=!0,l):(l=v().finally(()=>{l=void 0,u&&(u=!1,y())}),l),b=async(e,n,r)=>{let a=await sV({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>f({importState:e})}).run(i?.signal);if(t.current(e)){if(f({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}f({migration:r===`activation`?`activating`:`late-importing`});try{let o=r===`activation`?await t.activate(a.importID,{requestID:`shadow-activate:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal}):await t.lateCommit(a.importID,{requestID:`shadow-late:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal});if(!t.current(e))return;c=500,f({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...a,activationEpoch:o.activationEpoch}})}catch(i){if(!t.current(e))return;let o=await Az(R).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){c=500,f({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...a,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,a,i);return}g(e,n,r,a,i)}}},x,S=()=>{i?.abort(),i=void 0,clearTimeout(o),o=void 0,a?.(),a=void 0};return{subscribe:e=>(d.add(e),()=>d.delete(e)),getSnapshot:()=>n,start:()=>{r++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=s(e=>{p(e)&&(i?.abort(),f(FU()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,r||S()},0))},refresh:y}},LU,RU=()=>LU??=IU(),zU=t({confirmQueueAbortOptimistic:()=>lW,getQueueAbortOptimisticPresentation:()=>YU,getQueueAbortOptimisticRevision:()=>JU,inspectQueueAbortOptimisticTranscript:()=>aW,isQueueItemSendPendingByAbortOptimistic:()=>XU,planQueueAbortOptimisticReconcile:()=>oW,promoteQueueHeadOnAbort:()=>hW,reconcileQueueAbortOptimistic:()=>mW,rollbackQueueAbortOptimistic:()=>cW,subscribeQueueAbortOptimistic:()=>qU,useQueueAbortOptimisticReconcile:()=>gW}),BU=new Set([`queued`,`retrying`]),VU=new Set([`sending`,`reconciling`]),HU=new Set([`failed`,`unresolved`]),UU=new Map,WU=new Set,GU=0,KU=()=>{GU+=1;for(let e of WU)e()},qU=e=>(WU.add(e),()=>{WU.delete(e)}),JU=()=>GU,YU=e=>UU.get(e),XU=(e,t)=>UU.get(e)?.queueItemID===t,ZU=(e,t)=>{let n;for(let r of Ff(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},QU=e=>{let t=e?.[0];if(!(!t||!BU.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},$U=(e,t)=>{let n=M.getState(),r={state:`bound`,transportIdentity:u(),directory:t,sessionID:e};return QU(n.getQueueForScope(r))??QU(n.getQueueForScope(j(e)))},eW=(e,t)=>{let n=RU().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:QU(bV().getScope({transportIdentity:u(),directory:t,sessionID:e})?.items)},tW=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},nW=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,rW=(e,t,n)=>{try{let r=U();return r?r.getTranscript(G(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},iW=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=rW(t,n,r);return i.length!==0&&i.some(e=>!nW(e))},aW=(e,t)=>{let n=!1,r=!1;for(let i of t){let t=typeof i.id==`string`?i.id:``,a=i.optimistic!==!0;t===e&&a&&(n=!0),i.role===`user`&&t&&t>e&&a&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},oW=(e,t,n)=>{let r=e?.messageID;return e&&(BU.has(e.status)||VU.has(e.status))?r&&n&&r!==n?`rebind`:VU.has(e.status)||t.hasPinnedMessage?`confirm`:`keep`:e&&HU.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},sW=e=>{let t=UU.get(e);if(t)return UU.delete(e),KU(),t},cW=e=>{sW(e)},lW=e=>{sW(e)},uW=e=>{if(e.source===`server`){let t=bV().getScope({transportIdentity:u(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status,messageID:t.messageID}:null}let t={state:`bound`,transportIdentity:u(),directory:e.directory,sessionID:e.sessionID},n=k(M.getState(),t).find(t=>t.queueItemID===e.queueItemID)??k(M.getState(),j(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},dW=e=>{let t=Ff(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!iW(t,e.sessionID,e.directory)}));return aW(e.messageID,t)},fW=(e,t)=>{let n=UU.get(e);!n||!t||n.messageID===t||(UU.set(e,{...n,messageID:t}),KU())},pW=(e,t,n)=>{if(t===`confirm`)lW(e.sessionID);else if(t===`rollback`)cW(e.sessionID);else if(t===`rebind`&&n?.messageID){fW(e.sessionID,n.messageID);let t=UU.get(e.sessionID);if(!t)return;let r=oW(uW(t),dW(t),t.messageID);if(r===`rebind`)return;pW(t,r,uW(t))}},mW=e=>{let t=e?[UU.get(e)].filter(e=>!!e):[...UU.values()];for(let e of t){let t=uW(e);pW(e,oW(t,dW(e),e.messageID),t)}},hW=e=>{if(!e||UU.has(e))return UU.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=eW(e,t),r=n?void 0:$U(e,t),i=n??r;if(!i)return null;let a=tW(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=(typeof i.messageID==`string`&&i.messageID.startsWith(`msg_`)?i.messageID:void 0)??pe(`msg`,ZU(e,t)),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:s,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,source:n?`server`:`legacy`};return UU.set(e,c),KU(),c};function gW(){let e=(0,H.c)(6),t=K.useSyncExternalStore(qU,JU,JU),n=M(wW),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],K.useEffect(CW,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],K.useEffect(bW,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),K.useEffect(_W,a)}function _W(){return nf([...UU.values()].map(yW),vW)}function vW(){mW()}function yW(e){return{directory:e.directory,sessionID:e.sessionID}}function bW(){let e=bV().subscribe(SW),t=s(xW);return()=>{e(),t()}}function xW(){for(let e of[...UU.keys()])cW(e)}function SW(){mW()}function CW(){mW()}function wW(e){return e.queuedMessages}var TW=[`You distill a large task description (a prompt, plan, or assignment) into the COMPLETION CRITERIA a progress auditor will judge against.`,`Return ONLY the criteria text — no preamble, no headers, no markdown fences.`,`Capture: the end goals, what must exist and work when the task is fully done, and how each major part is verified. Omit implementation steps and how-to details.`,`Preserve verbatim any file paths, commands, and identifiers that define the task — especially ones from the opening lines.`,`Stay under 4000 characters.`,`Write in the same language as the task text. Ignore any other language preferences or personalization — only the task text decides the language.`].join(`
410
- `);async function EW(e){try{let{currentProviderId:t,currentModelId:n}=Up.getState(),r=await _(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:TW,restrictToPreferredProvider:!0,...t?{preferredProviderID:t}:{},...n?{preferredModelID:n}:{}})});if(!r.ok)return null;let i=await r.json().catch(()=>null);return(typeof i?.text==`string`?i.text.trim():``)||null}catch{return null}}var DW=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],OW=5e3,kW=e=>!!e&&typeof e==`object`&&!Array.isArray(e),AW=e=>typeof e==`string`&&DW.includes(e);function jW(e){let t=e?.metadata;if(!kW(t))return null;let n=t.openchamber;if(!kW(n))return null;let r=n.goal;if(!kW(r))return null;let i=typeof r.id==`string`?r.id:``,a=typeof r.objective==`string`?r.objective.trim():``,o=r.objectiveFile===!0;if(!i||!a&&!o||!AW(r.status))return null;let s=typeof r.tokenBudget==`number`&&Number.isFinite(r.tokenBudget)&&r.tokenBudget>0?Math.floor(r.tokenBudget):null,c=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;return{id:i,objective:a.slice(0,OW),objectiveFile:o,status:r.status,tokenBudget:s,tokensUsed:c(r.tokensUsed),turnsUsed:c(r.turnsUsed),blockedStreak:c(r.blockedStreak),note:typeof r.note==`string`?r.note:``,statusReason:typeof r.statusReason==`string`?r.statusReason:``,lastAccountedMessageID:typeof r.lastAccountedMessageID==`string`?r.lastAccountedMessageID:``,createdAt:typeof r.createdAt==`number`?r.createdAt:0,updatedAt:typeof r.updatedAt==`number`?r.updatedAt:0}}function MW(e){if(!Number.isFinite(e)||e<=0)return`0`;if(e>=1e9){let t=e/1e9;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}B`}if(e>=1e6){let t=e/1e6;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}M`}if(e>=1e3){let t=e/1e3;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}K`}return String(Math.floor(e))}function NW(e){if(!Number.isFinite(e)||e<0)return`0s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60){let e=t%60;return e>0?`${n}m${e}s`:`${n}m`}let r=Math.floor(n/60),i=n%60;return i>0?`${r}h${i}m`:`${r}h`}var PW=e=>!!e&&typeof e==`object`&&!Array.isArray(e),FW=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,IW=(e,t,n)=>LC(e,t,e=>{let t=PW(e.openchamber)?e.openchamber:{},r=n(PW(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),LW=async(e,t)=>{try{return(await _(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},RW=e=>{_(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function zW(e){try{let t=await _(`/api/goals/objective/${encodeURIComponent(e)}`);if(!t.ok)return null;let n=await t.json().catch(()=>null);return typeof n?.content==`string`?n.content:null}catch{return null}}var BW=`
411
-
412
- [… objective trimmed for the auditor — the full text was delivered in the chat message …]
413
-
414
- `,VW=async e=>{if(e.length<=5e3)return e;let t=await EW(e);if(t)return t.slice(0,OW);let n=Math.max(0,Math.floor((OW-93)/2)),r=Ht.getState().dictionary;return nD.error(Ut(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${BW}${e.slice(-n)}`};async function HW(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await VW(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await LW(e,a),c=Date.now();await IW(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:FW(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function UW(e,t){await IW(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function WW(e,t,n){n===`paused`&&(hW(e),ww(e)),await IW(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function GW(e,t){let n=!1;await IW(e,t,e=>(n=e?.status===`active`,null)),RW(e),n&&(hW(e),ww(e))}var KW=`<system-reminder>`,qW=`</system-reminder>`,JW=e=>{let t=e.trim();return t?t.startsWith(KW)&&t.endsWith(qW)?t:`${KW}\n${t}\n${qW}`:``},YW=(e,t=m())=>`${t}\n${e}`,XW=(e,t)=>{let n=ZW.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(YW(e))??n.sessionMemoryState.get(e)},ZW=De()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??YW(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),QW=De((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),$W=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function eG(e,t){if(e){if(!e.degraded&&e.cwd)return $W(e.cwd);if(e.worktreeRoot)return $W(e.worktreeRoot);if(e.cwd)return $W(e.cwd)}return t?$W(t):null}function tG(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function nG(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function rG(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?$W(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=$W(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var iG=`openchamber.session-switch.start`,aG=`openchamber.session-switch.highlight-painted`,oG=`openchamber.session-switch.content-committed`,sG=`data-openchamber-session-switch-highlight-ms`,cG=`data-openchamber-session-switch-content-ms`,lG=`openchamber.session-switch.highlight-latency`,uG=`openchamber.session-switch.content-latency`,dG=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,fG=()=>dG()&&performance.getEntriesByName(iG,`mark`).length>0,pG=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},mG=(e=!1)=>{dG()&&(!e&&performance.getEntriesByName(iG,`mark`).length>0&&performance.getEntriesByName(oG,`mark`).length===0||(performance.clearMarks(iG),performance.clearMarks(aG),performance.clearMarks(oG),performance.clearMeasures(lG),performance.clearMeasures(uG),typeof document<`u`&&(document.documentElement.removeAttribute(sG),document.documentElement.removeAttribute(cG)),performance.mark(iG)))},hG=()=>{if(!fG())return;performance.mark(aG),performance.measure(lG,iG,aG);let e=performance.getEntriesByName(lG,`measure`).at(-1);e&&pG(sG,e.duration)},gG=()=>{if(!fG())return;performance.mark(oG),performance.measure(uG,iG,oG);let e=performance.getEntriesByName(uG,`measure`).at(-1);e&&pG(cG,e.duration)},_G={revision:0,sessionId:null},vG=new Set,yG=e=>{_G={revision:_G.revision+1,sessionId:e};for(let e of vG)e(_G);return _G},bG=()=>_G,xG=e=>(vG.add(e),()=>vG.delete(e)),SG=6e3;function CG(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:he(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:he(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:he(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:he(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:he(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function wG(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function TG(e,t){if(!e)return;let n=wG(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function EG(e){if(!Xe(e))return;let{toast:t}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2])),{useI18nStore:n,formatMessage:r}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:i}=n.getState();t.error(r(i,`chat.revert.toast.busy`))}async function DG(e){let t=e.directory??void 0;await nw(e.sessionId,t);let n=kG(e.sessionId,e.onSendConfirmed),r=e.content;if(e.inputMode===`shell`){let r=e.messageID??he(`msg`);return B.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let i=ye(e.content);if(i){let a=i.commandName.toLowerCase(),o=i.argumentsText,s=t??Fe.getState().currentDirectory??null,c=u(),l=ua(s,c),d=Mo(s,c),f=R.getQueryState(l.queryKey),p=R.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(fa(s,c)):R.fetchQuery({...l,staleTime:1/0}),h?Promise.resolve(Po(R,s,c)):R.fetchQuery({...d,staleTime:1/0})]);if(u()!==c)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===a)?void 0:g.find(e=>e.name.toLowerCase()===a);if(v?.isBuiltIn===!1)r=`[command:${v.reference??v.name}]${o?` ${o}`:``}`;else if(v)return pw({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>B.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:o,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return pw({sessionId:e.sessionId,content:r,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:async n=>{let i=await B.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:r,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t});await GS({sessionId:e.sessionId,directory:t,optimisticID:n,inboxID:i,text:r,delivery:e.delivery})}})}function OG(e,t){_(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function kG(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{OG(e,r)}}}}var AG=e=>{let t=e;return L(t.directory??null)??L(t.project?.worktree??null)},jG=vt(),MG=`oc.chatInput.lastDraftTarget`,NG=()=>{try{let e=jG.getItem(MG);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:L(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},PG=e=>{try{jG.setItem(MG,JSON.stringify(e))}catch{}},FG=Is,IG=e=>{if(e)return QW.getState().getAttachment(e)},LG=(e,t,n)=>{if(!e)return null;let r=eG(IG(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return L(i);if(n?.includeRuntimeMemory!==!1){let t=UG.get(WG());if(t?.sessionId===e&&t.directory)return L(t.directory)}let a=Mf().find(t=>t.id===e);return a?AG(a):null},RG=e=>{let t=Mf().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},zG=async(e,t)=>{await Up.getState().activateDirectory(L(e),t)},BG={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},VG=new Map,HG=0,UG=new Map,WG=e=>(e??m()).trim()||`default`,GG=e=>({...e}),KG=(e,t)=>{let n=UG.get(e);UG.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?GG(n.draft):{...BG},...t})},qG=(e,t)=>{let n=oa.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Is(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},JG=async(e,t)=>{if(!e)return;let n=qG(e,t);n&&await NA(n)&&await nA(e)},YG=(e,t)=>{let n=oa.getState(),r=Is(n.projects,t,e);r&&n.moveProjectToTop(r.id)},XG=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,ZG=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,QG=(e,t)=>ZG(e,t)&&XG(di.getState().captureDraftRuntime(),t.runtime);async function $G(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?CG({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return KG(WG(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function eK(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return KG(WG(),{draft:n}),{newSessionDraft:n}})}async function tK(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=WG(),t=s.draftID,n=o,KG(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=di.getState().captureDraftRuntime(),o=se(a,t),s=di.getState().getDraft(o);return{token:n,draftID:t,draft:GG(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function nK(e){$.setState(t=>{let n=t.newSessionDraft;if(QG(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=UG.get(e.runtimeMemoryKey);return r&&ZG(r.draft,e)&&KG(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=UG.get(e.runtimeMemoryKey);t&&ZG(t.draft,e)&&KG(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function rK(e){let t=UG.get(e.runtimeMemoryKey);t&&ZG(t.draft,e)&&KG(e.runtimeMemoryKey,{draft:{...BG}})}async function iK(e,t,n){if(!e.source)return null;let r;try{r=await di.getState().finalizeDraftOwnership({source:e.source.key,destination:ge(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function aK(e,t){let n=t??e.directory??null;n&&Tf(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function oK(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=L(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!QG(l,r);aK(e,c);let f=Up.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&gk.getState().addSessionToFolder(t,a,e.id)}return d||(PG({projectId:o??null,directory:c}),zG(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Ms.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Ms.getState().saveSessionAgentSelection(e.id,p),Ms.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Ms.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),YG(c,$.getState().availableWorktreesByProject),u&&Dt(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>NN);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&rK(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function sK(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await Ek(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await JG(t,n);let r=t??B.getDirectory();return{directory:L(r),projectId:n}}async function cK(e,t){let n=await tK(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await sK(r),o=a??B.getDirectory(),s=await IC(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&mw({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await oK(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return nK(n),null}}async function lK(e){let t=await cK(e);return t?(await iK(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var uK=2,dK=300;async function fK(e){let{useI18nStore:t,formatMessage:n}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:r}=t.getState();return Error(n(r,e))}async function pK(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=Up.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??he(`msg`),h=CG({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await tK(h);if(!g)throw await fK(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await sK(_),f=await B.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=b()?.conversations;if(!v?.createWithPrompt)throw await fK(`chat.chatInput.toast.messageSendFailed`);let y=d??B.getDirectory()??``,x=ZS(y,{bootstrap:!1}),S=()=>XG(di.getState().captureDraftRuntime(),g.runtime),C;for(let e=0;e<=uK;e++){e>0&&await new Promise(e=>setTimeout(e,dK));try{if(C=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!C||C.ok||C.phase!==`unavailable`||(C=void 0,e===uK))break}catch{if(e===uK)break}}if(!C)throw nK(g),di.getState().setPendingInputText(t,`replace`),await fK(`chat.chatInput.toast.messageSendFailed`);if(C.ok){let e=C.session,t=d??e.directory??null,i=t??y;aK(e,t);let a=i===y?x:ZS(i,{bootstrap:!1});TG(e.id,h);let s=await oK(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await iK(g,e.id,`consume`),OG(e.id,m),s.selected&&ah(e.id),Cw({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:S}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!C.ok){let e=C.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw nK(g),di.getState().setPendingInputText(t,`replace`),await fK(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=C,i=e.session,a=d??i.directory??null,s=await oK(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await gw(i.id,m,a,{isCurrent:S});if(e&&S()){await iK(g,i.id,`consume`),OG(i.id,m),s.selected&&ah(i.id),_w(ZS(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await iK(g,i.id,`preserve`),di.getState().setPendingInputText(t,`replace`),await fK(`chat.chatInput.toast.sendStatusUnknown`)}throw await iK(g,i.id,`preserve`),di.getState().setPendingInputText(t,`replace`),await fK(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw nK(g),e}}var mK=`oc.worktreeMap`,hK=()=>{try{let e=vt().getItem(mK);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},gK=e=>{try{vt().setItem(mK,e)}catch{}},_K=e=>{let t=[];for(let n of e.values())t.push(...n);return t},vK=hK(),$=De()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...BG},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:_K(vK),availableWorktreesByProject:vK,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,r,i)=>{yG(n),v(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(mG(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),di.getState().setActiveAttachmentDraft(n?ge({transportIdentity:u()},n):null);let s=WG();VG.set(s,n);let c=Fe.getState(),l=LG(n,e=>t().worktreeMetadata.get(e)),d=B.getDirectory()??c.currentDirectory??null,f=(r?L(r):null)??l??d,p=oa.getState(),m=f?Is(p.projects,t().availableWorktreesByProject,f):null;e({currentSessionId:n,currentSessionDirectory:n?f??null:null}),KG(s,{sessionId:n,directory:f??null}),a!==n&&yt.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?f??null:null}),n&&i?.skipMessageFetch!==!0&&Vw(n,f);try{f&&c.currentDirectory!==f&&c.setDirectory(f,{showOverlay:!1}),m&&i?.preserveActiveProject!==!0&&p.activeProjectId!==m.id&&p.setActiveProjectIdOnly(m.id),B.setDirectory(f??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!XW(e)?.isStreaming){let t=Ff(e);t.length>0&&ZW.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(QA(n),zF(f??``,n))},prepareForRuntimeSwitch:n=>{let r=WG(n),i=Fe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Df(i):null;SP({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),VG.set(r,t().currentSessionId),KG(r,{sessionId:a,directory:i,draft:GG(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=WG(t),r=UG.get(n),i=r?.sessionId??VG.get(n)??null;v(i);let a=r?.draft?GG(r.draft):{...BG},o=r?.directory??null;o&&Fe.getState().setDirectory(o,{showOverlay:!1}),e({currentSessionId:i,currentSessionDirectory:i?o:null,newSessionDraft:i?{...BG}:a,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),di.getState().setActiveAttachmentDraft(i?ge({transportIdentity:u()},i):a.open&&a.draftID?se({transportIdentity:u()},a.draftID):null),i?zF(o??B.getDirectory()??``,i):zF(``,``)},openNewSessionDraft:n=>{if(uR.getState().shouldBlockNewSessionDraftOpen())return;let r=t().newSessionDraft;if(r.draftSubmitting||r.draftEstablishing)return;t().clearStagedMessageEdit();let i=oa.getState(),a=i.projects,o=t().availableWorktreesByProject,s=L(t().currentSessionDirectory??null),c=L(Fe.getState().currentDirectory??null),l=NG(),d=n?.directoryOverride===void 0?null:L(n.directoryOverride),f=FG(a,o,d),p=n?.ensureProjectForDirectory&&d&&!f?i.addProject(d):null;p&&(i=oa.getState());let m=i.projects,h=i.getActiveProject(),g=n?.selectedProjectId?m.find(e=>e.id===n.selectedProjectId)??null:null,_=h||(i.activeProjectId?m.find(e=>e.id===i.activeProjectId)??null:m[0]??null),y=l?.projectId?m.find(e=>e.id===l.projectId)??null:null,b=FG(m,o,l?.directory??null),x=FG(m,o,s),S=FG(m,o,c),C=g||(d===null?x||(c?S:b??y??_):p??f),w=d===null?g?L(g.path??null):s||c||(l?.directory?l.directory:L(C?.path??null)):d;PG({projectId:C?.id??null,directory:w}),C&&i.activeProjectId!==C.id&&i.setActiveProjectIdOnly(C.id);let T=Ee({projectId:C?.id??null,directory:w}),E=se({transportIdentity:u()},T),D=di.getState().getDraft(E),O={open:!0,draftID:T,selectedProjectId:C?.id??null,directoryOverride:w,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:L(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:r.open&&r.draftID===T?r.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},k=t().currentSessionId,A=t().currentSessionDirectory;e({newSessionDraft:{...O},currentSessionId:null,currentSessionDirectory:null,error:null}),v(null),yt.getState().setActiveMainTab(`chat`),k&&yt.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:k,previousDirectory:A,nextSessionId:null,nextDirectory:null}),KG(WG(),{sessionId:null,directory:w,draft:O}),di.getState().setActiveAttachmentDraft(E),D||di.getState().clearAttachedFiles(),n?.initialPrompt&&di.getState().setPendingInputText(n.initialPrompt);let j=L(C?.path??null)??w,ee=C?L(j):null,te=O.draftID,ne=u();zG(j,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=L(Up.getState().activeDirectoryKey);!e.open||e.draftID!==te||u()!==ne||!ee||n!==ee||Up.getState().applyDefaultModelAgentSelection({projectDefaultModel:C?.defaultModel})}),w&&w!==Fe.getState().currentDirectory&&Fe.getState().setDirectory(w)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),KG(WG(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=L(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),zG(r,{source:`setNewSessionDraftTarget`}),r&&r!==Fe.getState().currentDirectory&&Fe.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=SG)=>{let r=_e(),i=E(t);return e(e=>{let a=new Map(e.queueAbortBlocks);return a.set(i,{token:r,expiresAt:Date.now()+n,directory:t.directory,sessionID:t.sessionID}),{queueAbortBlocks:a}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=E(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),releaseQueueAbortBlocksForServerIdle:(t,n)=>e(e=>{let r,i=Date.now();for(let[a,o]of e.queueAbortBlocks)o.directory===t&&o.sessionID===n&&(o.expiresAt<=i||(r||=new Map(e.queueAbortBlocks),r.delete(a)));return r?{queueAbortBlocks:r}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Ff(r);if(i.length===0)return null;let a=GA(i,e=>If(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(VA(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?QW.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):QW.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=L(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),zG(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Fe.getState().currentDirectory&&Fe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:L(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:L(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:L(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,p=d?.sessionId??t().currentSessionId,m=d?.commitStagedMessageEdit&&f&&f.sessionId===p?f:null,h=d?.sessionId??t().currentSessionId;if(h){let n=new Map(t().pendingChangesBarDismissed);n.delete(h),e({pendingChangesBarDismissed:n})}let g=t().newSessionDraft,_=typeof a==`string`&&a.trim().length>0?a.trim():void 0,v=u!==`shell`&&n.trim().length>0?dR.getState().consume():{armed:!1,objectiveOverride:null},y=v.armed;if(y){let e=yt.getState(),t=JW(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let x=(e,t)=>{if(!y)return;let r=yt.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=v.objectiveOverride?.trim()||n;HW(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&g?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&b()?.conversations?.createWithPrompt){await pK({content:n,providerID:r,modelID:i,agent:_,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:x});return}let e=d?.messageID??g.pendingUserMessage?.info.id??he(`msg`),a=CG({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:_,text:n,attachments:o,additionalParts:g.syntheticParts?.length?[...c||[],...g.syntheticParts]:c,agentMentionName:s}),f=await cK({providerID:r,modelID:i,agent:_,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;ah(p.sessionId);let v=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await DG({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:v,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await iK(m,p.sessionId,`consume`)}catch(e){throw await iK(m,p.sessionId,`preserve`),e}YG(p.directory,t().availableWorktreesByProject),x(p.sessionId,p.directory);return}let S=d?.sessionId??t().currentSessionId,C=S?Ms.getState().getSessionAgentSelection(S):null,w=Up.getState().currentAgentName,T=_||C||w||void 0;if(S&&Ms.getState().saveSessionModelSelection(S,r,i),S&&T&&(Ms.getState().saveSessionAgentSelection(S,T),Ms.getState().saveAgentModelForSession(S,T,r,i),Ms.getState().saveAgentModelVariantForSession(S,T,r,i,l)),S){let e=ZW.getState(),t=XW(S);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(YW(S),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),ZW.setState({sessionMemoryState:n})}}let E=S?L(d?.directoryHint)??L(t().getDirectoryForSession(S)):null;S&&!d?.ticket&&ah(S);let D=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(m)try{await Fw(m.sessionId,m.messageId,{directory:E??void 0}),t().stagedMessageEdit===m&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(m.sessionId,m.messageId),e}try{await DG({sessionId:S||``,directory:E,content:n,providerID:r,modelID:i,agent:T,agentMentionName:s,variant:l,inputMode:u,files:D,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{m&&t().endMessageEditCommit(m.sessionId,m.messageId)}YG(E,t().availableWorktreesByProject),S&&x(S,E)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await IC(n,r??B.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),KG(WG(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&gk.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),KG(WG(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>YC(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await YC(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>QC(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await QC(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await ew(e,t)},requestSessionSmartTitle:async e=>{await tw(e)},shareSession:async e=>rw(e),unshareSession:async e=>iw(e),revertToMessage:async(e,t,n)=>{try{await kw(e,t,n?.directory)}catch(e){throw await EG(e),e}},editMessagePreservingChanges:async(t,n,r)=>{await jw(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Ff(e),r=jf().find(t=>t.id===e)?.revert?.messageID,i=Zs(n,r);if(!i)return;let a=If(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;try{await t().revertToMessage(e,i.id)}catch(e){if(Xe(e))return;throw e}let{toast:s}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2])),{useI18nStore:c,formatMessage:l}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await Dt(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>gS);return{unrevertSession:e}},void 0);try{await t(e)}catch(e){throw await EG(e),e}let{toast:n}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2])),{useI18nStore:r,formatMessage:i}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=jf().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=Qs(Ff(e),r);if(i){try{await t().revertToMessage(e,i.id,{skipRedoPush:!0})}catch(e){if(Xe(e))return;throw e}let{toast:n}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2])),{useI18nStore:r,formatMessage:a}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}try{await Rw(e)}catch(e){throw await EG(e),e}let{toast:a}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2])),{useI18nStore:o,formatMessage:s}=await Dt(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-DJczmczv.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([3,1,4,2,5])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=RG(n),s=++HG;try{let a=i?.directory??t().getDirectoryForSession(n)??B.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await zw(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=RG(n),a=++HG;try{let r=t().getDirectoryForSession(n)??B.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await zw(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await Dt(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([0,1,2]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=L(e);return t?Mf().filter(e=>AG(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=LG(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?rO(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:LG(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Ff(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Ms.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Ff(e);jf().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=L(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),KG(WG(),{sessionId:n,directory:i}))}}));XN((e,t)=>{$.getState().setCurrentSession(e,t)});var yK=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==yK&&(yK=t,gK(t))}});function bK(e){return e.settingsReturnTo?e.settingsReturnTo:e.activeTab===`settings`?null:{tab:e.activeTab,secondary:e.secondary}}function xK(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function SK(e){return e.length>1?e.slice(0,-1):[]}function CK(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function wK(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var TK={activeTab:`projects`,secondary:null,settingsReturnTo:null},EK=0,DK=null,OK=e=>{let t=++EK;return DK={generation:t,sessionId:e.sessionId,directory:L(e.directory)??null},t},kK=e=>{let t=DK;return t&&t.generation===EK&&t.sessionId===e.sessionId&&t.directory===(L(e.directory)??null)?(DK=null,`internal`):(DK=null,`external`)},AK=()=>{EK+=1,DK=null},jK=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&L(n)===L(e.directory)?AK():OK(e),t.setCurrentSession(e.sessionId,e.directory??null,{preserveActiveProject:e.preserveActiveProject})},MK=De((e,t)=>({...TK,setActiveTab:t=>{AK(),e({activeTab:t,secondary:null,settingsReturnTo:null})},openSettingsFromCurrent:()=>{AK(),e(e=>({activeTab:`settings`,secondary:null,settingsReturnTo:bK(e)}))},restoreSettingsReturnTo:()=>{let n=t().settingsReturnTo;return n?(AK(),e({activeTab:n.tab,secondary:n.secondary,settingsReturnTo:null}),n):null},openSession:t=>{e({secondary:{kind:`chat`,routes:[PK(t,`root`)]}}),jK(t)},pushSession:t=>{e(e=>{let n=PK(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?xK(e.secondary.routes,n):[n]}}}),jK(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=SK(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=MK.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&jK(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=wK(e.secondary.routes,PK(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:CK(e.secondary.routes,PK(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{AK(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{AK(),Wt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{AK(),e({secondary:{kind:`instances`}})},pushAssistantSettings:t=>e(e=>e.secondary?.kind!==`assistant`||e.secondary.settingsAssistantID===t?e:{secondary:{...e.secondary,settingsAssistantID:t}}),popAssistantSettings:()=>e(e=>e.secondary?.kind!==`assistant`||!e.secondary.settingsAssistantID?e:{secondary:{kind:`assistant`}}),closeSecondary:()=>{AK(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{AK(),e({...TK})}})),NK=1,PK=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${NK++}`,sessionId:e.sessionId,directory:e.directory??null}),FK=e=>!dt()||pt()?!1:(MK.getState().pushSession(e),!0);export{kH as $,vs as $a,Em as $i,Jk as $n,XC as $r,XL as $t,MW as A,gd as Aa,cv as Ai,lM as An,wi as Ao,cE as Ar,sR as At,YH as B,zs as Ba,Jh as Bi,VA as Bn,QC as Br,JP as Bt,JW as C,U as Ca,Sv as Ci,RN as Cn,pa as Co,nD as Cr,xz as Ct,WW as D,Ed as Da,vv as Di,pN as Dn,Si as Do,XE as Dr,lR as Dt,UW as E,kd as Ea,yv as Ei,mN as En,oa as Eo,qE as Er,dR as Et,qU as F,Xs as Fa,G_ as Fi,qj as Fn,di as Fo,OT as Fr,vI as Ft,HH as G,Is as Ga,dh as Gi,NA as Gn,Ow as Gr,YL as Gt,MU as H,Ls as Ha,kh as Hi,LA as Hn,ZC as Hr,gL as Ht,gW as I,qs as Ia,v_ as Ii,Wj as In,Pn as Io,DT as Ir,zF as It,UH as J,Es as Ja,$m as Ji,MA as Jn,Dw as Jr,fL as Jt,WH as K,Ms as Ka,th as Ki,RA as Kn,NC as Kr,WP as Kt,RU as L,Rs as La,__ as Li,QA as Ln,In as Lo,ET as Lr,VF as Lt,JU as M,nd as Ma,av as Mi,oM as Mn,mi as Mo,lE as Mr,LI as Mt,XU as N,rd as Na,K_ as Ni,nM as Nn,hi as No,BT as Nr,RL as Nt,OW as O,W as Oa,_v as Oi,kM as On,Ti as Oo,AE as Or,oR as Ot,hW as P,qc as Pa,W_ as Pi,Qj as Pn,pi as Po,_T as Pr,jL as Pt,OH as Q,xs as Qa,Dm as Qi,qk as Qn,dw as Qr,_L as Qt,kU as R,Ks as Ra,ug as Ri,XA as Rn,Fn as Ro,HC as Rr,BF as Rt,YW as S,Od as Sa,Cv as Si,UN as Sn,fa as So,_D as Sr,hz as St,zW as T,Dd as Ta,Tv as Ti,MN as Tn,da as To,GE as Tr,UR as Tt,VH as U,Ns as Ua,Th as Ui,FA as Un,Fw as Ur,RI as Ut,fU as V,Ws as Va,Ih as Vi,GA as Vn,lw as Vr,yL as Vt,jH as W,Ps as Wa,uh as Wi,jA as Wn,IC as Wr,zI as Wt,PH as X,Ds as Xa,Nm as Xi,zA as Xn,Tw as Xr,dL as Xt,MH as Y,ws as Ya,Um as Yi,PA as Yn,tw as Yr,uL as Yt,FH as Z,Ss as Za,Tm as Zi,Wk as Zn,Ew as Zr,pL as Zt,nG as _,Kd as _a,zy as _i,_P as _n,mo as _o,PO as _r,SV as _t,eK as a,Qp as aa,nS as ai,KI as an,is as ao,Ck as ar,vH as at,XW as b,wd as ba,ty as bi,qN as bn,$a as bo,xD as br,jz as bt,$ as c,Up as ca,zx as ci,qI as cn,Fo as co,BO as cr,cH as ct,xG as d,Ef as da,tb as di,VL as dn,io as do,NO as dr,qV as dt,km as ea,qS as ei,zL as en,bs as eo,Kk as er,DH as et,mG as f,Ff as fa,Hy as fi,BL as fn,ho as fo,zO as fr,AV as ft,eG as g,Pf as ga,qy as gi,vP as gn,oo as go,rO as gr,bV as gt,rG as h,Tf as ha,Gy as hi,HL as hn,vo as ho,FO as hr,EV as ht,$G as i,om as ia,hS as ii,UI as in,rs as io,nA as ir,fH as it,jW as j,G as ja,sv as ji,dM as jn,Ci as jo,fE as jr,uR as jt,NW as k,Td as ka,ov as ki,uM as kn,xi as ko,pE as kr,cR as kt,yG as l,Nf as la,Bb as li,YI as ln,ko as lo,gk as lr,oH as lt,hG as m,jf as ma,Jy as mi,vL as mn,yo as mo,RO as mr,PV as mt,FK as n,jm as na,ew as ni,KL as nn,zo as no,tA as nr,SH as nt,lK as o,Yp as oa,$x as oi,$I as on,Zo as oo,Tk as or,_H as ot,gG as p,If as pa,Yy as pi,nL as pn,bo as po,aO as pr,wV as pt,BH as q,Os as qa,eh as qi,IA as qn,MC as qr,UP as qt,MK as r,Am as ra,hC as ri,HI as rn,Bo as ro,Hk as rr,dH as rt,DG as s,yp as sa,Jx as si,tL as sn,Po as so,wk as sr,iH as st,kK as t,Mm as ta,$C as ti,WI as tn,Vo as to,Uk as tr,EH as tt,bG as u,Mf as ua,kb as ui,ZI as un,No as uo,MO as ur,uH as ut,tG as v,ef as va,Ky as vi,gP as vn,po as vo,IO as vr,cV as vt,GW as w,_d as wa,Ov as wi,LN as wn,ca as wo,UE as wr,Sz as wt,ZW as x,Cd as xa,Cy as xi,JN as xn,eo as xo,gD as xr,X as xt,QW as y,Sd as ya,yy as yi,hP as yn,to as yo,Y as yr,kz as yt,qH as z,Bs as za,$h as zi,$A as zn,An as zo,ww as zr,ZP as zt};