@aiworker/web 1.22.0 → 1.23.0

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 (415) hide show
  1. package/README.md +4 -4
  2. package/bin/cli.js +14 -4
  3. package/bin/cli.test.js +165 -73
  4. package/bin/lib/cli-api-target.js +2 -2
  5. package/bin/lib/cli-args.js +119 -119
  6. package/bin/lib/cli-lifecycle.js +9 -9
  7. package/bin/lib/cli-network.js +3 -3
  8. package/bin/lib/cli-paths.js +3 -3
  9. package/bin/lib/cli-ports.js +2 -2
  10. package/bin/lib/cli-process.js +4 -4
  11. package/bin/lib/cli-startup.js +64 -15
  12. package/bin/lib/cli-tunnel-profiles.js +1 -1
  13. package/bin/lib/cli-tunnel-utils.js +2 -2
  14. package/bin/lib/commands-connect-url.js +19 -19
  15. package/bin/lib/commands-lifecycle.js +27 -27
  16. package/bin/lib/commands-logs.js +5 -5
  17. package/bin/lib/commands-models.js +1 -1
  18. package/bin/lib/commands-projects.js +1 -1
  19. package/bin/lib/commands-schedule.js +1 -1
  20. package/bin/lib/commands-serve.js +29 -29
  21. package/bin/lib/commands-session.js +1 -1
  22. package/bin/lib/commands-startup.js +45 -10
  23. package/bin/lib/commands-status.js +1 -1
  24. package/bin/lib/commands-tunnel.js +40 -40
  25. package/bin/lib/commands-update.js +1 -1
  26. package/bin/lib/commands-update.test.js +6 -6
  27. package/dist/assets/{CodeMirrorCommentWidgets-B3u7UIcE.js → CodeMirrorCommentWidgets-B1Gizi3a.js} +1 -1
  28. package/dist/assets/DiffView-DXjVsEOw.js +4 -0
  29. package/dist/assets/DirtyBranchSwitchDialog-aig6zJjg.js +1 -0
  30. package/dist/assets/FilesView-CJdG0-wk.js +17 -0
  31. package/dist/assets/GitView-BXsS3jG6.js +6 -0
  32. package/dist/assets/{JsonTreeView-B0BdZEHG.js → JsonTreeView-D_hpXBnF.js} +1 -1
  33. package/dist/assets/LinearIssuesView-BoUiLQG1.js +1 -0
  34. package/dist/assets/MarkdownImageGallery-B_B_a9KS.js +1 -0
  35. package/dist/assets/MarkdownRendererImpl-xgyyLiBM.js +12 -0
  36. package/dist/assets/OnboardingScreen-DIp84OWt.js +1 -0
  37. package/dist/assets/{PatchDiff-DvfqDql7.js → PatchDiff-8p6nLJaU.js} +1 -1
  38. package/dist/assets/PierreDiffViewer-DjC8nTk9.js +161 -0
  39. package/dist/assets/PlanView-CJTmOF6I.js +5 -0
  40. package/dist/assets/SettingsView-DD-JqIJx.js +28 -0
  41. package/dist/assets/{SettingsWindow-i45U1Cy1.js → SettingsWindow-Cpb4hM6q.js} +1 -1
  42. package/dist/assets/SymbolsNerdFontMono-Regular-aK5vsLov.woff2 +0 -0
  43. package/dist/assets/{ToolOutputDialog-BTwyh5OF.js → ToolOutputDialog-DfaKZXNU.js} +6 -6
  44. package/dist/assets/ToolPartDiffPreview-DtZLzrSK.js +8 -0
  45. package/dist/assets/{VirtualizedFileDiff-DD8lDVej.js → VirtualizedFileDiff-C8i9HpTB.js} +1 -1
  46. package/dist/assets/WalkthroughView-DeKMvZlL.js +4 -0
  47. package/dist/assets/{computeVirtualFileMetrics-BMIRgMHv.js → computeVirtualFileMetrics-BBI7ZwrC.js} +2 -2
  48. package/dist/assets/contextPanelEmbeddedChat-BdA6bdky.js +1 -0
  49. package/dist/assets/de-DCrsQ5zS.js +10 -0
  50. package/dist/assets/es-Dwv4YfH6.js +16 -0
  51. package/dist/assets/fr-BCWg4Cnx.js +14 -0
  52. package/dist/assets/ghostty-vt-DdA0Zryv.wasm +0 -0
  53. package/dist/assets/index-B68h5S5B.css +1 -0
  54. package/dist/assets/index-DVwMarHI.js +39 -0
  55. package/dist/assets/{index-CODwDsU_.js → index-jXSK5RrB.js} +1 -1
  56. package/dist/assets/{isDiffPlainText-BqayB8d3.js → isDiffPlainText-B_x_rVon.js} +1 -1
  57. package/dist/assets/{isFilePlainText-QfoiKJNY.js → isFilePlainText-DW_xMer1.js} +1 -1
  58. package/dist/assets/ja-Bruw3RYC.js +16 -0
  59. package/dist/assets/ko-idhXGF8j.js +16 -0
  60. package/dist/assets/main-BkyaQhJX.js +930 -0
  61. package/dist/assets/{main-C5DVOxc6.js → main-CzdPuL0s.js} +2 -2
  62. package/dist/assets/markdownCore-Cn4Tyejo.js +5 -0
  63. package/dist/assets/{miniChat-DUJ4irZc.js → miniChat-CCkqKOLp.js} +2 -2
  64. package/dist/assets/{mobile-CcaxB0n4.js → mobile-mvxTo055.js} +2 -2
  65. package/dist/assets/patchFileDiff-Csk4iNUi.js +13 -0
  66. package/dist/assets/pl-CGZWUqZJ.js +16 -0
  67. package/dist/assets/pt-BR-B8V7u7tA.js +16 -0
  68. package/dist/assets/renderElectronMiniChatApp-BxoyujA5.js +2 -0
  69. package/dist/assets/renderMobileApp-B48CsP4r.js +25 -0
  70. package/dist/assets/runtimeEndpointReset-Bg5gx18H.js +17 -0
  71. package/dist/assets/scheduledTasksApi-BW0Etzwz.js +1 -0
  72. package/dist/assets/{shikiHighlight-DYOWuY65.js → shikiHighlight-CRl0SUC9.js} +1 -1
  73. package/dist/assets/surface-oMvhsog3.js +1 -0
  74. package/dist/assets/tr-BK_KiO2V.js +7 -0
  75. package/dist/assets/uk-CG74xV8N.js +16 -0
  76. package/dist/assets/useAppFontEffects-CPKeOpUo.js +7284 -0
  77. package/dist/assets/useGitComparison-DH220WmO.js +1 -0
  78. package/dist/assets/useInlineCommentController-BiWz4AVb.js +2 -0
  79. package/dist/assets/useRootScrollLock-BS4-kr7P.js +1 -0
  80. package/dist/assets/{vendor-base-ui-BeMD8X_w.js → vendor-base-ui-DdV8vhHn.js} +1 -1
  81. package/dist/assets/{vendor-codemirror-language-data-DFZik9R2.js → vendor-codemirror-language-data-Bg4AEeCr.js} +2 -2
  82. package/dist/assets/vendor-zod-BPAANqvH.js +39 -0
  83. package/dist/assets/{web-components-Bhg83tjf.js → web-components-z7hfnS8n.js} +1 -1
  84. package/dist/assets/zh-CN-T4AXofZI.js +16 -0
  85. package/dist/assets/zh-TW-Dte40sxp.js +16 -0
  86. package/dist/index.html +21 -59
  87. package/dist/mini-chat.html +7 -7
  88. package/dist/mobile.html +5 -5
  89. package/package.json +3 -4
  90. package/server/index.d.ts +15 -0
  91. package/server/index.js +158 -89
  92. package/server/lib/agent-memory/actions.js +2 -2
  93. package/server/lib/agent-memory/feature-flag.js +1 -1
  94. package/server/lib/agent-memory/feature-flag.test.js +8 -8
  95. package/server/lib/agent-memory/routes.js +2 -2
  96. package/server/lib/agent-tool/runtime.js +37 -54
  97. package/server/lib/agent-tool/runtime.test.js +59 -59
  98. package/server/lib/browser-control/broker.js +3 -3
  99. package/server/lib/browser-control/broker.test.js +1 -1
  100. package/server/lib/changelog/update-notes.js +82 -0
  101. package/server/lib/changelog/update-notes.test.js +59 -0
  102. package/server/lib/client-auth/remote-clients.test.js +5 -5
  103. package/server/lib/context-obligatory/runtime.js +7 -7
  104. package/server/lib/context-obligatory/runtime.test.js +5 -5
  105. package/server/lib/data-dir-migration.js +40 -0
  106. package/server/lib/data-dir-migration.test.js +59 -0
  107. package/server/lib/dev-servers/parse.js +2 -2
  108. package/server/lib/dev-servers/parse.test.js +2 -2
  109. package/server/lib/dev-servers/routes.js +1 -1
  110. package/server/lib/dev-tunnel/DOCUMENTATION.md +13 -4
  111. package/server/lib/dev-tunnel/client.js +1 -1
  112. package/server/lib/dev-tunnel/runtime.js +5 -5
  113. package/server/lib/dev-tunnel/tunnel.test.js +21 -1
  114. package/server/lib/dictation/local/model-catalog.js +1 -1
  115. package/server/lib/dictation/local/worker-process.js +2 -2
  116. package/server/lib/event-stream/directory-ws-bridge.js +1 -1
  117. package/server/lib/event-stream/global-ws-bridge.js +1 -1
  118. package/server/lib/event-stream/protocol.test.js +4 -4
  119. package/server/lib/event-stream/runtime.test.js +18 -18
  120. package/server/lib/fs/DOCUMENTATION.md +5 -0
  121. package/server/lib/fs/routes.js +68 -26
  122. package/server/lib/fs/routes.test.js +208 -22
  123. package/server/lib/git/DOCUMENTATION.md +32 -6
  124. package/server/lib/git/identity-storage.js +1 -1
  125. package/server/lib/git/issue-2746-longpaths.test.js +4 -4
  126. package/server/lib/git/routes.js +41 -5
  127. package/server/lib/git/service.js +300 -224
  128. package/server/lib/git/service.test.js +596 -28
  129. package/server/lib/github/auth.js +8 -8
  130. package/server/lib/github/pr-status.js +1 -1
  131. package/server/lib/github/routes.js +2 -2
  132. package/server/lib/inherited-env.js +17 -10
  133. package/server/lib/inherited-env.test.js +10 -11
  134. package/server/lib/linear/auth.js +8 -8
  135. package/server/lib/linear/auth.test.js +24 -24
  136. package/server/lib/linear/issues.test.js +6 -6
  137. package/server/lib/linear/mapping.test.js +4 -4
  138. package/server/lib/linear/oauth.js +2 -2
  139. package/server/lib/linear/oauth.test.js +14 -14
  140. package/server/lib/linear/routes.js +5 -5
  141. package/server/lib/linear/routes.test.js +16 -16
  142. package/server/lib/linear/status-runtime.test.js +9 -9
  143. package/server/lib/linear/status.js +1 -1
  144. package/server/lib/linear/status.test.js +15 -15
  145. package/server/lib/linear/teams.test.js +4 -4
  146. package/server/lib/magic-prompts/routes.js +2 -2
  147. package/server/lib/mcp-reconnect/DOCUMENTATION.md +55 -0
  148. package/server/lib/mcp-reconnect/runtime.js +122 -0
  149. package/server/lib/mcp-reconnect/runtime.test.js +140 -0
  150. package/server/lib/message-queue/DOCUMENTATION.md +161 -0
  151. package/server/lib/message-queue/runtime.js +870 -0
  152. package/server/lib/message-queue/runtime.test.js +482 -0
  153. package/server/lib/network-defaults.js +23 -0
  154. package/server/lib/network-defaults.test.js +52 -0
  155. package/server/lib/notifications/apns-runtime.js +17 -17
  156. package/server/lib/notifications/apns-runtime.test.js +11 -11
  157. package/server/lib/notifications/emitter-runtime.js +1 -1
  158. package/server/lib/notifications/emitter-runtime.test.js +1 -1
  159. package/server/lib/notifications/push-runtime.js +7 -7
  160. package/server/lib/notifications/routes.js +1 -1
  161. package/server/lib/notifications/runtime.js +1 -1
  162. package/server/lib/openchamber-control/action-resolution.test.js +10 -10
  163. package/server/lib/openchamber-control/actions.js +24 -24
  164. package/server/lib/openchamber-control/error.js +4 -4
  165. package/server/lib/openchamber-control/routes.js +2 -2
  166. package/server/lib/openchamber-control/routes.test.js +5 -5
  167. package/server/lib/openchamber-control/screenshots.js +1 -1
  168. package/server/lib/openchamber-control/screenshots.test.js +1 -1
  169. package/server/lib/openchamber-control/service.js +50 -50
  170. package/server/lib/openchamber-control/service.test.js +5 -5
  171. package/server/lib/openchamber-sessions/routes.js +124 -22
  172. package/server/lib/openchamber-sessions/routes.test.js +99 -11
  173. package/server/lib/opencode/DOCUMENTATION.md +30 -6
  174. package/server/lib/opencode/auth.js +1 -1
  175. package/server/lib/opencode/bootstrap-runtime.js +8 -6
  176. package/server/lib/opencode/cli-options.js +8 -8
  177. package/server/lib/opencode/config-paths.test.js +116 -0
  178. package/server/lib/opencode/core-routes.js +8 -7
  179. package/server/lib/opencode/core-routes.test.js +11 -11
  180. package/server/lib/opencode/env-config.js +5 -5
  181. package/server/lib/opencode/env-config.test.js +7 -7
  182. package/server/lib/opencode/env-runtime.js +10 -10
  183. package/server/lib/opencode/env-runtime.test.js +18 -18
  184. package/server/lib/opencode/feature-routes-runtime.js +19 -12
  185. package/server/lib/opencode/hmr-state-runtime.js +2 -2
  186. package/server/lib/opencode/hmr-state-runtime.test.js +1 -1
  187. package/server/lib/opencode/input-history-scope.js +14 -0
  188. package/server/lib/opencode/lifecycle.js +8 -8
  189. package/server/lib/opencode/lifecycle.test.js +4 -4
  190. package/server/lib/opencode/managed-plugin-config.js +35 -0
  191. package/server/lib/opencode/managed-process-registry.js +3 -3
  192. package/server/lib/opencode/mcp-oauth-callback.test.js +2 -2
  193. package/server/lib/opencode/openchamber-routes.js +79 -19
  194. package/server/lib/opencode/openchamber-routes.test.js +139 -12
  195. package/server/lib/opencode/plugins.js +2 -2
  196. package/server/lib/opencode/plugins.test.js +1 -1
  197. package/server/lib/opencode/project-icon-routes.js +2 -2
  198. package/server/lib/opencode/project-icon-routes.test.js +1 -1
  199. package/server/lib/opencode/providers.js +44 -2
  200. package/server/lib/opencode/providers.test.js +131 -4
  201. package/server/lib/opencode/proxy.js +2 -2
  202. package/server/lib/opencode/pwa-manifest-routes.js +1 -1
  203. package/server/lib/opencode/restart-session-recovery.test.js +1 -1
  204. package/server/lib/opencode/routes-upgrade.test.js +4 -4
  205. package/server/lib/opencode/routes.js +19 -17
  206. package/server/lib/opencode/server-startup-runtime.js +6 -6
  207. package/server/lib/opencode/session-runtime.js +3 -3
  208. package/server/lib/opencode/session-runtime.test.js +6 -6
  209. package/server/lib/opencode/settings-files.js +214 -0
  210. package/server/lib/opencode/settings-helpers.js +116 -44
  211. package/server/lib/opencode/settings-helpers.test.js +354 -12
  212. package/server/lib/opencode/settings-registry.json +747 -0
  213. package/server/lib/opencode/settings-runtime.js +141 -20
  214. package/server/lib/opencode/settings-runtime.test.js +191 -4
  215. package/server/lib/opencode/shared.js +5 -2
  216. package/server/lib/opencode/shared.test.js +7 -7
  217. package/server/lib/opencode/shutdown-runtime.js +2 -0
  218. package/server/lib/opencode/skill-routes.js +2 -1
  219. package/server/lib/opencode/snippets.js +1 -2
  220. package/server/lib/opencode/startup-performance.js +1 -1
  221. package/server/lib/opencode/startup-performance.test.js +6 -6
  222. package/server/lib/opencode/static-routes-runtime.js +8 -8
  223. package/server/lib/opencode/static-routes-runtime.test.js +7 -7
  224. package/server/lib/opencode/upgrade-capability.js +2 -2
  225. package/server/lib/opencode/upgrade-capability.test.js +3 -3
  226. package/server/lib/package-manager.js +17 -42
  227. package/server/lib/package-manager.test.js +19 -19
  228. package/server/lib/permission-auto-accept/runtime.js +1 -1
  229. package/server/lib/project-context/DOCUMENTATION.md +25 -1
  230. package/server/lib/project-context/routes.http.test.js +18 -0
  231. package/server/lib/project-context/routes.js +16 -1
  232. package/server/lib/project-context/runtime.js +248 -23
  233. package/server/lib/project-context/runtime.test.js +106 -3
  234. package/server/lib/projects/DOCUMENTATION.md +76 -0
  235. package/server/lib/projects/project-config.js +144 -11
  236. package/server/lib/projects/project-id.js +17 -0
  237. package/server/lib/projects/project-setup.js +409 -0
  238. package/server/lib/projects/project-setup.test.js +557 -0
  239. package/server/lib/projects/routes.js +59 -0
  240. package/server/lib/quota/DOCUMENTATION.md +40 -2
  241. package/server/lib/quota/credentials/providers.js +4 -0
  242. package/server/lib/quota/credentials/store.js +4 -4
  243. package/server/lib/quota/credentials/store.test.js +8 -8
  244. package/server/lib/quota/index.js +1 -0
  245. package/server/lib/quota/providers/cline-pass.js +125 -0
  246. package/server/lib/quota/providers/cline-pass.test.js +103 -0
  247. package/server/lib/quota/providers/exe-dev.js +75 -0
  248. package/server/lib/quota/providers/exe-dev.test.js +47 -0
  249. package/server/lib/quota/providers/hyper.js +118 -0
  250. package/server/lib/quota/providers/hyper.test.js +126 -0
  251. package/server/lib/quota/providers/index.js +22 -0
  252. package/server/lib/quota/providers/neuralwatt.js +3 -6
  253. package/server/lib/quota/providers/neuralwatt.test.js +7 -7
  254. package/server/lib/quota/providers/ollama-cloud.js +32 -1
  255. package/server/lib/quota/providers/ollama-cloud.test.js +33 -1
  256. package/server/lib/quota/providers/opencode-go.js +3 -2
  257. package/server/lib/quota/providers/opencode-go.test.js +35 -6
  258. package/server/lib/quota/providers/openrouter.js +119 -24
  259. package/server/lib/quota/providers/openrouter.test.js +330 -0
  260. package/server/lib/quota/providers/xai.js +1 -1
  261. package/server/lib/quota/routes.js +2 -0
  262. package/server/lib/quota/utils/auth.js +1 -1
  263. package/server/lib/relay/DOCUMENTATION.md +56 -1
  264. package/server/lib/relay/cross-compat.test.js +26 -0
  265. package/server/lib/relay/downstream-scheduler.js +154 -0
  266. package/server/lib/relay/downstream-scheduler.test.js +162 -0
  267. package/server/lib/relay/e2ee.js +10 -8
  268. package/server/lib/relay/flow-control.test.js +177 -0
  269. package/server/lib/relay/host-client.js +38 -9
  270. package/server/lib/relay/host-client.test.js +9 -1
  271. package/server/lib/relay/host-lock.js +1 -1
  272. package/server/lib/relay/service.js +5 -5
  273. package/server/lib/relay/tunnel-codec.js +9 -0
  274. package/server/lib/relay/tunnel-host.js +69 -18
  275. package/server/lib/relay/tunnel-host.test.js +9 -1
  276. package/server/lib/scheduled-tasks/issue-2710-double-execution.test.js +2 -2
  277. package/server/lib/scheduled-tasks/routes.js +5 -5
  278. package/server/lib/scheduled-tasks/service.js +25 -25
  279. package/server/lib/scheduled-tasks/service.test.js +1 -1
  280. package/server/lib/security/bind-host.js +4 -4
  281. package/server/lib/security/bind-host.test.js +1 -1
  282. package/server/lib/security/request-security.js +11 -5
  283. package/server/lib/security/request-security.test.js +14 -14
  284. package/server/lib/session-assist/runtime.js +15 -18
  285. package/server/lib/session-folders/routes.js +2 -2
  286. package/server/lib/session-folders/routes.test.js +8 -8
  287. package/server/lib/session-goal/DOCUMENTATION.md +20 -7
  288. package/server/lib/session-goal/create.js +4 -2
  289. package/server/lib/session-goal/create.test.js +1 -1
  290. package/server/lib/session-goal/objectives.js +4 -4
  291. package/server/lib/session-goal/routes.js +1 -1
  292. package/server/lib/session-goal/runtime.js +91 -30
  293. package/server/lib/session-goal/runtime.test.js +428 -2
  294. package/server/lib/session-knowledge/runtime.js +11 -11
  295. package/server/lib/session-knowledge/runtime.test.js +5 -5
  296. package/server/lib/skills-catalog/DOCUMENTATION.md +1 -1
  297. package/server/lib/skills-catalog/cache.test.js +2 -2
  298. package/server/lib/skills-catalog/disk-cache.js +5 -5
  299. package/server/lib/skills-catalog/github-meta.test.js +2 -2
  300. package/server/lib/skills-catalog/install.js +3 -2
  301. package/server/lib/small-model/DOCUMENTATION.md +7 -2
  302. package/server/lib/small-model/call.js +18 -7
  303. package/server/lib/small-model/call.test.js +58 -6
  304. package/server/lib/small-model/index.js +12 -16
  305. package/server/lib/small-model/index.test.js +1 -1
  306. package/server/lib/small-model/resolve.js +1 -1
  307. package/server/lib/small-model/resolve.test.js +1 -1
  308. package/server/lib/small-model/routes.js +2 -1
  309. package/server/lib/small-model/runtime-providers.js +15 -7
  310. package/server/lib/small-model/runtime-providers.test.js +7 -1
  311. package/server/lib/system-prompt/runtime.js +3 -22
  312. package/server/lib/system-prompt/runtime.test.js +3 -3
  313. package/server/lib/terminal/DOCUMENTATION.md +14 -10
  314. package/server/lib/terminal/runtime.js +190 -31
  315. package/server/lib/terminal/runtime.test.js +572 -38
  316. package/server/lib/terminal/shells.js +20 -3
  317. package/server/lib/terminal/shells.test.js +33 -2
  318. package/server/lib/tts/base-url.js +3 -3
  319. package/server/lib/tts/routes.test.js +20 -20
  320. package/server/lib/ui-auth/ui-auth.js +12 -9
  321. package/server/lib/ui-auth/ui-auth.test.js +19 -3
  322. package/server/lib/ui-auth/ui-passkeys.js +7 -7
  323. package/server/lib/walkthrough/DOCUMENTATION.md +33 -14
  324. package/server/lib/walkthrough/index.js +1 -0
  325. package/server/lib/walkthrough/jobs.test.js +1 -1
  326. package/server/lib/walkthrough/language.test.js +1 -1
  327. package/server/lib/walkthrough/model-settings.js +11 -15
  328. package/server/lib/walkthrough/model-settings.test.js +1 -1
  329. package/server/lib/walkthrough/prompt.js +3 -1
  330. package/server/lib/walkthrough/pull-request.test.js +5 -5
  331. package/server/lib/walkthrough/reproduce-2607.test.js +2 -2
  332. package/server/lib/walkthrough/routes.test.js +26 -5
  333. package/server/lib/walkthrough/sources.js +23 -2
  334. package/server/lib/walkthrough/store.js +3 -3
  335. package/server/lib/walkthrough/store.test.js +1 -1
  336. package/server/opencode-proxy.test.js +2 -2
  337. package/server/proxy-headers.js +1 -1
  338. package/server/sse-routes.test.js +4 -4
  339. package/README.md.bak +0 -250
  340. package/bin/lib/DOCUMENTATION.md.bak +0 -163
  341. package/dist/assets/CommitSection-SGBCAW0w.js +0 -1
  342. package/dist/assets/DiffView-DluiRSla.js +0 -4
  343. package/dist/assets/FilesView-Bdq8ppva.js +0 -17
  344. package/dist/assets/GitView-Znn7VJcP.js +0 -6
  345. package/dist/assets/LinearIssuesView-jP-hXyac.js +0 -1
  346. package/dist/assets/MarkdownImageGallery-ClOvuZxC.js +0 -1
  347. package/dist/assets/MarkdownRendererImpl-Dt9mjTRN.js +0 -12
  348. package/dist/assets/OnboardingScreen-D2DG7K6b.js +0 -1
  349. package/dist/assets/PierreDiffViewer-B7m3f0d7.js +0 -157
  350. package/dist/assets/PlanView-B0F3BtPZ.js +0 -5
  351. package/dist/assets/SettingsView-BBW-S-gh.js +0 -28
  352. package/dist/assets/ToolPartDiffPreview-CUNe28U1.js +0 -8
  353. package/dist/assets/WalkthroughView-egQgxel3.js +0 -4
  354. package/dist/assets/contextPanelEmbeddedChat-C3fjDbdg.js +0 -1
  355. package/dist/assets/de-C1P6X5Rs.js +0 -9
  356. package/dist/assets/es-CDgaF1_t.js +0 -15
  357. package/dist/assets/fr-Bgxqvvz_.js +0 -13
  358. package/dist/assets/index-C57jT0Sa.css +0 -1
  359. package/dist/assets/index-DW_E3rnL.js +0 -7
  360. package/dist/assets/ja-BDRrEcNP.js +0 -15
  361. package/dist/assets/ko-Ba8sQV79.js +0 -15
  362. package/dist/assets/main-Bv5Pkngh.js +0 -928
  363. package/dist/assets/markdownCore-CZwzz5gw.js +0 -3
  364. package/dist/assets/patchFileDiff-yNfWXN4E.js +0 -10
  365. package/dist/assets/pl-Dioz29BI.js +0 -15
  366. package/dist/assets/pt-BR-DIs6ElwV.js +0 -15
  367. package/dist/assets/renderElectronMiniChatApp-BcKLHXKe.js +0 -2
  368. package/dist/assets/renderMobileApp-D9yQJy0L.js +0 -25
  369. package/dist/assets/runtimeEndpointReset-CjhvxLH0.js +0 -16
  370. package/dist/assets/scheduledTasksApi-DLW0mkQK.js +0 -1
  371. package/dist/assets/tr-DFnMlPxY.js +0 -6
  372. package/dist/assets/uk-ZrCNjM7Y.js +0 -15
  373. package/dist/assets/useAppFontEffects-CjrntdL0.js +0 -7310
  374. package/dist/assets/useInlineCommentController-CDEuSlPH.js +0 -2
  375. package/dist/assets/useRootScrollLock-BHYPkrLv.js +0 -1
  376. package/dist/assets/vendor-ghostty-web-CrxinGGH.js +0 -13
  377. package/dist/assets/vendor-zod-BLfBSgBh.js +0 -39
  378. package/dist/assets/zh-CN-iv_AV4EC.js +0 -15
  379. package/dist/assets/zh-TW-CzEUk38j.js +0 -15
  380. package/server/index.d.ts.bak +0 -39
  381. package/server/lib/agent-tool/DOCUMENTATION.md.bak +0 -119
  382. package/server/lib/browser-control/DOCUMENTATION.md.bak +0 -50
  383. package/server/lib/context-obligatory/DOCUMENTATION.md.bak +0 -19
  384. package/server/lib/dev-tunnel/DOCUMENTATION.md.bak +0 -57
  385. package/server/lib/dictation/DOCUMENTATION.md.bak +0 -100
  386. package/server/lib/event-stream/DOCUMENTATION.md.bak +0 -62
  387. package/server/lib/fs/DOCUMENTATION.md.bak +0 -47
  388. package/server/lib/git/DOCUMENTATION.md.bak +0 -193
  389. package/server/lib/github/DOCUMENTATION.md.bak +0 -183
  390. package/server/lib/linear/DOCUMENTATION.md.bak +0 -97
  391. package/server/lib/linear/OAUTH-BROKER-HANDOFF.md.bak +0 -91
  392. package/server/lib/markdown-image-grants/DOCUMENTATION.md.bak +0 -40
  393. package/server/lib/notifications/APNS.md.bak +0 -135
  394. package/server/lib/notifications/DOCUMENTATION.md.bak +0 -138
  395. package/server/lib/openchamber-control/DOCUMENTATION.md.bak +0 -64
  396. package/server/lib/opencode/DOCUMENTATION.md.bak +0 -431
  397. package/server/lib/opencode/managed-process-registry.d.ts.bak +0 -13
  398. package/server/lib/opencode/provider-env-aliases.d.ts.bak +0 -3
  399. package/server/lib/permission-auto-accept/DOCUMENTATION.md.bak +0 -34
  400. package/server/lib/project-context/DOCUMENTATION.md.bak +0 -160
  401. package/server/lib/quota/DOCUMENTATION.md.bak +0 -123
  402. package/server/lib/relay/DOCUMENTATION.md.bak +0 -100
  403. package/server/lib/scheduled-tasks/DOCUMENTATION.md.bak +0 -182
  404. package/server/lib/session-assist/DOCUMENTATION.md.bak +0 -66
  405. package/server/lib/session-goal/DOCUMENTATION.md.bak +0 -213
  406. package/server/lib/session-knowledge/DOCUMENTATION.md.bak +0 -89
  407. package/server/lib/skills-catalog/DOCUMENTATION.md.bak +0 -151
  408. package/server/lib/small-model/DOCUMENTATION.md.bak +0 -212
  409. package/server/lib/system-prompt/DOCUMENTATION.md.bak +0 -36
  410. package/server/lib/terminal/DOCUMENTATION.md.bak +0 -50
  411. package/server/lib/text/DOCUMENTATION.md.bak +0 -35
  412. package/server/lib/tts/DOCUMENTATION.md.bak +0 -147
  413. package/server/lib/tunnels/DOCUMENTATION.md.bak +0 -21
  414. package/server/lib/ui-auth/DOCUMENTATION.md.bak +0 -44
  415. package/server/lib/walkthrough/DOCUMENTATION.md.bak +0 -411
@@ -1,7 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-heic2any-CEam9pDc.js","assets/vendor-react-BUCujlKS.js","assets/vendor-scheduler-7OC5HNn7.js","assets/vendor-capacitor-app-BrDJj9I_.js","assets/vendor-vite-runtime-DD1OZmLC.js","assets/vendor-capacitor-core-B4EWRrHz.js"])))=>i.map(i=>d[i]);
2
- import{_ as Gr}from"./vendor-vite-runtime-DD1OZmLC.js";import{c as ct,d as Vt,p as Oo}from"./vendor-zustand-BAGL70zf.js";import{o as Ii,n as xi,s as Cn}from"./vendor-zod-BLfBSgBh.js";import{c as Oi}from"./vendor-opencode-sdk-BJ73u-bH.js";import{f as _a,R as bo}from"./vendor-react-BUCujlKS.js";const Lt=1,_i="openchamber-relay-v1",La=1,Na=12,Nt=1+Na,Ht=64*1024,zt=5,$t=128,Ua=0,ja=1,Et=4,Li=1+Et,mr=Ht-zt-Li,S={HttpRequest:1,HttpBody:2,HttpResponse:3,StreamEnd:4,StreamAbort:5,WsOpen:6,WsOpened:7,WsText:8,WsBinary:9,WsClose:10,Ping:11,Pong:12},Ni=new Set(Object.values(S)),Ui=e=>Ni.has(e),ot={DuplicateClient:4002,AuthFailed:4010,LimitExceeded:4029,ChannelFailure:1011},Ie=globalThis.crypto.subtle,Ha={name:"ECDH",namedCurve:"P-256"},za=16,Jo=32,ji=16,gr=4,$a=8;class $e extends Error{constructor(t){super(t),this.name="RelayCryptoError"}}const Hi=()=>Ie.generateKey(Ha,!0,["deriveBits"]),zi=async e=>{const t=await Ie.exportKey("jwk",e);return{kty:t.kty,crv:t.crv,x:t.x,y:t.y}},$i=async e=>{if(e.kty!=="EC"||e.crv!=="P-256"||typeof e.x!="string"||typeof e.y!="string")throw new $e("invalid ECDH public key JWK");try{return await Ie.importKey("jwk",{kty:e.kty,crv:e.crv,x:e.x,y:e.y,ext:!0},Ha,!0,[])}catch{throw new $e("invalid ECDH public key JWK")}},Wi=()=>{const e=new Uint8Array(za);return globalThis.crypto.getRandomValues(e),e},Gi=async(e,t,o)=>{if(o.length!==za)throw new $e("invalid handshake nonce length");const r=await Ie.deriveBits({name:"ECDH",public:t},e,256),n=await Ie.importKey("raw",r,"HKDF",!1,["deriveBits"]),a=new Uint8Array(await Ie.deriveBits({name:"HKDF",hash:"SHA-256",salt:o,info:new TextEncoder().encode(_i)},n,Jo*2*8)),s=(i,c)=>Ie.importKey("raw",i,{name:"AES-GCM"},!1,c);return{clientToHost:await s(a.slice(0,Jo),["encrypt","decrypt"]),hostToClient:await s(a.slice(Jo),["encrypt","decrypt"])}},qi=(e,t,o)=>{for(let r=$a-1;r>=0;r-=1)e[t+r]=Number(o&0xffn),o>>=8n},Ki=(e,t)=>{let o=0n;for(let r=0;r<$a;r+=1)o=o<<8n|BigInt(e[t+r]);return o},Vi=e=>{const t=new Uint8Array(gr);globalThis.crypto.getRandomValues(t);let o=0n;return{async encrypt(r){if(r.length>Ht)throw new $e("plaintext frame exceeds maximum size");o+=1n;const n=new Uint8Array(Na);n.set(t,0),qi(n,gr,o);const a=new Uint8Array(await Ie.encrypt({name:"AES-GCM",iv:n},e,r)),s=new Uint8Array(Nt+a.length);return s[0]=La,s.set(n,1),s.set(a,Nt),s}}},Ji=e=>{let t=0n;return{async decrypt(o){if(o.length<Nt+ji)throw new $e("encrypted frame too short");if(o[0]!==La)throw new $e("unsupported encrypted frame version");const r=o.slice(1,Nt),n=Ki(r,gr);if(n<=t)throw new $e("frame counter regression");let a;try{a=await Ie.decrypt({name:"AES-GCM",iv:r},e,o.slice(Nt))}catch{throw new $e("frame decryption failed")}return t=n,new Uint8Array(a)}}},to="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Yi=e=>{let t="";for(let o=0;o<e.length;o+=3){const r=e[o],n=o+1<e.length?e[o+1]:void 0,a=o+2<e.length?e[o+2]:void 0;t+=to[r>>2],t+=to[(r&3)<<4|(n??0)>>4],n!==void 0&&(t+=to[(n&15)<<2|(a??0)>>6]),a!==void 0&&(t+=to[a&63])}return t},Bn=e=>{let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;const o=t;if(o.v!==Lt)return null;const r=o.batch===!0;return o.t==="ready"?{t:"ready",v:Lt,batch:r}:o.t==="hello"&&typeof o.nonce=="string"&&typeof o.clientPubJwk=="object"&&o.clientPubJwk!==null?{t:"hello",v:Lt,clientPubJwk:o.clientPubJwk,nonce:o.nonce,batch:r}:null},Qi=e=>({type:"fail",closeCode:ot.ChannelFailure,reason:e}),Xi=async(e,t={})=>{const o=t.batch!==!1,r=await $i(e),n=await Hi(),a=Wi(),s={t:"hello",v:Lt,clientPubJwk:await zi(n.publicKey),nonce:Yi(a),...o?{batch:!0}:{}};let i=!1;return{helloText:JSON.stringify(s),get established(){return i},async handleText(c){if(i)return Bn(c)?.t==="ready"?{type:"ignore"}:Qi("plaintext frame on established channel");const d=Bn(c);if(d?.t!=="ready")return{type:"ignore"};const l=await Gi(n.privateKey,r,a);return i=!0,{type:"established",batch:o&&d.batch===!0,channel:{encryptor:Vi(l.clientToHost),decryptor:Ji(l.hostToClient)}}}}},Wa=4294967295;class Q extends Error{constructor(t){super(t),this.name="TunnelCodecError"}}const we=(e,t,o,r=!1)=>{if(!Number.isInteger(t)||t<0||t>Wa)throw new Q("invalid stream id");if(o.length>mr)throw new Q("tunnel payload exceeds maximum size");const n=new Uint8Array(zt+o.length);return n[0]=r?e|$t:e,n[1]=t>>>24&255,n[2]=t>>>16&255,n[3]=t>>>8&255,n[4]=t&255,n.set(o,zt),n},Zi=e=>{if(e.length<zt)throw new Q("tunnel frame too short");const t=e[0],o=(t&$t)!==0,r=t&~$t;if(!Ui(r))throw new Q(`unknown tunnel frame type ${r}`);const n=(e[1]<<24|e[2]<<16|e[3]<<8|e[4])>>>0;return{frameType:r,streamId:n,payload:e.slice(zt),hasMoreFragments:o}},ec=new TextEncoder,tc=new TextDecoder,oo=e=>ec.encode(JSON.stringify(e)),ro=(e,t)=>{let o;try{o=JSON.parse(tc.decode(e))}catch{throw new Q("malformed JSON tunnel payload")}if(!t(o))throw new Q("unexpected JSON tunnel payload shape");return o},Ga=(e,t=mr)=>{if(t<=0||t>mr)throw new Q("invalid chunk size");if(e.length===0)return[new Uint8Array(0)];const o=[];for(let r=0;r<e.length;r+=t)o.push(e.slice(r,r+t));return o},vn=(e,t,o)=>{const r=Ga(o);return r.map((n,a)=>we(e,t,n,a<r.length-1))},oc=(e=16*1024*1024)=>{const t=new Map;return{push(o){const r=`${o.streamId}:${o.frameType}`,n=t.get(r);if(!o.hasMoreFragments&&!n)return o.payload;const a=n?.chunks??[],s=(n?.totalBytes??0)+o.payload.length;if(s>e)throw t.delete(r),new Q("fragmented message exceeds maximum size");if(a.push(o.payload),o.hasMoreFragments)return t.set(r,{chunks:a,totalBytes:s}),null;t.delete(r);const i=new Uint8Array(s);let c=0;for(const d of a)i.set(d,c),c+=d.length;return i},dropStream(o){for(const r of t.keys())r.startsWith(`${o}:`)&&t.delete(r)}}},rc=e=>{if(e.length===0)throw new Q("cannot encode an empty frame batch");if(e.length===1){const n=e[0],a=new Uint8Array(1+n.length);if(a[0]=Ua,a.set(n,1),a.length>Ht)throw new Q("frame batch exceeds maximum plaintext size");return a}let t=1;for(const n of e)t+=Et+n.length;if(t>Ht)throw new Q("frame batch exceeds maximum plaintext size");const o=new Uint8Array(t);o[0]=ja;let r=1;for(const n of e)o[r]=n.length>>>24&255,o[r+1]=n.length>>>16&255,o[r+2]=n.length>>>8&255,o[r+3]=n.length&255,r+=Et,o.set(n,r),r+=n.length;return o},nc=e=>{if(e.length<1)throw new Q("empty batch plaintext");const t=e[0];if(t===Ua)return[e.slice(1)];if(t!==ja)throw new Q(`unknown batch container tag ${t}`);const o=[];let r=1;for(;r<e.length;){if(r+Et>e.length)throw new Q("truncated batch frame length");const n=(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])>>>0;if(r+=Et,r+n>e.length)throw new Q("truncated batch frame body");o.push(e.slice(r,r+n)),r+=n}if(o.length===0)throw new Q("empty frame batch");return o},ac=new Set([S.HttpBody,S.WsText,S.WsBinary]),qa=150,sc=24*1024,ic=32,cc=e=>{const t=e.windowMs??qa,o=e.maxBatchBytes??sc,r=e.maxBatchFrames??ic,n=e.now??(()=>Date.now()),a=e.setTimer??((w,h)=>setTimeout(w,h)),s=e.clearTimer??(w=>clearTimeout(w));let i=[],c=0,d=null,l=0,u=!1;const m=()=>{d!==null&&(s(d),d=null)},p=()=>{if(m(),i.length===0)return;const w=i;i=[],c=0,l=n(),e.sendBatch(rc(w))};return{enqueue:w=>{if(u)return;const h=w[0]&~$t;if(!ac.has(h)){i.push(w),p();return}const F=n();if(i.length===0&&F-l>=t){i.push(w),p();return}const k=Et+w.length;if(i.length>0&&1+c+k>Ht&&p(),i.push(w),c+=k,c>=o||i.length>=r){p();return}d===null&&(d=a(p,t))},flush:p,dispose(){u=!0,m(),i=[],c=0}}},dc=()=>{let e=1;return{next(){if(e>Wa)throw new Q("stream id space exhausted");const t=e;return e+=2,t}}},_o=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),lc=e=>_o(e)&&Object.values(e).every(t=>typeof t=="string"),uc=e=>_o(e)&&typeof e.status=="number"&&lc(e.headers),Dn=e=>_o(e)&&typeof e.reason=="string",fc=e=>_o(e)&&typeof e.code=="number"&&typeof e.reason=="string",Ka=/^[a-z][a-z\d+.-]*:\/\//i,qr="http://tunnel.invalid",mc=e=>{try{const t=Ka.test(e)?new URL(e):new URL(e,qr);return`${t.pathname}${t.search}`}catch{return e}},no=e=>({async*[Symbol.asyncIterator](){yield e}}),gc=e=>({async*[Symbol.asyncIterator](){const t=e.getReader();try{for(;;){const{done:o,value:r}=await t.read();if(o)return;r&&(yield r)}}finally{t.releaseLock()}}}),pc=e=>{const t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),t},hc=async e=>{if(e==null)return{body:null};if(e instanceof ReadableStream)return{body:gc(e)};if(typeof e=="string")return{body:no(new TextEncoder().encode(e))};if(e instanceof ArrayBuffer)return{body:no(new Uint8Array(e.slice(0)))};if(ArrayBuffer.isView(e))return{body:no(pc(e))};const t=new Response(e),o=t.headers.get("content-type")??void 0,r=new Uint8Array(await t.arrayBuffer());return{body:no(r),contentType:o}},Fc=async(e,t)=>{let o;const r=new Headers;let n="GET",a=null,s;e instanceof Request?(o=e.url,n=e.method,e.headers.forEach((u,m)=>r.set(m,u)),s=e.signal,a=e.body):o=e.toString(),t&&(t.method&&(n=t.method),t.headers&&new Headers(t.headers).forEach((u,m)=>r.set(m,u)),t.body!==void 0&&(a=t.body),t.signal&&(s=t.signal));const i=Ka.test(o)?new URL(o):new URL(o,qr),{body:c,contentType:d}=await hc(a);d&&!r.has("content-type")&&r.set("content-type",d);const l={};return r.forEach((u,m)=>{l[m]=u}),{method:n.toUpperCase(),path:i.pathname,query:i.search.startsWith("?")?i.search.slice(1):i.search,headers:l,body:c,signal:s}},Va="__aiworkerAmbiguousTransport",Ja=e=>(Object.defineProperty(e,Va,{value:!0,enumerable:!1,configurable:!0}),e),yc=e=>!e||typeof e!="object"?!1:e[Va]===!0,ao=new Uint8Array(0),bc=new TextEncoder,wc=new TextDecoder,me=e=>e instanceof Error?e:new Error(String(e)),so=()=>new DOMException("The operation was aborted.","AbortError"),Ac=e=>{e.binaryType="arraybuffer";const t={get readyState(){return e.readyState},send(o){e.send(o)},close(o,r){e.close(o,r)},onopen:null,onmessage:null,onclose:null,onerror:null};return e.onopen=()=>t.onopen?.(),e.onmessage=o=>t.onmessage?.({data:o.data}),e.onclose=o=>t.onclose?.({code:o.code,reason:o.reason}),e.onerror=()=>t.onerror?.(),t},Ec=e=>{const t={get readyState(){return e.readyState},get binaryType(){return e.binaryType},set binaryType(o){o&&(e.binaryType=o)},onopen:null,onmessage:null,onerror:null,onclose:null,send(o){e.send(o)},close(o,r){e.close(o,r)}};return e.onopen=()=>t.onopen?.(),e.onmessage=o=>{const r=o.data;(typeof r=="string"||r instanceof ArrayBuffer)&&t.onmessage?.({data:r})},e.onerror=()=>t.onerror?.(),e.onclose=o=>t.onclose?.({code:o.code,reason:o.reason}),t},Sn=0,Yo=1,Mn=2,Tn=3,kc=new Set([ot.AuthFailed,ot.DuplicateClient,ot.LimitExceeded]),Cc={[ot.AuthFailed]:"relay authentication failed",[ot.DuplicateClient]:"relay connection replaced by another client",[ot.LimitExceeded]:"relay connection limit reached"},Pn=()=>{const e=typeof navigator<"u"&&navigator.onLine===!1,t=typeof document<"u"&&document.visibilityState==="hidden";return e||t},Kr=e=>{const t=e.helloRetryMs??1e3,o=e.helloTimeoutMs??3e4,r=e.pingIntervalMs??3e4,n=e.pingTimeoutMs??15e3,a=e.batchWindowMs??qa,s=e.batch!==!1,i=e.reconnectBaseDelayMs??1e3,c=e.reconnectMaxDelayMs??3e4,d=e.hiddenOrOfflineMaxDelayMs??6e4,l=e.createWireSocket??(A=>Ac(new WebSocket(A)));let u=!1,m={state:"idle"};const p=new Set;let g=null,w=null,h=null,F=0,k=0,E=null,I=[],ae=!1;const fe=A=>{if(!(m.state===A.state&&m.lastError===A.lastError)){m=A;for(const M of p)try{M(m)}catch{}}},Pt=A=>{const M=I;I=[];for(const C of M)C.reject(A)},Wo=A=>{const M=I;I=[];for(const C of M)C.resolve(A)},wn=(A,M)=>{A.dead=!0;const C=Array.from(A.streams.values());A.streams.clear();for(const B of C)try{B.fail(M)}catch{}},Go=()=>{E!==null&&(clearTimeout(E),E=null)},qo=()=>{u||E===null||Pn()||(Go(),Ko(),Vo())},An=()=>{typeof document<"u"&&document.visibilityState==="visible"&&qo()},Di=()=>{ae||typeof window>"u"||(ae=!0,window.addEventListener("online",qo),typeof document<"u"&&document.addEventListener("visibilitychange",An))},Ko=()=>{!ae||typeof window>"u"||(ae=!1,window.removeEventListener("online",qo),typeof document<"u"&&document.removeEventListener("visibilitychange",An))},En=()=>{if(u||E!==null)return;const A=Math.max(0,k-1),M=i*2**Math.min(A,10),C=Pn()?d:c,B=Math.min(C,M);Di(),E=setTimeout(()=>{E=null,Ko(),Vo()},B)},Si=()=>{const A=new URL(e.relayUrl);return A.searchParams.set("v",String(Lt)),A.searchParams.set("role","client"),A.searchParams.set("serverId",e.serverId),e.grant&&A.searchParams.set("grant",e.grant),A.toString()},Vo=async()=>{if(u)return;Go(),F+=1;const A=F;fe({state:k>0?"reconnecting":"connecting",lastError:m.lastError});let M;try{M=await Xi(e.hostEncPubJwk,{batch:s})}catch(R){if(A!==F||u)return;oe(A,me(R),!0);return}if(A!==F||u)return;let C;try{C=l(Si())}catch(R){oe(A,me(R));return}w=C;let B=!1,v=null,T=null,se=null,J=null,D=Promise.resolve(),P=null,U=null,ve=!1,$=null,Y=Date.now();const X=()=>{v!==null&&(clearInterval(v),v=null),T!==null&&(clearTimeout(T),T=null),se!==null&&(clearInterval(se),se=null),J!==null&&(clearTimeout(J),J=null),$!==null&&($.dispose(),$=null)};h=X;function N(R,_=!1,x=!1){if(!(B||A!==F)){B=!0,X(),P&&(g=null,wn(P,new Error(`relay tunnel reset: ${R.message}`))),Pt(R);try{C.close()}catch{}if(w===C&&(w=null),!u){if(k+=1,x){fe({state:"error",lastError:R.message});return}fe({state:_?"error":"reconnecting",lastError:R.message}),En()}}}const Ke=()=>{try{C.send(M.helloText)}catch{}},j=(R,_)=>{U=R,ve=_,v!==null&&(clearInterval(v),v=null),T!==null&&(clearTimeout(T),T=null);const x=new Map,W=dc(),Ve=oc();let ue=Promise.resolve();const De=ft=>{ue=ue.then(async()=>{if(ut.dead)return;const eo=await R.encryptor.encrypt(ft);C.send(eo)}).catch(()=>{})},Je=_?cc({windowMs:a,sendBatch:De}):null;$=Je;const ut={streams:x,assembler:Ve,nextStreamId:()=>W.next(),dead:!1,send(ft){if(ut.dead)return;const eo=ft[0]&~$t;eo!==S.Ping&&eo!==S.Pong&&(Y=Date.now()),Je?Je.enqueue(ft):De(ft)}};P=ut,g=ut,k=0,Y=Date.now(),fe({state:"connected"}),Wo(ut),se=setInterval(()=>{Date.now()-Y<r||(ut.send(we(S.Ping,0,ao)),J===null&&(J=setTimeout(()=>{J=null,N(new Error("relay keepalive timeout"))},n)))},r)},_e=(R,_)=>{let x;try{x=Zi(_)}catch(ue){N(me(ue));return}if(J!==null&&(clearTimeout(J),J=null),x.frameType===S.Ping){R.send(we(S.Pong,x.streamId,ao));return}if(x.frameType===S.Pong)return;Y=Date.now();let W=x.payload;if(x.frameType===S.WsText||x.frameType===S.WsBinary){let ue;try{ue=R.assembler.push(x)}catch(De){N(me(De));return}if(ue===null)return;W=ue}else if(x.hasMoreFragments){N(new Error("unexpected fragmented tunnel frame"));return}const Ve=R.streams.get(x.streamId);Ve&&Ve.handleFrame(x.frameType,W)};C.onopen=()=>{B||A!==F||(Ke(),v=setInterval(Ke,t))},C.onmessage=R=>{if(B||A!==F)return;const _=R.data;if(typeof _=="string"){D=D.then(async()=>{if(B||A!==F)return;const W=await M.handleText(_);if(W.type==="established"){if(U)return;j(W.channel,W.batch)}else W.type==="fail"&&N(new Error(`relay handshake failed: ${W.reason}`))}).catch(W=>{N(me(W))});return}const x=_ instanceof ArrayBuffer?new Uint8Array(_):_ instanceof Uint8Array?_:null;x&&(D=D.then(async()=>{if(B||A!==F)return;const W=P,Ve=U;if(!W||!Ve){N(new Error("encrypted frame before handshake completed"));return}let ue;try{ue=await Ve.decryptor.decrypt(x)}catch(De){N(me(De));return}if(ve){let De;try{De=nc(ue)}catch(Je){N(me(Je));return}for(const Je of De){if(B||A!==F||W.dead)return;_e(W,Je)}return}_e(W,ue)}).catch(W=>{N(me(W))}))},C.onclose=R=>{const _=kc.has(R.code);N(new Error(Cc[R.code]??`relay socket closed (code ${R.code})`),_,_)},C.onerror=()=>{},T=setTimeout(()=>{T=null,N(new Error("relay handshake timeout"),!0)},o);function oe(R,_,x=!1){R!==F||u||(Pt(_),k+=1,fe({state:x?"error":"reconnecting",lastError:_.message}),En())}},kn=A=>u?Promise.reject(new Error("relay tunnel closed")):A?.aborted?Promise.reject(so()):g&&!g.dead?Promise.resolve(g):new Promise((M,C)=>{let B=null;const v={resolve(T){B&&A&&A.removeEventListener("abort",B),M(T)},reject(T){B&&A&&A.removeEventListener("abort",B),C(T)}};A&&(B=()=>{I=I.filter(T=>T!==v),C(so())},A.addEventListener("abort",B,{once:!0})),I.push(v)}),Mi=async(A,M)=>{const C=await Fc(A,M),B=C.signal;if(B?.aborted)throw so();const v=await kn(B),T=v.nextStreamId();return await new Promise((se,J)=>{let D=!1,P=!1,U=null,ve=null;const $=()=>{v.streams.delete(T),v.assembler.dropStream(T),ve&&B&&B.removeEventListener("abort",ve)},Y=j=>{if(!P){if(P=!0,$(),!D){J(j);return}try{U?.error(j)}catch{}}},X=j=>{v.dead||v.send(we(S.StreamAbort,T,oo({reason:j})))},N=j=>Ja(new Error(j));ve=()=>{X("aborted"),Y(so())},v.streams.set(T,{handleFrame(j,_e){if(j===S.HttpResponse){if(D||P)return;let oe;try{oe=ro(_e,uc)}catch(x){X("malformed response head"),Y(N(me(x).message));return}const R=oe.status===204||oe.status===205||oe.status===304;let _=null;R||(_=new ReadableStream({start(x){U=x},cancel(){P||(P=!0,$(),X("response body cancelled"))}})),D=!0,se(new Response(_,{status:oe.status,headers:oe.headers})),R&&(P=!0,$());return}if(j===S.HttpBody){if(!D||P)return;try{U?.enqueue(_e)}catch{}return}if(j===S.StreamEnd){if(P)return;if(!D){Y(N("tunnel stream ended before response head"));return}P=!0,$();try{U?.close()}catch{}return}if(j===S.StreamAbort){let oe="stream aborted by host";try{oe=ro(_e,Dn).reason}catch{}Y(N(oe))}},fail(j){Y(N(j.message))}}),B&&B.addEventListener("abort",ve,{once:!0});const Ke={method:C.method,path:C.path,query:C.query,headers:C.headers,hasBody:C.body!==null};v.send(we(S.HttpRequest,T,oo(Ke))),(async()=>{try{let j=!1;if(C.body)for await(const _e of C.body){if(P||v.dead)return;for(const oe of Ga(_e))v.send(we(S.HttpBody,T,oe)),j=!0}!P&&!v.dead&&(C.body&&!j&&v.send(we(S.HttpBody,T,ao)),v.send(we(S.StreamEnd,T,ao)))}catch(j){X("request body failed"),Y(N(me(j).message))}})()})},Ti=A=>{const M=A.indexOf("?");return M===-1?{path:A,query:""}:{path:A.slice(0,M),query:A.slice(M+1)}},Pi=(A,M)=>{let C=Sn,B=null,v=0,T=!1;const se={get readyState(){return C},onopen:null,onmessage:null,onerror:null,onclose:null,send(D){if(C!==Yo||!B||B.dead)throw new Error("relay tunnel socket is not open");if(typeof D=="string"){for(const U of vn(S.WsText,v,bc.encode(D)))B.send(U);return}const P=D instanceof ArrayBuffer?new Uint8Array(D.slice(0)):(()=>{const U=new Uint8Array(D.byteLength);return U.set(new Uint8Array(D.buffer,D.byteOffset,D.byteLength)),U})();for(const U of vn(S.WsBinary,v,P))B.send(U)},close(D=1e3,P=""){C===Tn||C===Mn||(C===Yo&&B&&!B.dead&&(C=Mn,B.send(we(S.WsClose,v,oo({code:D,reason:P})))),J(D,P))}},J=(D,P,U=!1)=>{if(!T){if(T=!0,B&&(B.streams.delete(v),B.assembler.dropStream(v)),C=Tn,U)try{se.onerror?.()}catch{}try{se.onclose?.({code:D,reason:P})}catch{}}};return(async()=>{let D;try{D=await kn()}catch($){J(1006,me($).message,!0);return}if(T)return;B=D,v=D.nextStreamId(),D.streams.set(v,{handleFrame($,Y){if($===S.WsOpened){if(C===Sn){C=Yo;try{se.onopen?.()}catch{}}return}if($===S.WsText){try{se.onmessage?.({data:wc.decode(Y)})}catch{}return}if($===S.WsBinary){const X=new ArrayBuffer(Y.byteLength);new Uint8Array(X).set(Y);try{se.onmessage?.({data:X})}catch{}return}if($===S.WsClose){let X=1e3,N="";try{const Ke=ro(Y,fc);X=Ke.code,N=Ke.reason}catch{}J(X,N);return}if($===S.StreamAbort){let X="stream aborted";try{X=ro(Y,Dn).reason}catch{}J(1006,X,!0)}},fail($){J(1012,$.message,!0)}});const{path:P,query:U}=Ti(A),ve=M&&M.length>0?{path:P,query:U,protocols:M}:{path:P,query:U};D.send(we(S.WsOpen,v,oo(ve)))})(),se},Ri=()=>{if(u)return;u=!0,F+=1,Go(),Ko(),h?.(),h=null;const A=g;g=null;const M=new Error("relay tunnel closed");A&&wn(A,M),Pt(M);try{w?.close()}catch{}w=null,fe({state:"idle"})};return Vo(),{fetch:Mi,openWebSocket:Pi,getStatus:()=>m,subscribeStatus(A){return p.add(A),()=>{p.delete(A)}},close:Ri}};let le=null,xe=null;const Bc=(e,t)=>e.relayUrl===t.relayUrl&&e.serverId===t.serverId&&e.grant===t.grant&&JSON.stringify(e.hostEncPubJwk)===JSON.stringify(t.hostEncPubJwk),Lo=()=>le,xF=()=>!le||!xe?null:{relayUrl:xe.relayUrl,serverId:xe.serverId,hostEncPubJwk:{...xe.hostEncPubJwk}},OF=()=>le!==null,vc=e=>(le&&xe&&Bc(xe,e)||(le?.close(),xe=e,le=Kr(e)),le),_F=(e,t)=>{le!==t&&(le?.close(),xe=e,le=t)},Dc=()=>{le?.close(),le=null,xe=null};let Ya=()=>null,Qa="",wo={},nt="",Wt=0,Xe=null,wt="",Gt=0,at="",Ze=null,He="",po=0,ho=0;const Vr=1e4,Sc=e=>e.toLowerCase()==="authorization",Xa=e=>{const t={};for(const[o,r]of Object.entries(e||{})){const n=o.trim(),a=r.trim();n&&a&&!Sc(n)&&(t[n]=a)}return t},Mc=(e,t)=>{const o=Object.entries(e);return o.length!==Object.keys(t).length?!1:o.every(([r,n])=>t[r]===n)},No=e=>typeof e!="string"?"":e.trim(),Tc=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_CLIENT_TOKEN__;return No(e)},Pc=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_API_BASE_URL__;return typeof e=="string"?e.trim():""},Za=(e,t)=>{const o=typeof e=="string"&&e.trim()?e.trim():Pc();if(!o)return t;try{return new URL(t,`${o.replace(/\/+$/,"")}/`).toString()}catch{return t}},Jr=e=>{try{return new URL(e).origin}catch{return""}},es=()=>{wt="",Gt=0,at="",Ze=null,He="",po+=1},Jt=()=>{nt="",Wt=0,es()},ts=()=>{ho+=1,Xe=null,Jt(),Yr()},os=e=>{const t=No(e);Qa=t,ts(),Ya=()=>t?{type:"bearer",token:t}:null},rs=e=>{const t=Xa(e);Mc(wo,t)||(wo=t,ts())},Uo=()=>{if(Object.keys(wo).length>0)return wo;if(typeof window>"u")return{};const e=window.__AIWORKER_RUNTIME_HEADERS__;return e&&typeof e=="object"?Xa(e):{}},ns=()=>Qa||Tc(),Rc=(e,t)=>{const o=No(e);if(!o||typeof t!="number"||!Number.isFinite(t)){Jt();return}const r=nt;nt=o,Wt=t,r&&r!==o&&Lc()},as=()=>!nt||Wt<=Date.now()+Vr?(Jt(),""):nt,ss=e=>{const t=Jr(e);return!t||at!==t?"":!wt||Gt<=Date.now()+Vr?(wt="",Gt=0,at="",""):wt},Ic=()=>{const e=as();return!e&&(ns()||typeof window<"u")&&jo().catch(()=>{}),e},xc=e=>{const t=e?ss(e):"";return!t&&e&&typeof window<"u"&&ds(e).catch(()=>{}),t},is=async()=>{const e=await Ya(),t=e?.type==="bearer"?No(e.token):ns();return t?{type:"bearer",token:t}:null},cs=e=>{if(Xe)return Xe;const t=ho,r=(async()=>{const n=await is(),a=new Headers;for(const[u,m]of Object.entries(Uo()))a.set(u,m);n?.type==="bearer"&&a.set("Authorization",`Bearer ${n.token}`);const s=Lo(),i=s?await s.fetch("/auth/url-token",{method:"POST",headers:a}):await fetch(Za(e,"/auth/url-token"),{method:"POST",headers:a,credentials:"include"});if(!i.ok)throw t===ho&&Jt(),new Error(`Failed to mint runtime URL auth token (${i.status})`);const c=await i.json().catch(()=>null),d=typeof c?.token=="string"?c.token.trim():"",l=typeof c?.expiresAt=="number"?c.expiresAt:0;if(t!==ho)throw new Error("Runtime URL auth token response is stale");if(Rc(d,l),!nt)throw new Error("Runtime URL auth token response was invalid");return nt})().finally(()=>{Xe===r&&(Xe=null)});return Xe=r,Xe},Oc=e=>{const t=Jr(e);if(!t)return Promise.reject(new Error("Local runtime URL auth origin was invalid"));if(Ze&&He===t)return Ze;const o=po,n=(async()=>{const a=await fetch(Za(t,"/auth/url-token"),{method:"POST",credentials:"include"});if(!a.ok)throw o===po&&t===He&&(wt="",Gt=0,at=""),new Error(`Failed to mint local runtime URL auth token (${a.status})`);const s=await a.json().catch(()=>null),i=typeof s?.token=="string"?s.token.trim():"",c=typeof s?.expiresAt=="number"?s.expiresAt:0;if(!i||!Number.isFinite(c))throw new Error("Local runtime URL auth token response was invalid");if(o!==po||t!==He)throw new Error("Local runtime URL auth token response is stale");return wt=i,Gt=c,at=t,i})().finally(()=>{Ze===n&&(Ze=null,He="")});return Ze=n,He=t,Ze},jo=async e=>{const t=as();return t||cs(e)},ds=async e=>{const t=Jr(e);if(!t)throw new Error("Local runtime URL auth origin was invalid");const o=ss(t);return o||((at&&at!==t||He&&He!==t)&&es(),Oc(t))};let bt=0,Ut=null,ls=null;const pr=new Set,_c=5e3,Lc=()=>{for(const e of pr)try{e()}catch{}},us=()=>{Ut!==null&&(clearTimeout(Ut),Ut=null)},Yr=()=>{if(us(),bt<=0||typeof window>"u")return;const e=Wt-Vr-_c,t=Wt>0?Math.max(0,e-Date.now()):0;Ut=setTimeout(()=>{Ut=null,!(bt<=0)&&cs(ls).catch(()=>{}).finally(()=>{Yr()})},t)},LF=e=>{typeof e=="string"&&e.trim()&&(ls=e.trim()),bt+=1,Yr();let t=!1;return()=>{t||(t=!0,bt=Math.max(0,bt-1),bt===0&&us())}},NF=e=>(pr.add(e),()=>{pr.delete(e)}),Nc=async e=>{const t=new Headers(e);for(const[r,n]of Object.entries(Uo()))t.has(r)||t.set(r,n);if(t.has("Authorization"))return t;const o=await is();return o?.type==="bearer"&&t.set("Authorization",`Bearer ${o.token}`),t},Ao=ct(e=>({state:"ok",markExpired:()=>e(t=>t.state==="expired"?t:{state:"expired"}),markReauthenticating:()=>e({state:"reauthenticating"}),markAuthenticated:()=>e({state:"ok"})})),Uc=15e3,jc=5*6e4;let hr=0,Qo=!1;const Hc=e=>e.includes("/auth/session")||e.includes("/api/client-auth/"),zc=e=>{const t=e.startsWith("/")?e:(()=>{try{return new URL(e).pathname}catch{return""}})();return!t.startsWith("/api/")&&!t.startsWith("/auth/")?!1:!Hc(t)},fs=async()=>{if(!Qo){Qo=!0;try{const{runtimeFetch:e}=await Gr(async()=>{const{runtimeFetch:o}=await Promise.resolve().then(()=>id);return{runtimeFetch:o}},void 0),t=await e("/auth/session",{credentials:"include"});if(t.status===401){Ao.getState().markExpired();return}if(t.ok){const{state:o,markAuthenticated:r}=Ao.getState();o==="expired"&&r()}}catch{}finally{Qo=!1}}},$c=(e,t)=>{if(t!==401||Ao.getState().state==="expired"||!zc(e))return;const o=Date.now();o-hr<Uc||(hr=o,fs())};let Rn=!1;const UF=()=>{if(Rn)return;Rn=!0;let e=Date.now();const t=()=>{if(Ao.getState().state!=="ok")return;const o=Date.now();o-e<jc||(e=o,hr=o,fs())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&t()}),window.addEventListener("focus",t)},Eo=/^[a-z][a-z\d+.-]*:\/\//i,Wc=e=>{const t=e.trim();return t?t.startsWith("/")?t:`/${t}`:"/"},ko=e=>typeof e!="string"?"":e.trim().replace(/\/+$/,""),Gc=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_API_BASE_URL__;return ko(e)},qc=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_LOCAL_ORIGIN__;return ko(e)},Kc=()=>Object.keys(Uo()).length>0,Vc=e=>{const t=e.currentHref?.();return t||(typeof window<"u"?window.location.href||window.location.origin:"")},Fr=(e,t)=>{if(!t)return;const o=t instanceof URLSearchParams?Array.from(t.entries()):Object.entries(t);for(const[r,n]of o)n!=null&&e.searchParams.set(r,String(n))},Jc=(e,t)=>{if(!t)return e;const o=new URLSearchParams;Fr({searchParams:o},t);const r=o.toString();return r?e.includes("?")?`${e}&${r}`:`${e}?${r}`:e},In=(e,t,o)=>{if(Eo.test(t)){const a=new URL(t);return Fr(a,o),a.toString()}const r=Wc(t);if(!e)return Jc(r,o);const n=new URL(r,`${e}/`);return Fr(n,o),n.toString()},Xo=e=>{const t=Ic();if(!t)return e;const o=Eo.test(e)?new URL(e):new URL(e,"http://openchamber.local");return o.searchParams.set("oc_url_token",t),Eo.test(e)?o.toString():`${o.pathname}${o.search}${o.hash}`},ms=(e,t)=>{const o=Eo.test(e)?new URL(e):new URL(e,Vc(t));return o.protocol==="ws:"||o.protocol==="wss:"||(o.protocol=o.protocol==="https:"?"wss:":"ws:"),o.toString()},xn=(e,t,o)=>{if(!Kc())return null;const r=qc();if(!r)return null;try{const n=new URL(`/api/openchamber/realtime-proxy/${e==="sse"?"sse":"ws"}`,`${r}/`);n.searchParams.set("url",t);const a=xc(r);return a&&n.searchParams.set("oc_url_token",a),e==="ws"?(n.protocol=n.protocol==="https:"?"wss:":"ws:",ms(n.toString(),o)):n.toString()}catch{return null}},Qr=(e={})=>{const t=ko(e.apiBaseUrl),o=ko(e.realtimeBaseUrl),r=()=>t||Gc(),n=()=>o||r(),a=(i,c)=>In(r(),i,c),s=(i,c)=>In(n(),i,c);return{api:a,authenticatedAsset:(i,c)=>Xo(a(i,c)),auth:a,health:i=>a("/health",i),rawFile:(i,c)=>a("/api/fs/raw",{path:i,download:c?.download===!0?!0:void 0,allowOutsideWorkspace:c?.allowOutsideWorkspace===!0?!0:void 0,outsideFileGrant:c?.outsideFileGrant}),sse:(i,c)=>{const d=Xo(s(i,c));return xn("sse",d,e)||d},websocket:(i,c)=>{const d=ms(Xo(s(i,c)),e);return xn("ws",d,e)||d}}};let Co=Qr();const ne=()=>Co,Yc=e=>{Co=e},gs=e=>(Co=Qr(e),Co),st=e=>e.startsWith("/api/")||e==="/api"||e.startsWith("/auth/")||e==="/auth"||e==="/health",Qc=()=>typeof window>"u"?"":window.location.origin||"",Xr=e=>{if(typeof window>"u")return!1;const t=Qc();if(t&&e.origin===t)return!0;try{const o=new URL(window.location.href||t);return e.protocol===o.protocol&&e.host===o.host}catch{return!1}},Zr=e=>/^[a-z][a-z\d+.-]*:\/\//i.test(e),Xc=e=>/(^|\.)ngrok(?:-free)?\.(?:app|dev|io)$/i.test(e),Ue=(e,t)=>{try{Xc(new URL(e).hostname)&&!t.has("ngrok-skip-browser-warning")&&t.set("ngrok-skip-browser-warning","aiworker")}catch{}return t},en=(e,t)=>{if(!t)return;const o=t instanceof URLSearchParams?Array.from(t.entries()):Object.entries(t);for(const[r,n]of o)n!=null&&e.searchParams.set(r,String(n))},Fo=e=>{try{const t=ne().api("/api");if(!/^[a-z][a-z\d+.-]*:\/\//i.test(t))return!1;const o=new URL(t);return e.origin!==o.origin?!1:st(e.pathname)}catch{return!1}},Zo=e=>{if(st(e))return!0;if(!/^[a-z][a-z\d+.-]*:\/\//i.test(e))return!1;try{const t=new URL(e);return Xr(t)&&st(t.pathname)}catch{return!1}},Zc=(e,t)=>{try{const o=new URL(e);if(!Xr(o))return e;const r=We(`${o.pathname}${o.search}`,t);return!Zr(r)&&(o.protocol==="http:"||o.protocol==="https:")?(en(o,t),o.toString()):o.hash?`${r}${o.hash}`:r}catch{return e}},We=(e,t)=>e==="/health"?ne().health(t):e.startsWith("/auth/")||e==="/auth"?ne().auth(e,t):st(e)?ne().api(e,t):/^[a-z][a-z\d+.-]*:\/\//i.test(e)?Zc(e,t):e,ed=e=>{const t=e instanceof Request?e.url:e.toString();if(!Zr(t))return st(t);try{return Fo(new URL(t))}catch{return!1}},ps=e=>{for(let t=0;t<e.length;t+=1)if(e.charCodeAt(t)>255)return!1;return!0},td=(e,t)=>!ps(t),yr=e=>{if(!e)return;const t=e instanceof Headers?Array.from(e.entries()):Array.isArray(e)?e:Object.entries(e);if(t.length===0)return;const o=[];let r=!1,n=!1;for(const[a,s]of t)td(a,s)?(o.push([a,encodeURIComponent(s)]),r=!0,a.toLowerCase()==="x-opencode-directory"&&(n=!0)):o.push([a,s]);return n&&o.push(["x-opencode-directory-encoding","uri"]),r?o:void 0},Me=async(e,t,o=!0)=>{const r=new Headers(yr(e)??e);return t&&new Headers(yr(t)??t).forEach((n,a)=>r.set(a,n)),o?Nc(r):r},od=(e,t)=>{if(!t)return e;const o=new URL(e,qr);return en(o,t),`${o.pathname}${o.search}`},hs=(e,t)=>{const o=e instanceof Request?e.url:e.toString();if(!Zr(o))return st(o)?od(o,t):null;try{const r=new URL(o);return!Xr(r)||!st(r.pathname)?null:(en(r,t),`${r.pathname}${r.search}`)}catch{return null}},rd=async(e,t,o)=>{const r=Lo();if(!r)return null;const n=hs(e,o);if(n===null)return null;const a=e instanceof Request?e.headers:void 0,s=await Me(a,t.headers,!0);return e instanceof Request?r.fetch(e,{...t,headers:s}):r.fetch(n,{...t,headers:s})},Fs="half",br=(e,t={})=>{const o={...t,duplex:Fs};return new Request(e,o)},ys=(e,t)=>{const o={method:e.method,headers:e.headers,body:e.body,signal:e.signal,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,integrity:e.integrity,keepalive:e.keepalive,duplex:Fs};return new Request(t,o)},nd=(e,t)=>{if(typeof e=="string")return We(e,t);if(e instanceof URL)return We(e.toString(),t);const o=We(e.url,t);return o===e.url?e:ys(e,o)},ad=/\/api\/(config|path|app\/agents|agent|project|command)(\b|\/|\?|$)/,io=new Map,sd=(e,t,o)=>o||e!=="GET"||t.includes("/event")||!ad.test(t)?null:`GET ${t}`,f=async(e,t={})=>{const{query:o,...r}=t,n=Lo(),a=n?hs(e,o):null;let s,i,c;if(n&&a!==null){const g=e instanceof Request?e.headers:void 0,w=await Me(g,r.headers,!0);s=e instanceof Request?()=>n.fetch(e,{...r,headers:w}):()=>n.fetch(a,{...r,headers:w}),i=a,c=String(r.method??(e instanceof Request?e.method:"GET")).toUpperCase()}else{const g=nd(e,o),w=g instanceof Request?g.headers:void 0,h=await Me(w,r.headers,ed(g)),F=g instanceof Request?g.url:g instanceof URL?g.toString():String(g);Ue(F,h),s=g instanceof Request?()=>fetch(br(g,{...r,headers:h})):()=>fetch(g,{...r,headers:h}),i=F,c=String(r.method??(g instanceof Request?g.method:"GET")).toUpperCase()}const d=s;s=()=>d().then(g=>($c(i,g.status),g));const l=r.signal!=null||e instanceof Request,u=sd(c,i,l);if(!u)return s();const m=io.get(u);if(m)return m.then(g=>g.clone());const p=s();return io.set(u,p),p.then(()=>io.delete(u),()=>io.delete(u)),p.then(g=>g.clone())};let On=!1;const bs=()=>{if(On||typeof window>"u")return;On=!0;const e=window.fetch.bind(window);window.fetch=async(t,o)=>{const r=await rd(t,o??{});if(r)return r;if(typeof t=="string"){if(!Zo(t)){try{const s=new URL(t);if(Fo(s)){const i=await Me(void 0,o?.headers);return Ue(s.toString(),i),e(t,{...o,headers:i})}}catch{}return e(t,o)}const n=await Me(void 0,o?.headers),a=We(t);return Ue(a,n),e(a,{...o,headers:n})}if(t instanceof URL){const n=t.toString();if(!Zo(n)){if(Fo(t)){const i=await Me(void 0,o?.headers);return Ue(t.toString(),i),e(t,{...o,headers:i})}return e(t,o)}const a=await Me(void 0,o?.headers),s=We(n);return Ue(s,a),e(s,{...o,headers:a})}if(t instanceof Request){if(!Zo(t.url)){try{const i=new URL(t.url);if(Fo(i)){const c=await Me(t.headers,o?.headers);return Ue(i.toString(),c),e(br(t,{...o,headers:c}))}}catch{}return e(t,o)}const n=await Me(t.headers,o?.headers),a=We(t.url);Ue(a,n);const s=a===t.url?t:ys(t,a);return e(br(s,{...o,headers:n}))}return e(t,o)}},id=Object.freeze(Object.defineProperty({__proto__:null,addRuntimeProxyHeaders:Ue,buildRuntimeFetchUrl:We,installRuntimeFetchBridge:bs,isLatin1Safe:ps,runtimeFetch:f,sanitizeHeadersForBrowser:yr},Symbol.toStringTag,{value:"Module"})),wr="aiworker:runtime-endpoint-changed",Ar="aiworker:runtime-endpoint-will-change";let kt="",qt="";const er=(e,t,o)=>{try{e[t]=o}catch{}},tn=e=>{try{const t=new URL(e);return t.hash="",t.search="",t.pathname=t.pathname.replace(/\/+$/,"")||"/",`url:${t.toString().replace(/\/+$/,"")}`}catch{return`url:${e.trim().replace(/\/+$/,"")||"default"}`}},cd="mobile-disconnected",dd="url:default",jF=e=>e===""||e===dd||e===cd,ws=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_API_BASE_URL__;return typeof e=="string"?e.trim():""},As=()=>{if(typeof window>"u")return"";const e=window.__AIWORKER_LOCAL_ORIGIN__;return typeof e=="string"?e.trim():""},Es=(e,t)=>{if(!e||!t)return!1;try{return new URL(e).origin===new URL(t).origin}catch{return!1}},on=()=>kt||ws();let tr="",_n=null,Ln,Nn;const Un=e=>{if(typeof window>"u")return;const t=window[e];return typeof t=="string"?t:void 0},H=()=>{if(qt)return qt;const e=Un("__AIWORKER_API_BASE_URL__"),t=Un("__AIWORKER_LOCAL_ORIGIN__");if(_n===kt&&Ln===e&&Nn===t)return tr;const o=on();return tr=Es(o,As())?"local":tn(o),_n=kt,Ln=e,Nn=t,tr},ld=(e={})=>{if(kt||qt)return;const t=e.apiBaseUrl?.trim()||ws();t&&(kt=t,qt=e.runtimeKey?.trim()||(Es(t,As())?"local":tn(t)))},Bo=e=>{const t=e.apiBaseUrl.trim(),o=on(),r=H(),n=e.runtimeKey?.trim()||tn(t),a={apiBaseUrl:t,previousApiBaseUrl:o,runtimeKey:n,previousRuntimeKey:r};if(typeof window<"u"&&window.dispatchEvent(new CustomEvent(Ar,{detail:a})),kt=t,qt=n,typeof window<"u"){const s=window;er(s,"__AIWORKER_API_BASE_URL__",t),er(s,"__AIWORKER_CLIENT_TOKEN__",e.clientToken||void 0),er(s,"__AIWORKER_RUNTIME_HEADERS__",e.requestHeaders||void 0)}gs({apiBaseUrl:t,realtimeBaseUrl:t}),rs(e.requestHeaders||null),os(e.clientToken||null),e.relay?vc(e.relay):Dc(),jo(t).catch(()=>{}),typeof window<"u"&&window.dispatchEvent(new CustomEvent(wr,{detail:a}))},ud=e=>{if(typeof window>"u")return()=>{};const t=o=>{e(o.detail)};return window.addEventListener(Ar,t),()=>window.removeEventListener(Ar,t)},ks=e=>{if(typeof window>"u")return()=>{};const t=o=>{e(o.detail)};return window.addEventListener(wr,t),()=>window.removeEventListener(wr,t)},fd=["local","remote",null],md=["ok","not-configured","unreachable","incompatible","wrong-service","missing"];function Cs(e){if(!e||typeof e!="object")return{valid:!1};const t=e,o=t.localAvailable===!1?{localAvailable:!1}:{},r=t.target,n=t.status;if(r!==null&&(typeof r!="string"||!fd.includes(r)))return{valid:!1};if(typeof n!="string"||!md.includes(n))return{valid:!1};if(r==="remote"||r==="local"){if(n==="ok"&&r==="local")return{valid:!0,outcome:{target:"local",status:"ok",...o}};if(n==="ok"&&r==="remote")return typeof t.hostId!="string"||typeof t.url!="string"?{valid:!1}:{valid:!0,outcome:{target:"remote",status:"ok",hostId:t.hostId,url:t.url,...o}};if(n==="unreachable")return r==="local"?{valid:!0,outcome:{target:"local",status:"unreachable",...o}}:typeof t.hostId!="string"||typeof t.url!="string"?{valid:!1}:{valid:!0,outcome:{target:"remote",status:"unreachable",hostId:t.hostId,url:t.url,...o}};if(n==="incompatible"||n==="wrong-service")return r!=="remote"?{valid:!1}:typeof t.hostId!="string"||typeof t.url!="string"?{valid:!1}:{valid:!0,outcome:{target:"remote",status:n,hostId:t.hostId,url:t.url,...o}};if(n==="missing")return r!=="remote"?{valid:!1}:typeof t.hostId!="string"?{valid:!1}:{valid:!0,outcome:{target:"remote",status:"missing",hostId:t.hostId,...o}}}if(r===null){if(n==="not-configured")return{valid:!0,outcome:{target:null,status:"not-configured",...o}};if(n==="missing")return{valid:!1}}return{valid:!1}}function HF(e){if(!e.isDesktopShell)return null;const t=e.bootOutcome;if(!t)return null;const o=t.localAvailable===!1?{localAvailable:!1}:{};if(t.status==="ok"){if(t.target==="local")return{screen:"main",...o};if(t.target==="remote")return{screen:"main",hostId:t.hostId,url:t.url,...o}}if(t.target===null&&t.status==="not-configured")return{screen:"chooser",...o};if(t.target==="local"&&t.status==="unreachable")return{screen:"chooser",...o};if(t.target==="remote"){if(t.status==="unreachable")return{screen:"recovery",variant:"remote-unreachable",hostId:t.hostId,url:t.url,...o};if(t.status==="incompatible")return{screen:"recovery",variant:"remote-incompatible",hostId:t.hostId,url:t.url,...o};if(t.status==="wrong-service")return{screen:"recovery",variant:"remote-wrong-service",hostId:t.hostId,url:t.url,...o};if(t.status==="missing")return{screen:"recovery",variant:"remote-missing",hostId:t.hostId,...o}}return null}function zF(e){return e.isDesktopShell?e.bootOutcomeKnown?e.bootViewIsMain===!1?!0:e.isInitialized:!1:e.isInitialized}function $F(e){return e.isDesktopShell&&!e.isDesktopLocalOriginActive}function Bs(){if(gd()!=="valid")return null;const t=window.__AIWORKER_DESKTOP_BOOT_OUTCOME__,o=Cs(t);return o.valid?o.outcome:null}function gd(){if(typeof window>"u")return"not-injected";const e=window.__AIWORKER_DESKTOP_BOOT_OUTCOME__;return e==null?"not-injected":Cs(e).valid?"valid":"malformed"}let Er=null;const WF=e=>{Er=e},Ho=()=>Er||(typeof window>"u"?null:window.__AIWORKER_RUNTIME_APIS__??null),vs=()=>typeof window>"u"?null:window.__VSCODE_CONFIG__??null,pd=(e=vs())=>!!e,hd=()=>typeof window>"u"?null:window.__AIWORKER_ELECTRON__??null,Dt=()=>typeof window>"u"?null:window.__AIWORKER_DESKTOP__??null,Yt=()=>hd()?.runtime==="electron",Fd=()=>{if(typeof window>"u")return null;const e=window.__AIWORKER_PLATFORM__;return typeof e=="string"?e:null},yd="right",GF=()=>{if(!Yt())return!1;const e=Fd();return e==="win32"||e==="linux"},qF=e=>e==="left"?"left":yd,KF=e=>e==="left"?["close","minimize","maximize"]:["minimize","maximize","close"],ee=()=>typeof Dt()?.invoke=="function",St=()=>Yt()&&ee(),z=async(e,t)=>{const o=Dt();return typeof o?.invoke!="function"?null:o.invoke(e,t??{})},VF=async()=>{if(!St()||!te())return null;try{const e=await z("desktop_get_launch_at_login");return!e||typeof e.supported!="boolean"||typeof e.enabled!="boolean"?null:e}catch(e){return console.warn("Failed to get launch at login status",e),null}},JF=async e=>{if(!St()||!te())return null;try{const t=await z("desktop_set_launch_at_login",{enabled:e});return!t||typeof t.supported!="boolean"||typeof t.enabled!="boolean"?null:t}catch(t){return console.warn("Failed to set launch at login status",t),null}},YF=async()=>{if(!St()||!te())return null;try{const e=await z("desktop_get_minimize_to_tray");return!e||typeof e.supported!="boolean"||typeof e.enabled!="boolean"?null:e}catch(e){return console.warn("Failed to get minimize to tray status",e),null}},QF=async e=>{if(!St()||!te())return null;try{const t=await z("desktop_set_minimize_to_tray",{enabled:e});return!t||typeof t.supported!="boolean"||typeof t.enabled!="boolean"?null:t}catch(t){return console.warn("Failed to set minimize to tray status",t),null}},XF=async()=>{if(!St()||!te())return null;try{const e=await z("desktop_get_keep_awake");return!e||typeof e.supported!="boolean"||typeof e.enabled!="boolean"||typeof e.active!="boolean"?null:e}catch(e){return console.warn("Failed to get keep awake status",e),null}},ZF=async e=>{if(!St()||!te())return null;try{const t=await z("desktop_set_keep_awake",{enabled:e});return!t||typeof t.supported!="boolean"||typeof t.enabled!="boolean"||typeof t.active!="boolean"?null:t}catch(t){return console.warn("Failed to set keep awake status",t),null}},jn=e=>{const t=e.trim();if(!t)return null;try{return new URL(t).origin}catch{try{return new URL(t.endsWith("/")?t:`${t}/`).origin}catch{return null}}},or=e=>{const t=e.trim();if(!t)return null;try{return new URL(t)}catch{try{return new URL(t.endsWith("/")?t:`${t}/`)}catch{return null}}},bd=e=>e.replace(/^\[|\]$/g,"").toLowerCase(),Rt=e=>{const t=bd(e);return t==="localhost"||t==="127.0.0.1"||t==="::1"},te=()=>{if(typeof window>"u"||!Mt())return!1;if(H()==="local")return!0;const e=typeof window.__AIWORKER_LOCAL_ORIGIN__=="string"?window.__AIWORKER_LOCAL_ORIGIN__:"",t=or(e),o=or(on());if(!o&&t&&Bs()?.target==="local")return!0;if(t&&o){if(t.origin===o.origin)return!0;const s=t.port||(t.protocol==="https:"?"443":"80"),i=o.port||(o.protocol==="https:"?"443":"80");return t.protocol===o.protocol&&s===i&&Rt(t.hostname)&&Rt(o.hostname)}const r=or(window.location.origin);if(t&&r){if(t.origin===r.origin)return!0;const s=t.port||(t.protocol==="https:"?"443":"80"),i=r.port||(r.protocol==="https:"?"443":"80");return t.protocol===r.protocol&&s===i&&Rt(t.hostname)&&Rt(r.hostname)}const n=jn(e),a=jn(window.location.origin)||window.location.origin;return n&&a&&n===a?!0:!!(r&&Rt(r.hostname))},Mt=()=>typeof window>"u"?!1:Yt(),e0=async()=>{if(!Mt())return!1;try{return!!await z("desktop_focus_window")}catch{return!1}},wd=()=>Mt()&&ee()&&te(),t0=async()=>{if(!Mt())return!1;try{return await z("desktop_start_window_drag"),!0}catch{return!1}},Oe=()=>pd()?!0:Ho()?.runtime?.isVSCode===!0,o0=()=>{const t=Ho()?.runtime?.platform;return t==="web"?!0:t==="desktop"||t==="vscode"?!1:!Oe()},r0=(e,t=Mt())=>e==="web"&&!t,Ds=async()=>{if(typeof window<"u"){const e=window.__AIWORKER_HOME__;if(e&&e.length>0)return e}return null},n0=async e=>{if(wd())try{const t=await Dt()?.openDialog?.({directory:!0,multiple:!1,title:"Select Working Directory",...e?{defaultPath:e}:{}});return!t||typeof t!="string"?{success:!1,error:"Directory selection cancelled"}:{success:!0,path:t}}catch(t){return console.warn("Failed to request directory access",t),{success:!1,error:t instanceof Error?t.message:String(t)}}return{success:!1,error:"Native directory picker not available"}},Ad=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ed=Ii({path:Cn().min(1),outsideFileGrant:Cn().min(1),expiresAt:xi().finite()}),a0=async e=>{if(ee()&&te())try{const t=await Dt()?.openDialog?.({directory:!1,multiple:!1,title:"Select File",returnGrant:!0,...e?.filters?{filters:e.filters}:{},...e?.defaultPath?{defaultPath:e.defaultPath}:{}});if(!t)return{success:!1,error:"File selection cancelled"};if(typeof t=="string")return{success:!0,path:t};if(!Ad(t))return{success:!1,error:"File selection cancelled"};const o=typeof t.path=="string"?t.path:"";return o?{success:!0,path:o,outsideFileGrant:typeof t.outsideFileGrant=="string"?t.outsideFileGrant:void 0}:{success:!1,error:"File selection cancelled"}}catch(t){return console.warn("Failed to request file access",t),{success:!1,error:t instanceof Error?t.message:String(t)}}return{success:!1,error:"Native file picker not available"}},s0=async e=>{const t=typeof e=="string"?e.trim():"";if(!t)return{success:!1,error:"Path is required"};if(!ee()||!te())return{success:!1,error:"Native file access not available"};try{const o=await Dt()?.grantFileAccess?.(t),r=Ed.safeParse(o);return r.success?{success:!0,...r.data}:{success:!1,error:"File access was not granted"}}catch(o){return console.warn("Failed to request existing file access",o),{success:!1,error:o instanceof Error?o.message:String(o)}}},i0=async e=>({success:!0}),c0=async e=>({success:!0}),d0=async()=>ee()?await z("desktop_check_for_updates"):null,l0=async e=>{if(!ee())return!1;const t=Dt();let o=null,r=0,n;try{return typeof e=="function"&&t?.listen&&(o=await t.listen("aiworker:update-progress",a=>{const s=a?.payload;if(!s||typeof s!="object")return;const i=s,c=typeof i.event=="string"?i.event:null,d=i.data&&typeof i.data=="object"?i.data:null;if(c==="Started"){r=0,n=typeof d?.contentLength=="number"?d.contentLength:void 0,e({downloaded:r,total:n});return}if(c==="Progress"){const l=d?.downloaded,u=d?.total;typeof l=="number"&&(r=l),typeof u=="number"&&(n=u),e({downloaded:r,total:n});return}c==="Finished"&&e({downloaded:r,total:n})})),await z("desktop_download_and_install_update"),!0}catch(a){throw a instanceof Error?a:new Error(String(a))}finally{if(o)try{const a=o();a instanceof Promise&&await a}catch{}}},u0=async()=>ee()?(await z("desktop_restart"),!0):!1,f0=async()=>{if(!ee())return!1;try{return await z("desktop_restart"),!0}catch(e){return console.warn("Failed to restart desktop app",e),!1}},m0=async()=>{if(!ee()||!te())return null;try{const e=await z("desktop_get_lan_address");return typeof e=="string"&&e.trim().length>0?e.trim():null}catch(e){return console.warn("Failed to get desktop LAN address",e),null}},kd=async(e,t)=>{if(!ee()||!te())return!1;const o=e?.trim();if(!o)return!1;try{return await z("desktop_open_path",{path:o,app:typeof t=="string"&&t.trim().length>0?t.trim():void 0}),!0}catch(r){return console.warn("Failed to open path",r),!1}},g0=async e=>{if(!ee()||!te())return!1;const t=e?.trim();if(!t)return!1;try{return await z("desktop_reveal_path",{path:t}),!0}catch{return kd(t)}},p0=async(e,t)=>{if(!ee()||!te())return null;const o=e?.trim();if(!o)return null;try{const r=await z("desktop_save_markdown_file",{defaultFileName:o,content:t});return typeof r=="string"&&r.trim().length>0?r:null}catch(r){return console.warn("Failed to save markdown file",r),null}},h0=async(e,t,o)=>{if(!ee()||!te())return!1;const r=e?.trim(),n=t?.trim(),a=o?.trim();if(!r||!n||!a)return!1;try{return await z("desktop_open_in_app",{projectPath:r,appId:n,appName:a}),!0}catch(s){return console.warn("Failed to open project in app",s),!1}},F0=async(e,t,o)=>{if(!ee()||!te())return!1;const r=e?.trim(),n=t?.trim(),a=o?.trim();if(!r||!n||!a)return!1;try{return await z("desktop_open_file_in_app",{filePath:r,appId:n,appName:a}),!0}catch(s){return console.warn("Failed to open file in app",s),!1}},y0=async(e,t)=>{if(!ee()||!te())return{apps:[],success:!1,hasCache:!1,isCacheStale:!1};const o=Array.isArray(e)?e.filter(r=>typeof r=="string"):[];if(o.length===0)return{apps:[],success:!0,hasCache:!1,isCacheStale:!1};try{const r=await z("desktop_get_installed_apps",{apps:o,force:t===!0?!0:void 0});if(!r||typeof r!="object")return{apps:[],success:!1,hasCache:!1,isCacheStale:!1};const n=r;return n.supported===!1?{apps:[],success:!0,hasCache:!1,isCacheStale:!1}:Array.isArray(n.apps)?{apps:n.apps.filter(s=>s&&typeof s=="object").map(s=>{const i=s;return{name:typeof i.name=="string"?i.name:"",iconDataUrl:typeof i.iconDataUrl=="string"?i.iconDataUrl:null}}).filter(s=>s.name.length>0),success:!0,hasCache:n.hasCache===!0,isCacheStale:n.isCacheStale===!0}:{apps:[],success:!1,hasCache:!1,isCacheStale:!1}}catch(r){return console.warn("Failed to fetch installed apps",r),{apps:[],success:!1,hasCache:!1,isCacheStale:!1}}},At=16384,vo=globalThis,Cd=e=>{if(vo.Buffer)return vo.Buffer.from(e,"utf8").toString("base64url");const t=new TextEncoder().encode(e);let o="";for(let r=0;r<t.length;r+=32768)o+=String.fromCharCode(...t.slice(r,r+32768));return btoa(o).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")},Ss=e=>{try{if(vo.Buffer)return vo.Buffer.from(e,"base64url").toString("utf8");const t=e.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(e.length/4)*4,"="),o=atob(t),r=new Uint8Array(o.length);for(let n=0;n<o.length;n+=1)r[n]=o.charCodeAt(n);return new TextDecoder().decode(r)}catch{return null}},Bd=e=>{if(typeof e!="string")return null;const t=e.trim();if(!t)return null;try{const o=new URL(t);return o.protocol!=="http:"&&o.protocol!=="https:"?null:(o.hash="",o.toString().replace(/\/+$/g,""))}catch{return null}},vd=e=>{if(typeof e!="string")return null;const t=e.trim();if(!t)return null;try{const o=new URL(t);return o.protocol!=="ws:"&&o.protocol!=="wss:"?null:(o.hash="",o.toString())}catch{return null}},Hn=e=>typeof e=="string"&&e.length>0,Dd=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;return t.kty!=="EC"||t.crv!=="P-256"||!Hn(t.x)||!Hn(t.y)?null:{kty:"EC",crv:"P-256",x:t.x,y:t.y}},Sd=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0,Md=e=>{if(!e||typeof e!="object")return null;const t=e,o=Sd(t.priority);if(t.type==="lan"||t.type==="tunnel"){const r=Bd(t.url);return r?o===void 0?{type:t.type,url:r}:{type:t.type,url:r,priority:o}:null}if(t.type==="relay"){const r=vd(t.relayUrl);if(!r)return null;const n=typeof t.serverId=="string"?t.serverId.trim():"";if(!n)return null;const a=Dd(t.hostEncPubJwk);if(!a)return null;const s=typeof t.grant=="string"&&t.grant.trim()?t.grant.trim():void 0;return{type:"relay",relayUrl:r,serverId:n,hostEncPubJwk:a,...s?{grant:s}:{},...o===void 0?{}:{priority:o}}}return null},rn=e=>{if(!e||typeof e!="object")return null;const t=e;if(t.v!==2)return null;const o=typeof t.pairingId=="string"?t.pairingId.trim():"",r=typeof t.secret=="string"?t.secret.trim():"";if(!o||!r)return null;const n=Array.isArray(t.candidates)?t.candidates.map(Md).filter(c=>!!c):[];if(n.length===0)return null;const a=typeof t.expiresAt=="string"&&t.expiresAt.trim()?t.expiresAt.trim():void 0;if(a){const c=Date.parse(a);if(!Number.isFinite(c)||c<=Date.now())return null}const s=typeof t.label=="string"&&t.label.trim()?t.label.trim():void 0,i=typeof t.fingerprint=="string"&&t.fingerprint.trim()?t.fingerprint.trim():void 0;return{v:2,pairingId:o,secret:r,...s?{label:s}:{},...i?{fingerprint:i}:{},...a?{expiresAt:a}:{},candidates:n}},b0=e=>({v:2,pairingId:e.pairingId.trim(),secret:e.secret.trim(),...e.label?.trim()?{label:e.label.trim()}:{},...e.fingerprint?.trim()?{fingerprint:e.fingerprint.trim()}:{},...e.expiresAt?.trim()?{expiresAt:e.expiresAt.trim()}:{},candidates:e.candidates}),w0=e=>{const t=rn(e);if(!t)throw new Error("Invalid pairing connection payload");const o=new URLSearchParams;return o.set("v","2"),o.set("p",Cd(JSON.stringify(t))),`aiworker://connect?${o.toString()}`},Td=e=>{const t=e.trim();if(!t||t.length>At)return null;try{const o=new URL(t);if(o.protocol!=="aiworker:"||o.hostname!=="connect"||o.searchParams.get("v")!=="2")return null;const r=o.searchParams.get("p")||"";if(!r||r.length>At)return null;const n=Ss(r);return!n||n.length>At?null:rn(JSON.parse(n))}catch{return null}},A0=e=>{const t=e.trim();if(!t||t.length>At)return null;const o=t.indexOf("?");if(o===-1||!/^aiworker:\/\/connect\/?$/i.test(t.slice(0,o)))return null;let r=null,n=null;for(const s of t.slice(o+1).split("&")){const i=s.indexOf("=");if(i===-1)continue;const c=s.slice(0,i),d=s.slice(i+1);c==="v"?r=d:c==="p"&&(n=d)}if(r!=="2"||!n||n.length>At)return null;const a=Ss(n);if(!a||a.length>At)return null;try{return rn(JSON.parse(a))}catch{return null}},Ct=e=>typeof e=="object"&&e!==null,Pd=e=>e.trim().toLowerCase()==="authorization",Rd=e=>{if(!Ct(e))return;const t={};for(const[o,r]of Object.entries(e)){const n=o.trim(),a=typeof r=="string"?r.trim():"";!n||!a||/[\r\n:]/.test(n)||/[\r\n]/.test(a)||Pd(n)||(t[n]=a)}return Object.keys(t).length>0?t:void 0},Id=e=>`relay://${e}`,xd=e=>{if(!Ct(e))return null;const t=Z(e,"relayUrl")||Z(e,"relay_url"),o=Z(e,"serverId")||Z(e,"server_id"),r=e.hostEncPubJwk??e.host_enc_pub_jwk;return!t||!o||!Ct(r)?null:{relayUrl:t,serverId:o,hostEncPubJwk:r}},Od=()=>{if(typeof navigator>"u")return;const e=navigator.userAgent;if(/Macintosh|Mac OS X/i.test(e))return"macos";if(/Windows/i.test(e))return"windows";if(/Linux/i.test(e))return"linux"},E0=async(e,t)=>{const o=Td(e);if(!o)throw new Error("invalid-connect-link");const r=await Hd().catch(()=>""),n={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({pairingId:o.pairingId,secret:o.secret,clientLabel:o.label||"AiWorker Desktop",clientKind:"desktop",deviceName:"AiWorker Desktop",devicePlatform:Od(),...r?{dedupeKey:`desktop:${r}`}:{}})},a=async h=>{if(!h.ok)return null;const F=await h.json().catch(()=>null);return(typeof F?.clientToken=="string"?F.clientToken.trim():"")||null};let s=null;const i=[...o.candidates].sort((h,F)=>(h.type==="relay"?1:0)-(F.type==="relay"?1:0));for(const h of i){if(h.type==="relay"){const k=Kr({relayUrl:h.relayUrl,serverId:h.serverId,hostEncPubJwk:h.hostEncPubJwk,...h.grant?{grant:h.grant}:{}});try{const E=await a(await k.fetch("/api/client-auth/pairing/redeem",n));if(E){s={relay:{relayUrl:h.relayUrl,serverId:h.serverId,hostEncPubJwk:h.hostEncPubJwk},token:E};break}}catch{}finally{k.close()}continue}const F=be(h.url);if(F)try{const k=await a(await fetch(`${F}/api/client-auth/pairing/redeem`,n));if(k){s={directUrl:F,token:k};break}}catch{}}if(!s)throw new Error("pairing-redeem-failed");const c=o.candidates.find(h=>h.type==="relay"),d=s.relay||(c?{relayUrl:c.relayUrl,serverId:c.serverId,hostEncPubJwk:c.hostEncPubJwk}:void 0),l=o.candidates.filter(h=>h.type!=="relay").map(h=>be(h.url)).find(h=>!!h),u=s.directUrl||l,m=u||(d?Id(d.serverId):null);if(!m)throw new Error("pairing-missing-transport");const p=t.find(h=>d?h.relay?.serverId===d.serverId:!h.relay&&be(h.apiUrl||h.url)===m),g=p?.id||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`host-${Date.now()}-${Math.random().toString(16).slice(2)}`),w={...p||{},id:g,label:o.label||p?.label||Ld(m),url:m,apiUrl:u,clientToken:s.token,...d?{relay:d}:{}};return{hostId:g,hosts:p?t.map(h=>h.id===g?w:h):[w,...t]}},_d=/^(t|.*(?:token|auth|secret|api).*)$/i,be=e=>{const t=e.trim();if(!t)return null;try{const o=new URL(t);return o.protocol!=="http:"&&o.protocol!=="https:"?null:t.split("#")[0]||null}catch{return null}},k0=e=>{const t=be(e);if(!t)return null;try{const o=new URL(t);if((o.pathname.replace(/\/+$/,"")||"/")==="/connect"&&o.searchParams.has("t"))return{persistedUrl:o.origin,redeemUrl:o.toString(),kind:"tunnel-connect-link"}}catch{return null}return{persistedUrl:t,redeemUrl:null,kind:"normal-host"}},Ld=e=>{const t=be(e);if(!t)return e;try{const o=new URL(t);(o.username||o.password)&&(o.username="",o.password="");const r=Array.from(new Set(Array.from(o.searchParams.keys())));for(const n of r)_d.test(n)&&o.searchParams.set(n,"[REDACTED]");return o.toString()}catch{return t}},C0=(e,t)=>{const o=be(e),r=be(t);if(!o||!r)return!1;try{const n=new URL(o),a=new URL(r);if(n.origin!==a.origin||a.search&&n.search!==a.search)return!1;const s=a.pathname.length>1?a.pathname.replace(/\/+$/,""):a.pathname,i=n.pathname.length>1?n.pathname.replace(/\/+$/,""):n.pathname;return s==="/"?!0:i===s||i.startsWith(`${s}/`)}catch{return!1}},Z=(e,t)=>{const o=e[t];return typeof o=="string"?o:null},zn=(e,t)=>{const o=e[t];return typeof o=="number"&&Number.isFinite(o)?o:null},Nd=e=>{if(!Ct(e))return null;const t=Z(e,"id"),o=Z(e,"label"),r=Z(e,"url"),n=Z(e,"apiUrl")||Z(e,"api_url"),a=Z(e,"clientToken")||Z(e,"client_token"),s=Rd(e.requestHeaders),i=xd(e.relay);return!t||!o||!r?null:{id:t,label:o,url:r,...n?{apiUrl:n}:{},...a?{clientToken:a}:{},...s?{requestHeaders:s}:{},...i?{relay:i}:{}}},Ud=e=>be(e.apiUrl||e.url)||e.apiUrl||e.url,dt=()=>ee()?(e,t)=>z(e,t):null,Ms=async()=>{const e=dt();if(!e)return{hosts:[],defaultHostId:"local",initialHostChoiceCompleted:!1};const t=await e("desktop_hosts_get");if(!Ct(t))return{hosts:[],defaultHostId:null,initialHostChoiceCompleted:!1};const o=t.hosts,r=Array.isArray(o)?o.map(Nd).filter(i=>!!i):[],n=Z(t,"defaultHostId")||Z(t,"default_host_id")||Z(t,"defaultHostID"),a=t.initialHostChoiceCompleted===!0||t.initial_host_choice_completed===!0,s=Z(t,"localOrigin")||Z(t,"local_origin");return{hosts:r,defaultHostId:n,initialHostChoiceCompleted:a,localOrigin:s}},jd=async e=>{const t=dt();if(!t)return;const o={hosts:e.hosts,defaultHostId:e.defaultHostId,initialHostChoiceCompleted:e.initialHostChoiceCompleted};e.localClientToken!==void 0&&(o.localClientToken=e.localClientToken),await t("desktop_hosts_set",{input:o})},B0=async()=>{const e=dt();if(!e)return"";const t=await e("desktop_local_client_token_get").catch(()=>null);return typeof t=="string"?t.trim():""},Hd=async()=>{const e=dt();if(!e)return"";const t=await e("desktop_install_id_get").catch(()=>null);return typeof t=="string"?t.trim():""},zd=8e3,$n=async(e,t,o)=>{const r=new AbortController,n=window.setTimeout(()=>r.abort(),zd);try{return await e.fetch(t,{...o,signal:r.signal})}finally{window.clearTimeout(n)}},v0=async(e,t)=>{const o=Kr({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk}),r=Date.now();let n=!1;try{if(!(await $n(o,"/health")).ok)return{status:"unreachable",latencyMs:0};const s=new Headers({Accept:"application/json"});for(const[d,l]of Object.entries(t?.requestHeaders||{}))d.toLowerCase()!=="authorization"&&s.set(d,l);const i=t?.clientToken?.trim();i&&s.set("Authorization",`Bearer ${i}`);const c=await $n(o,"/auth/session",{headers:s});return c.status===401||c.status===403?{status:"auth",latencyMs:Math.max(0,Date.now()-r)}:c.ok?(n=t?.keepTunnel===!0,{status:"ok",latencyMs:Math.max(0,Date.now()-r),...n?{tunnel:o}:{}}):{status:"unreachable",latencyMs:0}}catch{return{status:"unreachable",latencyMs:0}}finally{n||o.close()}},Ts=async(e,t)=>{const o=dt();if(!o)return{status:"unreachable",latencyMs:0};const r=await o("desktop_host_probe",{url:e,clientToken:t?.clientToken||void 0,requestHeaders:t?.requestHeaders||void 0,expectedServerId:t?.expectedServerId||void 0});if(!Ct(r))return{status:"unreachable",latencyMs:0};const n=r.status,a=n==="ok"||n==="auth"||n==="update-recommended"||n==="incompatible"||n==="wrong-service"||n==="unreachable"?n:"unreachable",s=zn(r,"latencyMs")??zn(r,"latency_ms")??0;return{status:a,latencyMs:s}},D0=async(e,t)=>{const o=dt();o&&await o("desktop_new_window_at_url",{url:e,clientToken:t?.clientToken||void 0,requestHeaders:t?.requestHeaders||void 0})},S0=async e=>{const t=dt();t&&await t("desktop_new_window_for_host",{hostId:e})},$d=5e3,Wd=1500;let rr=!1;const Gd=async e=>{if(!Yt()||rr)return;const t=`host:${e}`;if(H()===t){rr=!0;try{const o=await Ms().catch(()=>null),r=o?.hosts.find(u=>u.id===e);if(!o||!r?.relay)return;const n=r.apiUrl?be(r.apiUrl):null;if(n&&n.startsWith("https://"))return;const a=await f("/api/client-auth/connection/candidates").catch(()=>null);if(!a?.ok)return;const s=await a.json().catch(()=>null);if(!s||s.serverId!==r.relay.serverId)return;const i=Array.isArray(s.candidates)?s.candidates:[],c=[];for(const u of i){if(!u||typeof u!="object")continue;const m=u;if(m.type!=="lan"||typeof m.url!="string")continue;const p=be(m.url);p&&!c.includes(p)&&c.push(p)}if(c.length===0)return;const d=n&&c.includes(n)?n:c[0];d!==n&&await jd({hosts:o.hosts.map(u=>u.id===e?{...u,apiUrl:d}:u),defaultHostId:o.defaultHostId,initialHostChoiceCompleted:o.initialHostChoiceCompleted}).catch(()=>{});const l=await Ts(d,{clientToken:r.clientToken||null,requestHeaders:r.requestHeaders||null,expectedServerId:r.relay.serverId}).catch(()=>({status:"unreachable",latencyMs:0}));if(l.status==="unreachable"||l.status==="wrong-service"||l.status==="incompatible"||H()!==t)return;Bo({apiBaseUrl:d,clientToken:r.clientToken||null,requestHeaders:r.requestHeaders||null,runtimeKey:t})}finally{rr=!1}}},qd=e=>{typeof window>"u"||window.setTimeout(()=>{Gd(e).catch(()=>{})},$d)},Kd=async e=>{if(!Yt())return;const t=await Ms().catch(()=>null);if(!t)return;const o=e||(t.defaultHostId!=="local"?t.defaultHostId:null);if(!o)return;const r=t.hosts.find(u=>u.id===o);if(!r?.relay)return;const n=`host:${r.id}`;if(H()===n)return;const a=u=>{Bo({apiBaseUrl:u,clientToken:r.clientToken||null,requestHeaders:r.requestHeaders||null,runtimeKey:n})},s=()=>{Bo({apiBaseUrl:typeof window<"u"?window.location.origin:"",clientToken:r.clientToken||null,runtimeKey:n,relay:r.relay??void 0}),qd(r.id)},i=r.apiUrl?be(Ud(r)):null;if(!i){s();return}const c=u=>u.status!=="unreachable"&&u.status!=="wrong-service"&&u.status!=="incompatible",d=Ts(i,{clientToken:r.clientToken||null,requestHeaders:r.requestHeaders||null,expectedServerId:r.relay.serverId}).catch(()=>({status:"unreachable",latencyMs:0})),l=await Promise.race([d,new Promise(u=>setTimeout(()=>u(null),Wd))]);if(l){if(c(l)){a(i);return}s();return}s(),d.then(u=>{c(u)&&H()===n&&a(i)})};class Ge extends Error{reason;status;constructor(t,o={}){super(t),this.name="FilesystemError",this.reason=o.reason??"unknown",this.status=o.status}}const M0=e=>e instanceof Ge||!!(e&&typeof e=="object"&&"reason"in e&&typeof e.reason=="string"),kr=e=>{switch(e){case"os-permission":case"already-exists":case"not-found":case"not-directory":case"invalid-response":return e;default:return"unknown"}},Wn=500,Ps=()=>{if(typeof window>"u")return!1;try{return new URLSearchParams(window.location.search).get("startupTrace")==="1"||window.localStorage?.getItem("AIWORKER_STARTUP_TRACE")==="1"}catch{return!1}},T0=()=>Ps(),pe=(e,t)=>{if(!Ps())return;const o=typeof performance<"u"?performance.now():Date.now();window.__AIWORKER_STARTUP_TRACE_START__??=o,window.__AIWORKER_STARTUP_TRACE__??=[],window.__AIWORKER_STARTUP_TRACE__.push({t:Math.round(o-window.__AIWORKER_STARTUP_TRACE_START__),name:e,...t?{data:t}:{}}),window.__AIWORKER_STARTUP_TRACE__.length>Wn&&window.__AIWORKER_STARTUP_TRACE__.splice(0,window.__AIWORKER_STARTUP_TRACE__.length-Wn)},Vd=()=>{const e=typeof window<"u"?window.__AIWORKER_STARTUP_TRACE__??[]:[],t=e.findIndex(r=>r.name==="ModelControls:ready"),o=t>=0?Math.min(e.length,t+8):e.length;return e.slice(0,o).filter(r=>r.name.includes("checkConnection")||r.name.includes("checkHealth")||r.name.includes("initializeApp")||r.name.includes("initApp")||r.name.includes("loadProviders")||r.name.includes("loadAgents")||r.name.includes("config.defaults")||r.name.includes("modelsMetadata")||r.name.includes("ModelControls")||r.name.includes("activateDirectory")||r.name.includes("opencodeClient:setDirectory"))};typeof window<"u"&&(window.__AIWORKER_STARTUP_TRACE_SUMMARY__=Vd);const P0=async(e,t,o)=>{const r=typeof performance<"u"?performance.now():Date.now();pe(`${e}:start`,o);try{const n=await t(),a=typeof performance<"u"?performance.now():Date.now();return pe(`${e}:end`,{durationMs:Math.round(a-r)}),n}catch(n){const a=typeof performance<"u"?performance.now():Date.now();throw pe(`${e}:error`,{durationMs:Math.round(a-r),error:n instanceof Error?n.message:String(n)}),n}},Jd=3,Yd=3e4,Qd=32e3,Xd=3600*1e3,Zd=600*1e3,el=200,tl=new Set([429,502,503,504]),Re=new Map,nn=e=>JSON.stringify([H(),e]);function ol(){const e=Date.now();for(const[t,o]of Re){const r=Math.max(o.lastErrorAt,o.circuitOpenAt);e-r>Xd&&Re.delete(t)}}typeof setInterval<"u"&&setInterval(ol,Zd).unref?.();function rl(e){const t=nn(e);let o=Re.get(t);if(!o)for(o={consecutiveErrors:0,lastErrorAt:0,circuitOpen:!1,circuitOpenAt:0,circuitCooldownMs:Yd},Re.set(t,o);Re.size>el;){const r=Re.keys().next().value;if(!r)break;Re.delete(r)}return o}function nl(e){e&&Re.delete(nn(e))}function Gn(e,t){if(!e)return;const o=rl(e);o.consecutiveErrors+=1,o.lastErrorAt=Date.now(),al(t)&&o.consecutiveErrors>=Jd&&(o.circuitOpen=!0,o.circuitOpenAt=Date.now(),console.warn(`[provider-tracker] Circuit opened for ${e} after ${o.consecutiveErrors} consecutive errors`))}function al(e){return e!==void 0&&tl.has(e)}function sl(e){const t=Re.get(nn(e));return t?.circuitOpen?Date.now()-t.circuitOpenAt>=t.circuitCooldownMs?(t.circuitOpen=!1,t.consecutiveErrors=0,t.circuitCooldownMs=Math.min(t.circuitCooldownMs*2,Qd*4),!1):!0:!1}function il(e){if(!(!e||!sl(e)))throw new Error(`Provider ${e} is temporarily unavailable after repeated errors. Please retry shortly.`)}const qn="/api",cl=1e4,dl=4e3;function tt(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e&&typeof e=="object"&&"message"in e&&typeof e.message=="string")return e.message;try{return JSON.stringify(e)}catch{return String(e)}}const Kn=e=>{if(e instanceof Ge)return e.reason==="not-found"||e.reason==="not-directory";if(e&&typeof e=="object"){const t=e.code;if(t==="ENOENT"||t==="ENOTDIR")return!0}return/\bENOENT\b|\bENOTDIR\b|no such file or directory/i.test(tt(e))};function re(e,t){if(e.error){const o=e.response?.status,r=new Error(`${t} failed${o?` (${o})`:""}: ${tt(e.error)}`);throw o!==void 0&&(r.status=o),r}if(e.data===void 0||e.data===null)throw new Error(`${t} failed: empty response`);return e.data}function mt(e,t){if(e.error){const o=e.response?.status,r=new Error(`${t} failed${o?` (${o})`:""}: ${tt(e.error)}`);throw o!==void 0&&(r.status=o),r}return e.data}const ll=/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//,Vn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ul=14;let Jn=0,nr=0;const fl=e=>{const t=new Uint8Array(e);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(t);else for(let r=0;r<e;r+=1)t[r]=Math.floor(Math.random()*256);let o="";for(let r=0;r<e;r+=1)o+=Vn[t[r]%Vn.length];return o},Yn=e=>{const t=Date.now();t!==Jn&&(Jn=t,nr=0),nr+=1;const o=BigInt(t)*BigInt(4096)+BigInt(nr),r=new Uint8Array(6);for(let a=0;a<6;a+=1)r[a]=Number(o>>BigInt(40-8*a)&BigInt(255));const n=Array.from(r,a=>a.toString(16).padStart(2,"0")).join("");return`${e}_${n}${fl(ul)}`},Qn=e=>{const t=typeof e=="string"&&e.trim().length>0?e.trim():"/api";if(ll.test(t)||typeof window>"u")return t;const o=window.location?.href||window.location?.origin;if(!o)return t;try{return new URL(t,o).toString()}catch(r){return console.warn("Failed to normalize OpenCode base URL:",r),t}},Xn=()=>{try{return ne().api("/api")}catch{return null}},Rs=e=>{const t=typeof AbortSignal<"u"?AbortSignal:void 0;if(typeof t?.timeout=="function")return{signal:t.timeout(e),cleanup:()=>{}};const o=new AbortController,r=setTimeout(()=>o.abort(),e);return{signal:o.signal,cleanup:()=>clearTimeout(r)}},ml=3e4,gl=e=>(typeof e=="string"?e:e instanceof URL?e.toString():e.url).includes("/event"),ar=e=>{const t=e.requestTimeoutMs??ml;return Oi({...e,fetch:async(o,r)=>{const n=String(r?.method??(o instanceof Request?o.method:"GET")).toUpperCase();if(gl(o)||n==="POST")return f(o,r);const a=Rs(t),s=r?.signal,i=typeof AbortSignal<"u"&&typeof AbortSignal.any=="function";let c,d=null;if(s&&i)c=AbortSignal.any([s,a.signal]);else if(s){const l=new AbortController,u=()=>l.abort(s.reason),m=()=>l.abort(a.signal.reason);s.aborted?u():a.signal.aborted?m():(s.addEventListener("abort",u,{once:!0}),a.signal.addEventListener("abort",m,{once:!0}),d=()=>{s.removeEventListener("abort",u),a.signal.removeEventListener("abort",m)}),c=l.signal}else c=a.signal;try{return await f(o,{...r,signal:c})}catch(l){throw a.signal.aborted&&!s?.aborted?new Error(`OpenCode request timed out after ${t}ms`):l}finally{d?.(),a.cleanup()}}})},gt=e=>e.replace(/\\/g,"/"),Zn=400,ea=()=>{const e=Ho();return e&&e.runtime?.isDesktop&&e.files?e.files:null};class pl{client;baseUrl;scopedClients=new Map;currentDirectory=void 0;directoryContextQueue=Promise.resolve();listDirectoryInFlight=new Map;configProvidersInFlight=new Map;listAgentsInFlight=new Map;configInFlight=new Map;configCache=new Map;configCacheGeneration=0;listDirectoryCache=new Map;constructor(t=qn){const r=Xn()||t;this.baseUrl=Qn(r),this.client=ar({baseUrl:this.baseUrl})}assertRuntimeUnchanged(t){if(t&&t!==H())throw new Error("Message was not sent because the runtime changed.")}getBaseUrl(){return this.baseUrl}reconnectToRuntimeBaseUrl(){const t=Xn(),o=Qn(t||qn);o!==this.baseUrl&&(this.baseUrl=o,this.client=ar({baseUrl:this.baseUrl}),this.scopedClients.clear(),this.listDirectoryInFlight.clear(),this.configProvidersInFlight.clear(),this.listAgentsInFlight.clear(),this.clearConfigCache(),this.listDirectoryCache.clear())}getSdkClient(){return this.client}getScopedSdkClient(t){return this.getScopedApiClient(t)}getScopedApiClient(t){const o=this.normalizeCandidatePath(t)??t,r=o||"",n=this.scopedClients.get(r);if(n)return n;const a=ar({baseUrl:this.baseUrl,directory:o});return this.scopedClients.set(r,a),a}normalizeCandidatePath(t){if(typeof t!="string")return null;const o=t.trim();if(!o)return null;const r=o.replace(/\\/g,"/").replace(/^([a-z]):/,(a,s)=>s.toUpperCase()+":");return(r.length>1?r.replace(/\/+$/,""):r)||null}deriveHomeDirectory(t){const o=t.match(/^([A-Za-z]:)(?:\/|$)/);if(o){const a=o[1],i=t.slice(a.length+(t.charAt(a.length)==="/"?1:0)).split("/").filter(Boolean);return i.length>=2?{homeDirectory:`${a}/${i[0]}/${i[1]}`,username:i[1]}:i.length===1?{homeDirectory:`${a}/${i[0]}`,username:i[0]}:{homeDirectory:a,username:void 0}}const r=t.startsWith("/"),n=t.split("/").filter(Boolean);return n.length>=2&&(n[0]==="Users"||n[0]==="home")?{homeDirectory:`${r?"/":""}${n[0]}/${n[1]}`,username:n[1]}:r?n.length===0?{homeDirectory:"/",username:void 0}:{homeDirectory:`/${n.join("/")}`,username:n[n.length-1]}:n.length>0?{homeDirectory:`/${n.join("/")}`,username:n[n.length-1]}:{homeDirectory:"/",username:void 0}}setDirectory(t){const o=this.normalizeCandidatePath(t)??t;this.currentDirectory!==o&&pe("opencodeClient:setDirectory",{previous:this.currentDirectory??null,next:o??null}),this.currentDirectory=o}getDirectory(){return this.currentDirectory}async withDirectory(t,o){const r=async()=>{if(t==null)return o();const a=this.currentDirectory,s=this.normalizeCandidatePath(t)??t;this.currentDirectory=s;try{return await o()}finally{this.currentDirectory===s&&(this.currentDirectory=a)}},n=this.directoryContextQueue.then(r,r);return this.directoryContextQueue=n.then(()=>{},()=>{}),n}getApiClient(){return this.client}async getSystemInfo(){const t=new Set,o=n=>{const a=this.normalizeCandidatePath(n);a&&t.add(a)};try{const a=(await this.client.path.get(this.currentDirectory?{directory:this.currentDirectory}:void 0)).data;a&&(o(a.directory),o(a.worktree),o(a.state))}catch(n){console.debug("Failed to load path info:",n)}if(!t.size)try{const n=await this.client.project.current(this.currentDirectory?{directory:this.currentDirectory}:void 0);o(n.data?.worktree)}catch(n){console.debug("Failed to load project info:",n)}if(!t.size)try{(await this.listSessions()).forEach(a=>o(a.directory))}catch(n){console.debug("Failed to inspect sessions for system info:",n)}if(o(this.currentDirectory),typeof window<"u")try{o(window.localStorage.getItem("lastDirectory")),o(window.localStorage.getItem("homeDirectory"))}catch{}if(!t.size&&typeof process<"u"&&typeof process.cwd=="function"&&o(process.cwd()),!t.size)return{homeDirectory:"/",username:void 0};const[r]=Array.from(t);return this.deriveHomeDirectory(r)}async probeDirectory(t){return await this.getDirectoryAvailability(t)==="available"}async getDirectoryAvailability(t){const o=this.normalizeCandidatePath(t);if(!o)return"unknown";try{const r=await this.client.path.get({directory:o});return r.error?Kn(r.error)?"missing":"unknown":(typeof r.data?.directory=="string"?r.data.directory.trim():"")?"available":"unknown"}catch(r){return Kn(r)?"missing":"unknown"}}async listSessions(){const t=await this.client.session.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return Array.isArray(t.data)?t.data:[]}async createSession(t,o){const r=this.normalizeCandidatePath(o)??this.currentDirectory,n=await this.client.session.create({...r?{directory:r}:{},parentID:t?.parentID,title:t?.title,metadata:t?.metadata});return re(n,"session.create")}async getSession(t,o){const r=this.normalizeCandidatePath(o)??this.currentDirectory,n=await this.client.session.get({sessionID:t,...r?{directory:r}:{}});return re(n,"session.get")}async deleteSession(t,o){const r=this.normalizeCandidatePath(o)??this.currentDirectory,n=await this.client.session.delete({sessionID:t,...r?{directory:r}:{}});return mt(n,"session.delete")===!0}async updateSession(t,o,r){const n=this.normalizeCandidatePath(r)??this.currentDirectory,a={...o.title!==void 0?{title:o.title}:{},...o.metadata!==void 0?{metadata:o.metadata}:{},...o.time?.archived!==void 0&&o.time.archived!==null?{time:{archived:o.time.archived}}:{}},s=await this.client.session.update({sessionID:t,...n?{directory:n}:{},...a});return re(s,"session.update")}async getSessionMessages(t,o,r){const n=this.normalizeCandidatePath(r)??this.currentDirectory,a=await this.client.session.messages({sessionID:t,...n?{directory:n}:{},...typeof o=="number"?{limit:o}:{}});return re(a,"session.messages")}async getSessionTodos(t){try{const o=await this.client.session.todo({sessionID:t,...this.currentDirectory?{directory:this.currentDirectory}:{}});if(o.error)return[];const r=o.data;return!r||!Array.isArray(r)?[]:r}catch{return[]}}shouldNormalizeToTextPlain(t){if(!t)return!1;const o=t.toLowerCase();return o.startsWith("text/")&&o!=="text/plain"?!0:["application/json","application/xml","application/javascript","application/typescript","application/x-yaml","application/yaml","application/toml","application/x-sh","application/x-shellscript","application/octet-stream","image/svg+xml"].includes(o)}isHeicMime(t){if(!t)return!1;const o=t.toLowerCase();return o==="image/heic"||o==="image/heif"}async convertHeicToJpeg(t){try{const o=(await Gr(async()=>{const{default:u}=await import("./vendor-heic2any-CEam9pDc.js").then(m=>m.h);return{default:u}},__vite__mapDeps([0,1,2]))).default,r=t.url.indexOf(",");if(r===-1)return t;const n=t.url.substring(r+1),a=atob(n),s=new Uint8Array(a.length);for(let u=0;u<a.length;u++)s[u]=a.charCodeAt(u);const i=new Blob([s],{type:t.mime}),c=await o({blob:i,toType:"image/jpeg",quality:.9}),d=await new Promise((u,m)=>{const p=new FileReader;p.onload=()=>u(p.result),p.onerror=m,p.readAsDataURL(c)});let l=t.filename;return l&&(l=l.replace(/\.heic$/i,".jpg").replace(/\.heif$/i,".jpg")),{mime:"image/jpeg",filename:l,url:d}}catch(o){return console.warn("Failed to convert HEIC to JPEG:",o),t}}async normalizeFilePart(t){if(this.isHeicMime(t.mime))return this.convertHeicToJpeg(t);if(!this.shouldNormalizeToTextPlain(t.mime))return t;let o=t.url;if(t.url.startsWith("data:")){const r=t.url.indexOf(",");if(r!==-1){const n=t.url.substring(5,r),a=t.url.substring(r);o=`data:${n.replace(/^[^;,]+/,"text/plain")}${a}`}}return{mime:"text/plain",filename:t.filename,url:o}}async toNormalizedFilePartInput(t){const o=await this.normalizeFilePart(t);return{...t.id?{id:t.id}:{},type:"file",mime:o.mime,filename:o.filename,url:o.url}}async sendMessage(t){this.assertRuntimeUnchanged(t.runtimeKey);const o=t.messageId??Yn("msg"),r=[];if(t.prefaceText&&t.prefaceText.trim()&&r.push({type:"text",text:t.prefaceText,synthetic:t.prefaceTextSynthetic!==!1}),t.text&&t.text.trim()){const d={type:"text",text:t.text};r.push(d)}if(t.files&&t.files.length>0)for(const d of t.files){const l=await this.toNormalizedFilePartInput(d);r.push(l)}if(t.additionalParts&&t.additionalParts.length>0)for(const d of t.additionalParts){if(d.text&&d.text.trim()){const l={type:"text",text:d.text};d.synthetic&&(l.synthetic=!0),d.metadata&&(l.metadata=d.metadata),r.push(l)}if(d.files&&d.files.length>0)for(const l of d.files){const u=await this.toNormalizedFilePartInput(l);r.push(u)}}if(t.agentMentions&&t.agentMentions.length>0)for(const d of t.agentMentions)d?.name&&r.push({type:"agent",name:d.name,...d.source?{source:d.source}:{}});if(r.length===0)throw new Error("Message must have at least one part (text or file)");const n=this.normalizeCandidatePath(t.directory??null)??this.currentDirectory;t.format&&console.info("[git-generation][browser] send structured message",{sessionId:t.id,providerID:t.providerID,modelID:t.modelID,agent:t.agent,variant:t.variant,directory:n,baseUrl:this.baseUrl,formatType:t.format.type}),il(t.providerID),this.assertRuntimeUnchanged(t.runtimeKey);let a;try{const d=await this.client.session.promptAsync({sessionID:t.id,...n?{directory:n}:{},model:{providerID:t.providerID,modelID:t.modelID},agent:t.agent,variant:t.variant,messageID:o,...t.delivery?{delivery:t.delivery}:{},...t.format?{format:t.format}:{},parts:r});if(d.response instanceof Response)a=d.response;else if(d.error){const l=d.response?.status;if(!l){const u=new Error(`Message send transport failure: ${tt(d.error)}`);throw yc(d.error)?Ja(u):u}a=new Response(JSON.stringify(d.error),{status:l})}else a=new Response(JSON.stringify(d.data??!0),{status:200})}catch(d){throw Gn(t.providerID),d}if(a.ok)return nl(t.providerID),o;let s="";try{s=await a.text()}catch{}const i=s&&s.trim().length>0?`: ${s.trim()}`:"",c=new Error(`Failed to send message (${a.status})${i}`);throw c.status=a.status,Gn(t.providerID,a.status),c}async sendCommand(t){this.assertRuntimeUnchanged(t.runtimeKey);const o=t.messageId??Yn("msg"),r=[];if(t.files&&t.files.length>0)for(const s of t.files)r.push(await this.toNormalizedFilePartInput(s));const n=this.normalizeCandidatePath(t.directory??null)??this.currentDirectory;this.assertRuntimeUnchanged(t.runtimeKey);const a=await this.client.session.command({sessionID:t.id,...n?{directory:n}:{},command:t.command,arguments:t.arguments??"",model:`${t.providerID}/${t.modelID}`,agent:t.agent,variant:t.variant,...r.length>0?{parts:r}:{},messageID:o});return mt(a,"session.command"),o}async abortSession(t){return!!(await this.client.session.abort({sessionID:t,...this.currentDirectory?{directory:this.currentDirectory}:{}},{throwOnError:!0})).data}async shellSession(t){this.assertRuntimeUnchanged(t.runtimeKey);const o=this.normalizeCandidatePath(t.directory??null)??this.currentDirectory,r=await this.client.session.shell({sessionID:t.sessionId,...o?{directory:o}:{},messageID:t.messageId,agent:t.agent,model:t.model,command:t.command});return re(r,"session.shell")}async revertSession(t,o,r,n){const a=this.normalizeCandidatePath(n)??this.currentDirectory,s=await this.client.session.revert({sessionID:t,...a?{directory:a}:{},messageID:o,partID:r});return re(s,"session.revert")}async summarizeSession(t,o,r,n){const a=this.normalizeCandidatePath(n)??this.currentDirectory,s=await this.client.session.summarize({sessionID:t,...a?{directory:a}:{},providerID:o,modelID:r});return mt(s,"session.summarize")===!0}async unrevertSession(t){const o=await this.client.session.unrevert({sessionID:t,...this.currentDirectory?{directory:this.currentDirectory}:{}});return re(o,"session.unrevert")}async forkSession(t,o,r){const n=this.normalizeCandidatePath(r)??this.currentDirectory,a=await this.client.session.fork({sessionID:t,...n?{directory:n}:{},messageID:o});return re(a,"session.fork")}async getSessionStatus(){return await this.getSessionStatusForDirectory(this.currentDirectory??null)??{}}async getSessionStatusForDirectory(t){try{const o=typeof t=="string"?t.trim():"",r=await this.client.session.status(o?{directory:o}:void 0);return r.error||!r.data||typeof r.data!="object"?null:r.data}catch{return null}}async getGlobalSessionStatus(){return await this.getSessionStatusForDirectory(null)??{}}async getWebServerSessionActivity(){try{const t=await f("/api/session-activity",{method:"GET",headers:{Accept:"application/json"}});if(!t.ok)return null;const o=await t.json().catch(()=>null);return!o||typeof o!="object"?null:o}catch{return null}}async listToolIds(t){try{const o=typeof t?.directory=="string"?t.directory.trim():this.currentDirectory?this.currentDirectory.trim():"";return((await this.client.tool.ids(o?{directory:o}:void 0)).data||[]).filter(a=>typeof a=="string"&&a!=="invalid")}catch{return[]}}async replyToPermission(t,o,r){const n=this.normalizeCandidatePath(r?.directory??null)??this.currentDirectory,a=await this.client.permission.reply({requestID:t,...n?{directory:n}:{},reply:o,...r?.message?{message:r.message}:{}});return mt(a,"permission.reply")===!0}async createPermission(t,o,r,n){try{const a=await this.client.v2.session.permission.create({sessionID:t,action:o,resources:r,...n?.id?{id:n.id}:{},...n?.save?{save:n.save}:{},...n?.metadata?{metadata:n.metadata}:{},...n?.source?{source:n.source}:{},...n?.agent?{agent:n.agent}:{}});if(a.error!==void 0)return null;const s=a.data?.data;return s===void 0?null:{id:s.id,effect:s.effect}}catch{return null}}async fetchPermission(t,o,r){try{const a=await(r?this.getScopedSdkClient(r):this.client).v2.session.permission.get({sessionID:t,requestID:o});if(a.error===void 0){const s=a.data?.data;if(s!==void 0)return{state:"ok",permission:s}}return a.response?.status===404?{state:"resolved"}:{state:"unknown"}}catch{return{state:"unknown"}}}async listPendingPermissions(t){const o=[],r=async c=>{const d=typeof c=="string"?c.trim():"",l=await this.client.permission.list(d?{directory:d}:void 0);if(l.error)throw new Error(`permission.list failed: ${tt(l.error)}`);return l.data||[]};o.push(r(null));const n=new Set;for(const c of t?.directories??[]){const d=this.normalizeCandidatePath(c??null);d&&n.add(d)}for(const c of n)o.push(r(c));const a=await Promise.all(o),s=[],i=new Set;for(const c of a)for(const d of c){if(!d||typeof d!="object")continue;const l=d.id;typeof l!="string"||l.length===0||i.has(l)||(i.add(l),s.push(d))}return s}async replyToQuestion(t,o,r){const n=!Array.isArray(o)||o.length===0?[]:Array.isArray(o[0])?o:[o],a=this.normalizeCandidatePath(r)??this.currentDirectory,s=await this.client.question.reply({requestID:t,...a?{directory:a}:{},answers:n});return mt(s,"question.reply")===!0}async rejectQuestion(t){const o=await this.client.question.reject({requestID:t,...this.currentDirectory?{directory:this.currentDirectory}:{}});return mt(o,"question.reject")===!0}async listPendingQuestions(t){const o=[],r=async c=>{const d=typeof c=="string"?c.trim():"",l=await this.client.question.list(d?{directory:d}:void 0);if(l.error)throw new Error(`question.list failed: ${tt(l.error)}`);return l.data||[]};o.push(r(null));const n=new Set;for(const c of t?.directories??[]){const d=this.normalizeCandidatePath(c??null);d&&n.add(d)}for(const c of n)o.push(r(c));const a=await Promise.all(o),s=[],i=new Set;for(const c of a)for(const d of c){if(!d||typeof d!="object")continue;const l=d.id;typeof l!="string"||l.length===0||i.has(l)||(i.add(l),s.push(d))}return s}clearConfigCache(){this.configCacheGeneration+=1,this.configInFlight.clear(),this.configCache.clear()}async getConfig(t){const o=this.normalizeCandidatePath(t)??t??this.currentDirectory??void 0,r=o??"",n=this.configCache.get(r);if(n&&n.expiresAt>Date.now())return pe("opencodeClient.getConfig:cacheHit",{directory:o??null}),n.config;const a=this.configInFlight.get(r);if(a)return pe("opencodeClient.getConfig:deduped",{directory:o??null}),a;const s=this.configCacheGeneration,i=(async()=>{pe("opencodeClient.getConfig:start",{directory:o??null});const c=typeof performance<"u"?performance.now():Date.now(),l=await(o?this.getScopedApiClient(o):this.client).config.get();if(!l.data)throw new Error("Failed to get config");const u=typeof performance<"u"?performance.now():Date.now();return pe("opencodeClient.getConfig:end",{directory:o??null,durationMs:Math.round(u-c)}),s===this.configCacheGeneration&&this.configCache.set(r,{config:l.data,expiresAt:Date.now()+cl}),l.data})();this.configInFlight.set(r,i);try{return await i}finally{this.configInFlight.get(r)===i&&this.configInFlight.delete(r)}}async updateConfig(t){const o=await this.client.config.update({config:t}),r=re(o,"global.config.update");return this.clearConfigCache(),r}async updateConfigPartial(t){const o=await this.getConfig(),r=t(o);return await this.updateConfig(r)}async getProviders(){return this.getProvidersForConfig(this.currentDirectory)}async getProvidersForConfig(t){const o=this.normalizeCandidatePath(t)??t??this.currentDirectory??void 0,r=o??"",n=this.configProvidersInFlight.get(r);if(n)return n;const a=(async()=>{const s=await this.client.config.providers(o?{directory:o}:void 0);return re(s,"config.providers")})();this.configProvidersInFlight.set(r,a);try{return await a}finally{this.configProvidersInFlight.delete(r)}}async getApp(){return{version:"0.0.3",config:await this.getConfig()}}async initApp(){try{return await this.checkHealth()}catch{return!1}}async listAgents(t){const o=this.normalizeCandidatePath(t)??t??this.currentDirectory??void 0,r=o??"",n=this.listAgentsInFlight.get(r);if(n)return n;const a=(async()=>{const s=o?{directory:o}:void 0,i=await this.client.app.agents(s);if(!i.error&&Array.isArray(i.data)&&i.data.length>0)return i.data;const c=await f("/api/agent",{...o?{query:{directory:o}}:{}});if(!c.ok)throw i.error?new Error(`app.agents failed${i.response?.status?` (${i.response.status})`:""}: ${tt(i.error)}`):new Error(`agent.list failed (${c.status})`);const d=await c.json().catch(()=>null);if(!Array.isArray(d))throw new Error("agent.list failed: invalid response");return d})();this.listAgentsInFlight.set(r,a);try{return await a}finally{this.listAgentsInFlight.delete(r)}}async readFile(t){try{const o=await this.client.file.read({path:t,...this.currentDirectory?{directory:this.currentDirectory}:{}});return String(re(o,"file.read"))}catch{return`// Content of ${t}
3
- // This would be loaded from the server`}}async listFiles(t){try{const o=t||this.currentDirectory||"/",r=await this.client.file.list({path:o,...this.currentDirectory?{directory:this.currentDirectory}:{}}),n=re(r,"file.list");return Array.isArray(n)?n:[]}catch{return[]}}async listCommands(){const t=await this.client.command.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);return(re(t,"command.list")||[]).map(r=>({name:r.name,description:r.description,agent:r.agent,model:r.model,source:r.source}))}async listCommandsWithDetails(t){const o=this.normalizeCandidatePath(t??null)??this.currentDirectory,r=await this.client.command.list(o?{directory:o}:void 0);return(re(r,"command.list")||[]).map(a=>({name:a.name,description:a.description,agent:a.agent,model:a.model,source:a.source,template:a.template}))}async listSkillsWithDetails(){try{const o=(await this.client.app.skills(this.currentDirectory?{directory:this.currentDirectory}:void 0)).data;if(!Array.isArray(o))return[];const r=[];for(const n of o){const a=typeof n.name=="string"?n.name.trim():"",s=typeof n.location=="string"?n.location:"";if(!a||!s)continue;const i={name:a,location:s};typeof n.description=="string"&&(i.description=n.description),typeof n.content=="string"&&(i.content=n.content),r.push(i)}return r}catch{return[]}}async getCommandDetails(t){try{const o=await this.client.command.list(this.currentDirectory?{directory:this.currentDirectory}:void 0);if(o.data){const r=o.data.find(n=>n.name===t);if(r)return{name:r.name,template:r.template,description:r.description,agent:r.agent,model:r.model}}return null}catch{return null}}async checkHealth(){try{const t=this.baseUrl.endsWith("/")?this.baseUrl.replace(/\/+$/,""):this.baseUrl,o=t==="/api"||t.endsWith("/api")?"/api/opencode/health":`${t}/opencode/health`;pe("opencodeClient.checkHealth:url",{baseUrl:this.baseUrl,healthUrl:o});const r=Rs(dl),n=await f(o,{signal:r.signal}).finally(r.cleanup);if(pe("opencodeClient.checkHealth:response",{status:n.status}),!n.ok)return!1;const a=await n.json();return pe("opencodeClient.checkHealth:result",{healthy:a?.healthy}),a?.healthy===!0}catch{return!1}}async createDirectory(t,o){const r=ea();if(r?.createDirectory)try{return await r.createDirectory(t)}catch(i){const c=i instanceof Error?i.message:String(i);throw new Error(c||"Failed to create directory")}if(o?.asProject){const i=await f(`${this.baseUrl}/opencode/directory`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,create:!0})});if(!i.ok){const d=await i.json().catch(()=>({error:"Failed to create project directory"}));throw new Error(d.error||"Failed to create project directory")}return{success:!0,path:(await i.json()).path}}const n={path:t,...o?.allowOutsideWorkspace?{allowOutsideWorkspace:!0}:{}},a=await f(`${this.baseUrl}/fs/mkdir`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok){const i=await a.json().catch(()=>({error:"Failed to create directory"}));throw new Error(i.error||"Failed to create directory")}return await a.json()}async cloneRepository(t){const o=await f(`${this.baseUrl}/fs/clone`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:"Failed to clone repository"}));throw new Error(r.error||"Failed to clone repository")}return await o.json()}async listLocalDirectory(t,o){const n=`${typeof t=="string"?gt(t.trim()):""}|${o?.respectGitignore?"1":"0"}`,a=Date.now(),s=this.listDirectoryCache.get(n);if(s&&s.expiresAt>a)return s.entries;const i=this.listDirectoryInFlight.get(n);if(i)return i;const d=(async()=>{const l=ea();try{if(l){const h=await l.listDirectory(t||"",o);if(!h||!Array.isArray(h.entries))throw new Ge("Directory listing returned an invalid response",{reason:"invalid-response"});const F=h.entries.map(k=>({name:k.name,path:gt(k.path),isDirectory:!!k.isDirectory,isFile:!k.isDirectory,isSymbolicLink:!1}));return this.listDirectoryCache.set(n,{entries:F,expiresAt:Date.now()+Zn}),F}const u=new URLSearchParams;t&&t.trim().length>0&&u.set("path",t),o?.respectGitignore&&u.set("respectGitignore","true");const m=u.toString(),p=await f(`${this.baseUrl}/fs/list${m?`?${m}`:""}`);if(!p.ok){const h=await p.json().catch(()=>({})),F=typeof h.error=="string"?h.error:"Failed to list directory";throw new Ge(F,{reason:kr(h.reason),status:p.status})}const g=await p.json();if(!g||!Array.isArray(g.entries))throw new Ge("Directory listing returned an invalid response",{reason:"invalid-response"});const w=g.entries;return this.listDirectoryCache.set(n,{entries:w,expiresAt:Date.now()+Zn}),w}catch(u){throw console.error("Failed to list directory contents:",u),u}})().finally(()=>{this.listDirectoryInFlight.get(n)===d&&this.listDirectoryInFlight.delete(n)});return this.listDirectoryInFlight.set(n,d),d}async searchFiles(t,o){const r=typeof o?.directory=="string"&&o.directory.trim().length>0?o.directory.trim():this.currentDirectory,n=r?gt(r):null,a=r?this.getScopedApiClient(r):this.client;try{const s=await a.find.files({query:t,limit:typeof o?.limit=="number"&&Number.isFinite(o.limit)?o.limit:void 0,dirs:o?.dirs===!1||o?.type==="file"?"false":"true",type:o?.type});return(Array.isArray(s?.data)?s.data:[]).map(c=>{const d=gt(c),l=d.split("/").filter(Boolean).pop()||d,u=gt(n?`${n}/${d}`:d);return{name:l,path:u,relativePath:d,extension:l.includes(".")?l.split(".").pop()?.toLowerCase():void 0}})}catch(s){throw console.error("Failed to search files:",s),s}}async getFilesystemHome(){const t=H();if(!t||t==="local"){const o=await Ds();if(o)return o}try{const o=await f(`${this.baseUrl}/fs/home`,{method:"GET",headers:{Accept:"application/json"}});if(!o.ok){const n=await o.json().catch(()=>({})),a=typeof n.error=="string"&&n.error.length>0?n.error:"Failed to resolve home directory";throw new Error(a)}const r=await o.json();return r&&typeof r.home=="string"&&r.home.length>0?r.home:null}catch(o){return console.warn("Failed to resolve filesystem home directory:",o),null}}async setOpenCodeWorkingDirectory(t){if(!t||typeof t!="string"||!t.trim())return console.warn("[OpencodeClient] setOpenCodeWorkingDirectory: invalid path",t),null;const o=`${this.baseUrl}/opencode/directory`;console.log("[OpencodeClient] POST",o,"with path:",t);try{const r=await f(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})}),n=await r.json().catch(()=>null);if(!r.ok){const a=n??{},s=typeof a.error=="string"&&a.error.length>0?a.error:"Failed to update OpenCode working directory";throw new Error(s)}return n&&typeof n=="object"?n:{success:!0,restarted:!1,path:t}}catch(r){throw console.warn("Failed to update OpenCode working directory:",r),r}}}const Ce=new pl,Is=["session","repository","usage","subagents","tasks","mcp","pinned","contextSources"],R0={session:"chat.workStatus.section.session",repository:"chat.workStatus.section.project",usage:"chat.workStatus.section.usage",subagents:"chat.workStatus.section.subagents",tasks:"chat.workStatus.section.tasks",mcp:"chat.workStatus.section.mcp",pinned:"chat.workStatus.section.pinned",contextSources:"chat.workStatus.section.contextBreakdown"},hl=new Set(Is),Fl=e=>typeof e=="string"&&hl.has(e),I0=(e,t)=>!e?.includes(t),x0=e=>e!=null&&Is.every(t=>e.includes(t)),O0=({visible:e,contentMounted:t,renderedSections:o,allSectionsHidden:r})=>({interactive:e&&(o>0||r),showEmptyState:t&&r}),xs=e=>{if(!Array.isArray(e))return[];const t=new Set;for(const o of e)Fl(o)&&t.add(o);return[...t]},yl=e=>{const t=e.replace(/\\/g,"/").replace(/\/+$/g,"").trim();if(!t)return"";const o=new TextEncoder().encode(t);let r="";for(const a of o)r+=String.fromCharCode(a);return`path_${typeof btoa=="function"?btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,""):t.replace(/[^A-Za-z0-9._-]+/g,"_")}`};let sr=null,ir=null,cr=null;const ta=new Set;let oa=!1;const Os=e=>{if(ta.add(e),oa||typeof window>"u")return;oa=!0;const t=()=>{for(const o of ta)o()};try{window.addEventListener("pagehide",t,{capture:!0}),window.addEventListener("beforeunload",t,{capture:!0}),typeof document<"u"&&(document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&t()}),document.addEventListener("freeze",t))}catch{}},bl=(e,t)=>{let o;try{o=e()}catch{return}const r=new Map,n=new Set;let a;const s=()=>{if(a=void 0,r.size===0&&n.size===0)return;const c=Array.from(r.entries()),d=Array.from(n);r.clear(),n.clear();for(const[l,u]of c)try{o.setItem(l,JSON.stringify(u,t?.replacer))}catch(m){console.error("Failed to persist deferred storage value",m),!r.has(l)&&!n.has(l)&&r.set(l,u)}for(const l of d)try{o.removeItem(l)}catch(u){console.error("Failed to remove deferred storage value",u),r.has(l)||n.add(l)}},i=()=>{a===void 0&&(a=setTimeout(s,0))};return Os(s),{getItem:c=>{if(r.has(c))return r.get(c)??null;if(n.has(c))return null;const d=u=>{if(u===null)return null;try{return JSON.parse(u,t?.reviver)}catch{try{o.removeItem(c)}catch{}return null}},l=o.getItem(c);return l instanceof Promise?l.then(d):d(l)},setItem:(c,d)=>{r.set(c,d),n.delete(c),i()},removeItem:c=>{r.delete(c),n.add(c),i()}}},an=e=>bl(()=>Ns(),e),wl=e=>{const t=new Map,o=new Set;let r;const n=()=>{if(r=void 0,t.size===0&&o.size===0)return;const s=Array.from(t.entries()),i=Array.from(o);t.clear(),o.clear();for(const[c,d]of s)try{e.setItem(c,d)}catch(l){console.error("Failed to persist deferred storage value",l),!t.has(c)&&!o.has(c)&&t.set(c,d)}for(const c of i)try{e.removeItem(c)}catch(d){console.error("Failed to remove deferred storage value",d),t.has(c)||o.add(c)}},a=()=>{r===void 0&&(r=setTimeout(n,0))};return Os(n),{getItem:s=>t.has(s)?t.get(s)??null:o.has(s)?null:e.getItem(s),setItem:(s,i)=>{t.set(s,i),o.delete(s),a()},removeItem:s=>{t.delete(s),o.add(s),a()},clear:()=>{t.clear(),o.clear(),r!==void 0&&(clearTimeout(r),r=void 0),e.clear()},key:s=>e.key(s),get length(){return e.length}}},_s=e=>{if(typeof window>"u")return null;try{return window[e]??null}catch{return null}},sn=()=>{const e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)},clear:()=>{e.clear()},key:t=>Array.from(e.keys())[t]??null,get length(){return e.size}}},Ls=e=>{const t=sn(),o=new Set,r=new Set,n=d=>{if(r.has(d))return null;if(o.has(d))return t.getItem(d);try{return e.getItem(d)}catch{return null}},a=(d,l)=>{try{e.setItem(d,l),t.removeItem(d),o.delete(d),r.delete(d);return}catch{try{e.removeItem(d)}catch{}}t.setItem(d,l),o.add(d),r.delete(d)},s=d=>{try{e.removeItem(d),r.delete(d)}catch{r.add(d)}t.removeItem(d),o.delete(d)},i=()=>{const d=[];try{for(let l=0;l<e.length;l+=1){const u=e.key(l);u&&d.push(u)}}catch{}try{e.clear(),r.clear()}catch{for(const l of d)r.add(l)}t.clear(),o.clear()},c=()=>{const d=new Set;try{for(let l=0;l<e.length;l+=1){const u=e.key(l);u&&!r.has(u)&&!o.has(u)&&d.add(u)}}catch{}for(const l of o)d.add(l);return[...d]};return{getItem:n,setItem:a,removeItem:s,clear:i,key:d=>c()[d]??null,get length(){return c().length}}},Al=()=>{const e=_s("localStorage");return e?Ls(e):sn()},Ns=()=>(sr||(sr=Al()),sr),Qt=()=>(cr||(cr=wl(Ns())),cr),El=()=>{const e=_s("sessionStorage");return e?Ls(e):sn()},_0=()=>(ir||(ir=El()),ir),kl={markdown:"0.9375rem",code:"0.8125rem",uiHeader:"0.9375rem",uiLabel:"0.8750rem",meta:"0.875rem",micro:"0.875rem",settingsPageTitle:"1.125rem"},L0={markdown:"0.9063rem",code:"0.8750rem",uiHeader:"0.9063rem",uiLabel:"0.8438rem",meta:"0.8438rem",micro:"0.7813rem",settingsPageTitle:"1.0625rem"};function ra(e){return`--text-${e.replace(/([A-Z])/g,"-$1").toLowerCase()}`}const co={semanticMarkdown:{fontSize:"var(--text-markdown)"},semanticCode:{fontSize:"var(--text-code)"},uiHeader:{fontSize:"var(--text-ui-header)"},uiLabel:{fontSize:"var(--text-ui-label)"},meta:{fontSize:"var(--text-meta)"},micro:{fontSize:"var(--text-micro)"},ui:{button:{fontSize:"var(--text-ui-label)",lineHeight:"var(--ui-button-line-height)",letterSpacing:"var(--ui-button-letter-spacing)",fontWeight:"var(--ui-button-font-weight)"},buttonSmall:{fontSize:"var(--text-meta)",lineHeight:"var(--ui-button-small-line-height)",letterSpacing:"var(--ui-button-small-letter-spacing)",fontWeight:"var(--ui-button-small-font-weight)"},buttonLarge:{fontSize:"var(--text-ui-label)",lineHeight:"var(--ui-button-large-line-height)",letterSpacing:"var(--ui-button-large-letter-spacing)",fontWeight:"var(--ui-button-large-font-weight)"},label:{fontSize:"var(--text-meta)",lineHeight:"var(--ui-label-line-height)",letterSpacing:"var(--ui-label-letter-spacing)",fontWeight:"var(--ui-label-font-weight)"},caption:{fontSize:"var(--text-micro)",lineHeight:"var(--ui-caption-line-height)",letterSpacing:"var(--ui-caption-letter-spacing)",fontWeight:"var(--ui-caption-font-weight)"},badge:{fontSize:"var(--text-micro)",lineHeight:"var(--ui-badge-line-height)",letterSpacing:"var(--ui-badge-letter-spacing)",fontWeight:"var(--ui-badge-font-weight)"},tooltip:{fontSize:"var(--text-micro)",lineHeight:"var(--ui-tooltip-line-height)",letterSpacing:"var(--ui-tooltip-letter-spacing)",fontWeight:"var(--ui-tooltip-font-weight)"},input:{fontSize:"var(--text-ui-label)",lineHeight:"var(--ui-input-line-height)",letterSpacing:"var(--ui-input-letter-spacing)",fontWeight:"var(--ui-input-font-weight)"},helperText:{fontSize:"var(--text-meta)",lineHeight:"var(--ui-helper-text-line-height)",letterSpacing:"var(--ui-helper-text-letter-spacing)",fontWeight:"var(--ui-helper-text-font-weight)"}},code:{inline:{fontSize:"var(--text-code)",lineHeight:"var(--code-inline-line-height)",letterSpacing:"var(--code-inline-letter-spacing)",fontWeight:"var(--code-inline-font-weight)"},block:{fontSize:"var(--text-code)",lineHeight:"var(--code-block-line-height)",letterSpacing:"var(--code-block-letter-spacing)",fontWeight:"var(--code-block-font-weight)"},lineNumbers:{fontSize:"var(--text-micro)",lineHeight:"var(--code-line-numbers-line-height)",letterSpacing:"var(--code-line-numbers-letter-spacing)",fontWeight:"var(--code-line-numbers-font-weight)"}},markdown:{body:{fontSize:"var(--text-markdown)",lineHeight:"var(--markdown-body-line-height)",letterSpacing:"var(--markdown-body-letter-spacing)",fontWeight:"var(--markdown-body-font-weight)"},bodySmall:{fontSize:"var(--text-meta)",lineHeight:"var(--markdown-body-small-line-height)",letterSpacing:"var(--markdown-body-small-letter-spacing)",fontWeight:"var(--markdown-body-small-font-weight)"},bodyLarge:{fontSize:"var(--text-markdown)",lineHeight:"var(--markdown-body-large-line-height)",letterSpacing:"var(--markdown-body-large-letter-spacing)",fontWeight:"var(--markdown-body-large-font-weight)"},blockquote:{fontSize:"var(--text-markdown)",lineHeight:"var(--markdown-blockquote-line-height)",letterSpacing:"var(--markdown-blockquote-letter-spacing)",fontWeight:"var(--markdown-blockquote-font-weight)"},list:{fontSize:"var(--text-markdown)",lineHeight:"var(--markdown-list-line-height)",letterSpacing:"var(--markdown-list-letter-spacing)",fontWeight:"var(--markdown-list-font-weight)"},link:{fontSize:"var(--text-markdown)",lineHeight:"var(--markdown-link-line-height)",letterSpacing:"var(--markdown-link-letter-spacing)",fontWeight:"var(--markdown-link-font-weight)"},code:{fontSize:"var(--text-code)",lineHeight:"var(--markdown-code-line-height)",letterSpacing:"var(--markdown-code-letter-spacing)",fontWeight:"var(--markdown-code-font-weight)"},codeBlock:{fontSize:"var(--text-code)",lineHeight:"var(--markdown-code-block-line-height)",letterSpacing:"var(--markdown-code-block-letter-spacing)",fontWeight:"var(--markdown-code-block-font-weight)"}},tool:{collapsed:{fontSize:"var(--text-code)",lineHeight:"var(--code-block-line-height)",letterSpacing:"var(--code-block-letter-spacing)",fontWeight:"var(--code-block-font-weight)"},popup:{fontSize:"var(--text-code)",lineHeight:"var(--code-block-line-height)",letterSpacing:"var(--code-block-letter-spacing)",fontWeight:"var(--code-block-font-weight)"},inline:{fontSize:"var(--text-code)",lineHeight:"var(--code-inline-line-height)",letterSpacing:"var(--code-inline-letter-spacing)",fontWeight:"var(--code-inline-font-weight)"}}},dr={padding:{collapsed:"0.375rem",popup:"0.75rem",popupContainer:"1rem"},backgroundOpacity:{muted:"30",mutedAlt:"50"},getCollapsedStyles:()=>({...co.tool.collapsed,background:"transparent",backgroundColor:"transparent",margin:0,padding:dr.padding.collapsed,borderRadius:0}),getPopupStyles:()=>({...co.tool.popup,background:"transparent",backgroundColor:"transparent",margin:0,padding:dr.padding.popup,borderRadius:"0.75rem"}),getPopupContainerStyles:()=>({...co.tool.popup,background:"transparent",backgroundColor:"transparent",margin:0,padding:dr.padding.popupContainer,borderRadius:"0.5rem",overflowX:"auto"}),getInlineStyles:()=>({...co.tool.inline})},Cl=[{id:"inter",label:"Inter",description:"Modern UI sans with excellent readability at small sizes.",stack:'"Inter", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Inter",packageName:"@fontsource/inter",filePrefix:"inter",weights:[400,500,600]}},{id:"geist-sans",label:"Geist Sans",description:"Crisp sans-serif with a technical interface feel.",stack:'"Geist Sans", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Geist Sans",packageName:"@fontsource/geist-sans",filePrefix:"geist-sans",weights:[400,500,600]}},{id:"atkinson-hyperlegible",label:"Atkinson Hyperlegible",description:"Accessibility-focused sans-serif optimized for character distinction.",stack:'"Atkinson Hyperlegible", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Atkinson Hyperlegible",packageName:"@fontsource/atkinson-hyperlegible",filePrefix:"atkinson-hyperlegible",weights:[400,700]}},{id:"source-sans-3",label:"Source Sans 3",description:"Adobe sans-serif tuned for clean, readable interfaces.",stack:'"Source Sans 3", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Source Sans 3",packageName:"@fontsource/source-sans-3",filePrefix:"source-sans-3",weights:[400,500,600]}},{id:"roboto",label:"Roboto",description:"Familiar Material-style sans-serif with broad UI usage.",stack:'"Roboto", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Roboto",packageName:"@fontsource/roboto",filePrefix:"roboto",weights:[400,500,600]}},{id:"noto-sans",label:"Noto Sans",description:"Readable sans-serif with strong international coverage.",stack:'"Noto Sans", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Noto Sans",packageName:"@fontsource/noto-sans",filePrefix:"noto-sans",weights:[400,500,600]}},{id:"dm-sans",label:"DM Sans",description:"Modern product UI sans-serif with friendly proportions.",stack:'"DM Sans", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"DM Sans",packageName:"@fontsource/dm-sans",filePrefix:"dm-sans",weights:[400,500,600]}},{id:"manrope",label:"Manrope",description:"Polished geometric sans-serif for modern app interfaces.",stack:'"Manrope", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',source:{family:"Manrope",packageName:"@fontsource/manrope",filePrefix:"manrope",weights:[400,500,600]}},{id:"system",label:"System",description:"Native operating system interface font.",stack:'"SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif'}],Bl=[{id:"jetbrains-mono",label:"JetBrains Mono",description:"Developer-focused monospace with strong punctuation clarity.",stack:'"JetBrains Mono", "SFMono-Regular", "Menlo", monospace',source:{family:"JetBrains Mono",packageName:"@fontsource/jetbrains-mono",filePrefix:"jetbrains-mono",weights:[400,500,600]}},{id:"fira-code",label:"Fira Code",description:"Readable coding font with ligature support.",stack:'"Fira Code", "SFMono-Regular", "Menlo", monospace',source:{family:"Fira Code",packageName:"@fontsource/fira-code",filePrefix:"fira-code",weights:[400,500,600]}},{id:"geist-mono",label:"Geist Mono",description:"Sharp monospace pair for Geist Sans.",stack:'"Geist Mono", "SFMono-Regular", "Menlo", monospace',source:{family:"Geist Mono",packageName:"@fontsource/geist-mono",filePrefix:"geist-mono",weights:[400,500,600]}},{id:"commit-mono",label:"Commit Mono",description:"Code-oriented monospace with polished editor ergonomics.",stack:'"Commit Mono", "SFMono-Regular", "Menlo", monospace',source:{family:"Commit Mono",packageName:"@fontsource/commit-mono",filePrefix:"commit-mono",weights:[400,500,600]}},{id:"source-code-pro",label:"Source Code Pro",description:"Adobe monospace designed for source code readability.",stack:'"Source Code Pro", "SFMono-Regular", "Menlo", monospace',source:{family:"Source Code Pro",packageName:"@fontsource/source-code-pro",filePrefix:"source-code-pro",weights:[400,500,600]}},{id:"cascadia-code",label:"Cascadia Code",description:"Microsoft coding font popular in terminals and editors.",stack:'"Cascadia Code", "SFMono-Regular", "Menlo", monospace',source:{family:"Cascadia Code",packageName:"@fontsource/cascadia-code",filePrefix:"cascadia-code",weights:[400,500,600]}},{id:"roboto-mono",label:"Roboto Mono",description:"Neutral monospace companion to Roboto.",stack:'"Roboto Mono", "SFMono-Regular", "Menlo", monospace',source:{family:"Roboto Mono",packageName:"@fontsource/roboto-mono",filePrefix:"roboto-mono",weights:[400,500,600]}},{id:"iosevka",label:"Iosevka",description:"Compact monospace for dense code and terminal layouts.",stack:'"Iosevka", "SFMono-Regular", "Menlo", monospace',source:{family:"Iosevka",packageName:"@fontsource/iosevka",filePrefix:"iosevka",weights:[400,500,600]}},{id:"system-mono",label:"System Mono",description:"Native operating system monospace font.",stack:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'}],Us=e=>Object.fromEntries(e.map(t=>[t.id,t])),vl=Us(Cl),Dl=Us(Bl),Sl="system",Ml="system-mono",js=e=>typeof e=="string"&&e in vl,Hs=e=>typeof e=="string"&&e in Dl,Cr="aiworker.mobileKeyboardMode",Tl='meta[name="viewport"]',na="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover",N0=()=>!0;function zo(e,t="resize-content"){return e==="native"||e==="resize-content"?e:t}const Pl=e=>zo(e)==="resize-content"?`${na}, interactive-widget=resizes-content`:na,Rl=()=>{if(typeof window>"u")return"resize-content";try{return zo(localStorage.getItem(Cr))}catch{return"resize-content"}},zs=e=>{const t=zo(e);if(typeof window<"u")try{t==="resize-content"?localStorage.removeItem(Cr):localStorage.setItem(Cr,t)}catch{}return t},U0=e=>{const t=zs(e);if(typeof document>"u")return t;document.documentElement.setAttribute("data-oc-mobile-keyboard-mode",t);const o=document.querySelector(Tl);if(o instanceof HTMLMetaElement){const r=Pl(t);o.getAttribute("content")!==r&&o.setAttribute("content",r)}return t},Ae=20,Il=8,aa=4096,xl=2160*60*6e4,O=e=>{if(!e)return"";const t=e.replace(/\\/g,"/"),o=t.startsWith("//");let r=t.replace(/\/+/g,"/");o&&!r.startsWith("//")&&(r=`/${r}`);const n=r==="/",a=/^[A-Za-z]:\/$/.test(r);return!n&&!a&&(r=r.replace(/\/+$/,"")),r},je=e=>/^[A-Za-z]:\//.test(e)?e.toLowerCase():e,ze=(e,t)=>{const o=O(t),r=O(e);if(!o||!r)return!1;const n=je(o),a=je(r);return a===n||a.startsWith(`${n}/`)},It=e=>{if(!e||typeof e!="object")return{};const t=e,o={};for(const[r,n]of Object.entries(t)){const a=O(r);if(!a||!n||typeof n!="object")continue;const s=n,i=Array.isArray(s.openPaths)?Array.from(new Set(s.openPaths.filter(p=>typeof p=="string").map(p=>O(p)).filter(p=>p.length<=aa&&ze(p,a)))).slice(-50):[],c=Array.isArray(s.expandedPaths)?Array.from(new Set(s.expandedPaths.filter(p=>typeof p=="string").map(p=>O(p)).filter(p=>p.length<=aa&&ze(p,a)))).slice(-500):[],d=typeof s.selectedPath=="string"?O(s.selectedPath):null,l=d&&ze(d,a)?d:i[0]??null,u=typeof s.touchedAt=="number"&&Number.isFinite(s.touchedAt)?s.touchedAt:Date.now();if(Date.now()-u>xl)continue;const m=o[a];if(m){const p=Array.from(new Set([...m.openPaths,...i])),g=Array.from(new Set([...m.expandedPaths,...c])),w=m.selectedPath??l??p[0]??null;o[a]={openPaths:p,selectedPath:w,expandedPaths:g,touchedAt:Math.max(m.touchedAt,u)};continue}o[a]={openPaths:i,selectedPath:l,expandedPaths:c,touchedAt:u}}return Ee(o,Ae)},Ee=(e,t)=>{const o=Object.entries(e);if(o.length<=t)return e;o.sort((n,a)=>(a[1]?.touchedAt??0)-(n[1]?.touchedAt??0));const r={};for(const[n,a]of o.slice(0,t))r[n]=a;return r},pt=e=>e?{...e,touchedAt:Date.now()}:{openPaths:[],selectedPath:null,expandedPaths:[],touchedAt:Date.now()},Ol=ct()(Vt(Oo((e,t)=>({byRoot:{},activeRuntimeKey:H(),runtimeSnapshots:{},resetForRuntimeSwitch:o=>{e(r=>{const n={...r.runtimeSnapshots,[r.activeRuntimeKey]:{byRoot:It(r.byRoot),updatedAt:Date.now()}};return{activeRuntimeKey:o,runtimeSnapshots:n,byRoot:It(n[o]?.byRoot)}})},addOpenPath:(o,r,n)=>{const a=O((o||"").trim()),s=O((r||"").trim());!a||!s||!n?.allowOutsideRoot&&!ze(s,a)||e(i=>{const c=i.byRoot[a],d=pt(c),l=d.openPaths.includes(s),u=l?d.openPaths:[...d.openPaths,s],m=d.selectedPath??s;if(c&&l&&c.selectedPath===m)return i;const p={...i.byRoot,[a]:{...d,openPaths:u,selectedPath:m}};return{byRoot:Ee(p,Ae)}})},removeOpenPath:(o,r)=>{const n=O((o||"").trim()),a=O((r||"").trim());!n||!a||e(s=>{const i=s.byRoot[n];if(!i)return s;const c=je(a),d=g=>je(g)===c,l=i.selectedPath?d(i.selectedPath):!1;if(!i.openPaths.some(d)&&!l)return s;const u=i.openPaths.filter(g=>!d(g)),m=l?u[0]??null:i.selectedPath,p={...s.byRoot,[n]:{...i,openPaths:u,selectedPath:m,touchedAt:Date.now()}};return{byRoot:Ee(p,Ae)}})},removeOpenPathsByPrefix:(o,r)=>{const n=O((o||"").trim()),a=O((r||"").trim());!n||!a||e(s=>{const i=s.byRoot[n];if(!i)return s;const c=je(a),d=c.endsWith("/")?c:`${c}/`,l=g=>{const w=je(g);return w===c||w.startsWith(d)},u=i.openPaths.filter(g=>!l(g));if(u.length===i.openPaths.length)return s;const m=i.selectedPath&&l(i.selectedPath)?u[0]??null:i.selectedPath,p={...s.byRoot,[n]:{...i,openPaths:u,selectedPath:m,touchedAt:Date.now()}};return{byRoot:Ee(p,Ae)}})},removeExpandedPathsByPrefix:(o,r)=>{const n=O((o||"").trim()),a=O((r||"").trim());!n||!a||e(s=>{const i=s.byRoot[n];if(!i)return s;const c=je(a),d=c.endsWith("/")?c:`${c}/`,l=i.expandedPaths.filter(m=>{const p=je(m);return p!==c&&!p.startsWith(d)});if(l.length===i.expandedPaths.length)return s;const u={...s.byRoot,[n]:{...i,expandedPaths:l,touchedAt:Date.now()}};return{byRoot:Ee(u,Ae)}})},setSelectedPath:(o,r,n)=>{const a=O((o||"").trim()),s=r?O(r.trim()):null;!a||s&&!n?.allowOutsideRoot&&!ze(s,a)||e(i=>{const c=i.byRoot[a],d=pt(c),l=s&&!d.openPaths.includes(s)?[...d.openPaths,s]:d.openPaths;if(c&&c.selectedPath===s&&l===c.openPaths)return i;const u={...i.byRoot,[a]:{...d,openPaths:l,selectedPath:s}};return{byRoot:Ee(u,Ae)}})},ensureSelectedPath:o=>{const r=O((o||"").trim());if(!r)return;const n=t().byRoot[r];if(!n||n.selectedPath)return;const a=n.openPaths[0]??null;a&&t().setSelectedPath(r,a)},toggleExpandedPath:(o,r)=>{const n=O((o||"").trim()),a=O((r||"").trim());!n||!a||!ze(a,n)||e(s=>{const i=s.byRoot[n],c=pt(i),l=c.expandedPaths.includes(a)?c.expandedPaths.filter(m=>m!==a):[...c.expandedPaths,a];if(i&&i.expandedPaths===l&&i.selectedPath===c.selectedPath&&i.openPaths===c.openPaths)return s;const u={...s.byRoot,[n]:{...c,expandedPaths:l}};return{byRoot:Ee(u,Ae)}})},collapseAllExpandedPaths:o=>{const r=O((o||"").trim());r&&e(n=>{const a=n.byRoot[r];if(!a||a.expandedPaths.length===0)return n;const s={...n.byRoot,[r]:{...pt(a),expandedPaths:[]}};return{byRoot:Ee(s,Ae)}})},expandPath:(o,r)=>{const n=O((o||"").trim()),a=O((r||"").trim());!n||!a||!ze(a,n)||e(s=>{const i=s.byRoot[n],c=pt(i);if(c.expandedPaths.includes(a)&&i)return s;const l={...s.byRoot,[n]:{...c,expandedPaths:[...c.expandedPaths,a]}};return{byRoot:Ee(l,Ae)}})},expandPaths:(o,r)=>{const n=O((o||"").trim());if(!n||!r||r.length===0)return;const a=r.map(s=>O((s||"").trim())).filter(s=>s&&ze(s,n));a.length!==0&&e(s=>{const i=s.byRoot[n],c=pt(i),d=new Set(c.expandedPaths),l=a.filter(m=>!d.has(m));if(l.length===0)return s;const u={...s.byRoot,[n]:{...c,expandedPaths:[...c.expandedPaths,...l]}};return{byRoot:Ee(u,Ae)}})}}),{name:"files-view-tabs-store",version:3,storage:an(),migrate:(e,t)=>t<3||!e||typeof e!="object"?{byRoot:{},activeRuntimeKey:H(),runtimeSnapshots:{}}:e,partialize:e=>{const t={...e.runtimeSnapshots,[e.activeRuntimeKey]:{byRoot:It(e.byRoot),updatedAt:Date.now()}},o=Object.fromEntries(Object.entries(t).sort(([,r],[,n])=>n.updatedAt-r.updatedAt).slice(0,Il).map(([r,n])=>[r,{byRoot:It(n.byRoot),updatedAt:n.updatedAt}]));return{activeRuntimeKey:e.activeRuntimeKey,runtimeSnapshots:o}},merge:(e,t)=>{const o=e&&typeof e=="object"?e:{},r=o.runtimeSnapshots&&typeof o.runtimeSnapshots=="object"?o.runtimeSnapshots:{},n=H();return{...t,activeRuntimeKey:n,runtimeSnapshots:r,byRoot:It(r[n]?.byRoot)}}}),{name:"files-view-tabs-store"})),$s=()=>typeof window>"u"?!1:window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol==="capacitor:",_l=()=>{if(typeof window>"u")return!1;const e=window.__AIWORKER_ELECTRON__?.arch?.toLowerCase?.();if(e==="arm64"||e==="aarch64")return(navigator.platform||"").toLowerCase().includes("win");const t=window.__VSCODE_CONFIG__?.arch?.toLowerCase?.();if(t==="arm64"||t==="aarch64")return(navigator.platform||"").toLowerCase().includes("win");const o=navigator.userAgentData;if(o?.architecture?.toLowerCase?.()==="arm64"||o?.architecture?.toLowerCase?.()==="aarch64")return(o.platform||navigator.platform||"").toLowerCase().includes("win");const r=navigator.userAgent.toLowerCase();return!!((r.includes("aarch64")||r.includes("arm64")||r.includes("armv"))&&r.includes("windows"))},j0=()=>{if(typeof window>"u"||!$s()||Ll()!=="ios")return!1;const e=navigator.userAgent||"",t=navigator.maxTouchPoints??0;return/iPad/i.test(e)||/Macintosh|MacIntel/i.test(e)&&t>1},Ll=()=>{if(typeof window<"u"){const t=window.Capacitor?.getPlatform?.();if(t==="ios"||t==="android")return t}return Oe()?"vscode":Mt()?"desktop":"web"},Ws="ask",sa=e=>e==="attach"||e==="inline"||e==="ask"?e:Ws;function ia(e){return e==="vim"?"vim":"default"}const Do="all";function ca(e){return e==="all"||e==="backlog"||e==="todo"||e==="started"||e==="inReview"||e==="completed"||e==="canceled"||e==="duplicate"?e:"all"}function da(e){return e==="me"||e==="any"?e:"any"}function la(e){return typeof e!="string"?Do:e.trim()||Do}function ua(e){return e==="none"||e==="urgent"||e==="high"||e==="medium"||e==="low"||e==="all"?e:"all"}const lo={completion:{title:"{agent_name} is ready",message:"{last_message}"},error:{title:"Tool error",message:"{last_message}"},question:{title:"{agent_name} needs input",message:"{last_message}"},subtask:{title:"Subtask complete",message:"{last_message}"}},Le={completion:{title:"",message:""},error:{title:"",message:""},question:{title:"",message:""},subtask:{title:"",message:""}},uo=(e,t)=>e?e.title===t.title&&e.message===t.message:!1,Nl=e=>{if(!e||typeof e!="object")return!1;const t=e;return uo(t.completion,lo.completion)&&uo(t.error,lo.error)&&uo(t.question,lo.question)&&uo(t.subtask,lo.subtask)},Ul=380,jl=380,Hl=1400,Gs=12,fa=120,xt=280;let ma=0;const H0=e=>K(e),K=e=>{if(!e)return"";const t=e.replace(/\\/g,"/"),o=t.startsWith("//");let r=t.replace(/\/+$/g,"");return r=r.replace(/\/+/g,"/"),o&&!r.startsWith("//")&&(r=`/${r}`),r===""?t.startsWith("/")?"/":"":r},qs=e=>Number.isFinite(e)?Math.min(Hl,Math.max(jl,Math.round(e))):Ul,So=e=>{if(typeof e!="string")return null;const t=e.trim();return t?t.replace(/\\/g,"/"):null},Mo=e=>{if(typeof e!="string")return null;const t=e.trim();return t?t.length>fa?t.slice(0,fa):t:null},cn=e=>e==="working"||e==="staged"||e==="turn"||e==="branch"?e:null,Ks=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,o=typeof t.id=="string"?t.id.trim():"",r=typeof t.path=="string"?t.path.trim():"";return o&&r?{id:o,path:r}:null},zl=(e,t)=>(e==="file"||e==="browser")&&t||e,Vs=(e,t,o)=>{if(e==="diff")return e;if(typeof o=="string"){const r=o.trim();if(r)return r}return zl(e,t)},Js=(e,t)=>t===e?e:`${e}:${t}`,Ys=e=>{const t=So(e.targetPath),o=Vs(e.mode,t,e.dedupeKey);return{id:Js(e.mode,o),mode:e.mode,targetPath:t,projectPlanId:typeof e.projectPlanId=="string"&&e.projectPlanId.trim()?e.projectPlanId.trim():null,projectPlanRef:Ks(e.projectPlanRef),dedupeKey:o,label:Mo(e.label),sessionTitleFallback:Mo(e.sessionTitleFallback),readOnly:e.readOnly===!0,stagedDiff:e.stagedDiff===!0,diffScope:cn(e.diffScope)??(e.stagedDiff===!0?"staged":"working"),touchedAt:Date.now()}},Qs=(e,t,o)=>{const r=new Map;for(const s of e)r.set(s.mode,(r.get(s.mode)??0)+1);const n=[...r.entries()].filter(([,s])=>s>t);if(n.length===0)return e;const a=new Set;for(const[s,i]of n){const d=[...e.filter(l=>l.mode===s)].sort((l,u)=>l.touchedAt-u.touchedAt).filter(l=>l.id!==o);for(const l of d.slice(0,i-t))a.add(l.id)}return a.size===0?e:e.filter(s=>!a.has(s.id))},Xs=e=>{if(!Array.isArray(e))return[];const t=Oe(),o=[],r=new Set;for(const n of e){if(!n||typeof n!="object")continue;const a=n;if(a.mode!=="diff"&&a.mode!=="walkthrough"&&a.mode!=="file"&&a.mode!=="context"&&a.mode!=="plan"&&a.mode!=="chat"&&a.mode!=="browser"&&a.mode!=="git"&&a.mode!=="pr"&&a.mode!=="linear"&&a.mode!=="notes"&&a.mode!=="terminal"||t&&a.mode==="browser")continue;const s=So(typeof a.targetPath=="string"?a.targetPath:null),i=typeof a.projectPlanId=="string"&&a.projectPlanId.trim()?a.projectPlanId.trim():null,c=Ks(a.projectPlanRef);if(a.mode==="plan"&&i!==null!=(c!==null))continue;const d=Vs(a.mode,s,typeof a.dedupeKey=="string"?a.dedupeKey:null),l=Js(a.mode,d);!l||r.has(l)||(r.add(l),o.push({id:l,mode:a.mode,targetPath:s,projectPlanId:i,projectPlanRef:c,dedupeKey:d,label:Mo(typeof a.label=="string"?a.label:null),sessionTitleFallback:Mo(typeof a.sessionTitleFallback=="string"?a.sessionTitleFallback:null),readOnly:a.readOnly===!0,stagedDiff:a.stagedDiff===!0,diffScope:cn(a.diffScope)??(a.stagedDiff===!0?"staged":"working"),touchedAt:typeof a.touchedAt=="number"&&Number.isFinite(a.touchedAt)?a.touchedAt:Date.now()}))}return o},Bt=(e,t)=>t&&e.some(o=>o.id===t)?t:e.length===0?null:e[e.length-1].id,Ye=e=>{if(e){const t=Xs(e.tabs),o=Bt(t,e.activeTabId);return{...e,tabs:t,activeTabId:o,touchedAt:Date.now()}}return{isOpen:!1,expanded:!1,tabs:[],activeTabId:null,widthByMode:{},touchedAt:Date.now()}},$l=(e,t,o)=>{const r=o?.reveal!==!1,n=Ys(t),a=n.mode==="file"&&n.targetPath?e.tabs.filter(l=>!(l.mode==="file"&&!l.targetPath)):e.tabs,s=a.findIndex(l=>l.id===n.id),i=s===-1?[...a,n]:a.map((l,u)=>u===s?{...l,mode:n.mode,targetPath:n.targetPath||l.targetPath,projectPlanId:n.projectPlanId??l.projectPlanId,projectPlanRef:n.projectPlanRef??l.projectPlanRef,dedupeKey:n.dedupeKey,label:n.label,sessionTitleFallback:n.sessionTitleFallback||l.sessionTitleFallback,stagedDiff:n.stagedDiff,diffScope:n.diffScope,readOnly:n.readOnly,touchedAt:Date.now()}:l),c=r?n.id:e.activeTabId??n.id,d=Qs(i,Gs,c);return{...e,isOpen:r?!0:e.isOpen,tabs:d,activeTabId:Bt(d,c),touchedAt:Date.now()}},Wl=(e,t)=>{const o=new Set(t),r=e.tabs.filter(d=>o.has(d.id)),n=e.tabs.filter(d=>!o.has(d.id));if(n.length===e.tabs.length)return e;if(!(e.activeTabId?o.has(e.activeTabId):!1))return{...e,tabs:n,activeTabId:Bt(n,e.activeTabId),isOpen:n.length>0?e.isOpen:!1,touchedAt:Date.now()};const s=r.find(d=>d.id===e.activeTabId)?.mode??null,i=s?n.filter(d=>d.mode===s):[],c=i.length>0?i.reduce((d,l)=>l.touchedAt>=d.touchedAt?l:d):null;return{...e,tabs:n,activeTabId:c?.id??Bt(n,null),isOpen:c?e.isOpen:!1,touchedAt:Date.now()}},Gl=(e,t,o)=>{if(t===o)return e;const r=e.tabs.findIndex(i=>i.id===t),n=e.tabs.findIndex(i=>i.id===o);if(r===-1||n===-1)return e;const a=[...e.tabs],[s]=a.splice(r,1);return s?(a.splice(n,0,s),{...e,tabs:a,touchedAt:Date.now()}):e},ql=(e,t,o)=>({...e,tabs:e.tabs.map(r=>r.id===t?{...r,targetPath:o}:r)}),lr=e=>{if(!e||typeof e!="object")return{};const t=e,o={};for(const[r,n]of Object.entries(t)){const a=K(r);if(!a||!n||typeof n!="object")continue;const s=n;let i=Xs(s.tabs),c=typeof s.activeTabId=="string"?s.activeTabId:null;i.length===0&&(s.mode==="diff"||s.mode==="file"||s.mode==="context"||s.mode==="plan"||s.mode==="chat")&&(i=[Ys({mode:s.mode,targetPath:typeof s.targetPath=="string"?s.targetPath:null,dedupeKey:typeof s.dedupeKey=="string"?s.dedupeKey:null,label:typeof s.label=="string"?s.label:null})],c=i[0]?.id??null);const d=Bt(i,c),l=Qs(i,Gs,d),u={};if(s.widthByMode&&typeof s.widthByMode=="object")for(const[m,p]of Object.entries(s.widthByMode))(m==="diff"||m==="file"||m==="context"||m==="plan"||m==="chat"||m==="browser"||m==="git"||m==="pr"||m==="linear"||m==="notes"||m==="terminal")&&typeof p=="number"&&Number.isFinite(p)&&(u[m]=qs(p));o[a]={isOpen:s.isOpen===!0,expanded:s.expanded===!0,tabs:l,activeTabId:Bt(l,d),widthByMode:u,touchedAt:typeof s.touchedAt=="number"&&Number.isFinite(s.touchedAt)?s.touchedAt:Date.now()}}return o},Qe=(e,t)=>{const o=Object.entries(e);if(o.length<=t)return e;o.sort((n,a)=>(a[1]?.touchedAt??0)-(n[1]?.touchedAt??0));const r={};for(const[n,a]of o.slice(0,t))r[n]=a;return r},de=ct()(Vt(Oo((e,t)=>({theme:"system",isMultiRunLauncherOpen:!1,multiRunLauncherPrefillPrompt:"",isSidebarOpen:!0,sidebarWidth:xt,hasManuallyResizedLeftSidebar:!1,contextPanelByDirectory:{},contextRailOrder:[],contextRailHiddenSurfaces:[],contextEditorTreeVisible:!0,contextEditorTreeWidth:240,notesPanelHeight:112,workStatusExpandedSections:{},workStatusScrollTop:0,workStatusPanelEnabled:!0,workStatusPanelVisible:!1,workStatusPanelFits:!1,workStatusOverlayOpen:!1,workStatusHiddenSections:[],isSessionSwitcherOpen:!1,isSessionDropdownOpen:!1,pendingDiffFile:null,pendingDiffStaged:!1,pendingDiffScope:null,pendingFileNavigation:null,pendingFileFocusPath:null,isMobile:!1,isCommandPaletteOpen:!1,isHelpDialogOpen:!1,isAboutDialogOpen:!1,isOpenCodeStatusDialogOpen:!1,openCodeStatusText:"",isSessionCreateDialogOpen:!1,isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,worktreesPageProjectId:null,isSettingsDialogOpen:!1,isNewWorktreeDialogOpen:!1,isModelSelectorOpen:!1,sidebarSection:"sessions",settingsPage:"home",settingsHasOpenedOnce:!1,settingsProjectsSelectedId:null,settingsProjectPath:null,settingsRemoteInstancesSelectedId:null,eventStreamStatus:"idle",eventStreamHint:null,showReasoningTraces:!0,streamingAutoFollowEnabled:!0,sessionRecapEnabled:!0,sessionSuggestionEnabled:!0,sessionGoalEnabled:!0,sessionGoalDefaultBudgetEnabled:!1,sessionGoalDefaultBudget:2e5,collapsibleThinkingBlocks:!0,chatRenderMode:"live",activityRenderMode:"summary",showDeletionDialog:!0,showOpenCodeRestartConfirm:!0,autoDeleteEnabled:!1,autoSaveEnabled:!0,autoDeleteAfterDays:30,sessionRetentionAction:"archive",autoDeleteLastRunAt:null,messageLimit:200,fontSize:100,globalDraftStarters:null,terminalFontSize:14,terminalShell:"auto",terminalLoginShells:[],editorFontSize:13,uiFont:Sl,monoFont:Ml,padding:100,cornerRadius:18,inputBarOffset:0,mobileKeyboardMode:Rl(),favoriteModels:[],hiddenModels:[],providerOrder:[],collapsedModelProviders:[],recentModels:[],recentAgents:[],recentEfforts:{},diffLayoutPreference:"inline",diffFileLayout:{},diffWrapLines:!1,walkthroughTocWidth:224,gitChangesViewMode:"flat",linearIssueListStatus:"all",linearIssueListAssignee:"any",linearIssueListTeamId:Do,linearIssueListPriority:"all",linearIssueFocus:null,isTimelineDialogOpen:!1,isPromptNavigatorPanelOpen:!1,isImagePreviewOpen:!1,nativeNotificationsEnabled:!1,notificationMode:"hidden-only",notifyOnSubtasks:!0,dockBadgeEnabled:!0,notifyOnCompletion:!0,notifyOnError:!0,notifyOnQuestion:!0,notificationTemplates:{completion:{...Le.completion},error:{...Le.error},question:{...Le.question},subtask:{...Le.subtask}},summarizeLastMessage:!1,summaryThreshold:200,summaryLength:100,maxLastMessageLength:250,showTerminalQuickKeysOnDesktop:!1,sessionTabsEnabled:!1,persistChatDraft:!0,showOpenCodeUpdateNotifications:!_l(),agentControlToolEnabled:!0,agentWebToolEnabled:!0,agentMemoryToolEnabled:!1,agentMemoryFeatureAvailable:!1,agentMemoryViewedAt:{},projectContextSidebarWidth:168,projectContextTab:"notes",inputSpellcheckEnabled:!1,largeTextPasteBehavior:Ws,wideChatLayoutEnabled:!1,codeBlockLineWrap:!0,showToolFileIcons:!0,showTurnChangedFiles:!1,showExpandedBashTools:!1,showExpandedEditTools:!1,timeFormatPreference:"auto",weekStartPreference:"auto",desktopWindowControlsPosition:"right",desktopWindowControlsStyle:"classic",mermaidRenderingMode:"svg",userMessageRenderingMode:"markdown",collapsibleUserMessages:!0,stickyUserHeader:!1,promptNavigatorEnabled:!0,showSplitAssistantMessageActions:!1,allowPromptingSubagentSessions:!1,draftStartersVisible:!0,isExpandedInput:!1,reportUsage:!0,shortcutOverrides:{},fileEditorKeymap:"default",setTheme:o=>{e({theme:o}),t().applyTheme()},toggleSidebar:()=>{e(o=>{const r=!o.isSidebarOpen;return r&&!o.hasManuallyResizedLeftSidebar?{isSidebarOpen:r,sidebarWidth:xt}:{isSidebarOpen:r}})},setSidebarOpen:o=>{e(r=>r.isSidebarOpen===o?o&&!r.hasManuallyResizedLeftSidebar&&r.sidebarWidth!==xt?{isSidebarOpen:o,sidebarWidth:xt}:r:o&&!r.hasManuallyResizedLeftSidebar?{isSidebarOpen:o,sidebarWidth:xt}:{isSidebarOpen:o})},setSidebarWidth:o=>{e({sidebarWidth:o,hasManuallyResizedLeftSidebar:!0})},setContextRailOrder:o=>{const r=Array.isArray(o)?o.filter((n,a)=>typeof n=="string"&&n.trim()!==""&&o.indexOf(n)===a):[];e({contextRailOrder:r})},toggleContextEditorTree:()=>{e(o=>({contextEditorTreeVisible:!o.contextEditorTreeVisible}))},setContextEditorTreeWidth:o=>{Number.isFinite(o)&&e({contextEditorTreeWidth:Math.min(480,Math.max(200,Math.round(o)))})},openContextSurface:(o,r)=>{const n=K((o||"").trim());if(!n)return;const a=t(),s=a.contextPanelByDirectory[n],i=s?.tabs??[],c=i.find(l=>l.id===s?.activeTabId)??null;if(s?.isOpen&&c?.mode===r){a.closeContextPanel(n);return}const d=i.filter(l=>l.mode===r);if(d.length>0){const l=d.reduce((u,m)=>m.touchedAt>=u.touchedAt?m:u);a.setActiveContextPanelTab(n,l.id);return}r!=="chat"&&a.openContextPanelTab(n,{mode:r})},openContextPanelTab:(o,r,n)=>{const a=K((o||"").trim());a&&e(s=>{const i=s.contextPanelByDirectory[a],c=Ye(i),d={...s.contextPanelByDirectory,[a]:$l(c,r,n)};return{contextPanelByDirectory:Qe(d,20)}})},openContextDiff:(o,r,n=!1,a=null)=>{const s=K((o||"").trim()),i=(r||"").trim();if(!s||!i)return;const c=cn(a)??(n?"staged":"working");t().openContextPanelTab(s,{mode:"diff",targetPath:i,stagedDiff:c==="staged",diffScope:c})},openContextFile:(o,r)=>{const n=K((o||"").trim()),a=So(r);!n||!a||(t().openContextPanelTab(n,{mode:"file",targetPath:a}),t().setPendingFileFocusPath(a),t().setPendingFileNavigation(null))},openContextFileAtLine:(o,r,n,a)=>{const s=K((o||"").trim()),i=So(r),c=Number.isFinite(n)?Math.max(1,Math.trunc(n)):1,d=Number.isFinite(a)?Math.max(1,Math.trunc(a)):1;!s||!i||(t().openContextPanelTab(s,{mode:"file",targetPath:i}),t().setPendingFileFocusPath(null),t().setPendingFileNavigation({path:i,line:c,column:d}))},openContextOverview:o=>{const r=K((o||"").trim());r&&t().openContextPanelTab(r,{mode:"context"})},openContextPreview:(o,r)=>{const n=K((o||"").trim()),a=(r||"").trim();!n||!a||Oe()||t().openContextPanelTab(n,{mode:"browser",targetPath:a,dedupeKey:a,label:null})},openNewContextBrowserTab:o=>{const r=K((o||"").trim());!r||Oe()||(ma+=1,t().openContextPanelTab(r,{mode:"browser",targetPath:"",dedupeKey:`browser:new:${Date.now()}-${ma}`,label:null}))},openContextBrowser:(o,r="",n)=>{const a=K((o||"").trim());if(!a||Oe())return;const s=typeof r=="string"&&r.trim().length>0?r.trim():"";t().openContextPanelTab(a,{mode:"browser",targetPath:s,dedupeKey:s||"browser",label:null},n)},setContextPanelTabTargetPath:(o,r,n)=>{const a=K((o||"").trim()),s=(r||"").trim();!a||!s||e(i=>{const c=i.contextPanelByDirectory[a];return c?{contextPanelByDirectory:{...i.contextPanelByDirectory,[a]:ql(c,s,n)}}:i})},setActiveContextPanelTab:(o,r)=>{const n=K((o||"").trim()),a=(r||"").trim();!n||!a||e(s=>{const i=s.contextPanelByDirectory[n],c=Ye(i);if(!c.tabs.some(l=>l.id===a)||c.activeTabId===a&&c.isOpen)return s;const d={...s.contextPanelByDirectory,[n]:{...c,isOpen:!0,activeTabId:a,touchedAt:Date.now(),tabs:c.tabs.map(l=>l.id===a?{...l,touchedAt:Date.now()}:l)}};return{contextPanelByDirectory:Qe(d,20)}})},reorderContextPanelTabs:(o,r,n)=>{const a=K((o||"").trim()),s=(r||"").trim(),i=(n||"").trim();!a||!s||!i||e(c=>{const d=c.contextPanelByDirectory[a],l=Ye(d);if(!l.tabs.some(p=>p.id===s)||!l.tabs.some(p=>p.id===i))return c;const u=Gl(l,s,i);if(u.tabs===l.tabs)return c;const m={...c.contextPanelByDirectory,[a]:u};return{contextPanelByDirectory:Qe(m,20)}})},closeContextPanelTab:(o,r)=>{t().closeContextPanelTabs(o,[r])},closeContextPanelTabs:(o,r)=>{const n=K((o||"").trim()),a=(r??[]).map(i=>(i||"").trim()).filter(i=>i.length>0);if(!n||a.length===0)return;const s=a.map(i=>t().contextPanelByDirectory[n]?.tabs.find(c=>c.id===i)).filter(i=>!!i);e(i=>{const c=i.contextPanelByDirectory[n],d=Ye(c);if(!d.tabs.some(u=>a.includes(u.id)))return i;const l={...i.contextPanelByDirectory,[n]:Wl(d,a)};return{contextPanelByDirectory:Qe(l,20)}});for(const i of s)i.mode==="file"&&i.targetPath&&Ol.getState().removeOpenPath(n,i.targetPath)},closeContextPanel:o=>{const r=K((o||"").trim());r&&e(n=>{const a=n.contextPanelByDirectory[r];if(!a||!a.isOpen)return n;const s={...n.contextPanelByDirectory,[r]:{...Ye(a),isOpen:!1}};return{contextPanelByDirectory:Qe(s,20)}})},toggleContextPanelExpanded:o=>{const r=K((o||"").trim());r&&e(n=>{const a=n.contextPanelByDirectory[r],s=Ye(a),i={...n.contextPanelByDirectory,[r]:{...s,expanded:!s.expanded}};return{contextPanelByDirectory:Qe(i,20)}})},setContextPanelWidth:(o,r,n)=>{const a=K((o||"").trim());a&&e(s=>{const i=s.contextPanelByDirectory[a],c=Ye(i),d={...s.contextPanelByDirectory,[a]:{...c,widthByMode:{...c.widthByMode,[r]:qs(n)}}};return{contextPanelByDirectory:Qe(d,20)}})},setNotesPanelHeight:o=>{e({notesPanelHeight:o})},setWorkStatusSectionExpanded:(o,r)=>{e(n=>n.workStatusExpandedSections[o]===r?n:{workStatusExpandedSections:{...n.workStatusExpandedSections,[o]:r}})},setWorkStatusScrollTop:o=>{e({workStatusScrollTop:Math.max(0,o)})},setWorkStatusPanelEnabled:o=>{e({workStatusPanelEnabled:o})},setWorkStatusPanelVisible:o=>{e(r=>r.workStatusPanelVisible===o?r:{workStatusPanelVisible:o})},setWorkStatusPanelFits:o=>{e(r=>r.workStatusPanelFits===o?r:o?{workStatusPanelFits:!0,workStatusOverlayOpen:!1}:{workStatusPanelFits:!1})},setWorkStatusOverlayOpen:o=>{e(r=>r.workStatusOverlayOpen===o?r:{workStatusOverlayOpen:o})},setWorkStatusSectionVisible:(o,r)=>{e(n=>{const a=n.workStatusHiddenSections,s=a.includes(o);return r===!s?n:{workStatusHiddenSections:r?a.filter(i=>i!==o):[...a,o]}})},setWorkStatusHiddenSections:o=>{e({workStatusHiddenSections:[...new Set(o)]})},setContextRailSurfaceVisible:(o,r)=>{e(n=>{const a=n.contextRailHiddenSurfaces,s=a.includes(o);return r===!s?n:{contextRailHiddenSurfaces:r?a.filter(i=>i!==o):[...a,o]}})},setContextRailHiddenSurfaces:o=>{e({contextRailHiddenSurfaces:[...new Set(o)]})},setSessionSwitcherOpen:o=>{t().isSessionSwitcherOpen!==o&&e({isSessionSwitcherOpen:o})},setSessionDropdownOpen:o=>{t().isSessionDropdownOpen!==o&&e({isSessionDropdownOpen:o})},setPendingDiffFile:(o,r=!1,n=null)=>{e({pendingDiffFile:o,pendingDiffStaged:o?r:!1,pendingDiffScope:o?n:null})},setPendingFileNavigation:o=>{e({pendingFileNavigation:o})},setPendingFileFocusPath:o=>{e({pendingFileFocusPath:o})},navigateToDiff:(o,r=!1,n=null)=>{e({pendingDiffFile:o,pendingDiffStaged:r,pendingDiffScope:n})},consumePendingDiffFile:()=>{const{pendingDiffFile:o}=t();return o&&e({pendingDiffFile:null,pendingDiffStaged:!1,pendingDiffScope:null}),o},setIsMobile:o=>{e({isMobile:o})},toggleCommandPalette:()=>{e(o=>({isCommandPaletteOpen:!o.isCommandPaletteOpen}))},setCommandPaletteOpen:o=>{e({isCommandPaletteOpen:o})},toggleHelpDialog:()=>{e(o=>({isHelpDialogOpen:!o.isHelpDialogOpen}))},setHelpDialogOpen:o=>{e({isHelpDialogOpen:o})},setAboutDialogOpen:o=>{e({isAboutDialogOpen:o})},setOpenCodeStatusDialogOpen:o=>{e({isOpenCodeStatusDialogOpen:o})},setOpenCodeStatusText:o=>{e({openCodeStatusText:o})},setSessionCreateDialogOpen:o=>{e({isSessionCreateDialogOpen:o})},setScheduledTasksDialogOpen:o=>{e(o?{isScheduledTasksDialogOpen:!0,isArchivePageOpen:!1,worktreesPageProjectId:null,isMultiRunLauncherOpen:!1}:{isScheduledTasksDialogOpen:!1})},setArchivePageOpen:o=>{e(o?{isArchivePageOpen:!0,isScheduledTasksDialogOpen:!1,worktreesPageProjectId:null,isMultiRunLauncherOpen:!1}:{isArchivePageOpen:!1})},setWorktreesPageProjectId:o=>{e(o?{worktreesPageProjectId:o,isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,isMultiRunLauncherOpen:!1}:{worktreesPageProjectId:null})},closeMainSurfaces:()=>{const o=t();!o.isScheduledTasksDialogOpen&&!o.isArchivePageOpen&&!o.worktreesPageProjectId&&!o.isMultiRunLauncherOpen||e({isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,worktreesPageProjectId:null,isMultiRunLauncherOpen:!1,multiRunLauncherPrefillPrompt:""})},setSettingsDialogOpen:o=>{e(r=>o?r.settingsHasOpenedOnce?{isSettingsDialogOpen:!0}:{isSettingsDialogOpen:!0,settingsHasOpenedOnce:!0}:{isSettingsDialogOpen:!1})},setNewWorktreeDialogOpen:o=>{e({isNewWorktreeDialogOpen:o})},setModelSelectorOpen:o=>{e({isModelSelectorOpen:o})},setSidebarSection:o=>{e({sidebarSection:o})},setSettingsPage:o=>{e({settingsPage:o})},setSettingsProjectPath:o=>{const r=o?.trim();e({settingsProjectPath:r||null})},setSettingsProjectsSelectedId:o=>{e({settingsProjectsSelectedId:o})},setSettingsRemoteInstancesSelectedId:o=>{e({settingsRemoteInstancesSelectedId:o})},setEventStreamStatus:(o,r)=>{e({eventStreamStatus:o,eventStreamHint:r??null})},setShowReasoningTraces:o=>{e({showReasoningTraces:o})},setStreamingAutoFollowEnabled:o=>{e({streamingAutoFollowEnabled:o})},setSessionRecapEnabled:o=>{e({sessionRecapEnabled:o})},setSessionSuggestionEnabled:o=>{e({sessionSuggestionEnabled:o})},setSessionGoalEnabled:o=>{e({sessionGoalEnabled:o})},setSessionGoalDefaultBudgetEnabled:o=>{e({sessionGoalDefaultBudgetEnabled:o})},setSessionGoalDefaultBudget:o=>{e({sessionGoalDefaultBudget:o})},setCollapsibleThinkingBlocks:o=>{e({collapsibleThinkingBlocks:o})},setChatRenderMode:o=>{e({chatRenderMode:o})},setActivityRenderMode:o=>{e({activityRenderMode:o})},setShowDeletionDialog:o=>{e({showDeletionDialog:o})},setShowOpenCodeRestartConfirm:o=>{e({showOpenCodeRestartConfirm:o})},setAutoDeleteEnabled:o=>{e({autoDeleteEnabled:o})},setAutoSaveEnabled:o=>{e({autoSaveEnabled:o})},setAutoDeleteAfterDays:o=>{const r=Math.max(1,Math.min(365,o));e({autoDeleteAfterDays:r})},setSessionRetentionAction:o=>{e({sessionRetentionAction:o})},setAutoDeleteLastRunAt:o=>{e({autoDeleteLastRunAt:o})},setMessageLimit:o=>{const r=Math.max(10,Math.min(500,Math.round(o)));e({messageLimit:r})},setFontSize:o=>{const r=Math.max(50,Math.min(200,o));e({fontSize:r}),t().applyTypography()},setGlobalDraftStarters:o=>{e({globalDraftStarters:o})},setDraftStartersVisible:o=>{e({draftStartersVisible:o})},setTerminalFontSize:o=>{const r=Math.round(o),n=Math.max(9,Math.min(52,r));e({terminalFontSize:n})},setTerminalShell:o=>{e({terminalShell:o})},setTerminalLoginShells:o=>{e({terminalLoginShells:[...new Set(o)]})},setEditorFontSize:o=>{const r=Math.round(o),n=Math.max(9,Math.min(32,r));e({editorFontSize:n})},setUiFont:o=>{e({uiFont:o})},setMonoFont:o=>{e({monoFont:o})},setPadding:o=>{const r=Math.max(50,Math.min(200,o));e({padding:r}),t().applyPadding()},setCornerRadius:o=>{e({cornerRadius:o})},applyTypography:()=>{const{fontSize:o}=t(),r=document.documentElement,n=o/100,a=Object.entries(kl);if(n===1){for(const[s]of a)r.style.removeProperty(ra(s));return}for(const[s,i]of a){const c=parseFloat(i);Number.isFinite(c)&&r.style.setProperty(ra(s),`${c*n}rem`)}},applyPadding:()=>{const{padding:o}=t(),r=document.documentElement,n=o/100;if(n===1){r.style.removeProperty("--padding-scale"),r.style.removeProperty("--line-height-tight"),r.style.removeProperty("--line-height-normal"),r.style.removeProperty("--line-height-relaxed"),r.style.removeProperty("--line-height-loose");return}const a=Math.sqrt(n);r.style.setProperty("--padding-scale",a.toString());const s=1+(n-1)*.15;r.style.setProperty("--line-height-tight",(1.25*s).toFixed(3)),r.style.setProperty("--line-height-normal",(1.5*s).toFixed(3)),r.style.setProperty("--line-height-relaxed",(1.625*s).toFixed(3)),r.style.setProperty("--line-height-loose",(2*s).toFixed(3))},setDiffLayoutPreference:o=>{e({diffLayoutPreference:o})},setDiffFileLayout:(o,r)=>{e(n=>({diffFileLayout:{...n.diffFileLayout,[o]:r}}))},setDiffWrapLines:o=>{e({diffWrapLines:o})},setWalkthroughTocWidth:o=>{e({walkthroughTocWidth:Math.round(o)})},setGitChangesViewMode:o=>{e({gitChangesViewMode:o})},setLinearIssueListStatus:o=>{e({linearIssueListStatus:ca(o)})},setLinearIssueListAssignee:o=>{e({linearIssueListAssignee:da(o)})},setLinearIssueListTeamId:o=>{e({linearIssueListTeamId:la(o)})},setLinearIssueListPriority:o=>{e({linearIssueListPriority:ua(o)})},resetLinearIssueListFilters:()=>{e({linearIssueListStatus:"all",linearIssueListAssignee:"any",linearIssueListTeamId:Do,linearIssueListPriority:"all"})},setLinearIssueFocus:o=>{const r=o?.trim()??"";e({linearIssueFocus:r||null})},setInputBarOffset:o=>{e({inputBarOffset:o})},setMobileKeyboardMode:o=>{e(r=>r.mobileKeyboardMode===o?r:{mobileKeyboardMode:o})},toggleFavoriteModel:(o,r)=>{e(n=>n.favoriteModels.some(s=>s.providerID===o&&s.modelID===r)?{favoriteModels:n.favoriteModels.filter(s=>!(s.providerID===o&&s.modelID===r))}:{favoriteModels:[{providerID:o,modelID:r},...n.favoriteModels]})},reorderFavoriteModel:(o,r,n,a)=>{e(s=>{const i=s.favoriteModels.findIndex(u=>u.providerID===o&&u.modelID===r),c=s.favoriteModels.findIndex(u=>u.providerID===n&&u.modelID===a);if(i===-1||c===-1||i===c)return s;const d=s.favoriteModels.slice(),[l]=d.splice(i,1);return l?(d.splice(c,0,l),{favoriteModels:d}):s})},setProviderOrder:o=>{e(r=>{const n=o.filter(s=>typeof s=="string"&&s.length>0),a=r.providerOrder;return a.length===n.length&&a.every((s,i)=>s===n[i])?r:{providerOrder:n}})},toggleHiddenModel:(o,r)=>{e(n=>n.hiddenModels.some(s=>s.providerID===o&&s.modelID===r)?{hiddenModels:n.hiddenModels.filter(s=>!(s.providerID===o&&s.modelID===r))}:{hiddenModels:[{providerID:o,modelID:r},...n.hiddenModels]})},isHiddenModel:(o,r)=>{const{hiddenModels:n}=t();return n.some(a=>a.providerID===o&&a.modelID===r)},hideAllModels:(o,r)=>{e(n=>{const a=n.hiddenModels.filter(i=>i.providerID!==o);return{hiddenModels:[...r.filter(i=>typeof i=="string"&&i.length>0).map(i=>({providerID:o,modelID:i})),...a]}})},showAllModels:o=>{e(r=>({hiddenModels:r.hiddenModels.filter(n=>n.providerID!==o)}))},toggleModelProviderCollapsed:o=>{const r=typeof o=="string"?o.trim():"";r&&e(n=>n.collapsedModelProviders.includes(r)?{collapsedModelProviders:n.collapsedModelProviders.filter(s=>s!==r)}:{collapsedModelProviders:[...n.collapsedModelProviders,r]})},setModelProvidersCollapsed:(o,r)=>{const n=Array.from(new Set(o.filter(a=>typeof a=="string").map(a=>a.trim()).filter(Boolean)));n.length!==0&&e(a=>{const s=new Set(n),i=a.collapsedModelProviders.filter(c=>!s.has(c));return{collapsedModelProviders:r?[...i,...n]:i}})},isFavoriteModel:(o,r)=>{const{favoriteModels:n}=t();return n.some(a=>a.providerID===o&&a.modelID===r)},addRecentModel:(o,r)=>{e(n=>{const a=n.recentModels.filter(s=>!(s.providerID===o&&s.modelID===r));return{recentModels:[{providerID:o,modelID:r},...a].slice(0,5)}})},addRecentAgent:o=>{const r=typeof o=="string"?o.trim():"";r&&e(n=>{if(n.recentAgents.includes(r))return n;const a=n.recentAgents;return{recentAgents:[r,...a].slice(0,5)}})},addRecentEffort:(o,r,n)=>{const a=typeof o=="string"?o.trim():"",s=typeof r=="string"?r.trim():"";if(!a||!s)return;const i=`${a}/${s}`,c=typeof n=="string"&&n.trim().length>0?n.trim():"default";e(d=>{const l=d.recentEfforts[i]??[];if(l.includes(c))return d;const u=l;return{recentEfforts:{...d.recentEfforts,[i]:[c,...u].slice(0,5)}}})},applyTheme:()=>{const{theme:o}=t(),r=document.documentElement;if(r.classList.remove("light","dark"),o==="system"){const n=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";r.classList.add(n)}else r.classList.add(o)},setMultiRunLauncherOpen:o=>{e(r=>({isMultiRunLauncherOpen:o,multiRunLauncherPrefillPrompt:o?r.multiRunLauncherPrefillPrompt:"",...o?{isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,worktreesPageProjectId:null}:{}}))},openMultiRunLauncher:()=>{e({isMultiRunLauncherOpen:!0,multiRunLauncherPrefillPrompt:"",isSessionSwitcherOpen:!1,isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,worktreesPageProjectId:null})},openMultiRunLauncherWithPrompt:o=>{e({isMultiRunLauncherOpen:!0,multiRunLauncherPrefillPrompt:o,isSessionSwitcherOpen:!1,isScheduledTasksDialogOpen:!1,isArchivePageOpen:!1,worktreesPageProjectId:null})},setTimelineDialogOpen:o=>{e({isTimelineDialogOpen:o})},setPromptNavigatorPanelOpen:o=>{e({isPromptNavigatorPanelOpen:o})},togglePromptNavigatorPanel:()=>{e(o=>({isPromptNavigatorPanelOpen:!o.isPromptNavigatorPanelOpen}))},setImagePreviewOpen:o=>{e({isImagePreviewOpen:o})},setNativeNotificationsEnabled:o=>{e({nativeNotificationsEnabled:o})},setNotificationMode:o=>{e({notificationMode:o})},setShowTerminalQuickKeysOnDesktop:o=>{e({showTerminalQuickKeysOnDesktop:o})},setSessionTabsEnabled:o=>{e({sessionTabsEnabled:o})},setNotifyOnSubtasks:o=>{e({notifyOnSubtasks:o})},setDockBadgeEnabled:o=>{e({dockBadgeEnabled:o})},setNotifyOnCompletion:o=>{e({notifyOnCompletion:o})},setNotifyOnError:o=>{e({notifyOnError:o})},setNotifyOnQuestion:o=>{e({notifyOnQuestion:o})},setNotificationTemplates:o=>{e(r=>({notificationTemplates:typeof o=="function"?o(r.notificationTemplates):o}))},setSummarizeLastMessage:o=>{e({summarizeLastMessage:o})},setSummaryThreshold:o=>{e({summaryThreshold:o})},setSummaryLength:o=>{e({summaryLength:o})},setMaxLastMessageLength:o=>{e({maxLastMessageLength:o})},setPersistChatDraft:o=>{e({persistChatDraft:o})},setShowOpenCodeUpdateNotifications:o=>{e({showOpenCodeUpdateNotifications:o})},setAgentControlToolEnabled:o=>{e({agentControlToolEnabled:o})},setAgentWebToolEnabled:o=>{e({agentWebToolEnabled:o})},setAgentMemoryToolEnabled:o=>{e({agentMemoryToolEnabled:o})},setAgentMemoryFeatureAvailable:o=>{e({agentMemoryFeatureAvailable:o})},setProjectContextSidebarWidth:o=>{e({projectContextSidebarWidth:o})},markAgentMemoryViewed:(o,r)=>{e(n=>({agentMemoryViewedAt:r>(n.agentMemoryViewedAt[o]??0)?{...n.agentMemoryViewedAt,[o]:r}:n.agentMemoryViewedAt}))},setProjectContextTab:o=>{e({projectContextTab:o})},setInputSpellcheckEnabled:o=>{e({inputSpellcheckEnabled:o})},setLargeTextPasteBehavior:o=>{e({largeTextPasteBehavior:sa(o)})},setWideChatLayoutEnabled:o=>{e({wideChatLayoutEnabled:o})},setCodeBlockLineWrap:o=>{e({codeBlockLineWrap:o})},setShowToolFileIcons:o=>{e({showToolFileIcons:o})},setShowTurnChangedFiles:o=>{e({showTurnChangedFiles:o})},setShowExpandedBashTools:o=>{e({showExpandedBashTools:o})},setShowExpandedEditTools:o=>{e({showExpandedEditTools:o})},setTimeFormatPreference:o=>{e({timeFormatPreference:o})},setWeekStartPreference:o=>{e({weekStartPreference:o})},setDesktopWindowControlsPosition:o=>{e({desktopWindowControlsPosition:o==="left"?"left":"right"})},setDesktopWindowControlsStyle:o=>{e({desktopWindowControlsStyle:o==="traffic-lights"?"traffic-lights":"classic"})},setMermaidRenderingMode:o=>{e({mermaidRenderingMode:o})},setUserMessageRenderingMode:o=>{e({userMessageRenderingMode:o})},setCollapsibleUserMessages:o=>{e({collapsibleUserMessages:o})},setStickyUserHeader:o=>{e({stickyUserHeader:o})},setPromptNavigatorEnabled:o=>{e({promptNavigatorEnabled:o})},setShowSplitAssistantMessageActions:o=>{e({showSplitAssistantMessageActions:o})},setAllowPromptingSubagentSessions:o=>{e({allowPromptingSubagentSessions:o})},setReportUsage:o=>{e({reportUsage:o})},viewPagerPage:"center",setViewPagerPage:o=>{e({viewPagerPage:o}),e({isSessionSwitcherOpen:o==="left"})},setShortcutOverride:(o,r)=>{e(n=>({shortcutOverrides:{...n.shortcutOverrides,[o]:r}}))},clearShortcutOverride:o=>{e(r=>{const n={...r.shortcutOverrides};return delete n[o],{shortcutOverrides:n}})},resetAllShortcutOverrides:()=>{e({shortcutOverrides:{}})},setFileEditorKeymap:o=>{e({fileEditorKeymap:ia(o)})},toggleExpandedInput:()=>{e(o=>({isExpandedInput:!o.isExpandedInput}))},setExpandedInput:o=>{e({isExpandedInput:o})}}),{name:"ui-store",storage:an(),version:18,migrate:(e,t)=>{if(!e||typeof e!="object")return e;const o=e;if(t<16&&(delete o.activeMainTab,delete o.activeSurface),t<17&&delete o.expandedEditorToolbar,t<18&&delete o.shortcutOverrides,t<14){const r=o.contextPanelByDirectory;if(r&&typeof r=="object")for(const n of Object.values(r)){if(!n||typeof n!="object")continue;const a=n,s=a.widthByMode;if(s&&typeof s=="object"){const d=s;d.preview!==void 0&&(d.browser===void 0&&(d.browser=d.preview),delete d.preview)}if(!Array.isArray(a.tabs))continue;const i=new Set,c=[];for(const d of a.tabs){if(!d||typeof d!="object")continue;const l=d;if(l.mode!=="preview"){typeof l.id=="string"&&i.add(l.id),c.push(l);continue}const u=typeof l.targetPath=="string"?l.targetPath:"",m=typeof l.dedupeKey=="string"&&l.dedupeKey.trim()?l.dedupeKey.trim():u||"browser",p=m==="browser"?"browser":`browser:${m}`;i.has(p)||(i.add(p),c.push({...l,mode:"browser",id:p,dedupeKey:m}))}if(a.tabs=c,typeof a.activeTabId=="string"&&a.activeTabId.startsWith("preview")){const d=c.find(l=>typeof l.id=="string");a.activeTabId=d&&typeof d.id=="string"?d.id:null}}}if(t<13&&typeof o.autoSaveEnabled!="boolean"){let r=!0;try{if(typeof localStorage<"u"){const n=localStorage.getItem("aiworker:files:auto-save-enabled");n!==null&&(r=n!=="false",localStorage.removeItem("aiworker:files:auto-save-enabled"))}}catch{r=!0}o.autoSaveEnabled=r}if(t<12&&(o.desktopWindowControlsPosition==="auto"||o.desktopWindowControlsPosition==null)&&(o.desktopWindowControlsPosition="right"),t<11&&o.terminalFontSize===13&&(o.terminalFontSize=14),t<10&&delete o.diffViewMode,t<9&&((!o.workStatusExpandedSections||typeof o.workStatusExpandedSections!="object")&&(o.workStatusExpandedSections={}),(typeof o.workStatusScrollTop!="number"||!Number.isFinite(o.workStatusScrollTop))&&(o.workStatusScrollTop=0),typeof o.workStatusPanelEnabled!="boolean"&&(o.workStatusPanelEnabled=!0),Array.isArray(o.workStatusHiddenSections)||(o.workStatusHiddenSections=[]),(typeof o.notesPanelHeight!="number"||!Number.isFinite(o.notesPanelHeight))&&(o.notesPanelHeight=112)),t<1&&Nl(o.notificationTemplates)&&(o.notificationTemplates={completion:{...Le.completion},error:{...Le.error},question:{...Le.question},subtask:{...Le.subtask}}),t<3){const r=new Set([90,120,180,220]),n=o.memoryLimitHistorical,a=o.memoryLimitActiveSession;typeof n=="number"&&!r.has(n)?o.messageLimit=n:typeof a=="number"&&!r.has(a)&&(o.messageLimit=a),delete o.memoryLimitHistorical,delete o.memoryLimitViewport,delete o.memoryLimitActiveSession}if(delete o.isRightSidebarOpen,delete o.rightSidebarWidth,delete o.rightSidebarTab,o.contextPanelByDirectory=lr(o.contextPanelByDirectory),t<5)if(!o.shortcutOverrides||typeof o.shortcutOverrides!="object")o.shortcutOverrides={};else{const r=o.shortcutOverrides,n={};for(const[a,s]of Object.entries(r))typeof a=="string"&&typeof s=="string"&&(n[a]=s);o.shortcutOverrides=n}return t<6&&(o.contextPanelByDirectory=lr(o.contextPanelByDirectory)),t<7&&(o.contextPanelByDirectory=lr(o.contextPanelByDirectory)),t<8&&o.gitChangesViewMode!=="flat"&&o.gitChangesViewMode!=="tree"&&(o.gitChangesViewMode="flat"),o.linearIssueListStatus=ca(o.linearIssueListStatus),o.linearIssueListAssignee=da(o.linearIssueListAssignee),o.linearIssueListTeamId=la(o.linearIssueListTeamId),o.linearIssueListPriority=ua(o.linearIssueListPriority),o.fileEditorKeymap=ia(o.fileEditorKeymap),o.largeTextPasteBehavior=sa(o.largeTextPasteBehavior),typeof o.autoSaveEnabled!="boolean"&&(o.autoSaveEnabled=!0),o.contextRailHiddenSurfaces=Array.isArray(o.contextRailHiddenSurfaces)?o.contextRailHiddenSurfaces.filter(r=>typeof r=="string"&&r.trim()!==""):[],o.contextRailOrder=Array.isArray(o.contextRailOrder)?o.contextRailOrder.filter(r=>typeof r=="string"&&r.trim()!==""):[],o},partialize:e=>({theme:e.theme,isSidebarOpen:e.isSidebarOpen,sidebarWidth:e.sidebarWidth,contextPanelByDirectory:e.contextPanelByDirectory,contextRailOrder:e.contextRailOrder,contextRailHiddenSurfaces:e.contextRailHiddenSurfaces,contextEditorTreeVisible:e.contextEditorTreeVisible,contextEditorTreeWidth:e.contextEditorTreeWidth,notesPanelHeight:e.notesPanelHeight,workStatusExpandedSections:e.workStatusExpandedSections,workStatusScrollTop:e.workStatusScrollTop,workStatusPanelEnabled:e.workStatusPanelEnabled,workStatusHiddenSections:e.workStatusHiddenSections,isSessionSwitcherOpen:e.isSessionSwitcherOpen,sidebarSection:e.sidebarSection,settingsPage:e.settingsPage,settingsHasOpenedOnce:e.settingsHasOpenedOnce,settingsProjectsSelectedId:e.settingsProjectsSelectedId,settingsRemoteInstancesSelectedId:e.settingsRemoteInstancesSelectedId,isSessionCreateDialogOpen:e.isSessionCreateDialogOpen,showReasoningTraces:e.showReasoningTraces,streamingAutoFollowEnabled:e.streamingAutoFollowEnabled,sessionRecapEnabled:e.sessionRecapEnabled,sessionSuggestionEnabled:e.sessionSuggestionEnabled,sessionGoalEnabled:e.sessionGoalEnabled,sessionGoalDefaultBudgetEnabled:e.sessionGoalDefaultBudgetEnabled,sessionGoalDefaultBudget:e.sessionGoalDefaultBudget,collapsibleThinkingBlocks:e.collapsibleThinkingBlocks,chatRenderMode:e.chatRenderMode,activityRenderMode:e.activityRenderMode,showDeletionDialog:e.showDeletionDialog,showOpenCodeRestartConfirm:e.showOpenCodeRestartConfirm,autoDeleteEnabled:e.autoDeleteEnabled,autoSaveEnabled:e.autoSaveEnabled,autoDeleteAfterDays:e.autoDeleteAfterDays,sessionRetentionAction:e.sessionRetentionAction,autoDeleteLastRunAt:e.autoDeleteLastRunAt,messageLimit:e.messageLimit,fontSize:e.fontSize,globalDraftStarters:e.globalDraftStarters,terminalFontSize:e.terminalFontSize,terminalShell:e.terminalShell,terminalLoginShells:e.terminalLoginShells,editorFontSize:e.editorFontSize,uiFont:e.uiFont,monoFont:e.monoFont,padding:e.padding,cornerRadius:e.cornerRadius,favoriteModels:e.favoriteModels,hiddenModels:e.hiddenModels,providerOrder:e.providerOrder,collapsedModelProviders:e.collapsedModelProviders,recentModels:e.recentModels,recentAgents:e.recentAgents,recentEfforts:e.recentEfforts,diffLayoutPreference:e.diffLayoutPreference,diffWrapLines:e.diffWrapLines,walkthroughTocWidth:e.walkthroughTocWidth,gitChangesViewMode:e.gitChangesViewMode,linearIssueListStatus:e.linearIssueListStatus,linearIssueListAssignee:e.linearIssueListAssignee,linearIssueListTeamId:e.linearIssueListTeamId,linearIssueListPriority:e.linearIssueListPriority,nativeNotificationsEnabled:e.nativeNotificationsEnabled,notificationMode:e.notificationMode,showTerminalQuickKeysOnDesktop:e.showTerminalQuickKeysOnDesktop,sessionTabsEnabled:e.sessionTabsEnabled,notifyOnSubtasks:e.notifyOnSubtasks,dockBadgeEnabled:e.dockBadgeEnabled,notifyOnCompletion:e.notifyOnCompletion,notifyOnError:e.notifyOnError,notifyOnQuestion:e.notifyOnQuestion,notificationTemplates:e.notificationTemplates,summarizeLastMessage:e.summarizeLastMessage,summaryThreshold:e.summaryThreshold,summaryLength:e.summaryLength,maxLastMessageLength:e.maxLastMessageLength,persistChatDraft:e.persistChatDraft,showOpenCodeUpdateNotifications:e.showOpenCodeUpdateNotifications,agentControlToolEnabled:e.agentControlToolEnabled,agentWebToolEnabled:e.agentWebToolEnabled,agentMemoryToolEnabled:e.agentMemoryToolEnabled,agentMemoryViewedAt:e.agentMemoryViewedAt,projectContextSidebarWidth:e.projectContextSidebarWidth,inputSpellcheckEnabled:e.inputSpellcheckEnabled,largeTextPasteBehavior:e.largeTextPasteBehavior,wideChatLayoutEnabled:e.wideChatLayoutEnabled,codeBlockLineWrap:e.codeBlockLineWrap,showToolFileIcons:e.showToolFileIcons,showTurnChangedFiles:e.showTurnChangedFiles,showExpandedBashTools:e.showExpandedBashTools,showExpandedEditTools:e.showExpandedEditTools,timeFormatPreference:e.timeFormatPreference,weekStartPreference:e.weekStartPreference,desktopWindowControlsPosition:e.desktopWindowControlsPosition,desktopWindowControlsStyle:e.desktopWindowControlsStyle,mermaidRenderingMode:e.mermaidRenderingMode,userMessageRenderingMode:e.userMessageRenderingMode,collapsibleUserMessages:e.collapsibleUserMessages,stickyUserHeader:e.stickyUserHeader,promptNavigatorEnabled:e.promptNavigatorEnabled,showSplitAssistantMessageActions:e.showSplitAssistantMessageActions,allowPromptingSubagentSessions:e.allowPromptingSubagentSessions,draftStartersVisible:e.draftStartersVisible,shortcutOverrides:e.shortcutOverrides,fileEditorKeymap:e.fileEditorKeymap})}),{name:"ui-store"})),Zs=e=>{if(typeof e!="string")return null;const t=e.trim();if(!t)return null;const o=t.replace(/\\/g,"/").replace(/^([a-z]):/,(n,a)=>a.toUpperCase()+":");return o==="/"?"/":(o.length>1?o.replace(/\/+$/,""):o)||null},dn="queue",ln=e=>e==="steer"||e==="queue",un=(e,t)=>e==="immediate"?"steer":ln(e)?e:t===!1?"steer":t===!0?"queue":dn,ga=50,Kl=(e,t,o=H())=>{const r=Zs(t);return!o||!r||!e?null:{runtimeKey:o,directory:r,sessionId:e}},Se=e=>`${e.runtimeKey}
4
- ${e.directory}
5
- ${e.sessionId}`,z0=e=>{const[t,o,...r]=e.split(`
6
- `);return Kl(r.join(`
7
- `),o,t)},Vl=(e,t)=>{const o=e??{},r=t<2?o.queuedMessages??{}:{};return{queuedMessages:t<2?{}:o.queuedMessages??{},quarantinedLegacyMessages:{...o.quarantinedLegacyMessages??{},...r},followUpBehavior:un(o.followUpBehavior,o.queueModeEnabled??null)}},Jl=ct()(Vt(Oo((e,t)=>({queuedMessages:{},quarantinedLegacyMessages:{},followUpBehavior:dn,sendingIds:{},addToQueue:(o,r)=>{const n=Se(o),s={id:`queued-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,content:r.content,attachments:r.attachments,createdAt:Date.now(),sendConfig:r.sendConfig};e(i=>{const c=i.queuedMessages[n]??[],d={...i.queuedMessages,[n]:[...c,s].slice(-20)},l=Object.keys(d);if(l.length>ga){l.sort((u,m)=>(d[u]?.[0]?.createdAt??0)-(d[m]?.[0]?.createdAt??0));for(const u of l.slice(0,l.length-ga))delete d[u]}return{queuedMessages:d}})},removeFromQueue:(o,r)=>{const n=Se(o);e(a=>{const i=(a.queuedMessages[n]??[]).filter(c=>c.id!==r);if(i.length===0){const{[n]:c,...d}=a.queuedMessages;return{queuedMessages:d}}return{queuedMessages:{...a.queuedMessages,[n]:i}}})},reorderQueue:(o,r,n)=>{if(r===n)return;const a=Se(o);e(s=>{const i=s.queuedMessages[a];if(!i)return s;const c=i.findIndex(m=>m.id===r),d=i.findIndex(m=>m.id===n);if(c===-1||d===-1)return s;const l=i.slice(),[u]=l.splice(c,1);return l.splice(d,0,u),{queuedMessages:{...s.queuedMessages,[a]:l}}})},popToInput:(o,r)=>{const n=Se(o),i=(t().queuedMessages[n]??[]).find(c=>c.id===r);return i?(e(c=>{const l=(c.queuedMessages[n]??[]).filter(u=>u.id!==r);if(l.length===0){const{[n]:u,...m}=c.queuedMessages;return{queuedMessages:m}}return{queuedMessages:{...c.queuedMessages,[n]:l}}}),i):null},clearQueue:o=>{const r=Se(o);e(n=>{const a=n.sendingIds[r]??[],s=(n.queuedMessages[r]??[]).filter(d=>a.includes(d.id));if(s.length>0)return{queuedMessages:{...n.queuedMessages,[r]:s}};const{[r]:i,...c}=n.queuedMessages;return{queuedMessages:c}})},clearAllQueues:()=>{e({queuedMessages:{},sendingIds:{}})},markSending:(o,r)=>{const n=Se(o);e(a=>{const s=a.sendingIds[n]??[];return s.includes(r)?a:{sendingIds:{...a.sendingIds,[n]:[...s,r]}}})},clearSending:(o,r)=>{const n=Se(o);e(a=>{const s=a.sendingIds[n];if(!s||!s.includes(r))return a;const i=s.filter(c=>c!==r);if(i.length===0){const{[n]:c,...d}=a.sendingIds;return{sendingIds:d}}return{sendingIds:{...a.sendingIds,[n]:i}}})},getSendableQueue:o=>{const r=Se(o),n=t(),a=n.queuedMessages[r]??[],s=n.sendingIds[r];return!s||s.length===0?a:a.filter(i=>!s.includes(i.id))},setFollowUpBehavior:o=>{e({followUpBehavior:o}),ke({followUpBehavior:o})},getQueueForTarget:o=>t().queuedMessages[Se(o)]??[]}),{name:"message-queue-store",version:2,storage:an(),partialize:e=>({queuedMessages:e.queuedMessages,quarantinedLegacyMessages:e.quarantinedLegacyMessages,followUpBehavior:e.followUpBehavior}),migrate:Vl}),{name:"message-queue-store"})),ei="directoryTreeShowHidden",Br="directory-show-hidden-change",pa=()=>{if(typeof window>"u")return!0;try{const e=Qt().getItem(ei);return e===null?!0:e==="true"}catch{return!0}},Yl=()=>{typeof window>"u"||window.dispatchEvent(new Event(Br))},Ql=(e,t={})=>{if(!(typeof window>"u")){try{Qt().setItem(ei,e?"true":"false"),Yl()}catch{}t.persist!==!1&&ke({directoryShowHidden:e})}},$0=()=>{const e=_a.c(2),[t,o]=bo.useState(pa);let r,n;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=()=>{if(typeof window>"u")return;const a=()=>{o(pa())};return window.addEventListener("storage",a),window.addEventListener(Br,a),()=>{window.removeEventListener("storage",a),window.removeEventListener(Br,a)}},n=[],e[0]=r,e[1]=n):(r=e[0],n=e[1]),bo.useEffect(r,n),t},ti="filesViewShowGitignored",vr="files-view-show-gitignored-change",ha=()=>{if(typeof window>"u")return!1;try{return Qt().getItem(ti)==="true"}catch{return!1}},Xl=()=>{typeof window>"u"||window.dispatchEvent(new Event(vr))},Zl=(e,t={})=>{if(!(typeof window>"u")){try{Qt().setItem(ti,e?"true":"false"),Xl()}catch{}t.persist!==!1&&ke({filesViewShowGitignored:e})}},W0=()=>{const e=_a.c(2),[t,o]=bo.useState(ha);let r,n;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=()=>{if(typeof window>"u")return;const a=()=>{o(ha())};return window.addEventListener("storage",a),window.addEventListener(vr,a),()=>{window.removeEventListener("storage",a),window.removeEventListener(vr,a)}},n=[],e[0]=r,e[1]=n):(r=e[0],n=e[1]),bo.useEffect(r,n),t},eu=e=>{if(!e||typeof e!="object")return null;const t={};return typeof e.showReasoningTraces=="boolean"&&(t.showReasoningTraces=e.showReasoningTraces),typeof e.collapsibleThinkingBlocks=="boolean"&&(t.collapsibleThinkingBlocks=e.collapsibleThinkingBlocks),Object.keys(t).length>0?t:null},tu=e=>{if(!e||typeof e!="object")return null;const t=e;return{showReasoningTraces:t.showReasoningTraces,collapsibleThinkingBlocks:t.collapsibleThinkingBlocks}},ou=e=>{const t=de.getState();typeof e.showReasoningTraces=="boolean"&&t.setShowReasoningTraces(e.showReasoningTraces),typeof e.collapsibleThinkingBlocks=="boolean"&&t.setCollapsibleThinkingBlocks(e.collapsibleThinkingBlocks)},ru=async()=>{if(typeof window>"u")return null;const e=localStorage.getItem("appearance-preferences");if(!e)return null;try{const t=JSON.parse(e),o=tu(t);return eu(o)}catch(t){return console.warn("Failed to parse stored appearance preferences:",t),null}},oi=[{name:"explore",icon:"compass-3",labelKey:"chat.draftPresets.explore.label",command:"/explore"},{name:"catch-up",icon:"history",labelKey:"chat.draftPresets.catchup.label",command:"/catch-up"},{name:"weigh",icon:"scales-3",labelKey:"chat.draftPresets.weigh.label",command:"/weigh"},{name:"plan-feature",icon:"survey",labelKey:"chat.draftPresets.plan.label",command:"/plan-feature"},{name:"craft-goal",icon:"target",labelKey:"chat.draftPresets.craftGoal.label",command:"/craft-goal"},{name:"schedule-task",icon:"calendar-schedule",labelKey:"chat.draftPresets.scheduleTask.label",command:"/schedule-task"},{name:"debug",icon:"bug",labelKey:"chat.draftPresets.debug.label",command:"/debug"},{name:"review",icon:"search-eye",labelKey:"chat.draftPresets.review.label",command:"/workspace-review"}],nu=new Map(oi.map(e=>[e.name,e])),G0=e=>nu.get(e),q0=oi.map(e=>({type:"command",name:e.name})),K0="terminal-box",V0="book-open",J0=e=>`${e.type}:${e.name}`,Y0=(e,t)=>e.type===t.type&&e.name===t.name,Q0=e=>{const t=e.replace(/^\//,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim();return t?t.charAt(0).toUpperCase()+t.slice(1):e},ri=e=>{if(!Array.isArray(e))return[];const t=[],o=new Set;for(const r of e){if(!r||typeof r!="object")continue;const n=r,a=n.type==="command"||n.type==="skill"?n.type:null,s=typeof n.name=="string"?n.name.trim():"";if(!a||!s)continue;const i=`${a}:${s}`;o.has(i)||(o.add(i),t.push({type:a,name:s}))}return t},au=["bash","zsh","sh","fish","pwsh","powershell","cmd","dash","ksh","nu"],To=e=>e==="auto"||typeof e=="string"&&au.includes(e),su="#8957e5",iu="#8250df",cu=e=>{const t=e.colors.syntax?.tokens??{},o=[t.className,t.enum,t.variableGlobal,e.colors.syntax?.base?.keyword].filter(r=>typeof r=="string"&&r.trim().length>0);return o.length>0?o[0]:e.metadata.variant==="dark"?su:iu},Xt=e=>e.colors.pr?e:{...e,colors:{...e.colors,pr:{open:e.colors.status.success,draft:e.colors.surface.mutedForeground,blocked:e.colors.status.warning,merged:cu(e),closed:e.colors.status.error}}},du={id:"aura-dark",name:"Aura",description:"Aura",version:"1.0.0",variant:"dark",tags:["dark","palette"]},lu={primary:{base:"#A277FF",hover:"#8D68DD",active:"#B08BFF",foreground:"#15141B",muted:"#A277FF80",emphasis:"#8D68DD"},surface:{background:"#15141B",foreground:"#EDECEE",muted:"#1A1921",mutedForeground:"#8a8282",elevated:"#201e2b",elevatedForeground:"#EDECEE",overlay:"#FFFFFF20",subtle:"#25232f"},interactive:{border:"#2a2935",borderHover:"#47415a",borderFocus:"#4E496C",selection:"#95abe02d",selectionForeground:"#FFFFFF",focus:"#A277FF",focusRing:"#A277FF40",cursor:"#FFFFFF",hover:"#7887ac2d",active:"#95abe02d"},status:{error:"#FF6767",errorForeground:"#15141B",errorBackground:"#FF676720",errorBorder:"#FF676750",warning:"#FFCA85",warningForeground:"#15141B",warningBackground:"#FFCA8520",warningBorder:"#FFCA8550",success:"#61FFCA",successForeground:"#15141B",successBackground:"#61FFCA20",successBorder:"#61FFCA50",info:"#82E2FF",infoForeground:"#15141B",infoBackground:"#82E2FF20",infoBorder:"#82E2FF50"},pr:{open:"#61FFCA",draft:"#6D6D6D",blocked:"#FFCA85",merged:"#A277FF",closed:"#FF6767"},syntax:{base:{background:"#1A1921",foreground:"#EDECEE",comment:"#6D6D6D",keyword:"#A277FF",string:"#61FFCA",number:"#FF6767",function:"#A277FF",variable:"#EDECEE",type:"#FFCA85",operator:"#FF6767"},tokens:{boolean:"#FFCA85",class:"#A277FF",className:"#A277FF",commentDoc:"#606061",constant:"#82E2FF",decorator:"#FFCA85",enum:"#A277FF",exception:"#FF6767",functionCall:"#A277FF",interface:"#FFCA85",jsxTag:"#A277FF",key:"#A277FF",keywordImport:"#FF6767",label:"#FF6767",macro:"#82E2FF",method:"#61FFCA",module:"#FF6767",namespace:"#FFCA85",parameter:"#EDECEE",preprocessor:"#FF6767",punctuation:"#6D6D6D",regex:"#61FFCA",storageModifier:"#82E2FF",stringEscape:"#FFFFFF",struct:"#A277FF",tag:"#A277FF",tagAttribute:"#FFCA85",tagAttributeValue:"#61FFCA",typeParameter:"#FFCA85",url:"#A277FF",variableGlobal:"#A277FF",variableLocal:"#121118",variableOther:"#61FFCA",variableProperty:"#82E2FF"},highlights:{diffAdded:"#61FFCA",diffAddedBackground:"#162620",diffModified:"#82E2FF",diffModifiedBackground:"#1E1D2A",diffRemoved:"#FF6767",diffRemovedBackground:"#26161A",lineNumber:"#3E3A56",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#e7d7f4",heading2:"#e7e0ee",heading3:"#ece7f0",heading4:"#EDECEE",link:"#A277FF",linkHover:"#F694FF",inlineCode:"#61FFCA",inlineCodeBackground:"#222128",blockquote:"#6D6D6D",blockquoteBorder:"#2D2B38",listMarker:"#A277FF99"},chat:{userMessage:"#EDECEE",userMessageBackground:"#393647",assistantMessage:"#EDECEE",assistantMessageBackground:"#15141B",timestamp:"#6D6D6D",divider:"#2D2B38"},tools:{background:"#1A192180",border:"#43415480",headerHover:"#0F0E14",icon:"#6D6D6D",title:"#EDECEE",description:"#6D6D6D",edit:{added:"#61FFCA",addedBackground:"#61FFCA25",removed:"#FF6767",removedBackground:"#FF676725",lineNumber:"#3E3A56"}}},uu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},fu={metadata:du,colors:lu,config:uu},mu={id:"aura-light",name:"Aura",description:"Aura",version:"1.0.0",variant:"light",tags:["light","palette"]},gu={primary:{base:"#A277FF",hover:"#B38FFF",active:"#8D68DD",foreground:"#F5F0FF",muted:"#A277FF80",emphasis:"#B38FFF"},surface:{background:"#F5F0FF",foreground:"#2D2640",muted:"#EFE8FC",mutedForeground:"#807b8b",elevated:"#f1ebfb",elevatedForeground:"#2D2640",overlay:"#15101F20",subtle:"#EFE8FC"},interactive:{border:"#E0D6F2",borderHover:"#D5C9EB",borderFocus:"#A593C8",selection:"#bdb2d74c",selectionForeground:"#15101F",focus:"#A277FF",focusRing:"#A277FF40",cursor:"#15101F",hover:"#bdb2d72d",active:"#bdb2d74c"},status:{error:"#D94F4F",errorForeground:"#F5F0FF",errorBackground:"#D94F4F20",errorBorder:"#D94F4F50",warning:"#D9A24A",warningForeground:"#F5F0FF",warningBackground:"#D9A24A20",warningBorder:"#D9A24A50",success:"#40BF7A",successForeground:"#F5F0FF",successBackground:"#40BF7A20",successBorder:"#40BF7A50",info:"#5BB8D9",infoForeground:"#F5F0FF",infoBackground:"#5BB8D920",infoBorder:"#5BB8D950"},pr:{open:"#40BF7A",draft:"#6D6D6D",blocked:"#D9A24A",merged:"#A277FF",closed:"#D94F4F"},syntax:{base:{background:"#EFE8FC",foreground:"#2D2640",comment:"#5C5270",keyword:"#A277FF",string:"#40BF7A",number:"#D94F4F",function:"#A277FF",variable:"#2D2640",type:"#D9A24A",operator:"#D94F4F"},tokens:{boolean:"#D9A24A",class:"#A277FF",className:"#A277FF",commentDoc:"#A9A1B8",constant:"#5BB8D9",decorator:"#D9A24A",enum:"#A277FF",exception:"#D94F4F",functionCall:"#A277FF",interface:"#D9A24A",jsxTag:"#A277FF",key:"#A277FF",keywordImport:"#D94F4F",label:"#D94F4F",macro:"#5BB8D9",method:"#40BF7A",module:"#D94F4F",namespace:"#D9A24A",parameter:"#2D2640",preprocessor:"#D94F4F",punctuation:"#5C5270",regex:"#40BF7A",storageModifier:"#5BB8D9",stringEscape:"#15101F",struct:"#A277FF",tag:"#A277FF",tagAttribute:"#D9A24A",tagAttributeValue:"#40BF7A",typeParameter:"#D9A24A",url:"#A277FF",variableGlobal:"#A277FF",variableLocal:"#FAF7FF",variableOther:"#40BF7A",variableProperty:"#5BB8D9"},highlights:{diffAdded:"#40BF7A",diffAddedBackground:"#E8F5ED",diffModified:"#5BB8D9",diffModifiedBackground:"#E8E4F5",diffRemoved:"#D94F4F",diffRemovedBackground:"#FAE8E8",lineNumber:"#C0B3DC",lineNumberActive:"#15101F"}},markdown:{heading1:"#A277FF",heading2:"#A277FF",heading3:"#D9A24A",heading4:"#2D2640",link:"#A277FF",linkHover:"#C17AC8",inlineCode:"#00732E",inlineCodeBackground:"#E8E3F2",blockquote:"#6D6D6D",blockquoteBorder:"#E0D6F2",listMarker:"#A277FF99"},chat:{userMessage:"#2D2640",userMessageBackground:"#EFE8FC",assistantMessage:"#2D2640",assistantMessageBackground:"#F5F0FF",timestamp:"#5C5270",divider:"#E0D6F2"},tools:{background:"#EFE8FC80",border:"#bdb5cd80",headerHover:"#FDFCFF",icon:"#5C5270",title:"#2D2640",description:"#5C5270",edit:{added:"#40BF7A",addedBackground:"#40BF7A25",removed:"#D94F4F",removedBackground:"#D94F4F25",lineNumber:"#C0B3DC"}}},pu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},hu={metadata:mu,colors:gu,config:pu},Fu={id:"ayu-dark",name:"Ayu",description:"Ayu",version:"1.0.0",variant:"dark",tags:["dark","palette"]},yu={primary:{base:"#3FB7E3",hover:"#389FC5",active:"#5BC1E7",foreground:"#0F1419",muted:"#3FB7E380",emphasis:"#389FC5"},surface:{background:"#0F1419",foreground:"#D6DAE0",muted:"#18222C",mutedForeground:"#777e86",elevated:"#17202a",elevatedForeground:"#D6DAE0",overlay:"#FBFBFD20",subtle:"#1e252d"},interactive:{border:"#292c30",borderHover:"#323C49",borderFocus:"#56647C",selection:"#c7c7df1d",selectionForeground:"#FBFBFD",focus:"#3FB7E3",focusRing:"#3FB7E340",cursor:"#FBFBFD",hover:"#b6b6cc1d",active:"#b8b8ce1d"},status:{error:"#F58572",errorForeground:"#0F1419",errorBackground:"#F5857220",errorBorder:"#F5857250",warning:"#E4A75C",warningForeground:"#0F1419",warningBackground:"#E4A75C20",warningBorder:"#E4A75C50",success:"#78D05C",successForeground:"#0F1419",successBackground:"#78D05C20",successBorder:"#78D05C50",info:"#66C6F1",infoForeground:"#0F1419",infoBackground:"#66C6F120",infoBorder:"#66C6F150"},pr:{open:"#78D05C",draft:"#A3ADBA",blocked:"#E4A75C",merged:"#8a44f2",closed:"#F58572"},syntax:{base:{background:"#18222C",foreground:"#D6DAE0",comment:"#A3ADBA",keyword:"#3FB7E3",string:"#B1C74A",number:"#F2856F",function:"#3FB7E3",variable:"#D6DAE0",type:"#E4A75C",operator:"#F2856F"},tokens:{boolean:"#E4A75C",class:"#3FB7E3",className:"#3FB7E3",commentDoc:"#8D96A2",constant:"#66C6F1",decorator:"#E4A75C",enum:"#3FB7E3",exception:"#F2856F",functionCall:"#3FB7E3",interface:"#E4A75C",jsxTag:"#3FB7E3",key:"#3FB7E3",keywordImport:"#F2856F",label:"#F2856F",macro:"#66C6F1",method:"#78D05C",module:"#F2856F",namespace:"#E4A75C",parameter:"#D6DAE0",preprocessor:"#F2856F",punctuation:"#A3ADBA",regex:"#B1C74A",storageModifier:"#66C6F1",stringEscape:"#FBFBFD",struct:"#3FB7E3",tag:"#3FB7E3",tagAttribute:"#E4A75C",tagAttributeValue:"#B1C74A",typeParameter:"#E4A75C",url:"#66C6F1",variableGlobal:"#3FB7E3",variableLocal:"#0B1015",variableOther:"#78D05C",variableProperty:"#66C6F1"},highlights:{diffAdded:"#78D05C",diffAddedBackground:"#132F27",diffModified:"#66C6F1",diffModifiedBackground:"#1B2632",diffRemoved:"#F58572",diffRemovedBackground:"#361D20",lineNumber:"#415063",lineNumberActive:"#FBFBFD"}},markdown:{heading1:"#D6DAE0",heading2:"#D6DAE0",heading3:"#D6DAE0",heading4:"#D6DAE0",link:"#66C6F1",linkHover:"#3FB7E3",inlineCode:"#B1C74A",inlineCodeBackground:"#1C2126",blockquote:"#E4A75C",blockquoteBorder:"#2B3440",listMarker:"#3FB7E399"},chat:{userMessage:"#D6DAE0",userMessageBackground:"#1d2935",assistantMessage:"#D6DAE0",assistantMessageBackground:"#0F1419",timestamp:"#A3ADBA",divider:"#2B3440"},tools:{background:"#18222C80",border:"#414e5f80",headerHover:"#080C10",icon:"#A3ADBA",title:"#D6DAE0",description:"#A3ADBA",edit:{added:"#78D05C",addedBackground:"#78D05C25",removed:"#F58572",removedBackground:"#F5857225",lineNumber:"#415063"}}},bu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},wu={metadata:Fu,colors:yu,config:bu},Au={id:"ayu-light",name:"Ayu",description:"Ayu",version:"1.0.0",variant:"light",tags:["light","palette"]},Eu={primary:{base:"#4AA8C8",hover:"#6EB8D1",active:"#4394B0",foreground:"#FDFAF4",muted:"#4AA8C880",emphasis:"#6EB8D1"},surface:{background:"#FDFAF4",foreground:"#394049",muted:"#f7f3eb",mutedForeground:"#777e87",elevated:"#faf6ed",elevatedForeground:"#4F5964",overlay:"#1B232B20",subtle:"#FFF7E5"},interactive:{border:"#ece5d9",borderHover:"#DCD3C5",borderFocus:"#B09F8F",selection:"#9fb2c43e",selectionForeground:"#171e25",focus:"#4AA8C8",focusRing:"#4AA8C840",cursor:"#1B232B",hover:"#9fb2c42c",active:"#9fb2c43e"},status:{error:"#E6656A",errorForeground:"#FDFAF4",errorBackground:"#E6656A20",errorBorder:"#E6656A50",warning:"#EA9F41",warningForeground:"#FDFAF4",warningBackground:"#EA9F4120",warningBorder:"#EA9F4150",success:"#5FB978",successForeground:"#FDFAF4",successBackground:"#5FB97820",successBorder:"#5FB97850",info:"#2F9BCE",infoForeground:"#FDFAF4",infoBackground:"#2F9BCE20",infoBorder:"#2F9BCE50"},pr:{open:"#5FB978",draft:"#77818D",blocked:"#EA9F41",merged:"#7b3cda",closed:"#E6656A"},syntax:{base:{background:"#FCF9F3",foreground:"#4F5964",comment:"#77818D",keyword:"#4AA8C8",string:"#7FAD00",number:"#EF7D71",function:"#4AA8C8",variable:"#4F5964",type:"#ED982E",operator:"#EF7D71"},tokens:{boolean:"#ED982E",class:"#4AA8C8",className:"#4AA8C8",commentDoc:"#BABEC1",constant:"#2F9BCE",decorator:"#ED982E",enum:"#4AA8C8",exception:"#EF7D71",functionCall:"#4AA8C8",interface:"#ED982E",jsxTag:"#4AA8C8",key:"#4AA8C8",keywordImport:"#EF7D71",label:"#EF7D71",macro:"#2F9BCE",method:"#5FB978",module:"#EF7D71",namespace:"#ED982E",parameter:"#4F5964",preprocessor:"#EF7D71",punctuation:"#77818D",regex:"#7FAD00",storageModifier:"#2F9BCE",stringEscape:"#1B232B",struct:"#4AA8C8",tag:"#4AA8C8",tagAttribute:"#ED982E",tagAttributeValue:"#7FAD00",typeParameter:"#ED982E",url:"#2F9BCE",variableGlobal:"#4AA8C8",variableLocal:"#FBF8F2",variableOther:"#5FB978",variableProperty:"#2F9BCE"},highlights:{diffAdded:"#5FB978",diffAddedBackground:"#EEF5E4",diffModified:"#2F9BCE",diffModifiedBackground:"#E3EDF3",diffRemoved:"#E6656A",diffRemovedBackground:"#FDE5E5",lineNumber:"#C6BFAF",lineNumberActive:"#1B232B"}},markdown:{heading1:"#394049",heading2:"#394049",heading3:"#394049",heading4:"#394049",link:"#2F9BCE",linkHover:"#4AA8C8",inlineCode:"#497700",inlineCodeBackground:"#F0EDE7",blockquote:"#ED982E",blockquoteBorder:"#E6DDCF",listMarker:"#4AA8C899"},chat:{userMessage:"#4F5964",userMessageBackground:"#fff7e5",assistantMessage:"#4F5964",assistantMessageBackground:"#FDFAF4",timestamp:"#77818D",divider:"#E6DDCF"},tools:{background:"#FCF9F380",border:"#cec6b980",headerHover:"#FAF7F1",icon:"#77818D",title:"#4F5964",description:"#77818D",edit:{added:"#5FB978",addedBackground:"#5FB97825",removed:"#E6656A",removedBackground:"#E6656A25",lineNumber:"#C6BFAF"}}},ku={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Cu={metadata:Au,colors:Eu,config:ku},Bu={id:"carbonfox-dark",name:"Carbonfox",description:"Carbonfox",version:"1.0.0",variant:"dark",tags:["dark","palette"]},vu={primary:{base:"#33B1FF",hover:"#2F9ADC",active:"#52BDFF",foreground:"#161616",muted:"#33B1FF80",emphasis:"#2F9ADC"},surface:{background:"#161616",foreground:"#F2F4F8",muted:"#222222",mutedForeground:"#8b8a8a",elevated:"#222222",elevatedForeground:"#F2F4F8",overlay:"#FFFFFF20",subtle:"#292828"},interactive:{border:"#2d2c2c",borderHover:"#4C4C4C",borderFocus:"#4589FF",selection:"#ffffff20",selectionForeground:"#FFFFFF",focus:"#4589FF",focusRing:"#4589FF40",cursor:"#FFFFFF",hover:"#ffffff12",active:"#ffffff12"},status:{error:"#FF8389",errorForeground:"#161616",errorBackground:"#FF838920",errorBorder:"#FF838950",warning:"#F1C21B",warningForeground:"#161616",warningBackground:"#F1C21B20",warningBorder:"#F1C21B50",success:"#42BE65",successForeground:"#161616",successBackground:"#42BE6520",successBorder:"#42BE6550",info:"#78A9FF",infoForeground:"#161616",infoBackground:"#78A9FF20",infoBorder:"#78A9FF50"},pr:{open:"#42BE65",draft:"#8D8D8D",blocked:"#F1C21B",merged:"#BE95FF",closed:"#FF8389"},syntax:{base:{background:"#262626",foreground:"#F2F4F8",comment:"#8D8D8D",keyword:"#78A9FF",string:"#42BE65",number:"#FF8389",function:"#78A9FF",variable:"#F2F4F8",type:"#08BDBA",operator:"#FF8389"},tokens:{boolean:"#08BDBA",class:"#78A9FF",className:"#78A9FF",commentDoc:"#7B7B7B",constant:"#BE95FF",decorator:"#08BDBA",enum:"#78A9FF",exception:"#FF8389",functionCall:"#78A9FF",interface:"#08BDBA",jsxTag:"#78A9FF",key:"#78A9FF",keywordImport:"#FF8389",label:"#FF8389",macro:"#78A9FF",method:"#42BE65",module:"#FF8389",namespace:"#08BDBA",parameter:"#F2F4F8",preprocessor:"#FF8389",punctuation:"#8D8D8D",regex:"#42BE65",storageModifier:"#78A9FF",stringEscape:"#FFFFFF",struct:"#78A9FF",tag:"#78A9FF",tagAttribute:"#08BDBA",tagAttributeValue:"#42BE65",typeParameter:"#08BDBA",url:"#33B1FF",variableGlobal:"#78A9FF",variableLocal:"#0D0D0D",variableOther:"#42BE65",variableProperty:"#BE95FF"},highlights:{diffAdded:"#42BE65",diffAddedBackground:"#0E3A22",diffModified:"#78A9FF",diffModifiedBackground:"#78A9FF20",diffRemoved:"#FF8389",diffRemovedBackground:"#4D1A1F",lineNumber:"#4C4C4C",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#F2F4F8",heading2:"#F2F4F8",heading3:"#F2F4F8",heading4:"#F2F4F8",link:"#33B1FF",linkHover:"#78A9FF",inlineCode:"#42BE65",inlineCodeBackground:"#232323",blockquote:"#8D8D8D",blockquoteBorder:"#393939",listMarker:"#33B1FF99"},chat:{userMessage:"#F2F4F8",userMessageBackground:"#262626",assistantMessage:"#F2F4F8",assistantMessageBackground:"#161616",timestamp:"#8D8D8D",divider:"#393939"},tools:{background:"#26262680",border:"#4e4c4c80",headerHover:"#000000",icon:"#8D8D8D",title:"#F2F4F8",description:"#8D8D8D",edit:{added:"#42BE65",addedBackground:"#42BE6525",removed:"#FF8389",removedBackground:"#FF838925",lineNumber:"#4C4C4C"}}},Du={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Su={metadata:Bu,colors:vu,config:Du},Mu={id:"carbonfox-light",name:"Carbonfox",description:"Carbonfox",version:"1.0.0",variant:"light",tags:["light","palette"]},Tu={primary:{base:"#0072C3",hover:"#338ECF",active:"#0061A6",foreground:"#FFFFFF",muted:"#0072C380",emphasis:"#338ECF"},surface:{background:"#FFFFFF",foreground:"#161616",muted:"#F4F4F4",mutedForeground:"#868585",elevated:"#f4f4f7",elevatedForeground:"#161616",overlay:"#00000020",subtle:"#f6f6f8"},interactive:{border:"#e3e2e2",borderHover:"#D0D0D0",borderFocus:"#0F62FE",selection:"#cacfd87f",selectionForeground:"#000000",focus:"#0F62FE",focusRing:"#0F62FE40",cursor:"#000000",hover:"#43424214",active:"#43424212"},status:{error:"#DA1E28",errorForeground:"#FFFFFF",errorBackground:"#DA1E2820",errorBorder:"#DA1E2850",warning:"#F1C21B",warningForeground:"#FFFFFF",warningBackground:"#F1C21B20",warningBorder:"#F1C21B50",success:"#198038",successForeground:"#FFFFFF",successBackground:"#19803820",successBorder:"#19803850",info:"#0043CE",infoForeground:"#FFFFFF",infoBackground:"#0043CE20",infoBorder:"#0043CE50"},pr:{open:"#42BE65",draft:"#8D8D8D",blocked:"#F1C21B",merged:"#BE95FF",closed:"#FF8389"},syntax:{base:{background:"#F4F4F4",foreground:"#161616",comment:"#525252",keyword:"#0043CE",string:"#198038",number:"#DA1E28",function:"#0043CE",variable:"#161616",type:"#007D79",operator:"#DA1E28"},tokens:{boolean:"#007D79",class:"#0043CE",className:"#0043CE",commentDoc:"#A9A9A9",constant:"#6929C4",decorator:"#007D79",enum:"#0043CE",exception:"#DA1E28",functionCall:"#0043CE",interface:"#007D79",jsxTag:"#0043CE",key:"#0043CE",keywordImport:"#DA1E28",label:"#DA1E28",macro:"#0043CE",method:"#198038",module:"#DA1E28",namespace:"#007D79",parameter:"#161616",preprocessor:"#DA1E28",punctuation:"#525252",regex:"#198038",storageModifier:"#0043CE",stringEscape:"#000000",struct:"#0043CE",tag:"#0043CE",tagAttribute:"#007D79",tagAttributeValue:"#198038",typeParameter:"#007D79",url:"#0072C3",variableGlobal:"#0043CE",variableLocal:"#E8E8E8",variableOther:"#198038",variableProperty:"#6929C4"},highlights:{diffAdded:"#198038",diffAddedBackground:"#19803820",diffModified:"#0043CE",diffModifiedBackground:"#0043CE20",diffRemoved:"#DA1E28",diffRemovedBackground:"#DA1E2820",lineNumber:"#D0D0D0",lineNumberActive:"#000000"}},markdown:{heading1:"#161616",heading2:"#161616",heading3:"#161616",heading4:"#161616",link:"#0072C3",linkHover:"#0043CE",inlineCode:"#00661E",inlineCodeBackground:"#F2F2F2",blockquote:"#525252",blockquoteBorder:"#DCDCDC",listMarker:"#0072C399"},chat:{userMessage:"#161616",userMessageBackground:"#f4f4f7",assistantMessage:"#161616",assistantMessageBackground:"#FFFFFF",timestamp:"#525252",divider:"#DCDCDC"},tools:{background:"#F4F4F480",border:"#bdbbbb80",headerHover:"#DCDCDC",icon:"#525252",title:"#161616",description:"#525252",edit:{added:"#198038",addedBackground:"#19803825",removed:"#DA1E28",removedBackground:"#DA1E2825",lineNumber:"#D0D0D0"}}},Pu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Ru={metadata:Mu,colors:Tu,config:Pu},Iu={id:"catppuccin-dark",name:"Catppuccin",description:"Catppuccin",version:"1.0.0",variant:"dark",tags:["dark","palette"]},xu={primary:{base:"#7d8fff",hover:"#9EA6DF",active:"#BEC6FE",foreground:"#1E1E2E",muted:"#B4BEFE80",emphasis:"#9EA6DF"},surface:{background:"#1E1E2E",foreground:"#CDD6F4",muted:"#2a273b",mutedForeground:"#969cb1",elevated:"#282841",elevatedForeground:"#CDD6F4",overlay:"#F4F2FF20",subtle:"#26263f"},interactive:{border:"#35324A",borderHover:"#393655",borderFocus:"#575379",selection:"#8883ae5c",selectionForeground:"#F4F2FF",focus:"#B4BEFE",focusRing:"#B4BEFE40",cursor:"#F4F2FF",hover:"#a19ace20",active:"#a19ace20"},status:{error:"#F38BA8",errorForeground:"#1E1E2E",errorBackground:"#F38BA820",errorBorder:"#F38BA850",warning:"#F4B8E4",warningForeground:"#1E1E2E",warningBackground:"#F4B8E420",warningBorder:"#F4B8E450",success:"#A6D189",successForeground:"#1E1E2E",successBackground:"#A6D18920",successBorder:"#A6D18950",info:"#89DCEB",infoForeground:"#1E1E2E",infoBackground:"#89DCEB20",infoBorder:"#89DCEB50"},pr:{open:"#A6D189",draft:"#A6ADC8",blocked:"#F9E2AF",merged:"#d8b4fe",closed:"#F38BA8"},syntax:{base:{background:"#211F31",foreground:"#CDD6F4",comment:"#A6ADC8",keyword:"#B4BEFE",string:"#A6E3A1",number:"#F38BA8",function:"#B4BEFE",variable:"#CDD6F4",type:"#F9E2AF",operator:"#F38BA8"},tokens:{boolean:"#F9E2AF",class:"#B4BEFE",className:"#B4BEFE",commentDoc:"#9298B1",constant:"#89DCEB",decorator:"#F9E2AF",enum:"#B4BEFE",exception:"#F38BA8",functionCall:"#B4BEFE",interface:"#F9E2AF",jsxTag:"#B4BEFE",key:"#B4BEFE",keywordImport:"#F38BA8",label:"#F38BA8",macro:"#89DCEB",method:"#A6D189",module:"#F38BA8",namespace:"#F9E2AF",parameter:"#CDD6F4",preprocessor:"#F38BA8",punctuation:"#A6ADC8",regex:"#A6E3A1",storageModifier:"#89DCEB",stringEscape:"#F4F2FF",struct:"#B4BEFE",tag:"#B4BEFE",tagAttribute:"#F9E2AF",tagAttributeValue:"#A6E3A1",typeParameter:"#F9E2AF",url:"#89DCEB",variableGlobal:"#B4BEFE",variableLocal:"#1C1C29",variableOther:"#A6D189",variableProperty:"#89DCEB"},highlights:{diffAdded:"#A6D189",diffAddedBackground:"#1D2C30",diffModified:"#89DCEB",diffModifiedBackground:"#232538",diffRemoved:"#F38BA8",diffRemovedBackground:"#2C1F2A",lineNumber:"#47436D",lineNumberActive:"#F4F2FF"}},markdown:{heading1:"#CDD6F4",heading2:"#CDD6F4",heading3:"#CDD6F4",heading4:"#CDD6F4",link:"#89DCEB",linkHover:"#B4BEFE",inlineCode:"#A6E3A1",inlineCodeBackground:"#2B2B3B",blockquote:"#F9E2AF",blockquoteBorder:"#35324A",listMarker:"#B4BEFE99"},chat:{userMessage:"#CDD6F4",userMessageBackground:"#3a3a5b",assistantMessage:"#CDD6F4",assistantMessageBackground:"#1E1E2E",timestamp:"#A6ADC8",divider:"#35324A"},tools:{background:"#211F3180",border:"#534e7180",headerHover:"#191926",icon:"#A6ADC8",title:"#CDD6F4",description:"#A6ADC8",edit:{added:"#A6D189",addedBackground:"#A6D18925",removed:"#F38BA8",removedBackground:"#F38BA825",lineNumber:"#47436D"}}},Ou={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},_u={metadata:Iu,colors:xu,config:Ou},Lu={id:"catppuccin-light",name:"Catppuccin",description:"Catppuccin",version:"1.0.0",variant:"light",tags:["light","palette"]},Nu={primary:{base:"#7287FD",hover:"#8C99F6",active:"#6677DD",foreground:"#F5E0DC",muted:"#7287FD80",emphasis:"#8C99F6"},surface:{background:"#fff6f4",foreground:"#2e314a",muted:"#f8edeb",mutedForeground:"#888992",elevated:"#fbefea",elevatedForeground:"#4C4F69",overlay:"#1F1F2A20",subtle:"#fdeeee"},interactive:{border:"#e4d9dc",borderHover:"#D6C4C8",borderFocus:"#AB97A1",selection:"#ffffff",selectionForeground:"#1F1F2A",focus:"#7287FD",focusRing:"#7287FD40",cursor:"#1F1F2A",hover:"#ffffff8f",active:"#ffffff"},status:{error:"#D20F39",errorForeground:"#F5E0DC",errorBackground:"#D20F3920",errorBorder:"#D20F3950",warning:"#DF8E1D",warningForeground:"#F5E0DC",warningBackground:"#DF8E1D20",warningBorder:"#DF8E1D50",success:"#40A02B",successForeground:"#F5E0DC",successBackground:"#40A02B20",successBorder:"#40A02B50",info:"#04A5E5",infoForeground:"#F5E0DC",infoBackground:"#04A5E520",infoBorder:"#04A5E550"},pr:{open:"#40A02B",draft:"#6C6F85",blocked:"#DF8E1D",merged:"#9572fd",closed:"#D20F39"},syntax:{base:{background:"#F2D8D4",foreground:"#4C4F69",comment:"#6C6F85",keyword:"#7287FD",string:"#40A02B",number:"#D20F39",function:"#7287FD",variable:"#4C4F69",type:"#DF8E1D",operator:"#D20F39"},tokens:{boolean:"#DF8E1D",class:"#7287FD",className:"#7287FD",commentDoc:"#B1A8B1",constant:"#04A5E5",decorator:"#DF8E1D",enum:"#7287FD",exception:"#D20F39",functionCall:"#7287FD",interface:"#DF8E1D",jsxTag:"#7287FD",key:"#7287FD",keywordImport:"#D20F39",label:"#D20F39",macro:"#04A5E5",method:"#40A02B",module:"#D20F39",namespace:"#DF8E1D",parameter:"#4C4F69",preprocessor:"#D20F39",punctuation:"#6C6F85",regex:"#40A02B",storageModifier:"#04A5E5",stringEscape:"#1F1F2A",struct:"#7287FD",tag:"#7287FD",tagAttribute:"#DF8E1D",tagAttributeValue:"#40A02B",typeParameter:"#DF8E1D",url:"#04A5E5",variableGlobal:"#7287FD",variableLocal:"#F9E8E4",variableOther:"#40A02B",variableProperty:"#04A5E5"},highlights:{diffAdded:"#40A02B",diffAddedBackground:"#EDF5E6",diffModified:"#04A5E5",diffModifiedBackground:"#E4E2F6",diffRemoved:"#D20F39",diffRemovedBackground:"#FDE1E3",lineNumber:"#C2AEB4",lineNumberActive:"#1F1F2A"}},markdown:{heading1:"#2e314a",heading2:"#2e314a",heading3:"#2e314a",heading4:"#2e314a",link:"#04A5E5",linkHover:"#7287FD",inlineCode:"#1A7A05",inlineCodeBackground:"#F2E9E7",blockquote:"#DF8E1D",blockquoteBorder:"#E0CFD3",listMarker:"#7287FD99"},chat:{userMessage:"#2e314a",userMessageBackground:"#ffffff",assistantMessage:"#4C4F69",assistantMessageBackground:"#F5E0DC",timestamp:"#6C6F85",divider:"#E0CFD3"},tools:{background:"#F2D8D480",border:"#cbbec180",headerHover:"#FDEEEE",icon:"#6C6F85",title:"#4C4F69",description:"#6C6F85",edit:{added:"#40A02B",addedBackground:"#40A02B25",removed:"#D20F39",removedBackground:"#D20F3925",lineNumber:"#C2AEB4"}}},Uu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},ju={metadata:Lu,colors:Nu,config:Uu},Hu={id:"dracula-dark",name:"Dracula",description:"Dracula",version:"1.0.0",variant:"dark",tags:["dark","palette"]},zu={primary:{base:"#BD93F9",hover:"#A480D8",active:"#C7A3FA",foreground:"#14151F",muted:"#BD93F980",emphasis:"#A480D8"},surface:{background:"#14151F",foreground:"#F8F8F2",muted:"#181926",mutedForeground:"#7c7e9c",elevated:"#161722",elevatedForeground:"#F8F8F2",overlay:"#FFFFFF20",subtle:"#1f2030"},interactive:{border:"#292a36",borderHover:"#303244",borderFocus:"#4A4D6D",selection:"#30334b",selectionForeground:"#FFFFFF",focus:"#BD93F9",focusRing:"#BD93F940",cursor:"#FFFFFF",hover:"#30334ba3",active:"#30334b"},status:{error:"#FF5555",errorForeground:"#14151F",errorBackground:"#FF555520",errorBorder:"#FF555550",warning:"#FFB86C",warningForeground:"#14151F",warningBackground:"#FFB86C20",warningBorder:"#FFB86C50",success:"#50FA7B",successForeground:"#14151F",successBackground:"#50FA7B20",successBorder:"#50FA7B50",info:"#8BE9FD",infoForeground:"#14151F",infoBackground:"#8BE9FD20",infoBorder:"#8BE9FD50"},pr:{open:"#50FA7B",draft:"#B6B9E4",blocked:"#FFB86C",merged:"#BD93F9",closed:"#FF5555"},syntax:{base:{background:"#181926",foreground:"#F8F8F2",comment:"#B6B9E4",keyword:"#BD93F9",string:"#50FA7B",number:"#FF79C6",function:"#BD93F9",variable:"#F8F8F2",type:"#FFB86C",operator:"#FF79C6"},tokens:{boolean:"#FFB86C",class:"#BD93F9",className:"#BD93F9",commentDoc:"#9EA0C6",constant:"#8BE9FD",decorator:"#FFB86C",enum:"#BD93F9",exception:"#FF79C6",functionCall:"#BD93F9",interface:"#FFB86C",jsxTag:"#BD93F9",key:"#BD93F9",keywordImport:"#FF79C6",label:"#FF79C6",macro:"#8BE9FD",method:"#50FA7B",module:"#FF79C6",namespace:"#FFB86C",parameter:"#F8F8F2",preprocessor:"#FF79C6",punctuation:"#B6B9E4",regex:"#50FA7B",storageModifier:"#8BE9FD",stringEscape:"#FFFFFF",struct:"#BD93F9",tag:"#BD93F9",tagAttribute:"#FFB86C",tagAttributeValue:"#50FA7B",typeParameter:"#FFB86C",url:"#8BE9FD",variableGlobal:"#BD93F9",variableLocal:"#161722",variableOther:"#50FA7B",variableProperty:"#8BE9FD"},highlights:{diffAdded:"#50FA7B",diffAddedBackground:"#1F2A2F",diffModified:"#8BE9FD",diffModifiedBackground:"#24253A",diffRemoved:"#FF5555",diffRemovedBackground:"#2D1F27",lineNumber:"#3B3D55",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#F8F8F2",heading2:"#F8F8F2",heading3:"#F8F8F2",heading4:"#F8F8F2",link:"#8BE9FD",linkHover:"#BD93F9",inlineCode:"#4aeb72",inlineCodeBackground:"#21222C",blockquote:"#FFB86C",blockquoteBorder:"#2D2F3C",listMarker:"#BD93F999"},chat:{userMessage:"#F8F8F2",userMessageBackground:"#222436",assistantMessage:"#F8F8F2",assistantMessageBackground:"#14151F",timestamp:"#B6B9E4",divider:"#2D2F3C"},tools:{background:"#18192680",border:"#494c6180",headerHover:"#191A26",icon:"#B6B9E4",title:"#F8F8F2",description:"#B6B9E4",edit:{added:"#50FA7B",addedBackground:"#50FA7B25",removed:"#FF5555",removedBackground:"#FF555525",lineNumber:"#3B3D55"}}},$u={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Wu={metadata:Hu,colors:zu,config:$u},Gu={id:"dracula-light",name:"Dracula",description:"Dracula",version:"1.0.0",variant:"light",tags:["light","palette"]},qu={primary:{base:"#7C6BF5",hover:"#9587F4",active:"#6A5CD2",foreground:"#F8F8F2",muted:"#7C6BF580",emphasis:"#9587F4"},surface:{background:"#F8F8F2",foreground:"#1F1F2F",muted:"#eff1eb",mutedForeground:"#6c6c7a",elevated:"#eeeee5",elevatedForeground:"#1F1F2F",overlay:"#05040C20",subtle:"#edeee7"},interactive:{border:"#E2E3DA",borderHover:"#D8D9D0",borderFocus:"#B0B2A7",selection:"#c2bcea63",selectionForeground:"#05040C",focus:"#7C6BF5",focusRing:"#7C6BF540",cursor:"#05040C",hover:"#c2bcea38",active:"#c2bcea63"},status:{error:"#D9536F",errorForeground:"#F8F8F2",errorBackground:"#D9536F20",errorBorder:"#D9536F50",warning:"#F7A14D",warningForeground:"#F8F8F2",warningBackground:"#F7A14D20",warningBorder:"#F7A14D50",success:"#2FBF71",successForeground:"#F8F8F2",successBackground:"#2FBF7120",successBorder:"#2FBF7150",info:"#1D7FC5",infoForeground:"#F8F8F2",infoBackground:"#1D7FC520",infoBorder:"#1D7FC550"},pr:{open:"#2FBF71",draft:"#52526B",blocked:"#F7A14D",merged:"#7C6BF5",closed:"#D9536F"},syntax:{base:{background:"#F1F2ED",foreground:"#1F1F2F",comment:"#52526B",keyword:"#7C6BF5",string:"#2FBF71",number:"#D16090",function:"#7C6BF5",variable:"#1F1F2F",type:"#F7A14D",operator:"#D16090"},tokens:{boolean:"#F7A14D",class:"#7C6BF5",className:"#7C6BF5",commentDoc:"#A5A5AF",constant:"#1D7FC5",decorator:"#F7A14D",enum:"#7C6BF5",exception:"#D16090",functionCall:"#7C6BF5",interface:"#F7A14D",jsxTag:"#7C6BF5",key:"#7C6BF5",keywordImport:"#D16090",label:"#D16090",macro:"#1D7FC5",method:"#2FBF71",module:"#D16090",namespace:"#F7A14D",parameter:"#1F1F2F",preprocessor:"#D16090",punctuation:"#52526B",regex:"#2FBF71",storageModifier:"#1D7FC5",stringEscape:"#05040C",struct:"#7C6BF5",tag:"#7C6BF5",tagAttribute:"#F7A14D",tagAttributeValue:"#2FBF71",typeParameter:"#F7A14D",url:"#1D7FC5",variableGlobal:"#7C6BF5",variableLocal:"#F6F6F1",variableOther:"#2FBF71",variableProperty:"#1D7FC5"},highlights:{diffAdded:"#2FBF71",diffAddedBackground:"#E4F5E6",diffModified:"#1D7FC5",diffModifiedBackground:"#DEDFE9",diffRemoved:"#D9536F",diffRemovedBackground:"#FAE4EB",lineNumber:"#C4C6BC",lineNumberActive:"#05040C"}},markdown:{heading1:"#1F1F2F",heading2:"#1F1F2F",heading3:"#1F1F2F",heading4:"#1F1F2F",link:"#1D7FC5",linkHover:"#7C6BF5",inlineCode:"#007325",inlineCodeBackground:"#EBEBE5",blockquote:"#F7A14D",blockquoteBorder:"#E2E3DA",listMarker:"#7C6BF599"},chat:{userMessage:"#1F1F2F",userMessageBackground:"#F1F2ED",assistantMessage:"#1F1F2F",assistantMessageBackground:"#F8F8F2",timestamp:"#52526B",divider:"#E2E3DA"},tools:{background:"#F1F2ED80",border:"#E2E3DA80",headerHover:"#F2F2EC",icon:"#52526B",title:"#1F1F2F",description:"#52526B",edit:{added:"#2FBF71",addedBackground:"#2FBF7125",removed:"#D9536F",removedBackground:"#D9536F25",lineNumber:"#C4C6BC"}}},Ku={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Vu={metadata:Gu,colors:qu,config:Ku},Ju={id:"gruvbox-dark",name:"Gruvbox",description:"Gruvbox",version:"1.0.0",variant:"dark",tags:["dark","palette"]},Yu={primary:{base:"#83A598",hover:"#759287",active:"#95B09F",foreground:"#282828",muted:"#83A59880",emphasis:"#759287"},surface:{background:"#282828",foreground:"#EBDBB2",muted:"#32302F",mutedForeground:"#918574",elevated:"#25292b",elevatedForeground:"#EBDBB2",overlay:"#FBF1C720",subtle:"#343230"},interactive:{border:"#453f3b",borderHover:"#5A524B",borderFocus:"#7C6F64",selection:"#5a5647db",selectionForeground:"#FBF1C7",focus:"#83A598",focusRing:"#83A59840",cursor:"#FBF1C7",hover:"#5a5647d9",active:"#5a5647ec"},status:{error:"#FB4934",errorForeground:"#282828",errorBackground:"#FB493420",errorBorder:"#FB493450",warning:"#FABD2F",warningForeground:"#282828",warningBackground:"#FABD2F20",warningBorder:"#FABD2F50",success:"#B8BB26",successForeground:"#282828",successBackground:"#B8BB2620",successBorder:"#B8BB2650",info:"#D3869B",infoForeground:"#282828",infoBackground:"#D3869B20",infoBorder:"#D3869B50"},pr:{open:"#B8BB26",draft:"#A89984",blocked:"#FABD2F",merged:"#8973a8",closed:"#FB4934"},syntax:{base:{background:"#32302F",foreground:"#EBDBB2",comment:"#A89984",keyword:"#83A598",string:"#B8BB26",number:"#FB4934",function:"#83A598",variable:"#EBDBB2",type:"#FABD2F",operator:"#FB4934"},tokens:{boolean:"#FABD2F",class:"#83A598",className:"#83A598",commentDoc:"#958876",constant:"#D3869B",decorator:"#FABD2F",enum:"#83A598",exception:"#FB4934",functionCall:"#83A598",interface:"#FABD2F",jsxTag:"#83A598",key:"#83A598",keywordImport:"#FB4934",label:"#FB4934",macro:"#8EC07C",method:"#B8BB26",module:"#FB4934",namespace:"#FABD2F",parameter:"#EBDBB2",preprocessor:"#FB4934",punctuation:"#A89984",regex:"#B8BB26",storageModifier:"#8EC07C",stringEscape:"#FBF1C7",struct:"#83A598",tag:"#83A598",tagAttribute:"#FABD2F",tagAttributeValue:"#B8BB26",typeParameter:"#FABD2F",url:"#8EC07C",variableGlobal:"#83A598",variableLocal:"#1D2021",variableOther:"#B8BB26",variableProperty:"#D3869B"},highlights:{diffAdded:"#B8BB26",diffAddedBackground:"#2A3325",diffModified:"#D3869B",diffModifiedBackground:"#32302F",diffRemoved:"#FB4934",diffRemovedBackground:"#3C2222",lineNumber:"#70665D",lineNumberActive:"#FBF1C7"}},markdown:{heading1:"#EBDBB2",heading2:"#EBDBB2",heading3:"#EBDBB2",heading4:"#EBDBB2",link:"#8EC07C",linkHover:"#83A598",inlineCode:"#B8BB26",inlineCodeBackground:"#353535",blockquote:"#928374",blockquoteBorder:"#504945",listMarker:"#83A59899"},chat:{userMessage:"#EBDBB2",userMessageBackground:"#3e3c3a",assistantMessage:"#EBDBB2",assistantMessageBackground:"#282828",timestamp:"#A89984",divider:"#504945"},tools:{background:"#32302F80",border:"#6e645e80",headerHover:"#141617",icon:"#A89984",title:"#EBDBB2",description:"#A89984",edit:{added:"#B8BB26",addedBackground:"#B8BB2625",removed:"#FB4934",removedBackground:"#FB493425",lineNumber:"#70665D"}}},Qu={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Xu={metadata:Ju,colors:Yu,config:Qu},Zu={id:"gruvbox-light",name:"Gruvbox",description:"Gruvbox",version:"1.0.0",variant:"light",tags:["light","palette"]},ef={primary:{base:"#076678",hover:"#388288",active:"#0C5D6C",foreground:"#FBF1C7",muted:"#07667880",emphasis:"#388288"},surface:{background:"#f8f1d5",foreground:"#3C3836",muted:"#F2E5BC",mutedForeground:"#7C6F64",elevated:"#efebcd",elevatedForeground:"#3C3836",overlay:"#28282820",subtle:"#f3efde"},interactive:{border:"#e8d7b7",borderHover:"#C9B897",borderFocus:"#A89984",selection:"#f1eaeaec",selectionForeground:"#282828",focus:"#076678",focusRing:"#07667840",cursor:"#282828",hover:"#fffdfdb3",active:"#f1eaeaec"},status:{error:"#9D0006",errorForeground:"#FBF1C7",errorBackground:"#9D000620",errorBorder:"#9D000650",warning:"#B57614",warningForeground:"#FBF1C7",warningBackground:"#B5761420",warningBorder:"#B5761450",success:"#79740E",successForeground:"#FBF1C7",successBackground:"#79740E20",successBorder:"#79740E50",info:"#8F3F71",infoForeground:"#FBF1C7",infoBackground:"#8F3F7120",infoBorder:"#8F3F7150"},pr:{open:"#79740E",draft:"#7C6F64",blocked:"#B57614",merged:"#5e4c76",closed:"#9D0006"},syntax:{base:{background:"#F2E5BC",foreground:"#3C3836",comment:"#7C6F64",keyword:"#076678",string:"#79740E",number:"#9D0006",function:"#076678",variable:"#3C3836",type:"#B57614",operator:"#9D0006"},tokens:{boolean:"#B57614",class:"#076678",className:"#076678",commentDoc:"#BCB096",constant:"#8F3F71",decorator:"#B57614",enum:"#076678",exception:"#9D0006",functionCall:"#076678",interface:"#B57614",jsxTag:"#076678",key:"#076678",keywordImport:"#9D0006",label:"#9D0006",macro:"#427B58",method:"#79740E",module:"#9D0006",namespace:"#B57614",parameter:"#3C3836",preprocessor:"#9D0006",punctuation:"#7C6F64",regex:"#79740E",storageModifier:"#427B58",stringEscape:"#282828",struct:"#076678",tag:"#076678",tagAttribute:"#B57614",tagAttributeValue:"#79740E",typeParameter:"#B57614",url:"#427B58",variableGlobal:"#076678",variableLocal:"#F9F5D7",variableOther:"#79740E",variableProperty:"#8F3F71"},highlights:{diffAdded:"#79740E",diffAddedBackground:"#DDE3B1",diffModified:"#8F3F71",diffModifiedBackground:"#EBDFB5",diffRemoved:"#9D0006",diffRemovedBackground:"#E8C7C3",lineNumber:"#B0A285",lineNumberActive:"#282828"}},markdown:{heading1:"#3C3836",heading2:"#3C3836",heading3:"#3C3836",heading4:"#3C3836",link:"#427B58",linkHover:"#076678",inlineCode:"#5F5A00",inlineCodeBackground:"#EBE4C8",blockquote:"#928374",blockquoteBorder:"#D5C4A1",listMarker:"#07667899"},chat:{userMessage:"#3C3836",userMessageBackground:"#FDF9E8",assistantMessage:"#3C3836",assistantMessageBackground:"#FBF1C7",timestamp:"#7C6F64",divider:"#D5C4A1"},tools:{background:"#F2E5BC80",border:"#a6997e80",headerHover:"#FDF9E8",icon:"#7C6F64",title:"#3C3836",description:"#7C6F64",edit:{added:"#79740E",addedBackground:"#79740E25",removed:"#9D0006",removedBackground:"#9D000625",lineNumber:"#B0A285"}}},tf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},of={metadata:Zu,colors:ef,config:tf},rf={id:"jetbrains-dark",name:"JetBrains",description:"JetBrains IDE-inspired colors for AiWorker - dark variant",author:"Artem Evsevev, adapted for AiWorker",version:"1.0.0",variant:"dark",tags:["dark","jetbrains","ide","blue"]},nf={primary:{base:"#6796f5",hover:"#70AEFF",active:"#5594FA",foreground:"#1E1F22",muted:"#6796f580",emphasis:"#70AEFF"},surface:{background:"#1E1F22",foreground:"#DFE1E5",muted:"#26282B",mutedForeground:"#9fa0a2",elevated:"#2B2D30",elevatedForeground:"#DFE1E5",overlay:"#00000080",subtle:"#28292c"},interactive:{border:"#383a3f",borderHover:"#4B5059",borderFocus:"#6796f5",selection:"#43454A",selectionForeground:"#DFE1E5",focus:"#6796f5",focusRing:"#6796f550",cursor:"#CED0D6",hover:"#3C3E41",active:"#494A4D"},status:{error:"#FA6675",errorForeground:"#1E1F22",errorBackground:"#402929",errorBorder:"#FA6675",warning:"#F2C55C",warningForeground:"#1E1F22",warningBackground:"#665014",warningBorder:"#F2C55C",success:"#57965D",successForeground:"#1E1F22",successBackground:"#253627",successBorder:"#57965D",info:"#3592C4",infoForeground:"#1E1F22",infoBackground:"#243846",infoBorder:"#3592C4"},pr:{open:"#5FAD65",draft:"#868A91",blocked:"#F2C55C",merged:"#A571E6",closed:"#DB5C5C"},syntax:{base:{background:"#1E1F22",foreground:"#BCBEC4",comment:"#7A7E85",keyword:"#CF8E6D",string:"#6AAB73",number:"#2AACB8",function:"#6AA2D7",variable:"#BCBEC4",type:"#A6BB77",operator:"#BCBEC4"},tokens:{commentDoc:"#5F826B",stringEscape:"#CF8E6D",keywordImport:"#CF8E6D",storageModifier:"#CF8E6D",functionCall:"#6AA2D7",method:"#6AA2D7",functionBuiltin:"#D5A563",variableProperty:"#C77DBB",variableOther:"#BCBEC4",variableGlobal:"#E59EAE",variableLocal:"#BCBEC4",parameter:"#3CACAC",constant:"#C77DBB",class:"#57AAF7",className:"#57AAF7",interface:"#8D91DC",struct:"#A6BB77",enum:"#A6BB77",typeParameter:"#3CACAC",namespace:"#BCBEC4",module:"#8D91DC",tag:"#D5B778",jsxTag:"#D5B778",tagAttribute:"#B3AE60",tagAttributeValue:"#6AAB73",boolean:"#CF8E6D",decorator:"#B3AE60",label:"#D5A563",punctuation:"#BCBEC4",macro:"#D5A563",preprocessor:"#D5A563",regex:"#6AAB73",url:"#57AAF7",key:"#C77DBB",exception:"#E59EAE"},highlights:{diffAdded:"#549159",diffAddedBackground:"#294436",diffRemoved:"#F75464",diffRemovedBackground:"#45302B",diffModified:"#70AEFF",diffModifiedBackground:"#243C63",lineNumber:"#4B5059",lineNumberActive:"#A1A3AB"}},markdown:{heading1:"#FFFFFF",heading2:"#DFE1E5",heading3:"#CED0D6",heading4:"#BCBEC4",link:"#56A8F5",linkHover:"#6796f5",inlineCode:"#6AAB73",inlineCodeBackground:"#2B2C2F",blockquote:"#7A7E85",blockquoteBorder:"#393B41",listMarker:"#B3AE6099"},chat:{userMessage:"#DFE1E5",userMessageBackground:"#2a3b5d76",assistantMessage:"#DFE1E5",assistantMessageBackground:"#1E1F22",timestamp:"#7A7E85",divider:"#393B41"},tools:{background:"#26282B50",border:"#393B41",headerHover:"#3C3E4150",icon:"#B0B1B3",title:"#DFE1E5",description:"#B0B1B3",edit:{added:"#549159",addedBackground:"#29443640",removed:"#F75464",removedBackground:"#45302B40",lineNumber:"#4B5059"}}},af={fonts:{sans:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},sf={metadata:rf,colors:nf,config:af},cf={id:"jetbrains-light",name:"JetBrains",description:"JetBrains IDE-inspired colors for AiWorker - light variant",author:"Artem Evsevev, adapted for AiWorker",version:"1.0.0",variant:"light",tags:["light","jetbrains","ide","blue"]},df={primary:{base:"#195ce3",hover:"#2D61F0",active:"#0055FF",foreground:"#FFFFFF",muted:"#3573F080",emphasis:"#006DCC"},surface:{background:"#FFF",foreground:"#000000",muted:"#F7F8FA",mutedForeground:"#404040",elevated:"#FFFFFF",elevatedForeground:"#000000",overlay:"#00000025",subtle:"#f5f8fd"},interactive:{border:"#dde0ea",borderHover:"#AEB3C2",borderFocus:"#0055FF",selection:"#DFE1E5",selectionForeground:"#000000",focus:"#0055FF",focusRing:"#0055FF40",cursor:"#000000",hover:"#E6E6E8",active:"#DBDCDE"},status:{error:"#CE0606",errorForeground:"#FFFFFF",errorBackground:"#FFE8E8",errorBorder:"#CF5B56",warning:"#F49810",warningForeground:"#000000",warningBackground:"#FFF8DC",warningBorder:"#F49810",success:"#077D18",successForeground:"#FFFFFF",successBackground:"#E9F5E6",successBorder:"#55A76A",info:"#389FD6",infoForeground:"#000000",infoBackground:"#E7F4FB",infoBorder:"#389FD6"},pr:{open:"#369650",draft:"#808080",blocked:"#F49810",merged:"#834DF0",closed:"#E55765"},syntax:{base:{background:"#FFFFFF",foreground:"#080808",comment:"#8C8C8C",keyword:"#0033B3",string:"#067D17",number:"#1750EB",function:"#00627A",variable:"#000000",type:"#A04908",operator:"#080808"},tokens:{commentDoc:"#8C8C8C",stringEscape:"#0037A6",keywordImport:"#0033B3",storageModifier:"#0033B3",functionCall:"#00627A",method:"#00627A",functionBuiltin:"#C27203",variableProperty:"#871094",variableOther:"#000000",variableGlobal:"#1C5DFE",variableLocal:"#000000",parameter:"#007E8A",constant:"#871094",class:"#00627A",className:"#00627A",interface:"#835DDA",struct:"#A04908",enum:"#A04908",typeParameter:"#007E8A",namespace:"#000000",module:"#835DDA",tag:"#0033B3",jsxTag:"#0033B3",tagAttribute:"#9E880D",tagAttributeValue:"#067D17",boolean:"#0033B3",decorator:"#9E880D",label:"#C27203",punctuation:"#080808",macro:"#C27203",preprocessor:"#C27203",regex:"#067D17",url:"#00627A",key:"#871094",exception:"#1C5DFE"},highlights:{diffAdded:"#077D18",diffAddedBackground:"#BEE6BE",diffRemoved:"#FF0000",diffRemovedBackground:"#FFD5CC",diffModified:"#0133B3",diffModifiedBackground:"#DDE8FF",lineNumber:"#AEB3C2",lineNumberActive:"#767A8A"}},markdown:{heading1:"#000000",heading2:"#161617",heading3:"#404040",heading4:"#404040",link:"#006DCC",linkHover:"#3573F0",inlineCode:"#067D17",inlineCodeBackground:"#F2F2F2",blockquote:"#8C8C8C",blockquoteBorder:"#C9CCD6",listMarker:"#9E880D99"},chat:{userMessage:"#000000",userMessageBackground:"#eff4fd",assistantMessage:"#000000",assistantMessageBackground:"#F7F8FA",timestamp:"#767A8A",divider:"#C9CCD6"},tools:{background:"#F5F7F950",border:"#AEB3C280",headerHover:"#E6E6E8",icon:"#404040",title:"#000000",description:"#404040",edit:{added:"#077D18",addedBackground:"#BEE6BE50",removed:"#FF0000",removedBackground:"#FFD5CC50",lineNumber:"#AEB3C2"}}},lf={fonts:{sans:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'"JetBrains Mono", ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},uf={metadata:cf,colors:df,config:lf},ff={id:"kanagawa-dark",name:"Kanagawa",description:"A color scheme inspired by Japanese art and ink painting - dark variant",version:"1.0.0",variant:"dark",tags:["dark","japanese","ink","elegant"]},mf={primary:{base:"#7FB4CA",hover:"#9DC5E0",active:"#658594",foreground:"#1F1F28",muted:"#7FB4CA80",emphasis:"#7E9CD8"},surface:{background:"#1F1F28",foreground:"#DCD7BA",muted:"#23232d",mutedForeground:"#8b8b85",elevated:"#2A2A37",elevatedForeground:"#DCD7BA",overlay:"#16161DCC",subtle:"#2a2a36"},interactive:{border:"#333343",borderHover:"#54546D",borderFocus:"#7FB4CA",selection:"#729fb333",selectionForeground:"#DCD7BA",focus:"#7FB4CA",focusRing:"#7FB4CA50",cursor:"#DCD7BA",hover:"#363646",active:"#54546D"},status:{error:"#E82424",errorForeground:"#DCD7BA",errorBackground:"#E8242420",errorBorder:"#E8242450",warning:"#FF9E3B",warningForeground:"#1F1F28",warningBackground:"#FF9E3B20",warningBorder:"#FF9E3B50",success:"#98BB6C",successForeground:"#1F1F28",successBackground:"#98BB6C20",successBorder:"#98BB6C50",info:"#7E9CD8",infoForeground:"#1F1F28",infoBackground:"#7E9CD820",infoBorder:"#7E9CD850"},pr:{open:"#98BB6C",draft:"#54546D",blocked:"#FF9E3B",merged:"#957FB8",closed:"#E82424"},syntax:{base:{background:"#16161D",foreground:"#DCD7BA",comment:"#54546D",keyword:"#7E9CD8",string:"#98BB6C",number:"#FF9E3B",function:"#E6C384",variable:"#DCD7BA",type:"#C8C093",operator:"#C34043"},tokens:{commentDoc:"#727169",stringEscape:"#DCD7BA",keywordImport:"#957FB8",storageModifier:"#7E9CD8",functionCall:"#E6C384",method:"#76946A",variableProperty:"#7E9CD8",variableOther:"#76946A",variableGlobal:"#D27E99",variableLocal:"#2A2A37",parameter:"#DCD7BA",constant:"#DCD7BA",class:"#E6C384",className:"#E6C384",interface:"#C8C093",struct:"#E6C384",enum:"#E6C384",typeParameter:"#E6C384",namespace:"#C8C093",module:"#C34043",tag:"#7E9CD8",jsxTag:"#D27E99",tagAttribute:"#C8C093",tagAttributeValue:"#98BB6C",boolean:"#C8C093",decorator:"#C8C093",label:"#D27E99",punctuation:"#54546D",macro:"#7E9CD8",preprocessor:"#D27E99",regex:"#98BB6C",url:"#7E9CD8",key:"#E6C384",exception:"#D27E99"},highlights:{diffAdded:"#98BB6C",diffAddedBackground:"#76946A20",diffRemoved:"#C34043",diffRemovedBackground:"#E8242420",diffModified:"#7E9CD8",diffModifiedBackground:"#7E9CD820",lineNumber:"#363646",lineNumberActive:"#DCD7BA"}},markdown:{heading1:"#DCD7BA",heading2:"#DCD7BA",heading3:"#DCD7BA",heading4:"#DCD7BA",link:"#7FB4CA",linkHover:"#7E9CD8",inlineCode:"#98BB6C",inlineCodeBackground:"#2C2C35",blockquote:"#54546D",blockquoteBorder:"#363646",listMarker:"#FF9E3B99"},chat:{userMessage:"#DCD7BA",userMessageBackground:"#2A2A37",assistantMessage:"#DCD7BA",assistantMessageBackground:"#2f2f3d",timestamp:"#54546D",divider:"#363646"},tools:{background:"#16161D50",border:"#4a4a5f80",headerHover:"#36364650",icon:"#afad9c",title:"#DCD7BA",description:"#818182",edit:{added:"#98BB6C",addedBackground:"#98BB6C25",removed:"#C34043",removedBackground:"#C3404325",lineNumber:"#56566d"}}},gf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},pf={metadata:ff,colors:mf,config:gf},hf={id:"kanagawa-light",name:"Kanagawa",description:"A color scheme inspired by Japanese art and ink painting - light variant (Lotus)",version:"1.0.0",variant:"light",tags:["light","japanese","lotus","elegant"]},Ff={primary:{base:"#4D699B",hover:"#6693BF",active:"#5D57A3",foreground:"#f6f3d6",muted:"#4D699B80",emphasis:"#6693BF"},surface:{background:"#f6f3d6",foreground:"#545464",muted:"#ece6c8",mutedForeground:"#6c6c67",elevated:"#eae4bf",elevatedForeground:"#545464",overlay:"#54546433",subtle:"#e6f0e3"},interactive:{border:"#d7d1ba",borderHover:"#8A8980",borderFocus:"#4D699B",selection:"#e9f3e5cf",selectionForeground:"#545464",focus:"#4D699B",focusRing:"#4D699B40",cursor:"#545464",hover:"#e9f3e5a9",active:"#e9f3e5cf"},status:{error:"#E82424",errorForeground:"#f6f3d6",errorBackground:"#E8242420",errorBorder:"#E8242450",warning:"#DE9800",warningForeground:"#545464",warningBackground:"#DE980020",warningBorder:"#DE980050",success:"#6F894E",successForeground:"#f6f3d6",successBackground:"#98BB6C20",successBorder:"#6F894E50",info:"#4D699B",infoForeground:"#f6f3d6",infoBackground:"#6693BF20",infoBorder:"#4D699B50"},pr:{open:"#6F894E",draft:"#716E61",blocked:"#DE9800",merged:"#624C83",closed:"#E82424"},syntax:{base:{background:"#DCD5AC",foreground:"#545464",comment:"#716E61",keyword:"#4D699B",string:"#6F894E",number:"#836F4A",function:"#CC6D00",variable:"#545464",type:"#77713F",operator:"#C84053"},tokens:{commentDoc:"#8A8980",stringEscape:"#545464",keywordImport:"#624C83",storageModifier:"#4D699B",functionCall:"#CC6D00",method:"#6E915F",variableProperty:"#4D699B",variableOther:"#6E915F",variableGlobal:"#B35B79",variableLocal:"#D5CEA3",parameter:"#545464",constant:"#545464",class:"#CC6D00",className:"#CC6D00",interface:"#77713F",struct:"#CC6D00",enum:"#CC6D00",typeParameter:"#CC6D00",namespace:"#77713F",module:"#C84053",tag:"#4D699B",jsxTag:"#B35B79",tagAttribute:"#77713F",tagAttributeValue:"#6F894E",boolean:"#77713F",decorator:"#77713F",label:"#B35B79",punctuation:"#716E61",macro:"#4D699B",preprocessor:"#B35B79",regex:"#6F894E",url:"#4D699B",key:"#CC6D00",exception:"#B35B79"},highlights:{diffAdded:"#6F894E",diffAddedBackground:"#6F894E20",diffRemoved:"#C84053",diffRemovedBackground:"#C8405320",diffModified:"#4D699B",diffModifiedBackground:"#4D699B20",lineNumber:"#8A8980",lineNumberActive:"#545464"}},markdown:{heading1:"#545464",heading2:"#545464",heading3:"#545464",heading4:"#545464",link:"#5D57A3",linkHover:"#4D699B",inlineCode:"#496328",inlineCodeBackground:"#E9E6C9",blockquote:"#716E61",blockquoteBorder:"#716E61",listMarker:"#836F4A99"},chat:{userMessage:"#545464",userMessageBackground:"#e6f2e1",assistantMessage:"#545464",assistantMessageBackground:"#f6f3d6",timestamp:"#716E61",divider:"#716E61"},tools:{background:"#DCD5AC50",border:"#716E6180",headerHover:"#716E61",icon:"#8A8980",title:"#545464",description:"#8A8980",edit:{added:"#6F894E",addedBackground:"#6F894E25",removed:"#C84053",removedBackground:"#C8405325",lineNumber:"#8A8980"}}},yf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},bf={metadata:hf,colors:Ff,config:yf},wf={id:"monokai-dark",name:"Monokai",description:"Monokai",version:"1.0.0",variant:"dark",tags:["dark","palette"]},Af={primary:{base:"#AE81FF",hover:"#9973DD",active:"#BA94FF",foreground:"#23241E",muted:"#AE81FF80",emphasis:"#9973DD"},surface:{background:"#23241E",foreground:"#F8F8F2",muted:"#282a20",mutedForeground:"#939390",elevated:"#21221a",elevatedForeground:"#F8F8F2",overlay:"#FFFFFF20",subtle:"#303126"},interactive:{border:"#343528",borderHover:"#393A2D",borderFocus:"#555741",selection:"#434d3cfe",selectionForeground:"#FFFFFF",focus:"#AE81FF",focusRing:"#AE81FF40",cursor:"#FFFFFF",hover:"#36372a",active:"#36382e"},status:{error:"#F92672",errorForeground:"#23241E",errorBackground:"#F9267220",errorBorder:"#F9267250",warning:"#FD971F",warningForeground:"#23241E",warningBackground:"#FD971F20",warningBorder:"#FD971F50",success:"#A6E22E",successForeground:"#23241E",successBackground:"#A6E22E20",successBorder:"#A6E22E50",info:"#66D9EF",infoForeground:"#23241E",infoBackground:"#66D9EF20",infoBorder:"#66D9EF50"},pr:{open:"#A6E22E",draft:"#C5C5C0",blocked:"#FD971F",merged:"#AE81FF",closed:"#F92672"},syntax:{base:{background:"#27281F",foreground:"#F8F8F2",comment:"#C5C5C0",keyword:"#AE81FF",string:"#A6E22E",number:"#F92672",function:"#AE81FF",variable:"#F8F8F2",type:"#FD971F",operator:"#F92672"},tokens:{boolean:"#FD971F",class:"#AE81FF",className:"#AE81FF",commentDoc:"#ADADA8",constant:"#66D9EF",decorator:"#FD971F",enum:"#AE81FF",exception:"#F92672",functionCall:"#AE81FF",interface:"#FD971F",jsxTag:"#AE81FF",key:"#AE81FF",keywordImport:"#F92672",label:"#F92672",macro:"#66D9EF",method:"#A6E22E",module:"#F92672",namespace:"#FD971F",parameter:"#F8F8F2",preprocessor:"#F92672",punctuation:"#C5C5C0",regex:"#A6E22E",storageModifier:"#66D9EF",stringEscape:"#FFFFFF",struct:"#AE81FF",tag:"#AE81FF",tagAttribute:"#FD971F",tagAttributeValue:"#A6E22E",typeParameter:"#FD971F",url:"#66D9EF",variableGlobal:"#AE81FF",variableLocal:"#25261F",variableOther:"#A6E22E",variableProperty:"#66D9EF"},highlights:{diffAdded:"#A6E22E",diffAddedBackground:"#1E2A1D",diffModified:"#66D9EF",diffModifiedBackground:"#2F2F24",diffRemoved:"#F92672",diffRemovedBackground:"#301C24",lineNumber:"#454639",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#F8F8F2",heading2:"#F8F8F2",heading3:"#F8F8F2",heading4:"#F8F8F2",link:"#66D9EF",linkHover:"#AE81FF",inlineCode:"#A6E22E",inlineCodeBackground:"#30312B",blockquote:"#FD971F",blockquoteBorder:"#343528",listMarker:"#AE81FF99"},chat:{userMessage:"#F8F8F2",userMessageBackground:"#36372a",assistantMessage:"#F8F8F2",assistantMessageBackground:"#23241E",timestamp:"#C5C5C0",divider:"#343528"},tools:{background:"#27281F80",border:"#4d4f3c80",headerHover:"#292A23",icon:"#C5C5C0",title:"#F8F8F2",description:"#C5C5C0",edit:{added:"#A6E22E",addedBackground:"#A6E22E25",removed:"#bd215a",removedBackground:"#F9267225",lineNumber:"#505142"}}},Ef={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},kf={metadata:wf,colors:Af,config:Ef},Cf={id:"monokai-light",name:"Monokai",description:"Monokai",version:"1.0.0",variant:"light",tags:["light","palette"]},Bf={primary:{base:"#BF7BFF",hover:"#CB94FB",active:"#A76CDB",foreground:"#FDF8EC",muted:"#BF7BFF80",emphasis:"#CB94FB"},surface:{background:"#FDF8EC",foreground:"#292318",muted:"#F8F2E6",mutedForeground:"#887c6a",elevated:"#FBF5E8",elevatedForeground:"#292318",overlay:"#1C150C20",subtle:"#F7EFDD"},interactive:{border:"#E9E0CF",borderHover:"#DFD5C3",borderFocus:"#B6A893",selection:"#1C150C22",selectionForeground:"#1C150C",focus:"#BF7BFF",focusRing:"#BF7BFF40",cursor:"#1C150C",hover:"#e6e0d5",active:"#FBF5E8"},status:{error:"#E54B4B",errorForeground:"#FDF8EC",errorBackground:"#E54B4B20",errorBorder:"#E54B4B50",warning:"#F1A948",warningForeground:"#FDF8EC",warningBackground:"#F1A94820",warningBorder:"#F1A94850",success:"#4FB54B",successForeground:"#FDF8EC",successBackground:"#4FB54B20",successBorder:"#4FB54B50",info:"#2D9AD7",infoForeground:"#FDF8EC",infoBackground:"#2D9AD720",infoBorder:"#2D9AD750"},pr:{open:"#4FB54B",draft:"#6D5C40",blocked:"#F1A948",merged:"#BF7BFF",closed:"#E54B4B"},syntax:{base:{background:"#F8F2E6",foreground:"#292318",comment:"#6D5C40",keyword:"#BF7BFF",string:"#4FB54B",number:"#D9487C",function:"#BF7BFF",variable:"#292318",type:"#F1A948",operator:"#D9487C"},tokens:{boolean:"#F1A948",class:"#BF7BFF",className:"#BF7BFF",commentDoc:"#B5AA96",constant:"#2D9AD7",decorator:"#F1A948",enum:"#BF7BFF",exception:"#D9487C",functionCall:"#BF7BFF",interface:"#F1A948",jsxTag:"#BF7BFF",key:"#BF7BFF",keywordImport:"#D9487C",label:"#D9487C",macro:"#2D9AD7",method:"#4FB54B",module:"#D9487C",namespace:"#F1A948",parameter:"#292318",preprocessor:"#D9487C",punctuation:"#6D5C40",regex:"#4FB54B",storageModifier:"#2D9AD7",stringEscape:"#1C150C",struct:"#BF7BFF",tag:"#BF7BFF",tagAttribute:"#F1A948",tagAttributeValue:"#4FB54B",typeParameter:"#F1A948",url:"#2D9AD7",variableGlobal:"#BF7BFF",variableLocal:"#FBF5E8",variableOther:"#4FB54B",variableProperty:"#2D9AD7"},highlights:{diffAdded:"#4FB54B",diffAddedBackground:"#E8F7E1",diffModified:"#2D9AD7",diffModifiedBackground:"#E9E0D0",diffRemoved:"#E54B4B",diffRemovedBackground:"#FDE5E4",lineNumber:"#CABFAD",lineNumberActive:"#1C150C"}},markdown:{heading1:"#292318",heading2:"#292318",heading3:"#292318",heading4:"#292318",link:"#2D9AD7",linkHover:"#BF7BFF",inlineCode:"#0F750B",inlineCodeBackground:"#F0EBDF",blockquote:"#F1A948",blockquoteBorder:"#E9E0CF",listMarker:"#BF7BFF99"},chat:{userMessage:"#292318",userMessageBackground:"#F8F2E6",assistantMessage:"#292318",assistantMessageBackground:"#FDF8EC",timestamp:"#6D5C40",divider:"#E9E0CF"},tools:{background:"#F8F2E680",border:"#d0c8b880",headerHover:"#F7EFDD",icon:"#6D5C40",title:"#292318",description:"#6D5C40",edit:{added:"#4FB54B",addedBackground:"#4FB54B25",removed:"#E54B4B",removedBackground:"#E54B4B25",lineNumber:"#bfb5a4"}}},vf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Df={metadata:Cf,colors:Bf,config:vf},Sf={id:"nightowl-dark",name:"Night Owl",description:"Night Owl",version:"1.0.0",variant:"dark",tags:["dark","palette"]},Mf={primary:{base:"#82AAFF",hover:"#6F94DF",active:"#95B7FF",foreground:"#011627",muted:"#82AAFF80",emphasis:"#6F94DF"},surface:{background:"#011627",foreground:"#D6DEEB",muted:"#0B253A",mutedForeground:"#7d8892",elevated:"#001122",elevatedForeground:"#D6DEEB",overlay:"#FFFFFF20",subtle:"#162431"},interactive:{border:"#2b3339",borderHover:"#234561",borderFocus:"#82AAFF",selection:"#555d6d94",selectionForeground:"#FFFFFF",focus:"#82AAFF",focusRing:"#82AAFF40",cursor:"#FFFFFF",hover:"#555d6d68",active:"#555d6d94"},status:{error:"#EF5350",errorForeground:"#011627",errorBackground:"#EF535020",errorBorder:"#EF535050",warning:"#ECC48D",warningForeground:"#011627",warningBackground:"#ECC48D20",warningBorder:"#ECC48D50",success:"#C5E478",successForeground:"#011627",successBackground:"#C5E47820",successBorder:"#C5E47850",info:"#82AAFF",infoForeground:"#011627",infoBackground:"#82AAFF20",infoBorder:"#82AAFF50"},pr:{open:"#C5E478",draft:"#5F7E97",blocked:"#ECC48D",merged:"#BC82FF",closed:"#EF5350"},syntax:{base:{background:"#0B253A",foreground:"#D6DEEB",comment:"#5F7E97",keyword:"#82AAFF",string:"#ECC48D",number:"#F78C6C",function:"#82AAFF",variable:"#D6DEEB",type:"#C5E478",operator:"#F78C6C"},tokens:{boolean:"#C5E478",class:"#82AAFF",className:"#82AAFF",commentDoc:"#516E86",constant:"#7FDBCA",decorator:"#C5E478",enum:"#82AAFF",exception:"#F78C6C",functionCall:"#82AAFF",interface:"#C5E478",jsxTag:"#82AAFF",key:"#82AAFF",keywordImport:"#F78C6C",label:"#F78C6C",macro:"#82AAFF",method:"#C5E478",module:"#F78C6C",namespace:"#C5E478",parameter:"#D6DEEB",preprocessor:"#F78C6C",punctuation:"#5F7E97",regex:"#ECC48D",storageModifier:"#82AAFF",stringEscape:"#FFFFFF",struct:"#82AAFF",tag:"#82AAFF",tagAttribute:"#C5E478",tagAttributeValue:"#ECC48D",typeParameter:"#C5E478",url:"#7FDBCA",variableGlobal:"#82AAFF",variableLocal:"#001122",variableOther:"#C5E478",variableProperty:"#7FDBCA"},highlights:{diffAdded:"#C5E478",diffAddedBackground:"#0A2E1A",diffModified:"#82AAFF",diffModifiedBackground:"#0B253A",diffRemoved:"#EF5350",diffRemovedBackground:"#2D1B1B",lineNumber:"#82AAFF",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#D6DEEB",heading2:"#D6DEEB",heading3:"#D6DEEB",heading4:"#D6DEEB",link:"#7FDBCA",linkHover:"#82AAFF",inlineCode:"#C5E478",inlineCodeBackground:"#0E2334",blockquote:"#5F7E97",blockquoteBorder:"#1D3B53",listMarker:"#82AAFF99"},chat:{userMessage:"#D6DEEB",userMessageBackground:"#0f283f",assistantMessage:"#D6DEEB",assistantMessageBackground:"#011627",timestamp:"#5F7E97",divider:"#1D3B53"},tools:{background:"#0B253A80",border:"#24496780",headerHover:"#000C17",icon:"#5F7E97",title:"#D6DEEB",description:"#5F7E97",edit:{added:"#C5E478",addedBackground:"#C5E47825",removed:"#EF5350",removedBackground:"#EF535025",lineNumber:"#58698f"}}},Tf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Pf={metadata:Sf,colors:Mf,config:Tf},Rf={id:"nightowl-light",name:"Night Owl",description:"Night Owl",version:"1.0.0",variant:"light",tags:["light","palette"]},If={primary:{base:"#4876D6",hover:"#6C91DD",active:"#4168BA",foreground:"#FBFBFB",muted:"#4876D680",emphasis:"#6C91DD"},surface:{background:"#FBFBFB",foreground:"#403F53",muted:"#F0F0F0",mutedForeground:"#747a7a",elevated:"#FFFFFF",elevatedForeground:"#403F53",overlay:"#1A1A1A20",subtle:"#F0F0F0"},interactive:{border:"#dfdfdf",borderHover:"#CCCCCC",borderFocus:"#4876D6",selection:"#706e6e22",selectionForeground:"#1A1A1A",focus:"#4876D6",focusRing:"#4876D640",cursor:"#1A1A1A",hover:"#706e6e16",active:"#706e6e22"},status:{error:"#DE3D3B",errorForeground:"#FBFBFB",errorBackground:"#DE3D3B20",errorBorder:"#DE3D3B50",warning:"#C96765",warningForeground:"#FBFBFB",warningBackground:"#C9676520",warningBorder:"#C9676550",success:"#2AA298",successForeground:"#FBFBFB",successBackground:"#2AA29820",successBorder:"#2AA29850",info:"#4876D6",infoForeground:"#FBFBFB",infoBackground:"#4876D620",infoBorder:"#4876D650"},pr:{open:"#2AA298",draft:"#7A8181",blocked:"#c98f65",merged:"#994CC3",closed:"#DE3D3B"},syntax:{base:{background:"#F0F0F0",foreground:"#403F53",comment:"#7A8181",keyword:"#4876D6",string:"#C96765",number:"#AA0982",function:"#4876D6",variable:"#403F53",type:"#994CC3",operator:"#AA0982"},tokens:{boolean:"#994CC3",class:"#4876D6",className:"#4876D6",commentDoc:"#BBBEBE",constant:"#2AA298",decorator:"#994CC3",enum:"#4876D6",exception:"#AA0982",functionCall:"#4876D6",interface:"#994CC3",jsxTag:"#4876D6",key:"#4876D6",keywordImport:"#AA0982",label:"#AA0982",macro:"#4876D6",method:"#2AA298",module:"#AA0982",namespace:"#994CC3",parameter:"#403F53",preprocessor:"#AA0982",punctuation:"#7A8181",regex:"#C96765",storageModifier:"#4876D6",stringEscape:"#1A1A1A",struct:"#4876D6",tag:"#4876D6",tagAttribute:"#994CC3",tagAttributeValue:"#C96765",typeParameter:"#994CC3",url:"#2AA298",variableGlobal:"#4876D6",variableLocal:"#FFFFFF",variableOther:"#2AA298",variableProperty:"#2AA298"},highlights:{diffAdded:"#2AA298",diffAddedBackground:"#EAF8F6",diffModified:"#4876D6",diffModifiedBackground:"#E8F0FC",diffRemoved:"#DE3D3B",diffRemovedBackground:"#FBE9E9",lineNumber:"#4876D6",lineNumberActive:"#1A1A1A"}},markdown:{heading1:"#403F53",heading2:"#403F53",heading3:"#403F53",heading4:"#403F53",link:"#2AA298",linkHover:"#4876D6",inlineCode:"#00746A",inlineCodeBackground:"#EEEEEE",blockquote:"#7A8181",blockquoteBorder:"#D9D9D9",listMarker:"#4876D699"},chat:{userMessage:"#403F53",userMessageBackground:"#F0F0F0",assistantMessage:"#403F53",assistantMessageBackground:"#FBFBFB",timestamp:"#7A8181",divider:"#D9D9D9"},tools:{background:"#F0F0F080",border:"#D9D9D980",headerHover:"#FFFFFF",icon:"#7A8181",title:"#403F53",description:"#7A8181",edit:{added:"#2AA298",addedBackground:"#2AA29825",removed:"#DE3D3B",removedBackground:"#DE3D3B25",lineNumber:"#4876D6"}}},xf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Of={metadata:Rf,colors:If,config:xf},_f={id:"nord-dark",name:"Nord",description:"Nord",version:"1.0.0",variant:"dark",tags:["dark","palette"]},Lf={primary:{base:"#88C0D0",hover:"#78A9B8",active:"#99C9D7",foreground:"#1F2430",muted:"#88C0D080",emphasis:"#78A9B8"},surface:{background:"#1F2430",foreground:"#E5E9F0",muted:"#222938",mutedForeground:"#7c828e",elevated:"#1C202A",elevatedForeground:"#E5E9F0",overlay:"#F8FAFC20",subtle:"#252c3c"},interactive:{border:"#383d49",borderHover:"#383F50",borderFocus:"#545B78",selection:"#3e4a56fe",selectionForeground:"#F8FAFC",focus:"#88C0D0",focusRing:"#88C0D040",cursor:"#F8FAFC",hover:"#3e4a5692",active:"#3e4a56fe"},status:{error:"#BF616A",errorForeground:"#1F2430",errorBackground:"#BF616A20",errorBorder:"#BF616A50",warning:"#D08770",warningForeground:"#1F2430",warningBackground:"#D0877020",warningBorder:"#D0877050",success:"#A3BE8C",successForeground:"#1F2430",successBackground:"#A3BE8C20",successBorder:"#A3BE8C50",info:"#81A1C1",infoForeground:"#1F2430",infoBackground:"#81A1C120",infoBorder:"#81A1C150"},pr:{open:"#A3BE8C",draft:"#A4ADBF",blocked:"#D08770",merged:"#b788d0",closed:"#BF616A"},syntax:{base:{background:"#222938",foreground:"#E5E9F0",comment:"#A4ADBF",keyword:"#88C0D0",string:"#A3BE8C",number:"#D57780",function:"#88C0D0",variable:"#E5E9F0",type:"#EAC196",operator:"#D57780"},tokens:{boolean:"#EAC196",class:"#88C0D0",className:"#88C0D0",commentDoc:"#9098AA",constant:"#81A1C1",decorator:"#EAC196",enum:"#88C0D0",exception:"#D57780",functionCall:"#88C0D0",interface:"#EAC196",jsxTag:"#88C0D0",key:"#88C0D0",keywordImport:"#D57780",label:"#D57780",macro:"#81A1C1",method:"#A3BE8C",module:"#D57780",namespace:"#EAC196",parameter:"#E5E9F0",preprocessor:"#D57780",punctuation:"#A4ADBF",regex:"#A3BE8C",storageModifier:"#81A1C1",stringEscape:"#F8FAFC",struct:"#88C0D0",tag:"#88C0D0",tagAttribute:"#EAC196",tagAttributeValue:"#A3BE8C",typeParameter:"#EAC196",url:"#81A1C1",variableGlobal:"#88C0D0",variableLocal:"#1C202A",variableOther:"#A3BE8C",variableProperty:"#81A1C1"},highlights:{diffAdded:"#A3BE8C",diffAddedBackground:"#1F2E33",diffModified:"#81A1C1",diffModifiedBackground:"#222B3A",diffRemoved:"#BF616A",diffRemovedBackground:"#2E212A",lineNumber:"#434A62",lineNumberActive:"#F8FAFC"}},markdown:{heading1:"#E5E9F0",heading2:"#E5E9F0",heading3:"#E5E9F0",heading4:"#E5E9F0",link:"#81A1C1",linkHover:"#88C0D0",inlineCode:"#A3BE8C",inlineCodeBackground:"#2C313D",blockquote:"#D08770",blockquoteBorder:"#343A47",listMarker:"#88C0D099"},chat:{userMessage:"#E5E9F0",userMessageBackground:"#272f40",assistantMessage:"#E5E9F0",assistantMessageBackground:"#1F2430",timestamp:"#A4ADBF",divider:"#343A47"},tools:{background:"#22293880",border:"#454e5f80",headerHover:"#181C24",icon:"#A4ADBF",title:"#E5E9F0",description:"#A4ADBF",edit:{added:"#A3BE8C",addedBackground:"#A3BE8C25",removed:"#BF616A",removedBackground:"#BF616A25",lineNumber:"#4a526b"}}},Nf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Uf={metadata:_f,colors:Lf,config:Nf},jf={id:"nord-light",name:"Nord",description:"Nord",version:"1.0.0",variant:"light",tags:["light","palette"]},Hf={primary:{base:"#5E81AC",hover:"#7A97BA",active:"#557399",foreground:"#ECEFF4",muted:"#5E81AC80",emphasis:"#7A97BA"},surface:{background:"#ECEFF4",foreground:"#2E3440",muted:"#E4E8F0",mutedForeground:"#6e7481",elevated:"#e7ebf5",elevatedForeground:"#2E3440",overlay:"#1F253020",subtle:"#e3e7ee"},interactive:{border:"#cfd5df",borderHover:"#C9D0DE",borderFocus:"#9CA4BA",selection:"#c6ccd881",selectionForeground:"#1F2530",focus:"#5E81AC",focusRing:"#5E81AC40",cursor:"#1F2530",hover:"#c6ccd84a",active:"#c6ccd881"},status:{error:"#BF616A",errorForeground:"#ECEFF4",errorBackground:"#BF616A20",errorBorder:"#BF616A50",warning:"#D08770",warningForeground:"#ECEFF4",warningBackground:"#D0877020",warningBorder:"#D0877050",success:"#8FBCBB",successForeground:"#ECEFF4",successBackground:"#8FBCBB20",successBorder:"#8FBCBB50",info:"#81A1C1",infoForeground:"#ECEFF4",infoBackground:"#81A1C120",infoBorder:"#81A1C150"},pr:{open:"#8FBCBB",draft:"#4C566A",blocked:"#D08770",merged:"#9b5eac",closed:"#BF616A"},syntax:{base:{background:"#E4E8F0",foreground:"#2E3440",comment:"#4C566A",keyword:"#5E81AC",string:"#A3BE8C",number:"#BF616A",function:"#5E81AC",variable:"#2E3440",type:"#D08770",operator:"#BF616A"},tokens:{boolean:"#D08770",class:"#5E81AC",className:"#5E81AC",commentDoc:"#9CA3AF",constant:"#81A1C1",decorator:"#D08770",enum:"#5E81AC",exception:"#BF616A",functionCall:"#5E81AC",interface:"#D08770",jsxTag:"#5E81AC",key:"#5E81AC",keywordImport:"#BF616A",label:"#BF616A",macro:"#81A1C1",method:"#8FBCBB",module:"#BF616A",namespace:"#D08770",parameter:"#2E3440",preprocessor:"#BF616A",punctuation:"#4C566A",regex:"#A3BE8C",storageModifier:"#81A1C1",stringEscape:"#1F2530",struct:"#5E81AC",tag:"#5E81AC",tagAttribute:"#D08770",tagAttributeValue:"#A3BE8C",typeParameter:"#D08770",url:"#81A1C1",variableGlobal:"#5E81AC",variableLocal:"#F1F3F8",variableOther:"#8FBCBB",variableProperty:"#81A1C1"},highlights:{diffAdded:"#8FBCBB",diffAddedBackground:"#E4F0E4",diffModified:"#81A1C1",diffModifiedBackground:"#DFE6F2",diffRemoved:"#BF616A",diffRemovedBackground:"#F4E1E4",lineNumber:"#B2BACC",lineNumberActive:"#1F2530"}},markdown:{heading1:"#2E3440",heading2:"#2E3440",heading3:"#2E3440",heading4:"#2E3440",link:"#81A1C1",linkHover:"#5E81AC",inlineCode:"#35561A",inlineCodeBackground:"#DFE2E7",blockquote:"#D08770",blockquoteBorder:"#D5DBE7",listMarker:"#5E81AC99"},chat:{userMessage:"#2E3440",userMessageBackground:"#dee4f0",assistantMessage:"#2E3440",assistantMessageBackground:"#ECEFF4",timestamp:"#4C566A",divider:"#D5DBE7"},tools:{background:"#E4E8F080",border:"#b8bfcc80",headerHover:"#F6F8FC",icon:"#4C566A",title:"#2E3440",description:"#4C566A",edit:{added:"#8FBCBB",addedBackground:"#8FBCBB25",removed:"#BF616A",removedBackground:"#BF616A25",lineNumber:"#b7bfd1"}}},zf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},$f={metadata:jf,colors:Hf,config:zf},Wf={id:"fields-of-the-shire-dark",name:"Fields of the Shire",description:"Fields of the Shire theme - dark variant",author:"AiWorker",version:"1.0.0",variant:"dark",tags:["dark","warm","earthy","brand"]},Gf={primary:{base:"#7a8a5a",hover:"#93a56b",active:"#a4b67d",foreground:"#0c0a08",muted:"#7a8a5a80",emphasis:"#93a56b"},surface:{background:"#1b1815",foreground:"#ebe0d1",muted:"#23201c",mutedForeground:"#83796f",elevated:"#2b2622",elevatedForeground:"#ebe0d1",overlay:"#1b1815cc",subtle:"#282320"},interactive:{border:"#35322f",borderHover:"#f0e6d830",borderFocus:"#373d2c",selection:"#f0e6d81f",selectionForeground:"#ebe0d1",focus:"#7a8a5a",focusRing:"#7a8a5a4d",cursor:"#ebe0d1",hover:"#332d28",active:"#f0e6d824"},status:{error:"#b34d3b",errorForeground:"#0c0a08",errorBackground:"#b85a4a20",errorBorder:"#b85a4a50",warning:"#c47a3a",warningForeground:"#0c0a08",warningBackground:"#c47a3a20",warningBorder:"#c47a3a50",success:"#7f905e",successForeground:"#0c0a08",successBackground:"#7a8a5a20",successBorder:"#7a8a5a50",info:"#667c8a",infoForeground:"#f0e6d8",infoBackground:"#5a6d7a20",infoBorder:"#5a6d7a50"},pr:{open:"#7a8a5a",draft:"#6a5e52",blocked:"#c47a3a",merged:"#5a6d7a",closed:"#b85a4a"},syntax:{base:{background:"#23201c",foreground:"#ebe0d1",comment:"#6a5e52",keyword:"#5a6d7a",string:"#93a56b",number:"#c47a3a",function:"#c47a3a",variable:"#ebe0d1",type:"#7a8a5a",operator:"#a89888"},tokens:{commentDoc:"#4a4238",stringEscape:"#ebe0d1",keywordImport:"#5a6d7a",storageModifier:"#5a6d7a",functionCall:"#c47a3a",method:"#93a56b",variableProperty:"#5a6d7a",variableOther:"#ebe0d1",variableGlobal:"#c47a3a",variableLocal:"#a89888",parameter:"#ebe0d1",constant:"#c47a3a",class:"#7a8a5a",className:"#7a8a5a",interface:"#7a8a5a",struct:"#7a8a5a",enum:"#7a8a5a",typeParameter:"#93a56b",namespace:"#5a6d7a",module:"#5a6d7a",tag:"#c47a3a",jsxTag:"#c47a3a",tagAttribute:"#93a56b",tagAttributeValue:"#93a56b",boolean:"#7a8a5a",decorator:"#5a6d7a",label:"#c47a3a",punctuation:"#a89888",macro:"#5a6d7a",preprocessor:"#5a6d7a",regex:"#93a56b",url:"#5a6d7a",key:"#c47a3a",exception:"#b85a4a"},highlights:{diffAdded:"#7a8a5a",diffAddedBackground:"#7a8a5a20",diffRemoved:"#b85a4a",diffRemovedBackground:"#b85a4a20",diffModified:"#5a6d7a",diffModifiedBackground:"#5a6d7a20",lineNumber:"#6a5e52",lineNumberActive:"#ebe0d1"}},markdown:{heading1:"#c47a3a",heading2:"#93a56b",heading3:"#ebe0d1",heading4:"#ebe0d1",link:"#5a6d7a",linkHover:"#93a56b",inlineCode:"#93a56b",inlineCodeBackground:"#282522",blockquote:"#a89888",blockquoteBorder:"#f0e6d830",listMarker:"#c47a3a99"},chat:{userMessage:"#ebe0d1",userMessageBackground:"#272a25",assistantMessage:"#ebe0d1",assistantMessageBackground:"#1b1815",timestamp:"#6a5e52",divider:"#f0e6d81c"},tools:{background:"#23201c80",border:"#f0e6d830",headerHover:"#2a252180",icon:"#a89888",title:"#ebe0d1",description:"#a19a96",edit:{added:"#7a8a5a",addedBackground:"#7a8a5a25",removed:"#b85a4a",removedBackground:"#b85a4a25",lineNumber:"#6a5e52"}}},qf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Kf={metadata:Wf,colors:Gf,config:qf},Vf={id:"fields-of-the-shire-light",name:"Fields of the Shire",description:"Fields of the Shire theme - light variant",author:"AiWorker",version:"1.0.0",variant:"light",tags:["light","warm","earthy","brand"]},Jf={primary:{base:"#4a6030",hover:"#5e773f",active:"#708a50",foreground:"#faf8f5",muted:"#4a603080",emphasis:"#5e773f"},surface:{background:"#f9f5eb",foreground:"#1a1612",muted:"#f4efe3",mutedForeground:"#5a5048",elevated:"#fcf9f0",elevatedForeground:"#1a1612",overlay:"#1a161220",subtle:"#f1ece1"},interactive:{border:"#1a16121c",borderHover:"#1a161230",borderFocus:"#4a6030",selection:"#1a16121a",selectionForeground:"#1a1612",focus:"#4a6030",focusRing:"#4a603040",cursor:"#1a1612",hover:"#efe8da",active:"#1a16121f"},status:{error:"#a24d3f",errorForeground:"#faf8f5",errorBackground:"#a24d3f20",errorBorder:"#a24d3f50",warning:"#8c5520",warningForeground:"#faf8f5",warningBackground:"#8c552020",warningBorder:"#8c552050",success:"#4a6030",successForeground:"#faf8f5",successBackground:"#4a603020",successBorder:"#4a603050",info:"#3d4f5a",infoForeground:"#faf8f5",infoBackground:"#3d4f5a20",infoBorder:"#3d4f5a50"},pr:{open:"#4a6030",draft:"#8a7e72",blocked:"#8c5520",merged:"#3d4f5a",closed:"#a24d3f"},syntax:{base:{background:"#ece5d6",foreground:"#1a1612",comment:"#8a7e72",keyword:"#3d4f5a",string:"#5e773f",number:"#8c5520",function:"#8c5520",variable:"#1a1612",type:"#4a6030",operator:"#5a5048"},tokens:{commentDoc:"#b8b0a4",stringEscape:"#1a1612",keywordImport:"#3d4f5a",storageModifier:"#3d4f5a",functionCall:"#8c5520",method:"#5e773f",variableProperty:"#3d4f5a",variableOther:"#1a1612",variableGlobal:"#8c5520",variableLocal:"#5a5048",parameter:"#1a1612",constant:"#8c5520",class:"#4a6030",className:"#4a6030",interface:"#4a6030",struct:"#4a6030",enum:"#4a6030",typeParameter:"#5e773f",namespace:"#3d4f5a",module:"#3d4f5a",tag:"#8c5520",jsxTag:"#8c5520",tagAttribute:"#4a6030",tagAttributeValue:"#5e773f",boolean:"#4a6030",decorator:"#3d4f5a",label:"#8c5520",punctuation:"#5a5048",macro:"#3d4f5a",preprocessor:"#3d4f5a",regex:"#5e773f",url:"#3d4f5a",key:"#8c5520",exception:"#a24d3f"},highlights:{diffAdded:"#4a6030",diffAddedBackground:"#4a603020",diffRemoved:"#a24d3f",diffRemovedBackground:"#a24d3f20",diffModified:"#3d4f5a",diffModifiedBackground:"#3d4f5a20",lineNumber:"#8a7e72",lineNumberActive:"#1a1612"}},markdown:{heading1:"#8c5520",heading2:"#4a6030",heading3:"#1a1612",heading4:"#1a1612",link:"#3d4f5a",linkHover:"#4a6030",inlineCode:"#4A6030",inlineCodeBackground:"#ECE8DE",blockquote:"#5a5048",blockquoteBorder:"#1a161230",listMarker:"#8c552099"},chat:{userMessage:"#1a1612",userMessageBackground:"#efe8da",assistantMessage:"#1a1612",assistantMessageBackground:"#f9f5eb",timestamp:"#8a7e72",divider:"#1a16121c"},tools:{background:"#f4efe380",border:"#1a161230",headerHover:"#efe8da",icon:"#5a5048",title:"#1a1612",description:"#5a5048",edit:{added:"#4a6030",addedBackground:"#4a603025",removed:"#a24d3f",removedBackground:"#a24d3f25",lineNumber:"#8a7e72"}}},Yf={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Qf={metadata:Vf,colors:Jf,config:Yf},Xf={id:"onedarkpro-dark",name:"One Dark Pro",description:"One Dark Pro",version:"1.0.0",variant:"dark",tags:["dark","palette"]},Zf={primary:{base:"#61AFEF",hover:"#579AD1",active:"#77BAF1",foreground:"#1E222A",muted:"#61AFEF80",emphasis:"#579AD1"},surface:{background:"#1E222A",foreground:"#ABB2BF",muted:"#212631",mutedForeground:"#737a89",elevated:"#232832",elevatedForeground:"#ABB2BF",overlay:"#F6F7FB20",subtle:"#272c37"},interactive:{border:"#313848",borderHover:"#363D52",borderFocus:"#555C79",selection:"#a8aec533",selectionForeground:"#F6F7FB",focus:"#61AFEF",focusRing:"#61AFEF40",cursor:"#F6F7FB",hover:"#a8aec525",active:"#a8aec533"},status:{error:"#E06C75",errorForeground:"#1E222A",errorBackground:"#E06C7520",errorBorder:"#E06C7550",warning:"#E5C07B",warningForeground:"#1E222A",warningBackground:"#E5C07B20",warningBorder:"#E5C07B50",success:"#98C379",successForeground:"#1E222A",successBackground:"#98C37920",successBorder:"#98C37950",info:"#56B6C2",infoForeground:"#1E222A",infoBackground:"#56B6C220",infoBorder:"#56B6C250"},pr:{open:"#98C379",draft:"#818899",blocked:"#E5C07B",merged:"#bb61ef",closed:"#E06C75"},syntax:{base:{background:"#212631",foreground:"#ABB2BF",comment:"#818899",keyword:"#61AFEF",string:"#98C379",number:"#E06C75",function:"#61AFEF",variable:"#ABB2BF",type:"#E5C07B",operator:"#E06C75"},tokens:{boolean:"#E5C07B",class:"#61AFEF",className:"#61AFEF",commentDoc:"#727988",constant:"#56B6C2",decorator:"#E5C07B",enum:"#61AFEF",exception:"#E06C75",functionCall:"#61AFEF",interface:"#E5C07B",jsxTag:"#61AFEF",key:"#61AFEF",keywordImport:"#E06C75",label:"#E06C75",macro:"#56B6C2",method:"#98C379",module:"#E06C75",namespace:"#E5C07B",parameter:"#ABB2BF",preprocessor:"#E06C75",punctuation:"#818899",regex:"#98C379",storageModifier:"#56B6C2",stringEscape:"#F6F7FB",struct:"#61AFEF",tag:"#61AFEF",tagAttribute:"#E5C07B",tagAttributeValue:"#98C379",typeParameter:"#E5C07B",url:"#56B6C2",variableGlobal:"#61AFEF",variableLocal:"#1B1F27",variableOther:"#98C379",variableProperty:"#56B6C2"},highlights:{diffAdded:"#98C379",diffAddedBackground:"#1C2A26",diffModified:"#56B6C2",diffModifiedBackground:"#232836",diffRemoved:"#E06C75",diffRemovedBackground:"#2A1C22",lineNumber:"#424967",lineNumberActive:"#F6F7FB"}},markdown:{heading1:"#ABB2BF",heading2:"#ABB2BF",heading3:"#ABB2BF",heading4:"#ABB2BF",link:"#56B6C2",linkHover:"#61AFEF",inlineCode:"#a0c288",inlineCodeBackground:"#2B2F37",blockquote:"#E5C07B",blockquoteBorder:"#323848",listMarker:"#61AFEF99"},chat:{userMessage:"#ABB2BF",userMessageBackground:"#2e3442",assistantMessage:"#ABB2BF",assistantMessageBackground:"#1E222A",timestamp:"#818899",divider:"#323848"},tools:{background:"#21263180",border:"#41495e80",headerHover:"#171B23",icon:"#818899",title:"#ABB2BF",description:"#818899",edit:{added:"#98C379",addedBackground:"#98C37925",removed:"#E06C75",removedBackground:"#E06C7525",lineNumber:"#545c81"}}},em={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},tm={metadata:Xf,colors:Zf,config:em},om={id:"onedarkpro-light",name:"One Dark Pro",description:"One Dark Pro",version:"1.0.0",variant:"light",tags:["light","palette"]},rm={primary:{base:"#528BFF",hover:"#73A0FE",active:"#4879DC",foreground:"#F5F6F8",muted:"#528BFF80",emphasis:"#73A0FE"},surface:{background:"#F5F6F8",foreground:"#2B303B",muted:"#EEF0F4",mutedForeground:"#6e727b",elevated:"#f0f5fa",elevatedForeground:"#2B303B",overlay:"#0E111820",subtle:"#edeff5"},interactive:{border:"#d5d8de",borderHover:"#D4D9E3",borderFocus:"#A6ADBF",selection:"#d8dde6",selectionForeground:"#0E1118",focus:"#528BFF",focusRing:"#528BFF40",cursor:"#0E1118",hover:"#d8dde6c2",active:"#FAFBFC"},status:{error:"#E06C75",errorForeground:"#F5F6F8",errorBackground:"#E06C7520",errorBorder:"#E06C7550",warning:"#D19A66",warningForeground:"#F5F6F8",warningBackground:"#D19A6620",warningBorder:"#D19A6650",success:"#4FA66D",successForeground:"#F5F6F8",successBackground:"#4FA66D20",successBorder:"#4FA66D50",info:"#61AFEF",infoForeground:"#F5F6F8",infoBackground:"#61AFEF20",infoBorder:"#61AFEF50"},pr:{open:"#4FA66D",draft:"#6B717F",blocked:"#D19A66",merged:"#a052ff",closed:"#E06C75"},syntax:{base:{background:"#EEF0F4",foreground:"#2B303B",comment:"#6B717F",keyword:"#528BFF",string:"#4FA66D",number:"#D85462",function:"#528BFF",variable:"#2B303B",type:"#D19A66",operator:"#D85462"},tokens:{boolean:"#D19A66",class:"#528BFF",className:"#528BFF",commentDoc:"#B0B4BC",constant:"#61AFEF",decorator:"#D19A66",enum:"#528BFF",exception:"#D85462",functionCall:"#528BFF",interface:"#D19A66",jsxTag:"#528BFF",key:"#528BFF",keywordImport:"#D85462",label:"#D85462",macro:"#61AFEF",method:"#4FA66D",module:"#D85462",namespace:"#D19A66",parameter:"#2B303B",preprocessor:"#D85462",punctuation:"#6B717F",regex:"#4FA66D",storageModifier:"#61AFEF",stringEscape:"#0E1118",struct:"#528BFF",tag:"#528BFF",tagAttribute:"#D19A66",tagAttributeValue:"#4FA66D",typeParameter:"#D19A66",url:"#61AFEF",variableGlobal:"#528BFF",variableLocal:"#FAFBFC",variableOther:"#4FA66D",variableProperty:"#61AFEF"},highlights:{diffAdded:"#4FA66D",diffAddedBackground:"#E5F4EA",diffModified:"#61AFEF",diffModifiedBackground:"#E4E8F4",diffRemoved:"#E06C75",diffRemovedBackground:"#FDE7EA",lineNumber:"#BEC4D0",lineNumberActive:"#0E1118"}},markdown:{heading1:"#2B303B",heading2:"#2B303B",heading3:"#2B303B",heading4:"#2B303B",link:"#61AFEF",linkHover:"#528BFF",inlineCode:"#186332",inlineCodeBackground:"#E8E9EB",blockquote:"#D19A66",blockquoteBorder:"#DEE2EB",listMarker:"#528BFF99"},chat:{userMessage:"#2B303B",userMessageBackground:"#eaedf4",assistantMessage:"#2B303B",assistantMessageBackground:"#F5F6F8",timestamp:"#6B717F",divider:"#DEE2EB"},tools:{background:"#EEF0F480",border:"#c4c8d080",headerHover:"#FFFFFF",icon:"#6B717F",title:"#2B303B",description:"#6B717F",edit:{added:"#4FA66D",addedBackground:"#4FA66D25",removed:"#E06C75",removedBackground:"#E06C7525",lineNumber:"#afb5c1"}}},nm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},am={metadata:om,colors:rm,config:nm},sm={id:"solarized-dark",name:"Solarized",description:"Solarized",version:"1.0.0",variant:"dark",tags:["dark","palette"]},im={primary:{base:"#278BD2",hover:"#5C65AC",active:"#8285C9",foreground:"#001F27",muted:"#6C71C480",emphasis:"#5C65AC"},surface:{background:"#001e25",foreground:"#93A1A1",muted:"#02232e",mutedForeground:"#6f7475",elevated:"#052832",elevatedForeground:"#93A1A1",overlay:"#FDF6E320",subtle:"#062930"},interactive:{border:"#223a41",borderHover:"#243E47",borderFocus:"#3A5A6B",selection:"#98afbd33",selectionForeground:"#FDF6E3",focus:"#6C71C4",focusRing:"#6C71C440",cursor:"#FDF6E3",hover:"#98afbd25",active:"#98afbd33"},status:{error:"#DC322F",errorForeground:"#001F27",errorBackground:"#DC322F20",errorBorder:"#DC322F50",warning:"#B58900",warningForeground:"#001F27",warningBackground:"#B5890020",warningBorder:"#B5890050",success:"#859900",successForeground:"#001F27",successBackground:"#85990020",successBorder:"#85990050",info:"#2AA198",infoForeground:"#001F27",infoBackground:"#2AA19820",infoBorder:"#2AA19850"},pr:{open:"#859900",draft:"#6C7F80",blocked:"#B58900",merged:"#7f6cc4",closed:"#DC322F"},syntax:{base:{background:"#022733",foreground:"#93A1A1",comment:"#6C7F80",keyword:"#6C71C4",string:"#859900",number:"#D33682",function:"#6C71C4",variable:"#93A1A1",type:"#B58900",operator:"#D33682"},tokens:{boolean:"#B58900",class:"#6C71C4",className:"#6C71C4",commentDoc:"#5C7173",constant:"#2AA198",decorator:"#B58900",enum:"#6C71C4",exception:"#D33682",functionCall:"#6C71C4",interface:"#B58900",jsxTag:"#6C71C4",key:"#6C71C4",keywordImport:"#D33682",label:"#D33682",macro:"#2AA198",method:"#859900",module:"#D33682",namespace:"#B58900",parameter:"#93A1A1",preprocessor:"#D33682",punctuation:"#6C7F80",regex:"#859900",storageModifier:"#2AA198",stringEscape:"#FDF6E3",struct:"#6C71C4",tag:"#6C71C4",tagAttribute:"#B58900",tagAttributeValue:"#859900",typeParameter:"#B58900",url:"#2AA198",variableGlobal:"#6C71C4",variableLocal:"#01222B",variableOther:"#859900",variableProperty:"#2AA198"},highlights:{diffAdded:"#859900",diffAddedBackground:"#0F2F29",diffModified:"#2AA198",diffModifiedBackground:"#0F3844",diffRemoved:"#DC322F",diffRemovedBackground:"#321C1C",lineNumber:"#2D4958",lineNumberActive:"#FDF6E3"}},markdown:{heading1:"#93A1A1",heading2:"#93A1A1",heading3:"#93A1A1",heading4:"#93A1A1",link:"#2AA198",linkHover:"#6C71C4",inlineCode:"#859900",inlineCodeBackground:"#0D2B32",blockquote:"#B58900",blockquoteBorder:"#20373F",listMarker:"#6C71C499"},chat:{userMessage:"#93A1A1",userMessageBackground:"#042B34",assistantMessage:"#93A1A1",assistantMessageBackground:"#001F27",timestamp:"#6C7F80",divider:"#20373F"},tools:{background:"#02273380",border:"#2b495380",headerHover:"#032830",icon:"#6C7F80",title:"#93A1A1",description:"#6C7F80",edit:{added:"#859900",addedBackground:"#85990025",removed:"#DC322F",removedBackground:"#DC322F25",lineNumber:"#345567"}}},cm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},dm={metadata:sm,colors:im,config:cm},lm={id:"solarized-light",name:"Solarized",description:"Solarized",version:"1.0.0",variant:"light",tags:["light","palette"]},um={primary:{base:"#268BD2",hover:"#51A0D5",active:"#217EBC",foreground:"#FDF6E3",muted:"#268BD280",emphasis:"#51A0D5"},surface:{background:"#FDF6E3",foreground:"#586E75",muted:"#F6EFDA",mutedForeground:"#7a8587",elevated:"#FAF3DC",elevatedForeground:"#586E75",overlay:"#07364220",subtle:"#F6EFDA"},interactive:{border:"#e0decc",borderHover:"#D9D4C2",borderFocus:"#ACA58F",selection:"#10647a22",selectionForeground:"#073642",focus:"#268BD2",focusRing:"#268BD240",cursor:"#073642",hover:"#10647a14",active:"#10647a22"},status:{error:"#DC322F",errorForeground:"#FDF6E3",errorBackground:"#DC322F20",errorBorder:"#DC322F50",warning:"#B58900",warningForeground:"#FDF6E3",warningBackground:"#B5890020",warningBorder:"#B5890050",success:"#859900",successForeground:"#FDF6E3",successBackground:"#85990020",successBorder:"#85990050",info:"#2AA198",infoForeground:"#FDF6E3",infoBackground:"#2AA19820",infoBorder:"#2AA19850"},pr:{open:"#859900",draft:"#7A8C8E",blocked:"#B58900",merged:"#6e26d2",closed:"#DC322F"},syntax:{base:{background:"#F6EFDA",foreground:"#586E75",comment:"#7A8C8E",keyword:"#268BD2",string:"#859900",number:"#D33682",function:"#268BD2",variable:"#586E75",type:"#B58900",operator:"#D33682"},tokens:{boolean:"#B58900",class:"#268BD2",className:"#268BD2",commentDoc:"#BCC1B9",constant:"#2AA198",decorator:"#B58900",enum:"#268BD2",exception:"#D33682",functionCall:"#268BD2",interface:"#B58900",jsxTag:"#268BD2",key:"#268BD2",keywordImport:"#D33682",label:"#D33682",macro:"#2AA198",method:"#859900",module:"#D33682",namespace:"#B58900",parameter:"#586E75",preprocessor:"#D33682",punctuation:"#7A8C8E",regex:"#859900",storageModifier:"#2AA198",stringEscape:"#073642",struct:"#268BD2",tag:"#268BD2",tagAttribute:"#B58900",tagAttributeValue:"#859900",typeParameter:"#B58900",url:"#2AA198",variableGlobal:"#268BD2",variableLocal:"#FAF3DC",variableOther:"#859900",variableProperty:"#2AA198"},highlights:{diffAdded:"#859900",diffAddedBackground:"#EEF5D6",diffModified:"#2AA198",diffModifiedBackground:"#E3ECF3",diffRemoved:"#DC322F",diffRemovedBackground:"#FDE4DD",lineNumber:"#C5C0AD",lineNumberActive:"#073642"}},markdown:{heading1:"#586E75",heading2:"#586E75",heading3:"#586E75",heading4:"#586E75",link:"#2AA198",linkHover:"#268BD2",inlineCode:"#576B00",inlineCodeBackground:"#F0E9D6",blockquote:"#B58900",blockquoteBorder:"#E3E0CD",listMarker:"#268BD299"},chat:{userMessage:"#586E75",userMessageBackground:"#F6EFDA",assistantMessage:"#586E75",assistantMessageBackground:"#FDF6E3",timestamp:"#7A8C8E",divider:"#E3E0CD"},tools:{background:"#F6EFDA80",border:"#d1cebc80",headerHover:"#F6EDD4",icon:"#7A8C8E",title:"#586E75",description:"#7A8C8E",edit:{added:"#859900",addedBackground:"#85990025",removed:"#DC322F",removedBackground:"#DC322F25",lineNumber:"#c3bead"}}},fm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},mm={metadata:lm,colors:um,config:fm},gm={id:"tokyonight-dark",name:"Tokyonight",description:"Tokyonight",version:"1.0.0",variant:"dark",tags:["dark","palette"]},pm={primary:{base:"#7AA2F7",hover:"#6A8CD6",active:"#8BADF8",foreground:"#0F111A",muted:"#7AA2F780",emphasis:"#6A8CD6"},surface:{background:"#0F111A",foreground:"#C0CAF5",muted:"#111428",mutedForeground:"#8890b3",elevated:"#131629",elevatedForeground:"#C0CAF5",overlay:"#EAEAFF20",subtle:"#15192b"},interactive:{border:"#2d2f43",borderHover:"#292C43",borderFocus:"#45496F",selection:"#b3b3cc33",selectionForeground:"#EAEAFF",focus:"#7AA2F7",focusRing:"#7AA2F740",cursor:"#EAEAFF",hover:"#272E49",active:"#262C46"},status:{error:"#F7768E",errorForeground:"#0F111A",errorBackground:"#F7768E20",errorBorder:"#F7768E50",warning:"#E0AF68",warningForeground:"#0F111A",warningBackground:"#E0AF6820",warningBorder:"#E0AF6850",success:"#9ECE6A",successForeground:"#0F111A",successBackground:"#9ECE6A20",successBorder:"#9ECE6A50",info:"#7DCFFF",infoForeground:"#0F111A",infoBackground:"#7DCFFF20",infoBorder:"#7DCFFF50"},pr:{open:"#9ECE6A",draft:"#7A88CF",blocked:"#E0AF68",merged:"#BB9AF7",closed:"#F7768E"},syntax:{base:{background:"#111428",foreground:"#C0CAF5",comment:"#7A88CF",keyword:"#BB9AF7",string:"#9ECE6A",number:"#FF9E64",function:"#BB9AF7",variable:"#C0CAF5",type:"#E0AF68",operator:"#FF9E64"},tokens:{boolean:"#E0AF68",class:"#BB9AF7",className:"#BB9AF7",commentDoc:"#6A76B4",constant:"#7DCFFF",decorator:"#E0AF68",enum:"#BB9AF7",exception:"#FF9E64",functionCall:"#BB9AF7",interface:"#E0AF68",jsxTag:"#BB9AF7",key:"#BB9AF7",keywordImport:"#FF9E64",label:"#FF9E64",macro:"#7DCFFF",method:"#9ECE6A",module:"#FF9E64",namespace:"#E0AF68",parameter:"#C0CAF5",preprocessor:"#FF9E64",punctuation:"#7A88CF",regex:"#9ECE6A",storageModifier:"#7DCFFF",stringEscape:"#EAEAFF",struct:"#BB9AF7",tag:"#BB9AF7",tagAttribute:"#E0AF68",tagAttributeValue:"#9ECE6A",typeParameter:"#E0AF68",url:"#7DCFFF",variableGlobal:"#BB9AF7",variableLocal:"#101324",variableOther:"#9ECE6A",variableProperty:"#7DCFFF"},highlights:{diffAdded:"#9ECE6A",diffAddedBackground:"#1C2A38",diffModified:"#7DCFFF",diffModifiedBackground:"#24283B",diffRemoved:"#F7768E",diffRemovedBackground:"#2A1F32",lineNumber:"#343755",lineNumberActive:"#EAEAFF"}},markdown:{heading1:"#C0CAF5",heading2:"#C0CAF5",heading3:"#C0CAF5",heading4:"#C0CAF5",link:"#7DCFFF",linkHover:"#7AA2F7",inlineCode:"#9ECE6A",inlineCodeBackground:"#1C1E27",blockquote:"#E0AF68",blockquoteBorder:"#25283B",listMarker:"#7AA2F799"},chat:{userMessage:"#C0CAF5",userMessageBackground:"#171b30",assistantMessage:"#C0CAF5",assistantMessageBackground:"#0F111A",timestamp:"#7A88CF",divider:"#25283B"},tools:{background:"#11142880",border:"#393e5c80",headerHover:"#13172A",icon:"#7A88CF",title:"#C0CAF5",description:"#a4adda",edit:{added:"#9ECE6A",addedBackground:"#9ECE6A25",removed:"#F7768E",removedBackground:"#F7768E25",lineNumber:"#3e4266"}}},hm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Fm={metadata:gm,colors:pm,config:hm},ym={id:"tokyonight-light",name:"Tokyonight",description:"Tokyonight",version:"1.0.0",variant:"light",tags:["light","palette"]},bm={primary:{base:"#2E7DE9",hover:"#5291E9",active:"#2B70D0",foreground:"#E1E2E7",muted:"#2E7DE980",emphasis:"#5291E9"},surface:{background:"#E1E2E7",foreground:"#273153",muted:"#DEE0EA",mutedForeground:"#686e9b",elevated:"#dee0ee",elevatedForeground:"#273153",overlay:"#1C254420",subtle:"#dadce6"},interactive:{border:"#c7c9d3",borderHover:"#C3C6D2",borderFocus:"#9599A8",selection:"#939cbf47",selectionForeground:"#1C2544",focus:"#2E7DE9",focusRing:"#2E7DE940",cursor:"#1C2544",hover:"#7b86ad2a",active:"#7b86ad47"},status:{error:"#C94060",errorForeground:"#E1E2E7",errorBackground:"#C9406020",errorBorder:"#C9406050",warning:"#8C6C3E",warningForeground:"#E1E2E7",warningBackground:"#8C6C3E20",warningBorder:"#8C6C3E50",success:"#587539",successForeground:"#E1E2E7",successBackground:"#58753920",successBorder:"#58753950",info:"#007197",infoForeground:"#E1E2E7",infoBackground:"#00719720",infoBorder:"#00719750"},pr:{open:"#587539",draft:"#5C6390",blocked:"#8C6C3E",merged:"#9854F1",closed:"#C94060"},syntax:{base:{background:"#DEE0EA",foreground:"#273153",comment:"#5C6390",keyword:"#9854F1",string:"#587539",number:"#B15C00",function:"#9854F1",variable:"#273153",type:"#3760BF",operator:"#B15C00"},tokens:{boolean:"#3760BF",class:"#9854F1",className:"#9854F1",commentDoc:"#9FA3BC",constant:"#007197",decorator:"#3760BF",enum:"#9854F1",exception:"#B15C00",functionCall:"#9854F1",interface:"#3760BF",jsxTag:"#9854F1",key:"#9854F1",keywordImport:"#B15C00",label:"#B15C00",macro:"#007197",method:"#587539",module:"#B15C00",namespace:"#3760BF",parameter:"#273153",preprocessor:"#B15C00",punctuation:"#5C6390",regex:"#587539",storageModifier:"#007197",stringEscape:"#1C2544",struct:"#9854F1",tag:"#9854F1",tagAttribute:"#3760BF",tagAttributeValue:"#587539",typeParameter:"#3760BF",url:"#007197",variableGlobal:"#9854F1",variableLocal:"#E5E6EE",variableOther:"#587539",variableProperty:"#007197"},highlights:{diffAdded:"#587539",diffAddedBackground:"#DFE7DA",diffModified:"#007197",diffModifiedBackground:"#CFD1DD",diffRemoved:"#C94060",diffRemovedBackground:"#F4DADD",lineNumber:"#AEB2BF",lineNumberActive:"#1C2544"}},markdown:{heading1:"#9854F1",heading2:"#B15C00",heading3:"#8C6C3E",heading4:"#273153",link:"#007197",linkHover:"#2E7DE9",inlineCode:"#3E5B1F",inlineCodeBackground:"#D4D5DA",blockquote:"#8C6C3E",blockquoteBorder:"#CDD0DC",listMarker:"#2E7DE999"},chat:{userMessage:"#273153",userMessageBackground:"#dcdee9",assistantMessage:"#273153",assistantMessageBackground:"#E1E2E7",timestamp:"#5C6390",divider:"#CDD0DC"},tools:{background:"#DEE0EA80",border:"#a5a8b580",headerHover:"#E9EAF1",icon:"#5C6390",title:"#273153",description:"#5C6390",edit:{added:"#587539",addedBackground:"#58753925",removed:"#C94060",removedBackground:"#C9406025",lineNumber:"#9b9ea9"}}},wm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Am={metadata:ym,colors:bm,config:wm},Em={id:"vesper-dark",name:"Vesper",description:"Vesper",version:"1.0.0",variant:"dark",tags:["dark","palette"]},km={primary:{base:"#FFC799",hover:"#DBAC84",active:"#FFCFA8",foreground:"#101010",muted:"#FFC79980",emphasis:"#DBAC84"},surface:{background:"#151515",foreground:"#e8e5e5",muted:"#1c1b1b",mutedForeground:"#848484",elevated:"#242121",elevatedForeground:"#FFFFFF",overlay:"#FFFFFF20",subtle:"#1f1f1f"},interactive:{border:"#373636",borderHover:"#202020",borderFocus:"#383838",selection:"#b1adad33",selectionForeground:"#FFFFFF",focus:"#FFC799",focusRing:"#FFC79940",cursor:"#FFFFFF",hover:"#ffffff1c",active:"#ffffff33"},status:{error:"#FF8080",errorForeground:"#101010",errorBackground:"#FF808020",errorBorder:"#FF808050",warning:"#FFC799",warningForeground:"#101010",warningBackground:"#FFC79920",warningBorder:"#FFC79950",success:"#99FFE4",successForeground:"#101010",successBackground:"#99FFE420",successBorder:"#99FFE450",info:"#FFC799",infoForeground:"#101010",infoBackground:"#FFC79920",infoBorder:"#FFC79950"},pr:{open:"#99FFE4",draft:"#A0A0A0",blocked:"#FFC799",merged:"#ca99ff",closed:"#FF8080"},syntax:{base:{background:"#141414",foreground:"#FFFFFF",comment:"#A0A0A0",keyword:"#FFC799",string:"#99FFE4",number:"#FF8080",function:"#FFC799",variable:"#FFFFFF",type:"#FFC799",operator:"#FF8080"},tokens:{boolean:"#FFC799",class:"#FFC799",className:"#FFC799",commentDoc:"#8A8A8A",constant:"#A0A0A0",decorator:"#FFC799",enum:"#FFC799",exception:"#FF8080",functionCall:"#FFC799",interface:"#FFC799",jsxTag:"#FFC799",key:"#FFC799",keywordImport:"#FF8080",label:"#FF8080",macro:"#8B8B8B",method:"#99FFE4",module:"#FF8080",namespace:"#FFC799",parameter:"#FFFFFF",preprocessor:"#FF8080",punctuation:"#A0A0A0",regex:"#99FFE4",storageModifier:"#8B8B8B",stringEscape:"#FFFFFF",struct:"#FFC799",tag:"#FFC799",tagAttribute:"#FFC799",tagAttributeValue:"#99FFE4",typeParameter:"#FFC799",url:"#A0A0A0",variableGlobal:"#FFC799",variableLocal:"#0C0C0C",variableOther:"#99FFE4",variableProperty:"#A0A0A0"},highlights:{diffAdded:"#99FFE4",diffAddedBackground:"#0D2818",diffModified:"#FFC799",diffModifiedBackground:"#141414",diffRemoved:"#FF8080",diffRemovedBackground:"#281A1A",lineNumber:"#282828",lineNumberActive:"#FFFFFF"}},markdown:{heading1:"#FFFFFF",heading2:"#FFFFFF",heading3:"#FFFFFF",heading4:"#FFFFFF",link:"#A0A0A0",linkHover:"#FFC799",inlineCode:"#bba2a2",inlineCodeBackground:"#222222",blockquote:"#FFFFFF",blockquoteBorder:"#1C1C1C",listMarker:"#FFFFFF99"},chat:{userMessage:"#FFFFFF",userMessageBackground:"#2b2a2a",assistantMessage:"#FFFFFF",assistantMessageBackground:"#101010",timestamp:"#A0A0A0",divider:"#1C1C1C"},tools:{background:"#14141480",border:"#48474780",headerHover:"#080808",icon:"#A0A0A0",title:"#FFFFFF",description:"#A0A0A0",edit:{added:"#99FFE4",addedBackground:"#99FFE425",removed:"#FF8080",removedBackground:"#FF808025",lineNumber:"#615f5f"}}},Cm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Bm={metadata:Em,colors:km,config:Cm},vm={id:"vesper-light",name:"Vesper",description:"Vesper",version:"1.0.0",variant:"light",tags:["light","palette"]},Dm={primary:{base:"#a06535",hover:"#FFD2AD",active:"#D9A982",foreground:"#FFFFFF",muted:"#cf9c7280",emphasis:"#FFD2AD"},surface:{background:"#FFFFFF",foreground:"#101010",muted:"#F8F8F8",mutedForeground:"#6e6d6d",elevated:"#f6f5f5",elevatedForeground:"#101010",overlay:"#00000020",subtle:"#f6f2f2"},interactive:{border:"#dfdada",borderHover:"#E0E0E0",borderFocus:"#9e9e9e",selection:"#5e5b5b22",selectionForeground:"#000000",focus:"#be875b",focusRing:"#cf9c7240",cursor:"#000000",hover:"#5e5c5c22",active:"#48474722"},status:{error:"#d46868",errorForeground:"#FFFFFF",errorBackground:"#b95f5f20",errorBorder:"#b95f5f50",warning:"#cb7f40",warningForeground:"#FFFFFF",warningBackground:"#cf9c7220",warningBorder:"#cf9c7250",success:"#109b76",successForeground:"#FFFFFF",successBackground:"#99FFE420",successBorder:"#99FFE450",info:"#62bced",infoForeground:"#FFFFFF",infoBackground:"#cf9c7220",infoBorder:"#cf9c7250"},pr:{open:"#0f926f",draft:"#888787",blocked:"#bf6f2e",merged:"#9f5fc1",closed:"#c56161"},syntax:{base:{background:"#F8F8F8",foreground:"#101010",comment:"#868686",keyword:"#cf9c72",string:"#43ae91",number:"#b95f5f",function:"#cf9c72",variable:"#101010",type:"#cf9c72",operator:"#b95f5f"},tokens:{boolean:"#cf9c72",class:"#cf9c72",className:"#cf9c72",commentDoc:"#D0D0D0",constant:"#838282",decorator:"#cf9c72",enum:"#cf9c72",exception:"#b95f5f",functionCall:"#cf9c72",interface:"#cf9c72",jsxTag:"#cf9c72",key:"#cf9c72",keywordImport:"#b95f5f",label:"#b95f5f",macro:"#717070",method:"#74e8c9",module:"#b95f5f",namespace:"#cf9c72",parameter:"#101010",preprocessor:"#b95f5f",punctuation:"#717070",regex:"#67e7c5",storageModifier:"#7b7b7b",stringEscape:"#000000",struct:"#cf9c72",tag:"#cf9c72",tagAttribute:"#cf9c72",tagAttributeValue:"#6adebf",typeParameter:"#cf9c72",url:"#797878",variableGlobal:"#cf9c72",variableLocal:"#F0F0F0",variableOther:"#49dcb5",variableProperty:"#717070"},highlights:{diffAdded:"#56d8b5",diffAddedBackground:"#E8F5E8",diffModified:"#cf9c72",diffModifiedBackground:"#F0F0F0",diffRemoved:"#b95f5f",diffRemovedBackground:"#F5E8E8",lineNumber:"#D0D0D0",lineNumberActive:"#000000"}},markdown:{heading1:"#101010",heading2:"#101010",heading3:"#101010",heading4:"#101010",link:"#717070",linkHover:"#c48959",inlineCode:"#665050",inlineCodeBackground:"#F2F2F2",blockquote:"#101010",blockquoteBorder:"#E8E8E8",listMarker:"#10101099"},chat:{userMessage:"#101010",userMessageBackground:"#f4f1f1",assistantMessage:"#101010",assistantMessageBackground:"#FFFFFF",timestamp:"#717070",divider:"#E8E8E8"},tools:{background:"#F8F8F880",border:"#d0cece80",headerHover:"#E8E8E8",icon:"#717070",title:"#101010",description:"#717070",edit:{added:"#40d7af",addedBackground:"#99FFE425",removed:"#b95f5f",removedBackground:"#b95f5f25",lineNumber:"#b4b2b2"}}},Sm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Mm={metadata:vm,colors:Dm,config:Sm},Tm={id:"mono-plus-dark",name:"Mono Plus",description:"A pure monochromatic theme - dark variant with slight colors added",version:"1.0.0",variant:"dark",tags:["dark","monochrome","minimal"]},Pm={primary:{base:"#a2bee8",hover:"#E5E5E5",active:"#CCCCCC",foreground:"#000000",muted:"#FFFFFF80",emphasis:"#FFFFFF"},surface:{background:"#000000",foreground:"#E5E5E5",muted:"#0A0A0A",mutedForeground:"#808080",elevated:"#141414",elevatedForeground:"#E5E5E5",overlay:"#00000080",subtle:"#1A1A1A"},interactive:{border:"#2f2f2f",borderHover:"#333333",borderFocus:"#FFFFFF",selection:"#ffffff1f",selectionForeground:"#E5E5E5",focus:"#FFFFFF",focusRing:"#FFFFFF50",cursor:"#E5E5E5",hover:"#ffffff1f",active:"#ffffff1f"},status:{error:"#9e6a6a",errorForeground:"#0a0a0a",errorBackground:"#9e6a6a20",errorBorder:"#9e6a6a50",warning:"#9e8a6a",warningForeground:"#0a0a0a",warningBackground:"#9e8a6a20",warningBorder:"#9e8a6a50",success:"#6a8e6a",successForeground:"#0a0a0a",successBackground:"#6a8e6a20",successBorder:"#6a8e6a50",info:"#6a7e9e",infoForeground:"#0a0a0a",infoBackground:"#6a7e9e20",infoBorder:"#6a7e9e50"},pr:{open:"#6a8e6a",draft:"#8c8c8c",blocked:"#9e8a6a",merged:"#bda2e8",closed:"#9e6a6a"},syntax:{base:{background:"#0a0a0a",foreground:"#d4d4d4",comment:"#8c8c8c",keyword:"#dccdbeff",string:"#b6d8e6ff",number:"#e3bdadff",function:"#a2bee8",variable:"#d4d4d4",type:"#edcbb8ff",operator:"#dccdbeff"},tokens:{commentDoc:"#8c8c8c",stringEscape:"#b6d8e6ff",keywordImport:"#dccdbeff",storageModifier:"#dccdbeff",functionCall:"#a2bee8",method:"#a2bee8",variableProperty:"#c0dcc0ff",variableOther:"#d4d4d4",class:"#edcbb8ff",className:"#edcbb8ff",interface:"#edcbb8ff",tag:"#a2bee8",boolean:"#e3bdadff",url:"#b6d8e6ff",key:"#c0dcc0ff"},highlights:{diffAdded:"#6a8e6a",diffAddedBackground:"#6a8e6a20",diffRemoved:"#9e6a6a",diffRemovedBackground:"#9e6a6a20",lineNumber:"#7c7c7c",lineNumberActive:"#d4d4d4"}},markdown:{heading1:"#FFFFFF",heading2:"#F2F2F2",heading3:"#E5E5E5",heading4:"#D9D9D9",link:"#CCCCCC",linkHover:"#a2bee8",inlineCode:"#a2bee8",inlineCodeBackground:"#0D0D0D",blockquote:"#808080",blockquoteBorder:"#333333",listMarker:"#99999999"},chat:{userMessage:"#E5E5E5",userMessageBackground:"#1A1A1A",assistantMessage:"#E5E5E5",assistantMessageBackground:"#000000",timestamp:"#808080",divider:"#333333"},tools:{background:"#0A0A0A50",border:"#4040409d",headerHover:"#33333350",icon:"#A6A6A6",title:"#E5E5E5",description:"#808080",edit:{added:"#6a8e6a",addedBackground:"#6a8e6a20",removed:"#9e6a6a",removedBackground:"#9e6a6a20",lineNumber:"#2a2a2a"}}},Rm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Im={metadata:Tm,colors:Pm,config:Rm},xm={id:"mono-plus-light",name:"Mono Plus",description:"A pure monochromatic theme - light variant with slight colors added",version:"1.0.0",variant:"light",tags:["light","monochrome","minimal"]},Om={primary:{base:"#4a6a9e",hover:"#1A1A1A",active:"#333333",foreground:"#FFFFFF",muted:"#00000080",emphasis:"#000000"},surface:{background:"#FFFFFF",foreground:"#1A1A1A",muted:"#F5F5F5",mutedForeground:"#6f6f6f",elevated:"#FAFAFA",elevatedForeground:"#1A1A1A",overlay:"#00000020",subtle:"#F0F0F0"},interactive:{border:"#e3e3e3",borderHover:"#B3B3B3",borderFocus:"#000000",selection:"#00000015",selectionForeground:"#1A1A1A",focus:"#000000",focusRing:"#00000040",cursor:"#1A1A1A",hover:"#00000010",active:"#00000015"},status:{error:"#8a5a5a",errorForeground:"#fafafa",errorBackground:"#8a5a5a18",errorBorder:"#8a5a5a40",warning:"#8a7a5a",warningForeground:"#fafafa",warningBackground:"#8a7a5a18",warningBorder:"#8a7a5a40",success:"#5a7a5a",successForeground:"#fafafa",successBackground:"#5a7a5a18",successBorder:"#5a7a5a40",info:"#5a6a8a",infoForeground:"#fafafa",infoBackground:"#5a6a8a18",infoBorder:"#5a6a8a40"},pr:{open:"#6a8e6a",draft:"#8c8c8c",blocked:"#8a7a5a",merged:"#8769b6",closed:"#8a5a5a"},syntax:{base:{background:"#f5f5f5",foreground:"#2a2a2a",comment:"#8c8c8c",keyword:"#6a5a4a",string:"#4a6a7a",number:"#7a5a4a",function:"#4a6a9e",variable:"#2a2a2a",type:"#6a5040",operator:"#6a5a4a"},tokens:{commentDoc:"#8c8c8c",stringEscape:"#4a6a7a",keywordImport:"#6a5a4a",storageModifier:"#6a5a4a",functionCall:"#4a6a9e",method:"#4a6a9e",variableProperty:"#4a6a4a",variableOther:"#2a2a2a",class:"#6a5040",className:"#6a5040",interface:"#6a5040",tag:"#4a6a9e",boolean:"#7a5a4a",url:"#4a6a7a",key:"#4a6a4a"},highlights:{diffAdded:"#5a7a5a",diffAddedBackground:"#5a7a5a18",diffRemoved:"#8a5a5a",diffRemovedBackground:"#8a5a5a18",lineNumber:"#b0b0b0",lineNumberActive:"#2a2a2a"}},markdown:{heading1:"#000000",heading2:"#0D0D0D",heading3:"#1A1A1A",heading4:"#262626",link:"#333333",linkHover:"#4a6a9e",inlineCode:"#4A6A9E",inlineCodeBackground:"#F2F2F2",blockquote:"#808080",blockquoteBorder:"#D9D9D9",listMarker:"#66666699"},chat:{userMessage:"#1A1A1A",userMessageBackground:"#E5E5E5",assistantMessage:"#1A1A1A",assistantMessageBackground:"#FFFFFF",timestamp:"#808080",divider:"#D9D9D9"},tools:{background:"#F5F5F550",border:"#B3B3B380",headerHover:"#D9D9D9",icon:"#666666",title:"#1A1A1A",description:"#808080",edit:{added:"#5a7a5a",addedBackground:"#5a7a5a18",removed:"#8a5a5a",removedBackground:"#8a5a5a18",lineNumber:"#d0d0d0"}}},_m={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Lm={metadata:xm,colors:Om,config:_m},Nm={id:"mono-dark",name:"Mono",description:"A pure monochromatic theme - dark variant with shades of grey",version:"1.0.0",variant:"dark",tags:["dark","monochrome","minimal","grayscale"]},Um={primary:{base:"#FFFFFF",hover:"#E5E5E5",active:"#CCCCCC",foreground:"#000000",muted:"#FFFFFF80",emphasis:"#FFFFFF"},surface:{background:"#000000",foreground:"#E5E5E5",muted:"#0A0A0A",mutedForeground:"#808080",elevated:"#141414",elevatedForeground:"#E5E5E5",overlay:"#00000080",subtle:"#1A1A1A"},interactive:{border:"#2f2f2f",borderHover:"#333333",borderFocus:"#FFFFFF",selection:"#ffffff1f",selectionForeground:"#E5E5E5",focus:"#FFFFFF",focusRing:"#FFFFFF50",cursor:"#E5E5E5",hover:"#ffffff1f",active:"#ffffff1f"},status:{error:"#666666",errorForeground:"#000000",errorBackground:"#ffffff10",errorBorder:"#ffffff20",warning:"#999999",warningForeground:"#000000",warningBackground:"#ffffff12",warningBorder:"#ffffff25",success:"#E5E5E5",successForeground:"#000000",successBackground:"#ffffff18",successBorder:"#ffffff30",info:"#A6A6A6",infoForeground:"#000000",infoBackground:"#ffffff14",infoBorder:"#ffffff28"},pr:{open:"#E5E5E5",draft:"#B3B3B3",blocked:"#999999",merged:"#CCCCCC",closed:"#666666"},syntax:{base:{background:"#0A0A0A",foreground:"#E5E5E5",comment:"#666666",keyword:"#FFFFFF",string:"#B3B3B3",number:"#999999",function:"#E5E5E5",variable:"#CCCCCC",type:"#D9D9D9",operator:"#808080"},tokens:{commentDoc:"#595959",stringEscape:"#E5E5E5",keywordImport:"#FFFFFF",storageModifier:"#E5E5E5",functionCall:"#D9D9D9",method:"#CCCCCC",variableProperty:"#B3B3B3",variableOther:"#CCCCCC",variableGlobal:"#999999",variableLocal:"#1A1A1A",parameter:"#CCCCCC",constant:"#E5E5E5",class:"#FFFFFF",className:"#FFFFFF",interface:"#D9D9D9",struct:"#E5E5E5",enum:"#E5E5E5",typeParameter:"#D9D9D9",namespace:"#CCCCCC",module:"#B3B3B3",tag:"#E5E5E5",jsxTag:"#FFFFFF",tagAttribute:"#B3B3B3",tagAttributeValue:"#999999",boolean:"#CCCCCC",decorator:"#999999",label:"#808080",punctuation:"#666666",macro:"#D9D9D9",preprocessor:"#B3B3B3",regex:"#A6A6A6",url:"#CCCCCC",key:"#E5E5E5",exception:"#999999"},highlights:{diffAdded:"#E5E5E5",diffAddedBackground:"#ffffff18",diffRemoved:"#666666",diffRemovedBackground:"#ffffff0d",diffModified:"#B3B3B3",diffModifiedBackground:"#ffffff12",lineNumber:"#404040",lineNumberActive:"#E5E5E5"}},markdown:{heading1:"#FFFFFF",heading2:"#F2F2F2",heading3:"#E5E5E5",heading4:"#D9D9D9",link:"#CCCCCC",linkHover:"#FFFFFF",inlineCode:"#B3B3B3",inlineCodeBackground:"#0D0D0D",blockquote:"#808080",blockquoteBorder:"#333333",listMarker:"#99999999"},chat:{userMessage:"#E5E5E5",userMessageBackground:"#1A1A1A",assistantMessage:"#E5E5E5",assistantMessageBackground:"#000000",timestamp:"#808080",divider:"#333333"},tools:{background:"#0A0A0A50",border:"#4040409d",headerHover:"#33333350",icon:"#A6A6A6",title:"#E5E5E5",description:"#808080",edit:{added:"#E5E5E5",addedBackground:"#ffffff20",removed:"#666666",removedBackground:"#ffffff10",lineNumber:"#404040"}}},jm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Hm={metadata:Nm,colors:Um,config:jm},zm={id:"mono-light",name:"Mono",description:"A pure monochromatic theme - light variant with shades of grey",version:"1.0.0",variant:"light",tags:["light","monochrome","minimal","grayscale"]},$m={primary:{base:"#000000",hover:"#1A1A1A",active:"#333333",foreground:"#FFFFFF",muted:"#00000080",emphasis:"#000000"},surface:{background:"#FFFFFF",foreground:"#1A1A1A",muted:"#F5F5F5",mutedForeground:"#757575",elevated:"#FAFAFA",elevatedForeground:"#1A1A1A",overlay:"#00000020",subtle:"#F0F0F0"},interactive:{border:"#e3e3e3",borderHover:"#B3B3B3",borderFocus:"#000000",selection:"#00000015",selectionForeground:"#1A1A1A",focus:"#000000",focusRing:"#00000040",cursor:"#1A1A1A",hover:"#00000010",active:"#00000015"},status:{error:"#999999",errorForeground:"#FFFFFF",errorBackground:"#00000008",errorBorder:"#00000015",warning:"#666666",warningForeground:"#FFFFFF",warningBackground:"#0000000a",warningBorder:"#00000018",success:"#1A1A1A",successForeground:"#FFFFFF",successBackground:"#00000012",successBorder:"#00000020",info:"#595959",infoForeground:"#FFFFFF",infoBackground:"#0000000c",infoBorder:"#0000001a"},pr:{open:"#1A1A1A",draft:"#4D4D4D",blocked:"#999999",merged:"#333333",closed:"#666666"},syntax:{base:{background:"#F5F5F5",foreground:"#1A1A1A",comment:"#999999",keyword:"#000000",string:"#4D4D4D",number:"#666666",function:"#1A1A1A",variable:"#333333",type:"#262626",operator:"#808080"},tokens:{commentDoc:"#ABABAB",stringEscape:"#1A1A1A",keywordImport:"#000000",storageModifier:"#1A1A1A",functionCall:"#262626",method:"#333333",variableProperty:"#4D4D4D",variableOther:"#333333",variableGlobal:"#666666",variableLocal:"#E5E5E5",parameter:"#333333",constant:"#1A1A1A",class:"#000000",className:"#000000",interface:"#262626",struct:"#1A1A1A",enum:"#1A1A1A",typeParameter:"#262626",namespace:"#333333",module:"#4D4D4D",tag:"#1A1A1A",jsxTag:"#000000",tagAttribute:"#4D4D4D",tagAttributeValue:"#666666",boolean:"#333333",decorator:"#666666",label:"#808080",punctuation:"#999999",macro:"#262626",preprocessor:"#4D4D4D",regex:"#595959",url:"#333333",key:"#1A1A1A",exception:"#666666"},highlights:{diffAdded:"#1A1A1A",diffAddedBackground:"#00000012",diffRemoved:"#999999",diffRemovedBackground:"#00000008",diffModified:"#595959",diffModifiedBackground:"#0000000c",lineNumber:"#CCCCCC",lineNumberActive:"#1A1A1A"}},markdown:{heading1:"#000000",heading2:"#0D0D0D",heading3:"#1A1A1A",heading4:"#262626",link:"#333333",linkHover:"#000000",inlineCode:"#4D4D4D",inlineCodeBackground:"#F2F2F2",blockquote:"#808080",blockquoteBorder:"#D9D9D9",listMarker:"#66666699"},chat:{userMessage:"#1A1A1A",userMessageBackground:"#E5E5E5",assistantMessage:"#1A1A1A",assistantMessageBackground:"#FFFFFF",timestamp:"#808080",divider:"#D9D9D9"},tools:{background:"#F5F5F550",border:"#B3B3B380",headerHover:"#D9D9D9",icon:"#666666",title:"#1A1A1A",description:"#808080",edit:{added:"#1A1A1A",addedBackground:"#00000015",removed:"#999999",removedBackground:"#0000000a",lineNumber:"#CCCCCC"}}},Wm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Gm={metadata:zm,colors:$m,config:Wm},qm={id:"vitesse-dark-dark",name:"Vitesse Dark",description:"Converted from VS Code theme",version:"1.0.0",variant:"dark",tags:["dark","converted","vscode"]},Km={primary:{base:"#4d9375",hover:"#4d9375",active:"#5cb08c",foreground:"#121212",muted:"#4d937580",emphasis:"#64bf98"},surface:{background:"#121212",foreground:"#dbd7caee",muted:"#171717",mutedForeground:"#c0beb99c",elevated:"#1a1a1a",elevatedForeground:"#dbd7caee",overlay:"#12121280",subtle:"#1e1e1e"},interactive:{border:"#313131",borderHover:"#3c3c3c",borderFocus:"#00000000",selection:"#eeeeee18",selectionForeground:"#dbd7caee",focus:"#00000000",focusRing:"#0000000050",cursor:"#CECDC3",hover:"#eeeeee14",active:"#eeeeee18"},status:{error:"#cb7676",errorForeground:"#121212",errorBackground:"#cb767620",errorBorder:"#cb767650",warning:"#d4976c",warningForeground:"#121212",warningBackground:"#d4976c20",warningBorder:"#d4976c50",success:"#4d9375",successForeground:"#121212",successBackground:"#4d937520",successBorder:"#4d937550",info:"#6394bf",infoForeground:"#121212",infoBackground:"#6394bf20",infoBorder:"#6394bf50"},pr:{open:"#4d9375",draft:"#747f74",blocked:"#d4976c",merged:"#6c43be",closed:"#cb7676"},syntax:{base:{background:"#121212",foreground:"#dbd7caee",comment:"#758575dd",keyword:"#4d9375",string:"#c98a7d",number:"#4C9A91",function:"#80a665",variable:"#bd976a",type:"#5d99a9",operator:"#cb7676"},tokens:{commentDoc:"#575653",stringEscape:"#dbd7caee",keywordImport:"#D14D41",storageModifier:"#4385BE",functionCall:"#80a665",method:"#879A39",variableProperty:"#b8a965",variableOther:"#879A39",class:"#6872ab",className:"#6872ab",interface:"#5d99a9",tag:"#4d9375",boolean:"#4d9375",url:"#c98a7d",key:"#b8a965"},highlights:{diffAdded:"#4d9375",diffAddedBackground:"#4d937520",diffRemoved:"#cb7676",diffRemovedBackground:"#cb767620",lineNumber:"#dedcd550",lineNumberActive:"#bfbaaa"}},markdown:{heading1:"#4d9375",heading2:"#4d9375",heading3:"#4d9375",heading4:"#dbd7caee",link:"#4d9375",linkHover:"#4d9375",inlineCode:"#80a665",inlineCodeBackground:"#1F1F1F",blockquote:"#dedcd550",blockquoteBorder:"#ffffff15",listMarker:"#4d937599"},chat:{userMessage:"#dbd7caee",userMessageBackground:"#252525",assistantMessage:"#dbd7caee",assistantMessageBackground:"#121212",timestamp:"#dedcd550",divider:"#ffffff15"},tools:{background:"#12121250",border:"#2d2c2c",headerHover:"#ffffff1550",icon:"#dedcd5a4",title:"#dbd7caee",description:"#e9e8e27f",edit:{added:"#4d9375",addedBackground:"#4d937520",removed:"#cb7676",removedBackground:"#cb767620",lineNumber:"#ffffff24"}}},Vm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Jm={metadata:qm,colors:Km,config:Vm},Ym={id:"vitesse-light-light",name:"Vitesse Light",description:"Converted from VS Code theme",version:"1.0.0",variant:"light",tags:["light","converted","vscode"]},Qm={primary:{base:"#1c6b48",hover:"#1c6b48",active:"#228056",foreground:"#ffffff",muted:"#1c6b4880",emphasis:"#248b5e"},surface:{background:"#ffffff",foreground:"#2c2c28",muted:"#f2f0f0",mutedForeground:"#5b5c54cb",elevated:"#f7f7f7",elevatedForeground:"#393a34",overlay:"#ffffff80",subtle:"#f6f3f3"},interactive:{border:"#dbd8d8",borderHover:"#cbc7c7",borderFocus:"#635454b8",selection:"#22222218",selectionForeground:"#393a34",focus:"#00000000",focusRing:"#0000000050",cursor:"#CECDC3",hover:"#22222218",active:"#22222218"},status:{error:"#ab5959",errorForeground:"#ffffff",errorBackground:"#ab595920",errorBorder:"#ab595950",warning:"#a65e2b",warningForeground:"#ffffff",warningBackground:"#a65e2b20",warningBorder:"#a65e2b50",success:"#1e754f",successForeground:"#ffffff",successBackground:"#1e754f20",successBorder:"#1e754f50",info:"#296aa3",infoForeground:"#ffffff",infoBackground:"#296aa320",infoBorder:"#296aa350"},pr:{open:"#1e754f",draft:"#a0ada0",blocked:"#a65e2b",merged:"#5843be",closed:"#ab5959"},syntax:{base:{background:"#ffffff",foreground:"#393a34",comment:"#a0ada0",keyword:"#1e754f",string:"#b56959",number:"#2f798a",function:"#59873a",variable:"#b07d48",type:"#2e808f",operator:"#ab5959"},tokens:{commentDoc:"#575653",stringEscape:"#393a34",keywordImport:"#D14D41",storageModifier:"#4385BE",functionCall:"#59873a",method:"#879A39",variableProperty:"#998418",variableOther:"#879A39",class:"#5a6aa6",className:"#5a6aa6",interface:"#2e808f",tag:"#1e754f",boolean:"#1e754f",url:"#b56959",key:"#998418"},highlights:{diffAdded:"#1e754f",diffAddedBackground:"#1e754f20",diffRemoved:"#ab5959",diffRemovedBackground:"#ab595920",lineNumber:"#393a3450",lineNumberActive:"#4e4f47"}},markdown:{heading1:"#2c2c28",heading2:"#2c2c28",heading3:"#2c2c28",heading4:"#2c2c28",link:"#1e754f",linkHover:"#1c6b48",inlineCode:"#3A631E",inlineCodeBackground:"#F2F2F2",blockquote:"#2c2c2850",blockquoteBorder:"#00000015",listMarker:"#1c6b4899"},chat:{userMessage:"#2c2c28",userMessageBackground:"#f4f1f1",assistantMessage:"#393a34",assistantMessageBackground:"#ffffff",timestamp:"#393a3450",divider:"#00000015"},tools:{background:"#ffffff50",border:"#dbd7d7",headerHover:"#0000001550",icon:"#21221e86",title:"#393a34",description:"#404139b6",edit:{added:"#1e754f",addedBackground:"#1e754f20",removed:"#ab5959",removedBackground:"#ab595920",lineNumber:"#b9b6b6"}}},Xm={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},Zm={metadata:Ym,colors:Qm,config:Xm},eg=[Kf,Qf,fu,hu,wu,Cu,Su,Ru,_u,ju,Wu,Vu,Xu,of,sf,uf,pf,bf,kf,Df,Pf,Of,Uf,$f,tm,am,dm,mm,Fm,Am,Bm,Mm,Im,Lm,Hm,Gm,Jm,Zm].map(e=>Xt(e)),tg={id:"flexoki-light",name:"Flexoki",description:"An inky color scheme for prose and code - light variant",version:"1.0.0",variant:"light",tags:["light","warm","natural","paper"]},og={primary:{base:"#BC5215",hover:"#F9AE77",active:"#DA702C",foreground:"#fffdf4",muted:"#BC521580",emphasis:"#F9AE77"},surface:{background:"#fffdf4",foreground:"#100F0F",muted:"#f6f5ee",mutedForeground:"#686663",elevated:"#fbfaf2",elevatedForeground:"#100F0F",overlay:"#100F0F20",subtle:"#f7f4ec"},interactive:{border:"#e6e4db",borderHover:"#CECDC3",borderFocus:"#BC5215",selection:"#76736f30",selectionForeground:"#100F0F",focus:"#BC5215",focusRing:"#BC521540",cursor:"#100F0F",hover:"#76736f20",active:"#76736f20"},status:{error:"#AF3029",errorForeground:"#fffdf4",errorBackground:"#D14D4120",errorBorder:"#D14D4150",warning:"#BC5215",warningForeground:"#fffdf4",warningBackground:"#DA702C20",warningBorder:"#DA702C50",success:"#66800B",successForeground:"#fffdf4",successBackground:"#879A3920",successBorder:"#879A3950",info:"#205EA6",infoForeground:"#fffdf4",infoBackground:"#4385BE20",infoBorder:"#4385BE50"},pr:{open:"#66800B",draft:"#6F6E69",blocked:"#BC5215",merged:"#5E409D",closed:"#AF3029"},syntax:{base:{background:"#f6f5ee",foreground:"#100F0F",comment:"#6F6E69",keyword:"#205EA6",string:"#24837B",number:"#5E409D",function:"#BC5215",variable:"#100F0F",type:"#AD8301",operator:"#AF3029"},tokens:{commentDoc:"#B7B5AC",stringEscape:"#100F0F",keywordImport:"#AF3029",storageModifier:"#205EA6",functionCall:"#BC5215",method:"#66800B",variableProperty:"#205EA6",variableOther:"#66800B",variableGlobal:"#A02F6F",variableLocal:"#E6E4D9",parameter:"#100F0F",constant:"#100F0F",class:"#BC5215",className:"#BC5215",interface:"#AD8301",struct:"#BC5215",enum:"#BC5215",typeParameter:"#BC5215",namespace:"#AD8301",module:"#AF3029",tag:"#205EA6",jsxTag:"#A02F6F",tagAttribute:"#AD8301",tagAttributeValue:"#24837B",boolean:"#AD8301",decorator:"#AD8301",label:"#A02F6F",punctuation:"#6F6E69",macro:"#205EA6",preprocessor:"#A02F6F",regex:"#24837B",url:"#205EA6",key:"#BC5215",exception:"#A02F6F"},highlights:{diffAdded:"#66800B",diffAddedBackground:"#879A3920",diffRemoved:"#AF3029",diffRemovedBackground:"#D14D4120",diffModified:"#205EA6",diffModifiedBackground:"#4385BE20",lineNumber:"#CECDC3",lineNumberActive:"#100F0F"}},markdown:{heading1:"#100F0F",heading2:"#100F0F",heading3:"#100F0F",heading4:"#100F0F",link:"#205EA6",linkHover:"#4385BE",inlineCode:"#0A6961",inlineCodeBackground:"#F2F0E7",blockquote:"#6F6E69",blockquoteBorder:"#DAD8CE",listMarker:"#AD830199"},chat:{userMessage:"#100F0F",userMessageBackground:"#f7f4ec",assistantMessage:"#100F0F",assistantMessageBackground:"#fffdf4",timestamp:"#6F6E69",divider:"#DAD8CE"},tools:{background:"#f6f5ee50",border:"#b4b2a980",headerHover:"#DAD8CE",icon:"#6F6E69",title:"#100F0F",description:"#6F6E69",edit:{added:"#66800B",addedBackground:"#66800B25",removed:"#AF3029",removedBackground:"#AF302925",lineNumber:"#CECDC3"}}},rg={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},ng={metadata:tg,colors:og,config:rg},ag={id:"flexoki-dark",name:"Flexoki",description:"An inky color scheme for prose and code - dark variant",version:"1.0.0",variant:"dark",tags:["dark","warm","natural","ink"]},sg={primary:{base:"#DA702C",hover:"#DA702C",active:"#F9AE77",foreground:"#171515",muted:"#DA702C80",emphasis:"#F9AE77"},surface:{background:"#171515",foreground:"#CECDC3",muted:"#1C1B1A",mutedForeground:"#807e79",elevated:"#1c1a19",elevatedForeground:"#CECDC3",overlay:"#00000080",subtle:"#1e1d1c"},interactive:{border:"#2b2a28",borderHover:"#403E3C",borderFocus:"#DA702C",selection:"#f4f4f41f",selectionForeground:"#CECDC3",focus:"#DA702C",focusRing:"#DA702C50",cursor:"#CECDC3",hover:"#ffffff18",active:"#ffffff1f"},status:{error:"#D14D41",errorForeground:"#171515",errorBackground:"#AF302920",errorBorder:"#AF302950",warning:"#DA702C",warningForeground:"#171515",warningBackground:"#BC521520",warningBorder:"#BC521550",success:"#A0AF54",successForeground:"#171515",successBackground:"#66800B20",successBorder:"#66800B50",info:"#4385BE",infoForeground:"#171515",infoBackground:"#205EA620",infoBorder:"#205EA650"},pr:{open:"#A0AF54",draft:"#878580",blocked:"#DA702C",merged:"#8B7EC8",closed:"#D14D41"},syntax:{base:{background:"#1C1B1A",foreground:"#CECDC3",comment:"#878580",keyword:"#4385BE",string:"#3AA99F",number:"#8B7EC8",function:"#DA702C",variable:"#CECDC3",type:"#D0A215",operator:"#D14D41"},tokens:{commentDoc:"#575653",stringEscape:"#CECDC3",keywordImport:"#D14D41",storageModifier:"#4385BE",functionCall:"#DA702C",method:"#879A39",variableProperty:"#4385BE",variableOther:"#879A39",variableGlobal:"#CE5D97",variableLocal:"#282726",parameter:"#CECDC3",constant:"#CECDC3",class:"#DA702C",className:"#DA702C",interface:"#D0A215",struct:"#DA702C",enum:"#DA702C",typeParameter:"#DA702C",namespace:"#D0A215",module:"#D14D41",tag:"#4385BE",jsxTag:"#CE5D97",tagAttribute:"#D0A215",tagAttributeValue:"#3AA99F",boolean:"#D0A215",decorator:"#D0A215",label:"#CE5D97",punctuation:"#878580",macro:"#4385BE",preprocessor:"#CE5D97",regex:"#3AA99F",url:"#4385BE",key:"#DA702C",exception:"#CE5D97"},highlights:{diffAdded:"#879A39",diffAddedBackground:"#66800B20",diffRemoved:"#D14D41",diffRemovedBackground:"#AF302920",diffModified:"#4385BE",diffModifiedBackground:"#205EA620",lineNumber:"#403E3C",lineNumberActive:"#CECDC3"}},markdown:{heading1:"#fbf9e6",heading2:"#e6e4d2",heading3:"#CECDC3",heading4:"#CECDC3",link:"#4385BE",linkHover:"#205EA6",inlineCode:"#A0AF53",inlineCodeBackground:"#242222",blockquote:"#878580",blockquoteBorder:"#343331",listMarker:"#D0A21599"},chat:{userMessage:"#CECDC3",userMessageBackground:"#27180E",assistantMessage:"#CECDC3",assistantMessageBackground:"#171515",timestamp:"#878580",divider:"#343331"},tools:{background:"#1C1B1A50",border:"#42403e9d",headerHover:"#34333150",icon:"#aca7a1",title:"#CECDC3",description:"#878580",edit:{added:"#879A39",addedBackground:"#66800B25",removed:"#D14D41",removedBackground:"#AF302925",lineNumber:"#403E3C"}}},ig={fonts:{sans:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',mono:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace',heading:'ui-monospace, "SFMono-Regular", "Menlo", "Cascadia Mono", "Segoe UI Mono", monospace'},transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},cg={metadata:ag,colors:sg,config:ig},dg={id:"openchamber-light",name:"AiWorker",description:"The AiWorker signature - Vitesse syntax on warm paper with Flexoki accents, harmonized in OKLCH (light variant)",author:"AiWorker",version:"1.0.0",variant:"light",tags:["light","brand","hybrid","warm","paper"]},lg={primary:{base:"#b35017",hover:"#9a4310",active:"#85390c",foreground:"#ffffff",muted:"#b3501780",emphasis:"#9a4310"},surface:{background:"#fdfcfa",foreground:"#393a34",muted:"#f7f6f4",mutedForeground:"#5c5c54",elevated:"#f8f7f5",elevatedForeground:"#393a34",overlay:"#39393420",subtle:"#f7f6f4"},interactive:{border:"#e5e1de",borderHover:"#cbc7c2",borderFocus:"#b35017",selection:"#a9998f2b",selectionForeground:"#393a34",focus:"#b35017",focusRing:"#b3501755",cursor:"#393a34",hover:"#0000000d",active:"#00000014"},status:{error:"#b7493f",errorForeground:"#ffffff",errorBackground:"#b7493f20",errorBorder:"#b7493f50",warning:"#8d6c15",warningForeground:"#ffffff",warningBackground:"#8d6c1520",warningBorder:"#8d6c1550",success:"#5f8d3d",successForeground:"#ffffff",successBackground:"#5f8d3d20",successBorder:"#5f8d3d50",info:"#2d72c4",infoForeground:"#ffffff",infoBackground:"#2d72c420",infoBorder:"#2d72c450"},pr:{open:"#5f8d3d",draft:"#6F6E69",blocked:"#b35017",merged:"#795cbc",closed:"#b7493f"},syntax:{base:{background:"#f4f3f1",foreground:"#393a34",comment:"#9dae9d",keyword:"#15764e",string:"#c25f4b",number:"#177b8f",function:"#4e8b18",variable:"#bb782a",type:"#0e8294",operator:"#b94d50"},tokens:{commentDoc:"#9dae9d",stringEscape:"#393a32",keywordImport:"#b94d50",storageModifier:"#15764e",functionCall:"#4e8b18",method:"#4e8b18",variableProperty:"#9a8402",variableOther:"#bb782a",variableGlobal:"#c25f4b",variableLocal:"#cfd0c9",parameter:"#393a32",constant:"#177b8f",class:"#5567b6",className:"#5567b6",interface:"#0e8294",struct:"#5567b6",enum:"#5567b6",typeParameter:"#0e8294",namespace:"#0e8294",module:"#b94d50",tag:"#15764e",jsxTag:"#15764e",tagAttribute:"#9a8402",tagAttributeValue:"#c25f4b",boolean:"#15764e",decorator:"#4e8b18",label:"#b94d50",punctuation:"#6b6b61",macro:"#15764e",preprocessor:"#b94d50",regex:"#c25f4b",url:"#136aad",key:"#9a8402",exception:"#b94d50"},highlights:{diffAdded:"#2c751e",diffAddedBackground:"#2c751e20",diffRemoved:"#ab5959",diffRemovedBackground:"#ab595920",diffModified:"#2c751e",diffModifiedBackground:"#5f8d3d20",lineNumber:"#b9b6b0",lineNumberActive:"#393a34"}},markdown:{heading1:"#393a34",heading2:"#393a34",heading3:"#393a34",heading4:"#393a34",link:"#2e808f",linkHover:"#296aa3",inlineCode:"#006A2C",inlineCodeBackground:"#F0EFED",blockquote:"#6b6b63",blockquoteBorder:"#d8d5d0",listMarker:"#1e754f99"},chat:{userMessage:"#393a34",userMessageBackground:"#f7f2ee",assistantMessage:"#393a34",assistantMessageBackground:"#fdfcfa",timestamp:"#6b6b63",divider:"#d8d5d0"},tools:{background:"#efeeec50",border:"#d8d5d099",headerHover:"#0000000d",icon:"#6b6b63",title:"#393a34",description:"#6b6b63",edit:{added:"#2c751e",addedBackground:"#2c751e25",removed:"#ab5959",removedBackground:"#ab595925",lineNumber:"#b9b6b0"}}},ug={transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},fg={metadata:dg,colors:lg,config:ug},mg={id:"openchamber-dark",name:"AiWorker",description:"The AiWorker signature - Vitesse syntax over OpenCode-deep neutrals with Flexoki accents, harmonized in OKLCH (dark variant)",author:"AiWorker",version:"1.0.0",variant:"dark",tags:["dark","brand","hybrid","warm","ink"]},gg={primary:{base:"#da7c47",hover:"#eb8c57",active:"#fd9b66",foreground:"#000000",muted:"#da7c4780",emphasis:"#fd9b66"},surface:{background:"#120f0e",foreground:"#c9c5ba",muted:"#171615",mutedForeground:"#8f8b81",elevated:"#181715",elevatedForeground:"#c9c5ba",overlay:"#00000099",subtle:"#171616"},interactive:{border:"#242323",borderHover:"#504e4c",borderFocus:"#da7c47",selection:"#c8c6c52b",selectionForeground:"#c9c5ba",focus:"#da7c47",focusRing:"#da7c4755",cursor:"#c9c5ba",hover:"#ffffff12",active:"#ffffff1f"},status:{error:"#da5b4a",errorForeground:"#000000",errorBackground:"#da5b4a20",errorBorder:"#da5b4a50",warning:"#c67f13",warningForeground:"#000000",warningBackground:"#c67f1320",warningBorder:"#c67f1350",success:"#76ad4f",successForeground:"#000000",successBackground:"#76ad4f20",successBorder:"#76ad4f50",info:"#479fe6",infoForeground:"#000000",infoBackground:"#479fe620",infoBorder:"#479fe650"},pr:{open:"#93a233",draft:"#8f8b81",blocked:"#da7c47",merged:"#9988e5",closed:"#da5b4a"},syntax:{base:{background:"#120f0e",foreground:"#c9c5ba",comment:"#728772",keyword:"#34983a",string:"#d58373",number:"#279e93",function:"#78a952",variable:"#c69457",type:"#479cb1",operator:"#da6b6d"},tokens:{commentDoc:"#687b68",stringEscape:"#dcd7c6",keywordImport:"#da6b6d",storageModifier:"#34983a",functionCall:"#78a952",method:"#78a952",variableProperty:"#bda94a",variableOther:"#c69457",variableGlobal:"#d58373",variableLocal:"#201e1c",parameter:"#dcd7c6",constant:"#279e93",class:"#646fba",className:"#646fba",interface:"#479cb1",struct:"#646fba",enum:"#646fba",typeParameter:"#479cb1",namespace:"#479cb1",module:"#da6b6d",tag:"#34983a",jsxTag:"#34983a",tagAttribute:"#bda94a",tagAttributeValue:"#d58373",boolean:"#34983a",decorator:"#78a952",label:"#da6b6d",punctuation:"#908b7e",macro:"#34983a",preprocessor:"#da6b6d",regex:"#d58373",url:"#d58373",key:"#bda94a",exception:"#da6b6d"},highlights:{diffAdded:"#4d934e",diffAddedBackground:"#4d934e20",diffRemoved:"#cb7676",diffRemovedBackground:"#cb767620",diffModified:"#5d99a9",diffModifiedBackground:"#5d99a920",lineNumber:"#3c3a37",lineNumberActive:"#c9c5ba"}},markdown:{heading1:"#c9c5ba",heading2:"#c9c5ba",heading3:"#c9c5ba",heading4:"#c9c5ba",link:"#5d99a9",linkHover:"#6ba7b8",inlineCode:"#76ad4f",inlineCodeBackground:"#1F1C1B",blockquote:"#8f8b81",blockquoteBorder:"#302e2b",listMarker:"#4d934e99"},chat:{userMessage:"#c9c5ba",userMessageBackground:"#25170e",assistantMessage:"#c9c5ba",assistantMessageBackground:"#120f0e",timestamp:"#8f8b81",divider:"#302e2b"},tools:{background:"#120f0e50",border:"#302e2b99",headerHover:"#ffffff0d",icon:"#ada9a0",title:"#c9c5ba",description:"#aba9a3",edit:{added:"#4d934e",addedBackground:"#4d934e25",removed:"#cb7676",removedBackground:"#cb767625",lineNumber:"#3c3a37"}}},pg={transitions:{fast:"150ms ease",normal:"250ms ease",slow:"350ms ease"}},hg={metadata:mg,colors:gg,config:pg},ni=Xt(ng),Fg=Xt(cg),yg=Xt(fg),bg=Xt(hg),ai="openchamber-light",si="openchamber-dark",Dr=[yg,bg,ni,Fg,...eg.filter(e=>e.metadata.id!=="openchamber-light"&&e.metadata.id!=="openchamber-dark")];function wg(e){const t=e==="app-light"?"flexoki-light":e==="app-dark"?"flexoki-dark":e;return Dr.find(o=>o.metadata.id===t)}function X0(e){const t=e?"dark":"light",r=wg(e?si:ai);return r&&r.metadata.variant===t?r:Dr.find(n=>n.metadata.variant===t)??Dr[0]??ni}const Ag=[{id:"finder",label:"Finder",appName:"Finder"},{id:"terminal",label:"Terminal",appName:"Terminal"},{id:"iterm2",label:"iTerm2",appName:"iTerm"},{id:"ghostty",label:"Ghostty",appName:"Ghostty"},{id:"vscode",label:"VS Code",appName:"Visual Studio Code"},{id:"vscode-insiders",label:"VS Code Insiders",appName:"Visual Studio Code - Insiders"},{id:"intellij",label:"IntelliJ",appName:"IntelliJ IDEA"},{id:"visual-studio",label:"Visual Studio",appName:"Visual Studio"},{id:"cursor",label:"Cursor",appName:"Cursor"},{id:"android-studio",label:"Android Studio",appName:"Android Studio"},{id:"pycharm",label:"PyCharm",appName:"PyCharm"},{id:"xcode",label:"Xcode",appName:"Xcode"},{id:"sublime-text",label:"Sublime",appName:"Sublime Text"},{id:"webstorm",label:"WebStorm",appName:"WebStorm"},{id:"rider",label:"Rider",appName:"Rider"},{id:"zed",label:"Zed",appName:"Zed"},{id:"phpstorm",label:"PhpStorm",appName:"PhpStorm"},{id:"eclipse",label:"Eclipse",appName:"Eclipse"},{id:"windsurf",label:"Windsurf",appName:"Windsurf"},{id:"vscodium",label:"VSCodium",appName:"VSCodium"},{id:"rustrover",label:"RustRover",appName:"RustRover"},{id:"kiro",label:"Kiro",appName:"Kiro"},{id:"antigravity",label:"Antigravity",appName:"Antigravity"},{id:"trae",label:"Trae",appName:"Trae"}],Eg="finder",Z0=new Set(["finder","terminal"]),kg=e=>{if(typeof window>"u")return e;const t=window.__AIWORKER_PLATFORM__;if(e.id==="finder"){if(t==="win32")return{...e,label:"Explorer",appName:"File Explorer"};if(t==="linux")return{...e,label:"File Manager"}}return e},ey=e=>{if(!e)return null;const t=Ag.find(o=>o.id===e)??null;return t?kg(t):null},Cg=(e,t)=>{const o=e??{};return t<2&&(o.projectSortOrder="manual"),t<3&&o.projectSortOrder==="recent"&&(o.projectSortOrder="manual"),t<4&&delete o.displayMode,o},Sr=ct()(Oo(e=>({projectDisplayMode:"all",singleProjectId:null,setProjectDisplayMode:t=>e({projectDisplayMode:t}),setSingleProjectId:t=>e({singleProjectId:t}),sessionGroupingMode:"by-worktree",setSessionGroupingMode:t=>e({sessionGroupingMode:t}),stickyZoneHeaders:!0,toggleStickyZoneHeaders:()=>e(t=>({stickyZoneHeaders:!t.stickyZoneHeaders})),showRecentSection:!0,showArchivedSessions:!1,projectSortOrder:"manual",setShowRecentSection:t=>e({showRecentSection:t}),setShowArchivedSessions:t=>e({showArchivedSessions:t}),toggleRecentSection:()=>e(t=>({showRecentSection:!t.showRecentSection})),toggleArchivedSessions:()=>e(t=>({showArchivedSessions:!t.showArchivedSessions})),setProjectSortOrder:t=>e({projectSortOrder:t})}),{name:"session-display-mode",version:5,migrate:Cg})),Bg=e=>{if(!(typeof window>"u")&&!(typeof window.__AIWORKER_HOME__=="string"&&window.__AIWORKER_HOME__.length>0))try{window.__AIWORKER_HOME__=e}catch{}},Fa="aiworker.settingsMirror.v2.index",vg="aiworker.settingsMirror.v2:",Dg=5,ya=e=>`${vg}${encodeURIComponent(e)}`,ht=(e,t)=>{t===null?localStorage.removeItem(e):localStorage.setItem(e,t)},Sg=(e,t)=>{const o={themeId:e.themeId,themeVariant:e.themeVariant,lightThemeId:e.lightThemeId,darkThemeId:e.darkThemeId,useSystemTheme:e.useSystemTheme,lastDirectory:e.lastDirectory,homeDirectory:e.homeDirectory,projects:e.projects,activeProjectId:e.activeProjectId,sidebarProjectDisplayMode:e.sidebarProjectDisplayMode,sidebarSessionGroupingMode:e.sidebarSessionGroupingMode,sidebarProjectSortOrder:e.sidebarProjectSortOrder,sidebarShowRecentSection:e.sidebarShowRecentSection,pinnedDirectories:e.pinnedDirectories,gitmojiEnabled:e.gitmojiEnabled,directoryShowHidden:e.directoryShowHidden,filesViewShowGitignored:e.filesViewShowGitignored,openInAppId:e.openInAppId,pwaAppName:e.pwaAppName,mobileKeyboardMode:e.mobileKeyboardMode,openCodeUpdateToastDismissedVersion:e.openCodeUpdateToastDismissedVersion,dictationEnabled:e.dictationEnabled,sttProvider:e.sttProvider,sttServerUrl:e.sttServerUrl,sttModel:e.sttModel,sttLocalModel:e.sttLocalModel,sttLanguage:e.sttLanguage};localStorage.setItem(ya(t),JSON.stringify(o));let r=[];try{const a=JSON.parse(localStorage.getItem(Fa)??"[]");Array.isArray(a)&&(r=a.filter(s=>typeof s=="string"))}catch{r=[]}const n=[t,...r.filter(a=>a!==t)].slice(0,Dg);for(const a of r)n.includes(a)||localStorage.removeItem(ya(a));localStorage.setItem(Fa,JSON.stringify(n))},Mg=e=>{if(!(typeof window>"u")){if(Sg(e,H()),ht("lastDirectory",e.lastDirectory||null),e.homeDirectory?(localStorage.setItem("homeDirectory",e.homeDirectory),Bg(e.homeDirectory)):localStorage.removeItem("homeDirectory"),Array.isArray(e.projects)&&e.projects.length>0?localStorage.setItem("projects",JSON.stringify(e.projects)):localStorage.removeItem("projects"),e.activeProjectId?localStorage.setItem("activeProjectId",e.activeProjectId):localStorage.removeItem("activeProjectId"),Array.isArray(e.pinnedDirectories)&&e.pinnedDirectories.length>0?localStorage.setItem("pinnedDirectories",JSON.stringify(e.pinnedDirectories)):localStorage.removeItem("pinnedDirectories"),Array.isArray(e.projects)&&e.projects.length>0){const t=e.projects.filter(o=>o.sidebarCollapsed===!0).map(o=>o.id).filter(o=>typeof o=="string"&&o.length>0);t.length>0?localStorage.setItem("oc.sessions.projectCollapse",JSON.stringify(t)):localStorage.removeItem("oc.sessions.projectCollapse")}else localStorage.removeItem("oc.sessions.projectCollapse");if(typeof e.gitmojiEnabled=="boolean"?localStorage.setItem("gitmojiEnabled",String(e.gitmojiEnabled)):localStorage.removeItem("gitmojiEnabled"),typeof e.directoryShowHidden=="boolean"?localStorage.setItem("directoryTreeShowHidden",e.directoryShowHidden?"true":"false"):localStorage.removeItem("directoryTreeShowHidden"),typeof e.filesViewShowGitignored=="boolean"?localStorage.setItem("filesViewShowGitignored",e.filesViewShowGitignored?"true":"false"):localStorage.removeItem("filesViewShowGitignored"),ht("openInAppId",typeof e.openInAppId=="string"&&e.openInAppId.length>0?e.openInAppId:null),typeof e.pwaAppName=="string"){const t=e.pwaAppName.trim().replace(/\s+/g," ").slice(0,64);t.length>0?localStorage.setItem("aiworker.pwaName",t):localStorage.removeItem("aiworker.pwaName")}else localStorage.removeItem("aiworker.pwaName");if(zs(e.mobileKeyboardMode),typeof e.openCodeUpdateToastDismissedVersion=="string"){const t=e.openCodeUpdateToastDismissedVersion.trim();t?localStorage.setItem("opencode-update-toast-dismissed-version",t):localStorage.removeItem("opencode-update-toast-dismissed-version")}else localStorage.removeItem("opencode-update-toast-dismissed-version");typeof e.dictationEnabled=="boolean"?localStorage.setItem("dictationEnabled",String(e.dictationEnabled)):localStorage.removeItem("dictationEnabled"),e.sttProvider==="local"||e.sttProvider==="openai-compatible"?localStorage.setItem("sttProvider",e.sttProvider):localStorage.removeItem("sttProvider"),ht("sttServerUrl",typeof e.sttServerUrl=="string"?e.sttServerUrl:null),ht("sttModel",typeof e.sttModel=="string"?e.sttModel:null),ht("sttLocalModel",typeof e.sttLocalModel=="string"?e.sttLocalModel:null),ht("sttLanguage",typeof e.sttLanguage=="string"?e.sttLanguage:null)}},Mr=(e,t)=>{typeof window>"u"||window.dispatchEvent(new CustomEvent("aiworker:settings-synced",{detail:{settings:e,adoptWorkspace:t}}))};let Tr="idle",fo=null;const Pr=new Set,ty=()=>Tr,oy=e=>(Pr.add(e),()=>Pr.delete(e)),ry=e=>{Te(e)},Te=e=>{fo&&(clearTimeout(fo),fo=null);const t=e==="saved"?"idle":e;t!==Tr&&(Tr=t,Pr.forEach(o=>o())),t==="error"&&(fo=setTimeout(()=>Te("saved"),6e3)),!(typeof window>"u")&&window.dispatchEvent(new CustomEvent("aiworker:settings-save-state",{detail:e}))},Tg=e=>{if(!Array.isArray(e))return;const t=[],o=new Set;for(const r of e){if(!r||typeof r!="object")continue;const n=r,a=typeof n.id=="string"?n.id.trim():"",s=typeof n.label=="string"?n.label.trim():"",i=typeof n.source=="string"?n.source.trim():"",c=typeof n.subpath=="string"?n.subpath.trim():"",d=typeof n.gitIdentityId=="string"?n.gitIdentityId.trim():"";if(!a||!s||!i||o.has(a))continue;o.add(a);const l={id:a,label:s,source:i};c&&(l.subpath=c),d&&(l.gitIdentityId=d),t.push(l)}return t},Pg=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;const t={};for(const[o,r]of Object.entries(e)){const n=typeof o=="string"?o.trim():"",a=typeof r=="string"?r.trim():"";!n||!a||(t[n]=a)}return t},Rg=(e,t)=>{const o=Object.entries(e),r=Object.entries(t);return o.length!==r.length?!1:o.every(([n,a])=>t[n]===a)},ur=(e,t)=>e.length===t.length&&e.every((o,r)=>o.providerID===t[r]?.providerID&&o.modelID===t[r]?.modelID),Rr=(e,t)=>e.length===t.length&&e.every((o,r)=>o===t[r]),Ir=e=>{if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string"&&t.length>0)))},Ig=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;const t={};for(const[o,r]of Object.entries(e)){if(!o||!Array.isArray(r))continue;const n=Ir(r);n&&n.length>0&&(t[o]=n.slice(0,5))}return Object.keys(t).length>0?t:void 0},xg=(e,t)=>{const o=Object.keys(e);return o.length!==Object.keys(t).length?!1:o.every(r=>Array.isArray(t[r])&&Rr(e[r],t[r]))},Og=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,_g=e=>{if(typeof e!="string")return null;const t=e.trim();return t&&Og.test(t)?t.toLowerCase():null},Lg=e=>{if(!Array.isArray(e))return;const t=[],o=new Set,r=new Set;for(const n of e){if(!n||typeof n!="object")continue;const a=n,s=typeof a.path=="string"?a.path.trim():"";if(!s)continue;const i=s==="/"?s:s.replace(/\\/g,"/").replace(/\/+$/,"");if(!i)continue;const c=yl(i);if(!c||o.has(c)||r.has(i))continue;o.add(c),r.add(i);const d={id:c,path:i};if(typeof a.label=="string"&&a.label.trim().length>0&&(d.label=a.label.trim()),typeof a.icon=="string"&&a.icon.trim().length>0&&(d.icon=a.icon.trim()),a.iconImage===null)d.iconImage=null;else if(a.iconImage&&typeof a.iconImage=="object"){const l=a.iconImage,u=typeof l.mime=="string"?l.mime.trim():"",m=typeof l.updatedAt=="number"&&Number.isFinite(l.updatedAt)?Math.max(0,Math.round(l.updatedAt)):0,p=l.source==="custom"||l.source==="auto"?l.source:null;u&&m>0&&p&&(d.iconImage={mime:u,updatedAt:m,source:p})}if(typeof a.color=="string"&&a.color.trim().length>0&&(d.color=a.color.trim()),a.iconBackground===null)d.iconBackground=null;else{const l=_g(a.iconBackground);l&&(d.iconBackground=l)}typeof a.addedAt=="number"&&Number.isFinite(a.addedAt)&&a.addedAt>=0&&(d.addedAt=a.addedAt),typeof a.lastOpenedAt=="number"&&Number.isFinite(a.lastOpenedAt)&&a.lastOpenedAt>=0&&(d.lastOpenedAt=a.lastOpenedAt),typeof a.sidebarCollapsed=="boolean"&&(d.sidebarCollapsed=a.sidebarCollapsed),t.push(d)}return t.length>0?t:void 0},Ng=e=>{if(!Array.isArray(e))return;const t=[],o=new Set,r=new Set;for(const n of e){if(!n||typeof n!="object")continue;const a=n,s=typeof a.id=="string"?a.id.trim():"",i=typeof a.name=="string"?a.name.trim():"",c=typeof a.hostname=="string"?a.hostname.trim().toLowerCase():"";!s||!i||!c||o.has(s)||r.has(c)||(o.add(s),r.add(c),t.push({id:s,name:i,hostname:c}))}return t},Ug=e=>{if(!e||typeof e!="object"||Array.isArray(e))return;const t=e,o={};for(const[r,n]of Object.entries(t)){const a=r.trim(),s=typeof n=="string"?n.trim():"";!a||!s||(o[a]=s)}return Object.keys(o).length>0?o:void 0},fr=(e,t)=>{if(!Array.isArray(e))return;const o=[],r=new Set;for(const n of e){if(!n||typeof n!="object")continue;const a=n,s=typeof a.providerID=="string"?a.providerID.trim():"",i=typeof a.modelID=="string"?a.modelID.trim():"";if(!s||!i)continue;const c=`${s}/${i}`;if(!r.has(c)&&(r.add(c),o.push({providerID:s,modelID:i}),o.length>=t))break}return o},ii=()=>{const e=de.persist;if(e&&typeof e=="object")return e},ci=()=>Ho()?.settings??null,jg=e=>{const t=de.getInitialState();return{useSystemTheme:!0,lightThemeId:ai,darkThemeId:si,openInAppId:Eg,showReasoningTraces:t.showReasoningTraces,streamingAutoFollowEnabled:t.streamingAutoFollowEnabled,workStatusPanelEnabled:t.workStatusPanelEnabled,workStatusHiddenSections:t.workStatusHiddenSections,sessionRecapEnabled:t.sessionRecapEnabled,sessionSuggestionEnabled:t.sessionSuggestionEnabled,sessionGoalEnabled:t.sessionGoalEnabled,sessionGoalDefaultBudgetEnabled:t.sessionGoalDefaultBudgetEnabled,sessionGoalDefaultBudget:t.sessionGoalDefaultBudget,collapsibleThinkingBlocks:t.collapsibleThinkingBlocks,autoDeleteEnabled:t.autoDeleteEnabled,autoSaveEnabled:t.autoSaveEnabled,autoDeleteAfterDays:t.autoDeleteAfterDays,sessionRetentionAction:t.sessionRetentionAction,followUpBehavior:dn,showDeletionDialog:t.showDeletionDialog,nativeNotificationsEnabled:t.nativeNotificationsEnabled,notificationMode:t.notificationMode,notifyOnSubtasks:t.notifyOnSubtasks,notifyOnCompletion:t.notifyOnCompletion,notifyOnError:t.notifyOnError,notifyOnQuestion:t.notifyOnQuestion,notificationTemplates:t.notificationTemplates,summarizeLastMessage:t.summarizeLastMessage,summaryThreshold:t.summaryThreshold,summaryLength:t.summaryLength,maxLastMessageLength:t.maxLastMessageLength,inputSpellcheckEnabled:t.inputSpellcheckEnabled,showOpenCodeUpdateNotifications:t.showOpenCodeUpdateNotifications,agentControlToolEnabled:t.agentControlToolEnabled,agentWebToolEnabled:t.agentWebToolEnabled,agentMemoryToolEnabled:t.agentMemoryToolEnabled,showToolFileIcons:t.showToolFileIcons,codeBlockLineWrap:t.codeBlockLineWrap,showTurnChangedFiles:t.showTurnChangedFiles,showExpandedBashTools:t.showExpandedBashTools,showExpandedEditTools:t.showExpandedEditTools,timeFormatPreference:t.timeFormatPreference,weekStartPreference:t.weekStartPreference,desktopWindowControlsPosition:t.desktopWindowControlsPosition,desktopWindowControlsStyle:t.desktopWindowControlsStyle,chatRenderMode:t.chatRenderMode,activityRenderMode:t.activityRenderMode,mermaidRenderingMode:t.mermaidRenderingMode,userMessageRenderingMode:t.userMessageRenderingMode,collapsibleUserMessages:t.collapsibleUserMessages,messageStreamTransport:"auto",stickyUserHeader:t.stickyUserHeader,promptNavigatorEnabled:t.promptNavigatorEnabled,wideChatLayoutEnabled:t.wideChatLayoutEnabled,showSplitAssistantMessageActions:t.showSplitAssistantMessageActions,draftStartersVisible:t.draftStartersVisible,reportUsage:t.reportUsage,fontSize:t.fontSize,terminalFontSize:t.terminalFontSize,terminalShell:t.terminalShell,terminalLoginShells:t.terminalLoginShells,editorFontSize:t.editorFontSize,uiFont:t.uiFont,monoFont:t.monoFont,padding:t.padding,cornerRadius:t.cornerRadius,inputBarOffset:t.inputBarOffset,shortcutOverrides:t.shortcutOverrides,mobileKeyboardMode:"resize-content",favoriteModels:t.favoriteModels,hiddenModels:t.hiddenModels,collapsedModelProviders:t.collapsedModelProviders,recentModels:t.recentModels,recentAgents:t.recentAgents,recentEfforts:t.recentEfforts,diffLayoutPreference:t.diffLayoutPreference,gitChangesViewMode:t.gitChangesViewMode,directoryShowHidden:!0,filesViewShowGitignored:!1,dictationEnabled:!0,sttProvider:"local",sttServerUrl:"http://localhost:8001/v1",sttModel:"deepdml/faster-whisper-large-v3-turbo-ct2",sttLocalModel:"parakeet-tdt-0.6b-v2-int8",sttLanguage:"",...e}},xr=e=>{const t=de.getState(),o=typeof window<"u"?window.__zustand_config_store__?.getState?.()??null:null,r=typeof window<"u"?window.__zustand_config_store__??null:null,n=Jl.getState();if(typeof e.workStatusPanelEnabled=="boolean"&&e.workStatusPanelEnabled!==t.workStatusPanelEnabled&&t.setWorkStatusPanelEnabled(e.workStatusPanelEnabled),Array.isArray(e.workStatusHiddenSections)){const i=xs(e.workStatusHiddenSections);i.join("\0")!==t.workStatusHiddenSections.join("\0")&&t.setWorkStatusHiddenSections(i)}if(typeof e.showReasoningTraces=="boolean"&&e.showReasoningTraces!==t.showReasoningTraces&&t.setShowReasoningTraces(e.showReasoningTraces),typeof e.streamingAutoFollowEnabled=="boolean"&&e.streamingAutoFollowEnabled!==t.streamingAutoFollowEnabled&&t.setStreamingAutoFollowEnabled(e.streamingAutoFollowEnabled),typeof e.sessionRecapEnabled=="boolean"&&e.sessionRecapEnabled!==t.sessionRecapEnabled&&t.setSessionRecapEnabled(e.sessionRecapEnabled),typeof e.sessionSuggestionEnabled=="boolean"&&e.sessionSuggestionEnabled!==t.sessionSuggestionEnabled&&t.setSessionSuggestionEnabled(e.sessionSuggestionEnabled),typeof e.sessionGoalEnabled=="boolean"&&e.sessionGoalEnabled!==t.sessionGoalEnabled&&t.setSessionGoalEnabled(e.sessionGoalEnabled),typeof e.sessionGoalDefaultBudgetEnabled=="boolean"&&e.sessionGoalDefaultBudgetEnabled!==t.sessionGoalDefaultBudgetEnabled&&t.setSessionGoalDefaultBudgetEnabled(e.sessionGoalDefaultBudgetEnabled),typeof e.sessionGoalDefaultBudget=="number"&&Number.isFinite(e.sessionGoalDefaultBudget)&&e.sessionGoalDefaultBudget!==t.sessionGoalDefaultBudget&&t.setSessionGoalDefaultBudget(e.sessionGoalDefaultBudget),typeof e.collapsibleThinkingBlocks=="boolean"&&e.collapsibleThinkingBlocks!==t.collapsibleThinkingBlocks&&t.setCollapsibleThinkingBlocks(e.collapsibleThinkingBlocks),typeof e.autoDeleteEnabled=="boolean"&&e.autoDeleteEnabled!==t.autoDeleteEnabled&&t.setAutoDeleteEnabled(e.autoDeleteEnabled),typeof e.autoSaveEnabled=="boolean"&&e.autoSaveEnabled!==t.autoSaveEnabled&&t.setAutoSaveEnabled(e.autoSaveEnabled),typeof e.autoDeleteAfterDays=="number"&&Number.isFinite(e.autoDeleteAfterDays)){const i=Math.max(1,Math.min(365,e.autoDeleteAfterDays));i!==t.autoDeleteAfterDays&&t.setAutoDeleteAfterDays(i)}(e.sessionRetentionAction==="archive"||e.sessionRetentionAction==="delete")&&e.sessionRetentionAction!==t.sessionRetentionAction&&t.setSessionRetentionAction(e.sessionRetentionAction);let a=null;if(ln(e.followUpBehavior)?a=e.followUpBehavior:typeof e.queueModeEnabled=="boolean"&&(a=un(void 0,e.queueModeEnabled)),a&&a!==n.followUpBehavior&&n.setFollowUpBehavior(a),typeof e.showDeletionDialog=="boolean"&&e.showDeletionDialog!==t.showDeletionDialog&&t.setShowDeletionDialog(e.showDeletionDialog),typeof e.nativeNotificationsEnabled=="boolean"&&e.nativeNotificationsEnabled!==t.nativeNotificationsEnabled&&t.setNativeNotificationsEnabled(e.nativeNotificationsEnabled),typeof e.notificationMode=="string"&&(e.notificationMode==="always"||e.notificationMode==="hidden-only")&&e.notificationMode!==t.notificationMode&&t.setNotificationMode(e.notificationMode),typeof e.notifyOnSubtasks=="boolean"&&e.notifyOnSubtasks!==t.notifyOnSubtasks&&t.setNotifyOnSubtasks(e.notifyOnSubtasks),typeof e.notifyOnCompletion=="boolean"&&e.notifyOnCompletion!==t.notifyOnCompletion&&t.setNotifyOnCompletion(e.notifyOnCompletion),typeof e.notifyOnError=="boolean"&&e.notifyOnError!==t.notifyOnError&&t.setNotifyOnError(e.notifyOnError),typeof e.notifyOnQuestion=="boolean"&&e.notifyOnQuestion!==t.notifyOnQuestion&&t.setNotifyOnQuestion(e.notifyOnQuestion),e.notificationTemplates&&typeof e.notificationTemplates=="object"&&t.setNotificationTemplates(e.notificationTemplates),typeof e.summarizeLastMessage=="boolean"&&e.summarizeLastMessage!==t.summarizeLastMessage&&t.setSummarizeLastMessage(e.summarizeLastMessage),typeof e.summaryThreshold=="number"&&Number.isFinite(e.summaryThreshold)&&t.setSummaryThreshold(e.summaryThreshold),typeof e.summaryLength=="number"&&Number.isFinite(e.summaryLength)&&t.setSummaryLength(e.summaryLength),typeof e.maxLastMessageLength=="number"&&Number.isFinite(e.maxLastMessageLength)&&t.setMaxLastMessageLength(e.maxLastMessageLength),typeof e.inputSpellcheckEnabled=="boolean"&&e.inputSpellcheckEnabled!==t.inputSpellcheckEnabled&&t.setInputSpellcheckEnabled(e.inputSpellcheckEnabled),typeof e.showOpenCodeUpdateNotifications=="boolean"&&e.showOpenCodeUpdateNotifications!==t.showOpenCodeUpdateNotifications&&t.setShowOpenCodeUpdateNotifications(e.showOpenCodeUpdateNotifications),typeof e.agentControlToolEnabled=="boolean"&&e.agentControlToolEnabled!==t.agentControlToolEnabled&&t.setAgentControlToolEnabled(e.agentControlToolEnabled),typeof e.agentWebToolEnabled=="boolean"&&e.agentWebToolEnabled!==t.agentWebToolEnabled&&t.setAgentWebToolEnabled(e.agentWebToolEnabled),typeof e.agentMemoryToolEnabled=="boolean"&&e.agentMemoryToolEnabled!==t.agentMemoryToolEnabled&&t.setAgentMemoryToolEnabled(e.agentMemoryToolEnabled),typeof e.agentMemoryFeatureAvailable=="boolean"&&e.agentMemoryFeatureAvailable!==t.agentMemoryFeatureAvailable&&t.setAgentMemoryFeatureAvailable(e.agentMemoryFeatureAvailable),typeof e.showToolFileIcons=="boolean"&&e.showToolFileIcons!==t.showToolFileIcons&&t.setShowToolFileIcons(e.showToolFileIcons),typeof e.codeBlockLineWrap=="boolean"&&e.codeBlockLineWrap!==t.codeBlockLineWrap&&t.setCodeBlockLineWrap(e.codeBlockLineWrap),typeof e.showTurnChangedFiles=="boolean"&&e.showTurnChangedFiles!==t.showTurnChangedFiles&&t.setShowTurnChangedFiles(e.showTurnChangedFiles),typeof e.showExpandedBashTools=="boolean"&&e.showExpandedBashTools!==t.showExpandedBashTools&&t.setShowExpandedBashTools(e.showExpandedBashTools),typeof e.showExpandedEditTools=="boolean"&&e.showExpandedEditTools!==t.showExpandedEditTools&&t.setShowExpandedEditTools(e.showExpandedEditTools),typeof e.timeFormatPreference=="string"&&(e.timeFormatPreference==="auto"||e.timeFormatPreference==="12h"||e.timeFormatPreference==="24h")&&e.timeFormatPreference!==t.timeFormatPreference&&t.setTimeFormatPreference(e.timeFormatPreference),typeof e.weekStartPreference=="string"&&(e.weekStartPreference==="auto"||e.weekStartPreference==="sunday"||e.weekStartPreference==="monday")&&e.weekStartPreference!==t.weekStartPreference&&t.setWeekStartPreference(e.weekStartPreference),typeof e.desktopWindowControlsPosition=="string"){const i=e.desktopWindowControlsPosition==="left"?"left":e.desktopWindowControlsPosition==="right"||e.desktopWindowControlsPosition==="auto"?"right":null;i&&i!==t.desktopWindowControlsPosition&&t.setDesktopWindowControlsPosition(i)}if(typeof e.desktopWindowControlsStyle=="string"){const i=e.desktopWindowControlsStyle==="traffic-lights"?"traffic-lights":e.desktopWindowControlsStyle==="classic"?"classic":null;i&&i!==t.desktopWindowControlsStyle&&t.setDesktopWindowControlsStyle(i)}if(typeof e.chatRenderMode=="string"&&(e.chatRenderMode==="sorted"||e.chatRenderMode==="live")&&e.chatRenderMode!==t.chatRenderMode&&t.setChatRenderMode(e.chatRenderMode),typeof e.activityRenderMode=="string"&&(e.activityRenderMode==="collapsed"||e.activityRenderMode==="summary")&&e.activityRenderMode!==t.activityRenderMode&&t.setActivityRenderMode(e.activityRenderMode),typeof e.mermaidRenderingMode=="string"&&(e.mermaidRenderingMode==="svg"||e.mermaidRenderingMode==="ascii")&&e.mermaidRenderingMode!==t.mermaidRenderingMode&&t.setMermaidRenderingMode(e.mermaidRenderingMode),typeof e.userMessageRenderingMode=="string"&&(e.userMessageRenderingMode==="markdown"||e.userMessageRenderingMode==="plain")&&e.userMessageRenderingMode!==t.userMessageRenderingMode&&t.setUserMessageRenderingMode(e.userMessageRenderingMode),typeof e.collapsibleUserMessages=="boolean"&&e.collapsibleUserMessages!==t.collapsibleUserMessages&&t.setCollapsibleUserMessages(e.collapsibleUserMessages),typeof e.messageStreamTransport=="string"&&(e.messageStreamTransport==="auto"||e.messageStreamTransport==="ws"||e.messageStreamTransport==="sse")&&o&&e.messageStreamTransport!==o.settingsMessageStreamTransport&&o.setSettingsMessageStreamTransport(e.messageStreamTransport),typeof e.stickyUserHeader=="boolean"&&e.stickyUserHeader!==t.stickyUserHeader&&t.setStickyUserHeader(e.stickyUserHeader),typeof e.promptNavigatorEnabled=="boolean"&&e.promptNavigatorEnabled!==t.promptNavigatorEnabled&&t.setPromptNavigatorEnabled(e.promptNavigatorEnabled),typeof e.wideChatLayoutEnabled=="boolean"&&e.wideChatLayoutEnabled!==t.wideChatLayoutEnabled&&t.setWideChatLayoutEnabled(e.wideChatLayoutEnabled),typeof e.showSplitAssistantMessageActions=="boolean"&&e.showSplitAssistantMessageActions!==t.showSplitAssistantMessageActions&&t.setShowSplitAssistantMessageActions(e.showSplitAssistantMessageActions),typeof e.reportUsage=="boolean"&&e.reportUsage!==t.reportUsage&&t.setReportUsage(e.reportUsage),typeof e.fontSize=="number"&&Number.isFinite(e.fontSize)&&e.fontSize!==t.fontSize&&t.setFontSize(e.fontSize),Array.isArray(e.draftStarters)){let i=ri(e.draftStarters);if(e.draftStartersCraftGoalAdded!==!0&&!i.some(c=>c.type==="command"&&c.name==="craft-goal")){const c=i.findIndex(l=>l.type==="command"&&l.name==="plan-feature"),d=c>=0?c+1:i.length;i=[...i.slice(0,d),{type:"command",name:"craft-goal"},...i.slice(d)]}if(e.draftStartersScheduleTaskAdded!==!0&&!i.some(c=>c.type==="command"&&c.name==="schedule-task")){const c=i.findIndex(l=>l.type==="command"&&l.name==="craft-goal"),d=c>=0?c+1:i.length;i=[...i.slice(0,d),{type:"command",name:"schedule-task"},...i.slice(d)]}JSON.stringify(t.globalDraftStarters)!==JSON.stringify(i)&&t.setGlobalDraftStarters(i),(e.draftStartersCraftGoalAdded!==!0||e.draftStartersScheduleTaskAdded!==!0)&&(e.draftStarters=i,e.draftStartersCraftGoalAdded=!0,e.draftStartersScheduleTaskAdded=!0)}else e.draftStartersCraftGoalAdded!==!0&&(e.draftStartersCraftGoalAdded=!0),e.draftStartersScheduleTaskAdded!==!0&&(e.draftStartersScheduleTaskAdded=!0);if(typeof e.draftStartersVisible=="boolean"&&e.draftStartersVisible!==t.draftStartersVisible&&t.setDraftStartersVisible(e.draftStartersVisible),typeof e.terminalFontSize=="number"&&Number.isFinite(e.terminalFontSize)&&e.terminalFontSize!==t.terminalFontSize&&t.setTerminalFontSize(e.terminalFontSize),To(e.terminalShell)&&e.terminalShell!==t.terminalShell&&t.setTerminalShell(e.terminalShell),Array.isArray(e.terminalLoginShells)&&(e.terminalLoginShells.length!==t.terminalLoginShells.length||e.terminalLoginShells.some((i,c)=>i!==t.terminalLoginShells[c]))&&t.setTerminalLoginShells(e.terminalLoginShells),typeof e.editorFontSize=="number"&&Number.isFinite(e.editorFontSize)&&e.editorFontSize!==t.editorFontSize&&t.setEditorFontSize(e.editorFontSize),js(e.uiFont)&&e.uiFont!==t.uiFont&&t.setUiFont(e.uiFont),Hs(e.monoFont)&&e.monoFont!==t.monoFont&&t.setMonoFont(e.monoFont),typeof e.padding=="number"&&Number.isFinite(e.padding)&&e.padding!==t.padding&&t.setPadding(e.padding),typeof e.cornerRadius=="number"&&Number.isFinite(e.cornerRadius)&&e.cornerRadius!==t.cornerRadius&&t.setCornerRadius(e.cornerRadius),typeof e.inputBarOffset=="number"&&Number.isFinite(e.inputBarOffset)&&e.inputBarOffset!==t.inputBarOffset&&t.setInputBarOffset(e.inputBarOffset),e.shortcutOverrides&&!Rg(e.shortcutOverrides,t.shortcutOverrides)&&de.setState({shortcutOverrides:e.shortcutOverrides}),typeof e.mobileKeyboardMode=="string"){const i=zo(e.mobileKeyboardMode,t.mobileKeyboardMode);i!==t.mobileKeyboardMode&&t.setMobileKeyboardMode(i)}if(r&&o){const i={};typeof e.dictationEnabled=="boolean"&&e.dictationEnabled!==o.dictationEnabled&&(i.dictationEnabled=e.dictationEnabled),(e.sttProvider==="local"||e.sttProvider==="openai-compatible")&&e.sttProvider!==o.sttProvider&&(i.sttProvider=e.sttProvider),typeof e.sttServerUrl=="string"&&e.sttServerUrl!==o.sttServerUrl&&(i.sttServerUrl=e.sttServerUrl),typeof e.sttModel=="string"&&e.sttModel!==o.sttModel&&(i.sttModel=e.sttModel),typeof e.sttLocalModel=="string"&&e.sttLocalModel!==o.sttLocalModel&&(i.sttLocalModel=e.sttLocalModel),typeof e.sttLanguage=="string"&&e.sttLanguage!==o.sttLanguage&&(i.sttLanguage=e.sttLanguage),Object.keys(i).length>0&&r.setState(i)}if(Array.isArray(e.favoriteModels)){const i=t.favoriteModels,c=e.favoriteModels;ur(i,c)||de.setState({favoriteModels:c})}if(Array.isArray(e.hiddenModels)){const i=t.hiddenModels,c=e.hiddenModels;ur(i,c)||de.setState({hiddenModels:c})}if(Array.isArray(e.collapsedModelProviders)){const i=t.collapsedModelProviders,c=e.collapsedModelProviders;Rr(i,c)||de.setState({collapsedModelProviders:c})}if(Array.isArray(e.recentModels)){const i=t.recentModels,c=e.recentModels;ur(i,c)||de.setState({recentModels:c})}if(Array.isArray(e.recentAgents)){const i=t.recentAgents,c=e.recentAgents;Rr(i,c)||de.setState({recentAgents:c})}if(e.recentEfforts&&typeof e.recentEfforts=="object"){const i=t.recentEfforts,c=e.recentEfforts;xg(i,c)||de.setState({recentEfforts:c})}typeof e.diffLayoutPreference=="string"&&(e.diffLayoutPreference==="dynamic"||e.diffLayoutPreference==="inline"||e.diffLayoutPreference==="side-by-side")&&e.diffLayoutPreference!==t.diffLayoutPreference&&t.setDiffLayoutPreference(e.diffLayoutPreference),typeof e.gitChangesViewMode=="string"&&(e.gitChangesViewMode==="flat"||e.gitChangesViewMode==="tree")&&e.gitChangesViewMode!==t.gitChangesViewMode&&t.setGitChangesViewMode(e.gitChangesViewMode),typeof e.directoryShowHidden=="boolean"&&Ql(e.directoryShowHidden,{persist:!1}),typeof e.filesViewShowGitignored=="boolean"&&Zl(e.filesViewShowGitignored,{persist:!1});const s={};(e.sidebarProjectDisplayMode==="all"||e.sidebarProjectDisplayMode==="single")&&(s.projectDisplayMode=e.sidebarProjectDisplayMode),(e.sidebarSessionGroupingMode==="by-worktree"||e.sidebarSessionGroupingMode==="flat")&&(s.sessionGroupingMode=e.sidebarSessionGroupingMode),(e.sidebarProjectSortOrder==="manual"||e.sidebarProjectSortOrder==="a-z"||e.sidebarProjectSortOrder==="z-a"||e.sidebarProjectSortOrder==="date-added"||e.sidebarProjectSortOrder==="recent")&&(s.projectSortOrder=e.sidebarProjectSortOrder),typeof e.sidebarShowRecentSection=="boolean"&&(s.showRecentSection=e.sidebarShowRecentSection),Object.keys(s).length>0&&Sr.setState(s)},Or=e=>{if(!e||typeof e!="object")return null;const t=e,o={};if(typeof t.themeId=="string"&&t.themeId.length>0&&(o.themeId=t.themeId),(t.useSystemTheme===!0||t.useSystemTheme===!1)&&(o.useSystemTheme=t.useSystemTheme),typeof t.themeVariant=="string"&&(t.themeVariant==="light"||t.themeVariant==="dark")&&(o.themeVariant=t.themeVariant),typeof t.lightThemeId=="string"&&t.lightThemeId.length>0&&(o.lightThemeId=t.lightThemeId),typeof t.darkThemeId=="string"&&t.darkThemeId.length>0&&(o.darkThemeId=t.darkThemeId),typeof t.lastDirectory=="string"&&t.lastDirectory.length>0&&(o.lastDirectory=t.lastDirectory),typeof t.homeDirectory=="string"&&t.homeDirectory.length>0&&(o.homeDirectory=t.homeDirectory),typeof t.opencodeBinary=="string"){const g=t.opencodeBinary.trim();o.opencodeBinary=g.length>0?g:void 0}typeof t.desktopLanAccessEnabled=="boolean"&&(o.desktopLanAccessEnabled=t.desktopLanAccessEnabled),typeof t.desktopKeepAwakeEnabled=="boolean"&&(o.desktopKeepAwakeEnabled=t.desktopKeepAwakeEnabled),typeof t.desktopMinimizeToTrayEnabled=="boolean"&&(o.desktopMinimizeToTrayEnabled=t.desktopMinimizeToTrayEnabled),typeof t.desktopMacMenuBarEnabled=="boolean"&&(o.desktopMacMenuBarEnabled=t.desktopMacMenuBarEnabled);const r=Lg(t.projects);if(r&&(o.projects=r),typeof t.activeProjectId=="string"&&t.activeProjectId.length>0&&(o.activeProjectId=t.activeProjectId),(t.sidebarProjectDisplayMode==="all"||t.sidebarProjectDisplayMode==="single")&&(o.sidebarProjectDisplayMode=t.sidebarProjectDisplayMode),(t.sidebarSessionGroupingMode==="by-worktree"||t.sidebarSessionGroupingMode==="flat")&&(o.sidebarSessionGroupingMode=t.sidebarSessionGroupingMode),(t.sidebarProjectSortOrder==="manual"||t.sidebarProjectSortOrder==="a-z"||t.sidebarProjectSortOrder==="z-a"||t.sidebarProjectSortOrder==="date-added"||t.sidebarProjectSortOrder==="recent")&&(o.sidebarProjectSortOrder=t.sidebarProjectSortOrder),typeof t.sidebarShowRecentSection=="boolean"&&(o.sidebarShowRecentSection=t.sidebarShowRecentSection),Array.isArray(t.securityScopedBookmarks)&&(o.securityScopedBookmarks=t.securityScopedBookmarks.filter(g=>typeof g=="string"&&g.length>0)),Array.isArray(t.pinnedDirectories)&&(o.pinnedDirectories=Array.from(new Set(t.pinnedDirectories.filter(g=>typeof g=="string"&&g.length>0)))),Array.isArray(t.draftStarters)&&(o.draftStarters=ri(t.draftStarters)),typeof t.draftStartersVisible=="boolean"&&(o.draftStartersVisible=t.draftStartersVisible),typeof t.draftStartersCraftGoalAdded=="boolean"&&(o.draftStartersCraftGoalAdded=t.draftStartersCraftGoalAdded),typeof t.draftStartersScheduleTaskAdded=="boolean"&&(o.draftStartersScheduleTaskAdded=t.draftStartersScheduleTaskAdded),typeof t.workStatusPanelEnabled=="boolean"&&(o.workStatusPanelEnabled=t.workStatusPanelEnabled),Array.isArray(t.workStatusHiddenSections)&&(o.workStatusHiddenSections=xs(t.workStatusHiddenSections)),typeof t.showReasoningTraces=="boolean"&&(o.showReasoningTraces=t.showReasoningTraces),typeof t.streamingAutoFollowEnabled=="boolean"&&(o.streamingAutoFollowEnabled=t.streamingAutoFollowEnabled),typeof t.sessionRecapEnabled=="boolean"&&(o.sessionRecapEnabled=t.sessionRecapEnabled),typeof t.sessionSuggestionEnabled=="boolean"&&(o.sessionSuggestionEnabled=t.sessionSuggestionEnabled),typeof t.sessionGoalEnabled=="boolean"&&(o.sessionGoalEnabled=t.sessionGoalEnabled),typeof t.sessionGoalDefaultBudgetEnabled=="boolean"&&(o.sessionGoalDefaultBudgetEnabled=t.sessionGoalDefaultBudgetEnabled),typeof t.sessionGoalDefaultBudget=="number"&&Number.isFinite(t.sessionGoalDefaultBudget)&&t.sessionGoalDefaultBudget>0&&(o.sessionGoalDefaultBudget=Math.floor(t.sessionGoalDefaultBudget)),typeof t.collapsibleThinkingBlocks=="boolean"&&(o.collapsibleThinkingBlocks=t.collapsibleThinkingBlocks),typeof t.autoDeleteEnabled=="boolean"&&(o.autoDeleteEnabled=t.autoDeleteEnabled),typeof t.autoSaveEnabled=="boolean"&&(o.autoSaveEnabled=t.autoSaveEnabled),typeof t.autoDeleteAfterDays=="number"&&Number.isFinite(t.autoDeleteAfterDays)&&(o.autoDeleteAfterDays=t.autoDeleteAfterDays),(t.sessionRetentionAction==="archive"||t.sessionRetentionAction==="delete")&&(o.sessionRetentionAction=t.sessionRetentionAction),typeof t.tunnelProvider=="string"){const g=t.tunnelProvider.trim().toLowerCase();g.length>0&&(o.tunnelProvider=g)}if(typeof t.tunnelMode=="string"){const g=t.tunnelMode.trim().toLowerCase();(g==="quick"||g==="managed-remote"||g==="managed-local")&&(o.tunnelMode=g)}if(t.tunnelBootstrapTtlMs===null?o.tunnelBootstrapTtlMs=null:typeof t.tunnelBootstrapTtlMs=="number"&&Number.isFinite(t.tunnelBootstrapTtlMs)&&(o.tunnelBootstrapTtlMs=t.tunnelBootstrapTtlMs),typeof t.tunnelSessionTtlMs=="number"&&Number.isFinite(t.tunnelSessionTtlMs)&&(o.tunnelSessionTtlMs=t.tunnelSessionTtlMs),t.managedLocalTunnelConfigPath===null)o.managedLocalTunnelConfigPath=null;else if(typeof t.managedLocalTunnelConfigPath=="string"){const g=t.managedLocalTunnelConfigPath.trim();o.managedLocalTunnelConfigPath=g.length>0?g:null}typeof t.managedRemoteTunnelHostname=="string"&&(o.managedRemoteTunnelHostname=t.managedRemoteTunnelHostname.trim()),t.managedRemoteTunnelToken===null?o.managedRemoteTunnelToken=null:typeof t.managedRemoteTunnelToken=="string"&&(o.managedRemoteTunnelToken=t.managedRemoteTunnelToken.trim());const n=Ng(t.managedRemoteTunnelPresets);if(n&&(o.managedRemoteTunnelPresets=n),typeof t.managedRemoteTunnelSelectedPresetId=="string"){const g=t.managedRemoteTunnelSelectedPresetId.trim();o.managedRemoteTunnelSelectedPresetId=g.length>0?g:void 0}const a=Ug(t.managedRemoteTunnelPresetTokens);if(a&&(o.managedRemoteTunnelPresetTokens=a),typeof t.defaultModel=="string"&&t.defaultModel.length>0&&(o.defaultModel=t.defaultModel),typeof t.defaultVariant=="string"&&t.defaultVariant.length>0&&(o.defaultVariant=t.defaultVariant),typeof t.defaultAgent=="string"&&t.defaultAgent.length>0&&(o.defaultAgent=t.defaultAgent),typeof t.smallModelUseDefault=="boolean"&&(o.smallModelUseDefault=t.smallModelUseDefault),typeof t.smallModelOverride=="string"&&t.smallModelOverride.length>0&&(o.smallModelOverride=t.smallModelOverride),typeof t.walkthroughModelOverride=="string"&&t.walkthroughModelOverride.length>0&&(o.walkthroughModelOverride=t.walkthroughModelOverride),typeof t.autoCreateWorktree=="boolean"&&(o.autoCreateWorktree=t.autoCreateWorktree),typeof t.gitmojiEnabled=="boolean"&&(o.gitmojiEnabled=t.gitmojiEnabled),ln(t.followUpBehavior)?o.followUpBehavior=t.followUpBehavior:typeof t.queueModeEnabled=="boolean"&&(o.followUpBehavior=un(void 0,t.queueModeEnabled)),typeof t.showDeletionDialog=="boolean"&&(o.showDeletionDialog=t.showDeletionDialog),typeof t.nativeNotificationsEnabled=="boolean"&&(o.nativeNotificationsEnabled=t.nativeNotificationsEnabled),typeof t.notificationMode=="string"&&(t.notificationMode==="always"||t.notificationMode==="hidden-only")&&(o.notificationMode=t.notificationMode),typeof t.notifyOnSubtasks=="boolean"&&(o.notifyOnSubtasks=t.notifyOnSubtasks),typeof t.notifyOnCompletion=="boolean"&&(o.notifyOnCompletion=t.notifyOnCompletion),typeof t.notifyOnError=="boolean"&&(o.notifyOnError=t.notifyOnError),typeof t.notifyOnQuestion=="boolean"&&(o.notifyOnQuestion=t.notifyOnQuestion),t.notificationTemplates&&typeof t.notificationTemplates=="object"){const g=t.notificationTemplates,w=I=>{const ae=g[I];if(!ae||typeof ae!="object")return;const fe=ae,Pt=typeof fe.title=="string"?fe.title:"",Wo=typeof fe.message=="string"?fe.message:"";return{title:Pt,message:Wo}},h=w("completion"),F=w("error"),k=w("question"),E=w("subtask");(h||F||k||E)&&(o.notificationTemplates={completion:h??{title:"Task Complete",message:"Your task has finished."},error:F??{title:"Error Occurred",message:"An error occurred while processing your task."},question:k??{title:"Input Needed",message:"Please provide input to continue."},subtask:E??{title:"Subtask Complete",message:"A subtask has finished."}})}if(typeof t.summarizeLastMessage=="boolean"&&(o.summarizeLastMessage=t.summarizeLastMessage),typeof t.summaryThreshold=="number"&&Number.isFinite(t.summaryThreshold)&&(o.summaryThreshold=Math.max(0,Math.round(t.summaryThreshold))),typeof t.summaryLength=="number"&&Number.isFinite(t.summaryLength)&&(o.summaryLength=Math.max(10,Math.round(t.summaryLength))),typeof t.maxLastMessageLength=="number"&&Number.isFinite(t.maxLastMessageLength)&&(o.maxLastMessageLength=Math.max(10,Math.round(t.maxLastMessageLength))),(t.usageDisplayMode==="usage"||t.usageDisplayMode==="remaining")&&(o.usageDisplayMode=t.usageDisplayMode),Array.isArray(t.usageDropdownProviders)&&(o.usageDropdownProviders=t.usageDropdownProviders.filter(g=>typeof g=="string"&&g.length>0)),t.usageSelectedModels&&typeof t.usageSelectedModels=="object"){const g={};for(const[w,h]of Object.entries(t.usageSelectedModels))Array.isArray(h)&&(g[w]=h.filter(F=>typeof F=="string"));Object.keys(g).length>0&&(o.usageSelectedModels=g)}if(t.usageCollapsedFamilies&&typeof t.usageCollapsedFamilies=="object"){const g={};for(const[w,h]of Object.entries(t.usageCollapsedFamilies))Array.isArray(h)&&(g[w]=h.filter(F=>typeof F=="string"));Object.keys(g).length>0&&(o.usageCollapsedFamilies=g)}if(t.usageExpandedFamilies&&typeof t.usageExpandedFamilies=="object"){const g={};for(const[w,h]of Object.entries(t.usageExpandedFamilies))Array.isArray(h)&&(g[w]=h.filter(F=>typeof F=="string"));Object.keys(g).length>0&&(o.usageExpandedFamilies=g)}if(t.usageModelGroups&&typeof t.usageModelGroups=="object"){const g={};for(const[w,h]of Object.entries(t.usageModelGroups))if(h&&typeof h=="object"){const F=h,k={};Array.isArray(F.customGroups)&&(k.customGroups=F.customGroups.filter(E=>E&&typeof E=="object").map(E=>({id:String(E.id??""),label:String(E.label??""),models:Array.isArray(E.models)?E.models.filter(I=>typeof I=="string"):[],order:typeof E.order=="number"?E.order:0}))),F.modelAssignments&&typeof F.modelAssignments=="object"&&(k.modelAssignments=Object.fromEntries(Object.entries(F.modelAssignments).filter(([,E])=>typeof E=="string").map(([E,I])=>[E,String(I)]))),F.renamedGroups&&typeof F.renamedGroups=="object"&&(k.renamedGroups=Object.fromEntries(Object.entries(F.renamedGroups).filter(([,E])=>typeof E=="string").map(([E,I])=>[E,String(I)]))),Object.keys(k).length>0&&(g[w]=k)}Object.keys(g).length>0&&(o.usageModelGroups=g)}typeof t.inputSpellcheckEnabled=="boolean"&&(o.inputSpellcheckEnabled=t.inputSpellcheckEnabled),typeof t.showOpenCodeUpdateNotifications=="boolean"&&(o.showOpenCodeUpdateNotifications=t.showOpenCodeUpdateNotifications),typeof t.agentControlToolEnabled=="boolean"&&(o.agentControlToolEnabled=t.agentControlToolEnabled),typeof t.agentWebToolEnabled=="boolean"&&(o.agentWebToolEnabled=t.agentWebToolEnabled),typeof t.agentMemoryToolEnabled=="boolean"&&(o.agentMemoryToolEnabled=t.agentMemoryToolEnabled),typeof t.openCodeUpdateToastDismissedVersion=="string"&&(o.openCodeUpdateToastDismissedVersion=t.openCodeUpdateToastDismissedVersion.trim().slice(0,128)),typeof t.showToolFileIcons=="boolean"&&(o.showToolFileIcons=t.showToolFileIcons),typeof t.codeBlockLineWrap=="boolean"&&(o.codeBlockLineWrap=t.codeBlockLineWrap),typeof t.showTurnChangedFiles=="boolean"&&(o.showTurnChangedFiles=t.showTurnChangedFiles),typeof t.showExpandedBashTools=="boolean"&&(o.showExpandedBashTools=t.showExpandedBashTools),typeof t.showExpandedEditTools=="boolean"&&(o.showExpandedEditTools=t.showExpandedEditTools),typeof t.timeFormatPreference=="string"&&(t.timeFormatPreference==="auto"||t.timeFormatPreference==="12h"||t.timeFormatPreference==="24h")&&(o.timeFormatPreference=t.timeFormatPreference),typeof t.weekStartPreference=="string"&&(t.weekStartPreference==="auto"||t.weekStartPreference==="sunday"||t.weekStartPreference==="monday")&&(o.weekStartPreference=t.weekStartPreference),typeof t.desktopWindowControlsPosition=="string"&&(t.desktopWindowControlsPosition==="left"?o.desktopWindowControlsPosition="left":(t.desktopWindowControlsPosition==="right"||t.desktopWindowControlsPosition==="auto")&&(o.desktopWindowControlsPosition="right")),typeof t.desktopWindowControlsStyle=="string"&&(t.desktopWindowControlsStyle==="classic"||t.desktopWindowControlsStyle==="traffic-lights")&&(o.desktopWindowControlsStyle=t.desktopWindowControlsStyle),typeof t.chatRenderMode=="string"&&(t.chatRenderMode==="sorted"||t.chatRenderMode==="live")&&(o.chatRenderMode=t.chatRenderMode),typeof t.messageStreamTransport=="string"&&(t.messageStreamTransport==="auto"||t.messageStreamTransport==="ws"||t.messageStreamTransport==="sse")&&(o.messageStreamTransport=t.messageStreamTransport),typeof t.activityRenderMode=="string"&&(t.activityRenderMode==="collapsed"||t.activityRenderMode==="summary")&&(o.activityRenderMode=t.activityRenderMode),typeof t.mermaidRenderingMode=="string"&&(t.mermaidRenderingMode==="svg"||t.mermaidRenderingMode==="ascii")&&(o.mermaidRenderingMode=t.mermaidRenderingMode),typeof t.userMessageRenderingMode=="string"&&(t.userMessageRenderingMode==="markdown"||t.userMessageRenderingMode==="plain")&&(o.userMessageRenderingMode=t.userMessageRenderingMode),typeof t.collapsibleUserMessages=="boolean"&&(o.collapsibleUserMessages=t.collapsibleUserMessages),typeof t.stickyUserHeader=="boolean"&&(o.stickyUserHeader=t.stickyUserHeader),typeof t.promptNavigatorEnabled=="boolean"&&(o.promptNavigatorEnabled=t.promptNavigatorEnabled),typeof t.wideChatLayoutEnabled=="boolean"&&(o.wideChatLayoutEnabled=t.wideChatLayoutEnabled),typeof t.showSplitAssistantMessageActions=="boolean"&&(o.showSplitAssistantMessageActions=t.showSplitAssistantMessageActions),typeof t.fontSize=="number"&&Number.isFinite(t.fontSize)&&(o.fontSize=t.fontSize),typeof t.terminalFontSize=="number"&&Number.isFinite(t.terminalFontSize)&&(o.terminalFontSize=t.terminalFontSize),To(t.terminalShell)&&(o.terminalShell=t.terminalShell),Array.isArray(t.terminalLoginShells)&&(o.terminalLoginShells=[...new Set(t.terminalLoginShells.filter(To))]),typeof t.editorFontSize=="number"&&Number.isFinite(t.editorFontSize)&&(o.editorFontSize=t.editorFontSize),js(t.uiFont)&&(o.uiFont=t.uiFont),Hs(t.monoFont)&&(o.monoFont=t.monoFont),typeof t.padding=="number"&&Number.isFinite(t.padding)&&(o.padding=t.padding),typeof t.cornerRadius=="number"&&Number.isFinite(t.cornerRadius)&&(o.cornerRadius=t.cornerRadius),typeof t.inputBarOffset=="number"&&Number.isFinite(t.inputBarOffset)&&(o.inputBarOffset=t.inputBarOffset);const s=Pg(t.shortcutOverrides);s&&(o.shortcutOverrides=s),typeof t.mobileKeyboardMode=="string"&&(t.mobileKeyboardMode==="native"||t.mobileKeyboardMode==="resize-content")&&(o.mobileKeyboardMode=t.mobileKeyboardMode);const i=fr(t.favoriteModels,64);i&&(o.favoriteModels=i);const c=fr(t.hiddenModels,1024);c&&(o.hiddenModels=c);const d=Ir(t.collapsedModelProviders);d&&(o.collapsedModelProviders=d);const l=fr(t.recentModels,16);l&&(o.recentModels=l);const u=Ir(t.recentAgents);u&&(o.recentAgents=u);const m=Ig(t.recentEfforts);if(m&&(o.recentEfforts=m),typeof t.diffLayoutPreference=="string"&&(t.diffLayoutPreference==="dynamic"||t.diffLayoutPreference==="inline"||t.diffLayoutPreference==="side-by-side")&&(o.diffLayoutPreference=t.diffLayoutPreference),typeof t.gitChangesViewMode=="string"&&(t.gitChangesViewMode==="flat"||t.gitChangesViewMode==="tree")&&(o.gitChangesViewMode=t.gitChangesViewMode),typeof t.directoryShowHidden=="boolean"&&(o.directoryShowHidden=t.directoryShowHidden),typeof t.filesViewShowGitignored=="boolean"&&(o.filesViewShowGitignored=t.filesViewShowGitignored),typeof t.openInAppId=="string"&&t.openInAppId.length>0&&(o.openInAppId=t.openInAppId),typeof t.pwaAppName=="string"){const g=t.pwaAppName.trim().replace(/\s+/g," ").slice(0,64);o.pwaAppName=g.length>0?g:""}const p=Tg(t.skillCatalogs);return p&&(o.skillCatalogs=p),typeof t.reportUsage=="boolean"&&(o.reportUsage=t.reportUsage),typeof t.globalBehaviorPrompt=="string"&&(o.globalBehaviorPrompt=t.globalBehaviorPrompt),typeof t.responseStyleEnabled=="boolean"&&(o.responseStyleEnabled=t.responseStyleEnabled),typeof t.responseStylePreset=="string"&&(t.responseStylePreset==="concise"||t.responseStylePreset==="detailed"||t.responseStylePreset==="mentor"||t.responseStylePreset==="pushback"||t.responseStylePreset==="noFiller"||t.responseStylePreset==="matchEnergy"||t.responseStylePreset==="warmPeer"||t.responseStylePreset==="custom")&&(o.responseStylePreset=t.responseStylePreset),typeof t.responseStyleCustomInstructions=="string"&&(o.responseStyleCustomInstructions=t.responseStyleCustomInstructions),typeof t.dictationEnabled=="boolean"&&(o.dictationEnabled=t.dictationEnabled),t.sttProvider==="local"||t.sttProvider==="openai-compatible"?o.sttProvider=t.sttProvider:t.sttProvider==="server"?o.sttProvider="openai-compatible":(t.sttProvider==="browser"||t.sttProvider==="wasm")&&(o.sttProvider="local"),typeof t.sttServerUrl=="string"&&(o.sttServerUrl=t.sttServerUrl.trim()),typeof t.sttModel=="string"&&(o.sttModel=t.sttModel.trim()),typeof t.sttLocalModel=="string"&&(o.sttLocalModel=t.sttLocalModel.trim()),typeof t.sttLanguage=="string"&&(o.sttLanguage=t.sttLanguage.trim()),o};class Hg{revision=0;mutations=[];operations=new Set;record(t){if(this.revision+=1,this.operations.size>0){const o=this.mutations.at(-1),r=o?[...this.operations].some(n=>n.revision>=o.revision):!0;o&&!r?(o.revision=this.revision,o.changes={...o.changes,...t}):this.mutations.push({revision:this.revision,changes:t})}return this.revision}begin(t=this.revision){const o={revision:t};return this.operations.add(o),o}reconcile(t,o){let r=t;for(const n of this.mutations)n.revision<=o.revision||(r={...r,...n.changes});return r}finish(t){if(!this.operations.delete(t))return;if(this.operations.size===0){this.mutations=[];return}const o=Math.min(...[...this.operations].map(({revision:r})=>r));this.mutations=this.mutations.filter(r=>r.revision>o)}reset(){this.mutations=[],this.operations.clear()}}let fn=0,Pe=null,et=null,qe=null,rt=null,Fe=null,_r=[],ba=!1,Po=0;const Be=new Hg,zg=2e3,$g=200,mn=()=>({runtimeKey:H(),generation:fn}),Lr=(e,t)=>e.runtimeKey===t.runtimeKey&&e.generation===t.generation,V=e=>e.generation===fn&&e.runtimeKey===H(),Ot=()=>{qe&&(Fe&&(clearTimeout(Fe),Fe=null),Ro({keepalive:!0}))},gn=()=>{if(!(ba||typeof window>"u")){ba=!0,ud(e=>{e.runtimeKey!==e.previousRuntimeKey&&(Fe&&clearTimeout(Fe),qe&&Ro())}),ks(e=>{e.runtimeKey!==e.previousRuntimeKey&&(fn+=1,Be.reset(),Po=0,Pe=null,et=null)});try{window.addEventListener("pagehide",Ot,{capture:!0}),window.addEventListener("beforeunload",Ot,{capture:!0}),typeof document<"u"&&(document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ot()}),document.addEventListener("freeze",Ot)),$s()&&Gr(async()=>{const{App:e}=await import("./vendor-capacitor-app-BrDJj9I_.js");return{App:e}},__vite__mapDeps([3,4,5])).then(({App:e})=>e.addListener("appStateChange",({isActive:t})=>{t||Ot()})).catch(()=>{})}catch{}}},Wg=async(e=mn())=>{if(gn(),Pe&&Lr(Pe.context,e)&&Date.now()-Pe.at<zg)return Pe.value;if(et&&Lr(et.context,e))return et.promise;const t={context:e,promise:(async()=>{const o=ci();if(o)try{const r=await o.load();if(!V(e))return null;const n=Or(r.settings);return Pe={value:n,at:Date.now(),context:e},n}catch(r){if(!V(e))return null;console.warn("Failed to load shared settings from runtime settings API:",r)}if(!V(e))return null;try{const r=await f("/api/config/settings",{method:"GET",headers:{Accept:"application/json"}});if(!V(e)||!r.ok)return null;const n=await r.json().catch(()=>null);if(!V(e))return null;const a=Or(n);return Pe={value:a,at:Date.now(),context:e},a}catch(r){return V(e)&&console.warn("Failed to load shared settings from server:",r),null}})()};return et=t,t.promise.finally(()=>{et===t&&(et=null)}),t.promise},ny=async e=>{const t=e?.adoptWorkspace!==!1;if(typeof window>"u")return;gn();const o=mn(),r=Be.begin(),n=[ii(),Sr.persist],a=d=>!d?.hasHydrated||d.hasHydrated()||!d.onFinishHydration?Promise.resolve():new Promise(l=>{let u=!1;const m=()=>{u||(u=!0,l())},p=d.onFinishHydration(()=>{p?.(),m()});d.hasHydrated?.()&&m()}),s=()=>Promise.all(n.map(a)).then(()=>{}),i=d=>!qe||!rt||!V(rt)?d:{...d,...qe},c=async d=>{if(!V(o))return;let l=i(Be.reconcile(d,r));if(await s(),!V(o))return;l=i(Be.reconcile(d,r));const u=l.draftStartersCraftGoalAdded!==!0||l.draftStartersScheduleTaskAdded!==!0,m=typeof l.autoSaveEnabled!="boolean",p=l.sidebarProjectDisplayMode===void 0,g=l.sidebarSessionGroupingMode===void 0,w=l.sidebarProjectSortOrder===void 0,h=l.sidebarShowRecentSection===void 0,F=jg(l);try{Mg(l)}catch(I){console.warn("persistToLocalStorage failed:",I)}m&&(F.autoSaveEnabled=de.getState().autoSaveEnabled);const k=Sr.getState();p&&(F.sidebarProjectDisplayMode=k.projectDisplayMode),g&&(F.sidebarSessionGroupingMode=k.sessionGroupingMode),w&&(F.sidebarProjectSortOrder=k.projectSortOrder),h&&(F.sidebarShowRecentSection=k.showRecentSection),l.draftStarters===void 0&&de.setState({globalDraftStarters:null});try{xr(F)}catch(I){console.warn("applyDesktopUiPreferences failed:",I)}const E={};u&&(F.draftStarters&&(E.draftStarters=F.draftStarters),E.draftStartersCraftGoalAdded=!0,E.draftStartersScheduleTaskAdded=!0),m&&(E.autoSaveEnabled=F.autoSaveEnabled),p&&(E.sidebarProjectDisplayMode=F.sidebarProjectDisplayMode),g&&(E.sidebarSessionGroupingMode=F.sidebarSessionGroupingMode),w&&(E.sidebarProjectSortOrder=F.sidebarProjectSortOrder),h&&(E.sidebarShowRecentSection=F.sidebarShowRecentSection),!(Object.keys(E).length>0&&(await ke(E),!V(o)))&&Mr(F,t)};try{const d=await Wg(o);d&&V(o)&&await c(d)}catch(d){console.warn("Failed to synchronise settings:",d)}finally{Be.finish(r)}};async function Ro({keepalive:e=!1}={}){const t=qe,o=rt,r=Po,n=_r;qe=null,rt=null,Po=0,Fe=null,_r=[];try{if(!t||!o||Object.keys(t).length===0||!V(o)){Te("saved");return}const a=Be.begin(r);try{const s=ci();if(s)try{const i=await s.save(t);if(!V(o))return;if(i){const c=Be.reconcile(i,a);xr(c),Mr(c,!1),Pe=null}Te(i?"saved":"error");return}catch(i){if(!V(o))return;console.warn("Failed to update settings via runtime settings API:",i)}if(!V(o))return;try{const i=await f("/api/config/settings",{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t),keepalive:e});if(!V(o))return;if(!i.ok){console.warn("Failed to update shared settings via API:",i.status,i.statusText),Te("error");return}const c=Or(await i.json().catch(()=>null));if(!V(o))return;if(c){const d=Be.reconcile(c,a);xr(d),Mr(d,!1),Te("saved"),Pe=null}else Te("error")}catch(i){V(o)&&(console.warn("Failed to update shared settings via API:",i),Te("error"))}}finally{Be.finish(a)}}finally{n.forEach(a=>a())}}const ke=async e=>{if(typeof window>"u")return;gn();const t=mn();rt&&!Lr(rt,t)&&(Fe&&clearTimeout(Fe),Ro()),qe={...qe??{},...e},rt=t,Po=Be.record(e),Te("saving"),Fe&&clearTimeout(Fe);const o=new Promise(r=>{_r.push(r)});return Fe=setTimeout(()=>{Ro()},$g),o},ay=async()=>{if(typeof window>"u")return;const e=ii();try{const t=await ru();if(!t)return;const o=()=>ou(t);if(e?.hasHydrated?.()){o();return}if(o(),e?.onFinishHydration){const r=e.onFinishHydration(()=>{r?.(),o()})}}catch(t){console.warn("Failed to load appearance preferences:",t)}},Gg=3e4,qg=40,Kg=60,Vg=(e,t,o,r,n,a,s)=>{const i=t.trim(),c=o.trim().toLowerCase();return JSON.stringify([e,i,c,r,n,a,s])},wa=(e,t)=>{try{const o=JSON.parse(e);return Array.isArray(o)&&o[1]===t}catch{return!1}},Jg=ct()(Vt((e,t)=>({cache:{},cacheKeys:[],inFlight:{},async searchFiles(o,r,n=Kg,a){if(!o||o.trim().length===0)return[];const s=o.trim(),i=H(),c=typeof r=="string"?r.trim():"",d=!!a?.includeHidden,l=a?.respectGitignore??!0,u=a?.type==="directory"?"directory":"file",m=Vg(i,s,c,n,d,l,u),p=Date.now(),g=t().cache[m];if(g&&p-g.timestamp<Gg)return g.files;const w=t().inFlight[m];if(w)return w;const h=Ce.searchFiles(c,{directory:s,limit:n,includeHidden:d,respectGitignore:l,dirs:u!=="file",type:u}).then(F=>(e(k=>{if(k.inFlight[m]!==h)return k;const E={...k.cache,[m]:{files:F,timestamp:Date.now()}},I=k.cacheKeys.filter(ae=>ae!==m);for(I.push(m);I.length>qg;){const ae=I.shift();ae&&delete E[ae]}return{cache:E,cacheKeys:I}}),F)).finally(()=>{e(F=>{if(F.inFlight[m]!==h)return F;const k={...F.inFlight};return delete k[m],{inFlight:k}})});return e(F=>({inFlight:{...F.inFlight,[m]:h}})),h},invalidateDirectory(o){if(!o||o.trim().length===0){e({cache:{},cacheKeys:[],inFlight:{}});return}const r=o.trim();e(n=>{const a={...n.cache},s=n.cacheKeys.filter(d=>wa(d,r)?(delete a[d],!1):!0),i=Object.entries(n.inFlight).filter(([d])=>!wa(d,r)),c=Object.fromEntries(i);return{cache:a,cacheKeys:s,inFlight:c}})},resetForRuntimeSwitch(){e({cache:{},cacheKeys:[],inFlight:{}})}}),{name:"file-search-store"})),Yg=()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("aiworker_stream_debug")==="1"}catch{return!1}},Nr="aiworker_stream_perf",Qg=()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem(Nr)==="1"}catch{return!1}};let lt=Qg();const Aa=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),Xg=()=>{if(!lt||typeof window>"u")return null;if(!window.__aiworkerStreamPerfState){const e=Date.now();window.__aiworkerStreamPerfState={counters:new Map,startedAt:e,lastUpdatedAt:e}}return window.__aiworkerStreamPerfState},di=e=>Array.from(e.entries()).map(([t,o])=>({metric:t,count:o.count,avg:o.count>0?Number((o.total/o.count).toFixed(3)):0,max:Number(o.max.toFixed(3)),total:Number(o.total.toFixed(3)),last:Number(o.last.toFixed(3))})).sort((t,o)=>o.total-t.total||o.count-t.count),pn=(e,t)=>{const o=Xg();if(!o)return;const r=o.counters.get(e)??{count:0,total:0,max:0,last:0};r.count+=1,r.total+=t,r.max=Math.max(r.max,t),r.last=t,o.counters.set(e,r),o.lastUpdatedAt=Date.now()},Zg=e=>{if(lt=e,!(typeof window>"u"))try{if(e){window.localStorage.setItem(Nr,"1"),window.__aiworkerStreamPerfState={counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()};return}window.localStorage.removeItem(Nr),delete window.__aiworkerStreamPerfState,delete window.__aiworkerVsCodeStreamPerfState}catch{}},ep=()=>{typeof window>"u"||(lt&&(window.__aiworkerStreamPerfState={counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()}),window.__aiworkerVsCodeStreamPerfState&&(window.__aiworkerVsCodeStreamPerfState={...window.__aiworkerVsCodeStreamPerfState,counters:new Map,startedAt:Date.now(),lastUpdatedAt:Date.now()}))},tp=()=>{if(typeof window>"u")return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};const e=window.__aiworkerStreamPerfState;return!lt||!e?{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]}:{enabled:!0,startedAt:e.startedAt,lastUpdatedAt:e.lastUpdatedAt,durationMs:Math.max(0,Date.now()-e.startedAt),entries:di(e.counters)}},sy=()=>{if(typeof window>"u")return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};const e=window.__aiworkerVsCodeStreamPerfState;if(!lt||!e)return{enabled:!1,startedAt:null,lastUpdatedAt:null,durationMs:0,entries:[]};const t=typeof e.startedAt=="number"?e.startedAt:null,o=typeof e.lastUpdatedAt=="number"?e.lastUpdatedAt:null;return{enabled:!0,startedAt:t,lastUpdatedAt:o,durationMs:t?Math.max(0,Date.now()-t):0,entries:di(e.counters)}},iy=(e,t=1)=>{pn(e,t)},cy=(e,t)=>{pn(e,t)},dy=e=>{!lt||typeof performance>"u"||typeof performance.mark!="function"||performance.mark(`aiworker.${e}`)},ly=(e,t)=>{if(!lt)return t();const o=Aa();try{return t()}finally{pn(e,Aa()-o)}};typeof window<"u"&&(window.__aiworkerStreamPerformance={setEnabled:Zg,reset:ep,getSnapshot:tp});var op={};let ye=null,Ea=0;const he=Qt(),ka=he.getItem("lastDirectory"),rp=typeof ka=="string"&&ka.length>0,mo=e=>{try{Jg.getState().invalidateDirectory(e)}catch(t){console.warn("Failed to invalidate file search cache:",t)}},vt=e=>{const t=e.trim();if(!t)return t;const o=t.replace(/\\/g,"/").replace(/^([a-z]):/,(r,n)=>n.toUpperCase()+":");return o.length>1?o.replace(/\/+$/,""):o},np=(e,t)=>{const o=e.trim();return o.startsWith("~")?o==="~"?t||o:(o.startsWith("~/")||o.startsWith("~\\"))&&t?`${t}${o.slice(1)}`:o:o},yo=(e,t)=>{const o=np(e,t);return vt(o)},ap=()=>{const e=he.getItem("homeDirectory");if(typeof e!="string"||e.trim().length===0)return null;const t=vt(e);return t.length>0?t:null},sp=()=>{const e=he.getItem("lastDirectory");if(typeof e!="string"||e.trim().length===0)return null;const t=vt(e);return t.length>0?t:null},ip=()=>{if(typeof process>"u")return null;const e=op,t=e?.HOME||e?.USERPROFILE||(e?.HOMEDRIVE&&e?.HOMEPATH?`${e.HOMEDRIVE}${e.HOMEPATH}`:void 0);if(typeof t=="string"&&t.trim().length>0){const r=vt(t);return r.length>0?r:null}const o=process?.cwd?.();if(typeof o=="string"&&o.trim().length>0){const r=vt(o);return r.length>0?r:null}return null},Io=()=>{if(typeof window<"u"){if(ye)return ye;const t=typeof window.__AIWORKER_HOME__=="string"&&window.__AIWORKER_HOME__.length>0?window.__AIWORKER_HOME__:null;if(t&&t.length>0)return ye=t,he.setItem("homeDirectory",t),t;const o=ap();if(o&&!Oe())return ye=o,o}const e=ip();return e||"/"},cp=e=>{if(typeof e!="string")return null;const t=e.trim();if(!t)return null;const o=t.replace(/\\/g,"/");if(o.length>1){const r=o.replace(/\/+$/,"");if(r&&r.length>0)return r==="/"?null:r}return o==="/"||o.length===0?null:o},dp=e=>(ye=e,typeof window<"u"&&he.setItem("homeDirectory",e),ke({homeDirectory:e}),e),Ur=async()=>{const e=r=>{const n=cp(r);return n?dp(n):null};try{const r=await Ce.getFilesystemHome(),n=e(r);if(n)return n}catch(r){console.warn("Failed to obtain filesystem home directory:",r)}try{const r=await Ce.getSystemInfo(),n=e(r?.homeDirectory);if(n)return n}catch(r){console.warn("Failed to get home directory from system info:",r)}try{const r=await Ds(),n=e(r);if(n)return n}catch(r){console.warn("Failed to obtain desktop-integrated home directory:",r)}const t=Io(),o=e(t);return o||t},lp=()=>{if(!Oe())return null;const e=vs()?.workspaceFolder;if(typeof e!="string"||e.trim().length===0)return null;const t=vt(e);return t.length>0?t:null},Kt=lp()||Io(),xo=(()=>{const e=sp();return e&&!Oe()?yo(e,Kt):Kt})();xo&&Ce.setDirectory(xo);const up=!!(Kt&&Kt!=="/"),jr=ct()(Vt((e,t)=>({currentDirectory:xo,directoryHistory:[xo],historyIndex:0,homeDirectory:Kt,hasPersistedDirectory:rp,isHomeReady:up,isSwitchingDirectory:!1,setDirectory:(o,r)=>{const n=ye||t().homeDirectory||he.getItem("homeDirectory"),a=yo(o,n);Yg()&&console.log("[DirectoryStore] setDirectory called with path:",a),Ce.setDirectory(a),mo(),e(s=>{const i=[...s.directoryHistory.slice(0,s.historyIndex+1),a];return he.setItem("lastDirectory",a),ke({lastDirectory:a}),{currentDirectory:a,directoryHistory:i,historyIndex:i.length-1,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1}})},goBack:()=>{const o=t();if(o.historyIndex>0){const r=o.historyIndex-1,n=o.directoryHistory[r];Ce.setDirectory(n),mo(),he.setItem("lastDirectory",n),ke({lastDirectory:n}),e({currentDirectory:n,historyIndex:r,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1})}},goForward:()=>{const o=t();if(o.historyIndex<o.directoryHistory.length-1){const r=o.historyIndex+1,n=o.directoryHistory[r];Ce.setDirectory(n),mo(),he.setItem("lastDirectory",n),ke({lastDirectory:n}),e({currentDirectory:n,historyIndex:r,hasPersistedDirectory:!0,isHomeReady:!0,isSwitchingDirectory:!1})}},goToParent:()=>{const{currentDirectory:o,setDirectory:r}=t(),n=ye||t().homeDirectory||Io();if(o===n||o==="/")return;const a=o.endsWith("/")?o.slice(0,-1):o,s=a.lastIndexOf("/");if(s===-1){const i=ye||Io();r(i)}else r(s===0?"/":a.substring(0,s))},goHome:async()=>{const o=ye||t().homeDirectory||await Ur();t().setDirectory(o)},synchronizeHomeDirectory:o=>{const r=t(),n=o;ye=n;const a=r.homeDirectory!==n,s=he.getItem("lastDirectory"),i=typeof s=="string"&&s.length>0,c=!i&&(r.currentDirectory==="/"||r.currentDirectory===r.homeDirectory||!r.currentDirectory);if(!a&&!c){r.isHomeReady||e({isHomeReady:!0});return}const d=typeof n=="string"&&n!==""&&n!=="/",l=r.currentDirectory?yo(r.currentDirectory,n):r.currentDirectory,u=r.directoryHistory.map(w=>yo(w,n)),m=u.some((w,h)=>w!==r.directoryHistory[h]),p=!!(l&&l!==r.currentDirectory),g={homeDirectory:n,hasPersistedDirectory:i,isHomeReady:d};if(c?(g.currentDirectory=n,g.directoryHistory=[n],g.historyIndex=0,g.isSwitchingDirectory=!1):(p||m)&&(g.currentDirectory=l,g.directoryHistory=u,g.historyIndex=Math.min(r.historyIndex,u.length-1),g.isSwitchingDirectory=!1),e(()=>g),(c||p)&&d){const w=c?n:l;Ce.setDirectory(w),mo(),he.setItem("lastDirectory",w),ke({lastDirectory:w})}ke({homeDirectory:n})}}),{name:"directory-store"}));typeof window<"u"&&(Ur().then(e=>{jr.getState().synchronizeHomeDirectory(e)}),ks(()=>{ye=null;const e=++Ea;Ur().then(t=>{e===Ea&&jr.getState().synchronizeHomeDirectory(t)})}));const fp=(e,t)=>{const o=Lo();return o?o.openWebSocket(mc(e),t):Ec(new WebSocket(e))},li=1,Ca=512*1024,mp=0,Ft=1,gp=15e3,hn=new TextEncoder,ui=new TextDecoder,pp=e=>{const t=hn.encode(JSON.stringify(e)),o=new Uint8Array(t.length+1);return o[0]=li,o.set(t,1),o},hp=async e=>{let t;if(e instanceof ArrayBuffer)t=new Uint8Array(e);else if(e instanceof Uint8Array)t=e;else if(typeof Blob<"u"&&e instanceof Blob)t=new Uint8Array(await e.arrayBuffer());else if(typeof e=="string")t=hn.encode(e);else return null;t[0]===li&&(t=t.subarray(1));try{return JSON.parse(ui.decode(t))}catch{return null}},$o=async(e,t)=>{const o=await e.json().catch(()=>null);return new Error(typeof o?.error=="string"?o.error:t)},Fp=e=>{const t=hn.encode(e);if(t.byteLength<=Ca)return e;let o=t.byteLength-Ca;for(;o<t.byteLength&&(t[o]&192)===128;)o+=1;return ui.decode(t.subarray(o))};class fi{constructor(t={refreshAuth:jo,openSocket:()=>fp(ne().websocket("/api/terminal/ws")),clearUrlAuthToken:Jt}){this.dependencies=t}socket=null;opening=null;subscribers=new Map;projections=new Map;reconnectTimer=null;keepaliveTimer=null;idleCloseTimer=null;failures=0;wakeCleanup=null;generation=0;disposed=!1;subscribe(t,o){this.cancelIdleClose();const r={handlers:o,lastSequence:-1},n=this.subscribers.get(t)??new Set,a=n.size===0;n.add(r),this.subscribers.set(t,n);const s=this.projections.get(t);s&&(r.lastSequence=s.sequence,o.onEvent({type:"snapshot",sequence:s.sequence,data:s.history,status:s.status,exitCode:s.exitCode,signal:s.signal,runtime:s.runtime,ptyBackend:s.ptyBackend}));const i=this.socket?.readyState===Ft;return this.ensureConnected().then(()=>{const c=this.subscribers.get(t);a&&i&&c===n&&c.size>0&&this.send({t:"attach",v:3,s:t})}).catch(c=>{n.has(r)&&(o.onError?.(c,!1),this.scheduleReconnect())}),()=>{const c=this.subscribers.get(t);if(c?.delete(r),c?.size===0&&(this.subscribers.delete(t),this.projections.delete(t),this.send({t:"detach",v:3,s:t})),this.subscribers.size===0){if(this.cancelReconnect(),this.failures=0,this.socket?.readyState===Ft){this.scheduleIdleClose();return}this.generation+=1,this.opening=null,this.closeSocket()}}}async write(t,o){if(o&&(await this.ensureConnected(),!this.send({t:"write",v:3,s:t,d:o})&&(this.closeSocket(),await this.ensureConnected(),!this.send({t:"write",v:3,s:t,d:o}))))throw new Error("Terminal connection is unavailable")}dispose(){this.disposed=!0,this.generation+=1,this.opening=null,this.subscribers.clear(),this.projections.clear(),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.cancelIdleClose(),this.wakeCleanup?.(),this.wakeCleanup=null,this.closeSocket()}forget(t){this.projections.delete(t)}async ensureConnected(){if(this.disposed)throw new Error("Terminal runtime changed");if(this.socket?.readyState===Ft)return;if(this.opening)return await this.opening,this.socket?.readyState===Ft?void 0:this.ensureConnected();const t=this.generation,o=(async()=>{if(await this.dependencies.refreshAuth(),t!==this.generation||this.disposed)throw new Error("Terminal runtime changed");await new Promise((r,n)=>{let a=!1,s=!1,i=!1,c=null;const d=()=>t===this.generation&&!this.disposed&&c!==null&&this.socket===c,l=()=>{i||s||!d()||(i=!0,this.dependencies.clearUrlAuthToken?.())},u=p=>{a||(a=!0,clearTimeout(m),p?n(p):r())},m=setTimeout(()=>{l(),c?.close(),u(new Error("Terminal connection timed out"))},1e4);try{const p=this.dependencies.openSocket();c=p,p.binaryType="arraybuffer",this.socket=p,p.onopen=()=>{if(!d()){p.close(),u(new Error("Terminal runtime changed"));return}s=!0,this.failures=0,this.send({t:"hello",v:3});for(const g of this.subscribers.keys())this.send({t:"attach",v:3,s:g});this.startKeepalive(),u()},p.onmessage=g=>{this.handleMessage(g.data)},p.onerror=()=>{const g=d();g&&l(),u(new Error("Terminal WebSocket failed")),g&&this.subscribers.size>0&&this.scheduleReconnect()},p.onclose=()=>{const g=d();g&&(this.stopKeepalive(),l()),this.socket===p&&(this.socket=null),u(new Error("Terminal WebSocket closed")),g&&this.subscribers.size>0&&this.scheduleReconnect()}}catch(p){u(p instanceof Error?p:new Error("Terminal WebSocket failed")),!this.disposed&&this.subscribers.size>0&&this.scheduleReconnect()}})})();this.opening=o;try{await o}finally{this.opening===o&&(this.opening=null)}}async handleMessage(t){const o=await hp(t);if(!o||o.t==="hello"||o.t==="pong")return;if(o.t==="error"){const a=new Error(typeof o.message=="string"?o.message:"Terminal error");typeof o.code=="string"&&(a.code=o.code);const s=o.s?[o.s]:[...this.subscribers.keys()];for(const i of s)for(const c of this.subscribers.get(i)??[])c.handlers.onError?.(a,o.fatal===!0);return}if(!o.s)return;const r=this.subscribers.get(o.s);if(!r)return;if(o.t==="snapshot"){const a={sequence:typeof o.q=="number"?o.q:0,history:typeof o.history=="string"?o.history:"",status:o.status,exitCode:typeof o.exitCode=="number"?o.exitCode:void 0,signal:typeof o.signal=="number"?o.signal:null,runtime:o.runtime,ptyBackend:typeof o.ptyBackend=="string"?o.ptyBackend:void 0};this.projections.set(o.s,a);for(const s of r)s.lastSequence=a.sequence,s.handlers.onEvent({type:"snapshot",sequence:a.sequence,data:a.history,status:a.status,exitCode:a.exitCode,signal:a.signal,runtime:a.runtime,ptyBackend:a.ptyBackend});return}if(typeof o.q!="number")return;const n=this.projections.get(o.s);n&&o.q>n.sequence&&(o.t==="output"?this.projections.set(o.s,{...n,sequence:o.q,history:Fp(n.history+(typeof o.r=="string"?o.r:typeof o.d=="string"?o.d:""))}):o.t==="exit"?this.projections.set(o.s,{...n,sequence:o.q,status:"exited",exitCode:typeof o.exitCode=="number"?o.exitCode:void 0,signal:typeof o.signal=="number"?o.signal:null}):o.t==="restarted"&&this.projections.set(o.s,{...n,sequence:o.q,history:typeof o.history=="string"?o.history:"",status:"running",exitCode:void 0,signal:null}));for(const a of r)o.q<=a.lastSequence||(a.lastSequence=o.q,o.t==="output"?a.handlers.onEvent({type:"data",sequence:o.q,data:typeof o.d=="string"?o.d:"",replayData:typeof o.r=="string"?o.r:void 0}):o.t==="exit"?a.handlers.onEvent({type:"exit",sequence:o.q,exitCode:typeof o.exitCode=="number"?o.exitCode:void 0,signal:typeof o.signal=="number"?o.signal:null}):o.t==="restarted"&&a.handlers.onEvent({type:"snapshot",sequence:o.q,data:typeof o.history=="string"?o.history:"",status:"running"}))}send(t){if(!this.socket||this.socket.readyState!==Ft)return!1;try{return this.socket.send(pp(t)),!0}catch{return!1}}scheduleReconnect(){if(this.reconnectTimer||this.disposed||this.subscribers.size===0)return;this.failures+=1;const o=typeof document<"u"&&document.visibilityState==="hidden"||typeof navigator<"u"&&!navigator.onLine?6e4:Math.min(500*2**Math.min(this.failures-1,10),8e3);for(const n of this.subscribers.values())for(const a of n)a.handlers.onEvent({type:"reconnecting",attempt:this.failures,maxAttempts:Number.POSITIVE_INFINITY});const r=()=>{typeof document<"u"&&document.visibilityState==="hidden"||typeof navigator<"u"&&!navigator.onLine||(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.wakeCleanup?.(),this.wakeCleanup=null,this.ensureConnected().catch(()=>this.scheduleReconnect()))};typeof window<"u"&&window.addEventListener("online",r),typeof document<"u"&&document.addEventListener("visibilitychange",r),this.wakeCleanup=()=>{typeof window<"u"&&window.removeEventListener("online",r),typeof document<"u"&&document.removeEventListener("visibilitychange",r)},this.reconnectTimer=setTimeout(r,o)}scheduleIdleClose(){this.idleCloseTimer||this.disposed||(this.idleCloseTimer=setTimeout(()=>{this.idleCloseTimer=null,!(this.disposed||this.subscribers.size>0)&&(this.generation+=1,this.opening=null,this.closeSocket())},gp))}cancelIdleClose(){this.idleCloseTimer&&(clearTimeout(this.idleCloseTimer),this.idleCloseTimer=null)}startKeepalive(){this.stopKeepalive(),this.keepaliveTimer=setInterval(()=>this.send({t:"ping",v:3}),45e3)}stopKeepalive(){this.keepaliveTimer&&clearInterval(this.keepaliveTimer),this.keepaliveTimer=null}cancelReconnect(){this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.wakeCleanup?.(),this.wakeCleanup=null}closeSocket(){this.stopKeepalive();const t=this.socket;this.socket=null,t&&(t.readyState===mp||t.readyState===Ft)&&t.close()}}let it=new fi;async function yp(e){const t=await f("/api/terminal/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await $o(t,"Failed to create terminal session");return t.json()}async function bp(e){const t=await f(`/api/terminal/sessions?cwd=${encodeURIComponent(e)}`);if(!t.ok)throw await $o(t,"Failed to list terminal sessions");const o=await t.json().catch(()=>null),r=o&&typeof o=="object"&&"sessions"in o?o.sessions:null;if(!Array.isArray(r))throw new Error("Failed to list terminal sessions");const n=[];for(const a of r){if(typeof a!="object"||a===null)continue;const s=a;typeof s.sessionId!="string"||typeof s.cwd!="string"||s.status!=="running"&&s.status!=="exited"||n.push({sessionId:s.sessionId,cwd:s.cwd,status:s.status,createdAt:typeof s.createdAt=="number"?s.createdAt:null})}return n}async function wp(e){e.length!==0&&await Tt("/api/terminal/touch","POST",{sessionIds:e})}async function Ap(){const e=await f("/api/terminal/shells");if(!e.ok)throw await $o(e,"Failed to list terminal shells");const t=await e.json().catch(()=>[]);return Array.isArray(t)?t.filter(o=>o&&typeof o=="object"&&To(o.id)&&typeof o.name=="string"&&typeof o.supportsLogin=="boolean"):[]}function Ep(e,t,o){return it.subscribe(e,{onEvent:t,onError:o})}async function kp(e,t){await it.write(e,t)}async function Tt(e,t,o){const r={method:t};o!==void 0&&(r.headers={"Content-Type":"application/json"},r.body=JSON.stringify(o));const n=await f(e,r);if(!n.ok)throw await $o(n,"Terminal command failed");return n}async function Cp(e,t,o){await Tt(`/api/terminal/${e}/resize`,"POST",{cols:t,rows:o})}async function Bp(e,t){await Tt(`/api/terminal/${e}/appearance`,"POST",t)}async function vp(e){await Tt(`/api/terminal/${e}`,"DELETE"),it.forget(e)}async function Dp(e,t){return(await Tt(`/api/terminal/${e}/restart`,"POST",t)).json()}async function Sp(e){const o=await(await Tt("/api/terminal/force-kill","POST",e)).json().catch(()=>null);if(Array.isArray(o?.killedSessionIds))for(const r of o.killedSessionIds)typeof r=="string"&&it.forget(r);else e.sessionId&&it.forget(e.sessionId)}function uy(){it.dispose(),it=new fi}const Mp=()=>({async listShells(){return Ap()},async listSessions(e){return bp(e)},async touchSessions(e){await wp(e)},async createSession(e){return yp(e)},connect(e,t){const o=Ep(e,t.onEvent,t.onError);return{close:()=>o()}},async sendInput(e,t){await kp(e,t)},async resize(e){await Cp(e.sessionId,e.cols,e.rows)},async updateAppearance(e,t){await Bp(e,t)},async close(e){await vp(e)},async restartSession(e,t){return Dp(e,{cwd:t.cwd??"",cols:t.cols,rows:t.rows,themeMode:t.themeMode,terminalBackground:t.terminalBackground,terminalForeground:t.terminalForeground,shell:t.shell,loginShell:t.loginShell})},async forceKill(e){await Sp(e)}}),Hr=new Set,fy=e=>(Hr.add(e),()=>{Hr.delete(e)}),Tp=e=>{for(const t of Hr)t(e)},y="/api/git",Pp=1200,Rp=5e3,zr=new Map,_t=new Map,mi=new Map,Ba=new Map,go=new Map,gi=e=>e.trim(),Fn=(e,t)=>JSON.stringify([e,gi(t)]),pi=(e,t,o)=>JSON.stringify([e,gi(t),o??"full"]),$r=(e,t)=>mi.get(Fn(e,t))??0,Zt=e=>{const t=H(),o=Fn(t,e);mi.set(o,$r(t,e)+1);for(const r of[void 0,"light"]){const n=pi(t,e,r);zr.delete(n),_t.delete(n)}Tp(e)},L=async(e,t)=>{const o=await t.json();return Zt(e),o};function b(e,t,o){const r={...o};return t&&(r.directory=t),ne().api(e,r)}async function Ip(e){const t=Fn(H(),e),o=Date.now(),r=Ba.get(t);if(r&&r.expiresAt>o)return r.value;const n=go.get(t);if(n)return n;const a=(async()=>{const s=await f(b(`${y}/check`,e));if(!s.ok)throw new Error(`Failed to check git repository: ${s.statusText}`);const c=!!(await s.json()).isGitRepository;return Ba.set(t,{value:c,expiresAt:Date.now()+Rp}),c})();go.set(t,a);try{return await a}finally{go.get(t)===a&&go.delete(t)}}class xp extends Error{constructor(){super("Nested git repository discovery is not supported by this runtime"),this.name="GitDirectoriesUnsupportedError"}}async function my(e){const t=await f("/api/fs/git-dirs",{query:{path:e}});if(t.status===501)throw new xp;if(!t.ok)throw new Error(`Failed to list git directories: ${t.statusText}`);const o=await t.json();if(!Array.isArray(o?.repositories))throw new Error("Unexpected git directories response");return o.repositories.map(r=>Zs(r?.path??null)).filter(r=>r!==null)}async function Op(e,t){const o=t?.mode,r=H(),n=pi(r,e,o),a=Date.now(),s=zr.get(n);if(s&&s.expiresAt>a)return s.value;const i=_t.get(n);if(i)return i;const c=(async()=>{const d=$r(r,e),l=await f(b(`${y}/status`,e,o?{mode:o}:void 0));if(!l.ok)throw new Error(`Failed to get git status: ${l.statusText}`);const u=await l.json();return $r(r,e)===d&&zr.set(n,{value:u,expiresAt:Date.now()+Pp}),u})();_t.set(n,c);try{return await c}finally{_t.get(n)===c&&_t.delete(n)}}async function gy(e){const t=await f(b(`${y}/primary-root`,e));if(!t.ok)throw new Error(`Failed to resolve git primary root: ${t.statusText}`);const o=await t.json().catch(()=>({}));return{root:typeof o.root=="string"&&o.root?o.root:e}}async function py(e){const t=await f(b(`${y}/toplevel`,e));if(!t.ok)throw new Error(`Failed to resolve git toplevel: ${t.statusText}`);const o=await t.json().catch(()=>({}));return{root:typeof o.root=="string"&&o.root?o.root:e}}async function hy(e,t){const o=await f(b(`${y}/commit-summaries`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shas:t})});if(!o.ok)throw new Error(`Failed to get git commit summaries: ${o.statusText}`);const r=await o.json().catch(()=>({}));return{commits:Array.isArray(r.commits)?r.commits.map(n=>({sha:typeof n.sha=="string"?n.sha:"",short:typeof n.short=="string"?n.short:"",subject:typeof n.subject=="string"?n.subject:""})).filter(n=>n.sha&&n.short):[]}}async function _p(e,t){const{path:o,staged:r,contextLines:n}=t;if(!o)throw new Error("path is required to fetch git diff");const a=await f(b(`${y}/diff`,e,{path:o,staged:r?"true":void 0,context:n}));if(!a.ok)throw new Error(`Failed to get git diff: ${a.statusText}`);return a.json()}async function Lp(e,t){const{base:o,head:r,path:n,contextLines:a}=t;if(!o||!r)throw new Error("base and head are required to fetch git range diff");const s=await f(b(`${y}/range-diff`,e,{base:o,head:r,path:n||void 0,context:a}));if(!s.ok)throw new Error(`Failed to get git range diff: ${s.statusText}`);return s.json()}async function Np(e,t){const{base:o,head:r}=t;if(!o||!r)throw new Error("base and head are required to fetch git range files");const n=await f(b(`${y}/range-files`,e,{base:o,head:r}));if(!n.ok)throw new Error(`Failed to get git range files: ${n.statusText}`);const a=await n.json();return Array.isArray(a.files)?a.files.filter(s=>{if(!s||typeof s!="object")return!1;const i=s;return typeof i.path=="string"&&typeof i.status=="string"}):[]}async function Up(e,t){if(!t)throw new Error("branch is required to get branch base");const o=await f(b(`${y}/branch-base`,e,{branch:t}));if(!o.ok)throw new Error(`Failed to get branch base: ${o.statusText}`);return o.json()}async function jp(e,t){const{path:o,staged:r}=t;if(!o)throw new Error("path is required to fetch git file diff");const n=await f(b(`${y}/file-diff`,e,{path:o,staged:r?"true":void 0}));if(!n.ok)throw new Error(`Failed to get git file diff: ${n.statusText}`);return n.json()}async function Hp(e,t,o){if(!t)throw new Error("path is required to revert git changes");const r=await f(b(`${y}/revert`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,scope:o?.scope})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to revert git changes")}Zt(e)}async function zp(e,t){await hi(e,[t])}async function hi(e,t){const o=t.map(n=>n.trim()).filter(Boolean);if(o.length===0)throw new Error("path is required to stage git changes");const r=await f(b(`${y}/stage`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:o})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to stage git changes")}Zt(e)}async function $p(e,t){await Fi(e,[t])}async function Fi(e,t){const o=t.map(n=>n.trim()).filter(Boolean);if(o.length===0)throw new Error("path is required to unstage git changes");const r=await f(b(`${y}/unstage`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:o})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to unstage git changes")}Zt(e)}async function Wp(e,t,o){await yn(e,t,o,"stage")}async function Gp(e,t,o){await yn(e,t,o,"unstage")}async function qp(e,t,o){await yn(e,t,o,"discard")}async function yn(e,t,o,r){if(!t)throw new Error("path is required to apply a git hunk");if(typeof o!="string"||!o.trim())throw new Error("patch is required to apply a git hunk");const n=await f(b(`${y}/apply-hunk`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,patch:o,action:r})});if(!n.ok){const a=await n.json().catch(()=>({error:n.statusText}));throw new Error(a.error||"Failed to apply git hunk")}Zt(e)}async function Kp(e){if(!e)return!1;const t=await f(b(`${y}/worktree-type`,e));if(!t.ok)throw new Error(`Failed to detect worktree type: ${t.statusText}`);return!!(await t.json()).linked}async function Vp(e){const t=await f(b(`${y}/branches`,e));if(!t.ok)throw new Error(`Failed to get branches: ${t.statusText}`);return t.json()}async function Jp(e,t){if(!t?.branch)throw new Error("branch is required to delete a branch");const o=await f(b(`${y}/branches`,e),{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to delete branch")}return L(e,o)}async function Yp(e,t){if(!t?.branch)throw new Error("branch is required to delete remote branch");const o=await f(b(`${y}/remote-branches`,e),{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to delete remote branch")}return L(e,o)}async function Qp(e,t){const o=t?.remote?.trim();if(!o)throw new Error("remote is required to remove a remote");const r=await f(b(`${y}/remotes`,e),{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({remote:o})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to remove remote")}return L(e,r)}async function Xp(e,t,o){if(!Array.isArray(t)||t.length===0)throw new Error("No files provided to generate commit message");const r={files:t};o?.zenModel&&(r.zenModel=o.zenModel),o?.providerId&&(r.providerId=o.providerId),o?.modelId&&(r.modelId=o.modelId);const n=await f(b(`${y}/commit-message`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!n.ok){const c=await n.json().catch(()=>({error:n.statusText}));console.error("[git-generation][browser] http error",{status:n.status,statusText:n.statusText,error:c});const d=typeof c?.traceId=="string"&&c.traceId?` (traceId: ${c.traceId})`:"";throw new Error(`${c.error||"Failed to generate commit message"}${d}`)}const a=await n.json();if(!a?.message||typeof a.message!="object")throw new Error("Malformed commit generation response");const s=typeof a.message.subject=="string"&&a.message.subject.trim().length>0?a.message.subject.trim():"",i=Array.isArray(a.message.highlights)?a.message.highlights.filter(c=>typeof c=="string"&&c.trim().length>0).map(c=>c.trim()):[];return{message:{subject:s,highlights:i}}}async function Zp(e,t){const{base:o,head:r,context:n,zenModel:a,providerId:s,modelId:i}=t;if(!o||!r)throw new Error("base and head are required");const c={base:o,head:r};n?.trim()&&(c.context=n.trim()),a&&(c.zenModel=a),s&&(c.providerId=s),i&&(c.modelId=i);const d=await f(b(`${y}/pr-description`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!d.ok){const p=await d.json().catch(()=>({error:d.statusText}));throw new Error(p.error||"Failed to generate PR description")}const l=await d.json().catch(()=>null),u=typeof l?.title=="string"?l.title:"",m=typeof l?.body=="string"?l.body:"";if(!u&&!m)throw new Error("Malformed PR description response");return{title:u,body:m}}async function va(e){const t=await f(b(`${y}/worktrees`,e));if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to list worktrees")}return t.json()}async function Da(e,t){const o=await f(b(`${y}/worktrees/validate`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t??{})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to validate worktree")}return o.json()}async function eh(e){const t=await f(b(`${y}/worktrees/bootstrap-status`,e));if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to get worktree bootstrap status")}return t.json()}async function th(e,t){const o=await f(b(`${y}/worktrees/preview`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t??{})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to preview worktree")}return o.json()}async function Sa(e,t){const o=await f(b(`${y}/worktrees`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t??{})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to create worktree")}return o.json()}async function Ma(e,t){const o=await f(b(`${y}/worktrees`,e),{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t??{})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to delete worktree")}return o.json()}async function oh(e,t,o={}){const r=await f(b(`${y}/commit`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t,addAll:o.addAll??!1,files:o.files,stageFiles:o.stageFiles})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to create commit")}return L(e,r)}async function rh(e,t={}){const o=await f(b(`${y}/push`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to push")}return L(e,o)}async function nh(e,t={}){const o=await f(b(`${y}/pull`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to pull")}return L(e,o)}async function ah(e,t={}){const o=await f(b(`${y}/fetch`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to fetch")}return L(e,o)}async function sh(e){const t=await f(b(`${y}/stashes`,e));if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to list stashes")}return t.json()}async function ih(e,t){const o=await f(b(`${y}/stashes/file-counts`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refs:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to count stash files")}return o.json()}async function yi(e,t={}){const o=await f(b(`${y}/stash`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to stash changes")}return L(e,o)}const bn=async(e,t,o)=>{const r=await f(b(`${y}/${t}`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||`Failed to ${t}`)}return L(e,r)},ch=(e,t)=>bn(e,"stash/apply",t),bi=(e,t)=>bn(e,"stash/pop",t),dh=(e,t)=>bn(e,"stash/drop",t);async function lh(e,t){const o=await f(b(`${y}/checkout`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({branch:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to checkout branch")}return L(e,o)}async function uh(e,t,o){const r=await f(b(`${y}/branches`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,startPoint:o})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to create branch")}return L(e,r)}async function fh(e,t,o){const r=await f(b(`${y}/branches/rename`,e),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({oldName:t,newName:o})});if(!r.ok){const n=await r.json().catch(()=>({error:r.statusText}));throw new Error(n.error||"Failed to rename branch")}return L(e,r)}async function mh(e,t={}){const o=await f(b(`${y}/log`,e,{maxCount:t.maxCount,from:t.from,to:t.to,file:t.file,all:t.all?"true":void 0}));if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(`Failed to get git log: ${r.error||o.statusText}`)}return o.json()}async function gh(e,t){const o=await f(b(`${y}/commit-files`,e,{hash:t}));if(!o.ok)throw new Error(`Failed to get commit files: ${o.statusText}`);return o.json()}async function Fy(e,t,o,r){const n=await f(b(`${y}/commit-file-diff`,e,{hash:t,path:o,binary:r?"true":void 0}));if(!n.ok)throw new Error(`Failed to get commit file diff: ${n.statusText}`);return n.json()}async function ph(){const e=await f(b(`${y}/identities`,void 0));if(!e.ok)throw new Error(`Failed to get git identities: ${e.statusText}`);return e.json()}async function hh(e){const t=await f(b(`${y}/identities`,void 0),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to create git identity")}return t.json()}async function Fh(e,t){const o=await f(b(`${y}/identities/${e}`,void 0),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to update git identity")}return o.json()}async function yh(e){const t=await f(b(`${y}/identities/${e}`,void 0),{method:"DELETE"});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to delete git identity")}}async function bh(e){if(!e)return null;const t=await f(b(`${y}/current-identity`,e));if(!t.ok)throw new Error(`Failed to get current git identity: ${t.statusText}`);const o=await t.json();return o?{userName:o.userName??null,userEmail:o.userEmail??null,sshCommand:o.sshCommand??null}:null}async function wh(e){if(!e)return!1;const t=await f(b(`${y}/has-local-identity`,e));if(!t.ok)throw new Error(`Failed to check local identity: ${t.statusText}`);return(await t.json().catch(()=>null))?.hasLocalIdentity===!0}async function yy(){const e=await f(b(`${y}/global-identity`,void 0));if(!e.ok)throw new Error(`Failed to get global git identity: ${e.statusText}`);const t=await e.json();return!t||!t.userName&&!t.userEmail?null:{userName:t.userName??null,userEmail:t.userEmail??null,sshCommand:t.sshCommand??null}}async function Ah(e,t){const o=await f(b(`${y}/set-identity`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to set git identity")}return o.json()}async function by(){const e=await f(b(`${y}/discover-credentials`,void 0));if(!e.ok)throw new Error(`Failed to discover git credentials: ${e.statusText}`);return e.json()}async function wy(e,t){if(!e)return null;const o=await f(b(`${y}/remote-url`,e,{remote:t}));return o.ok?(await o.json()).url??null:null}async function Eh(e){const t=await f(b(`${y}/remotes`,e));if(!t.ok)throw new Error(`Failed to get remotes: ${t.statusText}`);return t.json()}async function kh(e,t){const o=await f(b(`${y}/rebase`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to rebase")}return L(e,o)}async function Ch(e){const t=await f(b(`${y}/rebase/abort`,e),{method:"POST"});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to abort rebase")}return L(e,t)}async function Bh(e,t){const o=await f(b(`${y}/merge`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to merge")}return L(e,o)}async function vh(e,t){const o=await f(b(`${y}/checkout-commit`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to checkout commit")}return L(e,o)}async function Dh(e,t){const o=await f(b(`${y}/cherry-pick`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to cherry-pick")}return L(e,o)}async function Sh(e,t){const o=await f(b(`${y}/revert-commit`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:t})});if(!o.ok){const r=await o.json().catch(()=>({error:o.statusText}));throw new Error(r.error||"Failed to revert commit")}return L(e,o)}async function Mh(e,t,o,r){const n=await f(b(`${y}/reset-to-commit`,e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:t,mode:o,force:r})});if(!n.ok){const a=await n.json().catch(()=>({error:n.statusText}));throw new Error(a.error||"Failed to reset")}return L(e,n)}async function Th(e){const t=await f(b(`${y}/merge/abort`,e),{method:"POST"});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to abort merge")}return L(e,t)}async function Ph(e){const t=await f(b(`${y}/rebase/continue`,e),{method:"POST"});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to continue rebase")}return L(e,t)}async function Rh(e){const t=await f(b(`${y}/merge/continue`,e),{method:"POST"});if(!t.ok){const o=await t.json().catch(()=>({error:t.statusText}));throw new Error(o.error||"Failed to continue merge")}return L(e,t)}async function Ih(e,t){return await yi(e,{message:t?.message}),{success:!0}}async function xh(e){return await bi(e,{ref:"stash@{0}"}),{success:!0}}async function Oh(e){const t=await f(b(`${y}/conflict-details`,e));if(!t.ok)throw new Error(`Failed to get conflict details: ${t.statusText}`);return t.json()}async function _h(e,t){const o=await f(`${y}/validate-directory`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({directory:e,worktreeRoot:t})});if(!o.ok)throw new Error(`Failed to validate worktree directory: ${o.statusText}`);return o.json()}async function Lh(e){const t=await f(`${y}/canonicalize-worktree-state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({directory:e})});if(!t.ok)throw new Error(`Failed to canonicalize worktree state: ${t.statusText}`);return t.json()}const Nh=()=>({checkIsGitRepository:Ip,getGitStatus:Op,getGitDiff:_p,getGitFileDiff:jp,getGitRangeDiff:Lp,getGitRangeFiles:Np,getBranchBase:Up,revertGitFile:Hp,stageGitFile:zp,stageGitFiles:hi,unstageGitFile:$p,unstageGitFiles:Fi,stageGitHunk:Wp,unstageGitHunk:Gp,revertGitHunk:qp,isLinkedWorktree:Kp,getGitBranches:Vp,deleteGitBranch:Jp,deleteRemoteBranch:Yp,removeRemote:Qp,generateCommitMessage:Xp,generatePullRequestDescription:Zp,listGitWorktrees:va,validateGitWorktree:Da,createGitWorktree:Sa,deleteGitWorktree:Ma,validateWorktreeDirectory:_h,canonicalizeWorktreeState:Lh,createGitCommit(e,t,o){return oh(e,t,o)},gitPush:rh,gitPull:nh,gitFetch:ah,listGitStashes:sh,countGitStashFiles:ih,stashGitChanges:yi,applyGitStash:ch,popGitStash:bi,dropGitStash:dh,checkoutBranch:lh,createBranch:uh,renameBranch:fh,getGitLog(e,t){return mh(e,t)},getCommitFiles:gh,getCurrentGitIdentity:bh,hasLocalIdentity:wh,setGitIdentity:Ah,getGitIdentities:ph,createGitIdentity:hh,updateGitIdentity:Fh,deleteGitIdentity:yh,getRemotes:Eh,rebase:kh,abortRebase:Ch,continueRebase:Ph,merge:Bh,abortMerge:Th,continueMerge:Rh,checkoutCommit:vh,cherryPick:Dh,revertCommit:Sh,resetToCommit:Mh,stash:Ih,stashPop:xh,getConflictDetails:Oh,worktree:{list:va,validate:Da,bootstrapStatus:eh,preview:th,create:Sa,remove:Ma}}),q=e=>e.replace(/\\/g,"/"),Uh=(e,t)=>{if(!t||!Array.isArray(t.entries))throw new Ge("Directory listing returned an invalid response",{reason:"invalid-response"});return{directory:q(t?.directory||t?.path||e),entries:t.entries.filter(r=>!!(r&&typeof r.name=="string"&&typeof r.path=="string")).map(r=>({name:r.name,path:q(r.path),isDirectory:!!r.isDirectory}))}},ge=(e,t)=>{const o=t||e?.();return o?{"x-opencode-directory":o}:void 0},jh=({getDirectory:e})=>({async listDirectory(t,o){const r=q(t),n=new URLSearchParams;r&&n.set("path",r),o?.respectGitignore&&n.set("respectGitignore","true");const a=await f("/api/fs/list",{query:n,headers:ge(e)});if(!a.ok){const i=await a.json().catch(()=>({error:a.statusText}));throw new Ge(i.error||"Failed to list directory",{reason:kr(i.reason),status:a.status})}const s=await a.json();return Uh(r,s)},async search(t){const o=new URLSearchParams,r=q(t.directory);r&&o.set("directory",r),o.set("query",t.query),o.set("dirs","false"),o.set("type","file"),typeof t.maxResults=="number"&&Number.isFinite(t.maxResults)&&o.set("limit",String(t.maxResults));const n=await f("/api/find/file",{query:o,headers:ge(e)});if(!n.ok){const i=await n.json().catch(()=>({error:n.statusText}));throw new Error(i.error||"Failed to search files")}const a=await n.json();return(Array.isArray(a)?a:[]).map(i=>({path:q(`${r}/${i}`),preview:[q(i)]}))},async createDirectory(t){const o=q(t),r=await f("/api/fs/mkdir",{method:"POST",headers:{"Content-Type":"application/json",...ge(e)},body:JSON.stringify({path:o})});if(!r.ok){const a=await r.json().catch(()=>({error:r.statusText}));throw new Error(a.error||"Failed to create directory")}const n=await r.json();return{success:!!n?.success,path:typeof n?.path=="string"?q(n.path):o}},async statFile(t,o){const r=q(t),n=new URLSearchParams({path:r});o?.allowOutsideWorkspace&&n.set("allowOutsideWorkspace","true"),o?.outsideFileGrant&&n.set("outsideFileGrant",o.outsideFileGrant);const a=await f("/api/fs/stat",{query:n,headers:ge(e,o?.directory)});if(!a.ok){const i=await a.json().catch(()=>({error:a.statusText}));throw new Error(i.error||"Failed to stat file")}const s=await a.json().catch(()=>({}));return{path:typeof s.path=="string"?q(s.path):r,isFile:!!s.isFile,size:typeof s.size=="number"?s.size:0,mtimeMs:typeof s.mtimeMs=="number"?s.mtimeMs:void 0}},async readFile(t,o){const r=q(t),n=new URLSearchParams({path:r});o?.allowOutsideWorkspace&&n.set("allowOutsideWorkspace","true"),o?.outsideFileGrant&&n.set("outsideFileGrant",o.outsideFileGrant),o?.optional&&n.set("optional","true");const a=await f("/api/fs/read",{query:n,cache:o?.optional?"no-store":"default",headers:ge(e,o?.directory)});if(!a.ok){const i=await a.json().catch(()=>({error:a.statusText}));throw new Error(i.error||"Failed to read file")}return{content:await a.text(),path:r}},async writeFile(t,o){const r=q(t),n=await f("/api/fs/write",{method:"POST",headers:{"Content-Type":"application/json",...ge(e)},body:JSON.stringify({path:r,content:o})});if(!n.ok){const s=await n.json().catch(()=>({error:n.statusText}));throw new Error(s.error||"Failed to write file")}const a=await n.json().catch(()=>({}));return{success:!!a.success,path:typeof a.path=="string"?q(a.path):r}},async uploadFile(t,o,r){const n=q(t),a=await f("/api/fs/upload",{method:"POST",query:{path:n,overwrite:r?.overwrite?"true":void 0},headers:{"Content-Type":"application/octet-stream",...ge(e,r?.directory)},body:o});if(!a.ok){const i=await a.json().catch(()=>({error:a.statusText}));throw new Ge(i.error||"Failed to upload file",{reason:kr(i.reason),status:a.status})}const s=await a.json().catch(()=>({}));return{success:!!s.success,path:s.path?q(s.path):n}},async delete(t){const o=q(t),r=await f("/api/fs/delete",{method:"POST",headers:{"Content-Type":"application/json",...ge(e)},body:JSON.stringify({path:o})});if(!r.ok){const a=await r.json().catch(()=>({error:r.statusText}));throw new Error(a.error||"Failed to delete file")}return{success:!!(await r.json().catch(()=>({}))).success}},async rename(t,o){const r=await f("/api/fs/rename",{method:"POST",headers:{"Content-Type":"application/json",...ge(e)},body:JSON.stringify({oldPath:t,newPath:o})});if(!r.ok){const a=await r.json().catch(()=>({error:r.statusText}));throw new Error(a.error||"Failed to rename file")}const n=await r.json().catch(()=>({}));return{success:!!n.success,path:typeof n.path=="string"?q(n.path):o}},async revealPath(t){const o=await f("/api/fs/reveal",{method:"POST",headers:{"Content-Type":"application/json",...ge(e)},body:JSON.stringify({path:q(t)})});if(!o.ok){const n=await o.json().catch(()=>({error:o.statusText}));throw new Error(n.error||"Failed to reveal path")}return{success:!!(await o.json().catch(()=>({}))).success}},async downloadFile(t){const o=q(t),r=await f("/api/fs/raw",{query:{path:o,download:!0},headers:ge(e)});if(!r.ok)throw new Error(`Download failed (${r.status})`);const n=await r.blob(),a=o.split("/").pop()||"file",s=window.Capacitor,i=new File([n],a,{type:n.type||"application/octet-stream"});if(s?.isNativePlatform?.()===!0&&navigator.canShare?.({files:[i]})){await navigator.share({files:[i]});return}const c=URL.createObjectURL(n),d=document.createElement("a");d.href=c,d.download=a,document.body.appendChild(d),d.click(),document.body.removeChild(d),setTimeout(()=>URL.revokeObjectURL(c),100)}}),Ta="/api/config/settings",Hh="/api/config/reload",Pa=e=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Invalid settings response");return e},zh=()=>({async load(){const e=await f(Ta,{method:"GET",headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`Failed to load settings: ${e.statusText}`);return{settings:Pa(await e.json()),source:"web"}},async save(e){const t=await f(Ta,{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e)});if(!t.ok){const r=await t.json().catch(()=>({error:t.statusText}));throw new Error(r.error||"Failed to save settings")}return Pa(await t.json())},async restartOpenCode(){const e=await f(Hh,{method:"POST"});if(!e.ok){const t=await e.json().catch(()=>({error:e.statusText}));throw new Error(t.error||"Failed to restart OpenCode")}return{restarted:!0}}}),$h=()=>({async requestDirectoryAccess(e){return{success:!0,path:e.path}},async startAccessingDirectory(e){return{success:!0}},async stopAccessingDirectory(e){return{success:!0}}}),Wh=1500,Wr=5e3,Gh="openchamber-notification-claim:",jt=new Map,qh=()=>typeof document>"u"?!0:document.visibilityState==="visible"&&document.hasFocus(),Kh=e=>{const t=typeof e?.tag=="string"?e.tag.trim():"";return t||[e?.sessionId,e?.kind,e?.title,e?.body].filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>o.trim()).join("|")},Vh=e=>{for(const[t,o]of jt)e-o>Wr&&jt.delete(t)},Jh=e=>{const t=Kh(e);if(!t)return!0;const o=Date.now();Vh(o);const r=jt.get(t)??0;if(o-r<Wr)return!1;try{if(typeof window<"u"&&window.localStorage){const n=`${Gh}${t}`,a=Number(window.localStorage.getItem(n)??"0");if(Number.isFinite(a)&&o-a<Wr)return jt.set(t,a),!1;Number.isFinite(a)&&a>0&&window.localStorage.removeItem(n),window.localStorage.setItem(n,String(o))}}catch{}return jt.set(t,o),!0},wi=async()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return null;let e=null;try{e=await navigator.serviceWorker.getRegistration()??null}catch{e=null}if(e?.active)return e;if(!e)return null;try{return await Promise.race([navigator.serviceWorker.ready,new Promise(o=>{setTimeout(()=>o(null),Wh)})])??e}catch{return e}},Yh=async e=>{const t=await wi();if(!t||typeof t.showNotification!="function")return!1;try{return await t.showNotification(e?.title??"AiWorker",{body:e?.body,tag:e?.tag}),!0}catch(o){return console.warn("Failed to send notification via service worker",o),!1}},Qh=async()=>{const e=await wi();if(!e||!("pushManager"in e)||!e.pushManager)return!1;try{return!!await e.pushManager.getSubscription()}catch{return!1}},Xh=async e=>{if(e?.requireHidden&&typeof document<"u"&&document.hasFocus())return!0;if(typeof Notification>"u")return console.info("Notifications not supported in this environment",e),!1;if(Notification.permission==="default"&&await Notification.requestPermission()!=="granted"||Notification.permission!=="granted")return console.warn("Notification permission not granted"),!1;if(!qh()&&await Qh()||!Jh(e))return!0;try{return await Yh(e)||new Notification(e?.title??"AiWorker",{body:e?.body,tag:e?.tag}),!0}catch(t){return console.warn("Failed to send notification",t),!1}},Zh=async e=>{if(typeof window>"u")return!1;const t=window.__AIWORKER_DESKTOP__;if(!t?.invoke)return!1;try{return await t.invoke("desktop_notify",{payload:{title:e?.title,body:e?.body,tag:e?.tag,kind:e?.kind,sessionId:e?.sessionId,directory:e?.directory,requireHidden:e?.requireHidden}}),!0}catch(o){return console.warn("Failed to send native notification (desktop)",o),!1}},eF=()=>({async notifyAgentCompletion(e){return await Zh(e)||await Xh(e)},canNotify:()=>typeof window<"u"&&window.__AIWORKER_DESKTOP__?.invoke?!0:typeof Notification<"u"?Notification.permission==="granted":!1}),tF=()=>({async getAvailableTools(){const e=await f("/api/experimental/tool/ids");if(!e.ok)throw new Error(`Tools API returned ${e.status} ${e.statusText}`);const t=await e.json();if(!Array.isArray(t))throw new Error("Tools API returned invalid data format");return t.filter(o=>typeof o=="string"&&o!=="invalid").sort()}}),yt=async(e,t)=>{try{const o=await f(e,{...t,credentials:"include",headers:{Accept:"application/json",...t?.headers??{}}});return o.ok?await o.json():null}catch{return null}},oF=()=>({async getVapidPublicKey(){return yt("/api/push/vapid-public-key")},async subscribe(e){return yt("/api/push/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})},async unsubscribe(e){return yt("/api/push/subscribe",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})},async setVisibility(e){return yt("/api/push/visibility",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0})},async registerApnsToken(e){return yt("/api/push/apns-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})},async unregisterApnsToken(e){return yt("/api/push/apns-token",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}),G=async e=>await e.json().catch(()=>null),rF=({urls:e})=>({async authStatus(){const t=await f("/api/github/auth/status",{method:"GET",headers:{Accept:"application/json"}}),o=await G(t);if(!t.ok||!o)throw new Error(o?.error||t.statusText||"Failed to load GitHub status");return o},async authStart(){const t=await f("/api/github/auth/start",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({})}),o=await G(t);if(!t.ok||!o||!("deviceCode"in o))throw new Error(o?.error||t.statusText||"Failed to start GitHub auth");return o},async authComplete(t){const o=await f("/api/github/auth/complete",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({deviceCode:t})}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to complete GitHub auth");return r},async authDisconnect(){const t=await f("/api/github/auth",{method:"DELETE",headers:{Accept:"application/json"}}),o=await G(t);if(!t.ok)throw new Error(o?.error||t.statusText||"Failed to disconnect GitHub");return{removed:!!o?.removed}},async authActivate(t){const o=await f("/api/github/auth/activate",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({accountId:t})}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to activate GitHub account");return r},async authSetGhCliDisabled(t){const o=await f("/api/github/auth/gh-cli",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({disabled:t})}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to update gh CLI setting");return{disabled:!!r.disabled}},async me(){const t=await f("/api/github/me",{method:"GET",headers:{Accept:"application/json"}}),o=await G(t);if(!t.ok||!o)throw new Error(o?.error||t.statusText||"Failed to fetch GitHub user");return o},async prStatus(t,o,r,n){const a=new URLSearchParams({directory:t,branch:o,...r?{remote:r}:{},...n?.force?{force:"true"}:{}}),s=await f(`/api/github/pr/status?${a.toString()}`,{method:"GET",headers:{Accept:"application/json"}}),i=await G(s);if(!s.ok||!i)throw new Error(i?.error||s.statusText||"Failed to load PR status");return i},async prCreate(t){const o=await f("/api/github/pr/create",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t)}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to create PR");return r},async prUpdate(t){const o=await f("/api/github/pr/update",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t)}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to update PR");return r},async prMerge(t){const o=await f("/api/github/pr/merge",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t)}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to merge PR");return r},async prReady(t){const o=await f("/api/github/pr/ready",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(t)}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to mark PR ready");return r},async repoUpstream(t){const o=await f(`/api/github/repo/upstream?directory=${encodeURIComponent(t)}`,{method:"GET",headers:{Accept:"application/json"}}),r=await G(o);if(!o.ok||!r)throw new Error(r?.error||o.statusText||"Failed to detect upstream repo");return r},async repoBranches(t,o){const r=await f(`/api/github/repo/branches?owner=${encodeURIComponent(t)}&repo=${encodeURIComponent(o)}`,{method:"GET",headers:{Accept:"application/json"}}),n=await G(r);if(!r.ok||!n)throw new Error(n?.error||r.statusText||"Failed to fetch repo branches");return n.branches??[]},async prsList(t,o){const r=o?.page??1,n=new URLSearchParams({directory:t,page:String(r)});o?.query&&n.set("query",o.query);const a=await f(`/api/github/pulls/list?${n.toString()}`,{method:"GET",headers:{Accept:"application/json"}}),s=await G(a);if(!a.ok||!s)throw new Error(s?.error||a.statusText||"Failed to load pull requests");return s},async prContext(t,o,r){const n=new URLSearchParams({directory:t,number:String(o)});r?.includeDiff&&n.set("diff","1"),r?.includeCheckDetails&&n.set("checkDetails","1"),r?.sourceRepo?.owner&&r.sourceRepo.repo&&(n.set("owner",r.sourceRepo.owner),n.set("repo",r.sourceRepo.repo));const a=await f(e.api("/api/github/pulls/context",n),{method:"GET",headers:{Accept:"application/json"}}),s=await G(a);if(!a.ok||!s)throw new Error(s?.error||a.statusText||"Failed to load pull request context");return s},async issuesList(t,o){const r=o?.page??1,n=new URLSearchParams({directory:t,page:String(r)});o?.query&&n.set("query",o.query);const a=await f(`/api/github/issues/list?${n.toString()}`,{method:"GET",headers:{Accept:"application/json"}}),s=await G(a);if(!a.ok||!s)throw new Error(s?.error||a.statusText||"Failed to load issues");return s},async issueGet(t,o,r){const n=new URLSearchParams({directory:t,number:String(o)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(n.set("owner",r.sourceRepo.owner),n.set("repo",r.sourceRepo.repo));const a=await f(e.api("/api/github/issues/get",n),{method:"GET",headers:{Accept:"application/json"}}),s=await G(a);if(!a.ok||!s)throw new Error(s?.error||a.statusText||"Failed to load issue");return s},async issueComments(t,o,r){const n=new URLSearchParams({directory:t,number:String(o)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(n.set("owner",r.sourceRepo.owner),n.set("repo",r.sourceRepo.repo));const a=await f(e.api("/api/github/issues/comments",n),{method:"GET",headers:{Accept:"application/json"}}),s=await G(a);if(!a.ok||!s)throw new Error(s?.error||a.statusText||"Failed to load issue comments");return s}});async function ie(e){try{return await e.json()}catch{return null}}function ce(e,t){return e?.error?.trim()||t}function Ai(e){return Number.isFinite(e)?e??null:null}function Ei(e){return Object.prototype.toString.call(e)==="[object String]"?`${e}`:null}function ki(e){const t=e?.id?.trim();return t?{id:t,name:e?.name?.trim()||null,displayName:e?.displayName?.trim()||null,email:e?.email?.trim()||null,avatarUrl:e?.avatarUrl?.trim()||null}:null}function nF(e){const t=e?.id?.trim(),o=e?.name?.trim();return!t||!o?null:{id:t,name:o,urlKey:e?.urlKey?.trim()||null}}function aF(e){const t=e?.id?.trim();if(!t)return null;const o=e?.authorizedAt;return{id:t,name:e?.name?.trim()||null,urlKey:e?.urlKey?.trim()||null,current:e?.current===!0,user:ki(e?.user),authorizedAt:Ai(o)}}function Ra(e){if(e?.connected!==!0&&e?.connected!==!1)return null;const t=Array.isArray(e.workspaces)?e.workspaces.map(aF).filter(o=>o!=null):[];return{connected:e.connected,user:ki(e.user),organization:nF(e.organization),scope:e.scope?.trim()||void 0,workspaces:e.connected?t:void 0}}function sF(e){const t=e?.authorizationUrl?.trim(),o=e?.expiresIn,r=e?.scope?.trim();return!t||!Number.isFinite(o)||o==null||!r?null:{authorizationUrl:t,expiresIn:o,scope:r}}function iF(e){const t=e?.id?.trim()||null,o=e?.name?.trim()||null,r=e?.type?.trim()||null;return!t&&!o&&!r?null:{id:t,name:o,type:r}}function cF(e){const t=e?.id?.trim(),o=e?.name?.trim();if(!t||!o)return null;const r=e?.position;return{id:t,name:o,type:e?.type?.trim()||null,position:Ai(r)??0}}function dF(e){const t=e?.name?.trim()||null,o=e?.displayName?.trim()||null,r=e?.avatarUrl?.trim()||null;return!t&&!o&&!r?null:{name:t,displayName:o,avatarUrl:r}}function lF(e){const t=e?.id?.trim(),o=e?.key?.trim(),r=e?.name?.trim();return!t||!o||!r?null:{id:t,key:o,name:r}}function uF(e){return e!==0&&e!==1&&e!==2&&e!==3&&e!==4?null:e}function fF(e){const t=e?.trim();if(!t)return null;const o=t.startsWith("#")?t.slice(1):t;return/^[0-9A-Fa-f]{6}$/.test(o)?`#${o.toLowerCase()}`:null}function mF(e){if(!e)return null;const t=e?.id?.trim(),o=e?.name?.trim();return!t||!o?null:{id:t,name:o,color:fF(e.color)}}function gF(e){return Array.isArray(e)?e.map(mF).filter(t=>t!=null):[]}function Ci(e){if(!e)return null;const t=e?.id?.trim(),o=e?.identifier?.trim(),r=e?.title?.trim(),n=e?.url?.trim();return!t||!o||!r||!n?null:{id:t,identifier:o,title:r,url:n,state:iF(e.state),assignee:dF(e.assignee),team:lF(e.team),priority:uF(e.priority),labels:gF(e.labels)}}function pF(e){const t=e?.id?.trim();if(!t)return null;const o=e?.body;return{id:t,body:Ei(o)??"",createdAt:e?.createdAt?.trim()||null,user:e?.user?{name:e.user.name?.trim()||null,displayName:e.user.displayName?.trim()||null,avatarUrl:e.user.avatarUrl?.trim()||null}:null}}function Bi(e){const t=Ci(e);if(!t)return null;const o=Array.isArray(e?.comments)?e.comments.map(pF).filter(n=>n!=null):[],r=e?.description;return{...t,description:Ei(r),comments:o}}function hF(e){return e?.connected!==!0&&e?.connected!==!1?null:e.connected===!1?{connected:!1}:{connected:!0,issues:Array.isArray(e.issues)?e.issues.map(Ci).filter(o=>o!=null):[],cursor:e.cursor?.trim()||null,hasMore:e.hasMore===!0}}function FF(e){return e?.connected!==!0&&e?.connected!==!1?null:e.connected===!1?{connected:!1}:{connected:!0,issue:Bi(e.issue)}}function yF(e){return e?.connected!==!0&&e?.connected!==!1?null:e.connected===!1?{connected:!1}:{connected:!0,states:Array.isArray(e.states)?e.states.map(cF).filter(o=>o!=null):[]}}function bF(e){return e?.connected!==!0&&e?.connected!==!1?null:e.connected===!1?{connected:!1}:{connected:!0,issue:Bi(e.issue)}}function wF(e){const t=e?.id?.trim(),o=e?.key?.trim(),r=e?.name?.trim();if(!t||!o||!r)return null;const n=e?.projectPath?.trim()||null;return{id:t,key:o,name:r,projectPath:n}}function Ia(e){if(e?.connected!==!0&&e?.connected!==!1)return null;if(e.connected===!1)return{connected:!1};const t=Array.isArray(e.teams)?e.teams.map(wF).filter(o=>o!=null):[];return{connected:!0,defaultProjectPath:e.defaultProjectPath?.trim()||null,teams:t}}const AF=["already-posted","issue-not-found","not-started","disabled","origin-not-public"];function EF(e){return AF.find(t=>t===e)??null}function xa(e){return e?.sessionComments!==!0&&e?.sessionComments!==!1?null:{sessionComments:e.sessionComments}}function kF(e){if(e?.connected!==!0&&e?.connected!==!1)return null;if(e.connected===!1)return{connected:!1};if(e.posted===!0)return{connected:!0,posted:!0,commentId:e.commentId?.trim()||null};const t=EF(e.skipped);return e.posted===!1&&t?{connected:!0,posted:!1,skipped:t}:null}const CF=()=>({async authStatus(){const e=await f("/api/linear/auth/status",{method:"GET",headers:{Accept:"application/json"}}),t=await ie(e),o=Ra(t);if(!e.ok||!o)throw new Error(ce(t,e.statusText||"Failed to load Linear status"));return o},async authStart(e){const t=await f("/api/linear/auth/start",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e?{origin:e}:{})}),o=await ie(t),r=sF(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to start Linear auth"));return r},async authDisconnect(){const e=await f("/api/linear/auth",{method:"DELETE",headers:{Accept:"application/json"}}),t=await ie(e);if(!e.ok)throw new Error(ce(t,e.statusText||"Failed to disconnect Linear"));return{removed:t?.removed===!0}},async authActivate(e){const t=await f("/api/linear/auth/activate",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({organizationId:e})}),o=await ie(t),r=Ra(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to switch Linear workspace"));return r},async issuesList(e){const t=new URLSearchParams,o=e?.query?.trim(),r=e?.cursor?.trim(),n=e?.status?.trim(),a=e?.assignee?.trim(),s=e?.teamId?.trim(),i=e?.priority?.trim();o&&t.set("query",o),r&&t.set("cursor",r),n&&t.set("status",n),a&&t.set("assignee",a),s&&t.set("teamId",s),i&&t.set("priority",i);const c=t.toString(),d=c?`?${c}`:"",l=await f(`/api/linear/issues/list${d}`,{method:"GET",headers:{Accept:"application/json"}}),u=await ie(l),m=hF(u);if(!l.ok||!m)throw new Error(ce(u,l.statusText||"Failed to load Linear issues"));return m},async issueGet(e){const t=new URLSearchParams({id:e}),o=await f(`/api/linear/issues/get?${t.toString()}`,{method:"GET",headers:{Accept:"application/json"}}),r=await ie(o),n=FF(r);if(!o.ok||!n)throw new Error(ce(r,o.statusText||"Failed to load Linear issue"));return n},async issueStates(e){const t=new URLSearchParams({teamId:e}),o=await f(`/api/linear/issues/states?${t.toString()}`,{method:"GET",headers:{Accept:"application/json"}}),r=await ie(o),n=yF(r);if(!o.ok||!n)throw new Error(ce(r,o.statusText||"Failed to load Linear workflow states"));return n},async issueUpdate(e){const t=await f("/api/linear/issues/update",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:e.id,stateId:e.stateId})}),o=await ie(t),r=bF(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to update Linear issue"));return r},async mappingGet(){const e=await f("/api/linear/mapping",{method:"GET",headers:{Accept:"application/json"}}),t=await ie(e),o=Ia(t);if(!e.ok||!o)throw new Error(ce(t,e.statusText||"Failed to load Linear mapping"));return o},async mappingSet(e){const t=await f("/api/linear/mapping",{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({defaultProjectPath:e.defaultProjectPath,teamProjectPaths:e.teamProjectPaths})}),o=await ie(t),r=Ia(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to save Linear mapping"));return r},async sessionStatusPost(e){const t=await f("/api/linear/session-status",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({kind:e.kind,sessionId:e.sessionId,issueIdentifier:e.issueIdentifier,sessionOrigin:e.sessionOrigin})}),o=await ie(t),r=kF(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to post Linear session status"));return r},async preferencesGet(){const e=await f("/api/linear/preferences",{method:"GET",headers:{Accept:"application/json"}}),t=await ie(e),o=xa(t);if(!e.ok||!o)throw new Error(ce(t,e.statusText||"Failed to load Linear preferences"));return o},async preferencesSet(e){const t=await f("/api/linear/preferences",{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({sessionComments:e.sessionComments})}),o=await ie(t),r=xa(o);if(!t.ok||!r)throw new Error(ce(o,t.statusText||"Failed to save Linear preferences"));return r}}),Ne=async e=>await e.json().catch(()=>null),BF=()=>({async listClients(){const e=await f("/api/client-auth/clients",{method:"GET",headers:{Accept:"application/json"}}),t=await Ne(e);if(!e.ok||!t)throw new Error(t?.error||e.statusText||"Failed to load remote clients");return Array.isArray(t.clients)?t.clients:[]},async createClient(e={}){const t=await f("/api/client-auth/clients",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({label:e.label??""})}),o=await Ne(t);if(!t.ok||!o?.client||typeof o.token!="string")throw new Error(o?.error||t.statusText||"Failed to create remote client token");return o},async createPairingSession(e={}){const t=await f("/api/client-auth/pairing/sessions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({label:e.label??"",...e.allowedClientKinds?{allowedClientKinds:e.allowedClientKinds}:{},...e.serverUrl?{serverUrl:e.serverUrl}:{},...typeof e.includeRelay=="boolean"?{includeRelay:e.includeRelay}:{},...typeof e.includeDirect=="boolean"?{includeDirect:e.includeDirect}:{}})}),o=await Ne(t);if(!t.ok||typeof o?.pairing?.secret!="string"||!o?.server)throw new Error(o?.error||t.statusText||"Failed to create pairing session");return o},async listPendingPairings(){const e=await f("/api/client-auth/pairing/sessions",{method:"GET",headers:{Accept:"application/json"}}),t=await Ne(e);if(!e.ok||!t)throw new Error(t?.error||e.statusText||"Failed to load pending pairings");return Array.isArray(t.pending)?t.pending:[]},async getPairingTransports(){const e=await f("/api/client-auth/pairing/transports",{method:"GET",headers:{Accept:"application/json"}}),t=await Ne(e);if(!e.ok||!t)throw new Error(t?.error||e.statusText||"Failed to load pairing transports");return{local:t.local??null,lan:t.lan??null,relayAvailable:t.relayAvailable!==!1}},async cancelPairing(e){const t=await f(`/api/client-auth/pairing/sessions/${encodeURIComponent(e)}`,{method:"DELETE",headers:{Accept:"application/json"}}),o=await Ne(t);if(!t.ok||!o)throw new Error(o?.error||t.statusText||"Failed to cancel pairing");return{cancelled:o.cancelled===!0}},async revokeClient(e){const t=await f(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:"DELETE",headers:{Accept:"application/json"}}),o=await Ne(t);if(!t.ok||!o)throw new Error(o?.error||t.statusText||"Failed to revoke remote client");return o},async purgeRevokedClients(){const e=await f("/api/client-auth/clients",{method:"DELETE",headers:{Accept:"application/json"}}),t=await Ne(e);if(!e.ok||!t)throw new Error(t?.error||e.statusText||"Failed to clear revoked clients");return t}}),vF=()=>({api:(...e)=>ne().api(...e),authenticatedAsset:(...e)=>ne().authenticatedAsset(...e),auth:(...e)=>ne().auth(...e),health:(...e)=>ne().health(...e),rawFile:(...e)=>ne().rawFile(...e),sse:(...e)=>ne().sse(...e),websocket:(...e)=>ne().websocket(...e)}),DF=(e={})=>{const t=e.urls??Qr();Yc(t);const o=vF();return{runtime:{platform:"web",isDesktop:!1,isVSCode:!1,label:"web"},terminal:Mp(),git:Nh(),files:jh({getDirectory:()=>jr.getState().currentDirectory}),settings:zh(),permissions:$h(),notifications:eF(),github:rF({urls:o}),linear:CF(),push:oF(),clientAuth:BF(),tools:tF()}},Oa=(e,t)=>{if(!e||!t)return!1;try{return new URL(e).origin===new URL(t).origin}catch{return!1}},SF=()=>{const e=t=>typeof t=="string"?t.trim():"";return{apiBaseUrl:e(window.__AIWORKER_API_BASE_URL__),clientToken:e(window.__AIWORKER_CLIENT_TOKEN__),localOrigin:e(window.__AIWORKER_LOCAL_ORIGIN__),runtimeHeaders:window.__AIWORKER_RUNTIME_HEADERS__,relayHostId:e(window.__AIWORKER_RELAY_HOST_ID__)}};let vi=Promise.resolve();const Ay=()=>vi,Ey=e=>{const{apiBaseUrl:t,clientToken:o,localOrigin:r,runtimeHeaders:n,relayHostId:a,relay:s}=e??SF(),i=e?null:Bs(),c=a||(i?.target==="remote"?i.hostId:""),d=gs({apiBaseUrl:t||void 0,realtimeBaseUrl:t||void 0});return ld({apiBaseUrl:t,runtimeKey:Oa(t,r)?"local":c?`host:${c}`:null}),os(o||null),rs(n||null),s&&Bo({apiBaseUrl:t,clientToken:o||null,requestHeaders:n||null,runtimeKey:a?`host:${a}`:null,relay:s}),Ce.reconnectToRuntimeBaseUrl(),jo(t||void 0).catch(()=>{}),r&&!Oa(t,r)&&Object.keys(Uo()).length>0&&ds(r).catch(()=>{}),bs(),vi=s?Promise.resolve():Promise.race([Kd(a||void 0).catch(()=>{}),new Promise(l=>{window.setTimeout(l,1e4)})]).then(()=>{Ce.reconnectToRuntimeBaseUrl()}),DF({urls:d})};export{o0 as $,te as A,h0 as B,kd as C,Eg as D,p0 as E,Oe as F,g0 as G,Zs as H,iy as I,St as J,Ms as K,Ld as L,cd as M,z as N,Ag as O,ns as P,t0 as Q,r0 as R,$0 as S,W0 as T,Jg as U,M0 as V,ne as W,an as X,Uo as Y,xF as Z,H0 as _,H as a,ih as a$,ke as a0,Sr as a1,dy as a2,wd as a3,n0 as a4,tp as a5,sy as a6,ep as a7,C0 as a8,Ud as a9,pd as aA,vs as aB,yl as aC,Yg as aD,P0 as aE,Ns as aF,Kl as aG,Jl as aH,yc as aI,Ja as aJ,ud as aK,eh as aL,ri as aM,Ds as aN,jo as aO,Jt as aP,fp as aQ,Th as aR,Ch as aS,ch as aT,Lh as aU,Ip as aV,lh as aW,vh as aX,Dh as aY,Rh as aZ,Ph as a_,_0 as aa,pe as ab,T0 as ac,gd as ad,Bs as ae,HF as af,Zg as ag,U0 as ah,zF as ai,$F as aj,f0 as ak,X0 as al,u0 as am,d0 as an,l0 as ao,Yt as ap,ry as aq,i0 as ar,c0 as as,a0 as at,Dl as au,Ml as av,uy as aw,GF as ax,qF as ay,KF as az,Ll as b,jF as b$,uh as b0,oh as b1,hh as b2,Sa as b3,Jp as b4,yh as b5,Ma as b6,Yp as b7,by as b8,dh as b9,bi as bA,th as bB,kh as bC,Qp as bD,fh as bE,Mh as bF,gy as bG,py as bH,Sh as bI,Hp as bJ,qp as bK,Ah as bL,zp as bM,hi as bN,Wp as bO,Ih as bP,yi as bQ,xh as bR,$p as bS,Fi as bT,Gp as bU,Fh as bV,_h as bW,Tp as bX,ee as bY,L0 as bZ,kl as b_,Up as ba,Fy as bb,gh as bc,Oh as bd,bh as be,Vp as bf,hy as bg,_p as bh,jp as bi,ph as bj,mh as bk,Lp as bl,Np as bm,Op as bn,yy as bo,wy as bp,Eh as bq,Da as br,va as bs,ah as bt,nh as bu,rh as bv,wh as bw,Kp as bx,sh as by,Bh as bz,Ey as c,ey as c$,wg as c0,si as c1,ai as c2,Dr as c3,Xt as c4,j0 as c5,be as c6,jd as c7,v0 as c8,Ts as c9,R0 as cA,I0 as cB,O0 as cC,z0 as cD,vl as cE,Sl as cF,oy as cG,ty as cH,Hd as cI,Id as cJ,b0 as cK,w0 as cL,m0 as cM,Zl as cN,N0 as cO,Cl as cP,Bl as cQ,To as cR,Ql as cS,zo as cT,_l as cU,VF as cV,YF as cW,XF as cX,JF as cY,QF as cZ,ZF as c_,k0 as ca,S0 as cb,D0 as cc,B0 as cd,qd as ce,UF as cf,co as cg,dr as ch,cy as ci,my as cj,xp as ck,fy as cl,s0 as cm,Se as cn,G0 as co,K0 as cp,Q0 as cq,V0 as cr,q0 as cs,J0 as ct,oi as cu,Y0 as cv,ly as cw,e0 as cx,x0 as cy,Is as cz,Qt as d,y0 as d0,Z0 as d1,kg as d2,LF as d3,NF as d4,F0 as d5,E0 as d6,Do as d7,on as e,OF as f,Ay as g,_F as h,$s as i,Kr as j,Ue as k,A0 as l,jr as m,Ol as n,Ho as o,Td as p,Ao as q,f as r,Bo as s,WF as t,de as u,ks as v,Ce as w,ay as x,ny as y,Mt as z};