@openchambery/web 1.18.2-beta.30 → 1.18.2-beta.32

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 (86) hide show
  1. package/dist/assets/{AgentAvatar-B4fj9PIe.js → AgentAvatar-SFzXgOdv.js} +1 -1
  2. package/dist/assets/AssistantView-BhLt99kH.js +1 -0
  3. package/dist/assets/{ChatContainer-BXit8m8H.js → ChatContainer-BlmxfoFd.js} +40 -40
  4. package/dist/assets/{DiagramView-BdhMAzT0.js → DiagramView-cv-vQB2f.js} +1 -1
  5. package/dist/assets/{FadeInOnReveal-CKKU6fKI.js → FadeInOnReveal-9uJN0g-H.js} +1 -1
  6. package/dist/assets/{Icon-DiIuWOuC.js → Icon-CBdklpKH.js} +1 -1
  7. package/dist/assets/{MarkdownRendererImpl-BtmidffL.js → MarkdownRendererImpl-ClKjHmC-.js} +1 -1
  8. package/dist/assets/{MobileDetailNavigation-UU07EhGy.js → MobileDetailNavigation-CeBAGm8g.js} +1 -1
  9. package/dist/assets/{MobileShareBridge-CIwA1gVb.js → MobileShareBridge-CPF_cu0F.js} +1 -1
  10. package/dist/assets/MobileSurface-RC5BWA3I.js +2 -0
  11. package/dist/assets/{MultiRunWindow-DCOP8Gcw.js → MultiRunWindow-S_3yVTw5.js} +1 -1
  12. package/dist/assets/{OnboardingScreen-CW21rCqC.js → OnboardingScreen-gMGdBXkS.js} +1 -1
  13. package/dist/assets/{OverlayScrollbar-isP804Zw.js → OverlayScrollbar-C3WqFk2J.js} +1 -1
  14. package/dist/assets/{SettingsView-sUF6jjPL.js → SettingsView-CAKZZQz7.js} +6 -6
  15. package/dist/assets/{SettingsWindow--LlmgmdV.js → SettingsWindow-CG98Gozw.js} +1 -1
  16. package/dist/assets/{TerminalView-cFZkmAgN.js → TerminalView-BdiPDeDu.js} +1 -1
  17. package/dist/assets/{ToolOutputDialog-BElR7uDu.js → ToolOutputDialog-D-6Ezjqs.js} +1 -1
  18. package/dist/assets/{appThemeRegistry-BG1qltDX.js → appThemeRegistry-DawdCrT-.js} +2 -2
  19. package/dist/assets/{button-DaAoVF4X.js → button-DimCg1lF.js} +1 -1
  20. package/dist/assets/{clipboard-ByPKHEt8.js → clipboard-DD27ttLy.js} +1 -1
  21. package/dist/assets/{collapsible-BmuQu0dq.js → collapsible-CF7TDu-T.js} +1 -1
  22. package/dist/assets/{context-menu-DlxAp9du.js → context-menu-DB0-VukO.js} +1 -1
  23. package/dist/assets/{desktopHosts-ZK_vkdzL.js → desktopHosts-Tqz56Y0u.js} +1 -1
  24. package/dist/assets/{desktopRelayRestore-CewM6-g5.js → desktopRelayRestore-DgHC01I5.js} +1 -1
  25. package/dist/assets/{diagram-DAE4CZy2.js → diagram-DObb9lfm.js} +1 -1
  26. package/dist/assets/{dialog-CQLvE6F6.js → dialog-M9TJGHb8.js} +1 -1
  27. package/dist/assets/{es-ZHyqPb3M.js → es-Dw9Q-ozz.js} +3 -3
  28. package/dist/assets/{fileQueries-CmWYnRVz.js → fileQueries-BjL2dHDF.js} +1 -1
  29. package/dist/assets/{fr-nXAAl4qu.js → fr-ColDJ2rK.js} +3 -3
  30. package/dist/assets/gitApi-DkIj7msF.js +7 -0
  31. package/dist/assets/{input-XiL2-2gG.js → input-BNj7D6h_.js} +1 -1
  32. package/dist/assets/{insertionBoundaries-CDNLmXA6.js → insertionBoundaries-Ci7W_si4.js} +1 -1
  33. package/dist/assets/{ja-CLcxQZ5K.js → ja-DK2Z5Adv.js} +3 -3
  34. package/dist/assets/{ko-KgjBt0nP.js → ko-BFhsYNY4.js} +3 -3
  35. package/dist/assets/main-Byam6OLJ.js +172 -0
  36. package/dist/assets/{main-Byhyzh0I.js → main-JxXeBGUv.js} +2 -2
  37. package/dist/assets/{markdown-worker-BDyY0vt6.js → markdown-worker-CJ8ooXEK.js} +1 -1
  38. package/dist/assets/{markdownTheme-D-aLQZaM.js → markdownTheme-CziN3c9i.js} +1 -1
  39. package/dist/assets/{miniChat-Cw4DM3Kk.js → miniChat-MBdDWNL8.js} +2 -2
  40. package/dist/assets/{mobile-BkWoFtBb.js → mobile-7J0N2edW.js} +2 -2
  41. package/dist/assets/multirun-BDLm-9p_.js +4 -0
  42. package/dist/assets/{persistence-D1lIuyqO.js → persistence-ZSrLIR97.js} +1 -1
  43. package/dist/assets/pl-9HDNVuJh.js +15 -0
  44. package/dist/assets/{platform-G8Cxe5wN.js → platform-BiSk9jV3.js} +1 -1
  45. package/dist/assets/projectMeta-6Y8eqOct.js +3 -0
  46. package/dist/assets/{pt-BR-B6nleSMM.js → pt-BR-BjC1-fOS.js} +3 -3
  47. package/dist/assets/radio-VgkIFFc0.js +1 -0
  48. package/dist/assets/renderElectronMiniChatApp-DtiL6bi8.js +2 -0
  49. package/dist/assets/renderMobileApp-xWa6AxDE.js +23 -0
  50. package/dist/assets/runtimeConfig-BgAUYwpw.js +2 -0
  51. package/dist/assets/runtimeEndpointReset-CjX8fEqz.js +145 -0
  52. package/dist/assets/{sortable-tabs-strip-C4abQGAg.js → sortable-tabs-strip-Z5_rGG_O.js} +1 -1
  53. package/dist/assets/src-BZ9v9Hhc.css +2 -0
  54. package/dist/assets/{store-BDxgw-Hx.js → store-CNhcDSiX.js} +3 -3
  55. package/dist/assets/{terminalApi-os4uWEou.js → terminalApi-CkknnXhV.js} +1 -1
  56. package/dist/assets/{tooltip-BLugzWq-.js → tooltip-BE6WDmtb.js} +1 -1
  57. package/dist/assets/{uk-KTDMzdyl.js → uk-Dz5dc1bK.js} +3 -3
  58. package/dist/assets/{url-DMs_PgIC.js → url-DQDmlZku.js} +1 -1
  59. package/dist/assets/{useAppFontEffects-DfjqolPi.js → useAppFontEffects-D79ls-ks.js} +4 -4
  60. package/dist/assets/{useDesktopWindowControlsLayout-Dk_J2R2l.js → useDesktopWindowControlsLayout-obujEeM2.js} +1 -1
  61. package/dist/assets/{useEffectiveDirectory-DvwBlXlV.js → useEffectiveDirectory-DFAdHJ0-.js} +1 -1
  62. package/dist/assets/{useFontPreferences-B2QwnhAp.js → useFontPreferences-ZvBF445N.js} +1 -1
  63. package/dist/assets/{useMobileNavigationStore-CtwYvj4I.js → useMobileNavigationStore-BADiWXJ3.js} +21 -21
  64. package/dist/assets/{useSessionAutoCleanup-jK8ZenbX.js → useSessionAutoCleanup-CulttT9K.js} +1 -1
  65. package/dist/assets/{useWorkerHighlightedLines-DCkxJxo9.js → useWorkerHighlightedLines-Cg5oIMcb.js} +1 -1
  66. package/dist/assets/{utils-BxJEIWv5.js → utils-Dh7UZFrA.js} +1 -1
  67. package/dist/assets/{zh-CN-BilLDIh_.js → zh-CN-CK_vXKLC.js} +3 -3
  68. package/dist/assets/{zh-TW-DBDsyRLQ.js → zh-TW-D1PJ5wPO.js} +3 -3
  69. package/dist/index.html +8 -8
  70. package/dist/mini-chat.html +8 -8
  71. package/dist/mobile.html +8 -8
  72. package/package.json +1 -1
  73. package/server/lib/message-queue/DOCUMENTATION.md +1 -1
  74. package/dist/assets/AssistantView-Bn-UFf4Z.js +0 -1
  75. package/dist/assets/MobileSurface-gtthIGYq.js +0 -2
  76. package/dist/assets/gitApi-B11XffZP.js +0 -7
  77. package/dist/assets/main-By-Um3x1.js +0 -172
  78. package/dist/assets/multirun-DvOlESuG.js +0 -4
  79. package/dist/assets/pl-ZJkD7N-8.js +0 -15
  80. package/dist/assets/projectMeta-DMM_G-a5.js +0 -3
  81. package/dist/assets/radio-DQ3ENkQN.js +0 -1
  82. package/dist/assets/renderElectronMiniChatApp-DQWu_vZ6.js +0 -2
  83. package/dist/assets/renderMobileApp-YBH3SUWo.js +0 -23
  84. package/dist/assets/runtimeConfig-w7pmXQY1.js +0 -2
  85. package/dist/assets/runtimeEndpointReset-BcEksuFy.js +0 -145
  86. package/dist/assets/src-De3WpqHP.css +0 -2
package/dist/index.html CHANGED
@@ -552,7 +552,7 @@
552
552
  opacity: 0.72;
553
553
  }
554
554
  </style>
555
- <script type="module" crossorigin src="/assets/main-Byhyzh0I.js"></script>
555
+ <script type="module" crossorigin src="/assets/main-JxXeBGUv.js"></script>
556
556
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C0FnF6B9.js">
557
557
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CnHfUmDN.js">
558
558
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-B4dlGEM2.js">
@@ -560,17 +560,17 @@
560
560
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
561
561
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DLPElpoQ.js">
562
562
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
563
- <link rel="modulepreload" crossorigin href="/assets/persistence-D1lIuyqO.js">
564
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-ZK_vkdzL.js">
565
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-CewM6-g5.js">
563
+ <link rel="modulepreload" crossorigin href="/assets/persistence-ZSrLIR97.js">
564
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-Tqz56Y0u.js">
565
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-DgHC01I5.js">
566
566
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-sdk-C07HQypa.js">
567
567
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js">
568
- <link rel="modulepreload" crossorigin href="/assets/platform-G8Cxe5wN.js">
569
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-os4uWEou.js">
568
+ <link rel="modulepreload" crossorigin href="/assets/platform-BiSk9jV3.js">
569
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-CkknnXhV.js">
570
570
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
571
571
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-LvGrONDp.js">
572
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-w7pmXQY1.js">
573
- <link rel="stylesheet" crossorigin href="/assets/src-De3WpqHP.css">
572
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-BgAUYwpw.js">
573
+ <link rel="stylesheet" crossorigin href="/assets/src-BZ9v9Hhc.css">
574
574
  </head>
575
575
  <body class="h-full bg-background text-foreground">
576
576
  <!-- Keep the startup layer outside #root. React replaces every child of
@@ -74,7 +74,7 @@
74
74
  }
75
75
  </style>
76
76
 
77
- <script type="module" crossorigin src="/assets/miniChat-Cw4DM3Kk.js"></script>
77
+ <script type="module" crossorigin src="/assets/miniChat-MBdDWNL8.js"></script>
78
78
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C0FnF6B9.js">
79
79
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CnHfUmDN.js">
80
80
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-B4dlGEM2.js">
@@ -82,17 +82,17 @@
82
82
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DLPElpoQ.js">
84
84
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
85
- <link rel="modulepreload" crossorigin href="/assets/persistence-D1lIuyqO.js">
86
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-ZK_vkdzL.js">
87
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-CewM6-g5.js">
85
+ <link rel="modulepreload" crossorigin href="/assets/persistence-ZSrLIR97.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-Tqz56Y0u.js">
87
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-DgHC01I5.js">
88
88
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-sdk-C07HQypa.js">
89
89
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js">
90
- <link rel="modulepreload" crossorigin href="/assets/platform-G8Cxe5wN.js">
91
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-os4uWEou.js">
90
+ <link rel="modulepreload" crossorigin href="/assets/platform-BiSk9jV3.js">
91
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-CkknnXhV.js">
92
92
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
93
93
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-LvGrONDp.js">
94
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-w7pmXQY1.js">
95
- <link rel="stylesheet" crossorigin href="/assets/src-De3WpqHP.css">
94
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-BgAUYwpw.js">
95
+ <link rel="stylesheet" crossorigin href="/assets/src-BZ9v9Hhc.css">
96
96
  </head>
97
97
  <body class="h-full bg-background text-foreground">
98
98
  <div id="root" class="h-full">
package/dist/mobile.html CHANGED
@@ -63,7 +63,7 @@
63
63
  })();
64
64
  </script>
65
65
 
66
- <script type="module" crossorigin src="/assets/mobile-BkWoFtBb.js"></script>
66
+ <script type="module" crossorigin src="/assets/mobile-7J0N2edW.js"></script>
67
67
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C0FnF6B9.js">
68
68
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CnHfUmDN.js">
69
69
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-B4dlGEM2.js">
@@ -71,17 +71,17 @@
71
71
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
72
72
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DLPElpoQ.js">
73
73
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
74
- <link rel="modulepreload" crossorigin href="/assets/persistence-D1lIuyqO.js">
75
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-ZK_vkdzL.js">
76
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-CewM6-g5.js">
74
+ <link rel="modulepreload" crossorigin href="/assets/persistence-ZSrLIR97.js">
75
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-Tqz56Y0u.js">
76
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-DgHC01I5.js">
77
77
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-sdk-C07HQypa.js">
78
78
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js">
79
- <link rel="modulepreload" crossorigin href="/assets/platform-G8Cxe5wN.js">
80
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-os4uWEou.js">
79
+ <link rel="modulepreload" crossorigin href="/assets/platform-BiSk9jV3.js">
80
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-CkknnXhV.js">
81
81
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
82
82
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-LvGrONDp.js">
83
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-w7pmXQY1.js">
84
- <link rel="stylesheet" crossorigin href="/assets/src-De3WpqHP.css">
83
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-BgAUYwpw.js">
84
+ <link rel="stylesheet" crossorigin href="/assets/src-BZ9v9Hhc.css">
85
85
  </head>
86
86
  <body class="h-full bg-background text-foreground">
87
87
  <div id="root" class="h-full"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openchambery/web",
3
- "version": "1.18.2-beta.30",
3
+ "version": "1.18.2-beta.32",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./server/index.js",
@@ -67,7 +67,7 @@ The root snapshot contains a catalog of scope identity, revision, lifecycle stat
67
67
 
68
68
  ## Manual send and optimistic chip projection
69
69
 
70
- Manual send stores a one-time durable dispatch intent at any moment (waiting statuses only). Scope and item DTOs expose the non-sensitive authoritative `manualDispatchRequested` field. Authoritative tracking rows—`manualDispatchRequested === true`, `sending`, and `reconciling`—remain durable until exact confirmation/tombstone, but UI chips hide them as already-sent tracking. `failed` / `unresolved` restore chip visibility and retry. Pending client send mutations hide the target chip immediately (same optimistic filter as edit/remove); a definitive mutation failure clears the overlay so the authoritative waiting/failed/unresolved row reappears. After the mutation leaves `pending`, a successful send keeps a **committed-ack-revision shadow**: the client result carries `committedRevision` from the action receipt even when post-commit scope reload fails, and chips continue hiding that exact runtime generation/scope send target while the authoritative scope revision is still behind the ack. Shadow ends when scope revision reaches the ack, the runtime generation changes, or the success mutation is cleaned from the MutationCache. The overlay never writes the revision-pinned Query cache.
70
+ Manual send stores a one-time durable dispatch intent at any moment (waiting statuses only). Scope and item DTOs expose the non-sensitive authoritative `manualDispatchRequested` field. Authoritative tracking rows—`manualDispatchRequested === true`, `sending`, and `reconciling`—remain durable until exact confirmation/tombstone. UI chips keep pending client send, committed-ack send shadows, and authoritative `manualDispatchRequested` visible in a **"Sending…"** state (parallel to pending-admission "Queuing…"); chips hide only after authoritative `sending`/`reconciling` (or removal/confirm). `failed` / `unresolved` restore normal Send/Edit. Pending client send mutations leave the target chip visible; a definitive mutation failure clears the overlay so Send/Edit return. After the mutation leaves `pending`, a successful send keeps a **committed-ack-revision shadow**: the client result carries `committedRevision` from the action receipt even when post-commit scope reload fails, and the shadow continues selecting that exact runtime generation/scope send target for "Sending…" UI ownership while the authoritative scope revision is still behind the ack. Shadow ends when scope revision reaches the ack, the runtime generation changes, or the success mutation is cleaned from the MutationCache. Client send-pending presentation times out after 8s (`SERVER_QUEUE_SEND_PENDING_TIMEOUT_MS`) and restores clickable Send when stuck without reaching sending/reconciling/removal. The overlay never writes the revision-pinned Query cache.
71
71
 
72
72
  `beginAttempt` consumes the manual intent atomically with its message ID and attempt history; `sending` and `reconciling` status then represent active delivery tracking. Pre-attempt release and retry preserve the intent. Pause, expired-sending recovery, and ambiguity reconciliation clear the intent because the persisted attempt owns delivery certainty. Compact mutation acknowledgements retain their existing identity and revision fields. Dual-client replay of the same manual-send `requestID` returns the stored receipt once.
73
73
 
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{D as n,T as r,j as i,t as a}from"./useUIStore-5agS8bsW.js";import{Ot as o,et as s,rt as c,yt as l}from"./persistence-D1lIuyqO.js";import{nt as u,rt as d}from"./vendor-base-ui-CnHfUmDN.js";import{r as f}from"./platform-G8Cxe5wN.js";import{n as p}from"./vendor-react-DLPElpoQ.js";import{r as m}from"./vendor-sonner-DVzioF3d.js";import{n as h}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as g}from"./clipboard-ByPKHEt8.js";import{a as _,n as v,s as y}from"./MobileShareBridge-CIwA1gVb.js";import{Ra as b,To as x,Va as S,Zr as C,an as w,do as T,ea as E,en as D,fn as O,ji as k,mn as A,o as j,pn as M,qr as N,uo as P,yi as F}from"./useMobileNavigationStore-CtwYvj4I.js";import{_ as I,a as L,c as R,d as ee,f as te,g as ne,l as re,n as ie,o as ae,p as oe,r as se,t as z,v as B,x as V,y as ce}from"./MobileDetailNavigation-UU07EhGy.js";import{i as le,r as ue}from"./useAssistantUIStore-Bq3cPj2x.js";import{t as de}from"./AgentAvatar-B4fj9PIe.js";import{t as fe}from"./utils-BxJEIWv5.js";import{n as pe}from"./Icon-DiIuWOuC.js";import{a as H,i as me,n as he,o as U,r as W,t as G}from"./dialog-CQLvE6F6.js";import{t as ge}from"./button-DaAoVF4X.js";import{i as _e}from"./OverlayScrollbar-isP804Zw.js";import{I as ve,L as ye,M as be,N as K,q as xe,t as q}from"./ChatContainer-BXit8m8H.js";import{a as Se,i as Ce,n as we,r as Te,t as Ee}from"./context-menu-DlxAp9du.js";var De=p(),J=e(d(),1),Y=u(),Oe=e=>{let t=(0,De.c)(46),{assistant:n,sessionID:r,warning:i,surface:a,onRevertMessage:o,onEditMessage:s,pendingUserMessages:c,onPendingUserMessagesMaterialized:l}=e,u=n.effectiveWorkspacePath,d;t[0]!==n.sessionGeneration||t[1]!==r?(d={sessionID:r,sessionGeneration:n.sessionGeneration},t[0]=n.sessionGeneration,t[1]=r,t[2]=d):d=t[2];let p=B(n.id,d,a.active);p.data?.pages;let m;t[3]===p.data?.pages?m=t[4]:(m=p.data?.pages??[],t[3]=p.data?.pages,t[4]=m);let g;t[5]===m?g=t[6]:(g=F(m),t[5]=m,t[6]=g);let _=g,v;if(t[7]!==_){v=new Map;for(let e of _){let t=v.get(e.sessionID);v.set(e.sessionID,t===void 0||t===e.directory?e.directory:null)}t[7]=_,t[8]=v}else v=t[8];let y=v,b;t[9]===p?b=t[10]:(b=async()=>{(p.hasNextPage||p.isFetchNextPageError)&&await p.fetchNextPage()},t[9]=p,t[10]=b);let x=h(b),S=n.mode===`continuous`,C=be(),w;t[11]!==u||t[12]!==y||t[13]!==C||t[14]!==r?(w=(e,t)=>{let n=e===r?u:y.get(e);if(!n||n!==t){M(e,`missing-directory`);return}A(e,t,{phoneShell:!!(C&&!f()),switchToChat:!0})},t[11]=u,t[12]=y,t[13]=C,t[14]=r,t[15]=w):w=t[15];let T=h(w),E;t[16]===S?E=t[17]:(E={...K,forkSession:!1,navigateNestedSession:!1,mutateSession:S},t[16]=S,t[17]=E);let D;t[18]===s?D=t[19]:(D=s?{onEditMessage:s}:{},t[18]=s,t[19]=D);let O;t[20]!==u||t[21]!==o||t[22]!==T||t[23]!==r||t[24]!==a.active||t[25]!==a.surfaceID||t[26]!==E||t[27]!==D?(O={kind:`embedded`,surfaceId:a.surfaceID,sessionId:r,directory:u,active:a.active,capabilities:E,onRevertMessage:o,...D,openSourceSession:T},t[20]=u,t[21]=o,t[22]=T,t[23]=r,t[24]=a.active,t[25]=a.surfaceID,t[26]=E,t[27]=D,t[28]=O):O=t[28];let k=O,j=p.isError||p.isSuccess&&!p.hasNextPage,N=p.isLoading||p.isFetchingNextPage,P;t[29]!==x||t[30]!==j||t[31]!==_||t[32]!==N?(P={entries:_,complete:j,loading:N,fetchPrevious:x},t[29]=x,t[30]=j,t[31]=_,t[32]=N,t[33]=P):P=t[33];let I;t[34]!==u||t[35]!==l||t[36]!==o||t[37]!==c||t[38]!==r||t[39]!==k||t[40]!==a||t[41]!==P||t[42]!==i?(I={sessionId:r,directory:u,composerSurface:a,sessionSurface:k,warning:i,pendingUserMessages:c,onPendingUserMessagesMaterialized:l,assistantHistory:P,onRevertMessage:o},t[34]=u,t[35]=l,t[36]=o,t[37]=c,t[38]=r,t[39]=k,t[40]=a,t[41]=P,t[42]=i,t[43]=I):I=t[43];let L=I,R;return t[44]===L?R=t[45]:(R=(0,Y.jsx)(q,{autoOpenDraft:!1,host:L}),t[44]=L,t[45]=R),R},ke=class extends Error{constructor(){super(`assistant_selection_stale`)}},Ae=(e,t)=>e.assistantID===t.assistantID&&e.transportIdentity===t.transportIdentity&&e.runtimeGeneration===t.runtimeGeneration,je=class{onBusyChange;onError;flight=null;authoritativeIdentity=null;constructor(e,t){this.onBusyChange=e,this.onError=t}activate(e){this.authoritativeIdentity&&!Ae(this.authoritativeIdentity,e)&&this.flight&&this.retire(this.flight),this.authoritativeIdentity=e}enqueue(e,t,n){if(!this.isAuthoritative(e))return Promise.reject(new ke);let r=this.flight;r||(r={identity:e,controller:new AbortController,running:!1,desired:null,waiters:[],activeWaiters:[],idleWaiters:[],retired:!1},this.flight=r),r.desired=t;let i=new Promise((e,t)=>{r.waiters.push({resolve:e,reject:t})});return r.running||(r.running=!0,this.onBusyChange(!0),this.run(r,n)),i}async flush(e){if(!this.isAuthoritative(e))throw new ke;let t=this.flight;t?.running&&await new Promise((e,n)=>t.idleWaiters.push({resolve:e,reject:n}))}assertAuthoritative(e){if(!this.isAuthoritative(e))throw new ke}dispose(){this.flight&&this.retire(this.flight),this.authoritativeIdentity=null}async run(e,t){for(;!e.retired&&e.desired;){let n=e.desired;e.desired=null;let r=e.waiters.splice(0);e.activeWaiters=r;try{if(await t({identity:e.identity,selection:n,signal:e.controller.signal}),!e.retired)for(let e of r)e.resolve()}catch(t){if(!e.retired){this.onError(t);for(let e of r)e.reject(t)}}e.activeWaiters=[]}e.running=!1;for(let t of e.idleWaiters.splice(0))t.resolve();this.flight===e&&this.onBusyChange(!1)}retire(e){e.retired=!0,e.controller.abort();let t=new ke;for(let n of e.activeWaiters.splice(0))n.reject(t);for(let n of e.waiters.splice(0))n.reject(t);for(let n of e.idleWaiters.splice(0))n.reject(t);this.flight===e&&(this.flight=null,this.onBusyChange(!1))}isAuthoritative(e){return this.authoritativeIdentity!==null&&Ae(this.authoritativeIdentity,e)}},X=(e,t)=>{let n=t.providerID??e.providerID,r=t.modelID??e.modelID,i=n!==e.providerID||r!==e.modelID;return{enabled:e.enabled,name:e.name,defaultPrompt:e.defaultPrompt,workspacePath:e.workspacePath,providerID:n,modelID:r,agent:t.agent??null,variant:i?null:t.variant??null,mode:e.mode}},Me=async(e,t,n)=>{n.assertAuthoritative();let r=n.readSnapshot()?.assistants.find(t=>t.id===e.assistantID);if(!r)throw Error(`assistant_unavailable`);try{n.assertAuthoritative(),await n.updateAssistant(r,X(r,t)),n.assertAuthoritative()}catch(i){if(n.assertAuthoritative(),n.signal.aborted)throw new ke;if(!(i instanceof V)||i.code!==`revision_conflict`)throw i;if(n.assertAuthoritative(),r=(await n.ensureSnapshot(n.signal)).assistants.find(t=>t.id===e.assistantID),n.assertAuthoritative(),!r)throw new V(`revision_conflict`,409);n.assertAuthoritative(),await n.updateAssistant(r,X(r,t)),n.assertAuthoritative()}};async function Z(e){await L(e);let t=le.getState().defaultShareAssistant;if(t?.assistantID!==e.id)return;let n=await R();n.serverInstanceID&&t.serverInstanceID===n.serverInstanceID&&le.getState().setDefaultShareAssistant(null)}function Ne({assistant:e,open:t,onOpenChange:n,onDeleted:r}){let{t:i}=g(),[a,o]=J.useState(!1),s=e?_(e.name).displayName||e.name:``,c=h(e=>{a&&!e||n(e)}),l=h(()=>{a||n(!1)}),u=h(async()=>{if(!(!e||a)){o(!0);try{await Z(e),r?.(e.id),n(!1),m.success(i(`assistants.settings.toast.deleted`))}catch{m.error(i(`assistants.settings.toast.deleteFailed`))}finally{o(!1)}}});return(0,Y.jsx)(G,{open:t&&e!==null,onOpenChange:c,children:(0,Y.jsxs)(he,{className:`max-w-md`,children:[(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:i(`assistants.settings.delete`)}),(0,Y.jsx)(W,{children:i(`assistants.settings.deleteConfirm`,{name:s})})]}),(0,Y.jsxs)(me,{children:[(0,Y.jsx)(ge,{size:`sm`,variant:`ghost`,onClick:l,disabled:a,children:i(`settings.common.actions.cancel`)}),(0,Y.jsx)(ge,{size:`sm`,variant:`destructive`,onClick:u,disabled:a,children:i(`settings.common.actions.delete`)})]})]})})}var Pe=[0,500,1500,4e3],Fe=(e,t,n)=>{let r=!1,i=e.map(e=>e.info.id!==t||e.info.sessionID===n?e:(r=!0,{...e,info:{...e.info,sessionID:n}}));return r?i:e},Ie=e=>{let t=e.refreshDelaysMs??Pe,n=e.sleep??(e=>new Promise(t=>setTimeout(t,e)));(async()=>{for(let r of t){if(r>0&&await n(r),!e.isCurrent())return;try{await e.refresh(e.binding);break}catch{}}})()},Le=e=>`${e.transport}\u0000${e.assistantID}`,Re=e=>({transport:e.transport,assistantID:e.assistantID}),ze=(e,t)=>e.assistantID===t.assistantID&&e.sessionID===t.sessionID&&e.directory===t.directory&&e.sessionGeneration===t.sessionGeneration&&e.transport===t.transport&&e.runtimeGeneration===t.runtimeGeneration,Be=(e,t)=>e.assistantID===t.assistantID&&e.sessionID===t.sessionID&&e.directory===t.directory&&e.sessionGeneration===t.sessionGeneration&&e.messageID===t.messageID&&e.transport===t.transport&&e.runtimeGeneration===t.runtimeGeneration,Ve=()=>{let e=new Map,t=new Map,n=1,r=e=>Le(e),i=async(e,n)=>{let i=r(e),a=t.get(i)??Promise.resolve(),o,s=new Promise(e=>{o=e}),c=a.catch(()=>void 0).then(()=>s);t.set(i,c),await a.catch(()=>void 0);try{return await n()}finally{o(),t.get(i)===c&&t.delete(i)}},a=(t,i)=>{let a=r(Re(t)),o=n++;return e.set(a,{identity:t,rollback:i,token:o}),o},o=t=>e.get(r(t))?.identity,s=t=>e.delete(r(t)),c=async e=>i(e,()=>s(e)),l=async t=>{let n=r(t),i=e.get(n);if(!i)return{kind:`none`};let a=i.token,o=i.identity,s;try{s=await i.rollback()}catch{return{kind:`blocked`,status:`failed`}}let c=e.get(n);return!c||c.token!==a||!Be(c.identity,o)?{kind:`superseded`}:s.status===`rolled-back`||s.status===`conflict`?(e.delete(n),{kind:`cleared`,status:s.status}):{kind:`blocked`,status:s.status}},u=async(t,n)=>{let i=r(t),a=e.get(i);if(!a)return{kind:`none`};if(ze(a.identity,n))return{kind:`match`};let o=a.token,s=a.identity,c=await a.rollback(),l=e.get(i);return!l||l.token!==o||!Be(l.identity,s)?{kind:`superseded`}:c.status===`rolled-back`||c.status===`conflict`?(e.delete(i),{kind:`cleared`,status:c.status}):{kind:`rollback_failed`,retained:!0,status:c.status}};return{register:a,read:o,clear:s,clearExclusive:c,retireCurrent:l,rollbackAndClearIfBindingMismatch:async(e,t)=>i(e,()=>u(e,t)),rollbackAllBestEffort:async t=>{let n=[...e.entries()];await Promise.all(n.map(async([,n])=>{if(t?.excludeTransport!==void 0&&n.identity.transport===t.excludeTransport)return;let a=Re(n.identity);await i(a,async()=>{let t=r(a),i=e.get(t);if(!i||i.token!==n.token)return;let o=i.token,s=i.identity;try{let n=await i.rollback(),r=e.get(t);if(!r||r.token!==o||!Be(r.identity,s))return;(n.status===`rolled-back`||n.status===`conflict`)&&e.delete(t)}catch{}})}))},stageExclusive:async(e,t)=>i(e,async()=>{let n=await l(e);if(n.kind===`blocked`)return{kind:`blocked`,status:n.status};let r=await t();if(!r)return{kind:`skipped`};let i=a(r.identity,r.rollback);return r.protectOnStale?{kind:`stale_protected`,token:i,identity:r.identity}:{kind:`registered`,token:i,identity:r.identity}})}},He=(e,t)=>!e?.attachments?.length||!t?[]:e.attachments.flatMap(e=>{let n=t[e.attachmentRefID];return n?[n]:[]}),Ue=(e,t)=>{let n=t??{};return e.map(e=>({partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachments:e.attachments.flatMap(e=>n[e.attachmentRefID]?[n[e.attachmentRefID]]:[])}))},We=(e,t)=>{if(t.length===0)return[...e];let n=new Map;for(let t of e)n.set(t.partID,t);for(let e of t)n.set(e.partID,e);let r=new Set,i=[];for(let t of e){let e=n.get(t.partID);e&&(i.push(e),r.add(t.partID))}for(let e of t)r.has(e.partID)||(i.push(e),r.add(e.partID));return i},Ge=t({AssistantView:()=>Qe}),Ke={},qe=[],Je=[],Ye=(e,t,n)=>[...e===void 0?[]:[{type:`text`,text:e}],...(t??[]).flatMap(e=>[{type:`text`,text:e.text,...e.synthetic===!0?{synthetic:!0}:{}},...(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl}))]),...(n??[]).map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl}))],Xe=e=>{let t=(0,De.c)(11),{assistant:n,onBack:r}=e,{t:i}=g(),a;t[0]===n?a=t[1]:(a=n?_(n.name):null,t[0]=n,t[1]=a);let o=a,s=n&&o?o.displayName||n.name:``,c;t[2]!==s||t[3]!==i?(c=s||i(`assistants.title`),t[2]=s,t[3]=i,t[4]=c):c=t[4];let l;t[5]===i?l=t[6]:(l=i(`assistants.actions.backToChat`),t[5]=i,t[6]=l);let u;return t[7]!==r||t[8]!==c||t[9]!==l?(u=(0,Y.jsx)(z,{title:c,backAriaLabel:l,onBack:r}),t[7]=r,t[8]=c,t[9]=l,t[10]=u):u=t[10],u},Ze=e=>{let t=(0,De.c)(45),{assistantID:n,displayName:r,avatarEmoji:i,modeLabel:a,selected:o,enabled:s,editLabel:c,deleteLabel:l,onSelect:u,onEdit:d,onDelete:f}=e,[p,m]=J.useState(!1),g;t[0]===u?g=t[1]:(g=()=>u(),t[0]=u,t[1]=g);let _=h(g),v;t[2]===d?v=t[3]:(v=()=>{m(!1),d()},t[2]=d,t[3]=v);let y=h(v),b;t[4]===f?b=t[5]:(b=()=>{m(!1),f()},t[4]=f,t[5]=b);let x=h(b),S;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>{e.preventDefault(),m(!0)},t[6]=S):S=t[6];let C=o?`border-border/50 bg-[var(--surface-elevated)]`:`border-transparent hover:bg-interactive-hover`,w=!s&&`opacity-65`,T;t[7]!==C||t[8]!==w?(T=fe(`flex w-full min-h-11 items-center gap-3 rounded-xl border px-3 py-3 text-left outline-none transition-[background-color,border-color,transform,opacity] duration-150 ease-out active:scale-[0.995] focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] motion-reduce:transition-none`,C,w),t[7]=C,t[8]=w,t[9]=T):T=t[9];let E;t[10]!==_||t[11]!==o||t[12]!==T?(E=(0,Y.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":o,onClick:_,onContextMenu:S,className:T}),t[10]=_,t[11]=o,t[12]=T,t[13]=E):E=t[13];let D;t[14]!==n||t[15]!==i||t[16]!==r?(D=(0,Y.jsx)(de,{name:n,emoji:i,size:24,label:r}),t[14]=n,t[15]=i,t[16]=r,t[17]=D):D=t[17];let O;t[18]===r?O=t[19]:(O=(0,Y.jsx)(`span`,{className:`block truncate typography-ui-label font-medium`,children:r}),t[18]=r,t[19]=O);let k;t[20]===a?k=t[21]:(k=(0,Y.jsx)(`span`,{className:`mt-0.5 block truncate typography-micro text-muted-foreground`,children:a}),t[20]=a,t[21]=k);let A;t[22]!==O||t[23]!==k?(A=(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[O,k]}),t[22]=O,t[23]=k,t[24]=A):A=t[24];let j;t[25]!==A||t[26]!==E||t[27]!==D?(j=(0,Y.jsxs)(Se,{render:E,children:[D,A]}),t[25]=A,t[26]=E,t[27]=D,t[28]=j):j=t[28];let M;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Y.jsx)(pe,{name:`edit`,className:`size-4`}),t[29]=M):M=t[29];let N;t[30]!==c||t[31]!==y?(N=(0,Y.jsxs)(Te,{onClick:y,children:[M,c]}),t[30]=c,t[31]=y,t[32]=N):N=t[32];let P;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Y.jsx)(Ce,{}),t[33]=P):P=t[33];let F;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Y.jsx)(pe,{name:`delete-bin`,className:`size-4`}),t[34]=F):F=t[34];let I;t[35]!==l||t[36]!==x?(I=(0,Y.jsxs)(Te,{onClick:x,className:`text-[var(--status-error)] focus:text-[var(--status-error)] data-[highlighted]:text-[var(--status-error)] [&_svg]:text-[var(--status-error)]`,children:[F,l]}),t[35]=l,t[36]=x,t[37]=I):I=t[37];let L;t[38]!==N||t[39]!==I?(L=(0,Y.jsxs)(we,{className:`min-w-[10rem]`,children:[N,P,I]}),t[38]=N,t[39]=I,t[40]=L):L=t[40];let R;return t[41]!==p||t[42]!==j||t[43]!==L?(R=(0,Y.jsxs)(Ee,{open:p,onOpenChange:m,children:[j,L]}),t[41]=p,t[42]=j,t[43]=L,t[44]=R):R=t[44],R},Qe=({activeOverride:e,onMobileBack:t})=>{let{t:u}=g(),{isMobile:d}=_e(),f=be(),p=J.useSyncExternalStore(i,n,n),A=r(),M=a(e=>e.activeMainTab===`assistant`),F=e??M,L=a(e=>e.isMobile),R=d||L,z=I(),B=ce(),V=B.data,H=le(e=>e.assistantByTransport[p]??null),me=le(e=>e.selectAssistant),he=le(e=>e.requestCreate),U=V?.assistants.find(e=>e.id===H)??null,W=U?.id??``,G=U?.sessionID??``,K=U?.effectiveWorkspacePath??``,q=J.useMemo(()=>o({transportIdentity:p},`assistant:${W}`),[W,p]),Se=l(q),Ce=x(e=>e.draftAttachmentViews[Se]??Ke),we=x(e=>e.drafts[Se]),Te=J.useMemo(()=>{let e=He(we,Ce);return e.length===0?qe:e},[Ce,we]),Ee=we?.attachments,De=we?.syntheticParts,Ae=J.useMemo(()=>!Ee||!De?``:`${Ee.map(e=>e.attachmentRefID).join(``)}\u0004${De.map(e=>`${e.partID}\u0002${e.attachments.map(e=>e.attachmentRefID).join(``)}`).join(``)}`,[Ee,De]);J.useEffect(()=>{W&&x.getState().hydrateDraftAttachments(q)},[W,q,Ae]);let X=T(K||null,{enabled:!!K&&F}),Z=P(K||null,{enabled:!!K&&F}),Pe=D(G,K||void 0),Le=w(G,K||void 0),ze=O(G),Be=xe(),[Ge,Qe]=J.useState(()=>new Map),$e=J.useRef(0),et=J.useRef(Ve()),tt=Ge.get(W)??Je,[,nt]=J.useState(!1),rt=J.useRef(()=>{});rt.current=()=>{m.error(u(`assistants.composer.selectionSaveFailed`))};let it=J.useRef(null);it.current||=new je(nt,e=>rt.current(e));let at=J.useMemo(()=>({assistantID:W,transportIdentity:p,runtimeGeneration:A}),[W,A,p]),Q=it.current,ot=J.useMemo(()=>({transport:p,assistantID:W}),[W,p]),st=h(async(e,t=p)=>{await et.current.clearExclusive({transport:t,assistantID:e})}),ct=h(e=>{et.current.rollbackAllBestEffort(e).catch(()=>void 0)});J.useEffect(()=>{!H&&V?.assistants[0]&&me(V.assistants[0].id)},[me,H,V?.assistants]),J.useEffect(()=>{B.isSuccess&&H&&!U&&me(V?.assistants[0]?.id??null)},[U,me,H,V?.assistants,B.isSuccess]),J.useEffect(()=>{F&&W&&!G&&ae(W)},[F,W,G]),J.useEffect(()=>{$e.current++,Qe(new Map),ct({excludeTransport:p})},[p,A,ct]),J.useEffect(()=>()=>{$e.current++,ct()},[ct]),J.useEffect(()=>{Q.activate(at)},[Q,at]),J.useEffect(()=>()=>{Q.dispose()},[Q]),J.useEffect(()=>{W&&et.current.rollbackAndClearIfBindingMismatch(ot,{assistantID:W,sessionID:G,directory:K,sessionGeneration:U?.sessionGeneration??-1,transport:p,runtimeGeneration:A}).catch(()=>void 0)},[U?.sessionGeneration,W,K,A,G,ot,p]);let lt=h(e=>at.assistantID?Q.enqueue(at,e,async({identity:e,selection:t,signal:i})=>{await Me(e,t,{readSnapshot:()=>te(void 0,e.transportIdentity),ensureSnapshot:e=>re(e),updateAssistant:ne,signal:i,assertAuthoritative:()=>{if(Q.assertAuthoritative(e),n()!==e.transportIdentity||r()!==e.runtimeGeneration)throw new ke}})}):Promise.reject(Error(`assistant_unavailable`))),ut=J.useMemo(()=>ye(Z.data),[Z.data]),dt=h(e=>{if(!U)return;let t=b(ut,U.agent??void 0,e);if(t){let e=S({providerID:U.providerID,modelID:U.modelID,agent:U.agent},t,ut,X.data??[]),n=e.providerID===U.providerID&&e.modelID===U.modelID;lt({...e,agent:e.agent??void 0,variant:n?U.variant??void 0:void 0})}}),$=h(async(e,t)=>{e.sessionID&&await Be.ensureSessionRenderable(e.sessionID,{directory:e.directory,...t?.force?{force:!0}:{}})}),ft=U?.sessionGeneration;J.useEffect(()=>{!F||!W||!G||!K||ft===void 0||$({sessionID:G,directory:K,sessionGeneration:ft},{force:!0})},[F,W,K,$,ft,G]);let pt=h((e,t)=>{if(t.length===0)return;let n=new Set(t);Qe(t=>{let r=t.get(e);if(!r?.some(e=>n.has(e.info.id)))return t;let i=new Map(t),a=r.filter(e=>!n.has(e.info.id));return a.length>0?i.set(e,a):i.delete(e),i})}),mt=h((e,t,n)=>{Qe(r=>{let i=r.get(e);if(!i)return r;let a=Fe(i,t,n);if(a===i)return r;let o=new Map(r);return o.set(e,a),o})}),ht=h(e=>{pt(W,e)}),gt=h(async e=>{if(!G||!K)throw Error(`assistant_unavailable`);E(G,K).some(t=>t?.id===e)&&(await N(G,e,{directory:K,draftKey:q,restorePrimaryInput:!1}),await st(W))}),_t=h(async(e,t)=>{if(!U||U.mode!==`continuous`)return;if(!G||!K)throw Error(`assistant_unavailable`);if(!E(G,K).some(t=>t?.id===e))return;if(t.info.id!==e||t.info.sessionID!==G||t.info.role!==`user`)throw Error(`The selected user message is unavailable`);let i={assistantID:U.id,sessionID:G,directory:K,sessionGeneration:U.sessionGeneration,messageID:e,transport:p,runtimeGeneration:A},a=Re(i),o=await et.current.stageExclusive(a,async()=>{let a=await C(G,e,t,{directory:K,draftKey:q}),o=n()===i.transport&&r()===i.runtimeGeneration,s=o?te(void 0,i.transport)?.assistants.find(e=>e.id===i.assistantID):void 0,c=!!(s&&s.mode===`continuous`&&s.sessionID===i.sessionID&&s.sessionGeneration===i.sessionGeneration&&(s.effectiveWorkspacePath??``)===i.directory);if(o&&c)return{identity:i,rollback:()=>a.rollback()};let l=await a.rollback();return l.status===`failed`||l.status===`skipped`?{identity:i,rollback:()=>a.rollback(),protectOnStale:!0}:null});if(o.kind===`blocked`)throw Error(`assistant_stage_message_edit_prior_blocked`);if(o.kind===`stale_protected`)throw Error(`assistant_stage_message_edit_rollback_failed`)}),vt=J.useMemo(()=>{let e=k(q,()=>x.getState());return{busy:!1,attachments:Te,addAttachment:t=>e.addLocal(t),removeAttachment:t=>e.removeByAttachmentID(t),clearAttachments:()=>e.clearRootAttachments(),restoreAttachments:t=>e.restoreRootAttachments(t),pendingInput:null,consumePendingInput:()=>null,pendingPreset:null,consumePendingPreset:()=>null,consumeSyntheticParts:()=>{let e=x.getState(),t=e.draftAttachmentViews[l(q)]??Ke,n=e.consumeDraftSyntheticParts(q,y);return n?Ue(n,t):null},restoreSyntheticParts:e=>{(async()=>{let t=x.getState(),n=e.map(e=>({partID:e.partID??s(),text:e.text,attachments:[],...e.synthetic===!0?{synthetic:!0}:{}})),r=We(t.getDraft(q)?.syntheticParts??[],n);t.setDraftSyntheticParts(q,r);for(let r=0;r<n.length;r++){let i=n[r].partID;for(let n of e[r]?.attachments??[])n.source===`server`&&n.dataUrl?t.addDraftDurableAttachment(q,{attachmentID:n.id,filename:n.filename,mimeType:n.mimeType,size:n.size,source:`server`,url:n.dataUrl,serverPath:n.serverPath,partID:i}):await t.addDraftLocalAttachment(q,n.file,{attachmentID:n.id,filename:n.filename,source:n.source===`vscode`?`vscode`:`local`,vscodePath:n.vscodePath,vscodeSource:n.vscodeSource===`selection`?`selection`:void 0,partID:i})}})()},inlineDrafts:[],removeInlineDraft:()=>{},restoreInlineDrafts:()=>{},history:ze,captureRuntime:()=>x.getState().captureDraftRuntime(),getDraft:e=>x.getState().getDraft(e),abortPrompt:{sessionID:null,clear:()=>{}}}},[Te,q,ze]),yt=J.useMemo(()=>{let e=(X.data??[]).find(e=>e.id===U?.providerID)?.models?.find(e=>e.id===U?.modelID);return ve(e)},[U?.modelID,U?.providerID,X.data]),bt=Pe.length>0,xt=J.useMemo(()=>{if(!U||!G||!K)return null;let e={sessionID:G,directory:K,sessionGeneration:U.sessionGeneration};return{kind:`secondary`,surfaceID:`assistant:${U.id}`,active:F,sessionID:G,directory:K,draftKey:q,transportIdentity:p,runtimeGeneration:A,deliveryTarget:{kind:`assistant`,assistantID:U.id},resources:vt,...U.mode===`stateless`?{queueSessionID:`assistant:${U.id}`}:{},selection:{value:{providerID:U.providerID,modelID:U.modelID,agent:U.agent??void 0,variant:U.variant??void 0},catalog:{providers:X.data??[],agents:ut,variants:yt,variantsReady:X.isSuccess,ready:X.isSuccess&&Z.isSuccess,loading:X.isPending||Z.isPending,error:X.isError||Z.isError},change:lt,flush:()=>Q.flush(at)},activity:{phase:Le?.type===`busy`?`busy`:Le?.type===`retry`?`retry`:`idle`,canAbort:Le?.type===`busy`||Le?.type===`retry`},commands:{sessionID:G,hasMessages:bt,hasNewDraft:!1},commandPolicy:e=>e.name!==`fork`&&e.name!==`thread`,backend:{send:async t=>{let n;for(let t of E(e.sessionID,e.directory)){let e=typeof t?.id==`string`?t.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}let r=c(`msg`,n);t.options?.commitStagedMessageEdit&&et.current.clear({transport:p,assistantID:U.id});let i=j({messageID:r,sessionID:e.sessionID,providerID:t.providerID??U.providerID,modelID:t.modelID??U.modelID,agent:t.agent??U.agent??void 0,text:t.text,attachments:t.attachments,additionalParts:t.parts});Qe(e=>{let t=new Map(e);return t.set(U.id,[...e.get(U.id)??[],i]),t});let a;try{a=await oe(U.id,e,r,Ye(t.text,t.parts,t.attachments))}catch(e){throw pt(U.id,[r]),e}if(z.data?.serverInstanceID){let e=_(U.name);v({serverInstanceID:z.data.serverInstanceID,assistantID:U.id,name:e.displayName||U.name,avatarSeed:U.id,...e.avatarEmoji?{avatarEmoji:e.avatarEmoji}:{}}).catch(()=>void 0)}a.binding.sessionID&&mt(U.id,r,a.binding.sessionID);let o=$e.current;Ie({binding:a.binding,refresh:t=>$(t,{force:t.sessionID!==e.sessionID||t.sessionGeneration!==e.sessionGeneration}),isCurrent:()=>$e.current===o})},sendQueued:async()=>{throw Error(`assistant-server-queue-required`)},create:async()=>{let e=await ee(U.id);await st(U.id),await $(e,{force:!0})},compact:async()=>{let t=await se(U.id,e);await st(U.id),await $(t.binding,{force:!0})},abort:async()=>{await ie(U.id,e)}},shortcuts:{cycle:dt,new:async()=>{let e=await ee(U.id);await st(U.id),await $(e,{force:!0})},abort:async()=>{await ie(U.id,e)},submit:()=>{}}}},[F,U,z.data?.serverInstanceID,lt,st,dt,K,q,bt,X.data,X.isError,X.isPending,X.isSuccess,Z.isError,Z.isPending,Z.isSuccess,$,mt,pt,vt,A,Q,at,G,Le,p,yt,ut]),St=h(()=>{if(he(),f){f.openSettings();return}let e=a.getState();e.setSettingsPage(`assistants`),e.setSettingsDialogOpen(!0)}),Ct=h(e=>{ue(e,f?{openMobileSettings:f.openSettings}:void 0)}),[wt,Tt]=J.useState(null),Et=h(e=>{Tt(e)}),Dt=h(e=>{e||Tt(null)}),Ot=h(()=>{a.getState().setActiveMainTab(`chat`)}),kt=h(()=>{if(t){t();return}Ot()}),At=(e,t,n,r)=>(0,Y.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[R?(0,Y.jsx)(Xe,{assistant:U,onBack:kt}):null,(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center px-6 text-center`,children:[(0,Y.jsx)(pe,{name:e,className:`size-6 text-muted-foreground`}),(0,Y.jsx)(`h1`,{className:`mt-4 typography-ui-header font-semibold`,children:t}),n?(0,Y.jsx)(`p`,{className:`mt-2 max-w-md typography-ui text-muted-foreground`,children:n}):null,r?(0,Y.jsx)(`div`,{className:`mt-5`,children:r}):null]})]});if(z.isPending||B.isPending)return At(`ai-agent`,u(`assistants.state.unavailable`));if(z.isError||!z.data?.supported||!z.data.enabled||!V?.enabled)return At(`cloud-off`,u(`assistants.state.unavailable`));if(!V.assistants.length)return At(`ai-agent`,u(`assistants.onboarding.title`),u(`assistants.onboarding.description`),(0,Y.jsx)(ge,{onClick:St,children:u(`assistants.onboarding.action`)}));if(!U)return At(`ai-agent`,u(`assistants.state.unavailable`));if(!xt)return(0,Y.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background`,children:[R?(0,Y.jsx)(Xe,{assistant:U,onBack:kt}):null,(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-3 px-6`,"aria-busy":`true`,"aria-label":u(`assistants.state.unavailable`),children:[(0,Y.jsx)(`div`,{className:`size-10 animate-pulse rounded-xl bg-[var(--surface-muted)] motion-reduce:animate-none`}),(0,Y.jsx)(`div`,{className:`h-3.5 w-36 animate-pulse rounded-md bg-[var(--surface-muted)] motion-reduce:animate-none`})]})]});let jt=_(U.name),Mt=U.enabled?B.isError?u(`assistants.state.staleSnapshot`):null:u(`assistants.state.assistantDisabled`);return(0,Y.jsxs)(`div`,{className:`relative flex h-full min-h-0 overflow-hidden bg-background`,"data-presentation":`workspace`,children:[R?null:(0,Y.jsxs)(`section`,{className:`flex h-full min-h-0 w-[clamp(16rem,22vw,20rem)] shrink-0 flex-col overflow-hidden`,children:[(0,Y.jsx)(`header`,{className:`shrink-0 px-4 pb-3 pt-4 sm:px-5`,children:(0,Y.jsx)(`h1`,{className:`truncate typography-ui-label font-semibold text-foreground`,children:u(`assistants.title`)})}),(0,Y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 pb-4 sm:px-4`,role:`listbox`,"aria-label":u(`assistants.listAria`),children:(0,Y.jsx)(`div`,{className:`flex flex-col gap-1 border-t border-border/40 pt-3`,children:V.assistants.map(e=>{let t=e.id===H,n=_(e.name);return(0,Y.jsx)(Ze,{assistantID:e.id,displayName:n.displayName,avatarEmoji:n.avatarEmoji??void 0,modeLabel:e.mode===`stateless`?u(`assistants.mode.stateless`):u(`assistants.mode.continuous`),selected:t,enabled:e.enabled,editLabel:u(`assistants.menu.edit`),deleteLabel:u(`assistants.settings.delete`),onSelect:()=>me(e.id),onEdit:()=>Ct(e.id),onDelete:()=>Et(e)},e.id)})})})]}),(0,Y.jsx)(Ne,{assistant:wt,open:wt!==null,onOpenChange:Dt}),(0,Y.jsxs)(`div`,{className:fe(`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background`,!R&&`border-l border-border/60`),children:[R?(0,Y.jsx)(Xe,{assistant:U,onBack:kt}):(0,Y.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-3 border-b border-border/40 px-4 sm:px-5`,children:[(0,Y.jsx)(de,{name:U.id,emoji:jt.avatarEmoji,size:24,label:jt.displayName||U.name}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate typography-ui-label font-medium`,children:jt.displayName}),(0,Y.jsx)(`div`,{className:`mt-0.5 truncate typography-micro leading-none text-muted-foreground/70`,children:U.mode===`stateless`?u(`assistants.conversation.statelessHint`):u(`assistants.conversation.continuousHint`)})]})]}),(0,Y.jsx)(Oe,{onRevertMessage:gt,onEditMessage:U.mode===`continuous`?_t:void 0,assistant:U,sessionID:G,warning:Mt,surface:xt,pendingUserMessages:tt,onPendingUserMessagesMaterialized:ht})]})]})};export{Ge as n,Ne as r,Qe as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-capacitor-app-PzT84wSx.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{D as t,j as n,k as r,t as i,y as a}from"./useUIStore-5agS8bsW.js";import{$t as o,It as s,Lt as c,Xt as l,Yt as u,Zt as d,d as f,dn as p,en as m,et as h,kn as g,nn as _,p as v,r as y,s as b,tn as x,u as S,xn as C}from"./persistence-D1lIuyqO.js";import{a as w,i as T,r as E}from"./vendor-zustand-B4dlGEM2.js";import{nt as D,rt as O,tt as k}from"./vendor-base-ui-CnHfUmDN.js";import{Mt as A,St as j,n as M,t as ee}from"./platform-G8Cxe5wN.js";import{o as N}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as P}from"./vendor-react-DLPElpoQ.js";import{s as F}from"./vendor-tanstack-react-query-D7pys_c9.js";import{t as I}from"./types-BuiqMmh_.js";import{A as L,G as R,H as z,K as te,L as ne,P as B,Q as V,T as re,V as H,W as U,X as ie,Z as ae,a as oe,g as se,ht as ce,lt as le,mt as ue,pt as de,q as fe,st as W,tt as pe}from"./vendor-codemirror-autocomplete-DHomsvW7.js";import{n as me}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as he,r as ge,t as _e}from"./clipboard-ByPKHEt8.js";import{Gn as ve,In as ye,Ln as be,Mn as xe,Vn as Se,Wn as Ce,go as G,hr as we,ii as Te,ja as Ee,l as De,un as Oe,vr as K}from"./useMobileNavigationStore-CtwYvj4I.js";import{r as ke,t as q}from"./utils-BxJEIWv5.js";import{n as J}from"./Icon-DiIuWOuC.js";import{n as Ae,o as je,t as Me}from"./dialog-CQLvE6F6.js";import{n as Ne,t as Y}from"./button-DaAoVF4X.js";import{L as Pe,_ as Fe,b as Ie,c as Le,n as Re,s as ze,u as Be}from"./gitApi-B11XffZP.js";import{A as Ve,N as He,S as Ue,a as We,g as Ge,h as Ke,l as qe,n as Je,o as Ye,r as Xe,t as Ze,v as Qe,x as $e}from"./projectMeta-DMM_G-a5.js";import{t as et}from"./input-XiL2-2gG.js";import{i as tt,n as nt,t as rt}from"./tooltip-BLugzWq-.js";import{A as it,B as at,F as ot,G as st,I as ct,L as lt,P as ut,d as dt,f as ft,k as pt,l as mt,o as ht,r as gt}from"./useSessionAutoCleanup-jK8ZenbX.js";import{n as _t}from"./useThemeSystem-DMzWVJaW.js";import{D as vt,E as yt,N as bt,d as xt,l as St,p as Ct,u as wt}from"./radio-DQ3ENkQN.js";import{i as Tt,n as Et}from"./OverlayScrollbar-isP804Zw.js";import{i as Dt}from"./appThemeRegistry-BG1qltDX.js";import{a as Ot}from"./url-DMs_PgIC.js";import{r as kt}from"./markdown-worker-BDyY0vt6.js";import{n as At,r as jt,t as Mt}from"./collapsible-BmuQu0dq.js";import{a as Nt,d as Pt,o as Ft,s as It}from"./vendor-codemirror-commands-C9DCaJ0C.js";import{a as Lt,c as Rt,i as zt,o as Bt,r as Vt,s as Ht}from"./vendor-codemirror-search-D2SOgzph.js";import{n as Ut,t as Wt}from"./vendor-replit-codemirror-vim-CEibx3EP.js";import{i as Gt,n as Kt,r as qt,t as Jt}from"./projectActions-CWvNGKfA.js";var Yt=[{id:`claude`,name:`Claude`},{id:`codex`,name:`Codex`},{id:`cursor`,name:`Cursor`},{id:`github-copilot`,name:`GitHub Copilot`},{id:`google`,name:`Google`},{id:`kimi-for-coding`,name:`Kimi for Coding`},{id:`nano-gpt`,name:`NanoGPT`},{id:`openrouter`,name:`OpenRouter`},{id:`zai-coding-plan`,name:`z.ai`},{id:`zhipuai-coding-plan`,name:`Zhipu AI Coding Plan`},{id:`minimax-cn-coding-plan`,name:`MiniMax Coding Plan (minimaxi.com)`},{id:`minimax-coding-plan`,name:`MiniMax Coding Plan (minimax.io)`},{id:`ollama-cloud`,name:`Ollama Cloud`},{id:`wafer`,name:`Wafer.ai`},{id:`opencode-go`,name:`OpenCode Go`},{id:`xai`,name:`Grok`}],X=P(),Z=D();function Xt(e){let t=(0,X.c)(4),n,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Z.jsx)(`path`,{d:`M15.688 2.343a2.588 2.588 0 00-3.61 0l-9.626 9.44a.863.863 0 01-1.203 0 .823.823 0 010-1.18l9.626-9.44a4.313 4.313 0 016.016 0 4.116 4.116 0 011.204 3.54 4.3 4.3 0 013.609 1.18l.05.05a4.115 4.115 0 010 5.9l-8.706 8.537a.274.274 0 000 .393l1.788 1.754a.823.823 0 010 1.18.863.863 0 01-1.203 0l-1.788-1.753a1.92 1.92 0 010-2.754l8.706-8.538a2.47 2.47 0 000-3.54l-.05-.049a2.588 2.588 0 00-3.607-.003l-7.172 7.034-.002.002-.098.097a.863.863 0 01-1.204 0 .823.823 0 010-1.18l7.273-7.133a2.47 2.47 0 00-.003-3.537z`}),r=(0,Z.jsx)(`path`,{d:`M14.485 4.703a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a4.115 4.115 0 000 5.9 4.314 4.314 0 006.016 0l7.12-6.982a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a2.588 2.588 0 01-3.61 0 2.47 2.47 0 010-3.54l7.12-6.982z`}),t[0]=n,t[1]=r):(n=t[0],r=t[1]);let i;return t[2]===e?i=t[3]:(i=(0,Z.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,fill:`currentColor`,stroke:`currentColor`,strokeWidth:`0.5`,fillRule:`evenodd`,viewBox:`-0.5 -0.5 25 25`,...e,children:[n,r]}),t[2]=e,t[3]=i),i}var Q=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.replace(/\\/g,`/`);return n.length>1?n.replace(/\/+$/,``):n},Zt=()=>{let e=G.getState().getActiveProject?.();return Q(e?.path)??Q(A.getDirectory())},Qt=(e,n=t())=>f.mcp.configs(e,n),$t=(e,n=t())=>f.mcp.status(e,n),en=e=>e?A.getScopedApiClient(e):A.getApiClient(),tn=(e=Zt(),n=t())=>{let r=Q(e);return{queryKey:Qt(r,n),queryFn:async({signal:e})=>{let t=r?`?directory=${encodeURIComponent(r)}`:``,n=await g(`/api/config/mcp${t}`,{headers:r?{"x-opencode-directory":r}:void 0,signal:e});if(!n.ok)throw Error(`Failed to load MCP configs`);let i=await n.json();if(!Array.isArray(i))throw Error(`Invalid MCP configs response`);return i},staleTime:5e3,retry:2}},nn=(e,n=t())=>{let r=Q(e);return{queryKey:$t(r,n),queryFn:async()=>(await en(r).mcp.status({},{throwOnError:!0})).data,staleTime:2e3,retry:1}},rn=(e,t)=>{let n=(0,X.c)(9),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=G(un),o,s;if(n[2]!==a||n[3]!==e){let t=e===void 0?Q(a)??Q(A.getDirectory()):Q(e);s=F,o=tn(t),n[2]=a,n[3]=e,n[4]=o,n[5]=s}else o=n[4],s=n[5];let c;return n[6]!==i.enabled||n[7]!==o?(c={...o,enabled:i.enabled},n[6]=i.enabled,n[7]=o,n[8]=c):c=n[8],s(c)},an=(e,t)=>{let n=(0,X.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=j(dn),o=e===void 0?a:e,s;n[2]===o?s=n[3]:(s=nn(Q(o)),n[2]=o,n[3]=s);let c;return n[4]!==i.enabled||n[5]!==s?(c={...s,enabled:i.enabled},n[4]=i.enabled,n[5]=s,n[6]=c):c=n[6],F(c)},on=(e=S,n=Zt(),r=t())=>e.getQueryData(Qt(Q(n),r))??[],sn=(e=S,n,r=t())=>e.getQueryData($t(Q(n),r))??{},cn=async(e,n,r)=>{let i=Q(n);return t()===r?e.fetchQuery({...tn(i,r),staleTime:0}):on(e,i,r)},ln=async(e,n,r)=>{let i=Q(n);return t()===r?e.fetchQuery({...nn(i,r),staleTime:0}):sn(e,i,r)};function un(e){return e.getActiveProject?.()?.path??null}function dn(e){return e.currentDirectory}var fn={},pn=(e,n=t())=>JSON.stringify([n,Q(e)]),mn=(e,t,n)=>{if(!e[t]?.[n])return e;let r={...e[t]};return delete r[n],{...e,[t]:r}},hn=e=>{let t=Q(e);return t?A.getScopedApiClient(t):A.getApiClient()},gn=e=>Q(e===void 0?j.getState().currentDirectory:e),_n=w()(E((e,n)=>({diagnosticsByDirectory:{},getDiagnosticForDirectory:e=>{let t=pn(gn(e));return n().diagnosticsByDirectory[t]??fn},clearDiagnostic:(t,n,r)=>{let i=pn(gn(n),r);e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,i,t)}))},connect:async(n,r)=>{let i=gn(r),a=t(),o=pn(i,a),s=hn(i);try{await s.mcp.connect({name:n},{throwOnError:!0})}catch(t){let r=t instanceof Error?t.message:`Connection failed`;throw e(e=>({diagnosticsByDirectory:{...e.diagnosticsByDirectory,[o]:{...e.diagnosticsByDirectory[o]??{},[n]:{status:`failed`,error:r}}}})),t}await ln(S,i,a),e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,o,n)}))},disconnect:async(n,r)=>{let i=gn(r),a=t(),o=pn(i,a);await hn(i).mcp.disconnect({name:n},{throwOnError:!0}),await ln(S,i,a),e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,o,n)}))},startAuth:async(e,t)=>{let n=(await hn(gn(t)).mcp.auth.start({name:e},{throwOnError:!0})).data?.authorizationUrl;if(!n)throw Error(`Authorization URL was not returned`);return n},completeAuth:async(n,r,i)=>{let a=gn(i),o=t(),s=pn(a,o);await hn(a).mcp.auth.callback({name:n,code:r},{throwOnError:!0}),await ln(S,a,o),e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,s,n)}))},clearAuth:async(n,r)=>{let i=gn(r),a=t(),o=pn(i,a);await hn(i).mcp.auth.remove({name:n},{throwOnError:!0}),await ln(S,i,a),e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,o,n)}))},testConnection:async(n,r)=>{let i=gn(r),a=t(),o=pn(i,a),s=hn(i),c=sn(S,i,a)[n]?.status===`connected`,l,u;try{await s.mcp.connect({name:n},{throwOnError:!0})}catch(t){l=t instanceof Error?t.message:`Connection failed`,e(e=>({diagnosticsByDirectory:{...e.diagnosticsByDirectory,[o]:{...e.diagnosticsByDirectory[o]??{},[n]:{status:`failed`,error:l??`Connection failed`}}}}))}let d=(await ln(S,i,a))[n],f=d;if(!c&&d?.status===`connected`){try{await s.mcp.disconnect({name:n},{throwOnError:!0})}catch(e){u=`Connection test succeeded, but cleanup disconnect failed: ${e instanceof Error?e.message:`Disconnect failed`}`}await ln(S,i,a)}return l||e(e=>({diagnosticsByDirectory:mn(e.diagnosticsByDirectory,o,n)})),{status:f??sn(S,i,a)[n],error:l,warning:u}}}))),vn=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,yn=()=>vn(`1.18.2-beta.30`),bn=(e,t)=>vn(e)??t,xn=async()=>{let e=yn();if(!M())return e;try{let{App:t}=await N(async()=>{let{App:e}=await import(`./vendor-capacitor-app-PzT84wSx.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2]));return bn((await t.getInfo()).version,e)}catch{return e}},Sn=`https://openchamber.xiaobe.top/v1/update/check`,Cn=`https://openchamber-update.vercel.app/v1/update/check`,wn=`https://github.com/yee94/openchamber/releases/latest`,Tn=`https://github.com/yee94/openchamber/releases`,En=`https://testflight.apple.com/join/ZCENBHtm`,Dn=1e4;function On(e){let t=String(e||``).replace(/^v/,``).split(`+`)[0]??``,n=t.indexOf(`-`);return{parts:(n>=0?t.slice(0,n):t).split(`.`).map(e=>{let t=Number.parseInt(e||`0`,10);return Number.isFinite(t)?t:0}),prerelease:n>=0}}function kn(e,t){let n=On(e),r=On(t),i=Math.max(n.parts.length,r.parts.length);for(let e=0;e<i;e+=1){let t=(n.parts[e]||0)-(r.parts[e]||0);if(t!==0)return t}return n.prerelease===r.prerelease?0:n.prerelease?-1:1}function An(){return[Sn,Cn]}function jn(e,t,n=Date.now){let r=e-n();return r<=0||t<=0?null:Math.max(1,Math.ceil(r/t))}function Mn(e){return{appType:`mobile-capacitor`,deviceClass:e.deviceClass||`mobile`,platform:e.platform===`ios`||e.platform===`android`?e.platform:`android`,arch:e.arch||`unknown`,channel:`stable`,currentVersion:e.currentVersion,instanceMode:`remote`,reportUsage:e.reportUsage===!0}}async function Nn(e,t,n,r){try{if(M())try{let{CapacitorHttp:r}=await N(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([2,1])),i=Object.fromEntries(new Headers(t.headers).entries()),a;if(typeof t.body==`string`)try{a=JSON.parse(t.body)}catch{a=t.body}let o=await Promise.race([r.request({url:e,method:t.method||`GET`,headers:i,data:a,connectTimeout:n,readTimeout:n}),new Promise(e=>{window.setTimeout(()=>e(null),n)})]);return o?{ok:o.status>=200&&o.status<300,status:o.status,url:typeof o.url==`string`?o.url:e,json:async()=>{if(typeof o.data==`string`)try{return JSON.parse(o.data)}catch{return o.data}return o.data}}:null}catch{}let i=await r(e,{...t,signal:AbortSignal.timeout(n)});return{ok:i.ok,status:i.status,url:i.url,json:()=>i.json()}}catch{return null}}function Pn(e,t){return e===`ios`?En:`${Tn}/download/v${t}/app-release.apk`}function Fn(e,t,n){if(typeof e.latestVersion!=`string`||e.latestVersion.trim().length===0)return null;let r=e.latestVersion.trim(),i=kn(r,t);if(i<0)return null;let a=typeof e.releaseNotesUrl==`string`&&e.releaseNotesUrl.trim().length>0?e.releaseNotesUrl.trim():`${Tn}/tag/v${r}`,o=typeof e.downloadUrl==`string`&&e.downloadUrl.trim().length>0?e.downloadUrl.trim():typeof e.download?.url==`string`&&e.download.url.trim().length>0?e.download.url.trim():Pn(n,r);return{available:!!e.updateAvailable&&i>0,version:r,currentVersion:t,body:typeof e.releaseNotes==`string`?e.releaseNotes:void 0,releaseUrl:a,downloadUrl:o,nextSuggestedCheckInSec:typeof e.nextSuggestedCheckInSec==`number`&&Number.isFinite(e.nextSuggestedCheckInSec)?e.nextSuggestedCheckInSec:void 0}}async function In(e,t,n,r){let i=await Nn(e,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(Mn(t))},n,r);if(!i?.ok)return null;let a;try{a=await i.json()}catch{return null}return Fn(a,t.currentVersion,t.platform)}async function Ln(e,t,n,r){let i=await Nn(wn,{method:`GET`,headers:{Accept:`text/html`},redirect:`follow`},n,r);if(!i?.ok)return null;let a=typeof i.url==`string`&&i.url.length>0?i.url:wn,o=null;try{o=new URL(a).pathname.match(/\/releases\/tag\/v(\d+\.\d+\.\d+(?:-[\w.]+)?)/)}catch{return null}if(!o?.[1])return null;let s=o[1],c=kn(s,e),l=`${Tn}/tag/v${s}`;return{available:c>0,version:s,currentVersion:e,releaseUrl:l,downloadUrl:Pn(t,s)}}async function Rn(e){let t=e.currentVersion?.trim()||`unknown`;if(t===`unknown`)return{available:!1,currentVersion:t,error:`Unable to check for mobile updates`};let n=e.fetchImpl??fetch,r=e.now??Date.now,i=An(),a=r()+Dn;for(let[t,o]of i.entries()){let s=jn(a,i.length-t+1,r);if(s===null)break;let c=await In(o,e,s,n);if(c)return c}let o=jn(a,1,r);if(o!==null){let r=await Ln(t,e.platform,o,n);if(r)return r}return{available:!1,currentVersion:t,error:`Unable to check for mobile updates`}}function zn(){if(typeof window>`u`)return`unknown`;try{let{deviceType:e}=Et();return e}catch{return`unknown`}}function Bn(){let e=typeof window<`u`?window.__VSCODE_CONFIG__?.arch?.toLowerCase?.():void 0;if(e===`arm64`||e===`aarch64`)return`arm64`;if(e===`x64`||e===`amd64`||e===`x86_64`)return`x64`;let t=(typeof navigator<`u`?navigator.userAgentData:void 0)?.architecture?.toLowerCase?.();if(t===`arm`||t===`arm64`||t===`aarch64`)return`arm64`;if(t===`x86`||t===`x64`||t===`amd64`)return`x64`;let n=typeof navigator<`u`?navigator.userAgent.toLowerCase():``;return n.includes(`aarch64`)||n.includes(`arm64`)||n.includes(`armv`)?`arm64`:n.includes(`x86_64`)||n.includes(`x64`)||n.includes(`amd64`)||n.includes(`win64`)?`x64`:`unknown`}function Vn(){let e=ee();if(e===`android`||e===`ios`)return e;if(typeof navigator>`u`)return`web`;let t=(navigator.platform||``).toLowerCase();return t.includes(`mac`)?`macos`:t.includes(`win`)?`windows`:t.includes(`linux`)?`linux`:`web`}function Hn(e){let t=i.getState().reportUsage,n=new URLSearchParams({reportUsage:t?`true`:`false`});return n.set(`deviceClass`,zn()),n.set(`arch`,Bn()),n.set(`platform`,Vn()),e===`desktop`?(n.set(`appType`,`desktop-electron`),n.set(`instanceMode`,u()?`local`:`remote`),n):e===`vscode`?(n.set(`appType`,`vscode`),n.set(`instanceMode`,`local`),n):e===`mobile`?(n.set(`appType`,`mobile-capacitor`),n.set(`instanceMode`,`remote`),n):(n.set(`appType`,`web`),n.set(`instanceMode`,`unknown`),n)}async function Un(e,t){let n=t??`unknown`;try{let r=Hn(e),i=typeof window<`u`?window.__VSCODE_CONFIG__?.extensionVersion:void 0;t?r.set(`currentVersion`,t):e===`vscode`&&i&&r.set(`currentVersion`,i);let a=await g(`/api/openchamber/update-check?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),o=null;try{o=await a.json()}catch{o=null}if(!a.ok)return{available:!1,currentVersion:n,error:typeof o?.error==`string`&&o.error.trim().length>0?o.error.trim():`Server responded with ${a.status}`};if(!o)return{available:!1,currentVersion:n,error:`Update check returned an invalid response`};let s=typeof o.error==`string`&&o.error.trim().length>0?o.error.trim():void 0;return{available:o.available===!0,version:typeof o.version==`string`?o.version:void 0,currentVersion:typeof o.currentVersion==`string`?o.currentVersion:n,body:typeof o.body==`string`?o.body:void 0,releaseUrl:typeof o.releaseUrl==`string`?o.releaseUrl:void 0,downloadUrl:typeof o.downloadUrl==`string`?o.downloadUrl:void 0,nextSuggestedCheckInSec:typeof o.nextSuggestedCheckInSec==`number`&&Number.isFinite(o.nextSuggestedCheckInSec)?o.nextSuggestedCheckInSec:void 0,packageManager:typeof o.packageManager==`string`?o.packageManager:void 0,updateCommand:typeof o.updateCommand==`string`?o.updateCommand:void 0,error:s}}catch(e){return console.warn(`Failed to check for updates:`,e),{available:!1,currentVersion:n,error:e instanceof Error?e.message:`Failed to check for updates`}}}function Wn(){return M()?`mobile`:d()?`desktop`:o()?`vscode`:m()?`web`:null}var Gn={checking:!1,available:!1,downloading:!1,downloaded:!1,info:null,progress:null,error:null,runtimeType:null,lastChecked:null,nextCheckInSec:null,otaDecision:null,otaPhase:`idle`};function Kn(e,t){return e.primaryAction===`apply_ota`&&e.ota.bundle?{available:!0,otaPhase:`available`,info:{available:!0,version:e.ota.bundle.releaseVersion,currentVersion:t,downloadUrl:e.ota.bundle.url,nextSuggestedCheckInSec:e.nextCheckInSec}}:e.primaryAction===`install_native_required`?{available:e.native.state===`required`||e.native.state===`available`,otaPhase:`idle`,info:{available:e.native.state===`required`||e.native.state===`available`,version:e.native.version,currentVersion:t,downloadUrl:e.native.installUrl,nextSuggestedCheckInSec:e.nextCheckInSec,manualUpdate:!0}}:{available:!1,otaPhase:`idle`,info:{available:!1,currentVersion:t,nextSuggestedCheckInSec:e.nextCheckInSec}}}var qn=w()((e,t)=>({...Gn,checkForUpdates:async()=>{let t=Wn();if(!t)return null;e({checking:!0,error:null,runtimeType:t});try{let n=null,r=null;if(t===`desktop`){let t=await s(),n=t?.downloaded===!0;return e({checking:!1,available:t?.available??!1,downloaded:n,...n?{downloading:!1,progress:null}:{},info:t,error:null,lastChecked:Date.now(),nextCheckInSec:null}),r}if(t===`web`)n=await Un(`web`),r=n?.nextSuggestedCheckInSec??null;else if(t===`vscode`)r=(await Un(`vscode`))?.nextSuggestedCheckInSec??null;else if(t===`mobile`){let t=await xn()??`unknown`,a=M()?C()?.mobileUpdates:void 0;if(a)try{e({otaPhase:`checking`});let n=await a.checkForOtaUpdate(),r=Kn(n,t);if(n.primaryAction===`install_native_required`&&!r.info.downloadUrl){let e=await Rn({currentVersion:t,platform:Vn()===`ios`?`ios`:`android`,deviceClass:zn(),arch:Bn(),reportUsage:i.getState().reportUsage});r.info={...r.info,...e,available:!0,manualUpdate:!0,nextSuggestedCheckInSec:n.nextCheckInSec},r.available=!0}return e({checking:!1,available:r.available,info:r.info,error:r.info.error??null,lastChecked:Date.now(),nextCheckInSec:n.nextCheckInSec,otaDecision:n,otaPhase:r.otaPhase}),n.nextCheckInSec}catch(e){e instanceof I||console.warn(`[OTA] check failed, falling back to legacy mobile update check:`,e)}return n=await Rn({currentVersion:t,platform:Vn()===`ios`?`ios`:`android`,deviceClass:zn(),arch:Bn(),reportUsage:i.getState().reportUsage}),r=n?.nextSuggestedCheckInSec??null,e({checking:!1,available:n?.available??!1,info:n,error:n?.error??null,lastChecked:Date.now(),nextCheckInSec:r,otaDecision:null,otaPhase:`idle`}),r}return e({checking:!1,available:t===`vscode`?!1:n?.available??!1,info:t===`vscode`?null:n,error:t===`vscode`?null:n?.error??null,lastChecked:Date.now(),nextCheckInSec:r}),r}catch(t){return e({checking:!1,error:t instanceof Error?t.message:`Failed to check for updates`}),null}},downloadUpdate:async()=>{let{available:n,runtimeType:r}=t();if(!(r!==`desktop`||!n)){e({downloading:!0,error:null,progress:null});try{let n=await s();if(!n?.available)throw Error(`Update detected, but desktop package is not ready yet. Retry in a moment.`);if(e(e=>({info:e.info?{...e.info,...n,body:e.info.body||n.body,available:e.info.available}:n})),n.downloaded||t().downloaded){e({downloading:!1,downloaded:!0,progress:null});return}if(n.downloading&&e({downloading:!0,progress:n.progress??{downloaded:0}}),!await c(t=>{e({progress:t})}))throw Error(`Failed to download update`);e({downloading:!1,downloaded:!0,progress:null})}catch(t){e({downloading:!1,error:t instanceof Error?t.message:`Failed to download update`})}}},subscribeDesktopUpdateEvents:async()=>{if(!d())return()=>{};let n=[],r=await x(n=>{let r=n.event,i=n.data??null;if(r===`Started`){if(!t().downloading)return;e({error:null,progress:{downloaded:0,total:typeof i?.contentLength==`number`?i.contentLength:void 0}});return}if(r===`Progress`){if(!t().downloading)return;e({progress:{downloaded:typeof i?.downloaded==`number`?i.downloaded:0,total:typeof i?.total==`number`?i.total:void 0}});return}r===`Finished`&&e({downloading:!1,downloaded:!0,progress:null})});r&&n.push(r);let i=await _(t=>{t.downloaded&&e({downloading:!1,downloaded:!0,available:!0,progress:null})});return i&&n.push(i),async()=>{for(let e of n)try{let t=e();t instanceof Promise&&await t}catch{}}},restartToUpdate:async()=>{let{downloaded:n,runtimeType:r}=t();if(!(r!==`desktop`||!n))try{if(!await p())throw Error(`Failed to restart`)}catch(t){e({error:t instanceof Error?t.message:`Failed to restart`})}},setOtaPhase:(t,n=null)=>{e({otaPhase:t,...n===void 0?{}:{error:n}})},dismiss:()=>{e({available:!1,downloaded:!1,info:null,otaDecision:null,otaPhase:`idle`})},reset:()=>{e(Gn)}})),$=e(O(),1),Jn=`https://github.com/yee94/openchamber/releases`;function Yn(e){let t=new Date(`${e}T00:00:00`);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(ge(),{year:`numeric`,month:`short`,day:`numeric`}).format(t)}function Xn(e){return e.replace(/^## \[[^\]]+\] - \d{4}-\d{2}-\d{2}\s*\n?/,``).trim()}function Zn(e){return e.replace(/(^|[^a-zA-Z0-9])@([a-zA-Z0-9-]+)/g,`$1[@$2](https://github.com/$2)`)}function Qn(e,t){let n=e.split(`.`).map(e=>Number.parseInt(e,10)),r=t.split(`.`).map(e=>Number.parseInt(e,10));for(let e=0;e<3;e+=1){let t=Number.isFinite(n[e])?n[e]:0,i=Number.isFinite(r[e])?r[e]:0;if(t!==i)return i-t}return 0}function $n(e){let t=/^## \[(\d+\.\d+\.\d+)\] - (\d{4}-\d{2}-\d{2})\s*$/gm,n=[],r;for(;(r=t.exec(e))!==null;)n.push({version:r[1]??``,date:r[2]??``,start:r.index});return n.length===0?[]:n.map((t,r)=>{let i=n[r+1]?.start??e.length,a=e.slice(t.start,i).trim();return{version:t.version,date:t.date,start:t.start,end:i,raw:a}})}var er=2e3,tr=6e5;async function nr(){try{let e=await g(`/api/openchamber/update-install`,{method:`POST`,headers:{"Content-Type":`application/json`}});return e.ok?{success:!0,autoRestart:(await e.json().catch(()=>({}))).autoRestart!==!1}:{success:!1,error:(await e.json().catch(()=>({}))).error||`Server error: ${e.status}`}}catch(e){return{success:!1,error:e instanceof Error?e.message:void 0}}}async function rr(){try{return(await g(`/health`,{method:`GET`,headers:{Accept:`application/json`}})).ok}catch{return!1}}async function ir(e,t=Math.ceil(tr/er),n=er){for(let r=0;r<t;r++){try{let t=await g(`/api/openchamber/update-check`,{method:`GET`,headers:{Accept:`application/json`}});if(t.ok){let n=await t.json().catch(()=>null);if(n&&n.available===!1||n&&typeof n.currentVersion==`string`&&typeof e==`string`&&n.currentVersion!==e)return!0}else if((t.status===401||t.status===403)&&await rr())return!0}catch{}await new Promise(e=>setTimeout(e,n))}return!1}var ar=({open:e,onOpenChange:t,info:n,downloading:r,downloaded:i,progress:a,error:o,onDownload:s,onRestart:c,runtimeType:l=`desktop`})=>{let{t:u}=he(),[d,f]=(0,$.useState)(!1),[p,m]=(0,$.useState)(`idle`),[h,g]=(0,$.useState)(null),_=n?.version?n.releaseUrl||`${Jn}/tag/v${n.version}`:Jn,v=n?.downloadUrl||_,y=a?.total?Math.round(a.downloaded/a.total*100):0,b=l===`web`,x=l===`mobile`,S=l===`desktop`&&n?.manualUpdate===!0,C=n?.updateCommand||`openchamber update`;(0,$.useEffect)(()=>{e||(m(`idle`),g(null))},[e]);let w=async()=>{(await _e(C)).ok&&(f(!0),setTimeout(()=>f(!1),2e3))},T=(0,$.useCallback)(async e=>{await Ot(e)},[]),E=(0,$.useCallback)(async()=>{m(`updating`),g(null);let e=await nr();if(!e.success){m(`error`),g(e.error||u(`updateDialog.error.updateFailed`));return}e.autoRestart&&(m(`restarting`),await new Promise(e=>setTimeout(e,2e3))),m(`reconnecting`),await ir(n?.currentVersion)?window.location.reload():(m(`error`),g(u(`updateDialog.error.takingLonger`)))},[n?.currentVersion,u]),D=(0,$.useCallback)(()=>{T(v)},[T,v]),O=p!==`idle`&&p!==`error`,k=(0,$.useMemo)(()=>{if(!n?.body)return null;let e=n.body.trim();if(!e)return null;let t=$n(e);if(t.length===0)return{kind:`raw`,title:u(`updateDialog.changelog.title`),content:Zn(e)};let r=[...t].sort((e,t)=>Qn(e.version,t.version));return{kind:`sections`,title:u(`updateDialog.changelog.title`),sections:r.map(t=>({version:t.version,dateLabel:Yn(t.date),content:Zn(Xn(t.raw)||e)}))}},[n?.body,u]);return(0,Z.jsx)(Me,{open:e,onOpenChange:O?void 0:t,children:(0,Z.jsxs)(Ae,{className:`max-w-4xl p-5 bg-background border-[var(--interactive-border)]`,showCloseButton:!0,children:[(0,Z.jsxs)(`div`,{className:`flex items-center mb-1`,children:[(0,Z.jsxs)(je,{className:`flex items-center gap-2.5`,children:[(0,Z.jsx)(J,{name:`download-cloud`,className:`h-5 w-5 text-[var(--primary-base)]`}),(0,Z.jsx)(`span`,{className:`text-lg font-semibold text-foreground`,children:u(p===`restarting`||p===`reconnecting`?`updateDialog.header.updating`:`updateDialog.header.updateAvailable`)})]}),(n?.currentVersion||n?.version)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 font-mono text-sm ml-3`,children:[n?.currentVersion&&(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:n.currentVersion}),n?.currentVersion&&n?.version&&(0,Z.jsx)(`span`,{className:`text-muted-foreground/50`,children:`→`}),n?.version&&(0,Z.jsx)(`span`,{className:`text-[var(--primary-base)] font-medium`,children:n.version})]})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[b&&O&&(0,Z.jsxs)(`div`,{className:`rounded-lg bg-[var(--surface-elevated)]/30 p-5 border border-[var(--surface-subtle)]`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(J,{name:`loader`,className:`h-5 w-5 animate-spin text-[var(--primary-base)]`}),(0,Z.jsxs)(`div`,{className:`typography-ui-label text-foreground`,children:[p===`updating`&&u(`updateDialog.status.installingUpdate`),p===`restarting`&&u(`updateDialog.status.serverRestarting`),p===`reconnecting`&&u(`updateDialog.status.waitingForServer`)]})]}),(0,Z.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:u(`updateDialog.status.autoReloadHint`)})]}),k&&!O&&(0,Z.jsx)(`div`,{className:`rounded-lg border border-[var(--surface-subtle)] bg-[var(--surface-elevated)]/20 overflow-hidden`,children:(0,Z.jsx)(Ve,{className:`max-h-[400px] p-0`,fillContainer:!1,children:k.kind===`raw`?(0,Z.jsx)(`div`,{className:`p-4 typography-markdown-body text-foreground leading-relaxed break-words [&_a]:!text-[var(--primary-base)] [&_a]:!no-underline [&_a:hover]:!underline`,onClickCapture:e=>{let t=e.target.closest(`a`);t&&t.href&&(e.preventDefault(),e.stopPropagation(),T(t.href))},children:(0,Z.jsx)(Dt,{content:k.content,disableLinkSafety:!0,enableFileReferences:!1})}):(0,Z.jsx)(`div`,{className:`divide-y divide-[var(--surface-subtle)]`,children:k.sections.map(e=>(0,Z.jsxs)(`div`,{className:`p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Z.jsxs)(`span`,{className:`typography-ui-label font-mono text-[var(--primary-base)] bg-[var(--primary-base)]/10 px-1.5 py-0.5 rounded`,children:[`v`,e.version]}),(0,Z.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground`,children:e.dateLabel})]}),(0,Z.jsx)(`div`,{className:`typography-markdown-body text-foreground leading-relaxed break-words [&_a]:!text-[var(--primary-base)] [&_a]:!no-underline [&_a:hover]:!underline`,onClickCapture:e=>{let t=e.target.closest(`a`);t&&t.href&&(e.preventDefault(),e.stopPropagation(),T(t.href))},children:(0,Z.jsx)(Dt,{content:e.content,disableLinkSafety:!0,enableFileReferences:!1})})]},e.version))})})}),b&&p===`error`&&(0,Z.jsxs)(`div`,{className:`space-y-2 mt-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 typography-meta text-muted-foreground`,children:[(0,Z.jsx)(J,{name:`terminal`,className:`h-4 w-4`}),(0,Z.jsx)(`span`,{children:u(`updateDialog.fallback.updateViaTerminal`)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 p-1 pl-3 bg-[var(--surface-elevated)]/50 rounded-md border border-[var(--surface-subtle)]`,children:[(0,Z.jsx)(`code`,{className:`flex-1 font-mono text-sm text-foreground overflow-x-auto whitespace-nowrap`,children:C}),(0,Z.jsx)(`button`,{onClick:w,className:q(`flex items-center justify-center p-2 rounded`,`text-muted-foreground hover:text-foreground hover:bg-[var(--interactive-hover)]`,`transition-colors`,d&&`text-[var(--status-success)]`),title:u(d?`updateDialog.actions.copied`:`updateDialog.actions.copyCommand`),children:d?(0,Z.jsx)(J,{name:`check`,className:`h-4 w-4`}):(0,Z.jsx)(J,{name:`clipboard`,className:`h-4 w-4`})})]})]}),!b&&!x&&r&&(0,Z.jsxs)(`div`,{className:`space-y-2 mt-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:u(`updateDialog.status.downloadingPayload`)}),(0,Z.jsxs)(`span`,{className:`font-mono text-foreground`,children:[y,`%`]})]}),(0,Z.jsx)(`div`,{className:`h-1.5 bg-[var(--surface-subtle)] rounded-full overflow-hidden`,children:(0,Z.jsx)(`div`,{className:`h-full bg-[var(--primary-base)] transition-all duration-300`,style:{width:`${y}%`}})})]}),(o||h)&&(0,Z.jsx)(`div`,{className:`p-3 mt-4 bg-[var(--status-error-background)] border border-[var(--status-error-border)] rounded-lg`,children:(0,Z.jsx)(`p`,{className:`text-sm text-[var(--status-error)]`,children:o||h})})]}),(0,Z.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-4`,children:[(0,Z.jsxs)(`a`,{href:_,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors shrink-0`,children:[(0,Z.jsx)(J,{name:`external-link`,className:`h-4 w-4`}),`GitHub`]}),(0,Z.jsxs)(`div`,{className:`flex-1 flex justify-end`,children:[!b&&!x&&!S&&!i&&!r&&(0,Z.jsxs)(`button`,{onClick:s,className:`flex items-center justify-center gap-2 px-5 py-2 rounded-md text-sm font-medium bg-[var(--primary-base)] text-[var(--primary-foreground)] hover:opacity-90 transition-opacity`,children:[(0,Z.jsx)(J,{name:`download`,className:`h-4 w-4`}),u(`updateDialog.actions.downloadUpdate`)]}),!b&&!x&&S&&!i&&!r&&(0,Z.jsxs)(Y,{onClick:()=>void T(_),size:`default`,children:[(0,Z.jsx)(J,{name:`external-link`,className:`h-4 w-4`}),u(`updateDialog.actions.openMobileUpdate`)]}),!b&&!x&&r&&(0,Z.jsxs)(`button`,{disabled:!0,className:`flex items-center justify-center gap-2 px-5 py-2 rounded-md text-sm font-medium bg-[var(--primary-base)] text-[var(--primary-foreground)] cursor-not-allowed`,children:[(0,Z.jsx)(J,{name:`loader`,className:`h-4 w-4 animate-spin`}),u(`updateDialog.status.downloading`)]}),!b&&!x&&i&&(0,Z.jsxs)(`button`,{onClick:c,className:`flex items-center justify-center gap-2 px-5 py-2 rounded-md text-sm font-medium bg-[var(--primary-base)] text-[var(--primary-foreground)] hover:opacity-90 transition-opacity`,children:[(0,Z.jsx)(J,{name:`restart`,className:`h-4 w-4`}),u(`updateDialog.actions.restartToUpdate`)]}),x&&(0,Z.jsxs)(Y,{onClick:D,size:`default`,children:[(0,Z.jsx)(J,{name:`external-link`,className:`h-4 w-4`}),u(`updateDialog.actions.openMobileUpdate`)]}),b&&!O&&(0,Z.jsxs)(`button`,{onClick:E,className:`flex items-center justify-center gap-2 px-5 py-2 rounded-md text-sm font-medium bg-[var(--primary-base)] text-[var(--primary-foreground)] hover:opacity-90 transition-opacity`,children:[(0,Z.jsx)(J,{name:`download`,className:`h-4 w-4`}),u(`updateDialog.actions.updateNow`)]}),b&&O&&(0,Z.jsxs)(`button`,{disabled:!0,className:`flex items-center justify-center gap-2 px-5 py-2 rounded-md text-sm font-medium bg-[var(--primary-base)] text-[var(--primary-foreground)] cursor-not-allowed`,children:[(0,Z.jsx)(J,{name:`loader`,className:`h-4 w-4 animate-spin`}),u(`updateDialog.status.updating`)]})]})]})]})})},or=e(k(),1);function sr(e){let t=(0,X.c)(20),{label:n,children:r,description:i,itemId:a,ariaLabel:o,className:s,cardClassName:c,cardId:l}=e,u=typeof n==`string`&&/^[\p{Script=Latin}\p{Number}\p{Punctuation}\p{Separator}]+$/u.test(n)?`latin`:void 0,d;t[0]===s?d=t[1]:(d=q(`oc-settings-group`,s),t[0]=s,t[1]=d);let f;t[2]!==n||t[3]!==u?(f=n?(0,Z.jsx)(`div`,{className:`oc-settings-group-label`,"data-settings-label-script":u,children:n}):null,t[2]=n,t[3]=u,t[4]=f):f=t[4];let p;t[5]===c?p=t[6]:(p=q(`oc-settings-group-card`,c),t[5]=c,t[6]=p);let m;t[7]!==l||t[8]!==r||t[9]!==a||t[10]!==p?(m=(0,Z.jsx)(`div`,{id:l,"data-settings-item":a,className:p,children:r}),t[7]=l,t[8]=r,t[9]=a,t[10]=p,t[11]=m):m=t[11];let h;t[12]===i?h=t[13]:(h=i?(0,Z.jsx)(`p`,{className:`oc-settings-group-description text-muted-foreground`,children:i}):null,t[12]=i,t[13]=h);let g;return t[14]!==o||t[15]!==d||t[16]!==f||t[17]!==m||t[18]!==h?(g=(0,Z.jsxs)(`section`,{className:d,"aria-label":o,children:[f,m,h]}),t[14]=o,t[15]=d,t[16]=f,t[17]=m,t[18]=h,t[19]=g):g=t[19],g}function cr(e){let t=(0,X.c)(20),n,r,i,a,o,s,c,l;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8]):({label:s,description:a,descriptionPlacement:l,ariaLabel:n,groupClassName:o,cardClassName:r,children:i,...c}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l);let u=l===void 0?`inside`:l,d=u===`outside`?a:void 0,f=u===`inside`?a:void 0,p;t[9]!==i||t[10]!==s||t[11]!==c||t[12]!==f?(p=(0,Z.jsx)(lr,{label:s,description:f,...c,children:i}),t[9]=i,t[10]=s,t[11]=c,t[12]=f,t[13]=p):p=t[13];let m;return t[14]!==n||t[15]!==r||t[16]!==o||t[17]!==d||t[18]!==p?(m=(0,Z.jsx)(sr,{ariaLabel:n,className:o,cardClassName:r,description:d,children:p}),t[14]=n,t[15]=r,t[16]=o,t[17]=d,t[18]=p,t[19]=m):m=t[19],m}function lr(e){let t=(0,X.c)(22),{label:n,children:r,description:i,itemId:a,className:o,copyClassName:s,controlClassName:c}=e,l;t[0]===o?l=t[1]:(l=q(`oc-settings-group-row oc-settings-split-row`,o),t[0]=o,t[1]=l);let u;t[2]===s?u=t[3]:(u=q(`oc-settings-split-row-copy`,s),t[2]=s,t[3]=u);let d;t[4]===n?d=t[5]:(d=n?(0,Z.jsx)(`div`,{className:`typography-ui-label text-foreground`,children:n}):null,t[4]=n,t[5]=d);let f;t[6]===i?f=t[7]:(f=i?(0,Z.jsx)(`span`,{className:`typography-meta text-muted-foreground`,children:i}):null,t[6]=i,t[7]=f);let p;t[8]!==u||t[9]!==d||t[10]!==f?(p=(0,Z.jsxs)(`div`,{className:u,children:[d,f]}),t[8]=u,t[9]=d,t[10]=f,t[11]=p):p=t[11];let m;t[12]===c?m=t[13]:(m=q(`oc-settings-split-row-control`,c),t[12]=c,t[13]=m);let h;t[14]!==r||t[15]!==m?(h=(0,Z.jsx)(`div`,{"data-settings-value":``,className:m,children:r}),t[14]=r,t[15]=m,t[16]=h):h=t[16];let g;return t[17]!==a||t[18]!==l||t[19]!==p||t[20]!==h?(g=(0,Z.jsxs)(`div`,{"data-settings-item":a,className:l,children:[p,h]}),t[17]=a,t[18]=l,t[19]=p,t[20]=h,t[21]=g):g=t[21],g}function ur(e){let t=(0,X.c)(32),{checked:n,onChange:r,label:i,ariaLabel:a,description:o,itemId:s,disabled:c,className:l}=e,u=c!==void 0&&c,d;t[0]!==n||t[1]!==u||t[2]!==r?(d=()=>{u||r(!n)},t[0]=n,t[1]=u,t[2]=r,t[3]=d):d=t[3];let f=d,p=dr,m=u?`cursor-not-allowed`:`cursor-pointer`,h;t[4]!==l||t[5]!==m?(h=q(`oc-settings-group-row oc-settings-split-row group`,m,l),t[4]=l,t[5]=m,t[6]=h):h=t[6];let g=u?-1:0,_=u||void 0,v,y;t[7]===f?(v=t[8],y=t[9]):(v=e=>{p(e.target)||f()},y=e=>{p(e.target)||(e.key===` `||e.key===`Enter`)&&(e.preventDefault(),f())},t[7]=f,t[8]=v,t[9]=y);let b;t[10]===i?b=t[11]:(b=(0,Z.jsx)(`span`,{className:`typography-ui-label text-foreground`,children:i}),t[10]=i,t[11]=b);let x;t[12]===o?x=t[13]:(x=o?(0,Z.jsx)(`span`,{className:`typography-meta text-muted-foreground`,children:o}):null,t[12]=o,t[13]=x);let S;t[14]!==x||t[15]!==b?(S=(0,Z.jsxs)(`div`,{className:`oc-settings-split-row-copy`,children:[b,x]}),t[14]=x,t[15]=b,t[16]=S):S=t[16];let C;t[17]!==a||t[18]!==n||t[19]!==u||t[20]!==r?(C=(0,Z.jsx)(`div`,{"data-settings-value":``,className:`oc-settings-split-row-control`,children:(0,Z.jsx)(He,{checked:n,onChange:r,disabled:u,ariaLabel:a})}),t[17]=a,t[18]=n,t[19]=u,t[20]=r,t[21]=C):C=t[21];let w;return t[22]!==n||t[23]!==s||t[24]!==S||t[25]!==C||t[26]!==h||t[27]!==g||t[28]!==_||t[29]!==v||t[30]!==y?(w=(0,Z.jsxs)(`div`,{"data-settings-item":s,className:h,role:`button`,tabIndex:g,"aria-pressed":n,"aria-disabled":_,onClick:v,onKeyDown:y,children:[S,C]}),t[22]=n,t[23]=s,t[24]=S,t[25]=C,t[26]=h,t[27]=g,t[28]=_,t[29]=v,t[30]=y,t[31]=w):w=t[31],w}function dr(e){return e instanceof HTMLElement&&e.closest(`button, a, input, select, textarea`)!==null}function fr(e,t,n){return Math.min(n,Math.max(t,e))}function pr(e){if(!Number.isFinite(e))return 0;let t=String(e);if(t.includes(`e-`)){let[,e]=t.split(`e-`);return Number(e)||0}let n=t.split(`.`);return n.length===2?n[1].length:0}function mr(e,t){let n=pr(t);return n<=0?e:Number(e.toFixed(n))}var hr=$.forwardRef(({value:e,onValueChange:t,min:n=-1/0,max:r=1/0,step:i=1,className:a,containerClassName:o,onBlur:s,disabled:c,fallbackValue:l,onClear:u,emptyLabel:d=`—`,...f},p)=>{let{t:m}=he(),[h,g]=$.useState(()=>e===void 0?``:String(e)),{isMobile:_}=Tt(),v=$.useRef(!1),y=$.useRef(null),b=$.useCallback(()=>{if(typeof document>`u`||typeof window>`u`)return;y.current?.();let e=e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation?.(),y.current?.()},t=window.setTimeout(()=>{y.current?.()},700);y.current=()=>{window.clearTimeout(t),document.removeEventListener(`click`,e,!0),y.current=null},document.addEventListener(`click`,e,!0)},[]);$.useEffect(()=>()=>{y.current?.()},[]),$.useEffect(()=>{g(e===void 0?``:String(e))},[e]);let x=$.useMemo(()=>e===void 0?l===void 0?Number.isFinite(n)?n:0:l:e,[l,n,e]),S=$.useRef(x);$.useEffect(()=>{S.current=x},[x]);let C=$.useCallback(e=>{let a=mr(fr(e,n,r),i);S.current=a,t(a)},[r,n,t,i]),w=$.useCallback(e=>{let t=e.target.value;if(g(t),t.trim()===``){u?.();return}let n=Number(t);Number.isFinite(n)&&C(n)},[C,u]),T=$.useCallback(t=>{if(h.trim()===``){u||g(e===void 0?``:String(e)),s?.(t);return}let a=Number(h);if(!Number.isFinite(a))g(e===void 0?``:String(e));else{let t=mr(fr(a,n,r),i);t===e?S.current=t:C(a),g(String(t))}s?.(t)},[C,h,r,n,s,u,i,e]),E=!!(c||x>=r),D=!!(c||x<=n),O=()=>{D||C(S.current-i)},k=()=>{E||C(S.current+i)},A=e=>t=>{t.preventDefault(),t.stopPropagation(),v.current=!0,b(),e()},j=e=>t=>{if(v.current){v.current=!1,t.preventDefault(),t.stopPropagation();return}e()};return _?(0,Z.jsxs)(`div`,{"data-slot":`number-input`,className:q(`flex h-9 shrink-0 items-stretch overflow-x-hidden overflow-y-hidden rounded-lg border border-border bg-transparent select-none overscroll-contain`,`[-webkit-user-select:none] [-webkit-touch-callout:none]`,`disabled:pointer-events-none disabled:opacity-50`,o),children:[(0,Z.jsx)(`button`,{type:`button`,"aria-label":m(`numberInput.actions.decreaseAria`),disabled:D,onTouchStart:A(O),onClick:j(O),className:q(`grid h-full min-h-0 w-9 place-items-center overflow-x-hidden overflow-y-hidden border-r border-border p-0 leading-none touch-none`,`text-muted-foreground`,`disabled:pointer-events-none disabled:opacity-50`,!D&&`active:bg-interactive-hover`),children:(0,Z.jsx)(J,{name:`subtract`,className:`block h-4 w-4`})}),(0,Z.jsx)(`div`,{"data-slot":`number-input-value`,className:q(`flex h-full min-w-0 w-14 items-center justify-center bg-transparent px-1.5`,`text-center text-[16px] leading-none text-foreground [font-variant-numeric:tabular-nums]`,a),"aria-live":`polite`,children:e===void 0?d:h}),(0,Z.jsx)(`button`,{type:`button`,"aria-label":m(`numberInput.actions.increaseAria`),disabled:E,onTouchStart:A(k),onClick:j(k),className:q(`grid h-full min-h-0 w-9 place-items-center overflow-x-hidden overflow-y-hidden border-l border-border p-0 leading-none touch-none`,`text-muted-foreground`,`disabled:pointer-events-none disabled:opacity-50`,!E&&`active:bg-interactive-hover`),children:(0,Z.jsx)(J,{name:`add`,className:`block h-4 w-4`})})]}):(0,Z.jsxs)(`div`,{"data-slot":`number-input`,className:q(`flex h-7 shrink-0 items-stretch overflow-x-hidden overflow-y-hidden rounded-lg border border-border bg-transparent`,`disabled:pointer-events-none disabled:opacity-50`,o),children:[(0,Z.jsx)(`button`,{type:`button`,"aria-label":m(`numberInput.actions.decreaseAria`),disabled:D,onClick:()=>C(S.current-i),className:q(`flex h-full w-7 items-center justify-center overflow-x-hidden overflow-y-hidden border-r border-border p-0 leading-none touch-manipulation`,`text-muted-foreground hover:bg-interactive-hover hover:text-foreground`,`disabled:pointer-events-none disabled:opacity-50`),children:(0,Z.jsx)(J,{name:`subtract`,className:`block h-3.5 w-3.5`})}),(0,Z.jsx)(`input`,{...f,"data-slot":`number-input-value`,ref:p,type:`text`,inputMode:f.inputMode??`numeric`,value:h,onChange:w,onBlur:T,disabled:c,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,className:q(`h-full min-w-0 w-14 bg-transparent px-1.5 text-center typography-ui-label leading-none text-foreground [font-variant-numeric:tabular-nums]`,`placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground`,`appearance-none outline-none [appearance:textfield] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,`disabled:pointer-events-none disabled:cursor-not-allowed`,a)}),(0,Z.jsx)(`button`,{type:`button`,"aria-label":m(`numberInput.actions.increaseAria`),disabled:E,onClick:()=>C(S.current+i),className:q(`flex h-full w-7 items-center justify-center overflow-x-hidden overflow-y-hidden border-l border-border p-0 leading-none touch-manipulation`,`text-muted-foreground hover:bg-interactive-hover hover:text-foreground`,`disabled:pointer-events-none disabled:opacity-50`),children:(0,Z.jsx)(J,{name:`add`,className:`block h-3.5 w-3.5`})})]})});hr.displayName=`NumberInput`;var gr=`/mcp/oauth/callback`,_r=e=>{if(typeof window>`u`)return null;try{let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=t.length%4==0?``:`=`.repeat(4-t.length%4),r=window.atob(t+n),i=Uint8Array.from(r,e=>e.charCodeAt(0));return new TextDecoder().decode(i)}catch{return null}},vr=e=>{let t=br(e.get(`state`));if(t)return t;let n=e.get(`server`);if(typeof n!=`string`||!n.trim())return null;let r=e.get(`directory`);return{name:n.trim(),directory:typeof r==`string`&&r.trim()?r.trim():null}},yr=e=>{let t=e.get(`state`);return typeof t==`string`&&t.trim()||null},br=e=>{if(typeof e!=`string`||!e.trim())return null;let t=_r(e.trim());if(!t)return null;try{let e=JSON.parse(t);return e?.v!==1||typeof e.n!=`string`||!e.n.trim()?null:{name:e.n.trim(),directory:typeof e.d==`string`&&e.d.trim()?e.d.trim():null}}catch{return null}},xr=e=>typeof e==`object`&&!!e&&`updateStatus`in e&&typeof e.updateStatus==`function`,Sr=e=>{let t=document.createElement(`div`);t.className=`cm-vim-panel`;let n=Wt(e);if(!n)return{top:!1,dom:t};n.state.statusbar=t;let r=n.state.vimPlugin;return xr(r)&&r.updateStatus(),{top:!1,dom:t,destroy(){n.state.statusbar===t&&(n.state.statusbar=null)}}};function Cr(e){return e?[Ut(),pe.of(Sr),fe()]:[]}var wr={next:`Next match`,prev:`Previous match`,select:`Select all matches`,replace:`Replace`,replaceAll:`Replace all`,close:`Close`},Tr={case:`Match case`,re:`Regular expression`,word:`Match whole word`};function Er(e){let t=e.querySelector(`.cm-search`);if(t){for(let[e,n]of Object.entries(wr)){let r=t.querySelector(`button[name="${e}"]`);r&&!r.title&&(r.title=n)}for(let[e,n]of Object.entries(Tr)){let r=t.querySelector(`input[name="${e}"]`)?.parentElement;r&&!r.title&&(r.title=n)}}}var Dr=new WeakMap;function Or(e,t){let n=zt(e.state);if(!n.valid)return Dr.delete(e),0;let r=Dr.get(e);if(!t&&r?.doc===e.state.doc&&r.query.eq(n))return r.total;let i=n.getCursor(e.state),a=0;for(let e=i.next();!e.done;e=i.next())a+=1;return Dr.set(e,{query:n,doc:e.state.doc,total:a}),a}function kr(e){let t=zt(e.state);if(!t.valid)return 0;let n=e.state.selection.main,r=t.getCursor(e.state),i=0,a=0;for(let e=r.next();!e.done;e=r.next()){let t=e.value;if(i+=1,a===0&&(a=i),n.from===t.from&&n.to===t.to||n.from<t.to&&n.to>t.from||t.from>=n.head)return i}return a}function Ar(e,t,n=!1){let r=e.querySelector(`.cm-search`);if(!r)return;let i=r.querySelector(`.cm-search-message`);if(!i){i=document.createElement(`span`),i.className=`cm-search-message`,i.setAttribute(`aria-live`,`polite`);let e=r.querySelector(`button[name="next"]`),t=e?.parentNode===r?e:r.firstChild;r.insertBefore(i,t)}let a=Or(t,n),o=a===0?0:kr(t);i.textContent=a===0?``:`${o}/${a}`}var jr=new W,Mr=new W,Nr=new W,Pr=new W,Fr=new W,Ir=new W,Lr=new W,Rr=e=>e,zr=re,Br=Lt,Vr=Vt,Hr=class extends te{id;containerMap;constructor(e,t){super(),this.id=e,this.containerMap=t}toDOM(){let e=this.containerMap.get(this.id);return e||(e=document.createElement(`div`),e.className=`oc-block-widget`,e.dataset.widgetId=this.id,this.containerMap.set(this.id,e)),e}eq(e){return e.id===this.id}destroy(){}},Ur=(e,t)=>!e||e.length===0?[]:ce.define({create(n){let r=new de,i=[...e].sort((e,t)=>e.afterLine-t.afterLine);for(let e of i){let i=n.doc.lines;if(e.afterLine>i)continue;let a=n.doc.line(e.afterLine);r.add(a.to,a.to,z.widget({widget:new Hr(e.id,t),block:!0,side:1}))}return r.finish()},update(e,t){return e.map(t.changes)},provide:e=>U.decorations.from(e)}),Wr=e=>{if(!e)return[];let t=Math.max(1,e.start),n=Math.max(t,e.end);return R.fromClass(class{decorations;constructor(e){this.decorations=this.build(e)}update(e){(e.docChanged||e.viewportChanged)&&(this.decorations=this.build(e.view))}build(e){let r=new de;for(let i=t;i<=n&&i<=e.state.doc.lines;i+=1){let t=e.state.doc.line(i);r.add(t.from,t.from,z.line({class:`oc-cm-selected-line`}))}return r.finish()}},{decorations:e=>e.decorations})};function Gr({value:e,onChange:t,extensions:n,className:r,readOnly:i,lineNumbersConfig:a,highlightLines:o,onViewReady:s,onViewDestroy:c,blockWidgets:l,enableSearch:u,searchOpen:d,onSearchOpenChange:f,vimMode:p}){let m=$.useRef(null),h=$.useRef(null),g=$.useRef(e),_=$.useRef(t),v=$.useRef(s),y=$.useRef(c),b=$.useRef(f),x=$.useRef(l),S=$.useRef(p),C=$.useRef(new Map),[w,T]=$.useState([]),E=$.useCallback(e=>{let t=(e??[]).map(e=>{let t=C.current.get(e.id);return t?{id:e.id,content:e.content,container:t}:null}).filter(e=>e!==null);T(e=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return e.id===r.id&&e.content===r.content&&e.container===r.container})?e:t)},[]),D=$.useCallback(e=>{let t=m.current,n=e??h.current;if(!t||!n)return;let r=n.dom.querySelector(`.cm-gutters`),i=r instanceof HTMLElement?r.getBoundingClientRect().width:0;t.style.setProperty(`--oc-editor-gutter-width`,`${i}px`)},[]);return $.useEffect(()=>{g.current=e},[e]),$.useEffect(()=>{_.current=t},[t]),$.useEffect(()=>{v.current=s,y.current=c},[s,c]),$.useEffect(()=>{b.current=f},[f]),$.useEffect(()=>{x.current=l,E(l)},[l,E]),$.useEffect(()=>{if(!m.current)return;let e=(()=>{if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="csp-nonce"]`)?.getAttribute(`content`);if(e)return e;let t=window.__OPENCHAMBER_CSP_NONCE__;return typeof t==`string`&&t.length>0?t:null})(),t=le.create({doc:g.current,extensions:[...e?[U.cspNonce.of(e)]:[],ie({fixed:!0}),jr.of(V(a)),Ft(),L.of(` `),Lr.of(Cr(p)),ae.of([Pt,...Nt,...It]),U.updateListener.of(e=>{D(e.view),(e.viewportChanged||e.geometryChanged)&&E(x.current);let t=Rt(e.startState),n=Rt(e.state);t!==n&&b.current?.(n);let r=!zt(e.startState).eq(zt(e.state));if(n&&(t!==n||r||e.docChanged||e.selectionSet)&&Ar(e.view.dom,e.view,t!==n||r||e.docChanged),!e.docChanged)return;let i=e.state.doc.toString();g.current=i,_.current(i),E(x.current)}),Mr.of(U.editable.of(!i)),Nr.of(n??[]),Pr.of(Wr(o)),Fr.of(Ur(l,C.current)),Ir.of(u?[Bt({top:!0}),ae.of(Rr(Ht))]:[])]});return h.current=new U({state:t,parent:m.current}),zr(h.current,h.current.state.doc.length,200),h.current.requestMeasure(),requestAnimationFrame(()=>{D(h.current),E(x.current)}),h.current&&v.current?.(h.current),()=>{y.current?.(),h.current?.destroy(),h.current=null,T([])}},[x,D,E]),$.useEffect(()=>{let e=h.current;e&&(e.dispatch({effects:[jr.reconfigure(V(a)),Mr.reconfigure(U.editable.of(!i)),Nr.reconfigure(n??[]),Pr.reconfigure(Wr(o)),Fr.reconfigure(Ur(l,C.current)),Ir.reconfigure(u?[Bt({top:!0}),ae.of(Rr(Ht))]:[])]}),zr(e,e.state.doc.length,200),e.requestMeasure(),requestAnimationFrame(()=>{D(e),E(x.current)}))},[n,o,a,i,l,u,D,E]),$.useEffect(()=>{let e=h.current;if(!e){S.current=p;return}S.current!==p&&(S.current=p,e.dispatch({effects:Lr.reconfigure(Cr(p))}))},[p]),$.useEffect(()=>{let e=h.current;!e||u===!1||(d?(Br(e),requestAnimationFrame(()=>{Er(e.dom),Ar(e.dom,e,!0)})):Vr(e))},[d,u]),$.useEffect(()=>{let t=h.current;if(!t)return;let n=t.state.doc.toString();n!==e&&(t.dispatch({changes:{from:0,to:n.length,insert:e}}),zr(t,t.state.doc.length,300),t.requestMeasure(),requestAnimationFrame(()=>D(t)))},[e,D]),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{ref:m,className:q(`h-full w-full`,`[&_.cm-editor]:h-full [&_.cm-editor]:w-full`,`[&_.cm-scroller]:font-mono [&_.cm-scroller]:text-[var(--text-code)] [&_.cm-scroller]:leading-6`,`[&_.cm-lineNumbers]:text-[var(--tools-edit-line-number)]`,r)}),w.map(e=>(0,or.createPortal)(e.content,e.container,e.id))]})}function Kr(e,t){let n=e.metadata.variant===`dark`,r=e.config?.fonts?.mono||`monospace`,i=e.colors.syntax.highlights||{},a=e.colors.syntax.tokens||{},o=t?.fontSize?`${t.fontSize}px`:`var(--text-code)`,s=U.theme({"&":{backgroundColor:`var(--background)`,color:e.colors.syntax.base.foreground,fontSize:o,lineHeight:`1.5`,position:`relative`},".cm-scroller":{fontFamily:r,backgroundColor:`var(--background)`},".cm-comment":{color:e.colors.syntax.base.comment},".cm-keyword":{color:e.colors.syntax.base.keyword},".cm-string":{color:e.colors.syntax.base.string},".cm-string-2":{color:a.stringEscape||e.colors.syntax.base.string},".cm-number":{color:e.colors.syntax.base.number},".cm-operator":{color:e.colors.syntax.base.operator},".cm-punctuation":{color:a.punctuation||e.colors.syntax.base.comment},".cm-atom":{color:a.boolean||e.colors.syntax.base.number},".cm-builtin":{color:a.functionCall||e.colors.syntax.base.function},".cm-def":{color:a.variableGlobal||e.colors.syntax.base.variable},".cm-attribute":{color:a.variableOther||a.variableProperty||e.colors.syntax.base.operator},".cm-meta":{color:e.colors.syntax.base.comment},".cm-property":{color:a.variableProperty||e.colors.syntax.base.keyword},".cm-variable":{color:e.colors.syntax.base.variable},".cm-variable-2":{color:a.variableOther||e.colors.syntax.base.function},".cm-variable-3":{color:a.variableGlobal||e.colors.syntax.base.type},".cm-tag":{color:a.tag||e.colors.syntax.base.keyword},".cm-link":{color:a.url||e.colors.syntax.base.keyword,textDecoration:`underline`},".cm-content":{caretColor:e.colors.interactive.cursor},".cm-cursor, .cm-dropCursor":{borderLeftColor:e.colors.interactive.cursor},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection":{backgroundColor:e.colors.interactive.selection},".cm-gutters":{backgroundColor:`var(--background)`,color:i.lineNumber||e.colors.syntax.base.comment,borderRight:`1px solid ${e.colors.interactive.border}`,position:`sticky`,paddingRight:`8px`,left:0,zIndex:2,boxShadow:`0 0 0 var(--background)`},".cm-gutter":{backgroundColor:`var(--background)`},".cm-gutterElement":{backgroundColor:`var(--background)`},".cm-lineNumbers":{backgroundColor:`var(--background)`},".cm-lineNumbers .cm-gutterElement":{paddingLeft:`8px`,paddingRight:`8px`,minWidth:`42px`},".cm-activeLineGutter":{color:i.lineNumberActive||e.colors.syntax.base.foreground},".cm-activeLine":{backgroundColor:e.colors.surface.overlay},".cm-panels":{backgroundColor:`transparent`,color:e.colors.surface.foreground,position:`absolute`,top:`0`,right:`0`,left:`auto`,width:`auto`,zIndex:10,pointerEvents:`none`},".cm-panels-top":{borderBottom:`none`,position:`absolute`,top:`6px`,right:`14px`,left:`auto`,width:`auto`},".cm-panels-bottom":{position:`static`,width:`100%`,pointerEvents:`auto`},".cm-panels-bottom .cm-vim-panel":{borderTop:`1px solid ${e.colors.interactive.border}`,backgroundColor:e.colors.surface.elevated,color:e.colors.surface.mutedForeground,fontFamily:`var(--font-mono)`,fontSize:`12px`,minHeight:`22px`,padding:`2px 8px`},".cm-panel.cm-search":{pointerEvents:`auto`,padding:`4px`,backgroundColor:`color-mix(in srgb, ${e.colors.surface.elevated} 85%, transparent)`,border:`1px solid ${e.colors.interactive.border}`,borderRadius:`10px`,boxShadow:`0 2px 8px color-mix(in srgb, ${e.colors.surface.background} 60%, transparent)`,width:`auto`,minWidth:`360px`,maxWidth:`480px`},".cm-search":{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0`,width:`100%`,color:e.colors.surface.foreground,fontFamily:`inherit`,fontSize:`13px`,lineHeight:`1`},".cm-search br":{display:`none`},".cm-search .cm-textfield":{appearance:`none`,height:`26px`,margin:0,padding:`0 8px`,borderRadius:`6px !important`,border:`1px solid ${e.colors.interactive.border}`,backgroundColor:e.colors.surface.background,color:e.colors.surface.foreground,fontFamily:`inherit`,fontSize:`12px`,lineHeight:`1`,outline:`none`,transition:`border-color 150ms ease`},".cm-search .cm-textfield::placeholder":{color:e.colors.surface.mutedForeground,opacity:1},".cm-search .cm-textfield:focus":{borderColor:e.colors.primary.base},'.cm-search .cm-textfield[name="search"]':{order:1,flex:`1 1 120px`,maxWidth:`calc(100% - 142px)`,minWidth:`100px`},".cm-search label":{order:2,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:`26px`,height:`26px`,minWidth:`26px`,flexShrink:`0`,margin:0,marginLeft:`1px`,padding:0,borderRadius:`4px`,border:`1px solid transparent`,backgroundColor:`transparent`,color:`transparent`,cursor:`pointer`,userSelect:`none`,fontSize:`1px`,lineHeight:`0`,overflow:`hidden`,position:`relative`,transition:`background-color 120ms ease, border-color 120ms ease`},".cm-search label:hover":{backgroundColor:e.colors.interactive.hover},'.cm-search label:has(input[type="checkbox"]:checked)':{backgroundColor:e.colors.interactive.hover,borderColor:e.colors.interactive.border},'.cm-search [type="checkbox"]':{appearance:`none`,WebkitAppearance:`none`,width:`0`,height:`0`,margin:`0`,padding:`0`,border:`none`,position:`absolute`,opacity:`0`,pointerEvents:`none`},".cm-search label::after":{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,fontSize:`13px`,fontWeight:`600`,lineHeight:`1`,fontFamily:`inherit`,color:e.colors.surface.mutedForeground,pointerEvents:`none`},".cm-search label:hover::after":{color:e.colors.surface.foreground},'.cm-search label:has(input[type="checkbox"]:checked)::after':{color:e.colors.surface.foreground},'.cm-search label:has(input[name="case"])::after':{content:`"Aa"`,fontSize:`12px`,letterSpacing:`-0.5px`},'.cm-search label:has(input[name="re"])::after':{content:`".*"`,fontSize:`13px`,fontFamily:`monospace`},'.cm-search label:has(input[name="word"])::after':{content:`"ab"`,fontSize:`12px`,textDecoration:`underline`,textUnderlineOffset:`2px`},".cm-search .cm-search-message":{order:3,color:e.colors.surface.mutedForeground,backgroundColor:`transparent`,border:`none`,borderRadius:`0`,padding:`0 6px`,fontSize:`11px`,whiteSpace:`nowrap`,lineHeight:`26px`},".cm-search .cm-button":{appearance:`none`,WebkitAppearance:`none`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:`26px`,height:`26px`,minWidth:`26px`,flexShrink:`0`,margin:0,marginLeft:`1px`,padding:0,borderRadius:`4px`,border:`none`,backgroundColor:`transparent`,backgroundImage:`none`,color:`transparent`,cursor:`pointer`,fontSize:`1px`,fontWeight:`400`,lineHeight:`0`,overflow:`hidden`,position:`relative`,boxShadow:`none`,transition:`background-color 120ms ease`},".cm-search .cm-button::after":{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,fontSize:`15px`,lineHeight:`1`,color:e.colors.surface.mutedForeground,pointerEvents:`none`},".cm-search .cm-button:hover":{backgroundColor:e.colors.interactive.hover},".cm-search .cm-button:hover::after":{color:e.colors.surface.foreground},".cm-search .cm-button:active":{backgroundColor:e.colors.interactive.active},".cm-search .cm-button:focus-visible":{outline:`none`,boxShadow:`0 0 0 1px ${e.colors.interactive.focusRing}`},".cm-search .cm-button:disabled":{opacity:.4,cursor:`default`,pointerEvents:`none`},'.cm-search .cm-button[name="prev"]':{order:21,marginTop:`2px`},'.cm-search .cm-button[name="prev"]::after':{content:`"↑"`},'.cm-search .cm-button[name="next"]':{order:22,marginTop:`2px`},'.cm-search .cm-button[name="next"]::after':{content:`"↓"`},'.cm-search .cm-button[name="select"]':{order:23,marginTop:`2px`},'.cm-search .cm-button[name="select"]::after':{content:`"≡"`,fontSize:`17px`},'.cm-panel.cm-search button[name="close"]':{order:5,appearance:`none`,WebkitAppearance:`none`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:`26px`,height:`26px`,minWidth:`26px`,flexShrink:`0`,margin:`0 0 0 auto`,padding:`0`,borderRadius:`4px`,border:`none`,backgroundColor:`transparent`,backgroundImage:`none`,color:e.colors.surface.mutedForeground,cursor:`pointer`,fontSize:`16px`,lineHeight:`1`,boxShadow:`none`,position:`relative`,overflow:`visible`,transition:`background-color 120ms ease, color 120ms ease`},'.cm-panel.cm-search button[name="close"]:hover':{backgroundColor:e.colors.interactive.hover,color:e.colors.surface.foreground},'.cm-search .cm-button[name="replace"]':{order:24,marginTop:`2px`},'.cm-search .cm-button[name="replace"]::after':{content:`"⇄"`},'.cm-search .cm-button[name="replaceAll"], .cm-search .cm-button[name="replace-all"]':{order:25,marginTop:`2px`},'.cm-search .cm-button[name="replaceAll"]::after, .cm-search .cm-button[name="replace-all"]::after':{content:`"⇉"`},'.cm-search .cm-textfield[name="replace"]':{order:20,flex:`1 1 100%`,maxWidth:`calc(100% - 142px)`,minWidth:`80px`,marginTop:`2px`},".cm-searchMatch":{backgroundColor:e.colors.status.infoBackground,boxShadow:`inset 0 0 0 1px ${e.colors.status.infoBorder}`,borderRadius:`2px`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:e.colors.interactive.selection,color:e.colors.interactive.selectionForeground,boxShadow:`inset 0 0 0 1px ${e.colors.interactive.borderFocus}`},"&.cm-focused":{outline:`none`}},{dark:n}),c=oe.define([{tag:[H.comment,H.docComment,H.meta,H.documentMeta],class:`cm-comment`},{tag:[H.keyword,H.controlKeyword,H.moduleKeyword,H.definitionKeyword,H.modifier],class:`cm-keyword`},{tag:[H.operatorKeyword,H.operator,H.derefOperator,H.updateOperator,H.definitionOperator,H.typeOperator,H.controlOperator,H.logicOperator,H.bitwiseOperator,H.arithmeticOperator,H.compareOperator],class:`cm-operator`},{tag:[H.punctuation,H.separator,H.bracket,H.paren,H.brace,H.squareBracket,H.angleBracket],class:`cm-punctuation`},{tag:[H.string,H.regexp,H.attributeValue,H.special(H.string),H.monospace],class:`cm-string`},{tag:H.escape,class:`cm-string-2`},{tag:[H.number,H.bool,H.atom,H.null,H.self],class:`cm-number`},{tag:[H.function(H.variableName),H.function(H.definition(H.variableName)),H.function(H.propertyName),H.standard(H.variableName),H.special(H.variableName)],class:`cm-builtin`},{tag:H.definition(H.variableName),class:`cm-def`},{tag:[H.variableName,H.local(H.variableName),H.constant(H.variableName),H.literal],class:`cm-variable`},{tag:H.propertyName,class:`cm-property`},{tag:H.attributeName,class:`cm-attribute`},{tag:[H.className,H.typeName,H.namespace],class:`cm-variable-3`},{tag:[H.tagName,H.labelName,H.annotation,H.macroName],class:`cm-tag`},{tag:H.link,class:`cm-link`},{tag:[H.heading,H.heading1,H.heading2,H.heading3,H.heading4,H.heading5,H.heading6],class:`cm-keyword`}]),l=oe.define([{tag:[H.comment,H.docComment,H.meta,H.documentMeta],color:e.colors.syntax.base.comment},{tag:[H.keyword,H.controlKeyword,H.moduleKeyword,H.definitionKeyword,H.modifier],color:e.colors.syntax.base.keyword},{tag:[H.operatorKeyword,H.operator,H.derefOperator,H.updateOperator,H.definitionOperator,H.typeOperator,H.controlOperator,H.logicOperator,H.bitwiseOperator,H.arithmeticOperator,H.compareOperator],color:e.colors.syntax.base.operator},{tag:[H.string,H.regexp,H.attributeValue,H.special(H.string),H.monospace],color:e.colors.syntax.base.string},{tag:H.escape,color:a.stringEscape||e.colors.syntax.base.string},{tag:[H.number,H.bool,H.atom,H.null,H.self],color:e.colors.syntax.base.number},{tag:[H.function(H.variableName),H.function(H.definition(H.variableName)),H.function(H.propertyName),H.standard(H.variableName),H.special(H.variableName)],color:e.colors.syntax.base.function},{tag:H.definition(H.variableName),color:a.variableGlobal||e.colors.syntax.base.variable},{tag:[H.variableName,H.local(H.variableName),H.constant(H.variableName),H.literal],color:e.colors.syntax.base.variable},{tag:H.propertyName,color:a.variableProperty||e.colors.syntax.base.variable},{tag:H.attributeName,color:a.variableOther||e.colors.syntax.base.variable},{tag:[H.className,H.typeName,H.namespace],color:e.colors.syntax.base.type},{tag:[H.tagName,H.labelName,H.annotation,H.macroName],color:a.tag||e.colors.syntax.base.keyword},{tag:H.link,color:a.url||e.colors.syntax.base.function,textDecoration:`underline`},{tag:[H.punctuation,H.separator,H.bracket,H.paren,H.brace,H.squareBracket,H.angleBracket],color:a.punctuation||e.colors.syntax.base.comment}]);return t?.syntaxColors===!1?[s]:[s,B(se,{fallback:!0}),B(ne),B(c),B(l)]}var qr=180,Jr=ue.define(),Yr=1,Xr=2,Zr=4,Qr=new Map,$r=(e,t)=>{let n=`${e}|${t}`,r=Qr.get(n);if(r)return r;let i=``;e&&(i+=`color:${e};`),t&Yr&&(i+=`font-style:italic;`),t&Xr&&(i+=`font-weight:bold;`),t&Zr&&(i+=`text-decoration:underline;`);let a=z.mark({attributes:{style:i}});return Qr.set(n,a),a},ei=(e,t)=>{let n=new de,r=e.state.doc,i=Math.min(t.length,r.lines);for(let e=0;e<i;e+=1){let i=t[e];if(!i||i.length===0)continue;let a=r.line(e+1),o=a.from;for(let[e,t,r]of i){if(e<=0)continue;let i=o,s=Math.min(o+e,a.to);o+=e,!(s<=i)&&(!t&&!r||n.add(i,s,$r(t,r)))}}return n.finish()},ti=ce.define({create(){return z.none},update(e,t){let n=e.map(t.changes);for(let e of t.effects)e.is(Jr)&&(n=e.value);return n},provide:e=>U.decorations.from(e)}),ni=e=>R.fromClass(class{timer;generation=0;abortController;constructor(e){this.tokenize(e)}update(e){e.docChanged&&this.schedule(e.view)}schedule(e){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=void 0,this.tokenize(e)},qr)}async tokenize(t){let n=++this.generation;this.abortController?.abort();let r=new AbortController;this.abortController=r;let i=t.state.doc.toString(),a=await kt(i,e.language,e.themeName,e.theme,{signal:r.signal,priority:`visible`});a&&(r.signal.aborted||n===this.generation&&t.state.doc.length===i.length&&t.dispatch({effects:Jr.of(ei(t,a))}))}destroy(){this.timer&&clearTimeout(this.timer),this.abortController?.abort(),this.abortController=void 0}}),ri=e=>[ti,ni(e)],ii=e=>{let t=(0,X.c)(11),{currentMode:n,onToggle:r}=e,i=n===`preview`,a=i?`Switch to edit mode`:`Switch to preview mode`,o=i?`Edit`:`Preview`,s;t[0]===i?s=t[1]:(s=i?(0,Z.jsx)(J,{name:`eye`,className:`size-4`,"aria-hidden":`true`}):(0,Z.jsx)(J,{name:`eye-off`,className:`size-4`,"aria-hidden":`true`}),t[0]=i,t[1]=s);let c;t[2]!==a||t[3]!==r||t[4]!==s?(c=(0,Z.jsx)(tt,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`sm`,onClick:r,"aria-label":a,className:`h-5 w-5 p-0`,children:s})}),t[2]=a,t[3]=r,t[4]=s,t[5]=c):c=t[5];let l;t[6]===o?l=t[7]:(l=(0,Z.jsx)(nt,{sideOffset:8,children:o}),t[6]=o,t[7]=l);let u;return t[8]!==c||t[9]!==l?(u=(0,Z.jsxs)(rt,{children:[c,l]}),t[8]=c,t[9]=l,t[10]=u):u=t[10],u},ai=w()(E(T((e,t)=>({selectedProfileId:null,defaultGitIdentityId:null,profiles:[],globalIdentity:null,discoveredCredentials:[],isLoading:!1,setSelectedProfile:t=>{e({selectedProfileId:t})},loadProfiles:async()=>{e({isLoading:!0});let n=t().profiles;try{return e({profiles:await Fe(),isLoading:!1}),!0}catch(t){return console.error(`Failed to load git identity profiles:`,t),e({profiles:n,isLoading:!1}),!1}},loadGlobalIdentity:async()=>{try{let t=await Ie();return t&&t.userName&&t.userEmail?e({globalIdentity:{id:`global`,name:`Global Identity`,userName:t.userName,userEmail:t.userEmail,authType:t.sshCommand?`ssh`:void 0,sshKey:t.sshCommand?t.sshCommand.replace(`ssh -i `,``):null,color:`info`,icon:`house`}}):e({globalIdentity:null}),!0}catch(t){return console.error(`Failed to load global git identity:`,t),e({globalIdentity:null}),!1}},loadDiscoveredCredentials:async()=>{try{return e({discoveredCredentials:await Be()}),!0}catch(t){return console.error(`Failed to discover git credentials:`,t),e({discoveredCredentials:[]}),!1}},loadDefaultGitIdentityId:async()=>{let t=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null};try{let n=null;if(n===null){let e=C()?.settings;if(e)try{n=t(((await e.load())?.settings||{}).defaultGitIdentityId)}catch{}}if(n===null)try{let e=await g(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});e.ok&&(n=t((await e.json().catch(()=>null))?.defaultGitIdentityId))}catch{}return e({defaultGitIdentityId:n}),!0}catch(e){return console.error(`Failed to load default git identity setting:`,e),!1}},setDefaultGitIdentityId:async t=>{try{let n=typeof t==`string`?t.trim():``,r=n.length>0?n:``;return await y({defaultGitIdentityId:r}),e({defaultGitIdentityId:r.length>0?r:null}),!0}catch(e){return console.error(`Failed to save default git identity setting:`,e),!1}},createProfile:async e=>{try{let n={...e,id:e.id||`profile-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,color:e.color||`keyword`,icon:e.icon||`branch`};return await ze(n),await t().loadProfiles(),!0}catch(e){return console.error(`Failed to create git identity profile:`,e),!1}},updateProfile:async(e,n)=>{try{let r=t().profiles.find(t=>t.id===e);if(!r)throw Error(`Profile not found`);let i={...r,...n};return await Pe(e,i),await t().loadProfiles(),!0}catch(e){return console.error(`Failed to update git identity profile:`,e),!1}},deleteProfile:async n=>{try{return await Le(n),t().selectedProfileId===n&&e({selectedProfileId:null}),await t().loadProfiles(),!0}catch(e){return console.error(`Failed to delete git identity profile:`,e),!1}},getProfileById:e=>{let{profiles:n,globalIdentity:r}=t();return e===`global`?r||void 0:n.find(t=>t.id===e)},getUnimportedCredentials:()=>{let{profiles:e,discoveredCredentials:n}=t();return n.filter(t=>!e.some(e=>e.authType===`token`&&e.host===t.host))}}),{name:`git-identities-store`,storage:a(),partialize:e=>({selectedProfileId:e.selectedProfileId})}),{name:`git-identities-store`}));typeof window<`u`&&(window.__zustand_git_identities_store__=ai);var oi=`w-full max-w-[30rem]`,si=e=>{let t=(0,X.c)(23),{title:n,description:r,settingsItem:i,titleAccessory:a,headerAction:o,children:s,className:c,contentClassName:l}=e,u;t[0]===n?u=t[1]:(u=(0,Z.jsx)(`span`,{className:`truncate`,children:n}),t[0]=n,t[1]=u);let d;t[2]!==u||t[3]!==a?(d=(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[u,a]}),t[2]=u,t[3]=a,t[4]=d):d=t[4];let f;t[5]===o?f=t[6]:(f=o?(0,Z.jsx)(`div`,{className:`shrink-0`,children:o}):null,t[5]=o,t[6]=f);let p;t[7]!==d||t[8]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[d,f]}),t[7]=d,t[8]=f,t[9]=p):p=t[9];let m;t[10]===l?m=t[11]:(m=q(`oc-settings-group-row`,l),t[10]=l,t[11]=m);let h;t[12]!==s||t[13]!==m?(h=(0,Z.jsx)(`div`,{className:m,children:s}),t[12]=s,t[13]=m,t[14]=h):h=t[14];let g;t[15]!==r||t[16]!==p||t[17]!==h?(g=(0,Z.jsx)(sr,{className:`oc-settings-detail-group`,label:p,description:r,children:h}),t[15]=r,t[16]=p,t[17]=h,t[18]=g):g=t[18];let _;return t[19]!==c||t[20]!==i||t[21]!==g?(_=(0,Z.jsx)(`div`,{"data-settings-item":i,className:c,children:g}),t[19]=c,t[20]=i,t[21]=g,t[22]=_):_=t[22],_},ci=450,li=({projectRef:e=null})=>{let{t}=he(),{isMobile:n,isTablet:r}=Tt(),i=n||r,a=G(e=>e.getActiveProject()),o=e?.path??a?.path??null,s=De(e=>e.getWorktreeMetadata),c=Oe(),l=j(e=>e.homeDirectory),[u,d]=$.useState([]),[f,p]=$.useState(!1),[m,h]=$.useState(!1),[g,_]=$.useState(null),[v,y]=$.useState(null),[b,x]=$.useState([]),[S,C]=$.useState(!1),w=$.useRef(!1),T=$.useMemo(()=>e?.id&&e?.path?{id:e.id,path:e.path}:!a?.id||!o?null:{id:a.id,path:o},[a?.id,o,e?.id,e?.path]),E=$.useCallback(async()=>{if(!(!T||v===!1))try{let e=await qe(T);x(e)}catch{}},[T,v]);$.useEffect(()=>{if(!o)return;let e=!1;return y(null),(async()=>{try{let t=await Re(o);if(e)return;y(t)}catch{}})(),()=>{e=!0}},[o]),$.useEffect(()=>{if(!T){x([]),C(!1);return}if(v===!1){x([]),C(!1);return}let e=!1;return C(!0),x([]),(async()=>{try{let t=await qe(T);if(e)return;x(t)}catch{}finally{e||C(!1)}})(),()=>{e=!0}},[T,v]),$.useEffect(()=>{if(!T)return;let e=!1;return h(!0),(async()=>{try{let[t,n]=await Promise.all([ye(T),be(T)]);if(!e){let e=t.length>0?t:[``];d(e),_(JSON.stringify(e)),p(n)}}catch{e||(d([``]),_(JSON.stringify([``])),p(!1))}finally{e||h(!1)}})(),()=>{e=!0}},[T]);let D=$.useCallback(async e=>{if(!T)return!1;let n=e.filter(e=>e.trim().length>0);try{return await Ce(T,n)?(_(JSON.stringify(e)),!0):(K.error(t(`settings.openchamber.worktrees.setup.toast.saveFailed`)),!1)}catch{return K.error(t(`settings.openchamber.worktrees.setup.toast.saveFailed`)),!1}},[T,t]),O=$.useMemo(()=>g!==null&&g!==JSON.stringify(u),[g,u]);$.useEffect(()=>{if(!O||m||w.current)return;let e=window.setTimeout(()=>{w.current||(w.current=!0,(async()=>{try{await D(u)}finally{w.current=!1}})())},ci);return()=>{window.clearTimeout(e)}},[O,m,D,u]);let k=$.useCallback((e,t)=>{d(n=>{let r=[...n];return r[e]=t,r})},[]),A=$.useCallback(()=>{d(e=>[...e,``])},[]),M=$.useCallback(e=>{d(t=>{let n=t.filter((t,n)=>n!==e);return n.length>0?n:[``]})},[]),ee=$.useCallback(()=>{!O||w.current||(w.current=!0,(async()=>{try{await D(u)}finally{w.current=!1}})())},[O,D,u]),N=$.useCallback(e=>{p(e),T&&ve(T,e)},[T]),P=$.useCallback(e=>{let t=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),n=t(e.path),r=c.filter(e=>{let r=s(e.id);if(r?.path&&t(r.path)===n)return!0;let i=e.directory;return!!(i&&t(i)===n)}),i=new Set(r.map(e=>e.id)),a=[...we.getState().activeSessions,...we.getState().archivedSessions],o=e=>{let t=a.filter(t=>{let n=t.parentID;return n&&e.has(n)});if(t.length===0)return[];let n=new Set(t.map(e=>e.id));return[...t,...o(n)]},l=o(i),u=new Set,d=[...r,...l].filter(e=>!u.has(e.id)&&(u.add(e.id),!0));Te.requestDelete({sessions:d,mode:`worktree`,worktree:e})},[c,s]),F=$.useMemo(()=>c.map(e=>e.id).join(`,`),[c]);$.useEffect(()=>{v&&o&&E()},[F,v,o,E]);let I=(0,Z.jsxs)(rt,{children:[(0,Z.jsx)(tt,{asChild:!0,children:(0,Z.jsx)(J,{name:`information`,className:`h-3.5 w-3.5 text-muted-foreground/60 cursor-help`})}),(0,Z.jsxs)(nt,{sideOffset:8,className:`max-w-xs`,children:[t(`settings.openchamber.worktrees.setup.tooltipPrefix`),` `,(0,Z.jsx)(`code`,{className:`font-mono text-xs bg-sidebar-accent/50 px-1 rounded`,children:`$ROOT_PROJECT_PATH`}),` `,t(`settings.openchamber.worktrees.setup.tooltipSuffix`)]})]}),L=(0,Z.jsxs)(rt,{children:[(0,Z.jsx)(tt,{asChild:!0,children:(0,Z.jsx)(J,{name:`information`,className:`h-3.5 w-3.5 text-muted-foreground/60 cursor-help`})}),(0,Z.jsx)(nt,{sideOffset:8,className:`max-w-xs`,children:t(`settings.openchamber.worktrees.list.tooltip`)})]});return o?v===!1?(0,Z.jsx)(si,{title:t(`settings.projects.page.section.worktree`),settingsItem:`projects.worktree`,children:(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.openchamber.worktrees.state.gitOnly`)})}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(si,{title:t(`settings.projects.page.section.worktree`),settingsItem:`projects.worktree`,titleAccessory:I,children:m?(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.openchamber.worktrees.setup.loading`)}):(0,Z.jsxs)(`div`,{className:q(`flex flex-col gap-2`,oi),children:[u.map((e,n)=>(0,Z.jsxs)(`div`,{className:`oc-settings-group-row flex w-full items-center gap-2`,children:[(0,Z.jsx)(et,{value:e,onChange:e=>k(n,e.target.value),onBlur:ee,placeholder:t(`settings.openchamber.worktrees.setup.commandPlaceholder`),className:`min-w-0 flex-1 font-mono text-xs`}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>M(n),className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-destructive/10 hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50`,"aria-label":t(`settings.openchamber.worktrees.setup.removeCommandAria`),children:(0,Z.jsx)(J,{name:`close`,className:`h-4 w-4`})})]},n)),(0,Z.jsxs)(Y,{type:`button`,variant:`ghost`,size:`xs`,className:`!font-normal`,onClick:A,children:[(0,Z.jsx)(J,{name:`add`,className:`h-3.5 w-3.5`}),t(`settings.openchamber.worktrees.setup.addCommand`)]}),(0,Z.jsxs)(`label`,{"data-settings-item":`projects.worktree.setup.wait`,className:`flex cursor-pointer items-center gap-2 py-1`,children:[(0,Z.jsx)(He,{checked:f,onChange:N,ariaLabel:t(`settings.openchamber.worktrees.setup.waitForCommandsAria`)}),(0,Z.jsx)(`span`,{className:q(`typography-ui-label font-normal`,f?`text-foreground`:`text-foreground/60`),children:t(`settings.openchamber.worktrees.setup.waitForCommands`)})]})]})}),(0,Z.jsx)(si,{title:t(`settings.openchamber.worktrees.list.title`),titleAccessory:L,children:S?(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.openchamber.worktrees.list.loading`)}):b.length===0?(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground/70`,children:t(`settings.openchamber.worktrees.list.empty`)}):(0,Z.jsx)(`div`,{className:q(`space-y-1`,oi),children:b.map(e=>(0,Z.jsxs)(`div`,{className:`group flex w-full items-center gap-2 py-1.5`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(`p`,{className:`typography-meta min-w-0 truncate text-foreground`,children:e.label||e.branch||t(`settings.openchamber.worktrees.list.detachedHead`)}),(0,Z.jsx)(`span`,{className:`typography-micro flex-shrink-0 self-center rounded bg-sidebar-accent/40 px-1.5 py-[1px] leading-none text-muted-foreground/60`,children:`OpenCode`})]}),(0,Z.jsx)(`p`,{className:`typography-micro truncate text-muted-foreground/60`,children:ke(e.path,l)})]}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>P(e),className:q(`flex h-7 w-7 shrink-0 items-center justify-center rounded text-muted-foreground/50 transition-opacity hover:bg-destructive/10 hover:text-destructive focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50`,i?`opacity-100`:`opacity-0 group-hover:opacity-100`),"aria-label":t(`settings.openchamber.worktrees.list.deleteWorktreeAria`,{name:e.branch||e.label||e.path}),children:(0,Z.jsx)(J,{name:`delete-bin`,className:`h-4 w-4`})})]},e.path))})})]}):(0,Z.jsx)(si,{title:t(`settings.projects.page.section.worktree`),settingsItem:`projects.worktree`,children:(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.openchamber.worktrees.state.selectProject`)})})},ui=(e,t)=>t.updatedAtMs-e.updatedAtMs,di=w((e,t)=>({instances:[],statusesById:{},importCandidates:[],isLoading:!1,isSaving:!1,isImportsLoading:!1,initialized:!1,listenerReady:!1,error:null,load:async()=>{if(!t().isLoading){e({isLoading:!0,error:null});try{let[n,r]=await Promise.all([ct(),at()]),i={};for(let e of r.sort(ui))i[e.id]=e;t().listenerReady||await st(t=>{e(e=>({statusesById:{...e.statusesById,[t.id]:t}}))}),e({instances:n.instances,statusesById:i,isLoading:!1,initialized:!0,listenerReady:!0})}catch(t){e({isLoading:!1,error:t instanceof Error?t.message:String(t)})}}},loadImports:async()=>{if(!t().isImportsLoading){e({isImportsLoading:!0,error:null});try{e({importCandidates:await ot(),isImportsLoading:!1})}catch(t){e({isImportsLoading:!1,error:t instanceof Error?t.message:String(t)})}}},refreshStatuses:async()=>{try{let t=await at(),n={};for(let e of t.sort(ui))n[e.id]=e;e({statusesById:n})}catch(t){e({error:t instanceof Error?t.message:String(t)})}},setInstances:async n=>{e({isSaving:!0,error:null});try{await lt({instances:n}),e({instances:n,isSaving:!1}),await t().refreshStatuses()}catch(t){throw e({isSaving:!1,error:t instanceof Error?t.message:String(t)}),t}},upsertInstance:async e=>{let n=t().instances,r=n.some(t=>t.id===e.id)?n.map(t=>t.id===e.id?e:t):[e,...n];await t().setInstances(r)},createFromCommand:async(e,n,r)=>{let i=pt(e,n);r&&r.trim()&&(i.nickname=r.trim()),await t().upsertInstance(i)},removeInstance:async n=>{await ut(n).catch(()=>void 0);let r=t().instances.filter(e=>e.id!==n);await t().setInstances(r),e(e=>{let t={...e.statusesById};return delete t[n],{statusesById:t}})},connect:async n=>{e({error:null});try{await it(n),await t().refreshStatuses()}catch(t){throw e({error:t instanceof Error?t.message:String(t)}),t}},disconnect:async n=>{e({error:null});try{await ut(n),await t().refreshStatuses()}catch(t){throw e({error:t instanceof Error?t.message:String(t)}),t}},retry:async e=>{await t().connect(e)},getStatus:e=>t().statusesById[e]||null,clearError:()=>e({error:null})})),fi=450,pi=()=>h(),mi=()=>({id:pi(),name:``,command:``,icon:`play`}),hi=({projectRef:e})=>{let{t}=he(),n=$.useMemo(()=>l(),[]),r=di(e=>e.instances),i=di(e=>e.load),[a,o]=$.useState([]),[s,c]=$.useState(!1),[u,d]=$.useState(null),[f,p]=$.useState({}),m=$.useRef(!1),h=$.useRef(null);$.useEffect(()=>{n&&i().catch(()=>void 0)},[n,i]),$.useEffect(()=>{let t=!1;return c(!0),(async()=>{try{let n=await xe(e);if(t)return;o(n.actions),d(JSON.stringify({actions:n.actions}))}catch{if(t)return;o([]),d(JSON.stringify({actions:[]}))}finally{t||c(!1)}})(),()=>{t=!0}},[e]);let g=$.useMemo(()=>n?Gt(r):[],[r,n]),_=$.useMemo(()=>a.some(e=>e.name.trim().length===0||e.command.trim().length===0)?t(`settings.projects.actions.validation.fillNameAndCommand`):null,[a,t]),v=$.useMemo(()=>u!==null&&u!==JSON.stringify({actions:a}),[a,u]),y=$.useCallback(async n=>await Se(e,{actions:n,primaryActionId:null})?(d(JSON.stringify({actions:n})),typeof window<`u`&&window.dispatchEvent(new CustomEvent(Jt,{detail:{projectId:e.id}})),!0):(K.error(t(`settings.projects.actions.toast.saveFailed`)),!1),[e,t]);$.useEffect(()=>{if(!v||s||_||m.current)return;let e=window.setTimeout(()=>{m.current||(m.current=!0,(async()=>{try{await y(a)}finally{m.current=!1}})())},fi);return()=>{window.clearTimeout(e)}},[a,v,s,y,_]),$.useEffect(()=>{if(!v||!_||s){_||(h.current=null);return}let e=window.setTimeout(()=>{h.current!==_&&(h.current=_,K.error(_))},1e3);return()=>{window.clearTimeout(e)}},[v,s,_]);let b=$.useCallback(()=>{let e=mi();o(t=>[...t,e]),p(t=>({...t,[e.id]:!0}))},[]),x=$.useCallback(e=>{o(t=>t.filter(t=>t.id!==e)),p(t=>{let n={...t};return delete n[e],n})},[]),S=$.useCallback((e,t)=>{o(n=>n.map(n=>n.id===e?t(n):n))},[]);return(0,Z.jsxs)(si,{title:t(`settings.projects.actions.title`),description:t(`settings.projects.actions.description`),settingsItem:`projects.actions`,headerAction:(0,Z.jsxs)(Y,{type:`button`,variant:`outline`,size:`xs`,className:`!font-normal`,onClick:b,children:[(0,Z.jsx)(J,{name:`add`,className:`h-3.5 w-3.5`}),t(`settings.projects.actions.actions.add`)]}),contentClassName:`space-y-0`,children:[s?(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.projects.actions.state.loading`)}):a.length===0?(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.projects.actions.state.empty`)}):(0,Z.jsx)(`div`,{className:q(`space-y-0`,oi),children:a.map(e=>{let r=e.icon||`play`,i=qt[r]||`play`,a=f[e.id]??!1,o=e.name.trim()||t(`settings.projects.actions.state.untitled`);return(0,Z.jsxs)(Mt,{open:a,onOpenChange:t=>{p(n=>({...n,[e.id]:t}))},className:`py-1.5`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsxs)(jt,{className:`group flex-1 justify-start gap-2 rounded-md px-0 pr-1 py-1 hover:bg-[var(--interactive-hover)] focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]`,children:[a?(0,Z.jsx)(J,{name:`arrow-down-s`,className:`h-4 w-4 text-muted-foreground`}):(0,Z.jsx)(J,{name:`arrow-right-s`,className:`h-4 w-4 text-muted-foreground`}),(0,Z.jsx)(J,{name:i,className:`mt-0.5 h-4 w-4 shrink-0 text-muted-foreground`}),(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(`span`,{className:`typography-ui-label text-foreground truncate`,children:o})})]}),(0,Z.jsx)(Y,{type:`button`,variant:`ghost`,size:`xs`,className:`!font-normal h-7 w-7 px-0 text-muted-foreground hover:text-[var(--status-error)]`,onClick:()=>x(e.id),children:(0,Z.jsx)(J,{name:`delete-bin`,className:`h-3.5 w-3.5`})})]}),(0,Z.jsx)(At,{className:`pt-1.5`,children:(0,Z.jsxs)(`div`,{className:`space-y-2 pb-4 pl-3 pr-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 py-1`,children:[(0,Z.jsxs)(yt,{children:[(0,Z.jsx)(bt,{asChild:!0,children:(0,Z.jsx)(`button`,{type:`button`,className:`inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-[var(--interactive-border)] text-foreground hover:bg-[var(--interactive-hover)]`,"aria-label":t(`settings.projects.actions.field.selectIconAria`),children:(0,Z.jsx)(J,{name:i,className:`h-4 w-4`})})}),(0,Z.jsx)(vt,{align:`start`,className:`w-56 p-2`,children:(0,Z.jsx)(`div`,{className:`grid grid-cols-6 gap-1`,children:Kt.map(n=>{let r=n.Icon,i=(e.icon||`play`)===n.key;return(0,Z.jsx)(`button`,{type:`button`,onClick:()=>S(e.id,e=>({...e,icon:n.key})),className:q(`inline-flex h-8 w-8 items-center justify-center rounded-md border border-transparent text-foreground hover:bg-[var(--interactive-hover)]`,i&&`border-[var(--primary-base)] bg-[var(--primary-base)]/10 text-[var(--primary-base)]`),"aria-label":t(`settings.projects.actions.field.iconAria`,{icon:n.label}),children:(0,Z.jsx)(J,{name:r,className:`h-4 w-4`})},n.key)})})})]}),(0,Z.jsx)(et,{value:e.name,onChange:t=>S(e.id,e=>({...e,name:t.target.value})),placeholder:t(`settings.projects.actions.field.actionNamePlaceholder`),className:`h-7 flex-1 min-w-0`})]}),(0,Z.jsxs)(`div`,{className:`py-1`,children:[(0,Z.jsx)(`p`,{className:`typography-meta mb-0.5 text-muted-foreground`,children:t(`settings.projects.actions.field.command`)}),(0,Z.jsx)(Ye,{embedded:!0,value:e.command,onChange:t=>S(e.id,e=>({...e,command:t.target.value})),placeholder:t(`settings.projects.actions.field.commandPlaceholder`),className:`min-h-[88px] w-full font-mono text-xs`})]}),(0,Z.jsxs)(`div`,{className:`py-1`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,Z.jsx)(`span`,{className:`typography-ui-label text-foreground`,children:t(`settings.projects.actions.field.autoOpenUrl`)}),(0,Z.jsxs)(`div`,{className:`group flex cursor-pointer items-center gap-2`,role:`button`,tabIndex:0,"aria-pressed":e.autoOpenUrl===!0,onClick:()=>S(e.id,e=>({...e,...e.autoOpenUrl===!0?{autoOpenUrl:void 0}:{autoOpenUrl:!0}})),onKeyDown:t=>{(t.key===` `||t.key===`Enter`)&&(t.preventDefault(),S(e.id,e=>({...e,...e.autoOpenUrl===!0?{autoOpenUrl:void 0}:{autoOpenUrl:!0}})))},children:[(0,Z.jsx)(He,{checked:e.autoOpenUrl===!0,onChange:t=>S(e.id,e=>({...e,...t?{autoOpenUrl:!0}:{autoOpenUrl:void 0}})),ariaLabel:t(`settings.projects.actions.field.autoOpenUrlForAria`,{title:o})}),(0,Z.jsx)(`span`,{className:`typography-ui-label font-normal text-foreground/80`,children:t(`settings.projects.actions.field.autoOpenUrlDescription`)})]})]}),e.autoOpenUrl===!0?(0,Z.jsxs)(`div`,{className:`mt-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(et,{value:e.openUrl||``,onChange:t=>S(e.id,e=>({...e,openUrl:t.target.value})),placeholder:t(`settings.projects.actions.field.overrideUrlPlaceholder`),className:`h-7 w-full max-w-[24rem]`}),(0,Z.jsxs)(rt,{children:[(0,Z.jsx)(tt,{asChild:!0,children:(0,Z.jsx)(J,{name:`information`,className:`h-3.5 w-3.5 shrink-0 text-muted-foreground/60 cursor-help`})}),(0,Z.jsx)(nt,{sideOffset:8,className:`max-w-xs`,children:t(`settings.projects.actions.field.overrideUrlTooltip`)})]})]}),n?(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(`p`,{className:`typography-meta mb-0.5 text-muted-foreground`,children:t(`settings.projects.actions.field.desktopSshForward`)}),g.length>0?(0,Z.jsxs)(Ke,{value:e.desktopOpenSshForward&&g.some(t=>t.id===e.desktopOpenSshForward)?e.desktopOpenSshForward:`__none__`,onValueChange:t=>{S(e.id,e=>({...e,...t===`__none__`?{desktopOpenSshForward:void 0}:{desktopOpenSshForward:t}}))},children:[(0,Z.jsx)($e,{className:`h-7 w-full`,children:(0,Z.jsx)(Ue,{placeholder:t(`settings.projects.actions.field.useOutputManualUrl`)})}),(0,Z.jsxs)(Ge,{children:[(0,Z.jsx)(Qe,{value:`__none__`,children:t(`settings.projects.actions.field.useOutputManualUrl`)}),g.map(e=>(0,Z.jsx)(Qe,{value:e.id,children:e.label},e.id))]})]}):(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:t(`settings.projects.actions.state.noDesktopSshForwards`)})]}):null]}):null]})]})})]},e.id)})}),_&&a.length>0?(0,Z.jsx)(`p`,{className:`typography-meta text-[var(--status-warning)]`,children:_}):null]})},gi=e=>{let t=(0,X.c)(123),{form:n}=e,{t:r}=he(),{currentTheme:i}=_t(),{name:a,setName:o,icon:s,setIcon:c,color:l,setColor:u,iconBackground:d,setIconBackground:f,parsedDefaultModel:p,handleDefaultModelChange:m,isUploadingIcon:h,isRemovingCustomIcon:g,isDiscoveringIcon:_,pendingRemoveImageIcon:v,setPendingRemoveImageIcon:y,pendingUploadIconPreviewUrl:b,setPreviewImageFailed:x,hasPendingUploadImageIcon:S,hasCustomIcon:C,effectiveHasImageIcon:w,hasRemovableImageIcon:T,showImagePreview:E,fileInputRef:D,handleUploadIcon:O,handleRemoveImageIcon:k,handleDiscoverIcon:A,currentIconImage:j,project:M}=n;if(!M)return null;let ee=l?Je[l]??null:null,N;t[0]===r?N=t[1]:(N=r(`settings.projects.page.field.projectName`),t[0]=r,t[1]=N);let P;t[2]===o?P=t[3]:(P=e=>o(e.target.value),t[2]=o,t[3]=P);let F;t[4]===r?F=t[5]:(F=r(`settings.projects.page.field.projectNamePlaceholder`),t[4]=r,t[5]=F);let I;t[6]!==a||t[7]!==P||t[8]!==F?(I=(0,Z.jsx)(et,{value:a,onChange:P,placeholder:F}),t[6]=a,t[7]=P,t[8]=F,t[9]=I):I=t[9];let L;t[10]!==N||t[11]!==I?(L=(0,Z.jsx)(cr,{label:N,itemId:`projects.name`,children:I}),t[10]=N,t[11]=I,t[12]=L):L=t[12];let R;t[13]===r?R=t[14]:(R=r(`settings.projects.page.field.defaultModel`),t[13]=r,t[14]=R);let z;t[15]===r?z=t[16]:(z=r(`settings.projects.page.field.defaultModelDescription`),t[15]=r,t[16]=z);let te;t[17]!==m||t[18]!==p.modelId||t[19]!==p.providerId?(te=(0,Z.jsx)(Ct,{providerId:p.providerId,modelId:p.modelId,onChange:m,className:`oc-settings-inline-value`}),t[17]=m,t[18]=p.modelId,t[19]=p.providerId,t[20]=te):te=t[20];let ne;t[21]!==R||t[22]!==z||t[23]!==te?(ne=(0,Z.jsx)(cr,{label:R,description:z,descriptionPlacement:`outside`,itemId:`projects.default-model`,children:te}),t[21]=R,t[22]=z,t[23]=te,t[24]=ne):ne=t[24];let B;t[25]===r?B=t[26]:(B=r(`settings.projects.page.field.accentColor`),t[25]=r,t[26]=B);let V;t[27]===u?V=t[28]:(V=()=>u(null),t[27]=u,t[28]=V);let re=l===null?`border-2 border-foreground bg-[var(--primary-base)]/10`:`border-border/40 hover:border-border hover:bg-[var(--surface-muted)]`,H;t[29]===re?H=t[30]:(H=q(`h-7 w-7 rounded-md border transition-colors flex items-center justify-center`,re),t[29]=re,t[30]=H);let U;t[31]===r?U=t[32]:(U=r(`settings.projects.page.field.none`),t[31]=r,t[32]=U);let ie;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(ie=(0,Z.jsx)(J,{name:`close`,className:`h-4 w-4 text-muted-foreground`}),t[33]=ie):ie=t[33];let ae;t[34]!==V||t[35]!==H||t[36]!==U?(ae=(0,Z.jsx)(`button`,{type:`button`,onClick:V,className:H,title:U,children:ie}),t[34]=V,t[35]=H,t[36]=U,t[37]=ae):ae=t[37];let oe;t[38]!==l||t[39]!==u?(oe=Ze.map(e=>(0,Z.jsx)(`button`,{type:`button`,onClick:()=>u(e.key),className:q(`h-7 w-7 rounded-md border transition-colors`,l===e.key?`border-2 border-foreground ring-1 ring-[var(--primary-base)]/40`:`border-transparent hover:border-border/70`),style:{backgroundColor:e.cssVar},title:e.label},e.key)),t[38]=l,t[39]=u,t[40]=oe):oe=t[40];let se;t[41]!==ae||t[42]!==oe?(se=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[ae,oe]}),t[41]=ae,t[42]=oe,t[43]=se):se=t[43];let ce;t[44]!==B||t[45]!==se?(ce=(0,Z.jsx)(cr,{label:B,itemId:`projects.accent-color`,children:se}),t[44]=B,t[45]=se,t[46]=ce):ce=t[46];let le;t[47]===r?le=t[48]:(le=r(`settings.projects.page.field.projectIcon`),t[47]=r,t[48]=le);let ue;t[49]===O?ue=t[50]:(ue=e=>{let t=e.target.files?.[0]??null;O(t),e.currentTarget.value=``},t[49]=O,t[50]=ue);let de;t[51]!==D||t[52]!==ue?(de=(0,Z.jsx)(`input`,{ref:D,type:`file`,accept:`image/png,image/jpeg,image/svg+xml,.png,.jpg,.jpeg,.svg`,className:`hidden`,onChange:ue}),t[51]=D,t[52]=ue,t[53]=de):de=t[53];let fe;t[54]===c?fe=t[55]:(fe=()=>c(null),t[54]=c,t[55]=fe);let W=s===null?`border-2 border-foreground bg-[var(--primary-base)]/10`:`border-border/40 hover:border-border hover:bg-[var(--surface-muted)]`,pe;t[56]===W?pe=t[57]:(pe=q(`h-7 w-7 rounded-md border transition-colors flex items-center justify-center`,W),t[56]=W,t[57]=pe);let me;t[58]===r?me=t[59]:(me=r(`settings.projects.page.field.none`),t[58]=r,t[59]=me);let ge;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(ge=(0,Z.jsx)(J,{name:`close`,className:`h-4 w-4 text-muted-foreground`}),t[60]=ge):ge=t[60];let _e;t[61]!==fe||t[62]!==pe||t[63]!==me?(_e=(0,Z.jsx)(`button`,{type:`button`,onClick:fe,className:pe,title:me,children:ge}),t[61]=fe,t[62]=pe,t[63]=me,t[64]=_e):_e=t[64];let ve;t[65]!==ee||t[66]!==s||t[67]!==c?(ve=Xe.map(e=>{let t=e.Icon;return(0,Z.jsx)(`button`,{type:`button`,onClick:()=>c(e.key),className:q(`h-7 w-7 rounded-md border transition-colors flex items-center justify-center`,s===e.key?`border-2 border-foreground bg-[var(--primary-base)]/10`:`border-transparent hover:border-border hover:bg-[var(--surface-muted)]`),title:e.label,children:(0,Z.jsx)(J,{name:t,className:`w-4 h-4`,style:ee&&s===e.key?{color:ee}:void 0})},e.key)}),t[65]=ee,t[66]=s,t[67]=c,t[68]=ve):ve=t[68];let ye;t[69]!==_e||t[70]!==ve?(ye=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[_e,ve]}),t[69]=_e,t[70]=ve,t[71]=ye):ye=t[71];let be;t[72]!==j||t[73]!==i||t[74]!==w||t[75]!==S||t[76]!==d||t[77]!==b||t[78]!==M||t[79]!==x||t[80]!==E||t[81]!==r?(be=w&&E&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,Z.jsx)(`span`,{className:`typography-meta text-muted-foreground`,children:r(`settings.projects.page.field.preview`)}),(0,Z.jsx)(`span`,{className:`inline-flex h-7 w-7 items-center justify-center rounded-md border border-border/60 bg-[var(--surface-elevated)] p-1`,children:(0,Z.jsx)(`span`,{className:`inline-flex h-4 w-4 items-center justify-center overflow-hidden rounded-[2px]`,style:d?{backgroundColor:d}:void 0,children:S&&b?(0,Z.jsx)(`img`,{src:b,alt:``,className:`h-full w-full object-contain`,draggable:!1,onError:()=>x(!0)}):(0,Z.jsx)(We,{project:{...M,iconImage:j??M.iconImage},options:{themeVariant:i.metadata.variant,iconColor:i.colors.surface.foreground},className:`h-full w-full object-contain`,onError:()=>x(!0)})})})]}),t[72]=j,t[73]=i,t[74]=w,t[75]=S,t[76]=d,t[77]=b,t[78]=M,t[79]=x,t[80]=E,t[81]=r,t[82]=be):be=t[82];let xe;t[83]!==w||t[84]!==d||t[85]!==f||t[86]!==r?(xe=w&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,Z.jsx)(`input`,{type:`color`,value:d??`#000000`,onChange:e=>f(e.target.value),className:`h-7 w-9 cursor-pointer rounded border border-border bg-transparent p-1`,"aria-label":r(`settings.projects.page.field.projectIconBackgroundAria`)}),(0,Z.jsx)(et,{value:d??``,onChange:e=>f(e.target.value),placeholder:`#000000`,className:`h-7 w-[8rem]`}),(0,Z.jsx)(Y,{type:`button`,size:`xs`,variant:`outline`,onClick:()=>f(null),className:`h-7 w-7 p-0`,"aria-label":r(`settings.projects.page.field.clearIconBackgroundAria`),title:r(`settings.projects.page.field.clearBackground`),disabled:!d,children:(0,Z.jsx)(J,{name:`close`,className:`h-3.5 w-3.5`})})]}),t[83]=w,t[84]=d,t[85]=f,t[86]=r,t[87]=xe):xe=t[87];let Se;t[88]!==D||t[89]!==A||t[90]!==C||t[91]!==_||t[92]!==h||t[93]!==r?(Se=!C&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Y,{size:`xs`,className:`h-6 !font-normal`,onClick:()=>D.current?.click(),disabled:h,children:r(h?`settings.projects.page.actions.uploading`:`settings.projects.page.actions.uploadIcon`)}),(0,Z.jsx)(Y,{size:`xs`,className:`h-6 !font-normal`,variant:`outline`,onClick:()=>void A(),disabled:_,children:r(_?`settings.projects.page.actions.discovering`:`settings.projects.page.actions.discoverFavicon`)})]}),t[88]=D,t[89]=A,t[90]=C,t[91]=_,t[92]=h,t[93]=r,t[94]=Se):Se=t[94];let Ce;t[95]!==k||t[96]!==T||t[97]!==g||t[98]!==r?(Ce=T&&(0,Z.jsx)(Y,{size:`xs`,className:`!font-normal`,variant:`outline`,onClick:()=>void k(),disabled:g,children:r(g?`settings.projects.page.actions.removing`:`settings.projects.page.actions.removeProjectIcon`)}),t[95]=k,t[96]=T,t[97]=g,t[98]=r,t[99]=Ce):Ce=t[99];let G;t[100]!==g||t[101]!==v||t[102]!==y||t[103]!==r?(G=v&&(0,Z.jsx)(Y,{size:`xs`,className:`!font-normal`,variant:`outline`,onClick:()=>y(!1),disabled:g,children:r(`settings.projects.page.actions.undoRemove`)}),t[100]=g,t[101]=v,t[102]=y,t[103]=r,t[104]=G):G=t[104];let we;t[105]!==Se||t[106]!==Ce||t[107]!==G?(we=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[Se,Ce,G]}),t[105]=Se,t[106]=Ce,t[107]=G,t[108]=we):we=t[108];let Te;t[109]!==de||t[110]!==ye||t[111]!==be||t[112]!==xe||t[113]!==we?(Te=(0,Z.jsxs)(`div`,{className:`flex w-full flex-col items-end gap-2`,children:[de,ye,be,xe,we]}),t[109]=de,t[110]=ye,t[111]=be,t[112]=xe,t[113]=we,t[114]=Te):Te=t[114];let Ee;t[115]!==le||t[116]!==Te?(Ee=(0,Z.jsx)(cr,{label:le,itemId:`projects.icon`,children:Te}),t[115]=le,t[116]=Te,t[117]=Ee):Ee=t[117];let De;return t[118]!==ce||t[119]!==Ee||t[120]!==L||t[121]!==ne?(De=(0,Z.jsxs)(`div`,{className:`oc-settings-section-stack`,children:[L,ne,ce,Ee]}),t[118]=ce,t[119]=Ee,t[120]=L,t[121]=ne,t[122]=De):De=t[122],De},_i=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,vi=e=>{if(!e)return null;let t=e.trim();return t&&_i.test(t)?t.toLowerCase():null},yi=e=>{let{t}=he(),n=G(e=>e.uploadProjectIcon),r=G(e=>e.removeProjectIcon),i=G(e=>e.discoverProjectIcon),a=G(t=>e?t.projects.find(t=>t.id===e.id)?.iconImage??null:null),[o,s]=$.useState(``),[c,l]=$.useState(null),[u,d]=$.useState(null),[f,p]=$.useState(null),[m,h]=$.useState(void 0),[g,_]=$.useState(!1),[v,y]=$.useState(!1),[b,x]=$.useState(!1),[S,C]=$.useState(!1),[w,T]=$.useState(null),[E,D]=$.useState(null),[O,k]=$.useState(!1),A=$.useRef(null),j=$.useCallback(()=>{T(null),D(e=>(e&&URL.revokeObjectURL(e),null))},[]),M=e?.id??null;$.useEffect(()=>{if(!e){s(``),l(null),d(null),p(null),h(void 0);return}s(e.label??``),l(e.icon??null),d(e.color??null),p(e.iconBackground??null),h(e.defaultModel),C(!1),j(),k(!1)},[e,j]),$.useEffect(()=>()=>{j()},[j]);let ee=$.useMemo(()=>Ee(m)??{providerId:``,modelId:``},[m]),N=!!e?.iconImage,P=!!(w&&E),F=e?.iconImage?.source===`custom`,I=N&&!S||P,L=I,R=!!(e&&N&&!S),z=!O&&(P||R),te=!!e&&(o.trim()!==(e?.label??``).trim()||c!==(e?.icon??null)||u!==(e?.color??null)||f!==(e?.iconBackground??null)||(m??void 0)!==(e?.defaultModel??void 0)||S||!!w),ne=$.useCallback((e,t)=>{h(e&&t?`${e}/${t}`:void 0)},[]),B=$.useCallback(t=>{!e||!t||g||(C(!1),k(!1),T(t),D(e=>(e&&URL.revokeObjectURL(e),URL.createObjectURL(t))))},[g,e]),V=$.useCallback(()=>{!e||!L||v||(P&&j(),C(!!N),k(!1))},[j,P,L,N,v,e]),re=$.useCallback(async()=>{if(!(!e||b)){j(),C(!1),k(!1),x(!0);try{let n=await i(e.id);if(!n.ok){K.error(n.error||t(`settings.projects.page.toast.discoverIconFailed`));return}if(n.skipped){K.success(t(`settings.projects.page.toast.customIconAlreadySet`));return}K.success(t(`settings.projects.page.toast.iconDiscovered`))}finally{x(!1)}}},[j,i,b,e,t]),H=$.useCallback(async i=>{let a=i?.silent===!0;if(!e)return null;let s=o.trim();if(!s)return null;if(w){_(!0);let r=await n(e.id,w);if(_(!1),!r.ok)return K.error(r.error||t(`settings.projects.page.toast.uploadIconFailed`)),null;a||K.success(t(`settings.projects.page.toast.iconUpdated`)),j(),C(!1)}let l=S&&!!e.iconImage;if(l){y(!0);let n=await r(e.id);if(y(!1),!n.ok)return K.error(n.error||t(`settings.projects.page.toast.removeIconFailed`)),null;a||K.success(t(`settings.projects.page.toast.iconRemoved`)),C(!1),p(null)}return{label:s,icon:c,color:u,iconBackground:vi(l?null:f),defaultModel:m??null}},[j,u,m,c,f,o,S,w,e,r,t,n]);return $.useEffect(()=>{k(!1)},[M,a?.updatedAt]),{name:o,setName:s,icon:c,setIcon:l,color:u,setColor:d,iconBackground:f,setIconBackground:p,defaultModel:m,parsedDefaultModel:ee,handleDefaultModelChange:ne,isUploadingIcon:g,isRemovingCustomIcon:v,isDiscoveringIcon:b,pendingRemoveImageIcon:S,setPendingRemoveImageIcon:C,pendingUploadIconFile:w,pendingUploadIconPreviewUrl:E,previewImageFailed:O,setPreviewImageFailed:k,hasStoredImageIcon:N,hasPendingUploadImageIcon:P,hasCustomIcon:F,effectiveHasImageIcon:I,hasRemovableImageIcon:L,showStoredImagePreview:R,showImagePreview:z,fileInputRef:A,clearPendingUploadIcon:j,handleUploadIcon:B,handleRemoveImageIcon:V,handleDiscoverIcon:re,hasChanges:te,prepareSaveData:H,currentIconImage:a,project:e}},bi=450,xi=(e,t)=>{let{t:n}=he(),{hasChanges:r,name:i,icon:a,color:o,iconBackground:s,defaultModel:c,pendingRemoveImageIcon:l,pendingUploadIconFile:u,isUploadingIcon:d,isRemovingCustomIcon:f,prepareSaveData:p}=e,m=$.useRef(!1);$.useEffect(()=>{if(!r||!i.trim()||d||f||m.current)return;let e=window.setTimeout(()=>{m.current||(m.current=!0,(async()=>{try{let e=await p({silent:!0});if(e)try{await t(e)}catch{K.error(n(`settings.projects.page.toast.saveFailed`))}}finally{m.current=!1}})())},bi);return()=>{window.clearTimeout(e)}},[o,c,r,a,s,f,d,i,t,l,u,p,n])},Si=e=>{let t=(0,X.c)(25),{project:n,onIdentitySave:r}=e,{t:i}=he(),a=yi(n),o;bb0:{if(!n){o=null;break bb0}let e;t[0]!==n.id||t[1]!==n.path?(e={id:n.id,path:n.path},t[0]=n.id,t[1]=n.path,t[2]=e):e=t[2],o=e}let s=o,c;if(t[3]===r?c=t[4]:(c=async e=>{await r(e)},t[3]=r,t[4]=c),xi(a,c),!n||!s)return null;let l;t[5]!==n.path||t[6]!==i?(l=n.path.split(/[\\/]/).filter(Boolean).at(-1)??i(`settings.projects.page.title.default`),t[5]=n.path,t[6]=i,t[7]=l):l=t[7];let u=l,d;t[8]===u?d=t[9]:(d=(0,Z.jsx)(`h2`,{className:`typography-ui-header font-semibold text-foreground truncate`,children:u}),t[8]=u,t[9]=d);let f;t[10]===n.path?f=t[11]:(f=(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground truncate`,title:n.path,children:n.path}),t[10]=n.path,t[11]=f);let p;t[12]!==d||t[13]!==f?(p=(0,Z.jsxs)(`div`,{className:`px-1`,children:[d,f]}),t[12]=d,t[13]=f,t[14]=p):p=t[14];let m;t[15]===a?m=t[16]:(m=(0,Z.jsx)(gi,{form:a}),t[15]=a,t[16]=m);let h,g;t[17]===s?(h=t[18],g=t[19]):(h=(0,Z.jsx)(hi,{projectRef:s}),g=(0,Z.jsx)(li,{projectRef:s}),t[17]=s,t[18]=h,t[19]=g);let _;return t[20]!==p||t[21]!==m||t[22]!==h||t[23]!==g?(_=(0,Z.jsxs)(`div`,{className:`oc-settings-section-stack`,children:[p,m,h,g]}),t[20]=p,t[21]=m,t[22]=h,t[23]=g,t[24]=_):_=t[24],_};function Ci(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.substring(0,t);if(n===`gemini`||n===`antigravity`)return e.substring(t+1)}return e}var wi={google:[{id:`gemini-auth`,label:`Gemini`,matcher:e=>e.startsWith(`gemini/`),order:1},{id:`antigravity-auth`,label:`Antigravity`,matcher:e=>e.startsWith(`antigravity/`),order:2}]};function Ti(e,t){let n=wi[t]??[];for(let t of n)if(t.matcher(e))return t;return null}function Ei(e){return wi[e]??[]}function Di(e){return[...e].sort((e,t)=>e.order-t.order)}function Oi(e,t){let n=new Map;for(let r of Object.keys(e)){let e=Ti(r,t)?.id??null;n.has(e)||n.set(e,[]),n.get(e).push(r)}return n}function ki(e,t,n){let r=new Map;for(let i of e){let e=Ti(t(i),n)?.id??null;r.has(e)||r.set(e,[]),r.get(e).push(i)}return r}function Ai(e,t){return t.filter(e=>{let t=e.toLowerCase(),n=t.includes(`/`)?t.split(`/`)[1]:t;return!!(n.startsWith(`gemini-3-`)||n.startsWith(`claude-`))})}var ji=6e4,Mi=0,Ni=0,Pi=new Map,Fi=e=>{let t=Yt.map(e=>e.id),n=typeof e?.usageAutoRefresh==`boolean`&&e.usageAutoRefresh,r=typeof e?.usageRefreshIntervalMs==`number`&&Number.isFinite(e.usageRefreshIntervalMs)?Math.max(3e4,Math.min(3e5,Math.round(e.usageRefreshIntervalMs))):ji,i=e?.usageDisplayMode===`remaining`?`remaining`:`usage`,a=typeof e?.usageShowPredValues==`boolean`&&e.usageShowPredValues,o=Array.isArray(e?.usageDropdownProviders)?e?.usageDropdownProviders:null,s=o?o.filter(e=>typeof e==`string`&&t.includes(e)):t,c={},l=e?.usageSelectedModels;if(l&&typeof l==`object`)for(let[e,t]of Object.entries(l))Array.isArray(t)&&(c[e]=t.filter(e=>typeof e==`string`));let u={},d=e?.usageExpandedFamilies;if(d&&typeof d==`object`)for(let[e,t]of Object.entries(d))Array.isArray(t)&&(u[e]=t.filter(e=>typeof e==`string`));return{autoRefresh:n,refreshIntervalMs:r,displayMode:i,showPredValues:a,dropdownProviderIds:s,selectedModels:c,expandedFamilies:u}},Ii=async()=>{let e=C()?.settings;if(e)try{let t=(await e.load())?.settings;return Fi(t??null)}catch{}if(!o()){let e=await g(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(e.ok)return Fi(await e.json().catch(()=>null))}return{autoRefresh:!1,refreshIntervalMs:ji,displayMode:`usage`,showPredValues:!1,dropdownProviderIds:Yt.map(e=>e.id),selectedModels:{},expandedFamilies:{}}},Li=async(e,t)=>{let n=Ni;Pi.set(e,(Pi.get(e)??0)+1),t(t=>({isFetchingProvider:{...t.isFetchingProvider,[e]:!0}}));try{let r=await S.fetchQuery({queryKey:f.quota(e),queryFn:({signal:t})=>b(e,t),staleTime:0,retry:!1});return n===Ni?(t(t=>{let n=t.results.filter(t=>t.providerId!==e);return n.push(r),{results:n}}),{providerId:e,result:r}):{providerId:e,stale:!0}}catch(t){return n===Ni?{providerId:e,error:t instanceof Error?t.message:`Failed to fetch quota`}:{providerId:e,stale:!0}}finally{if(n===Ni){let n=(Pi.get(e)??1)-1;n>0?Pi.set(e,n):Pi.delete(e),t(t=>({isFetchingProvider:{...t.isFetchingProvider,[e]:n>0}}))}}},Ri=()=>{Ni+=1,Mi+=1,Pi.clear(),zi.setState({results:[],isLoading:!1,isFetchingProvider:{},lastUpdated:null,error:null})},zi=w()(E((e,t)=>({results:[],selectedProviderId:null,isLoading:!1,isFetchingProvider:{},lastUpdated:null,error:null,autoRefresh:!1,refreshIntervalMs:ji,displayMode:`usage`,showPredValues:!1,dropdownProviderIds:Yt.map(e=>e.id),selectedModels:{},expandedFamilies:{},loadSettings:async()=>{try{e(await Ii())}catch(e){console.warn(`Failed to load usage settings:`,e)}},fetchAllQuotas:async()=>{let t=++Mi;e({isLoading:!0,error:null});let n=Yt.map(e=>e.id),r=await Promise.all(n.map(t=>Li(t,e)));if(t===Mi){let t=r.find(e=>`error`in e);e({isLoading:!1,...r.some(e=>`result`in e)?{lastUpdated:Date.now()}:{},error:t?.error??null})}},fetchProviderQuota:async t=>{let n=await Li(t,e);`stale`in n||e({error:`error`in n?n.error:null})},setSelectedProvider:t=>e({selectedProviderId:t}),setAutoRefresh:t=>e({autoRefresh:t}),setRefreshInterval:t=>{e({refreshIntervalMs:Math.max(3e4,Math.min(3e5,Math.round(t)))})},setDisplayMode:t=>e({displayMode:t}),setShowPredValues:t=>e({showPredValues:t}),setDropdownProviderIds:t=>e({dropdownProviderIds:t}),setSelectedModels:(t,n)=>{e(e=>({selectedModels:{...e.selectedModels,[t]:n}}))},toggleModelSelected:(t,n)=>{e(e=>{let r=e.selectedModels[t]??[],i=r.includes(n)?r.filter(e=>e!==n):[...r,n];return{selectedModels:{...e.selectedModels,[t]:i}}})},setExpandedFamilies:(n,r)=>{e(e=>({expandedFamilies:{...e.expandedFamilies,[n]:r}})),y({usageExpandedFamilies:t().expandedFamilies})},toggleFamilyExpanded:(n,r)=>{e(e=>{let t=e.expandedFamilies[n]??[],i=t.includes(r)?t.filter(e=>e!==r):[...t,r];return{expandedFamilies:{...e.expandedFamilies,[n]:i}}}),y({usageExpandedFamilies:t().expandedFamilies})},applyDefaultSelections:(n,r)=>{if((t().selectedModels[n]?.length??0)>0)return;let i=Ai(n,r);i.length!==0&&(e(e=>({selectedModels:{...e.selectedModels,[n]:i}})),y({usageSelectedModels:t().selectedModels}))}}),{name:`quota-store`})),Bi=()=>{let e=(0,X.c)(5),t=zi(Vi),n=zi(Hi),r=zi(Ui),i,a;e[0]!==t||e[1]!==r||e[2]!==n?(i=()=>{if(!t)return;let e=window.setInterval(()=>{r()},n);return()=>window.clearInterval(e)},a=[t,n,r],e[0]=t,e[1]=r,e[2]=n,e[3]=i,e[4]=a):(i=e[3],a=e[4]),$.useEffect(i,a)};function Vi(e){return e.autoRefresh}function Hi(e){return e.refreshIntervalMs}function Ui(e){return e.fetchAllQuotas}var Wi=e=>{let t=(0,X.c)(20),{percent:n,tonePercent:r,className:i,expectedMarkerPercent:a}=e,o;t[0]===n?o=t[1]:(o=ht(n)??0,t[0]=n,t[1]=o);let s=o,c=r??n,l;t[2]===c?l=t[3]:(l=ft(c),t[2]=c,t[3]=l);let u=l,d=a==null?null:Math.max(0,Math.min(100,a)),f;t[4]===u?f=t[5]:(f=u===`critical`?{backgroundColor:`var(--status-error)`}:u===`warn`?{backgroundColor:`var(--status-warning)`}:{backgroundColor:`var(--status-success)`},t[4]=u,t[5]=f);let p=f,m;t[6]===i?m=t[7]:(m=q(`relative h-2.5 rounded-full bg-[var(--interactive-border)] overflow-hidden`,i),t[6]=i,t[7]=m);let h=`${s}%`,g;t[8]!==p||t[9]!==h?(g={...p,width:h},t[8]=p,t[9]=h,t[10]=g):g=t[10];let _;t[11]!==s||t[12]!==g?(_=(0,Z.jsx)(`div`,{className:`h-full transition-all duration-300`,style:g,role:`progressbar`,"aria-valuenow":s,"aria-valuemin":0,"aria-valuemax":100}),t[11]=s,t[12]=g,t[13]=_):_=t[13];let v;t[14]===d?v=t[15]:(v=d!=null&&d>0&&d<100&&(0,Z.jsx)(`div`,{className:`absolute top-0 h-full w-0.5 bg-foreground`,style:{left:`${d}%`},title:`Expected usage if spread evenly: ${Math.round(d)}% of quota`,"aria-hidden":`true`}),t[14]=d,t[15]=v);let y;return t[16]!==m||t[17]!==_||t[18]!==v?(y=(0,Z.jsxs)(`div`,{className:m,children:[_,v]}),t[16]=m,t[17]=_,t[18]=v,t[19]=y):y=t[19],y},Gi=e=>{let t=(0,X.c)(67),{paceInfo:n,className:r,compact:i}=e,a=i!==void 0&&i,{t:o}=he(),s;t[0]===n.status?s=t[1]:(s=dt(n.status),t[0]=n.status,t[1]=s);let c=s,l;bb0:{switch(n.status){case`on-track`:{let e;t[2]===o?e=t[3]:(e=o(`settings.usage.pace.status.onTrack`),t[2]=o,t[3]=e),l=e;break bb0}case`slightly-fast`:{let e;t[4]===o?e=t[5]:(e=o(`settings.usage.pace.status.slightlyFast`),t[4]=o,t[5]=e),l=e;break bb0}case`too-fast`:{let e;t[6]===o?e=t[7]:(e=o(`settings.usage.pace.status.tooFast`),t[6]=o,t[7]=e),l=e;break bb0}case`exhausted`:{let e;t[8]===o?e=t[9]:(e=o(`settings.usage.pace.status.usedUp`),t[8]=o,t[9]=e),l=e;break bb0}}l=void 0}let u=l,d;t[10]!==n.predictText||t[11]!==o?(d=o(`settings.usage.pace.predictionTooltip`,{prediction:n.predictText}),t[10]=n.predictText,t[11]=o,t[12]=d):d=t[12];let f=d;if(a){let e;t[13]===r?e=t[14]:(e=q(`flex items-center gap-1.5`,r),t[13]=r,t[14]=e);let i;t[15]===c?i=t[16]:(i={backgroundColor:c},t[15]=c,t[16]=i);let a;t[17]!==u||t[18]!==i?(a=(0,Z.jsx)(`div`,{className:`h-2 w-2 rounded-full flex-shrink-0`,style:i,title:u}),t[17]=u,t[18]=i,t[19]=a):a=t[19];let s;t[20]===c?s=t[21]:(s={color:c},t[20]=c,t[21]=s);let l=n.isExhausted?void 0:f,d;t[22]!==n.isExhausted||t[23]!==n.predictText||t[24]!==n.remainingSeconds||t[25]!==o?(d=n.isExhausted?(0,Z.jsx)(Z.Fragment,{children:o(`settings.usage.pace.wait`,{duration:mt(n.remainingSeconds)})}):(0,Z.jsx)(Z.Fragment,{children:o(`settings.usage.pace.prediction`,{prediction:n.predictText})}),t[22]=n.isExhausted,t[23]=n.predictText,t[24]=n.remainingSeconds,t[25]=o,t[26]=d):d=t[26];let p;t[27]!==d||t[28]!==s||t[29]!==l?(p=(0,Z.jsx)(`span`,{className:`typography-micro tabular-nums`,style:s,title:l,children:d}),t[27]=d,t[28]=s,t[29]=l,t[30]=p):p=t[30];let m;return t[31]!==p||t[32]!==e||t[33]!==a?(m=(0,Z.jsxs)(`div`,{className:e,children:[a,p]}),t[31]=p,t[32]=e,t[33]=a,t[34]=m):m=t[34],m}let p;t[35]===r?p=t[36]:(p=q(`flex items-center justify-between gap-2`,r),t[35]=r,t[36]=p);let m;t[37]!==n.isExhausted||t[38]!==n.paceRateText||t[39]!==o?(m=!n.isExhausted&&(0,Z.jsx)(`span`,{className:`typography-micro text-muted-foreground`,children:o(`settings.usage.pace.rate`,{rate:n.paceRateText})}),t[37]=n.isExhausted,t[38]=n.paceRateText,t[39]=o,t[40]=m):m=t[40];let h;t[41]===m?h=t[42]:(h=(0,Z.jsx)(`div`,{className:`flex items-center gap-1.5`,children:m}),t[41]=m,t[42]=h);let g;t[43]===c?g=t[44]:(g={color:c},t[43]=c,t[44]=g);let _;t[45]!==n.isExhausted||t[46]!==n.predictText||t[47]!==n.remainingSeconds||t[48]!==f||t[49]!==u||t[50]!==o?(_=n.isExhausted?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:u}),(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:o(`settings.usage.pace.waitSeparator`)}),(0,Z.jsx)(`span`,{className:`font-medium`,children:mt(n.remainingSeconds)})]}):(0,Z.jsxs)(`span`,{title:f,children:[(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:o(`settings.usage.pace.predictionLabel`)}),(0,Z.jsx)(`span`,{className:`font-medium`,children:n.predictText})]}),t[45]=n.isExhausted,t[46]=n.predictText,t[47]=n.remainingSeconds,t[48]=f,t[49]=u,t[50]=o,t[51]=_):_=t[51];let v;t[52]!==g||t[53]!==_?(v=(0,Z.jsx)(`span`,{className:`typography-micro tabular-nums`,style:g,children:_}),t[52]=g,t[53]=_,t[54]=v):v=t[54];let y;t[55]===c?y=t[56]:(y={backgroundColor:c},t[55]=c,t[56]=y);let b;t[57]!==u||t[58]!==y?(b=(0,Z.jsx)(`div`,{className:`h-2 w-2 rounded-full flex-shrink-0`,style:y,title:u}),t[57]=u,t[58]=y,t[59]=b):b=t[59];let x;t[60]!==v||t[61]!==b?(x=(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[v,b]}),t[60]=v,t[61]=b,t[62]=x):x=t[62];let S;return t[63]!==x||t[64]!==p||t[65]!==h?(S=(0,Z.jsxs)(`div`,{className:p,children:[h,x]}),t[63]=x,t[64]=p,t[65]=h,t[66]=S):S=t[66],S},Ki=e=>e instanceof Error&&e.name===`CancelledError`,qi=w(()=>({setStatus:e=>xt(S,e),refreshStatus:async(e,n)=>{let r=t();n?.force&&await S.cancelQueries({queryKey:f.github.auth(r),exact:!0});try{return await wt(S,e,r)}catch(e){if(Ki(e))return St(S,r);throw e}}})),Ji={displayMode:`browser`,installed:!1,browserTab:!0},Yi=new Set,Xi=Ji,Zi=!1,Qi,$i=()=>{let e=gt();return{displayMode:e,installed:e!==`browser`,browserTab:e===`browser`}},ea=()=>(!Zi&&typeof window<`u`&&(Xi=$i(),Zi=!0),Xi),ta=()=>{let e=$i();Zi=!0,e.displayMode!==Xi.displayMode&&(Xi=e,Yi.forEach(e=>e()))},na=()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=[window.matchMedia(`(display-mode: standalone)`),window.matchMedia(`(display-mode: minimal-ui)`),window.matchMedia(`(display-mode: fullscreen)`),window.matchMedia(`(display-mode: window-controls-overlay)`)];for(let t of e)typeof t.addEventListener==`function`?t.addEventListener(`change`,ta):typeof t.addListener==`function`&&t.addListener(ta);return window.addEventListener(`appinstalled`,ta),window.addEventListener(`focus`,ta),()=>{for(let t of e)typeof t.removeEventListener==`function`?t.removeEventListener(`change`,ta):typeof t.removeListener==`function`&&t.removeListener(ta);window.removeEventListener(`appinstalled`,ta),window.removeEventListener(`focus`,ta)}},ra=e=>(Yi.add(e),Qi??=na(),ta(),()=>{Yi.delete(e),Yi.size===0&&(Qi?.(),Qi=void 0)}),ia=()=>$.useSyncExternalStore(ra,ea,aa);function aa(){return Ji}var oa=`OPEN CHAMBER`,sa=w()(T(e=>({sidebarBrandName:oa,setSidebarBrandName:t=>{let n=t.slice(0,64);e(e=>e.sidebarBrandName===n?e:{sidebarBrandName:n})}}),{name:`sidebar-brand-store`,storage:v(),version:2,migrate:(e,t)=>{if(!e||typeof e!=`object`)return e;let n=e;return t<1&&n.sidebarBrandName===`YEE CODE`&&(n.sidebarBrandName=oa),t<2&&n.sidebarBrandName===`Open Chamber`&&(n.sidebarBrandName=oa),n}}));typeof window<`u`&&n(e=>{r(e)&&sa.persist.rehydrate()});var ca=[`connection`,`personalization`,`workspace`,`opencode`,`content`,`system`],la=[`instances`,`appearance`,`chat`,`notifications`,`sessions`,`summary-ai`,`shortcuts`,`projects`,`git`,`remote-instances`,`providers`,`agents`,`assistants`,`behavior`,`commands`,`mcp`,`plugins`,`global-config`,`magic-prompts`,`snippets`,`skills.installed`,`skills.catalog`,`usage`,`voice`,`about`],ua=[`instances`,`appearance`,`chat`,`notifications`,`sessions`,`summary-ai`,`projects`,`git`,`providers`,`agents`,`assistants`,`behavior`,`commands`,`mcp`,`plugins`,`magic-prompts`,`snippets`,`skills.installed`,`usage`,`voice`,`about`],da=[{slug:`home`,title:`Settings`,group:`personalization`,kind:`single`,description:`Search and jump to common pages.`,keywords:[`search`,`settings`]},{slug:`projects`,title:`Projects`,group:`workspace`,kind:`split`,keywords:[`project`,`projects`,`worktree`,`worktrees`,`repo`,`repository`,`directory`]},{slug:`instances`,title:`Switch instance`,group:`connection`,kind:`single`,keywords:[`instance`,`instances`,`server`,`connection`,`switch`],isAvailable:e=>e.isMobile},{slug:`remote-instances`,title:`Remote Instances`,group:`workspace`,kind:`single`,keywords:[`ssh`,`remote`,`instances`,`forwarding`,`connection`],isAvailable:e=>!e.isVSCode},{slug:`providers`,title:`Providers`,group:`opencode`,kind:`split`,keywords:[`provider`,`providers`,`models`,`model`,`api key`,`api keys`,`openai`,`anthropic`,`ollama`,`credentials`]},{slug:`usage`,title:`Usage`,group:`system`,kind:`split`,keywords:[`quota`,`billing`,`tokens`,`usage`,`limits`]},{slug:`agents`,title:`Agents`,group:`opencode`,kind:`split`,keywords:[`agent`,`agents`,`prompts`,`tools`,`permissions`]},{slug:`assistants`,title:`Assistants`,group:`opencode`,kind:`split`,keywords:[`assistant`,`assistants`,`sharing`]},{slug:`behavior`,title:`Behavior`,group:`opencode`,kind:`single`,keywords:[`behavior`,`agents.md`,`system prompt`,`global rules`,`instructions`,`override`]},{slug:`commands`,title:`Commands`,group:`opencode`,kind:`split`,keywords:[`command`,`commands`,`slash`,`macros`,`automation`]},{slug:`mcp`,title:`MCP`,group:`opencode`,kind:`split`,keywords:[`mcp`,`model context protocol`,`servers`,`tools`,`remote`,`stdio`]},{slug:`plugins`,title:`Plugins`,group:`opencode`,kind:`split`,keywords:[`plugin`,`plugins`,`extensions`,`addons`,`npm`,`opencode-wakatime`]},{slug:`global-config`,title:`Global Configuration`,group:`opencode`,kind:`single`,keywords:[`global`,`configuration`,`opencode.json`,`opencode.jsonc`,`oh-my-opencode`,`oh-my-openagent`]},{slug:`skills.installed`,title:`Skills`,group:`content`,kind:`split`,keywords:[`skill`,`skills`,`instructions`,`install`,`catalog`]},{slug:`skills.catalog`,title:`Skills Catalog`,group:`content`,kind:`single`,keywords:[`install`,`catalog`,`external`,`repository`,`skills catalog`]},{slug:`git`,title:`Git`,group:`workspace`,kind:`single`,keywords:[`git`,`github`,`identity`,`identities`,`ssh`,`profiles`,`credentials`,`keys`,`commit`,`gitmoji`,`oauth`,`prs`,`issues`],isAvailable:e=>!e.isVSCode},{slug:`appearance`,title:`Appearance`,group:`personalization`,kind:`single`,keywords:[`theme`,`font`,`spacing`,`padding`,`corner radius`,`radius`,`input bar`,`keyboard`,`viewport`,`mobile`,`terminal`,`pwa`,`install name`,`app shortcuts`]},{slug:`chat`,title:`Chat`,group:`personalization`,kind:`single`,keywords:[`tools`,`diff`,`reasoning`,`dotfiles`,`draft`,`queue`,`output`,`copy`,`image`,`split messages`,`message actions`]},{slug:`shortcuts`,title:`Shortcuts`,group:`personalization`,kind:`single`,keywords:[`keyboard`,`hotkeys`,`shortcuts`,`bindings`],isAvailable:e=>!e.isVSCode},{slug:`sessions`,title:`Sessions`,group:`personalization`,kind:`single`,keywords:[`defaults`,`default agent`,`default model`,`retention`,`memory`,`limits`,`zen`]},{slug:`summary-ai`,title:`Summary AI`,group:`personalization`,kind:`single`,keywords:[`summary`,`commit`,`session title`,`prompt`,`provider`,`custom api`,`base url`,`api token`]},{slug:`magic-prompts`,title:`Magic Prompts`,group:`content`,kind:`split`,keywords:[`prompts`,`templates`,`git`,`github`,`review`,`commit`,`pull request`],isAvailable:e=>!e.isVSCode},{slug:`snippets`,title:`Snippets`,group:`content`,kind:`split`,keywords:[`prompt`,`templates`,`multi-run`,`strategy`,`approach`]},{slug:`notifications`,title:`Notifications`,group:`personalization`,kind:`single`,keywords:[`alerts`,`native`,`summary`,`summarization`]},{slug:`voice`,title:`Voice`,group:`system`,kind:`single`,keywords:[`tts`,`speech`,`voice`],isAvailable:e=>!e.isVSCode},{slug:`about`,title:`About`,group:`system`,kind:`single`,keywords:[`about`,`version`,`updates`,`release`,`changelog`],isAvailable:e=>e.isMobile}];function fa(e){let t=new Map(la.map((e,t)=>[e,t])),n=new Map;for(let t of e){let e=n.get(t.group)??[];e.push(t),n.set(t.group,e)}return ca.flatMap(e=>{let r=n.get(e);return r?.length?[{group:e,pages:r.sort((e,n)=>(t.get(e.slug)??999)-(t.get(n.slug)??999))}]:[]})}var pa={sessions:`sessions`,agents:`agents`,commands:`commands`,mcp:`mcp`,skills:`skills.installed`,providers:`providers`,usage:`usage`,"git-identities":`git`,settings:`home`};function ma(e){let t=e.trim().toLowerCase();return da.find(e=>e.slug===t)??null}function ha(e){let t=(e??``).trim().toLowerCase();if(!t)return`home`;let n=pa[t];if(n)return n;let r=ma(t);return r?r.slug:`home`}var ga=48;function _a({title:e,eyebrow:t,trailing:n,className:r}){let i=(0,$.useRef)(null),a=(0,$.useRef)(null),o=(0,$.useRef)(null),s=(0,$.useRef)(null),c=(0,$.useRef)(null),l=me(()=>{s.current=null;let e=i.current,t=a.current;if(!e||!t)return;let n=Math.min(1,Math.max(0,t.scrollTop/ga)),r=o.current?.matches?Number(n>=.5):n;c.current!==null&&Math.abs(c.current-r)<.001||(c.current=r,e.style.setProperty(`--oc-mobile-title-collapse`,r.toFixed(4)))}),u=me(()=>{s.current===null&&(s.current=window.requestAnimationFrame(l))});return(0,$.useEffect)(()=>{let e=i.current;if(!e)return;let t=e.closest(`.oc-mobile-settings-root-surface, [role="tabpanel"]`);if(!t)return;let n=window.matchMedia(`(prefers-reduced-motion: reduce)`);return a.current=t,o.current=n,c.current=null,t.addEventListener(`scroll`,u,{passive:!0}),n.addEventListener(`change`,u),l(),()=>{t.removeEventListener(`scroll`,u),n.removeEventListener(`change`,u),s.current!==null&&window.cancelAnimationFrame(s.current),s.current=null,a.current=null,o.current=null,c.current=null}},[]),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`header`,{ref:i,className:q(`oc-mobile-collapsing-header flex shrink-0 items-start gap-4`,r),children:(0,Z.jsxs)(`div`,{className:`oc-mobile-collapsing-header-inner`,children:[(0,Z.jsxs)(`div`,{className:`oc-mobile-collapsing-header-title-block min-w-0 flex-1`,children:[t?(0,Z.jsx)(`p`,{className:`oc-mobile-collapsing-header-eyebrow truncate typography-micro font-medium text-muted-foreground`,children:t}):null,(0,Z.jsx)(`h1`,{className:`oc-mobile-root-page-title truncate font-semibold text-foreground`,children:e})]}),n?(0,Z.jsx)(`div`,{className:`oc-mobile-collapsing-header-trailing flex min-h-10 shrink-0 items-center gap-3.5`,children:n}):null]})}),(0,Z.jsx)(`div`,{className:`oc-mobile-collapsing-header-spacer`,"aria-hidden":`true`})]})}function va(e){let t=(0,X.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({asChild:i,className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i!==void 0&&i?Ne:`div`,o;t[4]===n?o=t[5]:(o=q(`oc-mobile-floating-surface`,n),t[4]=n,t[5]=o);let s;return t[6]!==a||t[7]!==r||t[8]!==o?(s=(0,Z.jsx)(a,{className:o,...r}),t[6]=a,t[7]=r,t[8]=o,t[9]=s):s=t[9],s}function ya(e){let t=(0,X.c)(20),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({as:o,children:n,className:r,variant:s,surfaceProps:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=o===void 0?`div`:o,l=s===void 0?`actions`:s,u;t[7]===r?u=t[8]:(u=q(`oc-mobile-floating-bottom-bar-frame`,r),t[7]=r,t[8]=u);let d=l===`navigation`?`oc-mobile-floating-bottom-bar-navigation`:`oc-mobile-floating-bottom-bar-actions`,f;t[9]===d?f=t[10]:(f=q(`oc-mobile-floating-bottom-bar`,d),t[9]=d,t[10]=f);let p;t[11]!==n||t[12]!==a||t[13]!==f?(p=(0,Z.jsx)(va,{...a,className:f,children:n}),t[11]=n,t[12]=a,t[13]=f,t[14]=p):p=t[14];let m;return t[15]!==c||t[16]!==i||t[17]!==u||t[18]!==p?(m=(0,Z.jsx)(c,{className:u,...i,children:p}),t[15]=c,t[16]=i,t[17]=u,t[18]=p,t[19]=m):m=t[19],m}function ba(e){let t=(0,X.c)(17),{title:n,children:r,surface:i,scrollsWithPage:a,showHeader:o,trailing:s,className:c,surfaceClassName:l,surfaceAriaLabel:u}=e,d=i===void 0||i,f=a!==void 0&&a,p=o===void 0||o,m=f&&`oc-mobile-tab-page-flow`,h=!p&&`gap-0`,g;t[0]!==c||t[1]!==m||t[2]!==h?(g=q(`oc-mobile-tab-page`,m,h,c),t[0]=c,t[1]=m,t[2]=h,t[3]=g):g=t[3];let _;t[4]!==p||t[5]!==n||t[6]!==s?(_=p?(0,Z.jsx)(_a,{title:n,trailing:s}):null,t[4]=p,t[5]=n,t[6]=s,t[7]=_):_=t[7];let v;t[8]!==r||t[9]!==d||t[10]!==u||t[11]!==l?(v=d?(0,Z.jsx)(va,{className:q(`oc-mobile-tab-page-surface`,l),"aria-label":u,children:r}):(0,Z.jsx)(`div`,{className:q(`oc-mobile-tab-page-content`,l),"aria-label":u,children:r}),t[8]=r,t[9]=d,t[10]=u,t[11]=l,t[12]=v):v=t[12];let y;return t[13]!==g||t[14]!==_||t[15]!==v?(y=(0,Z.jsxs)(`div`,{className:g,children:[_,v]}),t[13]=g,t[14]=_,t[15]=v,t[16]=y):y=t[16],y}function xa(e){let t=(0,X.c)(12),{label:n,children:r,className:i,cardClassName:a,ariaLabel:o}=e,s;t[0]!==a||t[1]!==i?(s=q(`oc-mobile-labeled-surface-group`,a,i),t[0]=a,t[1]=i,t[2]=s):s=t[2];let c;t[3]===n?c=t[4]:(c=(0,Z.jsx)(`div`,{className:`oc-mobile-labeled-surface-group-label`,children:n}),t[3]=n,t[4]=c);let l;t[5]===r?l=t[6]:(l=r?(0,Z.jsx)(`div`,{className:`oc-mobile-labeled-surface-group-content`,children:r}):null,t[5]=r,t[6]=l);let u;return t[7]!==o||t[8]!==s||t[9]!==c||t[10]!==l?(u=(0,Z.jsxs)(`section`,{className:s,"aria-label":o,children:[c,l]}),t[7]=o,t[8]=s,t[9]=c,t[10]=l,t[11]=u):u=t[11],u}export{Gr as A,qn as B,Di as C,ii as D,ai as E,cr as F,cn as G,_n as H,sr as I,rn as J,ln as K,lr as L,vr as M,yr as N,ri as O,hr as P,ur as R,ki as S,di as T,on as U,xn as V,sn as W,Xt as X,an as Y,Yt as Z,Bi as _,_a as a,Ci as b,ma as c,sa as d,ia as f,Ri as g,Wi as h,ba as i,gr as j,Kr as k,fa as l,Gi as m,va as n,ua as o,qi as p,Zt as q,xa as r,da as s,ya as t,ha as u,zi as v,Si as w,Oi as x,Ei as y,ar as z};
@@ -1,7 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{kn as t,xn as n}from"./persistence-D1lIuyqO.js";import{A as r,C as i,F as a,G as o,J as s,L as c,M as l,Mt as u,N as d,O as f,Q as p,R as m,S as h,T as ee,X as te,Y as ne,Z as re,_ as ie,_t as ae,b as oe,bt as se,c as ce,ct as le,d as ue,ft as de,h as fe,ht as pe,it as me,lt as he,m as ge,mt as _e,nt as ve,o as ye,q as be,rt as xe,tt as Se,u as Ce,v as we,vt as Te,w as Ee,x as De,z as Oe}from"./platform-G8Cxe5wN.js";import{Fa as ke,Hi as g,Xi as _,l as v,s as Ae}from"./useMobileNavigationStore-CtwYvj4I.js";var je=e({applyGitStash:()=>W,checkIsGitRepository:()=>x,checkoutCommit:()=>Ke,cherryPick:()=>qe,countGitStashFiles:()=>H,createBranch:()=>q,createGitIdentity:()=>X,createGitWorktree:()=>R,deleteGitIdentity:()=>He,deleteGitWorktree:()=>z,deleteRemoteBranch:()=>A,discoverGitCredentials:()=>Q,discoverGitRepositories:()=>S,dropGitStash:()=>K,generateCommitMessage:()=>M,getCommitFileDiff:()=>J,getConflictDetails:()=>$,getGitBranches:()=>k,getGitIdentities:()=>Y,getGitStatus:()=>C,getGitWorktreeBootstrapStatus:()=>I,getGlobalGitIdentity:()=>Ue,git:()=>B,listGitStashes:()=>V,listGitWorktrees:()=>P,merge:()=>Ge,popGitStash:()=>G,previewGitWorktree:()=>L,rebase:()=>We,resetToCommit:()=>Ye,resolveGitPrimaryRoot:()=>w,resolveGitTopLevel:()=>Pe,revertCommit:()=>Je,stageGitFile:()=>T,stageGitFiles:()=>E,stashGitChanges:()=>U,unstageGitFile:()=>D,unstageGitFiles:()=>O,updateGitIdentity:()=>Z,validateGitWorktree:()=>F}),y=()=>n()?.git??null,Me=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},b=e=>{let t=e.trim(),n=(t.match(/```(?:json)?\s*([\s\S]*?)```/i)?.[1]??t).trim(),r=[n.indexOf(`{`)].filter(e=>e>=0);for(let e of r)for(let t=n.length;t>e;--t)if(n[t-1]===`}`)try{let r=JSON.parse(n.slice(e,t));if(r&&typeof r==`object`&&!Array.isArray(r))return r}catch{}return null},Ne=e=>{let t=e?.data;return(Array.isArray(t?.parts)?t.parts:[]).map(e=>{let t=e;return t.type===`text`?typeof t.text==`string`?t.text:typeof t.content==`string`?t.content:typeof t.value==`string`?t.value:``:``}).filter(e=>e.trim().length>0).join(`
2
- `).trim()};async function x(e){let t=y();return t?t.checkIsGitRepository(e):ce(e)}async function S(e){return Ee(e)}async function C(e,t){let n=y();return n?n.getGitStatus(e,t):c(e,t)}async function w(e){return(await ve(e)).root}async function Pe(e){return(await xe(e)).root}async function T(e,t){let n=y();return n?.stageGitFile?n.stageGitFile(e,t):le(e,t)}async function E(e,t){let n=y();return n?.stageGitFiles?n.stageGitFiles(e,t):he(e,t)}async function D(e,t){let n=y();return n?.unstageGitFile?n.unstageGitFile(e,t):_e(e,t)}async function O(e,t){let n=y();return n?.unstageGitFiles?n.unstageGitFiles(e,t):pe(e,t)}async function k(e,t){let n=y();if(t?.signal?.throwIfAborted(),n){let r=await n.getGitBranches(e,t);return t?.signal?.throwIfAborted(),r}return l(e,t)}async function A(e,t){let n=y();return n?n.deleteRemoteBranch(e,t):h(e,t)}var Fe=30,Ie=12e4,Le=async(e,t)=>{let n=t.slice(0,Fe),r=await Promise.all(n.map(async t=>{try{let[n,r]=await Promise.all([d(e,{path:t,staged:!0}).catch(()=>null),d(e,{path:t,staged:!1}).catch(()=>null)]);return[n?.diff,r?.diff].filter(e=>typeof e==`string`&&e.trim().length>0).join(`
3
- `)||`--- ${t} (no textual diff available)`}catch{return`--- ${t} (diff unavailable)`}})),i=``;for(let e of r){if(i.length+e.length>Ie){i+=`
4
- [remaining diffs truncated]`;break}i+=(i?`
5
-
6
- `:``)+e}return t.length>n.length&&(i+=`\n[${t.length-n.length} more selected files omitted]`),i},j=e=>{let t=typeof e?.subject==`string`?e.subject.trim():``,n=Array.isArray(e?.highlights)?e.highlights.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean).slice(0,3):[];if(!t)throw Error(`Structured output missing subject`);return{subject:t,highlights:n}};async function Re(e,t,n){return{message:j(await Ve({directory:e,visiblePrompt:t,hiddenPrompt:n,generationSession:await Be(),kind:`commit`}))}}async function M(e,n,r){let i=Date.now();n.length;let a=await g(`git.commit.generate.visible`),o=await g(`git.commit.generate.instructions`,{selected_files:n.map(e=>`- ${e}`).join(`
7
- `)});try{let r=await Le(e,n),{currentProviderId:s,currentModelId:c}=_.getState(),l=await t(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({purpose:`commit`,system:a,prompt:`${o}\n\nDiffs of the selected files:\n${r}`,directory:e,...s?{preferredProviderID:s}:{},...c?{preferredModelID:c}:{}})});if(l.status===404){let t=await Re(e,a,o);return Date.now()-i,t.message.subject.length,t.message.highlights.length,t}let u=await l.json().catch(()=>null);if(!l.ok||typeof u?.text!=`string`){let e=typeof u?.error==`string`?u.error:`HTTP ${l.status}`;throw Error(e)}let d={message:j(b(u.text))};return Date.now()-i,d.message.subject.length,d.message.highlights.length,d}catch(e){throw console.error(`[git-generation][browser] failed`,{transport:`small-model`,kind:`commit`,elapsedMs:Date.now()-i,message:e instanceof Error?e.message:String(e),error:e}),e}}var ze=`No default provider or model configured. Please select a provider and model in settings first.`;async function Be(){let e=N();if(e)return e;if(!v.getState().newSessionDraft?.open)throw Error(`Select existing session for generation`);let t=_.getState();if(!t.currentProviderId||!t.currentModelId)throw Error(ze);let n=await Ae({providerID:t.currentProviderId,modelID:t.currentModelId,agent:t.currentAgentName||void 0,variant:t.currentVariant||void 0});if(!n){let e=N();if(e)return e;throw Error(`Failed to create session for generation`)}return{sessionId:n.sessionId,providerID:t.currentProviderId,modelID:t.currentModelId,agent:n.agent,variant:t.currentVariant||void 0}}var N=()=>{let e=v.getState().currentSessionId;if(!e)return null;let t=ke.getState(),n=_.getState(),r=v.getState().getLastUserChoice(e),i=t.getSessionAgentSelection(e)||r?.agent||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=o||a||s||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=s&&s.providerId===c.providerId&&s.modelId===c.modelId?r?.variant:void 0,d=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0,f=l||u||d||void 0;return{sessionId:e,providerID:c.providerId,modelID:c.modelId,agent:i,variant:f}},Ve=async({directory:e,visiblePrompt:t,hiddenPrompt:n,generationSession:r,kind:i})=>{let a=Date.now();r.sessionId,r.providerID,r.modelID,r.agent,r.variant;let o=typeof e==`string`?e.trim():``,s=typeof t==`string`?t.trim():``,c=typeof n==`string`?n.trim():``,l=[];if(s&&l.push({type:`text`,text:c?`${s}\n\n`:s,synthetic:!1}),c&&l.push({type:`text`,text:c,synthetic:!0}),l.length===0)throw Error(`Generation prompts are empty`);Me(r.sessionId);let d=await u.withDirectory(e,async()=>u.getApiClient().session.prompt({sessionID:r.sessionId,...o.length>0?{directory:o}:{},model:{providerID:r.providerID,modelID:r.modelID},...r.agent?{agent:r.agent}:{},...r.variant?{variant:r.variant}:{},parts:l})),f=d?.error;if(!d?.data)throw Error(f?.message||`Failed to generate ${i} output`);let p=d.data.info,m=Ne(d),h=b(m);if(!h)throw console.error(`[git-generation][browser] invalid JSON output`,{kind:i,sessionId:r.sessionId,elapsedMs:Date.now()-a,finish:p?.finish,assistantText:m,messageInfo:d.data.info,messageParts:d.data.parts}),Error(`No JSON output returned by session`);return h};async function P(e){let t=y();if(!t)return s(e);let n=t.worktree?.list??t.listGitWorktrees;if(o(n))return s(e);let r=t.worktree?.list?t.worktree.list.bind(t.worktree):t.listGitWorktrees.bind(t);return se(()=>r(e))}async function F(e,t){let n=y();return n?.worktree?.validate?n.worktree.validate(e,t):n?.validateGitWorktree?n.validateGitWorktree(e,t):Te(e,t)}async function I(e){let t=y();return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):m(e)}async function L(e,t){let n=y();return n?.worktree?.preview?n.worktree.preview(e,t):n?.previewGitWorktree?n.previewGitWorktree(e,t):re(e,t)}async function R(e,t){let n=y();return n?.worktree?.create?n.worktree.create(e,t):n?.createGitWorktree?n.createGitWorktree(e,t):we(e,t)}async function z(e,t){let n=y();return n?.worktree?.remove?n.worktree.remove(e,t):n?.deleteGitWorktree?n.deleteGitWorktree(e,t):De(e,t)}var B={worktree:{list:P,validate:F,create:R,remove:z}};async function V(e){let t=y();return t?t.listGitStashes(e):be(e)}async function H(e,t){let n=y();return n?n.countGitStashFiles(e,t):ge(e,t)}async function U(e,t={}){let n=y();return n?n.stashGitChanges(e,t):de(e,t)}async function W(e,t){let n=y();return n?n.applyGitStash(e,t):ye(e,t)}async function G(e,t){let n=y();return n?n.popGitStash(e,t):te(e,t)}async function K(e,t){let n=y();return n?n.dropGitStash(e,t):ee(e,t)}async function q(e,t,n){let r=y();return r?r.createBranch(e,t,n):fe(e,t,n)}async function J(e,t,n,r){let i=y();return i?.getCommitFileDiff?i.getCommitFileDiff(e,t,n,r):f(e,t,n,r)}async function Y(){let e=y();return e?e.getGitIdentities():a()}async function X(e){let t=y();return t?t.createGitIdentity(e):ie(e)}async function Z(e,t){let n=y();return n?n.updateGitIdentity(e,t):ae(e,t)}async function He(e){let t=y();return t?t.deleteGitIdentity(e):oe(e)}async function Q(){let e=y();return e?.discoverGitCredentials?e.discoverGitCredentials():i()}async function Ue(){let e=y();return e?.getGlobalGitIdentity?e.getGlobalGitIdentity():Oe()}async function We(e,t){let n=y();return n?n.rebase(e,t):p(e,t)}async function Ge(e,t){let n=y();return n?n.merge(e,t):ne(e,t)}async function Ke(e,t){let n=y();return n?n.checkoutCommit(e,t):Ce(e,t)}async function qe(e,t){let n=y();return n?n.cherryPick(e,t):ue(e,t)}async function Je(e,t){let n=y();return n?n.revertCommit(e,t):me(e,t)}async function Ye(e,t,n,r){let i=y();return i?i.resetToCommit(e,t,n,r):Se(e,t,n,r)}async function $(e){let t=y();return t?.getConflictDetails?t.getConflictDetails(e):r(e)}export{Pe as A,V as C,We as D,L as E,D as F,O as I,Z as L,T as M,E as N,Ye as O,U as P,je as S,G as T,Y as _,H as a,Ue as b,He as c,S as d,K as f,k as g,$ as h,qe as i,Je as j,w as k,A as l,J as m,x as n,q as o,M as p,Ke as r,X as s,W as t,Q as u,C as v,Ge as w,B as x,I as y};