@openchambery/web 1.19.12 → 1.19.13-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/assets/{AgentAvatar-CX0a1rKE.js → AgentAvatar-mbvX7YlW.js} +1 -1
  2. package/dist/assets/AssistantView-D5c557Oe.js +2 -0
  3. package/dist/assets/DiagramView-CjNUrHsU.js +1 -0
  4. package/dist/assets/FadeInOnReveal-moBbL8Ll.js +1 -0
  5. package/dist/assets/{Icon-BYM02QyU.js → Icon-CkzzhaLr.js} +1 -1
  6. package/dist/assets/MarkdownRenderer-BHfbAwVO.js +2 -0
  7. package/dist/assets/MarkdownRendererImpl-CkBoUibc.js +7 -0
  8. package/dist/assets/{MarkstreamRendererImpl-BFdJzxia.js → MarkstreamRendererImpl-BrXUOI9g.js} +1 -1
  9. package/dist/assets/MobileDetailNavigation-aY9-HwBN.js +1 -0
  10. package/dist/assets/MobileShareBridge-CRt_8DmM.js +4 -0
  11. package/dist/assets/MobileSurface-CIhtF-CU.js +2 -0
  12. package/dist/assets/{MultiRunWindow-C3p3lj3U.js → MultiRunWindow-DDq6C8t7.js} +1 -1
  13. package/dist/assets/OnboardingScreen-j0iCyH7f.js +1 -0
  14. package/dist/assets/{OverlayScrollbar-KUpvYHdv.js → OverlayScrollbar-CDC5B3RH.js} +1 -1
  15. package/dist/assets/SettingsView-DFWWMvAj.js +25 -0
  16. package/dist/assets/{SettingsWindow-8IDuPZA5.js → SettingsWindow-CnYfBplB.js} +1 -1
  17. package/dist/assets/TerminalView-D5CQFVVm.js +8 -0
  18. package/dist/assets/ToolOutputDialog-VMI7TQFT.js +10 -0
  19. package/dist/assets/{appThemeRegistry-B87OLIgc.js → appThemeRegistry-UIrP0-5h.js} +1 -1
  20. package/dist/assets/assistant-attachment-cache-C0aRnFkj.js +1 -0
  21. package/dist/assets/{button-C0cth9tl.js → button-xx1UOBA5.js} +1 -1
  22. package/dist/assets/{clipboard-DJ4nQEuY.js → clipboard-CUasgPiF.js} +1 -1
  23. package/dist/assets/{collapsible-DFT9cE80.js → collapsible-CACHBRYZ.js} +1 -1
  24. package/dist/assets/{context-menu-CAp74NfV.js → context-menu-CYbm4wBZ.js} +1 -1
  25. package/dist/assets/desktopHosts-DILvrAok.js +1 -0
  26. package/dist/assets/desktopRelayRestore-t8asCr3m.js +1 -0
  27. package/dist/assets/{diagram-BryzMuta.js → diagram-u0BC9uuY.js} +1 -1
  28. package/dist/assets/{dialog-CgbV5ljg.js → dialog-BwQ3rY_x.js} +1 -1
  29. package/dist/assets/dualLimitLru-D8Sphgua.js +1 -0
  30. package/dist/assets/{es-BHqnSjoZ.js → es-CRjOwvYM.js} +1 -1
  31. package/dist/assets/fileQueries-Bgly-E8f.js +1 -0
  32. package/dist/assets/{fr-BfrlJY9i.js → fr-D9taEN9L.js} +1 -1
  33. package/dist/assets/{gitApi-tTtHQVA3.js → gitApi-Bu4W3bgD.js} +1 -1
  34. package/dist/assets/imageSource-BlAJJUEI.js +1 -0
  35. package/dist/assets/{input-DFLpqjGR.js → input-CI730njs.js} +1 -1
  36. package/dist/assets/insertionBoundaries-B1AqxsBD.js +4 -0
  37. package/dist/assets/{ja-DP-7qt-x.js → ja-CYQ5aoWp.js} +1 -1
  38. package/dist/assets/{ko-E2B5vGQP.js → ko-BwASV0Q0.js} +1 -1
  39. package/dist/assets/main-CqcB6tKc.js +169 -0
  40. package/dist/assets/main-DG-k0j8A.js +2 -0
  41. package/dist/assets/markdown-worker-CptoICmq.js +2 -0
  42. package/dist/assets/markdownHeightCache-DEjGKLv8.js +3 -0
  43. package/dist/assets/markdownTheme-DOfGg-A7.js +1 -0
  44. package/dist/assets/miniChat-BQtYQrsh.js +2 -0
  45. package/dist/assets/mobile-8iyqtXkr.js +2 -0
  46. package/dist/assets/{multirun-B0V3hdnD.js → multirun-CG_FCb_Z.js} +1 -1
  47. package/dist/assets/persistence-YbQKzHUQ.js +3 -0
  48. package/dist/assets/{pl-r8X5gRM5.js → pl-DUI1vPil.js} +1 -1
  49. package/dist/assets/platform-DzsGqlGW.js +2 -0
  50. package/dist/assets/projectMeta-DMpMDWE1.js +3 -0
  51. package/dist/assets/{pt-BR-DcpdXCf5.js → pt-BR-CZQFJllP.js} +1 -1
  52. package/dist/assets/relay-image-stream-DM7atqJs.js +2 -0
  53. package/dist/assets/renderElectronMiniChatApp-DBzRdJl8.js +2 -0
  54. package/dist/assets/renderMobileApp-CIseqCyn.js +28 -0
  55. package/dist/assets/runtime-auth-D66yq6ie.js +1 -0
  56. package/dist/assets/runtime-fetch-zIalUnbb.js +1 -0
  57. package/dist/assets/runtime-switch-LvWDU-SL.js +1 -0
  58. package/dist/assets/runtimeConfig-D8nJYB-e.js +2 -0
  59. package/dist/assets/runtimeEndpointReset-CSub_ecV.js +147 -0
  60. package/dist/assets/{sessionChangeSummary-hVby3sJk.js → sessionChangeSummary-DQDZ5HW-.js} +1 -1
  61. package/dist/assets/{sessionLookup-B6P_aCun.js → sessionLookup-BiBD-4wC.js} +1 -1
  62. package/dist/assets/sortable-tabs-strip-Dom6Sthu.js +1 -0
  63. package/dist/assets/src-AA-5nXsF.css +2 -0
  64. package/dist/assets/{store-BDFdnk6l.js → store-CSnH_QXM.js} +2 -2
  65. package/dist/assets/terminalApi-noa4Cdbh.js +1 -0
  66. package/dist/assets/{textarea-Cgo_nWUU.js → textarea-BfNtUdJE.js} +1 -1
  67. package/dist/assets/{tooltip-BifLJ8o0.js → tooltip-DPxumadF.js} +1 -1
  68. package/dist/assets/{uk-Di0vl9V-.js → uk-C1FYZlmA.js} +1 -1
  69. package/dist/assets/{url-Pk6tQ1EZ.js → url-CVhsI9kR.js} +1 -1
  70. package/dist/assets/{useAppFontEffects-Dmes1chr.js → useAppFontEffects-qHt5uaFN.js} +32 -32
  71. package/dist/assets/useAssistantUIStore-CLPCNoj_.js +1 -0
  72. package/dist/assets/useDesktopWindowControlsLayout-BipyIXiK.js +1 -0
  73. package/dist/assets/{useEffectiveDirectory-CU2ChP0J.js → useEffectiveDirectory-DSNCCbCt.js} +1 -1
  74. package/dist/assets/useFontPreferences-CB-cGo3I.js +1 -0
  75. package/dist/assets/useMobileNavigationStore-C1NJGAik.js +413 -0
  76. package/dist/assets/useSessionAutoCleanup-Dcn6Unvd.js +2 -0
  77. package/dist/assets/useUIStore-CxOoCv7B.js +1 -0
  78. package/dist/assets/useWorkerHighlightedLines-CzpT4M7V.js +7 -0
  79. package/dist/assets/{utils-BiK3tBGM.js → utils-BHTVlVov.js} +1 -1
  80. package/dist/assets/{zh-CN-coFCfeQE.js → zh-CN-C96qP1ip.js} +1 -1
  81. package/dist/assets/{zh-TW-oDRZ1-yb.js → zh-TW-BsRk1Rbb.js} +1 -1
  82. package/dist/index.html +12 -9
  83. package/dist/mini-chat.html +12 -9
  84. package/dist/mobile.html +12 -9
  85. package/package.json +1 -1
  86. package/server/index.js +19 -0
  87. package/server/lib/assistant-delivery-parts.js +19 -1
  88. package/server/lib/assistants/DOCUMENTATION.md +56 -11
  89. package/server/lib/assistants/assign.js +455 -30
  90. package/server/lib/assistants/assign.test.js +351 -0
  91. package/server/lib/assistants/cards.js +16 -2
  92. package/server/lib/assistants/cards.test.js +16 -1
  93. package/server/lib/assistants/contact-active-turn.http.test.js +134 -0
  94. package/server/lib/assistants/contact-attachments.http.test.js +436 -0
  95. package/server/lib/assistants/contact-attachments.js +814 -0
  96. package/server/lib/assistants/contact-attachments.p1.test.js +307 -0
  97. package/server/lib/assistants/contact-attachments.test.js +249 -0
  98. package/server/lib/assistants/contact-store.js +552 -19
  99. package/server/lib/assistants/contact-store.test.js +415 -1
  100. package/server/lib/assistants/contact-tools.js +114 -14
  101. package/server/lib/assistants/contact-tools.test.js +135 -6
  102. package/server/lib/assistants/contracts.js +42 -2
  103. package/server/lib/assistants/harness.js +4 -1
  104. package/server/lib/assistants/harness.test.js +124 -0
  105. package/server/lib/assistants/routes.js +46 -1
  106. package/server/lib/assistants/service.js +569 -84
  107. package/server/lib/assistants/service.test.js +936 -37
  108. package/server/lib/fs/prompt-attachment-store.js +663 -0
  109. package/server/lib/fs/prompt-attachment-store.test.js +263 -0
  110. package/server/lib/fs/routes.js +28 -72
  111. package/server/lib/fs/routes.test.js +15 -30
  112. package/server/lib/llm/catalog.js +91 -16
  113. package/server/lib/llm/catalog.test.js +152 -11
  114. package/server/lib/notifications/APNS.md +20 -4
  115. package/server/lib/notifications/DOCUMENTATION.md +5 -0
  116. package/server/lib/notifications/apns-runtime.js +136 -18
  117. package/server/lib/notifications/apns-runtime.test.js +128 -0
  118. package/server/lib/notifications/apns-titles.js +21 -1
  119. package/server/lib/notifications/live-activity-refresh-runtime.js +185 -0
  120. package/server/lib/notifications/live-activity-refresh-runtime.test.js +242 -0
  121. package/server/lib/notifications/runtime.js +93 -2
  122. package/server/lib/notifications/runtime.test.js +167 -4
  123. package/server/lib/opencode/core-routes.js +2 -1
  124. package/server/lib/opencode/settings-helpers.js +12 -0
  125. package/server/lib/opencode/settings-runtime.js +16 -0
  126. package/server/lib/opencode/settings-runtime.test.js +21 -0
  127. package/server/lib/scheduled-tasks/runtime.js +21 -0
  128. package/server/lib/scheduled-tasks/runtime.test.js +24 -0
  129. package/dist/assets/AssistantView-DxIghtun.js +0 -2
  130. package/dist/assets/DiagramView-BeUgp_Y0.js +0 -1
  131. package/dist/assets/FadeInOnReveal-CTlNE4Hg.js +0 -1
  132. package/dist/assets/MarkdownRenderer-C4MGa_kQ.js +0 -2
  133. package/dist/assets/MarkdownRendererImpl-DB4Q3kGa.js +0 -7
  134. package/dist/assets/MobileDetailNavigation-B_RwWOwv.js +0 -1
  135. package/dist/assets/MobileShareBridge-UiOLx0-2.js +0 -4
  136. package/dist/assets/MobileSurface-CNChj_dX.js +0 -2
  137. package/dist/assets/OnboardingScreen-DS2nugLX.js +0 -1
  138. package/dist/assets/SettingsView-BXfKsz0J.js +0 -25
  139. package/dist/assets/TerminalView-BiKCueth.js +0 -8
  140. package/dist/assets/ToolOutputDialog-BC2F_Fdl.js +0 -10
  141. package/dist/assets/desktopHosts-Dc2PS66M.js +0 -1
  142. package/dist/assets/desktopRelayRestore-T9y0orqa.js +0 -1
  143. package/dist/assets/fileQueries-BY-9OWzp.js +0 -1
  144. package/dist/assets/insertionBoundaries-CCQpZ5zn.js +0 -4
  145. package/dist/assets/main-C_PUoT3E.js +0 -169
  146. package/dist/assets/main-Dkg31fRY.js +0 -2
  147. package/dist/assets/markdown-worker-CTsrtpPh.js +0 -2
  148. package/dist/assets/markdownHeightCache-CYDlisxr.js +0 -3
  149. package/dist/assets/markdownTheme-DyJ4Gfcj.js +0 -2
  150. package/dist/assets/miniChat-C9QMj8T8.js +0 -2
  151. package/dist/assets/mobile-Z_X7CbzB.js +0 -2
  152. package/dist/assets/persistence-DdUac14I.js +0 -3
  153. package/dist/assets/platform-B4KKLnZ5.js +0 -2
  154. package/dist/assets/projectMeta-DRW9MQ4z.js +0 -3
  155. package/dist/assets/renderElectronMiniChatApp-Dn1Su1dd.js +0 -2
  156. package/dist/assets/renderMobileApp-BG1JJt1Q.js +0 -28
  157. package/dist/assets/runtimeConfig-C6matIEB.js +0 -2
  158. package/dist/assets/runtimeEndpointReset-kgwmUJDb.js +0 -147
  159. package/dist/assets/sortable-tabs-strip-C8_9kHqu.js +0 -1
  160. package/dist/assets/src-B-P5qIBc.css +0 -2
  161. package/dist/assets/terminalApi-947l7Ra3.js +0 -1
  162. package/dist/assets/useAssistantUIStore-me6s63b2.js +0 -1
  163. package/dist/assets/useDesktopWindowControlsLayout-DuZ6URPR.js +0 -1
  164. package/dist/assets/useFontPreferences-BCOBlaAd.js +0 -1
  165. package/dist/assets/useMobileNavigationStore-C8_J-qTp.js +0 -413
  166. package/dist/assets/useSessionAutoCleanup-FOQeu1_T.js +0 -1
  167. package/dist/assets/useUIStore-CuaA8-Hp.js +0 -1
  168. package/dist/assets/useWorkerHighlightedLines-GBqKnki1.js +0 -7
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/rolldown-runtime-C0FnF6B9.js"])))=>i.map(i=>d[i]);
2
+ import{c as e,i as t}from"./runtime-switch-LvWDU-SL.js";import{n}from"./runtime-fetch-zIalUnbb.js";import{o as r}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var i=`__openchamberNativeRelayAssetBridge`,a=e=>typeof e==`function`,o=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return a(t.openAsset)&&a(t.writeChunk)&&a(t.endAsset)&&a(t.abortAsset)&&a(t.releaseAsset)},s=()=>{let e=globalThis[i];return o(e)?e:null},c=e=>{if(typeof Buffer<`u`)return Buffer.from(e).toString(`base64`);let t=``,n=32768;for(let r=0;r<e.byteLength;r+=n){let i=Math.min(r+n,e.byteLength),a=``;for(let t=r;t<i;t++)a+=String.fromCharCode(e[t]);t+=a}return btoa(t)},l=e=>({openAsset:async({mimeType:t})=>{let n=await e.create({mimeType:t});if(!n?.assetId||!n?.url)throw Error(`Desktop virtualAsset.create returned an incomplete result`);return{assetId:n.assetId,url:n.url}},writeChunk:async(t,n)=>{let r=n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n:n.slice();await e.push(t,r)},endAsset:async t=>{await e.finish(t)},abortAsset:async t=>{try{await e.cancel(t)}catch{}},releaseAsset:async t=>{try{await e.cancel(t)}catch{}}}),u=e=>({openAsset:async({assetId:t,mimeType:n})=>{let r=await e.create({assetId:t,mime:n});if(!r?.url)throw Error(`Capacitor virtual asset create returned no url`);return{assetId:r.assetId||t,url:r.url}},writeChunk:async(t,n)=>{await e.append({assetId:t,chunk:c(n)})},endAsset:async t=>{await e.finish({assetId:t})},abortAsset:async t=>{try{await e.cancel({assetId:t})}catch{}},releaseAsset:async t=>{try{await e.cancel({assetId:t})}catch{}}}),d=()=>{if(typeof window>`u`)return null;let e=window.__OPENCHAMBER_DESKTOP__?.virtualAsset;return!e||!a(e.create)||!a(e.push)||!a(e.finish)||!a(e.cancel)?null:e},f=null,p=async()=>{if(typeof window>`u`)return null;let e=window.Capacitor;if(!e||typeof e.isNativePlatform!=`function`||!e.isNativePlatform())return null;let t=e.Plugins?.OpenChamberVirtualAsset;if(t&&typeof t==`object`&&a(t.create)&&a(t.append)&&a(t.finish)&&a(t.cancel))return t;try{let{registerPlugin:e}=await r(async()=>{let{registerPlugin:e}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{registerPlugin:e}},__vite__mapDeps([0,1])),t=e(`OpenChamberVirtualAsset`);if(a(t.create)&&a(t.append)&&a(t.finish)&&a(t.cancel))return t}catch{}return null},m=async()=>{let e=s();if(e)return e;let t=d();if(t)return l(t);f??=p();let n=await f;return n?u(n):null},h=3e5,g=33554432,_=524288,v=new Map,y=new Map,b=new Set,x=0,S=null,C=0,w=()=>b.size+x,T=()=>(C+=1,`ria_${(typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}${Math.random().toString(36).slice(2,12)}`).replace(/-/g,``).slice(0,24)}_${(C%1e6).toString(36)}`),E=e=>{e.ttlTimer!==null&&(clearTimeout(e.ttlTimer),e.ttlTimer=null)},D=e=>{E(e),v.delete(e.url),y.delete(e.assetId),b.delete(e.assetId)},O=async e=>{try{await e()}catch{}},k=async(e,t={})=>{if(e.released)return;if(e.released=!0,D(e),e.kind===`blob`){try{URL.revokeObjectURL(e.url)}catch{}return}let n=e.bridge;n&&(t.abort&&await O(()=>n.abortAsset(e.assetId,t.reason)),await O(()=>n.releaseAsset(e.assetId)))},A=e=>{E(e),!(e.retainCount>0)&&(e.ttlTimer=setTimeout(()=>{k(e,{abort:!0,reason:`ttl-expired`})},h))},j=e=>{if(!e)return!1;let t=v.get(e);return!!(t&&!t.released)},M=e=>{let t=v.get(e);return!t||t.released?!1:(t.retainCount+=1,E(t),!0)},N=e=>{let t=v.get(e);!t||t.released||(t.retainCount=Math.max(0,t.retainCount-1),t.retainCount===0&&A(t))},P=async e=>{for(;w()>=6;){if(e.aborted)throw e.reason instanceof Error?e.reason:Error(`aborted`);await new Promise((t,n)=>{let r=()=>{clearTimeout(i),n(e.reason instanceof Error?e.reason:Error(`aborted`))},i=setTimeout(()=>{e.removeEventListener(`abort`,r),t()},25);e.addEventListener(`abort`,r,{once:!0})})}},F=async e=>{for(;;)if(await P(e),w()<6){x+=1;return}},I=()=>{x=Math.max(0,x-1)},L=e=>{let t=e.headers.get(`content-type`)?.split(`;`)[0]?.trim().toLowerCase();return t&&t.startsWith(`image/`)?t:`image/png`},R=async(e,t,n,r)=>{if(await F(n),n.aborted)throw I(),n.reason instanceof Error?n.reason:Error(`aborted`);let i=t.body;if(!i||typeof i.getReader!=`function`)throw I(),Error(`Image response body is not readable`);let a=T(),o=L(t),s;try{s=await e.openAsset({assetId:a,mimeType:o})}catch(e){throw I(),e}if(!s?.url||typeof s.url!=`string`||!s.assetId)throw I(),await O(()=>e.abortAsset(a,`invalid-open`)),Error(`Native asset bridge returned an incomplete open result`);b.add(s.assetId),I();let c={assetId:s.assetId,url:s.url,kind:`native`,transportIdentity:r,ttlTimer:null,retainCount:0,released:!1,byteLength:0,bridge:e};return v.set(s.url,c),y.set(s.assetId,c),A(c),z(e,i,c,n,r),s.url},z=(e,n,r,i,a)=>{let o=n.getReader(),s=()=>{o.cancel().catch(()=>void 0),k(r,{abort:!0,reason:`aborted`})};return i.addEventListener(`abort`,s,{once:!0}),(async()=>{let n=[],c=0,l=e=>{if(e<=0)return new Uint8Array;if(n.length===1&&n[0].byteLength===e)return c=0,n.pop();let t=new Uint8Array(e),r=0;for(;r<e&&n.length>0;){let i=n[0],a=e-r;i.byteLength<=a?(t.set(i,r),r+=i.byteLength,n.shift()):(t.set(i.subarray(0,a),r),n[0]=i.subarray(a),r+=a)}return c-=r,t},u=()=>{n.length=0,c=0},d=()=>{if(i.aborted||r.released)throw i.reason instanceof Error?i.reason:Error(`aborted`);if(t()!==a)throw Error(`Runtime transport changed during image stream`)},f=async t=>{for(;c>0&&(t||c>=524288);){d();let t=l(Math.min(c,_));await e.writeChunk(r.assetId,t)}};try{for(;;){d();let{done:e,value:t}=await o.read();if(e)break;if(!(!t||t.byteLength===0)){if(r.byteLength+=t.byteLength,r.byteLength>33554432)throw Error(`Image exceeds maximum size of ${g} bytes`);n.push(t),c+=t.byteLength,c>=524288&&await f(!1)}}d(),await f(!0),d(),await e.endAsset(r.assetId),b.delete(r.assetId)}catch(e){u(),await k(r,{abort:!0,reason:e instanceof Error?e.message:`stream-failed`})}finally{i.removeEventListener(`abort`,s)}})().catch(()=>{})},B=async(e,n,r)=>{let i=await e.blob();if(n.aborted)throw n.reason instanceof Error?n.reason:Error(`aborted`);if(i.size>33554432)throw Error(`Image exceeds maximum size of ${g} bytes`);if(t()!==r)throw Error(`Runtime transport changed during image load`);let a=URL.createObjectURL(i),o={assetId:T(),url:a,kind:`blob`,transportIdentity:r,ttlTimer:null,retainCount:0,released:!1,byteLength:i.size,bridge:null};return v.set(a,o),y.set(o.assetId,o),A(o),a},V=async(e,n,r={})=>{if(J(),n.aborted)throw n.reason instanceof Error?n.reason:Error(`aborted`);if(!(e instanceof Blob))throw Error(`Verified display requires a Blob`);if(e.size>33554432)throw Error(`Image exceeds maximum size of ${g} bytes`);let i=t(),a=H(e,r.mimeType),o=await m();return o?W(o,e,a,n,i):U(e,n,i)},H=(e,t)=>{let n=(t||e.type||``).split(`;`)[0]?.trim().toLowerCase();return n&&n.startsWith(`image/`)?n:n||`image/png`},U=async(e,n,r)=>{if(n.aborted)throw n.reason instanceof Error?n.reason:Error(`aborted`);if(t()!==r)throw Error(`Runtime transport changed during image load`);let i=URL.createObjectURL(e),a={assetId:T(),url:i,kind:`blob`,transportIdentity:r,ttlTimer:null,retainCount:0,released:!1,byteLength:e.size,bridge:null};return v.set(i,a),y.set(a.assetId,a),A(a),i},W=async(e,n,r,i,a)=>{if(await F(i),i.aborted)throw I(),i.reason instanceof Error?i.reason:Error(`aborted`);if(t()!==a)throw I(),Error(`Runtime transport changed during image load`);let o=T(),s;try{s=await e.openAsset({assetId:o,mimeType:r})}catch(e){throw I(),e}if(!s?.url||typeof s.url!=`string`||!s.assetId)throw I(),await O(()=>e.abortAsset(o,`invalid-open`)),Error(`Native asset bridge returned an incomplete open result`);b.add(s.assetId),I();let c={assetId:s.assetId,url:s.url,kind:`native`,transportIdentity:a,ttlTimer:null,retainCount:0,released:!1,byteLength:n.size,bridge:e};v.set(s.url,c),y.set(s.assetId,c),A(c);try{if(i.aborted)throw i.reason instanceof Error?i.reason:Error(`aborted`);if(t()!==a)throw Error(`Runtime transport changed during image load`);let r=new Uint8Array(await n.arrayBuffer());if(i.aborted)throw i.reason instanceof Error?i.reason:Error(`aborted`);let o=0;for(;o<r.byteLength;){if(i.aborted||c.released)throw i.reason instanceof Error?i.reason:Error(`aborted`);if(t()!==a)throw Error(`Runtime transport changed during image load`);let n=Math.min(o+_,r.byteLength);await e.writeChunk(s.assetId,r.subarray(o,n)),o=n}return await e.endAsset(s.assetId),b.delete(s.assetId),s.url}catch(e){throw await k(c,{abort:!0,reason:e instanceof Error?e.message:`verified-blob-failed`}),e}},G=async(e,r)=>{J();let i=t(),a=await n(`/api/fs/raw`,{method:`GET`,cache:`no-store`,query:{path:e},signal:r});if(!a.ok)throw Error(`Image source request failed with status ${a.status}`);let o=await m();return o?R(o,a,r,i):B(a,r,i)},K=e=>{if(!e)return;let t=v.get(e);if(t){k(t,{abort:!0,reason:`released`});return}if(e.startsWith(`blob:`))try{URL.revokeObjectURL(e)}catch{}},q=(e=`cleared`)=>{let t=Array.from(v.values());for(let n of t)k(n,{abort:!0,reason:e});b.clear(),x=0},J=()=>{S||typeof window>`u`||(S=e(()=>{q(`transport-changed`)}))};export{M as a,K as i,j as n,G as o,N as r,V as s,g as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/gitApi-Bu4W3bgD.js","assets/rolldown-runtime-C0FnF6B9.js","assets/runtime-fetch-zIalUnbb.js","assets/runtime-auth-D66yq6ie.js","assets/runtime-switch-LvWDU-SL.js","assets/persistence-YbQKzHUQ.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/useUIStore-CxOoCv7B.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-react-DLPElpoQ.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-DzsGqlGW.js","assets/vendor-opencode-sdk-C07HQypa.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/useMobileNavigationStore-C1NJGAik.js","assets/vendor-tanstack-react-query-D7pys_c9.js","assets/vendor-sonner-DVzioF3d.js","assets/vendor-reactuses-core-DDoDDyM9.js","assets/vendor-lodash-es-DfLbG5Af.js","assets/vendor-js-cookie-hSOiFTtX.js","assets/clipboard-CUasgPiF.js","assets/store-CSnH_QXM.js","assets/useAssistantUIStore-CLPCNoj_.js","assets/vendor-fuse.js-DB5wDJbI.js"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Ft as t,Sn as n,Zt as r,n as i,qt as a,t as o}from"./persistence-YbQKzHUQ.js";import{nt as s,rt as c}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as l,Nt as u}from"./platform-DzsGqlGW.js";import{t as d}from"./useUIStore-CxOoCv7B.js";import{o as f}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as p,t as m}from"./vendor-react-DLPElpoQ.js";/* empty css */import{n as h,s as g}from"./vendor-reactuses-core-DDoDDyM9.js";import{i as _,n as v}from"./clipboard-CUasgPiF.js";import{n as y}from"./store-CSnH_QXM.js";import{Fa as b,Mn as x,Nn as ee,Nt as te,Zi as S,c as C,ho as ne,in as re,mn as ie,na as ae,y as oe}from"./useMobileNavigationStore-C1NJGAik.js";import{t as se}from"./utils-BHTVlVov.js";import{n as ce}from"./Icon-CkzzhaLr.js";import{t as le}from"./button-xx1UOBA5.js";import{At as ue,C as de,Ct as w,Dt as fe,Et as T,Ht as pe,It as me,Lt as he,Ot as E,R as ge,S as _e,St as ve,Tt as D,a as O,kt as ye,lt as be,t as xe,wt as Se}from"./useAppFontEffects-qHt5uaFN.js";import{s as Ce}from"./projectMeta-DMpMDWE1.js";import{r as we}from"./tooltip-DPxumadF.js";import{U as k,et as Te,q as Ee}from"./useSessionAutoCleanup-Dcn6Unvd.js";import{n as De}from"./useRuntimeAPIs-DSLXJybW.js";import{b as Oe,f as ke}from"./insertionBoundaries-B1AqxsBD.js";import{i as Ae,n as je,r as Me,t as Ne}from"./useDesktopWindowControlsLayout-BipyIXiK.js";var Pe=m(),A=p(),j=e(c(),1),M=s(),Fe=e=>{let t=(0,A.c)(3),{mode:n,children:r}=e,i;return t[0]!==r||t[1]!==n?(i=(0,M.jsx)(be.Provider,{value:n,children:r}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i},Ie=e=>{let t=typeof e==`string`?e.trim():``;if(!t)return``;let n=typeof window<`u`?window.__OPENCHAMBER_HOME__:``;if(n&&t===n)return`~`;if(n&&t.startsWith(`${n}/`))return`~/${t.slice(n.length+1)}`;let r=t.split(`/`).filter(Boolean);return r.length<=3?t:`.../${r.slice(-3).join(`/`)}`},N=e=>{let t=typeof e==`string`?e.trim():``;if(!t)return``;let n=t.replace(/\\/g,`/`);return n===`/`?`/`:n.replace(/\/+$/,``)},P=e=>{let t=(0,A.c)(133),{mode:n}=e,{t:i}=v(),o=C(Re),s=C(ze),c=C(Be),u=l(Ve),d=ne(He),f=ne(Ue),p=S(We),m=S(Ge),h=ie(),g=re(o??``),_=De(),y=Oe(Ke),b;t[0]===o?b=t[1]:(b=e=>o?e.worktreeMetadata.get(o)?.path??``:``,t[0]=o,t[1]=b);let te=C(b),ae;t[2]===o?ae=t[3]:(ae=e=>o?e.worktreeMetadata.get(o)?.branch?.trim()??null:null,t[2]=o,t[3]=ae);let ue=C(ae),de;t[4]===o?de=t[5]:(de=e=>o?e.getAttachment(o):void 0,t[4]=o,t[5]=de);let w=oe(de),fe=C(qe),[T,pe]=j.useState(!1),me=typeof window<`u`?window.__OPENCHAMBER_MACOS_MAJOR__??0:0,he=Number.isFinite(me)&&me>0,{usesFramelessChrome:E,side:ge}=Ne(),_e=he?me>=26?`h-12`:me<=15?`h-14`:``:``,ve;t[6]!==o||t[7]!==h?(ve=o?h.find(e=>e.id===o)??null:null,t[6]=o,t[7]=h,t[8]=ve):ve=t[8];let D=ve,O=D?.worktreeMetadata??null,ye,be;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(ye=()=>{r()&&a(`desktop_get_window_pinned`).then(e=>{typeof e?.pinned==`boolean`&&pe(e.pinned)})},be=[],t[9]=ye,t[10]=be):(ye=t[9],be=t[10]),j.useEffect(ye,be);let xe;t[11]!==s||t[12]!==n||t[13]!==D?.title||t[14]!==i?(xe=D?.title?.trim()||i(s||n===`draft`?`miniChat.header.newSession`:`miniChat.header.session`),t[11]=s,t[12]=n,t[13]=D?.title,t[14]=i,t[15]=xe):xe=t[15];let Se=xe,Ce=D?.directory??null,we;t[16]===Ce?we=t[17]:(we=N(Ce),t[16]=Ce,t[17]=we);let k=we,Te=te||O?.path||w?.cwd||w?.worktreeRoot||``,Ee;t[18]===Te?Ee=t[19]:(Ee=N(Te),t[18]=Te,t[19]=Ee);let Pe=Ee,Fe;t[20]===u?Fe=t[21]:(Fe=N(u),t[20]=u,t[21]=Fe);let P=Pe||k||fe||Fe,Le;t[22]===P?Le=t[23]:(Le=Ie(P),t[22]=P,t[23]=Le);let tt=Le,nt;t[24]!==k||t[25]!==Pe?(nt=e=>{let t=N(Pe||k||``);if(!t)return null;for(let n of e.availableWorktreesByProject.values()){let e=n.find(e=>N(e.path)===t)?.branch?.trim();if(e)return e}return null},t[24]=k,t[25]=Pe,t[26]=nt):nt=t[26];let rt=C(nt),it,at;t[27]!==y||t[28]!==P||t[29]!==_.git?(it=()=>{P&&y(P,_.git).catch(Je)},at=[y,P,_.git],t[27]=y,t[28]=P,t[29]=_.git,t[30]=it,t[31]=at):(it=t[30],at=t[31]),j.useEffect(it,at),O?.projectDirectory,w?.worktreeRoot;let ot;bb0:{let e=O?.projectDirectory??w?.worktreeRoot??null,n;t[32]===e?n=t[33]:(n=N(e),t[32]=e,t[33]=n);let r=n||P;if(!r){ot=null;break bb0}let i;t[34]!==r||t[35]!==d?(i=d.map(Ye).filter(e=>e.normalizedPath&&(e.normalizedPath===r||r.startsWith(`${e.normalizedPath}/`))).sort(Xe)[0]??null,t[34]=r,t[35]=d,t[36]=i):i=t[36],ot=i}let st=ot,ct;bb1:{let e=st??f;if(!e){ct=tt||`OpenChamber`;break bb1}let n;t[37]===e.path?n=t[38]:(n=e.path.split(/[\\/]/).filter(Boolean).at(-1)??e.path,t[37]=e.path,t[38]=n),ct=n}let lt=ct,ut=ke(P||null),dt;t[39]!==rt||t[40]!==ut||t[41]!==O?.branch||t[42]!==w?.branch||t[43]!==ue?(dt=ut||ue||O?.branch?.trim()||w?.branch?.trim()||rt,t[39]=rt,t[40]=ut,t[41]=O?.branch,t[42]=w?.branch,t[43]=ue,t[44]=dt):dt=t[44];let ft=dt,pt=ft&&ft!==`HEAD`?ft:null,mt;t[45]===p?mt=t[46]:(mt=p(),t[45]=p,t[46]=mt);let ht=mt,gt;bb2:{for(let e=g.length-1;e>=0;--e){let t=g[e];if(t.role!==`assistant`||typeof t.providerID!=`string`||typeof t.modelID!=`string`)continue;let n=m.find(e=>e.id===t.providerID)?.models.find(e=>e.id===t.modelID);if(n){gt=n;break bb2}}gt=void 0}let _t=gt,vt=ht?.limit?ht:_t,F=vt&&typeof vt.limit==`object`&&vt.limit!==null?vt.limit:null,I=F&&typeof F.context==`number`?F.context:0,yt=F&&typeof F.output==`number`?F.output:0,L;if(t[47]!==I||t[48]!==o||t[49]!==g||t[50]!==yt){bb3:{if(!o||g.length===0){L=null;break bb3}let e=ee(g,Ze);if(!e||`compacted`in e){L=null;break bb3}let n=e.tokens,r=e.totalTokens,i=I>0?I:2e5,a;t[52]!==I||t[53]!==r?(a=I>0?Math.round(r/I*100):0,t[52]=I,t[53]=r,t[54]=a):a=t[54];let s=a,c=yt>0?Math.round(x(n.output)/yt*100):void 0,l=I||0,u=yt||void 0,d;t[55]!==e||t[56]!==c||t[57]!==s||t[58]!==l||t[59]!==u||t[60]!==i||t[61]!==r?(d={totalTokens:r,percentage:s,contextLimit:l,outputLimit:u,normalizedOutput:c,thresholdLimit:i,lastMessageId:e.messageId},t[55]=e,t[56]=c,t[57]=s,t[58]=l,t[59]=u,t[60]=i,t[61]=r,t[62]=d):d=t[62],L=d}t[47]=I,t[48]=o,t[49]=g,t[50]=yt,t[51]=L}else L=t[51];let R=L,[z,bt]=j.useState(null),xt;t[63]===Symbol.for(`react.memo_cache_sentinel`)?(xt={WebkitAppRegion:`drag`},t[63]=xt):xt=t[63];let St=xt,Ct;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Ct={WebkitAppRegion:`no-drag`},t[64]=Ct):Ct=t[64];let wt=Ct,Tt,Et;t[65]!==R||t[66]!==o?(Tt=()=>{if(!o){bt(Qe);return}if(R&&R.totalTokens>0){bt(e=>e&&e.totalTokens===R.totalTokens&&e.percentage===R.percentage&&e.contextLimit===R.contextLimit&&(e.outputLimit??0)===(R.outputLimit??0)&&(e.normalizedOutput??0)===(R.normalizedOutput??0)&&e.thresholdLimit===R.thresholdLimit&&e.lastMessageId===R.lastMessageId?e:R);return}bt($e)},Et=[R,o],t[65]=R,t[66]=o,t[67]=Tt,t[68]=Et):(Tt=t[67],Et=t[68]),j.useEffect(Tt,Et);let Dt=z&&z.contextLimit>0?Math.min(999,z.totalTokens/z.contextLimit*100):0,Ot;t[69]===T?Ot=t[70]:(Ot=()=>{let e=!T;pe(e),a(`desktop_set_window_pinned`,{pinned:e}).catch(()=>{pe(!e)})},t[69]=T,t[70]=Ot);let kt=Ot,At;t[71]!==u||t[72]!==o||t[73]!==c||t[74]!==P||t[75]!==D?(At=()=>{let e=o?{sessionId:o,directory:D?.directory??u??``}:{mode:`draft`,directory:P||u||``,projectId:c};a(`desktop_focus_main_window`,e).then(et)},t[71]=u,t[72]=o,t[73]=c,t[74]=P,t[75]=D,t[76]=At):At=t[76];let jt=At,Mt=E?`h-12`:_e||`min-h-14`,B;t[77]===Mt?B=t[78]:(B=se(`flex items-center gap-3 bg-background pr-3`,he?`pl-[5.5rem]`:`pl-3`,Mt),t[77]=Mt,t[78]=B);let V;t[79]!==E||t[80]!==ge?(V=E&&ge===`left`?(0,M.jsx)(Me,{visible:!0,position:`left`}):null,t[79]=E,t[80]=ge,t[81]=V):V=t[81];let H;t[82]===i?H=t[83]:(H=i(`sessions.switcher.openAria`),t[82]=i,t[83]=H);let U;t[84]===Se?U=t[85]:(U=(0,M.jsx)(`span`,{className:`truncate typography-ui-label text-[14px] font-normal leading-tight text-foreground max-w-full`,children:Se}),t[84]=Se,t[85]=U);let W;t[86]===lt?W=t[87]:(W=(0,M.jsx)(`span`,{className:`truncate`,children:lt}),t[86]=lt,t[87]=W);let G;t[88]===pt?G=t[89]:(G=pt?(0,M.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-0.5`,children:[(0,M.jsx)(ce,{name:`git-branch`,className:`h-3 w-3 flex-shrink-0 text-muted-foreground/70`}),(0,M.jsx)(`span`,{className:`truncate`,children:pt})]}):null,t[88]=pt,t[89]=G);let K;t[90]!==W||t[91]!==G?(K=(0,M.jsxs)(`span`,{className:`flex min-w-0 max-w-full items-center gap-1.5 truncate typography-micro text-[10.5px] font-normal leading-tight text-muted-foreground/75`,children:[W,G]}),t[90]=W,t[91]=G,t[92]=K):K=t[92];let q;t[93]!==H||t[94]!==U||t[95]!==K?(q=(0,M.jsx)(je,{children:(0,M.jsxs)(`button`,{type:`button`,"aria-label":H,style:wt,className:`flex min-w-0 max-w-full flex-col items-start rounded-md px-1 py-0.5 text-left transition-colors hover:bg-interactive-hover/60 focus-visible:outline-none focus-visible:bg-interactive-hover/60`,children:[U,K]})}),t[93]=H,t[94]=U,t[95]=K,t[96]=q):q=t[96];let Nt;t[97]===Symbol.for(`react.memo_cache_sentinel`)?(Nt=(0,M.jsx)(`div`,{className:`min-w-0 flex-1`}),t[97]=Nt):Nt=t[97];let J;t[98]!==Dt||t[99]!==z?(J=z&&z.totalTokens>0?(0,M.jsx)(Ae,{totalTokens:z.totalTokens,percentage:Dt,colorPercentage:z.percentage,contextLimit:z.contextLimit,outputLimit:z.outputLimit??0,className:`h-9 shrink-0 pl-1 pr-1 typography-ui-label`,valueClassName:`font-semibold leading-none`,hideIcon:!0,showPercentIcon:!0,percentIconClassName:`h-4.5 w-4.5`}):null,t[98]=Dt,t[99]=z,t[100]=J):J=t[100];let Y;t[101]!==T||t[102]!==i?(Y=i(T?`miniChat.actions.unpinAria`:`miniChat.actions.pinAria`),t[101]=T,t[102]=i,t[103]=Y):Y=t[103];let X;t[104]!==T||t[105]!==i?(X=i(T?`miniChat.actions.unpin`:`miniChat.actions.pin`),t[104]=T,t[105]=i,t[106]=X):X=t[106];let Z;t[107]===T?Z=t[108]:(Z=T?(0,M.jsx)(ce,{name:`pushpin-2-fill`,className:`h-4 w-4`}):(0,M.jsx)(ce,{name:`pushpin-2`,className:`h-4 w-4`}),t[107]=T,t[108]=Z);let Q;t[109]!==kt||t[110]!==Y||t[111]!==X||t[112]!==Z?(Q=(0,M.jsx)(le,{type:`button`,variant:`ghost`,size:`icon`,onClick:kt,"aria-label":Y,title:X,style:wt,children:Z}),t[109]=kt,t[110]=Y,t[111]=X,t[112]=Z,t[113]=Q):Q=t[113];let Pt;t[114]===i?Pt=t[115]:(Pt=i(`miniChat.actions.openMainAria`),t[114]=i,t[115]=Pt);let Ft;t[116]===i?Ft=t[117]:(Ft=i(`miniChat.actions.openMain`),t[116]=i,t[117]=Ft);let It;t[118]===Symbol.for(`react.memo_cache_sentinel`)?(It=(0,M.jsx)(ce,{name:`external-link`,className:`h-4 w-4`}),t[118]=It):It=t[118];let Lt;t[119]!==jt||t[120]!==Pt||t[121]!==Ft?(Lt=(0,M.jsx)(le,{type:`button`,variant:`ghost`,size:`icon`,onClick:jt,"aria-label":Pt,title:Ft,style:wt,children:It}),t[119]=jt,t[120]=Pt,t[121]=Ft,t[122]=Lt):Lt=t[122];let Rt=E&&ge===`right`,$;t[123]===Rt?$=t[124]:($=(0,M.jsx)(Me,{visible:Rt,position:`right`}),t[123]=Rt,t[124]=$);let zt;return t[125]!==B||t[126]!==V||t[127]!==q||t[128]!==J||t[129]!==Q||t[130]!==Lt||t[131]!==$?(zt=(0,M.jsxs)(`header`,{className:B,style:St,children:[V,q,Nt,J,Q,Lt,$]}),t[125]=B,t[126]=V,t[127]=q,t[128]=J,t[129]=Q,t[130]=Lt,t[131]=$,t[132]=zt):zt=t[132],zt},Le=e=>{let t=(0,A.c)(9),{mode:n,autoOpenDraft:r,unavailable:i}=e,a=r!==void 0&&r,o=i!==void 0&&i,{t:s}=v(),c;t[0]===n?c=t[1]:(c=(0,M.jsx)(P,{mode:n}),t[0]=n,t[1]=c);let l;t[2]!==a||t[3]!==s||t[4]!==o?(l=(0,M.jsx)(`main`,{className:`min-h-0 flex-1`,children:o?(0,M.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center typography-ui-label text-muted-foreground`,children:(0,M.jsxs)(`div`,{className:`max-w-sm rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] px-4 py-3`,children:[(0,M.jsx)(`div`,{className:`font-medium text-foreground`,children:s(`miniChat.unavailable.title`)}),(0,M.jsx)(`div`,{className:`mt-1 typography-small text-muted-foreground`,children:s(`miniChat.unavailable.description`)})]})}):(0,M.jsx)(Fe,{mode:`mini-chat`,children:(0,M.jsx)(ge,{autoOpenDraft:a})})}),t[2]=a,t[3]=s,t[4]=o,t[5]=l):l=t[5];let u;return t[6]!==c||t[7]!==l?(u=(0,M.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background text-foreground`,children:[c,l]}),t[6]=c,t[7]=l,t[8]=u):u=t[8],u};function Re(e){return e.currentSessionId}function ze(e){return!!e.newSessionDraft?.open}function Be(e){return e.newSessionDraft?.selectedProjectId??null}function Ve(e){return e.currentDirectory}function He(e){return e.projects}function Ue(e){return e.getActiveProject()}function We(e){return e.getCurrentModel}function Ge(e){return e.providers}function Ke(e){return e.ensureStatus}function qe(e){return e.newSessionDraft?.open?N(e.newSessionDraft.bootstrapPendingDirectory??e.newSessionDraft.directoryOverride??``):``}function Je(){}function Ye(e){return{...e,normalizedPath:N(e.path)}}function Xe(e,t){return t.path.length-e.path.length}function Ze(e){return ae(e)}function Qe(e){return e===null?e:null}function $e(e){return e===null?e:null}function et(e){return e?.focused===!0?a(`desktop_close_current_window`):null}var tt=()=>{document.querySelector(`textarea[data-chat-input="true"]`)?.focus()},nt=()=>{let e=d(e=>e.shortcutOverrides),n=l(e=>e.currentDirectory),r=ne(e=>e.getActiveProject()),i=C(e=>e.openNewSessionDraft);j.useEffect(()=>{let o=t=>Ee(t,e),s=e=>{if(k(e,o(`focus_input`))){e.preventDefault(),tt();return}if(t()&&k(e,o(`close_context_panel_tab`))){e.preventDefault(),a(`desktop_close_current_window`).catch(e=>{console.warn(`[mini-chat-shortcuts] failed to close current window`,e)});return}if(t()&&k(e,o(`new_mini_chat`))){e.preventDefault(),a(`desktop_open_draft_mini_chat_window`,{directory:n||r?.path||``,projectId:r?.id??null})?.catch(e=>{console.warn(`[mini-chat-shortcuts] failed to open draft mini chat window`,e)});return}if(k(e,o(`new_chat`))){e.preventDefault(),i({selectedProjectId:r?.id??null,directoryOverride:n||r?.path||null,preserveDirectoryOverride:!!(n||r?.path)}),tt();return}if(k(e,o(`open_model_selector`))){e.preventDefault();let{isModelSelectorOpen:t,setModelSelectorOpen:n}=d.getState();n(!t,{instant:!0});return}if(k(e,o(`cycle_thinking_variant`))){let t=S.getState();if(t.getCurrentModelVariants().length===0)return;e.preventDefault(),t.cycleCurrentVariant();let n=S.getState().currentVariant,r=C.getState().currentSessionId,i=S.getState().currentAgentName,a=S.getState().currentProviderId,o=S.getState().currentModelId;r&&i&&a&&o&&b.getState().saveAgentModelVariantForSession(r,i,a,o,n),i&&a&&o&&S.getState().saveAgentModelSelection(i,a,o,n);return}let s=k(e,o(`cycle_favorite_model_forward`)),c=k(e,o(`cycle_favorite_model_backward`));if(s||c){let{favoriteModels:t,addRecentModel:n}=d.getState();if(t.length===0)return;e.preventDefault();let{currentProviderId:r,currentModelId:i,providers:a,setProvider:o,setModel:c,setCurrentVariant:l}=S.getState(),u=t[(t.findIndex(e=>e.providerID===r&&e.modelID===i)+(s?1:-1)+t.length)%t.length];o(u.providerID),c(u.modelID);let f=a.find(e=>e.id===u.providerID)?.models?.find(e=>e.id===u.modelID),p=f?.variants?Object.keys(f.variants):[],m=u.variant!==void 0&&p.includes(u.variant)?u.variant:void 0;l(m),n(u.providerID,u.modelID,m)}};return window.addEventListener(`keydown`,s),()=>window.removeEventListener(`keydown`,s)},[r?.id,r?.path,n,i,e])},rt=`openchamber:mini-chat-presence`,it=()=>{let e=typeof window<`u`?new URLSearchParams(window.location.search):new URLSearchParams;return{mode:e.get(`mode`)===`session`?`session`:`draft`,sessionId:e.get(`sessionId`)?.trim()||null,directory:e.get(`directory`)?.trim()||null,projectId:e.get(`projectId`)?.trim()||null}},at=({config:e})=>{let t=ie(),n=l(e=>e.currentDirectory),r=l(e=>e.setDirectory),i=ne(e=>e.projects),a=C(e=>e.currentSessionId),o=C(e=>!!e.newSessionDraft?.open),s=C(e=>e.newSessionDraft?.open?e.newSessionDraft.bootstrapPendingDirectory??e.newSessionDraft.directoryOverride??``:``),c=C(e=>e.setCurrentSession),u=C(e=>e.openNewSessionDraft),d=S(e=>e.initializeApp),p=S(e=>e.isInitialized),m=ve();j.useEffect(()=>{d()},[d]),j.useEffect(()=>{if(p)return;let e=!0,t=0,n=window.setInterval(()=>{if(e){if(t+=1,t>10){window.clearInterval(n);return}S.getState().isInitialized||S.getState().initializeApp()}},1e3);return()=>{e=!1,window.clearInterval(n)}},[p]);let _=j.useRef(!1);j.useEffect(()=>{if(!_.current&&e.mode===`session`&&e.directory){if(n===e.directory){_.current=!0;return}r(e.directory,{showOverlay:!1}),_.current=!0}},[e.directory,e.mode,n,r]),j.useEffect(()=>{e.mode!==`draft`||!o||a||!s||n===s||r(s,{showOverlay:!1})},[e.mode,n,a,s,o,r]),D({enabled:!0,source:`electronMiniChat:recovery`});let v=j.useRef(!1);j.useEffect(()=>{if(v.current||e.mode!==`session`||!e.sessionId)return;if(a===e.sessionId){v.current=!0;return}if(a){v.current=!0;return}let n=t.find(t=>t.id===e.sessionId);if(!n){m.ensureSessionRenderable(e.sessionId);return}let r=n.directory??e.directory;c(e.sessionId,r),v.current=!0},[e,a,t,c,m]);let y=g(t),b=h(e=>{let t=e.detail,n=typeof t?.sessionId==`string`?t.sessionId.trim():``;if(!n||C.getState().currentSessionId===n)return;let r=typeof t?.directory==`string`&&t.directory.trim().length>0?t.directory.trim():y.current.find(e=>e.id===n)?.directory??null;m.ensureSessionRenderable(n),c(n,r),v.current=!0});j.useEffect(()=>(window.addEventListener(`openchamber:open-session`,b),()=>window.removeEventListener(`openchamber:open-session`,b)),[b]),j.useEffect(()=>{e.mode!==`draft`||o||a||u({selectedProjectId:e.projectId,directoryOverride:e.directory,preserveDirectoryOverride:!!e.directory})},[e,a,o,u]),j.useEffect(()=>{if(i.length===0)return;let e=!1;return(async()=>{await Promise.all(i.map(async t=>{let n=t.path.replace(/\\/g,`/`).replace(/\/+$/,``);if(n)try{if(!(Oe.getState().directories.get(n)?.isGitRepo??await f(()=>import(`./gitApi-Bu4W3bgD.js`).then(e=>e.S).then(e=>e.checkIsGitRepository(n)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])))||e)return;await Ce({id:t.id,path:n},{isCurrent:()=>!e})}catch{}}))})(),()=>{e=!0}},[i]);let x=j.useRef(!1);return j.useEffect(()=>{if(x.current||!p)return;let t=()=>{if(x.current)return;x.current=!0;let e=typeof document<`u`?document.getElementById(`initial-loading`):null;e&&(e.classList.add(`fade-out`),window.setTimeout(()=>e.remove(),300))},n=e.mode===`session`?a===e.sessionId:o,r=window.setTimeout(t,n?100:1500);return()=>window.clearTimeout(r)},[p,e.mode,e.sessionId,a,o]),null},ot=()=>{let e=(0,A.c)(4),t=C(mt),n=l(ht),r,i;return e[0]!==n||e[1]!==t?(r=()=>{if(!t||!n||typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(rt),r=r=>{e.postMessage({type:`mini-chat-session-presence`,sessionId:t,directory:n,viewed:r})};r(!0);let i=window.setInterval(()=>r(!0),5e3),a=()=>r(!1);return window.addEventListener(`beforeunload`,a),()=>{window.clearInterval(i),window.removeEventListener(`beforeunload`,a),r(!1),e.close()}},i=[n,t],e[0]=n,e[1]=t,e[2]=r,e[3]=i):(r=e[2],i=e[3]),j.useEffect(r,i),null},st=e=>{let t=(0,A.c)(6),n=ie(),r=C(gt),[i,a]=j.useState(!1),o,s;return t[0]!==e.mode||t[1]!==e.sessionId||t[2]!==r||t[3]!==n?(o=()=>{if(e.mode!==`session`||!e.sessionId||r===e.sessionId){a(!1);return}if(n.some(t=>t.id===e.sessionId)){a(!1);return}let t=window.setTimeout(()=>a(!0),5e3);return()=>window.clearTimeout(t)},s=[e.mode,e.sessionId,r,n],t[0]=e.mode,t[1]=e.sessionId,t[2]=r,t[3]=n,t[4]=o,t[5]=s):(o=t[4],s=t[5]),j.useEffect(o,s),i};function ct(e){let t=(0,A.c)(16),{apis:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=it(),t[0]=i):i=t[0];let a=i,o=l(ft),s=C(dt),c=C(ut),d,f;t[1]===o?(d=t[2],f=t[3]):(d=()=>{u.setDirectory(o||a.directory||void 0)},f=[a.directory,o],t[1]=o,t[2]=d,t[3]=f),j.useEffect(d,f);let p,m;t[4]===r?(p=t[5],m=t[6]):(p=()=>(n(r),lt),m=[r],t[4]=r,t[5]=p,t[6]=m),j.useEffect(p,m),xe(),nt();let h;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(h={enabled:!0},t[7]=h):h=t[7],de(h),_e();let g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=u.getSdkClient(),t[8]=g):g=t[8];let _=o||a.directory||``,v=!(c&&s===null),y;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,M.jsx)(we,{delayDuration:300,skipDelayDuration:150,children:(0,M.jsxs)(`div`,{className:`h-full text-foreground bg-background`,children:[(0,M.jsx)(pt,{config:a}),(0,M.jsx)(w,{})]})}),t[9]=y):y=t[9];let b;t[10]===r?b=t[11]:(b=(0,M.jsx)(Se,{apis:r,children:y}),t[10]=r,t[11]=b);let x;return t[12]!==b||t[13]!==_||t[14]!==v?(x=(0,M.jsx)(Te,{children:(0,M.jsx)(te,{sdk:g,directory:_,bootstrapDirectory:v,children:b})}),t[12]=b,t[13]=_,t[14]=v,t[15]=x):x=t[15],x}function lt(){return n(null)}function ut(e){return!!e.newSessionDraft?.open}function dt(e){return e.currentSessionId}function ft(e){return e.currentDirectory}var pt=e=>{let t=(0,A.c)(11),{config:n}=e,r=st(n),i;t[0]===n?i=t[1]:(i=(0,M.jsx)(at,{config:n}),t[0]=n,t[1]=i);let a,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,M.jsx)(ot,{}),o=(0,M.jsx)(O,{embeddedBackgroundWorkEnabled:!0}),t[2]=a,t[3]=o):(a=t[2],o=t[3]);let s=n.mode===`draft`,c;t[4]!==n.mode||t[5]!==r||t[6]!==s?(c=(0,M.jsx)(Le,{mode:n.mode,autoOpenDraft:s,unavailable:r}),t[4]=n.mode,t[5]=r,t[6]=s,t[7]=c):c=t[7];let l;return t[8]!==i||t[9]!==c?(l=(0,M.jsxs)(M.Fragment,{children:[i,a,o,c]}),t[8]=i,t[9]=c,t[10]=l):l=t[10],l};function mt(e){return e.currentSessionId}function ht(e){return e.currentDirectory}function gt(e){return e.currentSessionId}var _t=()=>{y(),o().then(()=>{Promise.all([i(),pe()]).catch(e=>{console.error(`[mini-chat-main] settings init failed:`,e)}),ye(),E(),fe()}).catch(e=>{console.error(`[mini-chat-main] appearance init failed:`,e)})};function vt(e){_t();let t=document.getElementById(`root`);if(!t)throw Error(`Root element not found`);(0,Pe.createRoot)(t).render((0,M.jsx)(j.StrictMode,{children:(0,M.jsx)(T,{children:(0,M.jsx)(_,{children:(0,M.jsx)(ue,{children:(0,M.jsx)(me,{children:(0,M.jsx)(he,{children:(0,M.jsx)(ct,{apis:e})})})})})})}))}export{vt as renderElectronMiniChatApp};