@openchambery/web 2.1.10-beta.8 → 2.1.10

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 (147) hide show
  1. package/dist/assets/{AgentAvatar-CSTBp5FT.js → AgentAvatar-VWQTTR4M.js} +1 -1
  2. package/dist/assets/AssistantView-pFHs1mFy.js +3 -0
  3. package/dist/assets/DiagramView-DvtLUBju.js +1 -0
  4. package/dist/assets/{FadeInOnReveal-C-zbv53H.js → FadeInOnReveal-fsguD-xX.js} +1 -1
  5. package/dist/assets/Icon-CEQUcqTJ.js +1 -0
  6. package/dist/assets/{ImageLoadingPlaceholder-CN33uB-A.js → ImageLoadingPlaceholder-Bel8eqgg.js} +1 -1
  7. package/dist/assets/{LoadingImage-BR82n0vB.js → LoadingImage-DjkSZxMq.js} +1 -1
  8. package/dist/assets/MarkdownRenderer-DMk_HgEW.js +2 -0
  9. package/dist/assets/MarkdownRendererImpl-BD3MLIXK.js +10 -0
  10. package/dist/assets/MarkstreamRendererImpl-Bmq_rlW8.js +3 -0
  11. package/dist/assets/MobileDetailNavigation-BEKXW98F.js +1 -0
  12. package/dist/assets/MobileShareBridge-7uwkwoDd.js +4 -0
  13. package/dist/assets/MobileTabPageHeader-Bv5dbFRY.js +2 -0
  14. package/dist/assets/{MultiRunWindow-Dl6X54iv.js → MultiRunWindow-YPpInxnV.js} +1 -1
  15. package/dist/assets/OnboardingScreen-CQuSd1SL.js +1 -0
  16. package/dist/assets/{OverlayScrollbar-BY5HaNrb.js → OverlayScrollbar-DI271QYq.js} +1 -1
  17. package/dist/assets/{SettingsView-DJZEQaSF.js → SettingsView-rMvVrvoc.js} +11 -11
  18. package/dist/assets/{SettingsWindow-TvlhBd6w.js → SettingsWindow-Bu0pJmO4.js} +1 -1
  19. package/dist/assets/TerminalView-B7wbbWmJ.js +8 -0
  20. package/dist/assets/ToolOutputDialog-C7usOU7_.css +1 -0
  21. package/dist/assets/ToolOutputDialog-kGRZ3zBv.js +10 -0
  22. package/dist/assets/{appThemeRegistry-Du5KFmTd.js → appThemeRegistry-COjSA5s9.js} +1 -1
  23. package/dist/assets/assistant-attachment-cache-BWe8KqRS.js +1 -0
  24. package/dist/assets/{button-CWSs9Baz.js → button-9V3jJ3gG.js} +1 -1
  25. package/dist/assets/{collapsible-ngtoKADo.js → collapsible-Cx3lMy_W.js} +1 -1
  26. package/dist/assets/{desktopHosts-C0e7Nes2.js → desktopHosts-C4ejHJ9p.js} +1 -1
  27. package/dist/assets/desktopRelayRestore-UTCV51RC.js +1 -0
  28. package/dist/assets/{diagram-DmlTCkmV.js → diagram-Bpt5dSrL.js} +1 -1
  29. package/dist/assets/{dialog-BMa16qrs.js → dialog-Yxau54Tq.js} +1 -1
  30. package/dist/assets/dropdown-menu.styles-CtzReuqO.js +1 -0
  31. package/dist/assets/{es-ChfgOskU.js → es-DsJ_HQyU.js} +1 -1
  32. package/dist/assets/{fileMentionTouchSelection-DZvVbBP-.js → fileMentionTouchSelection-Hibjg1ml.js} +1 -1
  33. package/dist/assets/{fr-DnKqN4E3.js → fr-Dfkjku77.js} +1 -1
  34. package/dist/assets/{gitApi-DdM2FGUu.js → gitApi-HQKLs8JU.js} +3 -3
  35. package/dist/assets/image-loading-ClZBSNMo.js +1 -0
  36. package/dist/assets/{input-CALwaZEB.js → input-BqE6rFfR.js} +1 -1
  37. package/dist/assets/insertionBoundaries-I_znkRIX.js +1 -0
  38. package/dist/assets/{ja-DH-a_ThB.js → ja-C71g0jYh.js} +1 -1
  39. package/dist/assets/{ko-BXABOKd9.js → ko-32s8rv0M.js} +1 -1
  40. package/dist/assets/main-BwNzKZuT.js +169 -0
  41. package/dist/assets/main-DfS2IaSq.js +2 -0
  42. package/dist/assets/{markdownHeightCache-DXM_5jTe.js → markdownHeightCache-lTJfaoDe.js} +1 -1
  43. package/dist/assets/mcpQueries-MXNO55dw.js +1 -0
  44. package/dist/assets/miniChat-CMt8PqCU.js +2 -0
  45. package/dist/assets/mobile-BaUwTAK3.js +2 -0
  46. package/dist/assets/{mobileBackNavigation-DYaEgNKl.js → mobileBackNavigation-DgrGA2Qw.js} +1 -1
  47. package/dist/assets/multirun-DN46tuiy.js +3 -0
  48. package/dist/assets/persistence-CAKBi4bp.js +3 -0
  49. package/dist/assets/{pl-D-KNROrB.js → pl-eAbyJFO9.js} +1 -1
  50. package/dist/assets/platform-C5jNCIbB.js +7 -0
  51. package/dist/assets/projectMeta-BV2S2dYM.js +1 -0
  52. package/dist/assets/{pt-BR-UDs5YUzv.js → pt-BR-nVxduPt0.js} +1 -1
  53. package/dist/assets/queryRuntime-DRiRiAgZ.js +1 -0
  54. package/dist/assets/renderElectronMiniChatApp-BOMvMWpo.js +2 -0
  55. package/dist/assets/renderMobileApp-BGP-Q03v.css +1 -0
  56. package/dist/assets/renderMobileApp-DX0VWU7B.js +28 -0
  57. package/dist/assets/runtime-file-download-CEzr1Pfg.js +1 -0
  58. package/dist/assets/runtime-file-resource-BUFMRmIF.js +2 -0
  59. package/dist/assets/runtimeConfig-BTc8J1kY.js +2 -0
  60. package/dist/assets/runtimeEndpointReset-BiSu_pxJ.js +149 -0
  61. package/dist/assets/{scheduledTaskNavigation-DQcLqQ52.js → scheduledTaskNavigation-j6F6n0ym.js} +1 -1
  62. package/dist/assets/sessionChangeSummary-Bz22Q8e1.js +1 -0
  63. package/dist/assets/{sessionLookup-Dayma9hk.js → sessionLookup-5rpUSv3O.js} +1 -1
  64. package/dist/assets/{sortable-tabs-strip-CscHgCaq.js → sortable-tabs-strip-DFi-Mck5.js} +1 -1
  65. package/dist/assets/speechSettingsQueries-C8efV361.js +4 -0
  66. package/dist/assets/src-DzBIReeh.css +2 -0
  67. package/dist/assets/{store-CG7Ytsg9.js → store-D4rR0svj.js} +2 -2
  68. package/dist/assets/terminalApi-B8arordk.js +1 -0
  69. package/dist/assets/{textarea-CAOC2ViF.js → textarea-DoWm-pRV.js} +1 -1
  70. package/dist/assets/{tooltip-CV6dvLBp.js → tooltip-DWlA7PRY.js} +1 -1
  71. package/dist/assets/{uk-CkliYeRs.js → uk-DOvCFanR.js} +1 -1
  72. package/dist/assets/{url-nBOUbtV_.js → url-BD7mCWgV.js} +1 -1
  73. package/dist/assets/{useAppFontEffects-Cf-BIyAh.js → useAppFontEffects-DAI7VfQG.js} +51 -51
  74. package/dist/assets/{useDesktopWindowControlsLayout-BgLopOdv.js → useDesktopWindowControlsLayout-BjvIMnxi.js} +1 -1
  75. package/dist/assets/{useEffectiveDirectory-BljJHzlP.js → useEffectiveDirectory-CuXlnig5.js} +1 -1
  76. package/dist/assets/{useFontPreferences-DqEIKMEW.js → useFontPreferences-Ctm4A_2D.js} +1 -1
  77. package/dist/assets/useMobileNavigationStore-D47T6Oi2.js +417 -0
  78. package/dist/assets/{useWorkerHighlightedLines-r5Bij0Em.js → useWorkerHighlightedLines-m2onDaI2.js} +1 -1
  79. package/dist/assets/{zh-CN-BH4APVTu.js → zh-CN-CuYFLeS4.js} +2 -2
  80. package/dist/assets/{zh-TW-BEi6Yf50.js → zh-TW-DKJIyd5A.js} +2 -2
  81. package/dist/index.html +13 -10
  82. package/dist/mini-chat.html +13 -10
  83. package/dist/mobile.html +13 -10
  84. package/package.json +1 -1
  85. package/server/lib/content-search/DOCUMENTATION.md +5 -1
  86. package/server/lib/content-search/runtime.test.js +6 -2
  87. package/server/lib/content-search/service.js +7 -2
  88. package/server/lib/content-search/service.test.js +20 -0
  89. package/server/lib/fs/DOCUMENTATION.md +4 -1
  90. package/server/lib/fs/image-fingerprint.d.ts +2 -0
  91. package/server/lib/fs/image-fingerprint.js +43 -0
  92. package/server/lib/fs/image-fingerprint.test.js +54 -0
  93. package/server/lib/fs/raw-video.test.js +34 -0
  94. package/server/lib/fs/routes.js +16 -6
  95. package/server/lib/opencode/proxy.js +2 -1
  96. package/server/lib/opencode/proxy.test.js +13 -0
  97. package/server/lib/quota/DOCUMENTATION.md +2 -0
  98. package/server/lib/quota/magpie.js +3 -0
  99. package/server/lib/quota/magpie.test.js +14 -0
  100. package/server/lib/relay/relay-server.e2e.test.ts +8 -0
  101. package/server/lib/session-turn-pages/DOCUMENTATION.md +8 -0
  102. package/server/lib/session-turn-pages/native-payload.d.ts +2 -0
  103. package/server/lib/session-turn-pages/native-payload.js +38 -0
  104. package/server/lib/session-turn-pages/native-payload.test.js +34 -0
  105. package/server/lib/session-turn-pages/routes.js +2 -1
  106. package/server/lib/session-turn-pages/routes.test.js +18 -0
  107. package/dist/assets/AssistantView-sg_gJwXp.js +0 -3
  108. package/dist/assets/DiagramView-BW-3spOQ.js +0 -1
  109. package/dist/assets/Icon-BCFeHDWx.js +0 -1
  110. package/dist/assets/MarkdownRenderer-LEXHIyuj.js +0 -2
  111. package/dist/assets/MarkdownRendererImpl-Xs4gJB0s.js +0 -10
  112. package/dist/assets/MarkstreamRendererImpl-RXTIFS1c.js +0 -3
  113. package/dist/assets/MobileDetailNavigation-Bx1Vbirv.js +0 -1
  114. package/dist/assets/MobileShareBridge-DKsBX4J6.js +0 -4
  115. package/dist/assets/MobileTabPageHeader-BIbvqv8n.js +0 -2
  116. package/dist/assets/OnboardingScreen-CqcZEptL.js +0 -1
  117. package/dist/assets/TerminalView-By3D_hLv.js +0 -8
  118. package/dist/assets/ToolOutputDialog-DesCcdFD.css +0 -1
  119. package/dist/assets/ToolOutputDialog-Dt49fiUz.js +0 -10
  120. package/dist/assets/assistant-attachment-cache-CecNXB7z.js +0 -1
  121. package/dist/assets/desktopRelayRestore-DckkHKsi.js +0 -1
  122. package/dist/assets/dropdown-menu.styles-BNwZmBRp.js +0 -1
  123. package/dist/assets/fileQueries-DVpZC5ha.js +0 -1
  124. package/dist/assets/image-loading-DImQz00b.js +0 -1
  125. package/dist/assets/insertionBoundaries-D5hR7Bnk.js +0 -1
  126. package/dist/assets/main-C4f3ftkw.js +0 -2
  127. package/dist/assets/main-M6NuXmS9.js +0 -169
  128. package/dist/assets/mcpQueries-BJQRGKlF.js +0 -1
  129. package/dist/assets/miniChat-haVuHJtE.js +0 -2
  130. package/dist/assets/mobile-AgEB6KUi.js +0 -2
  131. package/dist/assets/multirun-CLywRk_h.js +0 -3
  132. package/dist/assets/persistence-BKszKaoQ.js +0 -3
  133. package/dist/assets/platform-CgwxwfA4.js +0 -7
  134. package/dist/assets/projectMeta-CmY-ALGU.js +0 -1
  135. package/dist/assets/relay-image-stream-CqgxIcA5.js +0 -2
  136. package/dist/assets/renderElectronMiniChatApp-G3oei-lb.js +0 -2
  137. package/dist/assets/renderMobileApp-CLKJYLRa.js +0 -28
  138. package/dist/assets/runtime-fetch-WgH0pROs.js +0 -1
  139. package/dist/assets/runtimeConfig-wXAjg8Wj.js +0 -2
  140. package/dist/assets/runtimeEndpointReset-BcpbVtkr.js +0 -149
  141. package/dist/assets/sessionChangeSummary-DIIJkyzk.js +0 -1
  142. package/dist/assets/speechSettingsQueries-F67f52-o.js +0 -4
  143. package/dist/assets/src-azLZheh6.css +0 -2
  144. package/dist/assets/terminalApi-rxsMWL0o.js +0 -1
  145. package/dist/assets/useMobileNavigationStore-Bc3q1mPg.js +0 -417
  146. package/dist/assets/useRuntimeAPIs-Cx8S1HLz.js +0 -1
  147. package/dist/assets/vendor-legendapp-list-CNxU_ALy.js +0 -1
@@ -0,0 +1 @@
1
+ import{C as e,O as t,r as n,s as r}from"./runtime-auth-BpCQ-dPr.js";import{c as i,f as a,i as o,m as s,n as c,o as l}from"./runtime-switch-CMiMO5Yj.js";import{t as u}from"./vendor-tanstack-query-core-BWz0ose6.js";var d=e=>e.startsWith(`/api/`)||e===`/api`||e.startsWith(`/auth/`)||e===`/auth`||e===`/health`,f=()=>typeof window>`u`?``:window.location.origin||``,p=e=>{if(typeof window>`u`)return!1;let t=f();if(t&&e.origin===t)return!0;try{let n=new URL(window.location.href||t);return e.protocol===n.protocol&&e.host===n.host}catch{return!1}},m=e=>/^[a-z][a-z\d+.-]*:\/\//i.test(e),h=(e,t)=>{if(!t)return;let n=t instanceof URLSearchParams?Array.from(t.entries()):Object.entries(t);for(let[t,r]of n)r!=null&&e.searchParams.set(t,String(r))},g=e=>{try{let t=a().api(`/api`);if(!/^[a-z][a-z\d+.-]*:\/\//i.test(t))return!1;let n=new URL(t);return e.origin===n.origin&&d(e.pathname)}catch{return!1}},_=e=>{if(d(e))return!0;if(!/^[a-z][a-z\d+.-]*:\/\//i.test(e))return!1;try{let t=new URL(e);return p(t)&&d(t.pathname)}catch{return!1}},ee=(e,t)=>{try{let n=new URL(e);if(!p(n))return t&&g(n)?(h(n,t),n.toString()):e;let r=v(`${n.pathname}${n.search}`,t);return!m(r)&&(n.protocol===`http:`||n.protocol===`https:`)?(h(n,t),n.toString()):n.hash?`${r}${n.hash}`:r}catch{return e}},v=(e,t)=>e===`/health`?a().health(t):e.startsWith(`/auth/`)||e===`/auth`?a().auth(e,t):d(e)?a().api(e,t):/^[a-z][a-z\d+.-]*:\/\//i.test(e)?ee(e,t):e,te=e=>{let t=e instanceof Request?e.url:e.toString();if(!m(t))return d(t);try{return g(new URL(t))}catch{return!1}},y=/^\/api\/session\/(?!status$)([^/]+)(?:\/(?:message|children|todo|diff))?$/,b=/^\/api\/openchamber\/sessions\/([^/]+)\/messages\/?$/,x=null,ne=e=>{x=e},re=e=>{try{return decodeURIComponent(e)}catch{return e}},S=e=>x?e===x||re(e)===x:!1,ie=new Set([`/health`,`/api/opencode/health`,`/api/opencode/upgrade-status`,`/api/global/config`,`/api/project`,`/api/project/current`,`/api/config`,`/api/config/providers`,`/api/config/settings`,`/api/config/themes`,`/api/experimental/session`,`/api/session/status`,`/api/session-folders`,`/api/github/pr/status`,`/api/openchamber/session-index`]),C=[`/api/agent`,`/api/command`,`/api/mcp`,`/api/lsp`,`/api/vcs`,`/api/question`,`/api/permission`,`/api/git/check`,`/api/git/primary-root`,`/api/git/discover`,`/api/git/status`,`/api/git/worktrees`,`/api/quota`],w=e=>ie.has(e)||C.some(t=>e===t||e.startsWith(`${t}/`)),T=e=>{if(!m(e))return d(e);try{return g(new URL(e))}catch{return!1}},E=e=>{try{return new URL(e,`http://openchamber.local`).pathname}catch{return null}},D=[/^\/api\/session\/[^/]+\/context\/?$/,/^\/api\/session\/(?!status$)[^/]+\/message\/?$/,/^\/api\/session\/(?!status$)[^/]+\/message\/[^/]+\/?$/,/^\/api\/openchamber\/sessions\/[^/]+\/messages\/?$/,/^\/api\/openchamber\/sessions\/[^/]+\/messages\/reconcile\/?$/,/^\/api\/openchamber\/transcript-cache\/session\/?$/,/^\/api\/openchamber\/transcript-cache\/message\/?$/,/^\/api\/global\/event\/?$/,/^\/api\/event\/?$/],O=(e,t)=>s()||!t||e.toUpperCase()!==`GET`?!1:D.some(e=>e.test(t)),ae=(e,t)=>{if(!e)return t;if(e instanceof URLSearchParams){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t))n.set(e,r);return n}return{...e,...t}},k=(e,t)=>String(t.method??(e instanceof Request?e.method:`GET`)).toUpperCase(),A=e=>E(e instanceof Request?e.url:e.toString()),j=(e,t,n)=>O(t,A(e))?ae(n,{includeReasoning:`false`}):n,oe=(e,t)=>{if(e.toUpperCase()!==`GET`||!T(t))return;let n=E(t);if(!n)return;let r=n.match(y);if(r?.[1]&&S(r[1]))return`high`;let i=n.match(b);if(i?.[1]&&S(i[1]))return`high`;if(w(n))return`low`},se=e=>{for(let t=0;t<e.length;t+=1)if(e.charCodeAt(t)>255)return!1;return!0},ce=(e,t)=>!se(t),M=e=>{if(!e)return;let t=e instanceof Headers?Array.from(e.entries()):Array.isArray(e)?e:Object.entries(e);if(t.length===0)return;let n=[],r=!1,i=!1;for(let[e,a]of t)ce(e,a)?(n.push([e,encodeURIComponent(a)]),r=!0,e.toLowerCase()===`x-opencode-directory`&&(i=!0)):n.push([e,a]);return i&&n.push([`x-opencode-directory-encoding`,`uri`]),r?n:void 0},N=async(e,t,r=!0)=>{let i=new Headers(M(e)??e);return t&&new Headers(M(t)??t).forEach((e,t)=>i.set(t,e)),r?n(i):i},P=(e,n)=>{if(!n)return e;let r=new URL(e,t);return h(r,n),`${r.pathname}${r.search}`},F=e=>{if(typeof window>`u`)return``;let t=window[e];return typeof t==`string`?t.trim():``},I=(e,t)=>{if(!t)return!1;try{return e.origin===new URL(t).origin}catch{return!1}},L=e=>d(e.pathname)?p(e)||g(e)?!0:I(e,F(`__OPENCHAMBER_LOCAL_ORIGIN__`))||I(e,F(`__OPENCHAMBER_API_BASE_URL__`)):!1,R=(e,t)=>{let n=e instanceof Request?e.url:e.toString();if(!m(n))return d(n)?P(n,t):null;try{let e=new URL(n);return L(e)?(h(e,t),`${e.pathname}${e.search}`):null}catch{return null}},z=async(t,n,r)=>{let i=e();if(!i)return null;let a=k(t,n),o=R(t,j(t,a,r));if(o===null)return null;let s=await N(t instanceof Request?t.headers:void 0,n.headers,!0);return t instanceof Request?a===`GET`&&O(a,A(t))?i.fetch(o,{...n,method:`GET`,headers:s,signal:n.signal??t.signal}):i.fetch(t,{...n,headers:s}):i.fetch(o,{...n,headers:s})},B=(e,t)=>{if(typeof e==`string`)return v(e,t);if(e instanceof URL)return v(e.toString(),t);let n=v(e.url,t);return n===e.url?e:new Request(n,e)},V=/\/api\/(config|path|app\/agents|agent|project|command|opencode\/upgrade-status)(\b|\/|\?|$)/,H=new Map,U=new WeakMap,W=1,le=e=>{let t=U.get(e);if(t)return t;let n=W;return W+=1,U.set(e,n),n},ue=(e,t,n,r,i,a)=>n||!i||e!==`GET`||t.includes(`/event`)||!V.test(t)?null:`GET ${a?`relay:${le(a)}`:`url:${t}`} ${t} auth:${r}`,G=async(t,n={})=>{let{query:i,...a}=n,o=k(t,a),s=j(t,o,i),c=e(),l=c?R(t,s):null,u=r(),d,f,p;if(c&&l!==null){let e=await N(t instanceof Request?t.headers:void 0,a.headers,!0);p=o,d=t instanceof Request&&p===`GET`&&O(p,A(t))?()=>c.fetch(l,{...a,method:`GET`,headers:e,signal:a.signal??t.signal}):t instanceof Request?()=>c.fetch(t,{...a,headers:e}):()=>c.fetch(l,{...a,headers:e}),f=l}else{let e=B(t,s),n=await N(e instanceof Request?e.headers:void 0,a.headers,te(e));f=e instanceof Request?e.url:e instanceof URL?e.toString():String(e),p=String(a.method??(e instanceof Request?e.method:`GET`)).toUpperCase();let r=a.priority??oe(p,f),i=r?{...a,priority:r}:a;d=e instanceof Request?()=>fetch(new Request(e,{...i,headers:n})):()=>fetch(e,{...i,headers:n})}let m=a.signal!=null||t instanceof Request,h=ue(p,f,m,u,u===r(),c&&l!==null?c:null);if(!h)return d();let g=H.get(h);if(g)return g.then(e=>e.clone());let _=d();return H.set(h,_),_.then(()=>H.delete(h),()=>H.delete(h)),_.then(e=>e.clone())},K=!1,de=()=>{if(K||typeof window>`u`)return;K=!0;let e=window.fetch.bind(window);window.fetch=async(t,n)=>{let r=await z(t,n??{});if(r)return r;if(typeof t==`string`){if(!_(t)){try{if(g(new URL(t))){let r=await N(void 0,n?.headers);return e(t,{...n,headers:r})}}catch{}return e(t,n)}let r=await N(void 0,n?.headers);return e(v(t),{...n,headers:r})}if(t instanceof URL){let r=t.toString();if(!_(r)){if(g(t)){let r=await N(void 0,n?.headers);return e(t,{...n,headers:r})}return e(t,n)}let i=await N(void 0,n?.headers);return e(v(r),{...n,headers:i})}if(t instanceof Request){if(!_(t.url)){try{if(g(new URL(t.url))){let r=await N(t.headers,n?.headers);return e(new Request(t,{...n,headers:r}))}}catch{}return e(t,n)}let r=await N(t.headers,n?.headers),i=v(t.url),a=i===t.url?t:new Request(i,t),o=await e(new Request(a,{...n,headers:r}));if(o.status>=500){let e=i;try{e=new URL(i).pathname}catch{}console.error(`[runtime-fetch] server request failed`,{method:a.method,path:e,status:o.status,statusText:o.statusText},Error(`runtime fetch received HTTP ${o.status}`))}return o}return e(t,n)}},q=null,fe=e=>{q=e},pe=()=>q||(typeof window>`u`?null:window.__OPENCHAMBER_RUNTIME_APIS__??null),me=new u({defaultOptions:{queries:{staleTime:3e4,gcTime:3e5,retry:1,refetchOnWindowFocus:!1}}}),J={runtime:()=>[o()],scoped:(...e)=>[o(),...e],quota:e=>[o(),e],commands:{list:(e,t=o())=>[t,`commands`,e]},agents:{list:(e,t=o())=>[t,`agents`,e],raw:(e,t=o())=>[t,`agents`,`raw`,e]},configCatalog:{providers:(e,t=o())=>[t,`configCatalog`,`providers`,e]},providers:{list:(e,t=o())=>[t,`providers`,e]},skills:{list:(e,t=o())=>[t,`skills`,e]},skillsCatalog:{sources:(e,t=o())=>[t,`skillsCatalog`,`sources`,X(e)],source:(e,t,n=o())=>[n,`skillsCatalog`,`source`,X(e),t]},messageQueue:{status:(e=o())=>[e,`messageQueue`,`status`],snapshot:(e=o())=>[e,`messageQueue`,`snapshot`],scope:(e,t,n=o())=>[n,`messageQueue`,`scope`,e,t]},mcp:{configs:(e,t=o())=>[t,`mcp`,`configs`,X(e)],status:(e,t=o())=>[t,`mcp`,`status`,X(e)]},github:{auth:(e=o())=>[e,`github`,`auth`]},browserProviders:{catalog:(e=o())=>[e,`browserProviders`,`catalog`]},git:{branches:(e,t=o())=>[t,`git`,`branches`,X(e)],remotes:(e,t=o())=>[t,`git`,`remotes`,X(e)]},sessionIndex:{snapshot:(e=o())=>[e,`sessionIndex`,`snapshot`]},sessionTitleSearch:{query:(e,t=o())=>[t,`sessionTitleSearch`,e]},sessionContentSearch:{query:(e,t,n,r=o())=>[r,`sessionContentSearch`,e,t,n]},workStatusChildren:{list:(e,t,n=o())=>[n,`workStatusChildren`,X(e),t]},sessionStatus:{snapshot:(e,t=o())=>[t,`sessionStatus`,`snapshot`,X(e)]},sessionTurnChanges:{file:(e,t,n,r,i,a=o())=>[a,`sessionTurnChanges`,`file`,X(e),t,n,r,typeof i==`number`&&Number.isFinite(i)?Math.max(0,Math.trunc(i)):null]},sessionActive:{snapshot:(e,t)=>[e,`sessionActive`,`snapshot`,t]},sessionTranscript:{infinite:(e,t,n=o(),r=c())=>[n,r,`session-transcript`,X(e)??``,t],page:(e,t,n,r,i=o(),a=c())=>[i,a,`sessionMessages`,`page`,X(e)??``,t,n,r?.trim()?r.trim():`tail`],tailTask:(e,t,n,r=o(),i=c())=>[r,i,`session-transcript-task`,`tail`,X(e)??``,t,n],reconcileTask:(e,t,n,r=o(),i=c())=>[r,i,`session-transcript-task`,`reconcile`,X(e)??``,t,n],checkpoint:(e,t,n=o(),r=c())=>[n,r,`session-transcript-checkpoint`,X(e)??``,t]},plugins:{list:(e,t=o())=>[t,`plugins`,`list`,e],registry:(e,t,n=!1,r=o())=>[r,`plugins`,`registry`,e,Y(t),n],file:(e,t,n=o())=>[n,`plugins`,`file`,e,t],runtime:(e,t=o())=>[t,`plugins`,`runtime`,e]},files:{directory:(e,t,n,r=o())=>[r,`files`,`directory`,Z(e),Z(t),!!n],search:(e,t,n,r,i,a=o())=>[a,`files`,`search`,Z(e),t.trim(),n??null,!!r,!!i],content:(e,t,n,r=o())=>Q(`content`,e,t,n,r),stat:(e,t,n,r=o())=>Q(`stat`,e,t,n,r)}},Y=e=>Array.from(new Set(e.map(e=>e.trim()).filter(Boolean))).sort(),X=e=>e?.trim()||null,Z=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},Q=(e,t,n,r,i)=>[i,`files`,e,Z(t),Z(n),!!r?.allowOutsideWorkspace,r?.outsideFileGrant??null,!!r?.optional,Z(r?.directory)],$=e=>!!e&&typeof e==`object`&&typeof e.providerId==`string`&&e.providerId.length>0,he=async(e,t)=>{let n=await G(`/api/quota/${encodeURIComponent(e)}`,{signal:t}),r=await n.json().catch(()=>null);if(!n.ok){let e=r&&typeof r==`object`&&typeof r.error==`string`?r.error:`Failed to fetch quota`;throw Error(e)}if(!$(r))throw Error(`Invalid quota response`);return r},ge=e=>i(t=>{l(t)&&e.clear()});export{me as a,fe as c,ne as d,Y as i,de as l,ge as n,J as o,$ as r,pe as s,he as t,G as u};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/gitApi-HQKLs8JU.js","assets/rolldown-runtime-hePW80VL.js","assets/runtime-switch-CMiMO5Yj.js","assets/runtime-auth-BpCQ-dPr.js","assets/queryRuntime-DRiRiAgZ.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-C5jNCIbB.js","assets/persistence-CAKBi4bp.js","assets/vendor-zustand-o69pgTEK.js","assets/vendor-base-ui-CdzJ6My_.js","assets/useUIStore-CEqU9Ujv.js","assets/vendor-react-BP2cRVqX.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-opencode-client-MF2GBrFx.js","assets/runtime-file-resource-BUFMRmIF.js","assets/vendor-tanstack-react-query-CdqCAt40.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/useMobileNavigationStore-D47T6Oi2.js","assets/vendor-sonner-ZS8XIOVl.js","assets/vendor-reactuses-core-BpfIZ1tg.js","assets/vendor-lodash-es-DfLbG5Af.js","assets/vendor-js-cookie-hSOiFTtX.js","assets/button-9V3jJ3gG.js","assets/store-D4rR0svj.js","assets/vendor-class-variance-authority-BLUaYARZ.js","assets/vendor-tailwind-merge-BicNWLTg.js","assets/useAssistantUIStore-OyPm_4M_.js","assets/vendor-zod-Dzk5kdUU.js","assets/vendor-fuse.js-DB5wDJbI.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t}from"./queryRuntime-DRiRiAgZ.js";import{Rt as n,Zt as r,r as i,t as a,tn as o}from"./persistence-CAKBi4bp.js";import{it as s,rt as c}from"./vendor-base-ui-CdzJ6My_.js";import{Ct as l,Nt as u}from"./platform-C5jNCIbB.js";import{n as d}from"./useUIStore-CEqU9Ujv.js";import{n as f,t as p}from"./vendor-react-BP2cRVqX.js";import{A as m}from"./runtime-file-resource-BUFMRmIF.js";import{o as h}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";/* empty css */import{n as g,s as _}from"./vendor-reactuses-core-BpfIZ1tg.js";import{f as v,m as y,r as b,t as x}from"./button-9V3jJ3gG.js";import{n as ee}from"./store-D4rR0svj.js";import{Aa as te,Mt as ne,S as re,cn as ie,d as S,fo as ae,tn as oe,vn as se,wa as C}from"./useMobileNavigationStore-D47T6Oi2.js";import{n as ce}from"./Icon-CEQUcqTJ.js";import{At as le,C as ue,Ct as de,Dt as w,Et as fe,Mt as T,Nt as pe,Ot as me,Rt as he,S as E,St as ge,Tt as _e,a as ve,jt as D,kt as O,t as ye,ut as be,w as xe,wt as Se}from"./useAppFontEffects-DAI7VfQG.js";import{s as Ce}from"./projectMeta-BV2S2dYM.js";import{r as we}from"./tooltip-DWlA7PRY.js";import{Ct as Te,ft as k,gt as Ee}from"./speechSettingsQueries-C8efV361.js";import{d as De,y as Oe}from"./insertionBoundaries-I_znkRIX.js";import{i as ke,n as Ae,r as je,t as Me}from"./useDesktopWindowControlsLayout-BjvIMnxi.js";var Ne=p(),A=f(),j=e(s(),1),M=c(),Pe=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},Fe=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)(117),{mode:n}=e,{t:i}=v(),a=S(Le),s=S(Re),c=S(ze),u=l(Be),d=ae(Ve),f=ae(He),p=C(Ue),h=C(We),g=se(),_=ie(a??``),y=m(),ee=Oe(Ge),te;t[0]===a?te=t[1]:(te=e=>a?e.worktreeMetadata.get(a)?.path??``:``,t[0]=a,t[1]=te);let ne=S(te),le;t[2]===a?le=t[3]:(le=e=>a?e.worktreeMetadata.get(a)?.branch?.trim()??null:null,t[2]=a,t[3]=le);let ue=S(le),de;t[4]===a?de=t[5]:(de=e=>a?e.getAttachment(a):void 0,t[4]=a,t[5]=de);let w=re(de),fe=S(Ke),[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}=Me(),_e=he?me>=26?`h-12`:me<=15?`h-14`:``:``,ve;t[6]!==a||t[7]!==g?(ve=a?g.find(e=>e.id===a)??null:null,t[6]=a,t[7]=g,t[8]=ve):ve=t[8];let D=ve,O=D?.worktreeMetadata??null,ye,be;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(ye=()=>{o()&&r(`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 Te=we,k=ne||O?.path||w?.cwd||w?.worktreeRoot||``,Ee;t[18]===k?Ee=t[19]:(Ee=N(k),t[18]=k,t[19]=Ee);let Ne=Ee,Pe;t[20]===u?Pe=t[21]:(Pe=N(u),t[20]=u,t[21]=Pe);let P=Ne||Te||fe||Pe,Ie;t[22]===P?Ie=t[23]:(Ie=Fe(P),t[22]=P,t[23]=Ie);let $e=Ie,et;t[24]!==Te||t[25]!==Ne?(et=e=>{let t=N(Ne||Te||``);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]=Te,t[25]=Ne,t[26]=et):et=t[26];let tt=S(et),nt,rt;t[27]!==ee||t[28]!==P||t[29]!==y.git?(nt=()=>{P&&ee(P,y.git).catch(qe)},rt=[ee,P,y.git],t[27]=ee,t[28]=P,t[29]=y.git,t[30]=nt,t[31]=rt):(nt=t[30],rt=t[31]),j.useEffect(nt,rt),O?.projectDirectory,w?.worktreeRoot;let it;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){it=null;break bb0}let i;t[34]!==r||t[35]!==d?(i=d.map(Je).filter(e=>e.normalizedPath&&(e.normalizedPath===r||r.startsWith(`${e.normalizedPath}/`))).sort(Ye)[0]??null,t[34]=r,t[35]=d,t[36]=i):i=t[36],it=i}let at=it,ot;bb1:{let e=at??f;if(!e){ot=$e||`OpenChamberY`;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),ot=n}let st=ot,ct=De(P||null),lt;t[39]!==tt||t[40]!==ct||t[41]!==O?.branch||t[42]!==w?.branch||t[43]!==ue?(lt=ct||ue||O?.branch?.trim()||w?.branch?.trim()||tt,t[39]=tt,t[40]=ct,t[41]=O?.branch,t[42]=w?.branch,t[43]=ue,t[44]=lt):lt=t[44];let ut=lt,dt=ut&&ut!==`HEAD`?ut:null,ft;t[45]===p?ft=t[46]:(ft=p(),t[45]=p,t[46]=ft);let pt=ft,mt;bb2:{for(let e=_.length-1;e>=0;--e){let t=_[e];if(t.role!==`assistant`||typeof t.providerID!=`string`||typeof t.modelID!=`string`)continue;let n=h.find(e=>e.id===t.providerID)?.models.find(e=>e.id===t.modelID);if(n){mt=n;break bb2}}mt=void 0}let ht=mt,gt=pt?.limit?pt:ht,F=gt&&typeof gt.limit==`object`&&gt.limit!==null?gt.limit:null,_t=F&&typeof F.context==`number`?F.context:0,vt=F&&typeof F.output==`number`?F.output:0,I=oe(a??``,_t,vt),[L,yt]=j.useState(null),bt;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(bt={WebkitAppRegion:`drag`},t[47]=bt):bt=t[47];let xt=bt,St;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(St={WebkitAppRegion:`no-drag`},t[48]=St):St=t[48];let Ct=St,wt,Tt;t[49]!==I||t[50]!==a?(wt=()=>{if(!a){yt(Xe);return}if(I){yt(e=>e&&e.pending===I.pending&&e.totalTokens===I.totalTokens&&e.percentage===I.percentage&&e.contextLimit===I.contextLimit&&(e.outputLimit??0)===(I.outputLimit??0)&&(e.normalizedOutput??0)===(I.normalizedOutput??0)&&e.thresholdLimit===I.thresholdLimit&&e.lastMessageId===I.lastMessageId?e:I);return}yt(Ze)},Tt=[I,a],t[49]=I,t[50]=a,t[51]=wt,t[52]=Tt):(wt=t[51],Tt=t[52]),j.useEffect(wt,Tt);let Et=L&&L.contextLimit>0?Math.min(999,L.totalTokens/L.contextLimit*100):0,Dt;t[53]===T?Dt=t[54]:(Dt=()=>{let e=!T;pe(e),r(`desktop_set_window_pinned`,{pinned:e}).catch(()=>{pe(!e)})},t[53]=T,t[54]=Dt);let Ot=Dt,kt;t[55]!==u||t[56]!==a||t[57]!==c||t[58]!==P||t[59]!==D?(kt=()=>{let e=a?{sessionId:a,directory:D?.directory??u??``}:{mode:`draft`,directory:P||u||``,projectId:c};r(`desktop_focus_main_window`,e).then(Qe)},t[55]=u,t[56]=a,t[57]=c,t[58]=P,t[59]=D,t[60]=kt):kt=t[60];let At=kt,jt=E?`h-12`:_e||`min-h-14`,R;t[61]===jt?R=t[62]:(R=b(`flex items-center gap-3 bg-background pr-3`,he?`pl-[5.5rem]`:`pl-3`,jt),t[61]=jt,t[62]=R);let z;t[63]!==E||t[64]!==ge?(z=E&&ge===`left`?(0,M.jsx)(je,{visible:!0,position:`left`}):null,t[63]=E,t[64]=ge,t[65]=z):z=t[65];let B;t[66]===i?B=t[67]:(B=i(`sessions.switcher.openAria`),t[66]=i,t[67]=B);let V;t[68]===Se?V=t[69]:(V=(0,M.jsx)(`span`,{className:`truncate typography-ui-label text-[14px] font-normal leading-tight text-foreground max-w-full`,children:Se}),t[68]=Se,t[69]=V);let H;t[70]===st?H=t[71]:(H=(0,M.jsx)(`span`,{className:`truncate`,children:st}),t[70]=st,t[71]=H);let U;t[72]===dt?U=t[73]:(U=dt?(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:dt})]}):null,t[72]=dt,t[73]=U);let W;t[74]!==H||t[75]!==U?(W=(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:[H,U]}),t[74]=H,t[75]=U,t[76]=W):W=t[76];let G;t[77]!==B||t[78]!==V||t[79]!==W?(G=(0,M.jsx)(Ae,{children:(0,M.jsxs)(`button`,{type:`button`,"aria-label":B,style:Ct,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:[V,W]})}),t[77]=B,t[78]=V,t[79]=W,t[80]=G):G=t[80];let Mt;t[81]===Symbol.for(`react.memo_cache_sentinel`)?(Mt=(0,M.jsx)(`div`,{className:`min-w-0 flex-1`}),t[81]=Mt):Mt=t[81];let K;t[82]!==Et||t[83]!==L?(K=L?(0,M.jsx)(ke,{pending:L.pending,totalTokens:L.totalTokens,percentage:Et,colorPercentage:L.percentage,contextLimit:L.contextLimit,outputLimit:L.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[82]=Et,t[83]=L,t[84]=K):K=t[84];let q;t[85]!==T||t[86]!==i?(q=i(T?`miniChat.actions.unpinAria`:`miniChat.actions.pinAria`),t[85]=T,t[86]=i,t[87]=q):q=t[87];let J;t[88]!==T||t[89]!==i?(J=i(T?`miniChat.actions.unpin`:`miniChat.actions.pin`),t[88]=T,t[89]=i,t[90]=J):J=t[90];let Y;t[91]===T?Y=t[92]:(Y=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[91]=T,t[92]=Y);let X;t[93]!==Ot||t[94]!==q||t[95]!==J||t[96]!==Y?(X=(0,M.jsx)(x,{type:`button`,variant:`ghost`,size:`icon`,onClick:Ot,"aria-label":q,title:J,style:Ct,children:Y}),t[93]=Ot,t[94]=q,t[95]=J,t[96]=Y,t[97]=X):X=t[97];let Z;t[98]===i?Z=t[99]:(Z=i(`miniChat.actions.openMainAria`),t[98]=i,t[99]=Z);let Q;t[100]===i?Q=t[101]:(Q=i(`miniChat.actions.openMain`),t[100]=i,t[101]=Q);let Nt;t[102]===Symbol.for(`react.memo_cache_sentinel`)?(Nt=(0,M.jsx)(ce,{name:`external-link`,className:`h-4 w-4`}),t[102]=Nt):Nt=t[102];let Pt;t[103]!==At||t[104]!==Z||t[105]!==Q?(Pt=(0,M.jsx)(x,{type:`button`,variant:`ghost`,size:`icon`,onClick:At,"aria-label":Z,title:Q,style:Ct,children:Nt}),t[103]=At,t[104]=Z,t[105]=Q,t[106]=Pt):Pt=t[106];let Ft=E&&ge===`right`,$;t[107]===Ft?$=t[108]:($=(0,M.jsx)(je,{visible:Ft,position:`right`}),t[107]=Ft,t[108]=$);let It;return t[109]!==R||t[110]!==z||t[111]!==G||t[112]!==K||t[113]!==X||t[114]!==Pt||t[115]!==$?(It=(0,M.jsxs)(`header`,{className:R,style:xt,children:[z,G,Mt,K,X,Pt,$]}),t[109]=R,t[110]=z,t[111]=G,t[112]=K,t[113]=X,t[114]=Pt,t[115]=$,t[116]=It):It=t[116],It},Ie=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)(Pe,{mode:`mini-chat`,children:(0,M.jsx)(xe,{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 Le(e){return e.currentSessionId}function Re(e){return!!e.newSessionDraft?.open}function ze(e){return e.newSessionDraft?.selectedProjectId??null}function Be(e){return e.currentDirectory}function Ve(e){return e.projects}function He(e){return e.getActiveProject()}function Ue(e){return e.getCurrentModel}function We(e){return e.providers}function Ge(e){return e.ensureStatus}function Ke(e){return e.newSessionDraft?.open?N(e.newSessionDraft.bootstrapPendingDirectory??e.newSessionDraft.directoryOverride??``):``}function qe(){}function Je(e){return{...e,normalizedPath:N(e.path)}}function Ye(e,t){return t.path.length-e.path.length}function Xe(e){return e===null?e:null}function Ze(e){return e===null?e:null}function Qe(e){return e?.focused===!0?r(`desktop_close_current_window`):null}var $e=()=>{document.querySelector(`textarea[data-chat-input="true"]`)?.focus()},et=()=>{let e=d(e=>e.shortcutOverrides),t=l(e=>e.currentDirectory),i=ae(e=>e.getActiveProject()),a=S(e=>e.openNewSessionDraft);j.useEffect(()=>{let o=t=>Ee(t,e),s=e=>{if(k(e,o(`focus_input`))){e.preventDefault(),$e();return}if(n()&&k(e,o(`close_context_panel_tab`))){e.preventDefault(),r(`desktop_close_current_window`).catch(e=>{console.warn(`[mini-chat-shortcuts] failed to close current window`,e)});return}if(n()&&k(e,o(`new_mini_chat`))){e.preventDefault(),r(`desktop_open_draft_mini_chat_window`,{directory:t||i?.path||``,projectId:i?.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(),a({selectedProjectId:i?.id??null,directoryOverride:t||i?.path||null,preserveDirectoryOverride:!!(t||i?.path)}),$e();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=C.getState();if(t.getCurrentModelVariants().length===0)return;e.preventDefault(),t.cycleCurrentVariant();let n=C.getState().currentVariant,r=S.getState().currentSessionId,i=C.getState().currentAgentName,a=C.getState().currentProviderId,o=C.getState().currentModelId;r&&i&&a&&o&&te.getState().saveAgentModelVariantForSession(r,i,a,o,n),i&&a&&o&&C.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}=C.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)},[i?.id,i?.path,t,a,e])},tt=`openchamber:mini-chat-presence`,nt=()=>{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}},rt=({config:e})=>{let t=se(),n=l(e=>e.currentDirectory),r=l(e=>e.setDirectory),i=ae(e=>e.projects),a=S(e=>e.currentSessionId),o=S(e=>!!e.newSessionDraft?.open),s=S(e=>e.newSessionDraft?.open?e.newSessionDraft.bootstrapPendingDirectory??e.newSessionDraft.directoryOverride??``:``),c=S(e=>e.setCurrentSession),u=S(e=>e.openNewSessionDraft),d=C(e=>e.initializeApp),f=C(e=>e.isInitialized),p=ge();j.useEffect(()=>{d()},[d]),j.useEffect(()=>{if(f)return;let e=!0,t=0,n=window.setInterval(()=>{if(e){if(t+=1,t>10){window.clearInterval(n);return}C.getState().isInitialized||C.getState().initializeApp()}},1e3);return()=>{e=!1,window.clearInterval(n)}},[f]);let m=j.useRef(!1);j.useEffect(()=>{if(!m.current&&e.mode===`session`&&e.directory){if(n===e.directory){m.current=!0;return}r(e.directory,{showOverlay:!1}),m.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]),_e({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){p.ensureSessionRenderable(e.sessionId);return}let r=n.directory??e.directory;c(e.sessionId,r),v.current=!0},[e,a,t,c,p]);let y=_(t),b=g(e=>{let t=e.detail,n=typeof t?.sessionId==`string`?t.sessionId.trim():``;if(!n||S.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;p.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 h(()=>import(`./gitApi-HQKLs8JU.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,25,26,27,28])))||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||!f)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)},[f,e.mode,e.sessionId,a,o]),null},it=()=>{let e=(0,A.c)(4),t=S(ft),n=l(pt),r,i;return e[0]!==n||e[1]!==t?(r=()=>{if(!t||!n||typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(tt),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},at=e=>{let t=(0,A.c)(6),n=se(),r=S(mt),[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 ot(e){let n=(0,A.c)(16),{apis:r}=e,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=nt(),n[0]=i):i=n[0];let a=i,o=l(ut),s=S(lt),c=S(ct),d,f;n[1]===o?(d=n[2],f=n[3]):(d=()=>{u.setDirectory(o||a.directory||void 0)},f=[a.directory,o],n[1]=o,n[2]=d,n[3]=f),j.useEffect(d,f);let p,m;n[4]===r?(p=n[5],m=n[6]):(p=()=>(t(r),st),m=[r],n[4]=r,n[5]=p,n[6]=m),j.useEffect(p,m),ye(),et();let h;n[7]===Symbol.for(`react.memo_cache_sentinel`)?(h={enabled:!0},n[7]=h):h=n[7],ue(h),E();let g;n[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=u.getSdkClient(),n[8]=g):g=n[8];let _=o||a.directory||``,v=!(c&&s===null),y;n[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)(dt,{config:a}),(0,M.jsx)(de,{})]})}),n[9]=y):y=n[9];let b;n[10]===r?b=n[11]:(b=(0,M.jsx)(Se,{apis:r,children:y}),n[10]=r,n[11]=b);let x;return n[12]!==b||n[13]!==_||n[14]!==v?(x=(0,M.jsx)(Te,{children:(0,M.jsx)(ne,{sdk:g,directory:_,bootstrapDirectory:v,children:b})}),n[12]=b,n[13]=_,n[14]=v,n[15]=x):x=n[15],x}function st(){return t(null)}function ct(e){return!!e.newSessionDraft?.open}function lt(e){return e.currentSessionId}function ut(e){return e.currentDirectory}var dt=e=>{let t=(0,A.c)(11),{config:n}=e,r=at(n),i;t[0]===n?i=t[1]:(i=(0,M.jsx)(rt,{config:n}),t[0]=n,t[1]=i);let a,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,M.jsx)(it,{}),o=(0,M.jsx)(ve,{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)(Ie,{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 ft(e){return e.currentSessionId}function pt(e){return e.currentDirectory}function mt(e){return e.currentSessionId}var ht=()=>{ee(),a().then(()=>{Promise.all([i(),he()]).catch(e=>{console.error(`[mini-chat-main] settings init failed:`,e)}),O(),me(),w()}).catch(e=>{console.error(`[mini-chat-main] appearance init failed:`,e)})};function gt(e){ht();let t=document.getElementById(`root`);if(!t)throw Error(`Root element not found`);(0,Ne.createRoot)(t).render((0,M.jsx)(j.StrictMode,{children:(0,M.jsx)(fe,{children:(0,M.jsx)(y,{children:(0,M.jsx)(le,{children:(0,M.jsx)(D,{children:(0,M.jsx)(T,{children:(0,M.jsx)(pe,{children:(0,M.jsx)(ot,{apis:e})})})})})})})}))}export{gt as renderElectronMiniChatApp};
@@ -0,0 +1 @@
1
+ .oc-mobile-welcome{background:var(--surface-background);min-height:100dvh;color:var(--surface-foreground);padding:calc(var(--safe-area-inset-top,env(safe-area-inset-top,0px)) + 16px) 28px calc(var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)) + 24px);flex-direction:column;display:flex;overflow-y:auto}.oc-welcome-content{flex-direction:column;flex:1;gap:48px;width:100%;max-width:400px;margin-inline:auto;display:flex}.oc-welcome-intro{flex-direction:column;flex:1;justify-content:center;display:flex}.oc-welcome-art{isolation:isolate;pointer-events:none;flex:1;min-height:280px;max-height:520px;position:relative}.oc-welcome-dots{contain:paint;background-color:#0000;background-size:14px 14px;border-radius:0;position:absolute;inset:0 -20px;transform:rotate(-18deg)scale(.94);-webkit-mask-image:radial-gradient(47% 46% at 55%,#000 12%,#0000 100%);mask-image:radial-gradient(47% 46% at 55%,#000 12%,#0000 100%)}.oc-welcome-dots:after{background-size:14px 14px;animation-name:oc-image-loading-drift,oc-welcome-dots-breathe;animation-duration:4.2s,2.4s}@keyframes oc-welcome-dots-breathe{0%,to{opacity:.22}50%{opacity:1}}.oc-welcome-logo{width:132px;height:132px;position:absolute;top:50%;left:59%;transform:translate(-50%,-50%)}.oc-welcome-logo:before{content:"";z-index:-1;background:var(--surface-background);clip-path:polygon(50% 2%,92% 26%,92% 74%,50% 98%,8% 74%,8% 26%);position:absolute;inset:0}.oc-welcome-copy{padding-top:12px;padding-bottom:12px}.oc-welcome-copy h1{letter-spacing:-.045em;margin:0;font-size:clamp(40px,11vw,48px);font-weight:600;line-height:1.2}.oc-welcome-copy p{color:var(--surface-muted-foreground);font-size:calc(17 * var(--dpt));text-wrap:balance;margin:12px 0 0;line-height:1.6}.oc-welcome-primary[data-slot=button]{--primary-base:var(--surface-foreground);--primary-foreground:var(--surface-background);corner-shape:round;background:var(--primary-base);min-height:56px;color:var(--primary-foreground);font-size:calc(17 * var(--dpt));border-color:#0000;border-radius:999px;gap:12px}.oc-welcome-primary[data-slot=button]:hover{background:color-mix(in srgb, var(--primary-base) 88%, var(--surface-background))}.oc-welcome-primary[data-slot=button]:active{background:color-mix(in srgb, var(--primary-base) 78%, var(--surface-background))}.oc-mobile-welcome[data-welcome-paused] .oc-welcome-dots:after,html:not(.oc-native-app-active) .oc-welcome-dots:after{animation-play-state:paused}@media (height<=680px){.oc-welcome-content{gap:24px}.oc-welcome-art{min-height:200px}.oc-welcome-logo{width:112px;height:112px}}@media (prefers-reduced-motion:reduce){.oc-welcome-dots:after{animation:none}}.oc-welcome-device[data-slot=button]{white-space:normal;gap:16px;height:auto;min-height:76px;margin-bottom:8px;padding:16px}.oc-welcome-history-row[data-slot=button]{white-space:normal;gap:16px;height:auto;min-height:68px;padding-block:12px}.oc-welcome-history-footer{padding:16px 24px max(16px, var(--oc-app-bottom-safe,env(safe-area-inset-bottom,0px)));flex-shrink:0}