@openchambery/web 1.19.7-beta.24 → 1.19.7-beta.26
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.
- package/dist/assets/{AgentAvatar-DI2zs2WH.js → AgentAvatar-CX0a1rKE.js} +1 -1
- package/dist/assets/AssistantView-BYHD7Fcy.js +2 -0
- package/dist/assets/{DiagramView-DZhC-gPw.js → DiagramView-BUucK4Mn.js} +1 -1
- package/dist/assets/{FadeInOnReveal-BWJcUp5P.js → FadeInOnReveal-CK4asqVR.js} +1 -1
- package/dist/assets/{Icon-4My8YZwt.js → Icon-BYM02QyU.js} +1 -1
- package/dist/assets/{MarkdownLoadingSkeleton-Vezjvk9B.js → MarkdownLoadingSkeleton-DWs4Jg7b.js} +1 -1
- package/dist/assets/{MarkdownRenderer-Dd7nPtW4.js → MarkdownRenderer-uiTtRexW.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-CuGusb9c.js → MarkdownRendererImpl-DszSA6px.js} +1 -1
- package/dist/assets/MarkstreamRendererImpl-CsNwy1T5.css +1 -0
- package/dist/assets/MarkstreamRendererImpl-DkjZ7QYA.js +1 -0
- package/dist/assets/{MobileDetailNavigation-DXLN8AfE.js → MobileDetailNavigation-BElZdvTL.js} +1 -1
- package/dist/assets/MobileShareBridge-DiXOck30.js +4 -0
- package/dist/assets/{MobileSurface-DZys0gQW.js → MobileSurface-BCIZyDOc.js} +1 -1
- package/dist/assets/{MultiRunWindow-DNSCvp1n.js → MultiRunWindow-XXWgGd6d.js} +1 -1
- package/dist/assets/{OnboardingScreen-BNEtPmvw.js → OnboardingScreen-C3-wzeSX.js} +1 -1
- package/dist/assets/{OverlayScrollbar-BZB21Yp_.js → OverlayScrollbar-KUpvYHdv.js} +1 -1
- package/dist/assets/{SettingsView-CW0sP1G5.js → SettingsView-CdYIJh0f.js} +5 -5
- package/dist/assets/{SettingsWindow-BbY8rAaP.js → SettingsWindow-CLr0dXVg.js} +1 -1
- package/dist/assets/{TerminalView-Blou_qZo.js → TerminalView-BdtasXsi.js} +1 -1
- package/dist/assets/{ToolOutputDialog-D69bhD7_.js → ToolOutputDialog-D22RYqMI.js} +1 -1
- package/dist/assets/{appThemeRegistry-DTf7Ymvj.js → appThemeRegistry-D1wTvHoc.js} +1 -1
- package/dist/assets/{button-Or0daT9o.js → button-C0cth9tl.js} +1 -1
- package/dist/assets/{clipboard-BXxLshVq.js → clipboard-DJ4nQEuY.js} +1 -1
- package/dist/assets/{collapsible-C-kzSGkq.js → collapsible-DFT9cE80.js} +1 -1
- package/dist/assets/{context-menu-Dpjla5p4.js → context-menu-CAp74NfV.js} +1 -1
- package/dist/assets/desktopHosts-CWxex1c3.js +1 -0
- package/dist/assets/{desktopRelayRestore-BaKjk1kQ.js → desktopRelayRestore-9EbBYQ9s.js} +1 -1
- package/dist/assets/{diagram-D0mT3mo1.js → diagram-BryzMuta.js} +1 -1
- package/dist/assets/{dialog-BkhHBTd4.js → dialog-CgbV5ljg.js} +1 -1
- package/dist/assets/{fileQueries-DFY6Kiy1.js → fileQueries-BY-9OWzp.js} +1 -1
- package/dist/assets/{fileReferenceActions-Di_DoDex.js → fileReferenceActions-BJJtX_S5.js} +1 -1
- package/dist/assets/{gitApi-s3lJ_NUC.js → gitApi-RhwRTt2X.js} +1 -1
- package/dist/assets/{input-BUsGnzwe.js → input-DFLpqjGR.js} +1 -1
- package/dist/assets/{insertionBoundaries-BXIh3qwN.js → insertionBoundaries-D-UUqego.js} +1 -1
- package/dist/assets/{main-CbWB2MxW.js → main-BRB8Kly8.js} +2 -2
- package/dist/assets/{main-6h4AIMd7.js → main-BaSeqhTm.js} +11 -11
- package/dist/assets/{markdownTheme-CVS01wHf.js → markdownTheme-CzZm3riB.js} +1 -1
- package/dist/assets/{miniChat-DuYRiHjj.js → miniChat-CDZ48aEf.js} +2 -2
- package/dist/assets/{mobile-DKja4fFV.js → mobile-B2Hpp_5U.js} +2 -2
- package/dist/assets/{multirun-CWbdKSsT.js → multirun-CfvHH_3s.js} +1 -1
- package/dist/assets/{outsideFileGrants-BB4GPvCq.js → outsideFileGrants-DnplRxr-.js} +1 -1
- package/dist/assets/persistence-DdUac14I.js +3 -0
- package/dist/assets/platform-B4KKLnZ5.js +2 -0
- package/dist/assets/{projectMeta-BjeUc8MG.js → projectMeta-vCCip4-G.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-Cv1F39fu.js → renderElectronMiniChatApp-D9RarEOS.js} +2 -2
- package/dist/assets/{renderMobileApp-C4zDY0CW.js → renderMobileApp-DOiQLCcY.js} +7 -7
- package/dist/assets/{runtimeConfig-D0G_wzhg.js → runtimeConfig-CkWKMmAR.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-Cx37ZLh4.js → runtimeEndpointReset-aW8qogl0.js} +1 -1
- package/dist/assets/{sessionChangeSummary-CX2MJIkc.js → sessionChangeSummary-DOq8EN_H.js} +1 -1
- package/dist/assets/{sessionLookup-B56D_zE1.js → sessionLookup-BNO4Ta46.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-C5gGnikj.js → sortable-tabs-strip-C8_9kHqu.js} +1 -1
- package/dist/assets/src-DasvfkEg.css +2 -0
- package/dist/assets/{terminalApi-CIIs9vFx.js → terminalApi-947l7Ra3.js} +1 -1
- package/dist/assets/{textarea-CIO34TZz.js → textarea-Cgo_nWUU.js} +1 -1
- package/dist/assets/{tooltip-BSrJYYYc.js → tooltip-BifLJ8o0.js} +1 -1
- package/dist/assets/{url-CE_gAfNa.js → url-Pk6tQ1EZ.js} +1 -1
- package/dist/assets/{useAppFontEffects-i1QzgXKU.js → useAppFontEffects-BqBeuVr8.js} +6 -6
- package/dist/assets/{useAssistantUIStore-BHacrxe_.js → useAssistantUIStore-me6s63b2.js} +1 -1
- package/dist/assets/{useDesktopWindowControlsLayout-BqT0VDLV.js → useDesktopWindowControlsLayout-CnX7JJa1.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-CUSBKiSi.js → useEffectiveDirectory-F2fNcQ22.js} +1 -1
- package/dist/assets/{useFontPreferences-BxOHKuVw.js → useFontPreferences-BCOBlaAd.js} +1 -1
- package/dist/assets/useMobileNavigationStore-CBfSvE2P.js +413 -0
- package/dist/assets/{useSessionAutoCleanup-mitMfzXN.js → useSessionAutoCleanup-BVJKWCtK.js} +1 -1
- package/dist/assets/useUIStore-CuaA8-Hp.js +1 -0
- package/dist/assets/{useWorkerHighlightedLines-BZHDVxzL.js → useWorkerHighlightedLines-WYqpkPyP.js} +1 -1
- package/dist/assets/{utils-B0mQXN9L.js → utils-BiK3tBGM.js} +1 -1
- package/dist/index.html +9 -9
- package/dist/mini-chat.html +9 -9
- package/dist/mobile.html +9 -9
- package/package.json +1 -1
- package/server/lib/assistants/contact-tools.test.js +6 -6
- package/server/lib/assistants/harness.test.js +3 -3
- package/server/lib/assistants/service.test.js +1 -1
- package/server/lib/event-stream/DOCUMENTATION.md +12 -1
- package/server/lib/event-stream/directory-ws-bridge.js +11 -2
- package/server/lib/event-stream/global-ws-bridge.js +19 -3
- package/server/lib/event-stream/protocol.js +11 -1
- package/server/lib/event-stream/reasoning-projection.js +425 -0
- package/server/lib/event-stream/reasoning-projection.test.js +300 -0
- package/server/lib/event-stream/runtime.js +10 -0
- package/server/lib/event-stream/runtime.test.js +53 -0
- package/server/lib/opencode/DOCUMENTATION.md +2 -1
- package/server/lib/opencode/proxy.js +103 -9
- package/server/lib/opencode/proxy.test.js +177 -1
- package/server/lib/relay/reasoning-projection.e2e.test.ts +529 -0
- package/server/lib/session-turn-pages/DOCUMENTATION.md +2 -1
- package/server/lib/session-turn-pages/routes.js +22 -3
- package/server/lib/session-turn-pages/routes.test.js +43 -0
- package/server/lib/transcript-cache/DOCUMENTATION.md +2 -2
- package/server/lib/transcript-cache/routes.js +9 -2
- package/server/lib/transcript-cache/routes.test.js +32 -0
- package/dist/assets/AssistantView-DDIVh1W4.js +0 -2
- package/dist/assets/MarkstreamRendererImpl-Ca7RATbs.css +0 -1
- package/dist/assets/MarkstreamRendererImpl-DANegq9r.js +0 -1
- package/dist/assets/MobileShareBridge-BVHXNDqj.js +0 -4
- package/dist/assets/desktopHosts-BzSE0sK7.js +0 -1
- package/dist/assets/persistence-CSZp1CNB.js +0 -3
- package/dist/assets/platform-CenlWqxu.js +0 -2
- package/dist/assets/src-Cs2WiOMc.css +0 -2
- package/dist/assets/useMobileNavigationStore-C-EBQ7Zt.js +0 -412
- package/dist/assets/useUIStore-CqqO11ZI.js +0 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
projectMessagesPayloadForReasoning,
|
|
5
|
+
readIncludeReasoningQuery,
|
|
6
|
+
} from '../event-stream/reasoning-projection.js';
|
|
3
7
|
import { hasPreviewProxyCredential } from '../opencode/core-routes.js';
|
|
4
8
|
import {
|
|
5
9
|
TranscriptCacheValidationError,
|
|
@@ -57,7 +61,9 @@ export const registerTranscriptCacheRoutes = (app, { transcriptCacheService } =
|
|
|
57
61
|
app.get(`${TRANSCRIPT_CACHE_ROUTE_PREFIX}/session`, rejectPreviewProxyCredential((req, res) => {
|
|
58
62
|
if (!transcriptCacheService) return unsupported(res);
|
|
59
63
|
try {
|
|
60
|
-
|
|
64
|
+
const includeReasoning = readIncludeReasoningQuery(req.query);
|
|
65
|
+
const body = { available: true, ...transcriptCacheService.readSession(scopeFromQuery(req.query)) };
|
|
66
|
+
res.json(projectMessagesPayloadForReasoning(body, includeReasoning));
|
|
61
67
|
} catch (error) {
|
|
62
68
|
sendError(res, error);
|
|
63
69
|
}
|
|
@@ -66,12 +72,13 @@ export const registerTranscriptCacheRoutes = (app, { transcriptCacheService } =
|
|
|
66
72
|
app.get(`${TRANSCRIPT_CACHE_ROUTE_PREFIX}/message`, rejectPreviewProxyCredential((req, res) => {
|
|
67
73
|
if (!transcriptCacheService) return unsupported(res);
|
|
68
74
|
try {
|
|
75
|
+
const includeReasoning = readIncludeReasoningQuery(req.query);
|
|
69
76
|
const record = transcriptCacheService.readMessage(
|
|
70
77
|
scopeFromQuery(req.query),
|
|
71
78
|
parseTranscriptCacheMessageID(req.query?.messageID),
|
|
72
79
|
);
|
|
73
80
|
if (!record) return res.status(404).json({ error: 'message_not_found' });
|
|
74
|
-
res.json({ available: true, record });
|
|
81
|
+
res.json(projectMessagesPayloadForReasoning({ available: true, record }, includeReasoning));
|
|
75
82
|
} catch (error) {
|
|
76
83
|
sendError(res, error);
|
|
77
84
|
}
|
|
@@ -114,6 +114,38 @@ describe('transcript cache routes', () => {
|
|
|
114
114
|
expect(transcriptCacheService.readMessage).toHaveBeenCalledWith(SCOPE, 'msg_user');
|
|
115
115
|
});
|
|
116
116
|
|
|
117
|
+
it('strips reasoning parts on read when includeReasoning=false', async () => {
|
|
118
|
+
const { app, route } = registry();
|
|
119
|
+
const record = {
|
|
120
|
+
messageID: 'msg_a',
|
|
121
|
+
info: { id: 'msg_a', tokens: { reasoning: 5 } },
|
|
122
|
+
parts: [
|
|
123
|
+
{ id: 'r', type: 'reasoning', text: 'hidden' },
|
|
124
|
+
{ id: 't', type: 'text', text: 'ok' },
|
|
125
|
+
],
|
|
126
|
+
};
|
|
127
|
+
const transcriptCacheService = {
|
|
128
|
+
readSession: vi.fn(() => ({ scope: SCOPE, records: [record], byteSize: 99 })),
|
|
129
|
+
readMessage: vi.fn(() => record),
|
|
130
|
+
};
|
|
131
|
+
registerTranscriptCacheRoutes(app, { transcriptCacheService });
|
|
132
|
+
|
|
133
|
+
const session = await invoke(route('GET', `${prefix}/session`), {
|
|
134
|
+
query: { ...SCOPE, generation: '1', includeReasoning: 'false' },
|
|
135
|
+
});
|
|
136
|
+
expect(session.statusCode).toBe(200);
|
|
137
|
+
expect(session.body.records[0].parts).toEqual([{ id: 't', type: 'text', text: 'ok' }]);
|
|
138
|
+
expect(session.body.records[0].info.tokens.reasoning).toBe(5);
|
|
139
|
+
expect(JSON.stringify(session.body)).not.toContain('hidden');
|
|
140
|
+
// Stored record must stay intact for later full reads.
|
|
141
|
+
expect(record.parts).toHaveLength(2);
|
|
142
|
+
|
|
143
|
+
const message = await invoke(route('GET', `${prefix}/message`), {
|
|
144
|
+
query: { ...SCOPE, messageID: 'msg_a', includeReasoning: 'false' },
|
|
145
|
+
});
|
|
146
|
+
expect(message.body.record.parts).toEqual([{ id: 't', type: 'text', text: 'ok' }]);
|
|
147
|
+
});
|
|
148
|
+
|
|
117
149
|
it('returns 404 when a message is missing', async () => {
|
|
118
150
|
const { app, route } = registry();
|
|
119
151
|
registerTranscriptCacheRoutes(app, {
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,E as r,t as i}from"./useUIStore-CqqO11ZI.js";import{et as a}from"./persistence-CSZp1CNB.js";import{a as o}from"./vendor-zustand-B4dlGEM2.js";import{nt as s,rt as c}from"./vendor-base-ui-CnHfUmDN.js";import{r as l}from"./platform-CenlWqxu.js";import{n as u}from"./vendor-react-DLPElpoQ.js";import{r as d}from"./vendor-sonner-DVzioF3d.js";import{n as f}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as p}from"./clipboard-BXxLshVq.js";import{a as m,n as h}from"./MobileShareBridge-BVHXNDqj.js";import{Oo as g,dr as _,qt as v,r as y,vn as b}from"./useMobileNavigationStore-C-EBQ7Zt.js";import{a as x,b as S,c as C,f as w,h as ee,p as T,r as E,t as D,v as O}from"./MobileDetailNavigation-DXLN8AfE.js";import{i as k,n as A,r as j}from"./useAssistantUIStore-BHacrxe_.js";import{a as M,i as N,n as P,o as F,r as I,t as L}from"./dialog-BkhHBTd4.js";import{t as R}from"./utils-B0mQXN9L.js";import{t as z}from"./AgentAvatar-DI2zs2WH.js";import{n as B}from"./Icon-4My8YZwt.js";import{t as V}from"./button-Or0daT9o.js";import{i as H}from"./OverlayScrollbar-BZB21Yp_.js";import{t as U}from"./MarkdownRenderer-Dd7nPtW4.js";import{a as W,i as te,n as ne,r as re,t as ie,u as ae}from"./sessionChangeSummary-CX2MJIkc.js";import{a as oe,i as se,n as ce,r as G,t as le}from"./context-menu-Dpjla5p4.js";import{t as K}from"./sessionLookup-B56D_zE1.js";var q=u(),J=e(c(),1),Y=s(),ue=e=>{let t=(0,q.c)(17),{name:n,emoji:r,size:i,label:a,working:o,className:s}=e,c=i===void 0?24:i,l=o!==void 0&&o,{t:u}=p(),d=`calc(${c}px * var(--dpt-n, 1))`,f;t[0]===s?f=t[1]:(f=R(`relative inline-block shrink-0 align-middle leading-none`,s),t[0]=s,t[1]=f);let m;t[2]===d?m=t[3]:(m={width:d,height:d},t[2]=d,t[3]=m);let h;t[4]!==r||t[5]!==a||t[6]!==n||t[7]!==c?(h=(0,Y.jsx)(z,{name:n,emoji:r,size:c,label:a,shape:`circle`}),t[4]=r,t[5]=a,t[6]=n,t[7]=c,t[8]=h):h=t[8];let g;t[9]!==u||t[10]!==l?(g=l?(0,Y.jsx)(`span`,{className:`pointer-events-none absolute right-0 bottom-0 size-2 translate-x-1/4 translate-y-1/4 rounded-full bg-[var(--status-success)] ring-2 ring-background`,"data-assistant-working-dot":``,"aria-label":u(`assistants.contact.working`)}):null,t[9]=u,t[10]=l,t[11]=g):g=t[11];let _;return t[12]!==f||t[13]!==m||t[14]!==h||t[15]!==g?(_=(0,Y.jsxs)(`span`,{className:f,style:m,"data-assistant-working-avatar":``,children:[h,g]}),t[12]=f,t[13]=m,t[14]=h,t[15]=g,t[16]=_):_=t[16],_},de=o(e=>({workingByID:{},setWorking:(t,n)=>e(e=>({workingByID:{...e.workingByID,[t]:n}}))})),fe=({sending:e=!1,processing:t=!1})=>e||t,X=e=>{let t=(0,q.c)(4),n;t[0]===e?n=t[1]:(n=t=>!!t.workingByID[e],t[0]=e,t[1]=n);let r=de(n),i;return t[2]===r?i=t[3]:(i=fe({processing:r}),t[2]=r,t[3]=i),i},pe=[],me=e=>e.flatMap(e=>e.type===`text`&&e.text.trim()?[e.text]:[]).join(`
|
|
2
|
-
`),he=(e,t,n,r=Date.now())=>({assistantID:e,messageID:t,parts:n,status:`sending`,createdAt:r}),ge=(e,t)=>{let n=e.filter(e=>e.assistantID===t);return n.length===e.length?e:n},Z=(e,t)=>{let n=e.filter(e=>e.assistantID===t);return n.length===e.length?e:n},_e=(e,t,n,r)=>({messageID:t?`${e.turnID}:preview:${t.bubbleIndex}`:`${e.turnID}:preview:${r}`,assistantID:e.assistantID,role:`assistant`,turnID:e.turnID,bubbleIndex:t?.bubbleIndex??0,createdAt:t?.occurredAt??e.occurredAt,ordinal:n,status:r,fromAssistantID:null,fromAssistantName:null,parts:t?[{type:`text`,text:t.text}]:[],text:t?.text??``,cards:[]}),Q=(e,t,n)=>{let r=e.bubbles.filter(e=>!t.has(e.bubbleIndex)).map((t,r)=>_e(e,t,n+r,t.done?`complete`:`streaming`));return e.status===`failed`?[...r,_e(e,null,n+r.length,`failed`)]:e.status===`admitted`||e.status===`streaming`?[...r,_e(e,null,n+r.length,`admitted`)]:r},ve=(e,t,n,r=[])=>{let i=new Set(e.map(e=>e.messageID)),a=t.flatMap((t,r)=>t.assistantID!==n||i.has(t.messageID)?[]:[{messageID:t.messageID,assistantID:n,role:`user`,turnID:t.messageID,bubbleIndex:0,createdAt:t.createdAt,ordinal:e.length+r,status:t.status,fromAssistantID:null,fromAssistantName:null,parts:[...t.parts],text:me(t.parts),cards:[]}]),o=a.length===0?e:[...e,...a],s=r.filter(e=>e.assistantID===n);if(s.length===0)return o;let c=new Map,l=new Map;o.forEach((e,t)=>{if(c.set(e.turnID,t),e.role!==`assistant`||e.messageID.includes(`:preview:`))return;let n=l.get(e.turnID)??new Set;n.add(e.bubbleIndex),l.set(e.turnID,n)});let u=new Map,d=[];for(let e of s){let t=Q(e,l.get(e.turnID)??new Set,o.length+d.length);if(t.length===0)continue;let n=c.get(e.turnID);if(n===void 0){d.push(...t);continue}let r=u.get(n)??[];r.push(...t),u.set(n,r)}return u.size===0&&d.length===0?o:o.flatMap((e,t)=>[e,...u.get(t)??[]]).concat(d)},ye=(e,t)=>{let n=new Set(t.map(e=>e.messageID)),r=e.filter(e=>!n.has(e.messageID));return r.length===e.length?e:r},be=(e,t)=>e.map(e=>e.messageID===t?{...e,status:`admitted`}:e),$=(e,t,n,r=Date.now())=>e.some(e=>e.assistantID===t&&e.turnID===n)?e:[...e,{assistantID:t,turnID:n,status:`admitted`,bubbles:[],occurredAt:r}],xe=(e,t)=>$(e,t.assistantID,t.turnID,t.occurredAt).map(e=>{if(e.assistantID!==t.assistantID||e.turnID!==t.turnID||e.status===`failed`||e.status===`complete`)return e;let n=e.bubbles.find(e=>e.bubbleIndex===t.bubbleIndex);if(n?.done)return e;let r=n?{...n,text:`${n.text}${t.delta}`,done:t.done,occurredAt:t.occurredAt}:{bubbleIndex:t.bubbleIndex,text:t.delta,done:t.done,occurredAt:t.occurredAt},i=n?e.bubbles.map(e=>e.bubbleIndex===t.bubbleIndex?r:e):[...e.bubbles,r].sort((e,t)=>e.bubbleIndex-t.bubbleIndex);return{...e,status:`streaming`,bubbles:i}}),Se=(e,t)=>$(e,t.assistantID,t.turnID,t.occurredAt).map(e=>e.assistantID!==t.assistantID||e.turnID!==t.turnID?e:{...e,status:t.status===`error`?`failed`:`complete`,...t.error?{error:t.error}:{}}),Ce=(e,t)=>{let n=new Set(t.flatMap(e=>e.role===`assistant`?[e.turnID]:[])),r=e.filter(e=>e.status!==`complete`||!n.has(e.turnID));return r.length===e.length?e:r},we=(e,t,n)=>e.map(e=>e.messageID===t?{...e,status:`failed`,error:n}:e),Te=(e,t)=>{if(e instanceof O){if(e.code===`no_provider`)return t.noProvider;if(e.code===`admission_timeout`||e.code===`generate_timeout`)return t.timedOut;if(e.message&&e.message!==e.code)return e.message}return S(e)?t.timedOut:t.sendFailed},Ee=()=>{let e=!1;return{tryAcquire:()=>!e&&(e=!0,!0),release:()=>{e=!1}}},De=e=>{let t=e.text.trim();if(e.sending||!t&&e.attachments.length===0||!e.gate.tryAcquire())return{ok:!1};let n=[...t?[{type:`text`,text:t}]:[],...e.attachments.map(e=>({type:`file`,mime:e.mime,url:e.url,filename:e.name}))],r=e.createMessageID();return{ok:!0,messageID:r,parts:n,turn:he(e.assistantID,r,n,e.createdAt)}},Oe=e=>e.some(e=>e.status===`sending`),ke=e=>e.some(e=>e.status===`admitted`||e.status===`streaming`),Ae=[`cursor-pointer rounded-[1.35rem] bg-[var(--surface-elevated)] ring-1 ring-inset ring-[var(--surface-subtle)]`,`px-3.5 py-3 text-left transition-[background-color,box-shadow,transform] duration-200 ease-out motion-reduce:transition-none`,`hover:-translate-y-px hover:bg-interactive-hover/45 hover:shadow-sm active:translate-y-0 motion-reduce:hover:translate-y-0`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]`].join(` `),je=`${Ae} w-fit max-w-[15rem]`,Me=`${Ae} w-fit max-w-[20rem]`;function Ne(e,t){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t())}var Pe=e=>{let t=(0,q.c)(26),{card:n}=e,{t:r}=p(),i=ae(),a;t[0]===i?a=t[1]:(a=i&&!l(),t[0]=i,t[1]=a);let o=!!a,s=n.name,c=`${n.providerID}/${n.modelID}`,u;t[2]!==n.mode||t[3]!==c?(u=[c,n.mode].filter(Boolean),t[2]=n.mode,t[3]=c,t[4]=u):u=t[4];let d=u,m;t[5]!==n.assistantID||t[6]!==o?(m=()=>{if(o){y.getState().openAssistant(n.assistantID);return}A(n.assistantID)},t[5]=n.assistantID,t[6]=o,t[7]=m):m=t[7];let h=f(m),g;t[8]===h?g=t[9]:(g=e=>{Ne(e,h)},t[8]=h,t[9]=g);let _=f(g),v;t[10]!==r||t[11]!==s?(v=r(`assistants.contact.card.assistant.aria`,{name:s}),t[10]=r,t[11]=s,t[12]=v):v=t[12];let b;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,Y.jsx)(`span`,{className:`relative inline-block size-6 shrink-0 leading-none`,children:(0,Y.jsx)(`span`,{className:`flex size-6 items-center justify-center rounded-lg bg-[var(--surface-muted)] text-muted-foreground`,children:(0,Y.jsx)(B,{name:`robot-2`,className:`size-3`})})}),t[13]=b):b=t[13];let x;t[14]===s?x=t[15]:(x=(0,Y.jsx)(`h3`,{className:`min-w-0 truncate typography-ui-label font-medium text-foreground`,children:s}),t[14]=s,t[15]=x);let S;t[16]===d?S=t[17]:(S=d.length>0?(0,Y.jsx)(`p`,{className:`truncate typography-micro text-muted-foreground`,children:d.join(` · `)}):null,t[16]=d,t[17]=S);let C;t[18]!==x||t[19]!==S?(C=(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[b,(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[x,S]})]}),t[18]=x,t[19]=S,t[20]=C):C=t[20];let w;return t[21]!==_||t[22]!==h||t[23]!==C||t[24]!==v?(w=(0,Y.jsx)(`article`,{className:je,role:`button`,tabIndex:0,"aria-label":v,"data-assistant-contact-card":`assistant`,onClick:h,onKeyDown:_,children:C}),t[21]=_,t[22]=h,t[23]=C,t[24]=v,t[25]=w):w=t[25],w},Fe=e=>{let t=(0,q.c)(25),{card:n}=e,{t:r}=p(),i=n.name,a;t[0]!==n.kind||t[1]!==n.time||t[2]!==n.timezone?(a=[n.kind,n.time,n.timezone].filter(Boolean),t[0]=n.kind,t[1]=n.time,t[2]=n.timezone,t[3]=a):a=t[3];let o=a.join(` `),s;t[4]!==n.prompt||t[5]!==o?(s=o.trim()||(typeof n.prompt==`string`?n.prompt.trim():``),t[4]=n.prompt,t[5]=o,t[6]=s):s=t[6];let c=s,l=f(Ie),u;t[7]===l?u=t[8]:(u=e=>{Ne(e,l)},t[7]=l,t[8]=u);let d=f(u),m;t[9]!==r||t[10]!==i?(m=r(`assistants.contact.card.schedule.aria`,{name:i}),t[9]=r,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Y.jsx)(`span`,{className:`relative inline-block size-6 shrink-0 leading-none`,children:(0,Y.jsx)(`span`,{className:`flex size-6 items-center justify-center rounded-lg bg-[var(--surface-muted)] text-muted-foreground`,children:(0,Y.jsx)(B,{name:`calendar`,className:`size-3`})})}),t[12]=h):h=t[12];let g;t[13]===i?g=t[14]:(g=(0,Y.jsx)(`h3`,{className:`min-w-0 truncate typography-ui-label font-medium text-foreground`,children:i}),t[13]=i,t[14]=g);let _;t[15]===c?_=t[16]:(_=c?(0,Y.jsx)(`p`,{className:`truncate typography-micro text-muted-foreground`,children:c}):null,t[15]=c,t[16]=_);let v;t[17]!==g||t[18]!==_?(v=(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[h,(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[g,_]})]}),t[17]=g,t[18]=_,t[19]=v):v=t[19];let y;return t[20]!==d||t[21]!==l||t[22]!==m||t[23]!==v?(y=(0,Y.jsx)(`article`,{className:je,role:`button`,tabIndex:0,"aria-label":m,"data-assistant-contact-card":`schedule`,onClick:l,onKeyDown:d,children:v}),t[20]=d,t[21]=l,t[22]=m,t[23]=v,t[24]=y):y=t[24],y};function Ie(){i.getState().setActiveMainTab(`schedule`),i.getState().setScheduledTasksDialogOpen(!0)}var Le=(e,t)=>e===`busy`||e===`retry`?e:t===`error`||t===`question`||t===`complete`?t:e===`idle`?`complete`:t===`busy`||t===`retry`||t===`idle`?t:t||`busy`,Re=e=>e===`busy`?`assistants.contact.card.session.status.busy`:e===`retry`?`assistants.contact.card.session.status.retry`:e===`idle`?`assistants.contact.card.session.status.idle`:e===`complete`?`assistants.contact.card.session.status.complete`:e===`error`?`assistants.contact.card.session.status.error`:e===`question`?`assistants.contact.card.session.status.question`:null,ze=e=>e===`busy`?`bg-[var(--status-info)]/10 text-[var(--status-info)]`:e===`retry`||e===`question`?`bg-[var(--status-warning)]/10 text-[var(--status-warning)]`:e===`error`?`bg-[var(--status-error)]/10 text-[var(--status-error)]`:e===`idle`||e===`complete`?`bg-[var(--status-success)]/10 text-[var(--status-success)]`:`bg-[var(--surface-muted)] text-muted-foreground`,Be=e=>e.split(/[/\\]/u).filter(Boolean).at(-1)||e,Ve=e=>{let t=(0,q.c)(35),{card:n}=e,{t:r}=p(),a=ae(),o;t[0]===a?o=t[1]:(o=a&&!l(),t[0]=a,t[1]=o);let s=!!o,c;t[2]===n.sessionID?c=t[3]:(c=e=>e.activeSessions.find(e=>e.id===n.sessionID)??e.archivedSessions.find(e=>e.id===n.sessionID)??null,t[2]=n.sessionID,t[3]=c);let u=_(c),d=v(n.sessionID),m=(typeof u?.title==`string`&&u.title.trim()?u.title.trim():null)||n.title||r(`assistants.contact.card.session.untitled`),h=Le(d?.type,n.status),g=Re(h),y=h===`busy`||h===`retry`,x=Be(typeof u?.directory==`string`&&u.directory.trim()?u.directory.trim():n.directory),S=ne(u)||n.branch,C=te(u),w=re(u),ee=ie(w),T=[x,C,S].filter(He),E;t[4]!==n.directory||t[5]!==n.sessionID||t[6]!==s?(E=()=>{let e=K(n.sessionID)?.directory||n.directory;b(n.sessionID,e,{phoneShell:s,switchToChat:!0}),s||i.getState().setActiveMainTab(`chat`)},t[4]=n.directory,t[5]=n.sessionID,t[6]=s,t[7]=E):E=t[7];let D=f(E),O;t[8]===D?O=t[9]:(O=e=>{Ne(e,D)},t[8]=D,t[9]=O);let k=f(O),A=Me,j=r(`assistants.contact.card.session.aria`,{title:m}),M;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Y.jsx)(`span`,{className:`flex size-6 items-center justify-center rounded-lg bg-[var(--surface-muted)] text-muted-foreground`,children:(0,Y.jsx)(B,{name:`chat-3`,className:`size-3`})}),t[10]=M):M=t[10];let N;t[11]===y?N=t[12]:(N=y?(0,Y.jsx)(`span`,{className:`pointer-events-none absolute right-0 bottom-0 size-2 translate-x-1/4 translate-y-1/4 rounded-full bg-[var(--status-success)] ring-2 ring-[var(--surface-elevated)]`,"data-assistant-working-dot":``,"aria-hidden":!0}):null,t[11]=y,t[12]=N);let P;t[13]===N?P=t[14]:(P=(0,Y.jsxs)(`span`,{className:`relative inline-block size-6 shrink-0 leading-none`,children:[M,N]}),t[13]=N,t[14]=P);let F;t[15]===m?F=t[16]:(F=(0,Y.jsx)(`h3`,{className:`min-w-0 flex-1 truncate typography-ui-label font-medium text-foreground`,children:m}),t[15]=m,t[16]=F);let I=g?(0,Y.jsx)(`span`,{className:R(`shrink-0 rounded-full px-1.5 py-0.5 typography-micro leading-none`,ze(h)),children:r(g)}):null,L;t[17]!==F||t[18]!==I?(L=(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[F,I]}),t[17]=F,t[18]=I,t[19]=L):L=t[19];let z;t[20]===T?z=t[21]:(z=T.length>0?(0,Y.jsx)(`p`,{className:`truncate typography-micro text-muted-foreground`,children:T.join(` · `)}):null,t[20]=T,t[21]=z);let V=ee||w?.files!==void 0&&w.files>0?(0,Y.jsxs)(`p`,{className:`flex flex-wrap items-baseline gap-x-1.5 typography-micro tabular-nums`,children:[w?.additions===void 0?null:(0,Y.jsxs)(`span`,{className:`text-[var(--status-success)]`,children:[`+`,w.additions]}),w?.deletions===void 0?null:(0,Y.jsxs)(`span`,{className:`text-[var(--status-error)]`,children:[`−`,w.deletions]}),w?.files===void 0?null:(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:w.files===1?r(`assistants.contact.card.session.changes.filesSingle`,{count:w.files}):r(`assistants.contact.card.session.changes.filesPlural`,{count:w.files})})]}):null,H;t[22]!==L||t[23]!==z||t[24]!==V?(H=(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[L,z,V]}),t[22]=L,t[23]=z,t[24]=V,t[25]=H):H=t[25];let U;t[26]!==P||t[27]!==H?(U=(0,Y.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[P,H]}),t[26]=P,t[27]=H,t[28]=U):U=t[28];let W;return t[29]!==k||t[30]!==D||t[31]!==U||t[32]!==A||t[33]!==j?(W=(0,Y.jsx)(`article`,{className:A,role:`button`,tabIndex:0,"aria-label":j,"data-assistant-contact-card":`session`,onClick:D,onKeyDown:k,children:U}),t[29]=k,t[30]=D,t[31]=U,t[32]=A,t[33]=j,t[34]=W):W=t[34],W};function He(e){return!!(e&&e.trim())}var Ue=64,We=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{t(typeof r.result==`string`?r.result:``)},r.onerror=()=>{n(r.error??Error(`read_failed`))},r.readAsDataURL(e)}),Ge=e=>{if(!e)return[];let t=Array.from(e.files||[]);return t.length>0?t:Array.from(e.items||[]).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e instanceof File)},Ke=e=>Array.from(e?.files||[]),qe=async(e,t=a)=>{let n=[],r=0;for(let i of Array.from(e||[])){if(!i||i.size<=0)continue;if(i.size>52428800){r+=1;continue}let e=await We(i);e.startsWith(`data:`)&&n.push({id:t(),url:e,name:i.name.trim()||`attachment`,mime:i.type.trim()||`application/octet-stream`})}return{attachments:n,skippedTooLarge:r}},Je=(e,t)=>[...e,...t].slice(0,Ue),Ye={"oc.settle.complete":`assistants.contact.settle.complete`,"oc.settle.error":`assistants.contact.settle.error`,"oc.settle.question":`assistants.contact.settle.question`},Xe=({assistant:e,warning:t,active:n,overlayHeader:r=!1})=>{let{t:o}=p(),s=i(e=>e.isMobile),c=w(),l=ee(),u=T(e.id,n),d=m(e.name),_=d.displayName||e.name,v=(e,t)=>{let n=e?l.data?.assistants.find(t=>t.id===e):void 0;return n?m(n.name).displayName||n.name:t||o(`assistants.contact.peer.unknown`)},[y,b]=J.useState(``),[x,S]=J.useState([]),[E,D]=J.useState([]),[O,k]=J.useState([]),[A,j]=J.useState(null),M=J.useMemo(()=>Ee(),[]),N=J.useRef(new Set),P=de(e=>e.setWorking),F=J.useRef(null),I=u.data?.messages??pe,L=ge(E,e.id),z=Z(O,e.id),V=ve(I,L,e.id,z),H=Oe(L),te=ke(z),ne=z.reduce((e,t)=>e+t.bubbles.reduce((e,t)=>e+t.text.length,0),0),re=new Map(z.map(e=>[e.turnID,e]));J.useEffect(()=>{j(null),N.current.clear(),D(t=>ge(t,e.id)),k(t=>Z(t,e.id))},[e.id]),J.useEffect(()=>{D(e=>ye(e,I)),k(e=>Ce(e,I))},[I]),J.useEffect(()=>{P(e.id,H||te)},[e.id,te,H,P]),J.useEffect(()=>{let t=e.id;return()=>{P(t,!1)}},[e.id,P]);let ie=f(t=>{if(!(!(`assistantID`in t)||t.assistantID!==e.id)){if(t.type===`contact-turn-start`){if(N.current.has(t.turnID))return;k(e=>$(e,t.assistantID,t.turnID,t.occurredAt));return}if(t.type===`contact-bubble-delta`){if(N.current.has(t.turnID))return;k(e=>xe(e,t));return}t.type===`contact-turn-end`&&(N.current.add(t.turnID),k(e=>Ce(Se(e,t),I)))}});J.useEffect(()=>{if(n)return g(ie)},[n,e.id]),J.useEffect(()=>{let e=F.current;e&&(e.scrollTop=e.scrollHeight)},[ne,V.length]);let ae=f(async e=>{let t=await qe(e);t.skippedTooLarge>0&&j(o(`assistants.contact.attachment.tooLarge`)),t.attachments.length!==0&&S(e=>Je(e,t.attachments))}),oe=f(e=>{let t=Ge(e.clipboardData);t.length!==0&&(e.preventDefault(),ae(t))}),se=f(e=>{Array.from(e.dataTransfer?.types??[]).includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)}),ce=f(e=>{let t=Ke(e.dataTransfer);t.length!==0&&(e.preventDefault(),ae(t))}),G=f(async()=>{let t=y,n=x,r=e.id,i=De({gate:M,sending:Oe(L),text:t,attachments:n,assistantID:r,createMessageID:()=>`oc_contact_${a()}`});if(i.ok){D(e=>[...e,i.turn]),b(``),S([]),j(null);try{await C(r,i.messageID,{parts:i.parts}),D(e=>be(e,i.messageID)),N.current.has(i.messageID)||k(e=>$(e,r,i.messageID)),c.data?.serverInstanceID&&h({serverInstanceID:c.data.serverInstanceID,assistantID:r,name:_,avatarSeed:r,...d.avatarEmoji?{avatarEmoji:d.avatarEmoji}:{}}).catch(()=>void 0)}catch(e){let t=Te(e,{noProvider:o(`assistants.contact.noProvider`),sendFailed:o(`assistants.contact.sendFailed`),timedOut:o(`assistants.contact.timedOut`)});D(e=>we(e,i.messageID,t))}finally{M.release()}}}),le=u.isError&&V.length===0,K=u.isSuccess&&V.length===0,q=new Map(L.map(e=>[e.messageID,e]));return(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[(0,Y.jsxs)(`div`,{ref:F,className:R(`min-h-0 flex-1 overflow-y-auto px-4 pb-9 sm:px-8 sm:pb-12`,r?`pt-[calc(max(0.625rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height)+1.25rem)]`:`pt-5 sm:pt-7`),"data-assistant-contact-transcript":``,children:[t?(0,Y.jsx)(`p`,{className:`mb-3 typography-micro text-[var(--status-warning)]`,children:t}):null,le?(0,Y.jsxs)(`div`,{className:`mx-auto flex h-full min-h-56 max-w-xs flex-col items-center justify-center pb-16 text-center`,"data-assistant-contact-error":``,children:[(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(ue,{name:e.id,emoji:d.avatarEmoji,size:44,label:_}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`absolute -right-1 -bottom-1 flex size-5 items-center justify-center rounded-full bg-[var(--surface-elevated)] text-[var(--status-error)] ring-2 ring-background`,children:(0,Y.jsx)(B,{name:`error-warning`,className:`size-3`})})]}),(0,Y.jsx)(`p`,{className:`mt-4 typography-ui-label font-medium text-foreground`,children:_}),(0,Y.jsx)(`p`,{className:`mt-1.5 typography-ui leading-6 text-muted-foreground`,children:o(`assistants.contact.loadFailed`)})]}):K?(0,Y.jsxs)(`div`,{className:`mx-auto flex h-full min-h-56 max-w-sm flex-col items-center justify-center pb-16 text-center`,"data-assistant-contact-empty":``,children:[(0,Y.jsx)(ue,{name:e.id,emoji:d.avatarEmoji,size:48,label:_,className:`opacity-90`}),(0,Y.jsx)(`p`,{className:`mt-5 typography-ui-header font-medium tracking-[-0.01em] text-foreground`,children:o(`assistants.conversation.emptyTitle`,{name:_})}),(0,Y.jsx)(`p`,{className:`mt-2 max-w-xs typography-ui leading-6 text-muted-foreground/80`,children:o(`assistants.contact.empty`)})]}):(0,Y.jsx)(`div`,{className:`mx-auto flex w-full max-w-[42rem] flex-col`,children:V.map((t,n)=>{let r=n>0?V[n-1]:null,i=t.role===`user`,a=t.role===`peer`,s=t.role===`assistant`&&r?.role===`assistant`&&r.turnID===t.turnID,c=r?.turnID!==t.turnID,u=!i&&(a||!s),d=a?v(t.fromAssistantID,t.fromAssistantName):_,f=a&&t.fromAssistantID?l.data?.assistants.find(e=>e.id===t.fromAssistantID):e,p=f?m(f.name):null,h=q.get(t.messageID),g=re.get(t.turnID),y=t.status===`admitted`&&t.messageID.endsWith(`:preview:admitted`),b=t.status===`failed`&&t.messageID.endsWith(`:preview:failed`);return(0,Y.jsxs)(`div`,{className:R(`flex w-full`,i?`justify-end`:`justify-start`,c?`mt-6 first:mt-0`:s?`mt-1.5`:`mt-3`),"data-assistant-contact-role":t.role,"data-assistant-contact-turn-status":h?.status??t.status,"data-assistant-contact-run-start":t.role===`assistant`&&!s?``:void 0,children:[i?null:(0,Y.jsx)(`div`,{className:`mr-2.5 flex w-8 shrink-0 justify-center pt-0.5`,children:u?(0,Y.jsx)(ue,{name:f?.id||t.fromAssistantID||e.id,emoji:p?.avatarEmoji,size:28,label:d}):(0,Y.jsx)(`span`,{className:`size-7`,"aria-hidden":!0})}),(0,Y.jsxs)(`div`,{className:R(`flex min-w-0 flex-col gap-1.5`,i?`max-w-[min(82%,30rem)] items-end`:`max-w-[min(84%,34rem)] items-start`),children:[a?(0,Y.jsx)(`span`,{className:`mb-0.5 px-1 typography-micro text-muted-foreground/75`,children:o(`assistants.contact.peer.from`,{name:d})}):null,y?(0,Y.jsxs)(`div`,{role:`status`,"aria-label":o(`assistants.contact.processing`),className:`inline-flex w-fit items-center gap-1 rounded-full bg-[var(--surface-muted)] px-3.5 py-2.5 text-muted-foreground/70`,"data-assistant-contact-processing":``,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse rounded-full bg-current [animation-delay:-0.45s] [animation-duration:1.4s] motion-reduce:animate-none`}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse rounded-full bg-current [animation-delay:-0.22s] [animation-duration:1.4s] motion-reduce:animate-none`}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse rounded-full bg-current [animation-duration:1.4s] motion-reduce:animate-none`})]}):null,t.parts.map((e,n)=>{if(e.type===`card`&&e.cardType===`session`)return(0,Y.jsx)(Ve,{card:e},`${t.messageID}:card:${n}`);if(e.type===`card`&&e.cardType===`assistant`)return(0,Y.jsx)(Pe,{card:e},`${t.messageID}:card:${n}`);if(e.type===`card`&&e.cardType===`schedule`)return(0,Y.jsx)(Fe,{card:e},`${t.messageID}:card:${n}`);if(e.type===`file`&&e.mime.startsWith(`image/`)&&e.url)return(0,Y.jsx)(`img`,{src:e.url,alt:e.filename||o(`assistants.contact.attachment.image`),className:`max-h-72 max-w-full rounded-[1.35rem] border border-border/40 object-contain`,"data-assistant-contact-image":``},`${t.messageID}:file:${n}`);if(e.type===`file`)return(0,Y.jsxs)(`div`,{className:`flex max-w-full items-center gap-2.5 rounded-[1.25rem] bg-[var(--surface-muted)] px-3.5 py-2.5 ring-1 ring-inset ring-[var(--surface-subtle)]`,"data-assistant-contact-file":``,children:[(0,Y.jsx)(B,{name:`file-text`,className:`size-4 shrink-0 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`min-w-0 truncate typography-ui`,children:e.filename||o(`assistants.contact.attachment.file`)})]},`${t.messageID}:file:${n}`);if(e.type===`text`&&(e.text.trim()||t.status===`streaming`)){let r=Ye[e.text],c=!i&&!r;return(0,Y.jsxs)(`div`,{"aria-label":a?o(`assistants.contact.peer.aria`,{name:d}):void 0,className:R(`break-words rounded-[1.35rem] px-4 py-2.5 typography-ui leading-6`,c?`min-w-0`:`whitespace-pre-wrap`,i?`rounded-[1.15rem] rounded-br-lg bg-[var(--primary-base)]/90 text-[var(--primary-foreground)]`:a?`rounded-[1.25rem] border border-dashed border-border/50 bg-[var(--surface-muted)]/70 text-foreground`:R(`bg-[var(--surface-muted)] text-foreground`,s&&`rounded-tl-lg`)),children:[c?(0,Y.jsx)(U,{content:e.text,messageId:t.messageID,isAnimated:!1,isStreaming:t.status===`streaming`,variant:`assistant`,enableFileReferences:!1,className:`w-auto max-w-full`}):r?o(r):e.text,t.status===`streaming`&&n===t.parts.length-1?(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`ml-0.5 inline-block h-[1em] w-px translate-y-[0.12em] animate-pulse bg-current opacity-45 [animation-duration:1.1s] motion-reduce:animate-none`,"data-assistant-contact-streaming-caret":``}):null]},`${t.messageID}:text:${n}`)}return null}),h?.status===`sending`?(0,Y.jsx)(`p`,{className:`px-1 typography-micro text-muted-foreground/75`,children:o(`assistants.contact.sending`)}):null,h?.status===`failed`?(0,Y.jsx)(`p`,{className:`px-1 typography-micro text-[var(--status-error)]`,children:h.error||o(`assistants.contact.sendFailed`)}):null,b?(0,Y.jsx)(`p`,{className:`px-1 typography-micro text-[var(--status-error)]`,children:g?.error||o(`assistants.contact.sendFailed`)}):null]})]},t.messageID)})})]}),(0,Y.jsxs)(`footer`,{className:`relative z-10 shrink-0 bg-background pt-1`,"data-assistant-contact-composer":``,children:[A?(0,Y.jsx)(`p`,{className:`chat-input-column mb-2 typography-micro text-[var(--status-error)]`,children:A}):null,(0,Y.jsx)(`form`,{className:R(`relative w-full pt-1.5 pb-4`,s&&`bottom-safe-area oc-mobile-composer`),onSubmit:e=>{e.preventDefault(),G()},onDragOver:se,onDrop:ce,children:(0,Y.jsx)(`div`,{className:`chat-input-column relative overflow-visible`,children:(0,Y.jsx)(W,{layout:`inline`,value:y,attachments:x,pending:!1,isMobile:s,placeholder:o(`assistants.contact.placeholder`,{name:_}),sendLabel:o(`assistants.contact.send`),addFilesLabel:o(`assistants.contact.addFiles`),removeAttachmentLabel:o(`assistants.contact.removeAttachment`),fileAccept:`*/*`,onChange:e=>b(e),onSubmit:()=>{G()},onAddFiles:e=>{ae(e)},onRemoveAttachment:e=>{S(t=>t.filter(t=>t.id!==e))},onPaste:oe,onDragOver:se,onDrop:ce,className:R(`relative z-10`,s&&`oc-mobile-composer-surface`),style:{borderRadius:`1.5rem`},"data-assistant-contact-composer-surface":``,textareaProps:{"aria-label":o(`assistants.contact.placeholder`,{name:_})}})})})]})]})};async function Ze(e){await E(e);let t=k.getState().defaultShareAssistant;if(t?.assistantID!==e.id)return;let n=await x();n.serverInstanceID&&t.serverInstanceID===n.serverInstanceID&&k.getState().setDefaultShareAssistant(null)}function Qe({assistant:e,open:t,onOpenChange:n,onDeleted:r}){let{t:i}=p(),[a,o]=J.useState(!1),s=e?m(e.name).displayName||e.name:``,c=f(e=>{a&&!e||n(e)}),l=f(()=>{a||n(!1)}),u=f(async()=>{if(!(!e||a)){o(!0);try{await Ze(e),r?.(e.id),n(!1),d.success(i(`assistants.settings.toast.deleted`))}catch{d.error(i(`assistants.settings.toast.deleteFailed`))}finally{o(!1)}}});return(0,Y.jsx)(L,{open:t&&e!==null,onOpenChange:c,children:(0,Y.jsxs)(P,{className:`max-w-md`,children:[(0,Y.jsxs)(M,{children:[(0,Y.jsx)(F,{children:i(`assistants.settings.delete`)}),(0,Y.jsx)(I,{children:i(`assistants.settings.deleteConfirm`,{name:s})})]}),(0,Y.jsxs)(N,{children:[(0,Y.jsx)(V,{size:`sm`,variant:`ghost`,onClick:l,disabled:a,children:i(`settings.common.actions.cancel`)}),(0,Y.jsx)(V,{size:`sm`,variant:`destructive`,onClick:u,disabled:a,children:i(`settings.common.actions.delete`)})]})]})})}var $e=e=>e.capabilityPending?`loading`:e.capabilityError||e.supported!==!0||e.capabilityEnabled!==!0?`unavailable`:e.snapshotPending?`loading`:e.snapshotEnabled===!0?e.assistantCount===0?`onboarding`:e.hasAssistant?`ready`:e.snapshotSettled?`unavailable`:`loading`:`unavailable`,et=t({AssistantView:()=>rt}),tt=e=>{let t=(0,q.c)(21),{assistant:n,onBack:r}=e,{t:i}=p(),a=ae(),o;t[0]===n?o=t[1]:(o=n?m(n.name):null,t[0]=n,t[1]=o);let s=o,c=n&&s?s.displayName||n.name:``,l;t[2]!==n||t[3]!==a?(l=()=>{n&&j(n.id,a?{openMobileSettings:a.openSettings}:void 0)},t[2]=n,t[3]=a,t[4]=l):l=t[4];let u=f(l),d;t[5]!==n||t[6]!==c||t[7]!==s?.avatarEmoji||t[8]!==i?(d=n?(0,Y.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-2.5`,children:[(0,Y.jsx)(ue,{name:n.id,emoji:s?.avatarEmoji,size:28,label:c}),(0,Y.jsx)(`span`,{className:`truncate font-medium tracking-[-0.01em]`,children:c||i(`assistants.title`)})]}):c||i(`assistants.title`),t[5]=n,t[6]=c,t[7]=s?.avatarEmoji,t[8]=i,t[9]=d):d=t[9];let h;t[10]===i?h=t[11]:(h=i(`assistants.actions.backToChat`),t[10]=i,t[11]=h);let g;t[12]!==n||t[13]!==u||t[14]!==i?(g=n?[{icon:`settings-3`,ariaLabel:i(`assistants.conversation.openSettings`),onClick:u}]:[],t[12]=n,t[13]=u,t[14]=i,t[15]=g):g=t[15];let _;return t[16]!==r||t[17]!==d||t[18]!==h||t[19]!==g?(_=(0,Y.jsx)(D,{title:d,backAriaLabel:h,onBack:r,actions:g,overlay:!0}),t[16]=r,t[17]=d,t[18]=h,t[19]=g,t[20]=_):_=t[20],_},nt=e=>{let t=(0,q.c)(41),{assistantID:n,displayName:r,avatarEmoji:i,selected:a,enabled:o,editLabel:s,deleteLabel:c,onSelect:l,onEdit:u,onDelete:d,assignedSessionIDs:p,serverWorking:m}=e,h=X(n),[g,_]=J.useState(!1),v;t[0]===l?v=t[1]:(v=()=>l(),t[0]=l,t[1]=v);let y=f(v),b;t[2]===u?b=t[3]:(b=()=>{_(!1),u()},t[2]=u,t[3]=b);let x=f(b),S;t[4]===d?S=t[5]:(S=()=>{_(!1),d()},t[4]=d,t[5]=S);let C=f(S),w;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>{e.preventDefault(),_(!0)},t[6]=w):w=t[6];let ee=a?`border-border/50 bg-[var(--surface-elevated)]`:`border-transparent hover:bg-interactive-hover`,T=!o&&`opacity-65`,E;t[7]!==ee||t[8]!==T?(E=R(`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,opacity] duration-150 ease-out active:bg-interactive-active focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] motion-reduce:transition-none`,ee,T),t[7]=ee,t[8]=T,t[9]=E):E=t[9];let D;t[10]!==y||t[11]!==a||t[12]!==E?(D=(0,Y.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":a,onClick:y,onContextMenu:w,className:E}),t[10]=y,t[11]=a,t[12]=E,t[13]=D):D=t[13];let O;t[14]!==n||t[15]!==i||t[16]!==r||t[17]!==h?(O=(0,Y.jsx)(ue,{name:n,emoji:i,size:24,label:r,working:h}),t[14]=n,t[15]=i,t[16]=r,t[17]=h,t[18]=O):O=t[18];let k;t[19]===r?k=t[20]:(k=(0,Y.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(`span`,{className:`block truncate typography-ui-label font-medium`,children:r})}),t[19]=r,t[20]=k);let A;t[21]!==D||t[22]!==O||t[23]!==k?(A=(0,Y.jsxs)(oe,{render:D,children:[O,k]}),t[21]=D,t[22]=O,t[23]=k,t[24]=A):A=t[24];let j;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Y.jsx)(B,{name:`edit`,className:`size-4`}),t[25]=j):j=t[25];let M;t[26]!==s||t[27]!==x?(M=(0,Y.jsxs)(G,{onClick:x,children:[j,s]}),t[26]=s,t[27]=x,t[28]=M):M=t[28];let N;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,Y.jsx)(se,{}),t[29]=N):N=t[29];let P;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Y.jsx)(B,{name:`delete-bin`,className:`size-4`}),t[30]=P):P=t[30];let F;t[31]!==c||t[32]!==C?(F=(0,Y.jsxs)(G,{onClick:C,className:`text-[var(--status-error)] focus:text-[var(--status-error)] data-[highlighted]:text-[var(--status-error)] [&_svg]:text-[var(--status-error)]`,children:[P,c]}),t[31]=c,t[32]=C,t[33]=F):F=t[33];let I;t[34]!==M||t[35]!==F?(I=(0,Y.jsxs)(ce,{className:`min-w-[10rem]`,children:[M,N,F]}),t[34]=M,t[35]=F,t[36]=I):I=t[36];let L;return t[37]!==g||t[38]!==A||t[39]!==I?(L=(0,Y.jsxs)(le,{open:g,onOpenChange:_,children:[A,I]}),t[37]=g,t[38]=A,t[39]=I,t[40]=L):L=t[40],L},rt=e=>{let t=(0,q.c)(109),{activeOverride:a,onMobileBack:o}=e,{t:s}=p(),{isMobile:c}=H(),l=ae(),u=J.useSyncExternalStore(n,r,r),d=i(it),h=a??d,g=i(at),_=c||g,v=w(),y=ee(),b=y.data,x;t[0]===u?x=t[1]:(x=e=>e.assistantByTransport[u]??null,t[0]=u,t[1]=x);let S=k(x),C=k(ot),T=k(st),E;t[2]!==S||t[3]!==b?.assistants?(E=b?.assistants.find(e=>e.id===S)??null,t[2]=S,t[3]=b?.assistants,t[4]=E):E=t[4];let D=E,O;t[5]!==C||t[6]!==S||t[7]!==b?(O=()=>{!S&&b?.assistants[0]&&C(b.assistants[0].id)},t[5]=C,t[6]=S,t[7]=b,t[8]=O):O=t[8];let A=b?.assistants,M;t[9]!==C||t[10]!==S||t[11]!==A?(M=[C,S,A],t[9]=C,t[10]=S,t[11]=A,t[12]=M):M=t[12],J.useEffect(O,M);let N;t[13]!==D||t[14]!==C||t[15]!==S||t[16]!==b?.assistants||t[17]!==y.isSuccess?(N=()=>{y.isSuccess&&S&&!D&&C(b?.assistants[0]?.id??null)},t[13]=D,t[14]=C,t[15]=S,t[16]=b?.assistants,t[17]=y.isSuccess,t[18]=N):N=t[18];let P=b?.assistants,F;t[19]!==D||t[20]!==C||t[21]!==S||t[22]!==y.isSuccess||t[23]!==P?(F=[D,C,S,P,y.isSuccess],t[19]=D,t[20]=C,t[21]=S,t[22]=y.isSuccess,t[23]=P,t[24]=F):F=t[24],J.useEffect(N,F);let I;t[25]!==l||t[26]!==T?(I=()=>{if(T(),l){l.openSettings();return}let e=i.getState();e.setSettingsPage(`assistants`),e.setSettingsDialogOpen(!0)},t[25]=l,t[26]=T,t[27]=I):I=t[27];let L=f(I),z;t[28]===l?z=t[29]:(z=e=>{j(e,l?{openMobileSettings:l.openSettings}:void 0)},t[28]=l,t[29]=z);let U=f(z),W;t[30]!==D||t[31]!==l?(W=()=>{D&&j(D.id,l?{openMobileSettings:l.openSettings}:void 0)},t[30]=D,t[31]=l,t[32]=W):W=t[32];let te=f(W),[ne,re]=J.useState(null),ie;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(ie=e=>{re(e)},t[33]=ie):ie=t[33];let oe=f(ie),se;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(se=e=>{e||re(null)},t[34]=se):se=t[34];let ce=f(se),G=f(ct),le;t[35]!==o||t[36]!==G?(le=()=>{if(o){o();return}G()},t[35]=o,t[36]=G,t[37]=le):le=t[37];let K=f(le),de=$e({capabilityPending:v.isPending,snapshotPending:y.isPending,capabilityError:v.isError,supported:v.data?.supported,capabilityEnabled:v.data?.enabled,snapshotEnabled:b?.enabled,snapshotSettled:y.isSuccess,assistantCount:b?.assistants.length??0,hasAssistant:!!D}),fe;t[38]!==D||t[39]!==K||t[40]!==_?(fe=(e,t,n,r)=>(0,Y.jsxs)(`div`,{className:`relative flex h-full min-h-0 flex-col`,children:[_?(0,Y.jsx)(tt,{assistant:D,onBack:K}):null,(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center px-6 pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem))] text-center`,children:[(0,Y.jsx)(B,{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]})]}),t[38]=D,t[39]=K,t[40]=_,t[41]=fe):fe=t[41];let X=fe;if(de===`loading`){let e;t[42]!==D||t[43]!==K||t[44]!==_?(e=_?(0,Y.jsx)(tt,{assistant:D,onBack:K}):null,t[42]=D,t[43]=K,t[44]=_,t[45]=e):e=t[45];let n;t[46]===s?n=t[47]:(n=s(`common.loading`),t[46]=s,t[47]=n);let r;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Y.jsx)(B,{name:`loader-4`,className:`size-6 animate-spin text-muted-foreground`}),t[48]=r):r=t[48];let i;t[49]===n?i=t[50]:(i=(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center px-6 pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem))] text-center`,"aria-busy":`true`,"aria-label":n,"data-assistant-workspace-loading":``,children:r}),t[49]=n,t[50]=i);let a;return t[51]!==e||t[52]!==i?(a=(0,Y.jsxs)(`div`,{className:`relative flex h-full min-h-0 flex-col`,children:[e,i]}),t[51]=e,t[52]=i,t[53]=a):a=t[53],a}if(de===`unavailable`){let e;return t[54]!==X||t[55]!==s?(e=X(`cloud-off`,s(`assistants.state.unavailable`)),t[54]=X,t[55]=s,t[56]=e):e=t[56],e}if(de===`onboarding`){let e;if(t[57]!==L||t[58]!==X||t[59]!==s){let n=s(`assistants.onboarding.title`),r=s(`assistants.onboarding.description`),i;t[61]===s?i=t[62]:(i=s(`assistants.onboarding.action`),t[61]=s,t[62]=i);let a;t[63]!==L||t[64]!==i?(a=(0,Y.jsx)(V,{onClick:L,children:i}),t[63]=L,t[64]=i,t[65]=a):a=t[65],e=X(`ai-agent`,n,r,a),t[57]=L,t[58]=X,t[59]=s,t[60]=e}else e=t[60];return e}if(!b||!D){let e;return t[66]!==X||t[67]!==s?(e=X(`cloud-off`,s(`assistants.state.unavailable`)),t[66]=X,t[67]=s,t[68]=e):e=t[68],e}let pe;t[69]===D.name?pe=t[70]:(pe=m(D.name),t[69]=D.name,t[70]=pe);let me=pe,he;t[71]!==D.enabled||t[72]!==y.isError||t[73]!==s?(he=D.enabled?y.isError?s(`assistants.state.staleSnapshot`):null:s(`assistants.state.assistantDisabled`),t[71]=D.enabled,t[72]=y.isError,t[73]=s,t[74]=he):he=t[74];let ge=he,Z;t[75]!==_||t[76]!==U||t[77]!==oe||t[78]!==C||t[79]!==S||t[80]!==b||t[81]!==s?(Z=_?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:s(`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":s(`assistants.listAria`),children:(0,Y.jsx)(`div`,{className:`flex flex-col gap-1 border-t border-border/40 pt-3`,children:b.assistants.map(e=>{let t=e.id===S,n=m(e.name);return(0,Y.jsx)(nt,{assistantID:e.id,displayName:n.displayName,avatarEmoji:n.avatarEmoji??void 0,selected:t,enabled:e.enabled,editLabel:s(`assistants.menu.edit`),deleteLabel:s(`assistants.settings.delete`),assignedSessionIDs:e.assignedSessionIDs,serverWorking:e.working,onSelect:()=>C(e.id),onEdit:()=>U(e.id),onDelete:()=>oe(e)},e.id)})})})]}),t[75]=_,t[76]=U,t[77]=oe,t[78]=C,t[79]=S,t[80]=b,t[81]=s,t[82]=Z):Z=t[82];let _e=ne!==null,Q;t[83]!==ne||t[84]!==ce||t[85]!==_e?(Q=(0,Y.jsx)(Qe,{assistant:ne,open:_e,onOpenChange:ce}),t[83]=ne,t[84]=ce,t[85]=_e,t[86]=Q):Q=t[86];let ve=!_&&`border-l border-[var(--surface-subtle)]`,ye;t[87]===ve?ye=t[88]:(ye=R(`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background`,ve),t[87]=ve,t[88]=ye);let be;t[89]!==D||t[90]!==K||t[91]!==_||t[92]!==te||t[93]!==me||t[94]!==s?(be=_?(0,Y.jsx)(tt,{assistant:D,onBack:K}):(0,Y.jsxs)(`header`,{className:`flex h-16 shrink-0 items-center gap-3.5 border-b border-[var(--surface-subtle)]/70 px-5 sm:px-7`,children:[(0,Y.jsx)(ue,{name:D.id,emoji:me.avatarEmoji,size:30,label:me.displayName||D.name}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate typography-ui-label font-semibold tracking-[-0.01em] text-foreground`,children:me.displayName}),(0,Y.jsx)(`div`,{className:`mt-1 truncate typography-micro leading-none text-muted-foreground/55`,children:s(`assistants.conversation.contactHint`)})]}),(0,Y.jsx)(V,{type:`button`,variant:`ghost`,size:`icon`,className:`size-8 shrink-0 rounded-full text-muted-foreground/65 transition-colors hover:text-foreground`,onClick:te,"aria-label":s(`assistants.conversation.openSettings`),children:(0,Y.jsx)(B,{name:`settings-3`,className:`size-4`})})]}),t[89]=D,t[90]=K,t[91]=_,t[92]=te,t[93]=me,t[94]=s,t[95]=be):be=t[95];let $;t[96]!==h||t[97]!==D||t[98]!==_||t[99]!==ge?($=(0,Y.jsx)(Xe,{assistant:D,warning:ge,active:h,overlayHeader:_}),t[96]=h,t[97]=D,t[98]=_,t[99]=ge,t[100]=$):$=t[100];let xe;t[101]!==ye||t[102]!==be||t[103]!==$?(xe=(0,Y.jsxs)(`div`,{className:ye,children:[be,$]}),t[101]=ye,t[102]=be,t[103]=$,t[104]=xe):xe=t[104];let Se;return t[105]!==Z||t[106]!==Q||t[107]!==xe?(Se=(0,Y.jsxs)(`div`,{className:`relative flex h-full min-h-0 overflow-hidden bg-background`,"data-presentation":`workspace`,children:[Z,Q,xe]}),t[105]=Z,t[106]=Q,t[107]=xe,t[108]=Se):Se=t[108],Se};function it(e){return e.activeMainTab===`assistant`}function at(e){return e.isMobile}function ot(e){return e.selectAssistant}function st(e){return e.requestCreate}function ct(){i.getState().setActiveMainTab(`chat`)}export{ue as a,X as i,et as n,Qe as r,rt as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.oc-markstream-host{color:var(--surface-foreground)}.oc-markstream-host .markstream-react{color:inherit;font-family:var(--font-sans);font-size:inherit;line-height:var(--markdown-body-line-height,1.625);--foreground:inherit;--muted-foreground:var(--surface-muted-foreground);--link-color:var(--markdown-link,var(--primary));--blockquote-border-color:var(--interactive-border);--hr-border-color:var(--surface-subtle);--table-border:var(--interactive-border);--footnote-border:var(--surface-subtle);--code-bg:var(--syntax-background,var(--surface-muted));--code-fg:var(--syntax-foreground,var(--surface-foreground));--code-border:var(--interactive-border);--code-header-bg:var(--surface-muted);--code-action-fg:var(--surface-muted-foreground);--code-action-hover-bg:var(--interactive-hover);--code-action-hover-fg:var(--surface-foreground);--code-line-number:var(--surface-muted-foreground)}.oc-markstream-host .markstream-react a,.oc-markstream-host .markstream-react .link-node{color:var(--markdown-link,var(--primary))}.oc-markstream-host .markstream-react a:hover,.oc-markstream-host .markstream-react .link-node:hover{color:var(--markdown-link-hover,var(--primary))}.oc-markstream-host .markstream-react .inline-code{background:var(--syntax-background,var(--surface-muted));color:var(--syntax-foreground,var(--surface-foreground))}.oc-markstream-host.markdown-reasoning .markstream-react{color:var(--surface-muted-foreground)}.oc-markstream-host .markstream-react .paragraph-node{margin:0 0 var(--markdown-paragraph-spacing) 0}.oc-markstream-host .markstream-react>.node-slot:last-of-type .paragraph-node{margin-bottom:0}.oc-markstream-host .markstream-react,.oc-markstream-host .markstream-react .node-slot,.oc-markstream-host .markstream-react .image-node{min-width:0;max-width:100%}.oc-markstream-host .markstream-react img:not([data-md-link-favicon=true]),.oc-markstream-host .markstream-react .image-node__img{object-fit:contain;width:auto;max-width:100%;height:auto;display:block}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{nt as t,rt as n}from"./vendor-base-ui-CnHfUmDN.js";import{n as r}from"./vendor-react-DLPElpoQ.js";import{a as i,i as a,n as o,r as s,t as c}from"./vendor-markstream-react-C3K8YH0d.js";import{n as l,r as u,u as d}from"./vendor-reactuses-core-DDoDDyM9.js";import{Oi as f}from"./useMobileNavigationStore-C-EBQ7Zt.js";import{t as p}from"./utils-B0mQXN9L.js";import{t as m}from"./useThemeSystem-DMzWVJaW.js";import{n as h}from"./useRuntimeAPIs-DSLXJybW.js";import{a as g,r as _}from"./url-CE_gAfNa.js";import{n as v}from"./useEffectiveDirectory-CUSBKiSi.js";import{r as y,t as b}from"./markdownHeightCache-CvUyZT4q.js";import{a as x,c as S,d as C,h as w,i as T,o as E,p as D,r as O,s as k,t as A}from"./fileReferenceActions-Di_DoDex.js";var j=e(n(),1),M=`img:not([data-md-link-favicon="true"])`,N=e=>e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,P=(e,t)=>{if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let n=e.target;if(!(n instanceof Element))return;let r=n.closest(M);if(r instanceof HTMLImageElement&&t.onShowPopup){let n=e.currentTarget;if(!(n instanceof HTMLElement))return;let i=Array.from(n.querySelectorAll(M)).map(e=>({url:N(e),filename:e.alt||N(e)||void 0})).filter(e=>e.url),a=N(r),o=i.findIndex(e=>e.url===a);if(!a)return;e.preventDefault(),e.stopPropagation(),t.onShowPopup({open:!0,title:r.alt||a,content:``,image:{url:a,filename:r.alt||a,gallery:i,index:o>=0?o:0}});return}if(t.fileReference){let r=n.closest(C);if(r instanceof HTMLElement){e.preventDefault(),e.stopPropagation(),x(r,t.fileReference);return}}let i=n.closest(`a[href]`);if(!(i instanceof HTMLAnchorElement))return;let a=i.getAttribute(`href`)??``;_(a)&&(e.preventDefault(),e.stopPropagation(),g(a))},F=(e,t)=>{if(e.key!==`Enter`&&e.key!==` `||!t.fileReference)return;let n=e.target;if(!(n instanceof Element))return;let r=n.closest(C);!(r instanceof HTMLElement)||r.getAttribute(`data-openchamber-file-link`)!==`true`||(e.preventDefault(),e.stopPropagation(),x(r,t.fileReference))},I=r(),L=(e,t)=>{let n=t>=2?e.slice(t-2,t):``;return(t>=1?e.charAt(t-1):``)===`:`||n===`:/`},R=e=>{if(!e.includes(`/`)||!e.includes(`.`))return[{kind:`text`,value:e}];w.lastIndex=0;let t=[],n=0,r=w.exec(e);for(;r;){let i=r[0];if(!i||L(e,r.index)||!D(i)){r=w.exec(e);continue}r.index>n&&t.push({kind:`text`,value:e.slice(n,r.index)}),t.push({kind:`path`,value:i}),n=r.index+i.length,r=w.exec(e)}return n===0?[{kind:`text`,value:e}]:(n<e.length&&t.push({kind:`text`,value:e.slice(n)}),t)},z=t(),B=j.createContext({enabled:!1,insideLink:!1,isMobileSurface:!1,effectiveDirectory:``,preferRuntimeEditor:!1,slots:{used:0,limit:0}}),V=!1,H=()=>{V||(V=!0,i({text:G,inline_code:K,link:q}))},U=e=>{let t=(0,I.c)(11),{enabled:n,effectiveDirectory:r,editor:i,preferRuntimeEditor:a,onShowPopup:o,content:s,children:c}=e,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=f(),t[0]=l):l=t[0];let u;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(u={used:0,limit:O()},t[1]=u):u=t[1];let d;t[2]!==i||t[3]!==r||t[4]!==n||t[5]!==o||t[6]!==a?(d={enabled:n,insideLink:!1,isMobileSurface:l,effectiveDirectory:r,editor:i,preferRuntimeEditor:a,onShowPopup:o,slots:u},t[2]=i,t[3]=r,t[4]=n,t[5]=o,t[6]=a,t[7]=d):d=t[7];let p=d,m;return t[8]!==c||t[9]!==p?(m=(0,z.jsx)(B.Provider,{value:p,children:c}),t[8]=c,t[9]=p,t[10]=m):m=t[10],m},W=({raw:e,children:t})=>{let n=j.useContext(B),r=T(e,n.effectiveDirectory),i=j.useRef(!1);n.enabled&&r&&!i.current&&n.slots.used<n.slots.limit&&(n.slots.used+=1,i.current=!0);let[a,o]=j.useState(r?E(r.resolvedPath)??null:null),s=r?.resolvedPath;if(j.useEffect(()=>{if(!n.enabled||!s||!i.current)return;let e=!1;return k(s,n.effectiveDirectory).then(t=>{e||o(t)}),()=>{e=!0}},[n.enabled,n.effectiveDirectory,s]),!r)return t??e;let c=!!(i.current&&a&&S(r.resolvedPath,a,n.isMobileSurface));return(0,z.jsx)(`span`,{"data-openchamber-block-path-token":`true`,...c?{"data-openchamber-file-link":`true`,"data-openchamber-file-ref":e,"data-openchamber-file-path":r.resolvedPath,"data-openchamber-file-binary":String(a?.isBinary===!0),title:A,...t?{}:{role:`button`,tabIndex:0}}:{},children:t??e})};function G(e){let t=(0,I.c)(12),n=j.useContext(B),r=e.node.content??``;if(!n.enabled||n.insideLink){let n;return t[0]===e?n=t[1]:(n=(0,z.jsx)(s,{...e}),t[0]=e,t[1]=n),n}let i,a;if(t[2]!==r||t[3]!==e){a=Symbol.for(`react.early_return_sentinel`);bb0:{let n=R(r);if(n.length===1&&n[0]?.kind!==`path`){let n;t[6]===e?n=t[7]:(n=(0,z.jsx)(s,{...e}),t[6]=e,t[7]=n),a=n;break bb0}let o;t[8]===e?o=t[9]:(o=(t,n)=>t.kind===`path`?(0,z.jsx)(W,{raw:t.value},`path-${n}-${t.value}`):(0,z.jsx)(s,{...e,node:{...e.node,content:t.value}},`text-${n}`),t[8]=e,t[9]=o),i=n.map(o)}t[2]=r,t[3]=e,t[4]=i,t[5]=a}else i=t[4],a=t[5];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[10]===i?o=t[11]:(o=(0,z.jsx)(z.Fragment,{children:i}),t[10]=i,t[11]=o),o}function K(e){let t=(0,I.c)(7),n=j.useContext(B),r=e.node.code??``;if(!n.enabled||!D(r)){let n;return t[0]===e?n=t[1]:(n=(0,z.jsx)(a,{...e}),t[0]=e,t[1]=n),n}let i;t[2]===r?i=t[3]:(i=(0,z.jsx)(W,{raw:r}),t[2]=r,t[3]=i);let o;return t[4]!==e||t[5]!==i?(o=(0,z.jsx)(a,{...e,children:i}),t[4]=e,t[5]=i,t[6]=o):o=t[6],o}function q(e){let t=(0,I.c)(12),n=j.useContext(B),r=e.node.href??``,i;t[0]!==n.enabled||t[1]!==r?(i=n.enabled&&D(r),t[0]=n.enabled,t[1]=r,t[2]=i):i=t[2];let a=i,s;t[3]===n?s=t[4]:(s={...n,insideLink:!0},t[3]=n,t[4]=s);let c;t[5]!==a||t[6]!==r||t[7]!==e?(c=a?(0,z.jsx)(W,{raw:r,children:(0,z.jsx)(o,{...e})}):(0,z.jsx)(o,{...e}),t[5]=a,t[6]=r,t[7]=e,t[8]=c):c=t[8];let l;return t[9]!==s||t[10]!==c?(l=(0,z.jsx)(B.Provider,{value:s,children:c}),t[9]=s,t[10]=c,t[11]=l):l=t[11],l}var J={maxLiveNodes:0,liveNodeBuffer:0,batchRendering:!1,deferNodesUntilVisible:!1,viewportPriority:!1,smoothStreaming:!1,typewriter:!1,fade:!1};H();var Y=e=>e===`tool`?`markdown-content markdown-tool oc-markstream-host`:e===`reasoning`?`markdown-content markdown-reasoning oc-markstream-host`:`markdown-content leading-relaxed oc-markstream-host`,X={overflow:`wrap`},Z=j.memo(({content:e,part:t,messageId:n,className:r,isStreaming:i=!1,variant:a=`assistant`,onShowPopup:o,enableFileReferences:s=!0})=>{let f=m()?.currentTheme.metadata.variant===`dark`,{editor:g,runtime:_}=h(),x=v()??``,S=j.useRef(null),C=t?.id?`oc-ms-${t.id}`:`oc-ms-${n}`,w=b(e,`markstream:${a}`),T=!i,E=s&&!i,D=E?{effectiveDirectory:x,editor:g,preferRuntimeEditor:_.isVSCode,onShowPopup:o}:void 0,O=j.useRef(T);O.current=T;let k=j.useRef(w);k.current=w;let A=l(e=>{if(!O.current)return;let t=e[0];if(!t)return;let n=t.borderBoxSize?.[0],r=n?n.blockSize:t.contentRect.height,i=n?n.inlineSize:t.contentRect.width;y(k.current,r,i)});d(S,A);let M=l(e=>{P(e,{onShowPopup:o,fileReference:D})}),N=l(e=>{F(e,{fileReference:D})});return u(`click`,M,S),u(`keydown`,N,S),(0,z.jsx)(`div`,{ref:S,className:p(`relative break-words w-full min-w-0`,Y(a),r),"data-markdown-ready":`true`,"data-markdown-hydration":`ready`,"data-oc-markdown-engine":`markstream`,"data-oc-markstream-virtual":`off`,children:(0,z.jsx)(U,{enabled:E,effectiveDirectory:x,editor:g,preferRuntimeEditor:_.isVSCode,onShowPopup:o,content:e,children:(0,z.jsx)(c,{content:e,customId:C,final:!i,isDark:f,codeBlockOptions:X,codeBlockStream:i,...J})})})},(e,t)=>e.content===t.content&&e.isStreaming===t.isStreaming&&e.disableStreamAnimation===t.disableStreamAnimation&&e.variant===t.variant&&e.isAnimated===t.isAnimated&&e.skipFadeIn===t.skipFadeIn&&e.className===t.className&&e.messageId===t.messageId&&e.onShowPopup===t.onShowPopup&&e.enableFileReferences===t.enableFileReferences&&e.part?.id===t.part?.id);export{Z as MarkstreamRenderer};
|
|
@@ -1,4 +0,0 @@
|
|
|
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","assets/useAssistantUIStore-BHacrxe_.js","assets/useUIStore-CqqO11ZI.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,C as r,E as i,Q as a,T as o,X as s,j as c,q as l,w as u}from"./useUIStore-CqqO11ZI.js";import{Ot as d,bt as f,et as p,kn as m,nt as h,yt as g}from"./persistence-CSZp1CNB.js";import{nt as _,rt as v}from"./vendor-base-ui-CnHfUmDN.js";import{n as y,r as b}from"./platform-CenlWqxu.js";import{a as ee,n as x,o as te,t as ne}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as re}from"./vendor-react-DLPElpoQ.js";import{n as S}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as ie}from"./clipboard-BXxLshVq.js";import{r as ae,wo as C}from"./useMobileNavigationStore-C-EBQ7Zt.js";import{_ as oe,a as w,i as se,l as ce,o as le,t as ue,y as de}from"./MobileDetailNavigation-DXLN8AfE.js";import{i as T,n as fe}from"./useAssistantUIStore-BHacrxe_.js";import{n as pe,t as me}from"./dialog-BkhHBTd4.js";import{t as he}from"./AgentAvatar-DI2zs2WH.js";import{n as ge}from"./Icon-4My8YZwt.js";var _e=re(),E=e(v(),1),ve=`openchamber.mobile.connections.v1`,ye=`openchamber.mobile.`,be=`openchamber.mobile.deviceId`,xe=()=>{try{let e=window.localStorage.getItem(be);if(e&&e.trim())return e.trim();let t=p();return window.localStorage.setItem(be,t),t}catch{return p()}},Se=()=>`mobile:${xe()}`,Ce=()=>{try{let e=x.getPlatform();return e===`ios`||e===`android`?e:void 0}catch{return}},we=12,Te=8e3,Ee=2500,De=3e3,Oe=2500,D=e=>{let t=e.trim();if(!t)return``;let n=/^https?:\/\//i.test(t)?t:`http://${t}`,r=new URL(n);return r.hash=``,r.search=``,r.pathname=r.pathname.replace(/\/+$/,``),r.toString().replace(/\/+$/,``)},ke=e=>{try{return new URL(e).host}catch{return e}},O=e=>{try{return D(e)}catch{return e.trim().replace(/\/+$/g,``)}},Ae=(e,t)=>O(e)===O(t),je=e=>`relay:${e.serverId}@${e.relayUrl.trim()}`,Me=e=>`relay://${e.serverId}`,Ne=e=>e.candidates.filter(e=>e.kind===`direct`),k=e=>{let t=e.candidates.find(e=>e.kind===`relay`);return t&&t.kind===`relay`?t.relay:null},A=e=>{let t=Ne(e)[0];if(t)return t.url;let n=k(e);return n?Me(n):``},j=e=>{let t=k(e);if(t)return je(t);let n=Ne(e)[0];return n?O(n.url):``},Pe=j,Fe=(e,t)=>{let n=e.find(e=>e.kind===`relay`),r=n&&n.kind===`relay`?n.relay.serverId:null,i=n&&n.kind===`relay`?n.relay.relayUrl.trim():null,a=new Set(e.filter(e=>e.kind===`direct`).map(e=>O(e.url)));return t.some(e=>e.kind===`relay`?r!==null&&e.relay.serverId===r&&e.relay.relayUrl.trim()===i:a.has(O(e.url)))},Ie=(e,t)=>t.id&&e.id===t.id?!0:Fe(e.candidates,t.candidates),Le=e=>{let t=(()=>{try{return D(e)}catch{return``}})();return t?[{kind:`direct`,url:t}]:[]},Re=e=>{if(e.candidates&&e.candidates.length>0)return e.candidates;let t=[];return typeof e.url==`string`&&e.url.trim()&&!/^relay:\/\//i.test(e.url.trim())&&t.push(...Le(e.url)),e.relay&&t.push({kind:`relay`,relay:e.relay}),t},ze=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;if(typeof t.relayUrl!=`string`||!t.relayUrl.trim()||typeof t.serverId!=`string`||!t.serverId.trim())return null;let n=t.hostEncPubJwk;if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=n;return r.kty!==`EC`||r.crv!==`P-256`||typeof r.x!=`string`||!r.x||typeof r.y!=`string`||!r.y?null:{relayUrl:t.relayUrl,serverId:t.serverId,hostEncPubJwk:{kty:`EC`,crv:`P-256`,x:r.x,y:r.y}}},M=e=>{try{return JSON.stringify(e)}catch{return String(e)}},N=(e,t={})=>{M(t)},P=(e,t={})=>{M(t)},Be=e=>{if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}},Ve=e=>{if(typeof e!=`string`)return e??void 0;try{return JSON.parse(e)}catch{return e}},He=async(e,t)=>{if(!y())return null;try{let{CapacitorHttp:n}=await te(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([0,1])),r=Object.fromEntries(new Headers(t?.headers).entries()),i=await n.request({url:e,method:t?.method||`GET`,headers:r,data:Ve(t?.body)});return{ok:i.status>=200&&i.status<300,status:i.status,source:`native-http`,json:async()=>Be(i.data)}}catch(t){return console.warn(`[mobile-connect]`,`native-http failed`,M({url:e,error:t instanceof Error?t.message:String(t)})),null}},Ue=async(e,t)=>{let n=await fetch(e,t).catch(t=>(console.warn(`[mobile-connect]`,`browser-fetch failed`,M({url:e,error:t instanceof Error?t.message:String(t)})),null));return n?{ok:n.ok,status:n.status,source:`browser-fetch`,json:()=>n.json()}:null},F=async(e,t,n)=>{let r,i=new Promise(t=>{r=window.setTimeout(()=>{n?.(),t(null)},e)});try{return await Promise.race([t,i])}catch{return null}finally{r!==void 0&&window.clearTimeout(r)}},I=async(e,t,n)=>{let r=n?.totalTimeoutMs??Te,i=Date.now(),a=await F(Math.min(Ee,r),He(e,t));if(a)return a;let o=new AbortController;return F(Math.max(500,r-(Date.now()-i)),Ue(e,{...t,signal:o.signal}),()=>o.abort())},We=async e=>{if(!e)return null;let t=await e.json().catch(()=>null);if(!t||typeof t!=`object`)return null;let n=t;return{authenticated:typeof n.authenticated==`boolean`?n.authenticated:void 0,disabled:typeof n.disabled==`boolean`?n.disabled:void 0,scope:typeof n.scope==`string`?n.scope:void 0}},L=15e3,Ge=async(e,t,n,r=L,i)=>{let o=a({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...n?{grant:n}:{}}),s=e=>e===`ok`&&i?.keepTunnel?{outcome:e,tunnel:o}:(o.close(),{outcome:e});try{let e=t?{Authorization:`Bearer ${t}`}:void 0,n=await F(r,o.fetch(`/auth/session`,{headers:e}).catch(()=>null));if(N(`relay:session`,{ok:n?.ok===!0,status:n?.status??null,hasToken:!!t}),!n)return s(`unreachable`);if(n.status===401)return s(t?`auth-failed`:`needs-login`);if(!n.ok&&n.status!==404)return s(`auth-failed`);let i=await We(n);return i&&i.disabled!==!0&&i.authenticated===!1?s(t?`auth-failed`:`needs-login`):s(`ok`)}catch(e){throw o.close(),e}},Ke=(e,t,n,r,i)=>{let a=typeof window<`u`?window.location.origin:``,o={relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk,...n?{grant:n}:{}};i&&l(o,i),c({apiBaseUrl:a,clientToken:t,runtimeKey:r??je(e),relay:o})},qe=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(t.kind===`direct`)return typeof t.url==`string`&&t.url.trim()?{kind:`direct`,url:t.url}:null;if(t.kind===`relay`){let e=ze(t.relay);return e?{kind:`relay`,relay:e}:null}return null},Je=e=>{if(e.mode===`relay`){let t=ze(e.relay);return t?[{kind:`relay`,relay:t}]:[]}return typeof e.url==`string`?Le(e.url):[]},R=()=>{if(typeof window>`u`)return[];let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return[]}if(!Array.isArray(e))return[];let t=y();return e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let n=e;if(typeof n.id!=`string`)return[];let r=Array.isArray(n.candidates)?n.candidates.map(qe).filter(e=>!!e):Je(n);if(r.length===0)return[];let i=typeof n.clientToken==`string`&&n.clientToken.trim()?n.clientToken:void 0,a=typeof n.label==`string`&&n.label.trim()?n.label:ke(A({candidates:r})),o={id:n.id,label:a,candidates:r,lastUsedAt:typeof n.lastUsedAt==`number`?n.lastUsedAt:0};return t?[{...o,hasToken:!!n.hasToken||!!i}]:[{...o,clientToken:i,hasToken:!!i}]}).sort((e,t)=>t.lastUsedAt-e.lastUsedAt)},Ye=e=>e.kind===`relay`?{kind:`relay`,relay:{relayUrl:e.relay.relayUrl,serverId:e.relay.serverId,hostEncPubJwk:e.relay.hostEncPubJwk}}:{kind:`direct`,url:e.url},Xe=e=>{if(typeof window>`u`)return;let t=y(),n=e.slice(0,we).map(e=>{let n={id:e.id,label:e.label,candidates:e.candidates.map(Ye),lastUsedAt:e.lastUsedAt};return t?{...n,hasToken:!!(e.hasToken||e.clientToken)}:{...n,clientToken:e.clientToken}});try{window.localStorage.setItem(ve,JSON.stringify(n))}catch(e){console.warn(`[mobile-storage] failed to persist connection metadata`,e)}},Ze=(e,t)=>{let n=e.find(e=>Ie(e,t)),r=y(),i={id:t.id||n?.id||p(),label:t.label,candidates:t.candidates,lastUsedAt:Date.now(),...r?{hasToken:t.hasToken??(!!t.clientToken||n?.hasToken||!1)}:{clientToken:t.clientToken??n?.clientToken,hasToken:!!(t.clientToken??n?.clientToken)}};return[i,...e.filter(e=>e.id!==i.id&&!Ie(e,t))].slice(0,we)},Qe=ne,$e=0,et=e=>`${ye}token.${encodeURIComponent(e)}`,tt=async(e,t)=>{let n,r=new Promise(e=>{n=window.setTimeout(()=>e(t),De)});try{return await Promise.race([e.catch(()=>t),r])}finally{n!==void 0&&window.clearTimeout(n)}},nt=async(e,t,n)=>y()?tt(t().catch(t=>(console.warn(`[mobile-storage] ${e} failed`,t),n)),n):n,z=async e=>{P(`secure:read-start`,{key:e});let t=await nt(`secure:read`,async()=>(await Qe.internalGetItem({prefixedKey:et(e),sync:!1})).data,null),n=typeof t==`string`&&t.trim()?t:void 0;return P(`secure:read`,{key:e,hasToken:!!n}),n},B=async(e,t)=>{P(`secure:write-start`,{key:e});let n=await nt(`secure:write`,async()=>(await Qe.internalSetItem({prefixedKey:et(e),data:t,sync:!1,access:$e}),!0),!1);return P(`secure:write`,{key:e,ok:n}),n},rt=async e=>{await nt(`secure:delete`,async()=>(await Qe.internalRemoveItem({prefixedKey:et(e),sync:!1}),!0),!1)},it=async()=>{if(typeof window>`u`||!y())return;let e;try{e=JSON.parse(window.localStorage.getItem(ve)||`[]`)}catch{return}if(!Array.isArray(e))return;let t=e.filter(e=>!!e&&typeof e==`object`&&typeof e.url==`string`&&typeof e.clientToken==`string`&&!!e.clientToken.trim());if(t.length!==0){P(`secure:migrate-start`,{count:t.length});for(let{url:e,clientToken:n}of t)await B(O(e),n);Xe(R()),P(`secure:migrate-done`,{count:t.length})}},at=async()=>(await it(),R()),V=async e=>{let t=Ze(R(),e);if(Xe(t),y()&&e.clientToken){let n=t[0];n&&await B(j(n),e.clientToken)}return t},ot=async e=>{let t=R(),n=t.find(t=>t.id===e)??null,r=t.filter(t=>t.id!==e);if(Xe(r),n&&y()&&await rt(j(n)),n){let e=j(n),{useAssistantUIStore:t}=await te(async()=>{let{useAssistantUIStore:e}=await import(`./useAssistantUIStore-BHacrxe_.js`).then(e=>e.a);return{useAssistantUIStore:e}},__vite__mapDeps([2,1,3,4,5]));t.getState().removeCatalogPartition(e);let{publishNativeAssistantCatalog:r}=await te(async()=>{let{publishNativeAssistantCatalog:e}=await Promise.resolve().then(()=>en);return{publishNativeAssistantCatalog:e}},void 0);await r().catch(()=>void 0)}return r},st=1500,H=async(e,t,n)=>{let r=n?.fast?{totalTimeoutMs:Oe}:void 0,i=k({candidates:e})?.serverId??null,a=e.find(e=>e.kind===`relay`)??null,o=e.filter(e=>e.kind===`direct`),s=async()=>{for(let e of o){let n=D(e.url)||e.url,a=t?{Authorization:`Bearer ${t}`}:void 0,o=await I(`${n}/health`,{method:`GET`},r);if(!o?.ok)continue;if(i){let e=await o.json().catch(()=>null),t=e&&typeof e==`object`?e.serverId:null;if(typeof t==`string`&&t&&t!==i){N(`probe:server-id-mismatch`,{url:n});continue}}let s=await I(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:a},r);if(s?.status===401)return{status:`needs-login`};if(!s||!s.ok&&s.status!==404)continue;let c=await We(s);if(c&&c.disabled!==!0&&c.authenticated===!1)return{status:`needs-login`};let l=c?.disabled===!0;return!t&&y()&&!l&&c?.scope!==`client`?{status:`needs-login`}:{status:`ok`,transport:{kind:`direct`,url:n}}}return{status:`unreachable`}},c=async()=>{if(!a)return{status:`unreachable`};let{outcome:e,tunnel:r}=await Ge(a.relay,t,void 0,n?.fast?Oe:void 0,{keepTunnel:!0});return e===`ok`?{status:`ok`,transport:{kind:`relay`,relay:a.relay,tunnel:r}}:e===`needs-login`||e===`auth-failed`?{status:`needs-login`}:{status:`unreachable`}};return a?o.length===0?c():new Promise(e=>{let t=!1,n=!1,r,i=null,a=null,o=e=>{e?.status===`ok`&&e.transport.kind===`relay`&&e.transport.tunnel?.close()},l=n=>{t||(t=!0,e(n))},u=()=>{n||t||(r!==void 0&&(window.clearTimeout(r),r=void 0),c().then(e=>{if(a=e,t||n){o(e);return}if(e.status===`ok`||e.status===`needs-login`){l(e);return}i&&l(i)}))};s().then(e=>{if(i=e,!t){if(e.status===`ok`||e.status===`needs-login`){n=!0,r!==void 0&&window.clearTimeout(r),o(a),l(e);return}if(a){l(a);return}u()}}),r=window.setTimeout(u,st)}):s()},U=(e,t,n)=>{e.kind===`relay`?Ke(e.relay,t,n?.grant,n?.runtimeKey,e.tunnel):c({apiBaseUrl:e.url,clientToken:t,runtimeKey:n?.runtimeKey}),St()},ct=()=>{let e=R()[0];return e?.label?.trim()?e.label:null},lt=async()=>{await it();let e=R()[0];if(!e)return!1;let t;if(y()){if(!e.hasToken||(t=await z(j(e)),!t))return!1}else if(t=e.clientToken,!t)return!1;let n=await H(e.candidates,t);return n.status===`ok`&&(await V({id:e.id,label:e.label,candidates:e.candidates}),U(n.transport,t,{runtimeKey:j(e)}),!0)},ut=async(e,t)=>{let n=(await at()).find(t=>j(t)===e);if(!n)return`missing`;let r=y()?n.hasToken?await z(e):void 0:n.clientToken;if(!r)return`auth-required`;let i=t?.transportPreference===`relay`?n.candidates.filter(e=>e.kind===`relay`):n.candidates;if(i.length===0)return`offline`;let a=await H(i,r,{fast:!0});return a.status===`needs-login`?`auth-required`:a.status===`ok`?(U(a.transport,r,{runtimeKey:e}),`connected`):`offline`},dt=async(e,t)=>{let n=``;try{n=D(e.url)}catch{return!1}if(!n)return!1;let r=e.clientToken?.trim()||void 0,i=r?{Authorization:`Bearer ${r}`}:void 0,a=t?.fast?{totalTimeoutMs:Oe}:void 0;if(!(await I(`${n}/health`,{method:`GET`,headers:i},a))?.ok)return!1;let o=await I(`${n}/auth/session`,{method:`GET`,credentials:`include`,headers:i},a);if(!o||!o.ok&&o.status!==404)return!1;let s=await We(o);return!(s&&s.disabled!==!0&&s.authenticated===!1)},ft=e=>[...e].sort((e,t)=>{let n=(e.priority??100)-(t.priority??100);if(n!==0)return n;let r=e=>e.type===`relay`?2:+!e.url.startsWith(`https://`);return r(e)-r(t)}).flatMap(e=>{if(e.type===`relay`){let t=ze({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk});return t?[{kind:`relay`,relay:t}]:[]}return Le(e.url)}),pt=async e=>{let t=k({candidates:e})?.serverId??null;for(let n of e){if(n.kind===`relay`){let e=a(n.relay),t=await F(L,e.fetch(`/health`).catch(()=>null));if(N(`establish:relay:health`,{ok:t?.ok===!0,status:t?.status??null}),t?.ok)return{kind:`relay`,relay:n.relay,tunnel:e};e.close();continue}let e=D(n.url)||n.url,r=await I(`${e}/health`,{method:`GET`});if(N(`establish:direct:health`,{ok:r?.ok===!0,status:r?.status??null}),r?.ok){if(t){let n=await r.json().catch(()=>null),i=n&&typeof n==`object`?n.serverId:null;if(typeof i==`string`&&i&&i!==t){N(`establish:server-id-mismatch`,{url:e});continue}}return{kind:`direct`,url:e}}}return null},mt=async(e,t)=>{if(!s())return dt(e,t);let n=await F(t?.fast?Oe:L,m(`/auth/session`).then(e=>e).catch(()=>null));if(!n)return!0;if(n.status===401)return!1;if(!n.ok&&n.status!==404)return!0;let r=await We(n);return!(r&&r.disabled!==!0&&r.authenticated===!1)},ht=e=>e.kind===`relay`?s():!s()&&Ae(e.url,r()),gt=()=>{let e=o();return e?R().find(t=>j(t)===e)??null:null},_t=e=>{let t=o();return!!t&&j(e)===t},vt=async()=>{let e=gt();if(!e)return`no-connection`;let t;if(t=y()?e.hasToken?await z(j(e)):void 0:e.clientToken,!t)return`unreachable`;let n=e.candidates.findIndex(e=>ht(e.kind===`relay`?{kind:`relay`,relay:e.relay}:{kind:`direct`,url:e.url})),i=await H(n>=0?e.candidates.slice(0,n):e.candidates,t,{fast:!0});if(i.status===`ok`)return await V({id:e.id,label:e.label,candidates:e.candidates}),U(i.transport,t,{runtimeKey:j(e)}),`switched`;if(i.status===`needs-login`)return`unreachable`;if(n>=0&&await mt({url:r(),clientToken:t},{fast:!0}))return St(),`unchanged`;let a=await H(n>=0?e.candidates.slice(n+1):[],t,{fast:!0});return a.status===`ok`?(await V({id:e.id,label:e.label,candidates:e.candidates}),U(a.transport,t,{runtimeKey:j(e)}),`switched`):`unreachable`},yt=5e3,bt=!1,xt=async()=>{if(bt)return`skipped`;let e=gt();if(!e)return N(`candidates:refresh-skip`,{reason:`no-active-connection`}),`skipped`;let t=k(e);if(!t)return N(`candidates:refresh-skip`,{reason:`no-relay-candidate`}),`skipped`;bt=!0;try{let n=await F(L,m(`/api/client-auth/connection/candidates`).then(e=>e).catch(()=>null));if(!n?.ok)return N(`candidates:refresh-skip`,{reason:`fetch-failed`,status:n?.status??null}),`skipped`;let r=await n.json().catch(()=>null);if(!r||r.serverId!==t.serverId)return N(`candidates:refresh-skip`,{reason:`server-id-mismatch`}),`skipped`;let i=Array.isArray(r.candidates)?r.candidates:[],a=[];for(let e of i){if(!e||typeof e!=`object`)continue;let t=e;if(t.type===`lan`&&typeof t.url==`string`)try{let e=D(t.url);e&&!a.includes(e)&&a.push(e)}catch{}}if(a.length===0)return N(`candidates:refresh-skip`,{reason:`no-lan-reported`}),`skipped`;let o=Ne(e).filter(e=>e.url.startsWith(`https://`)),s=[...a.map(e=>({kind:`direct`,url:e})),...o,{kind:`relay`,relay:t}];return JSON.stringify(e.candidates.map(Ye))===JSON.stringify(s.map(Ye))?`unchanged`:(N(`candidates:refreshed`,{lanCount:a.length}),await V({id:e.id,label:e.label,candidates:s}),`updated`)}finally{bt=!1}},St=()=>{typeof window>`u`||window.setTimeout(()=>{(async()=>{let e=await xt().catch(()=>`skipped`);N(`candidates:refresh-result`,{result:e}),e===`updated`&&s()&&await vt().catch(()=>null)})()},yt)},Ct=e=>{let{t}=ie(),[n,r]=E.useState(()=>R()),[i,a]=E.useState(null),[o,s]=E.useState(null),[c,l]=E.useState(null),u=E.useRef(n),d=E.useRef(null),f=E.useRef(new Set),m=S(()=>{e(),f.current.forEach(e=>e())}),h=S(e=>(f.current.add(e),()=>f.current.delete(e))),g=S(e=>{u.current=e,r(e)}),_=S(e=>{d.current=e,a(e)}),v=S(e=>{d.current===e&&(d.current=null,a(null))});E.useEffect(()=>{let e=!1;return at().then(t=>{e||g(t)}),()=>{e=!0}},[g]);let b=S(e=>{let t=Ze(u.current,e);return g(t),Xe(t),t}),ee=S(async e=>{s(null),_(`connect`);try{let n=Re(e);if(n.length===0){s(t(`mobile.connect.error.urlRequired`));return}let r=e.id?u.current.find(t=>t.id===e.id):u.current.find(e=>Fe(e.candidates,n)),i=e.label?.trim()||r?.label||ke(A({candidates:n})),a=e.relayGrant,o=e.clientToken?.trim()||void 0,c=!!o;o||(y()?r?.hasToken&&(o=await z(j(r))):o=r?.clientToken),N(`connect:start`,{candidates:n.map(e=>e.kind),hasToken:!!o});let d=await H(n,o);if(N(`connect:probe`,{status:d.status}),d.status===`unreachable`){s(t(`mobile.connect.error.unreachable`));return}if(d.status===`needs-login`){b({id:r?.id,label:i,candidates:n}),l({id:r?.id??p(),label:i,candidates:n,relay:k({candidates:n})??void 0,relayGrant:a});return}let f=j({candidates:n});o&&c&&y()&&await B(f,o),b({id:r?.id,label:i,candidates:n,clientToken:o}),U(d.transport,o??null,{runtimeKey:f,grant:a}),m()}catch(e){console.warn(`[mobile-connect] connect threw`,e),s(t(`mobile.connect.error.invalidUrl`))}finally{v(`connect`)}}),x=S(async e=>{if(d.current===`pairing`)return;s(null),_(`pairing`);let n=ft(e.candidates),r=null,i=!1;try{if(r=await pt(n),!r){s(t(`mobile.connect.error.unreachable`));return}let a={method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({pairingId:e.pairingId,secret:e.secret,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,deviceName:`OpenChamber Mobile`,devicePlatform:Ce(),dedupeKey:Se()})},o=r.kind===`relay`?await F(L,r.tunnel.fetch(`/api/client-auth/pairing/redeem`,a).catch(()=>null)):await I(`${r.url}/api/client-auth/pairing/redeem`,a);if(!o?.ok){s(t(`mobile.connect.error.authRequired`));return}let c=await o.json().catch(()=>null),l=typeof c?.clientToken==`string`?c.clientToken.trim():``;if(!l){s(t(`mobile.connect.error.authRequired`));return}let u=typeof c?.server?.label==`string`?c.server.label:``,d=e.label||u||ke(A({candidates:n})),f=j({candidates:n});if(y()&&!await B(f,l)){s(t(`mobile.connect.error.authRequired`));return}b({label:d,candidates:n,clientToken:l}),U(r.kind===`relay`?{kind:`relay`,relay:r.relay,tunnel:r.tunnel}:{kind:`direct`,url:r.url},l,{runtimeKey:f}),i=r.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] pairing threw`,e),s(t(`mobile.connect.error.authRequired`))}finally{!i&&r?.kind===`relay`&&r.tunnel.close(),v(`pairing`)}}),te=S(async e=>{if(!c||!e.trim()||d.current===`password`)return;s(null),_(`password`);let{id:n,label:r,candidates:i}=c,a=null,o=!1;try{if(a=await pt(i),!a){s(t(`mobile.connect.error.unreachable`));return}let c={method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({password:e,trustDevice:!0,issueClientToken:!0,clientLabel:`OpenChamber Mobile`,clientKind:`mobile`,devicePlatform:Ce(),dedupeKey:Se()})};N(`password:start`,{transport:a.kind});let u=a.kind===`relay`?await F(L,a.tunnel.fetch(`/auth/session`,c).catch(()=>null)):await I(`${a.url}/auth/session`,c);if(N(`password:done`,{ok:u?.ok===!0,status:u?.status??null}),!u?.ok){s(t(`mobile.connect.error.passwordFailed`));return}let d=await u.json().catch(()=>null),f=typeof d?.clientToken==`string`?d.clientToken.trim():``;if(N(`password:token`,{issued:!!f}),!f){if(a.kind===`direct`&&!y()){b({id:n,label:r,candidates:i}),l(null),U({kind:`direct`,url:a.url},null,{runtimeKey:j({candidates:i})}),m();return}s(t(`mobile.connect.error.authRequired`));return}y()&&await B(j({candidates:i}),f),b({id:n,label:r,candidates:i,clientToken:f}),l(null),U(a.kind===`relay`?{kind:`relay`,relay:a.relay,tunnel:a.tunnel}:{kind:`direct`,url:a.url},f,{runtimeKey:j({candidates:i})}),o=a.kind===`relay`,m()}catch(e){console.warn(`[mobile-connect] password threw`,e),s(t(`mobile.connect.error.passwordFailed`))}finally{!o&&a?.kind===`relay`&&a.tunnel.close(),v(`password`)}}),ne=S(()=>{l(null),s(null)}),re=S(async e=>{s(null);let n=Re(e),r=e.id?u.current.find(t=>t.id===e.id)??null:null;if(r){let e=n.filter(e=>e.kind===`direct`),t=Ne(r).filter(t=>t.url.startsWith(`https://`)&&!e.some(e=>Ae(e.url,t.url))),i=k(r);n=[...e,...t,...i?[{kind:`relay`,relay:i}]:[]]}if(n.length===0)return s(t(`mobile.connect.error.urlRequired`)),null;let i=e.clientToken?.trim()||void 0,a=e.label?.trim()||ke(A({candidates:n}));if(y()){let e=j({candidates:n});if(i)await B(e,i);else if(r?.hasToken){let t=j(r);if(t&&e&&t!==e){let n=await z(t);n&&await B(e,n)}}}return b({id:e.id,label:a,candidates:n,clientToken:i}).find(e=>Fe(e.candidates,n))??null}),ae=S(async e=>{let t=u.current.find(t=>t.id===e)??null,n=await ot(e);return g(n),t});return{connections:n,isBusy:i!==null,isPasswordBusy:i===`password`,error:o,pendingConnection:c,connect:ee,redeemPairingConnection:x,submitPassword:te,cancelPassword:ne,saveConnection:re,removeConnection:ae,subscribeConnected:h,setError:s}},wt=async(e,t=3)=>{let n;for(let r=0;r<t;r+=1)try{await e();return}catch(e){n=e}throw n},Tt=async(e,t,n=2)=>{let r=[...new Map(e.map(e=>[e.operationID,e])).values()],i=0;await Promise.all(Array.from({length:Math.min(Math.max(1,n),r.length)},async()=>{for(;i<r.length;){let e=r[i++];try{e.cleanupPhase&&e.cleanupPhase!==`files-released`?await t.cleanup(e.operationID):await t.deliver(e.operationID)}catch{}}}))},Et=e=>!!(e.serverInstanceID&&e.assistantID&&e.name&&e.avatarSeed&&e.serverLabel&&e.connectionKey),Dt=`openchamber.mobile-share.draft-handoff.v1`,Ot=`mobile-share-handoff:`,kt=20971520,At=20971520,jt=e=>`${Ot}${e}`,Mt=e=>e??(typeof window>`u`?null:window.localStorage),W=e=>{if(!e)return{};try{let t=JSON.parse(e.getItem(`openchamber.mobile-share.draft-handoff.v1`)||`{}`);return Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{let n=typeof t.assistantID==`string`?t.assistantID:zt(t),r=typeof t.transportIdentity==`string`?t.transportIdentity:t.targetDraftKey?.transportIdentity;if(!n||typeof t.serverInstanceID!=`string`||typeof t.connectionKey!=`string`||!r)return[];let i=t.phase===`cancelled`?`cancelled`:t.phase===`materialized`?`materialized`:`materializing`;return[[e,{...t,draftID:e,assistantID:n,transportIdentity:r,phase:i}]]}))}catch{return{}}},Nt=(e,t)=>{if(!e)return!1;try{return e.setItem(Dt,JSON.stringify(t)),!0}catch{return!1}},Pt=(e,t)=>{let n=W(e);if(delete n[t],e)try{e.setItem(Dt,JSON.stringify(n))}catch{return}},G=(e,t)=>Nt(e,{...W(e),[t.draftID]:t}),Ft=(e,t)=>`native-share:${e}:${t}`,It=(e,t)=>t?e?`${e}\n\n${t}`:t:e,Lt=e=>e.mime.startsWith(`image/`)&&e.byteSize>0&&e.byteSize<=kt,Rt=(e,t)=>!!t?.syntheticParts.some(t=>t.partID===jt(e.draftID)&&t.text===``&&t.attachments.length===0&&t.synthetic===!0),zt=e=>{let t=e.targetDraftKey?.owner;return t?.kind!==`surface`||typeof t.ownerID!=`string`||!t.ownerID.startsWith(`assistant:`)?null:t.ownerID.slice(10)||null},Bt=e=>({draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:e.transportIdentity}),Vt=async(e,t)=>{let n=Mt(t),r=[];for(let t of Object.values(W(n))){if(t.phase===`cancelled`){r.push(Bt(t));continue}if(t.phase===`materialized`)try{await e(t.draftID);let i={...t,phase:`cancelled`};if(!G(n,i))continue;r.push(Bt(i))}catch{continue}}return r},Ht=(e,t)=>{let n=Mt(t),r=W(n)[e.draftID];return!r||r.phase!==`cancelled`||r.serverInstanceID!==e.serverInstanceID||r.connectionKey!==e.connectionKey||r.assistantID!==e.assistantID||r.transportIdentity!==e.transportIdentity?!1:(Pt(n,e.draftID),!W(n)[e.draftID])},Ut=async(e,t)=>{let n=d({transportIdentity:e.transportIdentity},`assistant:${e.assistantID}`),r=t.captureDraftRuntime();if(r.transportIdentity!==e.transportIdentity)return!1;let i=t.getDraft(n),a=jt(e.draftID);try{if(!i||!i.syntheticParts.some(e=>e.partID===a)){await t.flushDraftPersistence();let n=t.captureDraftRuntime();return n.transportIdentity===e.transportIdentity&&n.generation===r.generation}let o=await t.commitDraftSnapshot({key:n,expectedRevision:i.revision,runtime:r,values:new Map,snapshot:{text:i.text,attachments:i.attachments,syntheticParts:i.syntheticParts.filter(e=>e.partID!==a),mentions:i.mentions,...i.composerReferences===void 0?{}:{composerReferences:i.composerReferences}}});if(!o.current||!o.durable)return!1;await t.flushDraftPersistence();let s=t.captureDraftRuntime();return s.transportIdentity===e.transportIdentity&&s.generation===r.generation}catch{return!1}},Wt=async(e,t)=>{if(e.attachments.length>10||!e.attachments.every(Lt)||e.attachments.reduce((e,t)=>e+t.byteSize,0)>At)throw Error(`invalid_share_attachment`);let n=Mt(t.storage),r=d({transportIdentity:t.transportIdentity},`assistant:${e.assistantID}`),i=W(n)[e.draftID],a=!1;if(!i||g(i.targetDraftKey)!==g(r)){let a=t.input.getDraft(r);if(i={draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:t.transportIdentity,targetDraftKey:r,baseRevision:a?.revision??`absent`,resultText:It(a?.text??``,e.text),attachmentIDs:e.attachments.map((t,n)=>Ft(e.draftID,n)),phase:`materializing`},!G(n,i))throw Error(`handoff_journal_unavailable`)}if(i.phase===`cancelled`)return{durable:!0,cancelled:!0};(i.phase===`materialized`||Rt(i,t.input.getDraft(r)))&&(a=!0);for(let o=0;!a&&o<3;o++){let o=t.input.getDraft(r),s={...i,baseRevision:o?.revision??`absent`,resultText:It(o?.text??``,e.text),phase:`materializing`};if(!G(n,s))throw Error(`handoff_journal_unavailable`);i=s;let c=new Map,l=[];for(let n=0;n<e.attachments.length;n++){let r=e.attachments[n],a=i.attachmentIDs[n],o=f(a),s=await t.readAttachment(r);if(s.size!==r.byteSize)throw Error(`staged_file_unavailable`);c.set(o,s.type===r.mime?s:new Blob([s],{type:r.mime})),l.push({attachmentID:a,attachmentRefID:o,filename:r.originalName,mimeType:r.mime,size:r.byteSize,locator:{kind:`blob`,blobID:a},source:`local`})}let u={partID:jt(e.draftID),text:``,attachments:[],synthetic:!0},d=o?.syntheticParts??[],p=await t.input.commitDraftSnapshot({key:r,expectedRevision:o?.revision??`absent`,runtime:t.input.captureDraftRuntime(),snapshot:{text:i.resultText,attachments:[...o?.attachments??[],...l],syntheticParts:d.some(e=>e.partID===u.partID)?d:[...d,u],mentions:o?.mentions??[],...o?.composerReferences===void 0?{}:{composerReferences:o.composerReferences}},values:c});if(p.durable&&p.current)a=!0;else if(p.status!==`conflict`)throw Error(`draft_handoff_${p.status}`)}if(!a)throw Error(`draft_handoff_conflict`);if(i.phase!==`materialized`&&(i={...i,phase:`materialized`},!G(n,i)))throw Error(`handoff_journal_unavailable`);try{await t.cancelDraft(e.draftID)}catch{return{durable:!0,cancelled:!1}}if(i={...i,phase:`cancelled`},!G(n,i))throw Error(`handoff_journal_unavailable`);return{durable:!0,cancelled:!0}},Gt=ee(`OpenChamberShare`),Kt=null,qt=(e,t)=>o()===e&&u()===t,Jt=e=>{if(b()){fe(e);return}let t=ae.getState();t.setActiveTab(`assistant`),t.openAssistant(e)},Yt=async()=>{let e=(await Gt.pendingAssistantOpen().catch(()=>null))?.request;if(!e)return!1;let t=await ut(e.connectionKey);if(t===`missing`)return await Gt.ackAssistantOpen({requestID:e.requestID}).catch(()=>void 0),!0;if(t!==`connected`)return!0;let n=u();if(!qt(e.connectionKey,n))return!0;try{let[t,r]=await Promise.all([w(),le()]);if(!qt(e.connectionKey,n))return!0;let i=r.assistants.some(t=>t.id===e.assistantID&&t.enabled);if(!t.supported||!t.enabled||t.serverInstanceID!==e.serverInstanceID||!i)return await Gt.ackAssistantOpen({requestID:e.requestID}),!0;Jt(e.assistantID),await Gt.ackAssistantOpen({requestID:e.requestID})}catch{}return!0},K=async()=>x.getPlatform()===`android`?Kt||(Kt=Yt().finally(()=>{Kt=null}),Kt):!1,Xt=new Intl.Segmenter(void 0,{granularity:`grapheme`}),Zt=/(?:\p{Extended_Pictographic}|\p{Regional_Indicator}|\u20e3)/u,Qt=e=>{let t=Xt.segment(e)[Symbol.iterator]().next().value?.segment;return!t||!Zt.test(t)?{displayName:e}:{avatarEmoji:t,displayName:e.slice(t.length).trimStart()}},q=_();function $t(e){let t=(0,_e.c)(30),{draft:n,entries:r,busy:i,onSelect:a,onCancel:o}=e,{t:s}=ie(),c;t[0]!==i||t[1]!==n||t[2]!==o?(c=()=>{n&&!i&&o(n)},t[0]=i,t[1]=n,t[2]=o,t[3]=c):c=t[3];let l=S(c),u;t[4]===l?u=t[5]:(u=e=>{e||l()},t[4]=l,t[5]=u);let d=S(u),f;t[6]!==n||t[7]!==a?(f=e=>{n&&a(n,e)},t[6]=n,t[7]=a,t[8]=f):f=t[8];let p=S(f),m=!!n,h;t[9]===s?h=t[10]:(h=s(`assistants.shareWelcome.example.note.title`),t[9]=s,t[10]=h);let g;t[11]===s?g=t[12]:(g=s(`settings.common.actions.cancel`),t[11]=s,t[12]=g);let _;t[13]!==i||t[14]!==l||t[15]!==h||t[16]!==g?(_=(0,q.jsx)(ue,{title:h,backAriaLabel:g,onBack:l,backDisabled:i,overlay:!0}),t[13]=i,t[14]=l,t[15]=h,t[16]=g,t[17]=_):_=t[17];let v;t[18]!==i||t[19]!==r||t[20]!==p||t[21]!==s?(v=r.length?(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)]`,role:`listbox`,"aria-label":s(`assistants.listAria`),children:r.map(e=>{let t=Qt(e.name),n=t.displayName||e.name;return(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":`false`,disabled:i,className:`flex w-full items-center gap-3 border-b border-border/60 px-3 py-4 text-left text-foreground transition-colors last:border-b-0 hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-60`,onClick:()=>p(e),children:[(0,q.jsx)(he,{name:e.avatarSeed,emoji:t.avatarEmoji,size:36,label:n}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block truncate font-semibold`,children:n}),(0,q.jsx)(`span`,{className:`block truncate typography-small text-muted-foreground`,children:e.serverLabel})]}),(0,q.jsx)(ge,{name:`arrow-right-s`,className:`size-4 shrink-0 text-muted-foreground`})]},`${e.connectionKey}:${e.assistantID}`)})}):(0,q.jsx)(`p`,{className:`px-5 pb-[max(1.25rem,env(safe-area-inset-bottom))] pt-[calc(max(0.25rem,var(--oc-safe-area-top,0px))+var(--oc-mobile-detail-navigation-height,3.5rem)+0.75rem)] typography-ui text-muted-foreground`,children:s(`assistants.state.unavailable`)}),t[18]=i,t[19]=r,t[20]=p,t[21]=s,t[22]=v):v=t[22];let y;t[23]!==_||t[24]!==v?(y=(0,q.jsxs)(pe,{className:`h-[100dvh] max-h-none w-screen max-w-none gap-0 overflow-hidden rounded-none border-0 bg-background p-0`,containerClassName:`items-stretch p-0`,overlayClassName:`bg-background`,showCloseButton:!1,children:[_,v]}),t[23]=_,t[24]=v,t[25]=y):y=t[25];let b;return t[26]!==d||t[27]!==m||t[28]!==y?(b=(0,q.jsx)(me,{open:m,onOpenChange:d,children:y}),t[26]=d,t[27]=m,t[28]=y,t[29]=b):b=t[29],b}var en=t({MobileShareBridge:()=>Nn,donateNativeAssistantInteraction:()=>Sn,publishNativeAssistantCatalog:()=>xn,refreshNativeAssistantCatalog:()=>Q}),J=ee(`OpenChamberShare`),tn=`openchamber.mobile-share.outbox.v1`,nn=()=>x.isNativePlatform(),rn=()=>{try{return JSON.parse(window.localStorage.getItem(tn)||`{}`)}catch{return{}}},an=e=>{try{window.localStorage.setItem(tn,JSON.stringify(e))}catch{}},Y=e=>{let t=rn(),n=t[e.envelope.operationID];n&&n.updatedAt>e.updatedAt||(t[e.envelope.operationID]=e,an(t))},X=(e,t)=>o()===e&&u()===t,on=new Map,sn=null,cn=null,ln=!1,un=[],dn=0,fn=new Set,Z=new Map,pn=1,mn=e=>{e.map(e=>e.draftID).join(`
|
|
3
|
-
`)!==un.map(e=>e.draftID).join(`
|
|
4
|
-
`)&&(un=e,dn+=1,fn.forEach(e=>e()))},hn=e=>mn(un.filter(t=>t.draftID!==e)),gn=e=>(fn.add(e),()=>fn.delete(e)),_n=()=>dn,vn=async e=>{if(!e.mime.startsWith(`image/`))throw Error(`unsupported_share_attachment`);let t=e.stagedPath.trim();if(!t)throw Error(`staged_file_unavailable`);let n=/^(?:data:|https?:|content:|file:)/i.test(t)?t:`file://${t}`,r=/^(?:data:|https?:)/i.test(n)?n:x.convertFileSrc(n);return await fetch(r).then(e=>{if(!e.ok)throw Error(`staged_file_unavailable`);return e.blob()})},yn=async e=>{let t=await vn(e);return await new Promise((e,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`staged_file_unavailable`)),r.onload=()=>typeof r.result==`string`?e(r.result):n(Error(`staged_file_unavailable`)),r.readAsDataURL(t)})},bn=async e=>{let t=[];if(e.text?.trim()&&t.push({type:`text`,text:e.text}),e.attachments.length>10)throw Error(`too_many_share_attachments`);for(let n of e.attachments){if(n.byteSize<=0||n.byteSize>20971520)throw Error(`invalid_share_attachment`);t.push({type:`file`,mime:n.mime,url:await yn(n)})}if(t.length===0)throw Error(`empty_share`);return t},Q=async()=>{if(!nn())return;let e=o(),t=(await at()).find(t=>Pe(t)===e);if(!t)return;let n=u();try{let[r,i]=await Promise.all([w(),se()]);if(!X(e,n)||!r.supported||!r.serverInstanceID)return;let a=r.serverInstanceID,o=i.assistants.map(n=>({serverInstanceID:a,assistantID:n.id,name:n.name,avatarSeed:n.id,serverLabel:t.label,connectionKey:e,enabled:r.enabled&&n.enabled,isDefaultShareTarget:!1}));T.getState().replaceCatalogPartition({serverInstanceID:a,connectionKey:e,revision:i.revision,lastLoadedAt:Date.now(),entries:o}),await xn()}catch{}},xn=async()=>{if(!nn())return;let e=Object.values(T.getState().assistantCatalogByConnection).flatMap(e=>e.entries).map(e=>{let t=Qt(e.name);return{...e,name:t.displayName||e.name,...t.avatarEmoji?{avatarEmoji:t.avatarEmoji}:{}}});await J.updateCatalog({entries:e})},Sn=async e=>{x.getPlatform()===`ios`&&await J.donateAssistantInteraction(e)},Cn=e=>{let t=on.get(e.operationID);if(t)return t;let n=Tn(e);return on.set(e.operationID,n),n.finally(()=>{on.get(e.operationID)===n&&on.delete(e.operationID)}).catch(()=>void 0),n},wn=async e=>{e.cleanupPhase!==`files-released`&&(e.cleanupPhase===`server-completed`&&(await wt(()=>J.ack({operationID:e.envelope.operationID})),e={...e,state:`delivered`,cleanupPhase:`native-acked`,updatedAt:Date.now()},Y(e)),e.cleanupPhase===`native-acked`&&(await wt(()=>J.releaseFiles({operationID:e.envelope.operationID})),Y({...e,state:`delivered`,cleanupPhase:`files-released`,updatedAt:Date.now()})))},Tn=async e=>{let t=rn()[e.operationID];if(t?.cleanupPhase){await wn(t);return}let n=t?.messageID?t:{envelope:e,messageID:h(`msg`),state:t?.state??`pending`,cleanupPhase:t?.cleanupPhase,updatedAt:Date.now(),error:t?.error};Y(n),n={...n,state:`resolving-instance`,updatedAt:Date.now()},Y(n);let r=Object.values(T.getState().assistantCatalogByConnection).find(t=>t.serverInstanceID===e.serverInstanceID&&t.entries.some(t=>t.assistantID===e.assistantID));if(!r){Y({...n,state:`target-stale`,updatedAt:Date.now()});return}n={...n,state:`connecting`,updatedAt:Date.now()},Y(n);let a=await ut(r.connectionKey);if(a===`auth-required`){Y({...n,state:`auth-required`,updatedAt:Date.now()});return}if(a!==`connected`){Y({...n,state:`offline`,updatedAt:Date.now()});return}let o=u(),s=null;if(X(r.connectionKey,o)){try{if(await m(`/api/config/settings`).catch(()=>void 0),!X(r.connectionKey,o))return;let[t,a]=await Promise.all([w(),se()]);if(!X(r.connectionKey,o)||!t.supported||t.serverInstanceID!==e.serverInstanceID){Y({...n,state:`target-stale`,updatedAt:Date.now()});return}let c=a.assistants.find(t=>t.id===e.assistantID&&t.enabled);if(!t.enabled||!c){Y({...n,state:`target-stale`,updatedAt:Date.now()});return}n={...n,state:`dispatching`,updatedAt:Date.now()},Y(n);let l=await bn(e);if(!X(r.connectionKey,o))return;n={...n,state:`reconciling`,updatedAt:Date.now()},Y(n);let u=await ce(c.id,e.operationID,n.messageID,l,e.source),d=await oe(u,i(),o),f=await le().catch(e=>(Y({...n,state:`reconciling`,updatedAt:Date.now(),error:e instanceof Error?e.message:`snapshot_refresh_failed`}),null));if(!f)return;if(!X(r.connectionKey,o)){Y({...n,state:`reconciling`,updatedAt:Date.now(),error:`runtime_stale`});return}let p=f.assistants.find(e=>e.id===c.id);if(!p||p.sessionID!==d.sessionID){Y({...n,state:`reconciling`,updatedAt:Date.now(),error:`assistant_binding_mismatch`});return}s=p.id}catch(e){if(e instanceof de&&e.code===`share_unresolved`||e instanceof Error&&e.message===`runtime_stale`){Y({...n,state:`reconciling`,updatedAt:Date.now(),error:e instanceof Error?e.message:`share_unresolved`});return}Y({...n,state:`failed`,updatedAt:Date.now(),error:e instanceof Error?e.message:`dispatch_failed`});return}n={...n,state:`delivered`,cleanupPhase:`server-completed`,updatedAt:Date.now()},Y(n),Jt(s),await wn(n)}},En=async()=>sn||(sn=Dn().finally(()=>{sn=null}),sn),Dn=async()=>{if(!nn())return;let e=await J.listPending().catch(()=>null),t=new Map((e?.envelopes??[]).map(e=>[e.operationID,e])),n=rn();await Tt([...[...t.values()].map(e=>({operationID:e.operationID,cleanupPhase:n[e.operationID]?.cleanupPhase})),...Object.values(n).filter(e=>!t.has(e.envelope.operationID)&&(!!(e.cleanupPhase&&e.cleanupPhase!==`files-released`)||e.state!==`delivered`&&e.state!==`auth-required`&&e.state!==`target-stale`)).map(e=>({operationID:e.envelope.operationID,cleanupPhase:e.cleanupPhase}))],{deliver:async e=>{let r=t.get(e)??n[e]?.envelope;r&&await Cn(r)},cleanup:async e=>{let t=rn()[e];t&&await wn(t)}},pn)},$=async()=>(ln=!0,cn||(cn=(async()=>{do ln=!1,await Mn();while(ln)})().finally(()=>{cn=null,ln&&$()}),cn)),On=async e=>{if(o()!==e.connectionKey&&await ut(e.connectionKey)!==`connected`)return!1;let t=u();if(!X(e.connectionKey,t)||i()!==e.transportIdentity||(await m(`/api/config/settings`).catch(()=>void 0),!X(e.connectionKey,t)||i()!==e.transportIdentity)||!await C.getState().hydrateDraftMetadata(e.transportIdentity)||!X(e.connectionKey,t)||i()!==e.transportIdentity)return!1;let[n,r]=await Promise.all([w(),le()]);return!X(e.connectionKey,t)||i()!==e.transportIdentity||!n.supported||!n.enabled||n.serverInstanceID!==e.serverInstanceID||!r.assistants.some(t=>t.id===e.assistantID&&t.enabled)?!1:(Jt(e.assistantID),!0)},kn=async e=>{let t=o(),n=u();if(await m(`/api/config/settings`).catch(()=>void 0),!X(t,n))return null;try{let[r,a]=await Promise.all([w(),le()]);return!X(t,n)||!r.supported||!r.enabled||r.serverInstanceID!==e.serverInstanceID||!a.assistants.some(t=>t.id===e.assistantID&&t.enabled)?null:{runtimeKey:t,generation:n,transportIdentity:i()}}catch{return null}},An=async e=>{let t=Object.values(T.getState().assistantCatalogByConnection).find(t=>t.serverInstanceID===e.serverInstanceID&&t.connectionKey===e.connectionKey&&t.entries.some(t=>t.assistantID===e.assistantID));if(!t)return!1;let n=await kn(e);if(!n&&(await ut(t.connectionKey,{transportPreference:`relay`})!==`connected`||(n=await kn(e),!n)))return!1;let{runtimeKey:r,generation:a,transportIdentity:o}=n;if(!await C.getState().hydrateDraftMetadata(o)||!X(r,a)||i()!==o)return!1;let s=await Wt(e,{input:C.getState(),transportIdentity:o,cancelDraft:e=>J.cancelDraft({draftID:e}),readAttachment:vn});if(!s.durable||!s.cancelled||!X(r,a)||i()!==o)return!1;let c={draftID:e.draftID,serverInstanceID:e.serverInstanceID,connectionKey:e.connectionKey,assistantID:e.assistantID,transportIdentity:o};return Jt(e.assistantID),await Ut(c,C.getState())&&Ht(c),!0},jn=e=>{let t=Z.get(e.draftID);if(t)return t;let n=An(e).catch(()=>!1).finally(()=>{Z.get(e.draftID)===n&&Z.delete(e.draftID)});return Z.set(e.draftID,n),n},Mn=async()=>{if(x.getPlatform()!==`android`)return;let e=await Vt(e=>J.cancelDraft({draftID:e}));for(let t of e)try{await On(t)&&await Ut(t,C.getState())&&Ht(t)}catch{}let t=await J.listDrafts().catch(()=>null);if(!t)return;let n=[...t?.drafts??[]].sort((e,t)=>e.createdAt-t.createdAt);mn(n.filter(e=>!Et(e)));for(let e of n)Et(e)&&await jn(e)},Nn=()=>{let e=(0,_e.c)(11);E.useSyncExternalStore(gn,_n,_n);let t=T(Pn),[n,r]=E.useState(null),i=E.useRef(null),a;e[0]===t?a=e[1]:(a=Object.values(t).flatMap(Fn).filter(In).sort(Ln),e[0]=t,e[1]=a);let o=a,s=un[0]??null,c;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(e,t)=>{i.current||(i.current=e.draftID,r(e.draftID),jn({...e,serverInstanceID:t.serverInstanceID,assistantID:t.assistantID,name:t.name,avatarSeed:t.avatarSeed,serverLabel:t.serverLabel,connectionKey:t.connectionKey}).then(t=>{t&&hn(e.draftID)}).finally(()=>{i.current===e.draftID&&(i.current=null),r(t=>t===e.draftID?null:t)}))},e[2]=c):c=e[2];let l=S(c),u;e[3]===n?u=e[4]:(u=e=>{n!==e.draftID&&(hn(e.draftID),J.cancelDraft({draftID:e.draftID}).catch(Rn))},e[3]=n,e[4]=u);let d=S(u),f;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=[],e[5]=f):f=e[5],E.useEffect(qn,f);let p=n===s?.draftID,m;return e[6]!==d||e[7]!==o||e[8]!==l||e[9]!==p?(m=(0,q.jsx)($t,{draft:s,entries:o,busy:p,onSelect:l,onCancel:d}),e[6]=d,e[7]=o,e[8]=l,e[9]=p,e[10]=m):m=e[10],m};function Pn(e){return e.assistantCatalogByConnection}function Fn(e){return e.entries}function In(e){return e.enabled}function Ln(e,t){return Number(t.isDefaultShareTarget)-Number(e.isDefaultShareTarget)||e.serverLabel.localeCompare(t.serverLabel)||e.name.localeCompare(t.name)}function Rn(){$()}function zn(){Q(),$(),K()}function Bn(){Q(),En(),$(),K()}function Vn(){En()}function Hn(){}function Un(){$()}function Wn(){}function Gn(){K()}function Kn(){}function qn(){if(!nn())return;Q(),En(),$(),K();let e=n(zn),t=Bn;window.addEventListener(`openchamber:system-resume`,t);let r=!1,i=null,a=null,o=null;return J.addListener(`shareReceived`,Vn).then(e=>{r?e.remove():i=e}).catch(Hn),J.addListener(`shareDraftReceived`,Un).then(e=>{r?e.remove():a=e}).catch(Wn),J.addListener(`assistantOpenRequested`,Gn).then(e=>{r?e.remove():o=e}).catch(Kn),()=>{r=!0,e(),window.removeEventListener(`openchamber:system-resume`,t),i&&i.remove(),a&&a.remove(),o&&o.remove()}}export{Qt as a,A as c,vt as d,Ct as f,Q as i,ct as l,Sn as n,K as o,xn as r,lt as s,Nn as t,_t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as e}from"./useUIStore-CqqO11ZI.js";import{Kt as t,qt as n}from"./persistence-CSZp1CNB.js";var r=e=>typeof e==`object`&&!!e,i=e=>e.trim().toLowerCase()===`authorization`,a=e=>{if(!r(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim(),a=typeof r==`string`?r.trim():``;!e||!a||/[\r\n:]/.test(e)||/[\r\n]/.test(a)||i(e)||(t[e]=a)}return Object.keys(t).length>0?t:void 0},o=`connect-link`,s=(e,t)=>e.source===`connect-link`||e.relay?!0:t.has(e.id),c=(e,t)=>!t.has(e.id)&&s(e,t),l=e=>`relay://${e}`,u=e=>{if(!r(e))return null;let t=g(e,`relayUrl`)||g(e,`relay_url`),n=g(e,`serverId`)||g(e,`server_id`),i=e.hostEncPubJwk??e.host_enc_pub_jwk;return!t||!n||!r(i)?null:{relayUrl:t,serverId:n,hostEncPubJwk:i}},d=/^(t|.*(?:token|auth|secret|api).*)$/i,f=e=>{let t=e.trim();if(!t)return null;try{let e=new URL(t);return e.protocol!==`http:`&&e.protocol!==`https:`?null:t.split(`#`)[0]||null}catch{return null}},p=e=>{let t=f(e);if(!t)return null;try{let e=new URL(t);if((e.pathname.replace(/\/+$/,``)||`/`)===`/connect`&&e.searchParams.has(`t`))return{persistedUrl:e.origin,redeemUrl:e.toString(),kind:`tunnel-connect-link`}}catch{return null}return{persistedUrl:t,redeemUrl:null,kind:`normal-host`}},m=e=>{let t=f(e);if(!t)return e;try{let e=new URL(t);(e.username||e.password)&&(e.username=``,e.password=``);let n=Array.from(new Set(Array.from(e.searchParams.keys())));for(let t of n)d.test(t)&&e.searchParams.set(t,`[REDACTED]`);return e.toString()}catch{return t}},h=(e,t)=>{let n=f(e),r=f(t);if(!n||!r)return!1;try{let e=new URL(n),t=new URL(r);if(e.origin!==t.origin||t.search&&e.search!==t.search)return!1;let i=t.pathname.length>1?t.pathname.replace(/\/+$/,``):t.pathname,a=e.pathname.length>1?e.pathname.replace(/\/+$/,``):e.pathname;return i===`/`||a===i||a.startsWith(`${i}/`)}catch{return!1}},g=(e,t)=>{let n=e[t];return typeof n==`string`?n:null},_=(e,t)=>{let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:null},v=e=>{if(!r(e))return null;let t=g(e,`id`),n=g(e,`label`),i=g(e,`url`),s=g(e,`apiUrl`)||g(e,`api_url`),c=g(e,`clientToken`)||g(e,`client_token`),l=a(e.requestHeaders),d=u(e.relay),f=g(e,`source`)===`connect-link`?o:void 0;return!t||!n||!i&&!d?null:{id:t,label:n,url:i||``,...s?{apiUrl:s}:{},...c?{clientToken:c}:{},...l?{requestHeaders:l}:{},...d?{relay:d}:{},...f?{source:f}:{}}},y=e=>f(e.apiUrl||e.url)||e.apiUrl||e.url,b=()=>t()?(e,t)=>n(e,t):null,x=async()=>{let e=b();if(!e)return{hosts:[],defaultHostId:null,initialHostChoiceCompleted:!1};let t=await e(`desktop_hosts_get`);if(!r(t))return{hosts:[],defaultHostId:null,initialHostChoiceCompleted:!1};let n=t.hosts;return{hosts:Array.isArray(n)?n.map(v).filter(e=>!!e):[],defaultHostId:g(t,`defaultHostId`)||g(t,`default_host_id`)||g(t,`defaultHostID`),initialHostChoiceCompleted:t.initialHostChoiceCompleted===!0||t.initial_host_choice_completed===!0,localOrigin:g(t,`localOrigin`)||g(t,`local_origin`)}},S=async e=>{let t=b();if(!t)return;let n={hosts:e.hosts,defaultHostId:e.defaultHostId,initialHostChoiceCompleted:e.initialHostChoiceCompleted};e.localClientToken!==void 0&&(n.localClientToken=e.localClientToken),await t(`desktop_hosts_set`,{input:n})},C=async()=>{let e=b();if(!e)return``;let t=await e(`desktop_local_client_token_get`).catch(()=>null);return typeof t==`string`?t.trim():``},w=async()=>{let e=b();if(!e)return``;let t=await e(`desktop_install_id_get`).catch(()=>null);return typeof t==`string`?t.trim():``},T=8e3,E=async(t,n)=>{let r=e({relayUrl:t.relayUrl,serverId:t.serverId,hostEncPubJwk:t.hostEncPubJwk}),i=Date.now(),a=!1;try{return(await Promise.race([r.fetch(`/health`),new Promise(e=>{let t=window.setTimeout(()=>e(null),T);typeof t!=`number`&&typeof t.unref==`function`&&t.unref()})]))?.ok?(a=n?.keepTunnel===!0,{status:`ok`,latencyMs:Math.max(0,Date.now()-i),...a?{tunnel:r}:{}}):{status:`unreachable`,latencyMs:0}}catch{return{status:`unreachable`,latencyMs:0}}finally{a||r.close()}},D=async(e,t)=>{let n=b();if(!n)return{status:`unreachable`,latencyMs:0};let i=await n(`desktop_host_probe`,{url:e,clientToken:t?.clientToken||void 0,requestHeaders:t?.requestHeaders||void 0,expectedServerId:t?.expectedServerId||void 0});if(!r(i))return{status:`unreachable`,latencyMs:0};let a=i.status;return{status:a===`ok`||a===`auth`||a===`update-recommended`||a===`incompatible`||a===`wrong-service`||a===`unreachable`?a:`unreachable`,latencyMs:_(i,`latencyMs`)??_(i,`latency_ms`)??0}},O=async(e,t)=>{let n=b();n&&await n(`desktop_new_window_at_url`,{url:e,clientToken:t?.clientToken||void 0,requestHeaders:t?.requestHeaders||void 0})},k=async e=>{let t=b();t&&await t(`desktop_new_window_for_host`,{hostId:e})};export{p as _,w as a,k as c,s as d,h as f,l as g,m as h,S as i,y as l,E as m,D as n,C as o,f as p,x as r,O as s,o as t,c as u};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{A as t,C as n,E as r,L as i,O as a,P as o,S as s,T as c,Y as l,b as u,et as d,f,i as p,p as m,r as ee,t as h,w as g,y as te,z as ne}from"./useUIStore-CqqO11ZI.js";import{a as re,i as ie,r as ae}from"./vendor-zustand-B4dlGEM2.js";import{rt as oe}from"./vendor-base-ui-CnHfUmDN.js";import{i as se}from"./vendor-pathe-vBmvQE8f.js";import{n as ce}from"./vendor-react-DLPElpoQ.js";import{t as le}from"./vendor-tanstack-query-core-BWz0ose6.js";var _=e=>e.startsWith(`/api/`)||e===`/api`||e.startsWith(`/auth/`)||e===`/auth`||e===`/health`,ue=()=>typeof window>`u`?``:window.location.origin||``,de=e=>{if(typeof window>`u`)return!1;let t=ue();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}},fe=e=>/^[a-z][a-z\d+.-]*:\/\//i.test(e),pe=(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))},me=e=>{try{let t=o().api(`/api`);if(!/^[a-z][a-z\d+.-]*:\/\//i.test(t))return!1;let n=new URL(t);return e.origin===n.origin&&_(e.pathname)}catch{return!1}},he=e=>{if(_(e))return!0;if(!/^[a-z][a-z\d+.-]*:\/\//i.test(e))return!1;try{let t=new URL(e);return de(t)&&_(t.pathname)}catch{return!1}},ge=(e,t)=>{try{let n=new URL(e);if(!de(n))return e;let r=v(`${n.pathname}${n.search}`,t);return!fe(r)&&(n.protocol===`http:`||n.protocol===`https:`)?(pe(n,t),n.toString()):n.hash?`${r}${n.hash}`:r}catch{return e}},v=(e,t)=>e===`/health`?o().health(t):e.startsWith(`/auth/`)||e===`/auth`?o().auth(e,t):_(e)?o().api(e,t):/^[a-z][a-z\d+.-]*:\/\//i.test(e)?ge(e,t):e,_e=e=>{let t=e instanceof Request?e.url:e.toString();if(!fe(t))return _(t);try{return me(new URL(t))}catch{return!1}},ve=/^\/api\/session\/(?!status$)([^/]+)(?:\/(?:message|children|todo|diff))?$/,ye=/^\/api\/openchamber\/sessions\/([^/]+)\/messages\/?$/,be=null,xe=e=>{be=e},Se=e=>{try{return decodeURIComponent(e)}catch{return e}},Ce=e=>be?e===be||Se(e)===be:!1,we=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`]),Te=[`/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`],Ee=e=>we.has(e)||Te.some(t=>e===t||e.startsWith(`${t}/`)),De=e=>{if(!fe(e))return _(e);try{return me(new URL(e))}catch{return!1}},Oe=e=>{try{return new URL(e,`http://openchamber.local`).pathname}catch{return null}},ke=(e,t)=>{if(e.toUpperCase()!==`GET`||!De(t))return;let n=Oe(t);if(!n)return;let r=n.match(ve);if(r?.[1]&&Ce(r[1]))return`high`;let i=n.match(ye);if(i?.[1]&&Ce(i[1]))return`high`;if(Ee(n))return`low`},Ae=e=>{for(let t=0;t<e.length;t+=1)if(e.charCodeAt(t)>255)return!1;return!0},je=(e,t)=>!Ae(t),Me=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)je(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},y=async(e,t,n=!0)=>{let r=new Headers(Me(e)??e);return t&&new Headers(Me(t)??t).forEach((e,t)=>r.set(t,e)),n?i(r):r},Ne=(e,t)=>{if(!t)return e;let n=new URL(e,d);return pe(n,t),`${n.pathname}${n.search}`},Pe=(e,t)=>{let n=e instanceof Request?e.url:e.toString();if(!fe(n))return _(n)?Ne(n,t):null;try{let e=new URL(n);return!de(e)||!_(e.pathname)?null:(pe(e,t),`${e.pathname}${e.search}`)}catch{return null}},Fe=async(e,t,n)=>{let r=l();if(!r)return null;let i=Pe(e,n);if(i===null)return null;let a=await y(e instanceof Request?e.headers:void 0,t.headers,!0);return e instanceof Request?r.fetch(e,{...t,headers:a}):r.fetch(i,{...t,headers:a})},Ie=(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)},Le=/\/api\/(config|path|app\/agents|agent|project|command|opencode\/upgrade-status)(\b|\/|\?|$)/,Re=new Map,ze=new WeakMap,Be=1,Ve=e=>{let t=ze.get(e);if(t)return t;let n=Be;return Be+=1,ze.set(e,n),n},He=(e,t,n,r,i,a)=>n||!i||e!==`GET`||t.includes(`/event`)||!Le.test(t)?null:`GET ${a?`relay:${Ve(a)}`:`url:${t}`} ${t} auth:${r}`,Ue=async(e,t={})=>{let{query:n,...r}=t,i=l(),a=i?Pe(e,n):null,o=ne(),s,c,u;if(i&&a!==null){let t=await y(e instanceof Request?e.headers:void 0,r.headers,!0);s=e instanceof Request?()=>i.fetch(e,{...r,headers:t}):()=>i.fetch(a,{...r,headers:t}),c=a,u=String(r.method??(e instanceof Request?e.method:`GET`)).toUpperCase()}else{let t=Ie(e,n),i=await y(t instanceof Request?t.headers:void 0,r.headers,_e(t));c=t instanceof Request?t.url:t instanceof URL?t.toString():String(t),u=String(r.method??(t instanceof Request?t.method:`GET`)).toUpperCase();let a=r.priority??ke(u,c),o=a?{...r,priority:a}:r;s=t instanceof Request?()=>fetch(new Request(t,{...o,headers:i})):()=>fetch(t,{...o,headers:i})}let d=r.signal!=null||e instanceof Request,f=He(u,c,d,o,o===ne(),i&&a!==null?i:null);if(!f)return s();let p=Re.get(f);if(p)return p.then(e=>e.clone());let m=s();return Re.set(f,m),m.then(()=>Re.delete(f),()=>Re.delete(f)),m.then(e=>e.clone())},We=!1,Ge=()=>{if(We||typeof window>`u`)return;We=!0;let e=window.fetch.bind(window);window.fetch=async(t,n)=>{let r=await Fe(t,n??{});if(r)return r;if(typeof t==`string`){if(!he(t)){try{if(me(new URL(t))){let r=await y(void 0,n?.headers);return e(t,{...n,headers:r})}}catch{}return e(t,n)}let r=await y(void 0,n?.headers);return e(v(t),{...n,headers:r})}if(t instanceof URL){let r=t.toString();if(!he(r)){if(me(t)){let r=await y(void 0,n?.headers);return e(t,{...n,headers:r})}return e(t,n)}let i=await y(void 0,n?.headers);return e(v(r),{...n,headers:i})}if(t instanceof Request){if(!he(t.url)){try{if(me(new URL(t.url))){let r=await y(t.headers,n?.headers);return e(new Request(t,{...n,headers:r}))}}catch{}return e(t,n)}let r=await y(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)}},Ke=[`local`,`remote`,null],qe=[`ok`,`not-configured`,`unreachable`,`incompatible`,`wrong-service`,`missing`];function Je(e){if(!e||typeof e!=`object`)return{valid:!1};let t=e,n=t.target,r=t.status;if(n!==null&&(typeof n!=`string`||!Ke.includes(n))||typeof r!=`string`||!qe.includes(r))return{valid:!1};if(n===`remote`||n===`local`){if(r===`ok`&&n===`local`)return{valid:!0,outcome:{target:`local`,status:`ok`}};if(r===`ok`&&n===`remote`)return typeof t.hostId!=`string`||typeof t.url!=`string`?{valid:!1}:{valid:!0,outcome:{target:`remote`,status:`ok`,hostId:t.hostId,url:t.url}};if(r===`unreachable`)return n===`local`?{valid:!0,outcome:{target:`local`,status:`unreachable`}}:typeof t.hostId!=`string`||typeof t.url!=`string`?{valid:!1}:{valid:!0,outcome:{target:`remote`,status:`unreachable`,hostId:t.hostId,url:t.url}};if(r===`incompatible`||r===`wrong-service`)return n!==`remote`||typeof t.hostId!=`string`||typeof t.url!=`string`?{valid:!1}:{valid:!0,outcome:{target:`remote`,status:r,hostId:t.hostId,url:t.url}};if(r===`missing`)return n!==`remote`||typeof t.hostId!=`string`?{valid:!1}:{valid:!0,outcome:{target:`remote`,status:`missing`,hostId:t.hostId}}}if(n===null){if(r===`not-configured`)return{valid:!0,outcome:{target:null,status:`not-configured`}};if(r===`missing`)return{valid:!1}}return{valid:!1}}function Ye(e){if(!e.isDesktopShell)return null;let t=e.bootOutcome;if(!t)return null;if(t.status===`ok`){if(t.target===`local`)return{screen:`main`};if(t.target===`remote`)return{screen:`main`,hostId:t.hostId,url:t.url}}if(t.target===null&&t.status===`not-configured`)return{screen:`chooser`};if(t.target===`local`&&t.status===`unreachable`)return{screen:`recovery`,variant:`local-unavailable`};if(t.target===`remote`){if(t.status===`unreachable`)return{screen:`recovery`,variant:`remote-unreachable`,hostId:t.hostId,url:t.url};if(t.status===`incompatible`)return{screen:`recovery`,variant:`remote-incompatible`,hostId:t.hostId,url:t.url};if(t.status===`wrong-service`)return{screen:`recovery`,variant:`remote-wrong-service`,hostId:t.hostId,url:t.url};if(t.status===`missing`)return{screen:`recovery`,variant:`remote-missing`,hostId:t.hostId}}return null}function Xe(e){return e.isDesktopShell?e.bootOutcomeKnown?e.bootViewIsMain===!1||e.isInitialized:!1:e.isInitialized}function Ze(e){return e.isDesktopShell&&!e.isDesktopLocalOriginActive}function Qe(){if(et()!==`valid`)return null;let e=Je($e());return e.valid?e.outcome:null}var $e=()=>{if(typeof window>`u`)return;let e=window.__OPENCHAMBER_DESKTOP_BOOT_OUTCOME__;if(e!=null)return e;let t=window.__OPENCHAMBER_DESKTOP_BOOT__;if(t&&typeof t.getOutcome==`function`)try{return t.getOutcome()}catch{return}return e};function et(){if(typeof window>`u`)return`not-injected`;let e=$e();return e==null?`not-injected`:Je(e).valid?`valid`:`malformed`}var tt=null,nt=e=>{tt=e},rt=()=>tt||(typeof window>`u`?null:window.__OPENCHAMBER_RUNTIME_APIS__??null),it=()=>typeof window>`u`?null:window.__OPENCHAMBER_ELECTRON__??null,b=()=>typeof window>`u`?null:window.__OPENCHAMBER_DESKTOP__??null,x=()=>it()?.runtime===`electron`,at=()=>x()&&it()?.packaged===!0,ot=e=>{if(!x())return null;let t=b()?.getPathForFile?.(e);return typeof t==`string`&&t.trim()?t:null},st=()=>{if(typeof window>`u`)return null;let e=window.__OPENCHAMBER_PLATFORM__;return typeof e==`string`?e:null},ct=()=>{if(!x())return!1;let e=st();return e===`win32`||e===`linux`},lt=(e=st())=>e===`linux`?`left`:`right`,ut=(e,t=st())=>e===`left`||e===`right`?e:lt(t),S=()=>typeof b()?.invoke==`function`,C=()=>x()&&S(),w=async(e,t)=>{let n=b();return typeof n?.invoke==`function`?n.invoke(e,t??{}):null},dt=async()=>{if(!C()||!T())return null;try{let e=await w(`desktop_get_launch_at_login`);return!e||typeof e.supported!=`boolean`||typeof e.enabled!=`boolean`?null:e}catch(e){return console.warn(`Failed to get launch at login status`,e),null}},ft=async e=>{if(!C()||!T())return null;try{let t=await w(`desktop_set_launch_at_login`,{enabled:e});return!t||typeof t.supported!=`boolean`||typeof t.enabled!=`boolean`?null:t}catch(e){return console.warn(`Failed to set launch at login status`,e),null}},pt=async()=>{if(!C()||!T())return null;try{let e=await w(`desktop_get_minimize_to_tray`);return!e||typeof e.supported!=`boolean`||typeof e.enabled!=`boolean`?null:e}catch(e){return console.warn(`Failed to get minimize to tray status`,e),null}},mt=async e=>{if(!C()||!T())return null;try{let t=await w(`desktop_set_minimize_to_tray`,{enabled:e});return!t||typeof t.supported!=`boolean`||typeof t.enabled!=`boolean`?null:t}catch(e){return console.warn(`Failed to set minimize to tray status`,e),null}},ht=async()=>{if(!C()||!T())return null;try{let e=await w(`desktop_get_keep_awake`);return!e||typeof e.supported!=`boolean`||typeof e.enabled!=`boolean`||typeof e.active!=`boolean`?null:e}catch(e){return console.warn(`Failed to get keep awake status`,e),null}},gt=async e=>{if(!C()||!T())return null;try{let t=await w(`desktop_set_keep_awake`,{enabled:e});return!t||typeof t.supported!=`boolean`||typeof t.enabled!=`boolean`||typeof t.active!=`boolean`?null:t}catch(e){return console.warn(`Failed to set keep awake status`,e),null}},_t=e=>{let t=e.trim();if(!t)return null;try{return new URL(t).origin}catch{try{return new URL(t.endsWith(`/`)?t:`${t}/`).origin}catch{return null}}},vt=e=>{let t=e.trim();if(!t)return null;try{return new URL(t)}catch{try{return new URL(t.endsWith(`/`)?t:`${t}/`)}catch{return null}}},yt=e=>e.replace(/^\[|\]$/g,``).toLowerCase(),bt=e=>{let t=yt(e);return t===`localhost`||t===`127.0.0.1`||t===`::1`},T=()=>{if(typeof window>`u`||!xt())return!1;if(c()===`local`)return!0;let e=typeof window.__OPENCHAMBER_LOCAL_ORIGIN__==`string`?window.__OPENCHAMBER_LOCAL_ORIGIN__:``,t=vt(e),r=vt(n());if(!r&&t&&Qe()?.target===`local`)return!0;if(t&&r){if(t.origin===r.origin)return!0;let e=t.port||(t.protocol===`https:`?`443`:`80`),n=r.port||(r.protocol===`https:`?`443`:`80`);return t.protocol===r.protocol&&e===n&&bt(t.hostname)&&bt(r.hostname)}let i=vt(window.location.origin);if(t&&i){if(t.origin===i.origin)return!0;let e=t.port||(t.protocol===`https:`?`443`:`80`),n=i.port||(i.protocol===`https:`?`443`:`80`);return t.protocol===i.protocol&&e===n&&bt(t.hostname)&&bt(i.hostname)}let a=_t(e),o=_t(window.location.origin)||window.location.origin;return a&&o&&a===o?!0:!!(i&&bt(i.hostname))},xt=()=>typeof window>`u`?!1:x(),St=async()=>{if(!xt())return!1;try{return await w(`desktop_start_window_drag`),!0}catch{return!1}},Ct=()=>rt()?.runtime?.isVSCode===!0,wt=()=>{let e=rt()?.runtime?.platform;return e===`web`?!0:e===`desktop`||e===`vscode`?!1:!Ct()},Tt=async()=>{if(typeof window<`u`){let e=window.__OPENCHAMBER_HOME__;if(e&&e.length>0)return e}return null},Et=async e=>{if(S()&&T())try{let e=await b()?.openDialog?.({directory:!0,multiple:!1,title:`Select Working Directory`});return!e||typeof e!=`string`?{success:!1,error:`Directory selection cancelled`}:{success:!0,path:e}}catch(e){return console.warn(`Failed to request directory access`,e),{success:!1,error:e instanceof Error?e.message:String(e)}}return{success:!0,path:e}},Dt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ot=async e=>{if(S()&&T())try{let t=await b()?.openDialog?.({directory:!1,multiple:!1,title:`Select File`,returnGrant:!0,...e?.filters?{filters:e.filters}:{},...e?.defaultPath?{defaultPath:e.defaultPath}:{}});if(!t)return{success:!1,error:`File selection cancelled`};if(typeof t==`string`)return{success:!0,path:t};if(!Dt(t))return{success:!1,error:`File selection cancelled`};let n=typeof t.path==`string`?t.path:``;return n?{success:!0,path:n,outsideFileGrant:typeof t.outsideFileGrant==`string`?t.outsideFileGrant:void 0}:{success:!1,error:`File selection cancelled`}}catch(e){return console.warn(`Failed to request file access`,e),{success:!1,error:e instanceof Error?e.message:String(e)}}return{success:!1,error:`Native file picker not available`}},kt=async e=>{let t=typeof e==`string`?e.trim():``;if(!t)return{success:!1,error:`Path is required`};if(!S()||!T())return{success:!1,error:`Native file access not available`};try{let e=await b()?.grantFileAccess?.(t);if(!Dt(e))return{success:!1,error:`File access was not granted`};let n=typeof e.path==`string`?e.path:``,r=typeof e.outsideFileGrant==`string`?e.outsideFileGrant:``;return!n||!r?{success:!1,error:`File access was not granted`}:{success:!0,path:n,outsideFileGrant:r}}catch(e){return console.warn(`Failed to request existing file access`,e),{success:!1,error:e instanceof Error?e.message:String(e)}}},At=async e=>({success:!0}),jt=async e=>({success:!0}),Mt=async()=>{if(!S())throw Error(`Desktop update checker is unavailable`);let e=await w(`desktop_check_for_updates`);if(!e)throw Error(`Desktop update checker returned no result`);return e},Nt=async e=>{let t=b();return typeof t?.listen==`function`?t.listen(`openchamber:update-progress`,t=>{let n=t?.payload;if(!n||typeof n!=`object`)return;let r=n;e({event:typeof r.event==`string`?r.event:void 0,data:r.data&&typeof r.data==`object`?r.data:void 0})}):null},Pt=async e=>{let t=b();return typeof t?.listen==`function`?t.listen(`openchamber:update-ready`,t=>{let n=t?.payload;if(!n||typeof n!=`object`)return;let r=n;e({version:typeof r.version==`string`?r.version:null,downloaded:r.downloaded===!0})}):null},Ft=async e=>{if(!S())return!1;let t=b(),n=null,r=0,i;try{return typeof e==`function`&&t?.listen&&(n=await t.listen(`openchamber:update-progress`,t=>{let n=t?.payload;if(!n||typeof n!=`object`)return;let a=n,o=typeof a.event==`string`?a.event:null,s=a.data&&typeof a.data==`object`?a.data:null;if(o===`Started`){r=0,i=typeof s?.contentLength==`number`?s.contentLength:void 0,e({downloaded:r,total:i});return}if(o===`Progress`){let t=s?.downloaded,n=s?.total;typeof t==`number`&&(r=t),typeof n==`number`&&(i=n),e({downloaded:r,total:i});return}o===`Finished`&&e({downloaded:r,total:i})})),await w(`desktop_download_and_install_update`),!0}catch(e){throw e instanceof Error?e:Error(String(e))}finally{if(n)try{let e=n();e instanceof Promise&&await e}catch{}}},It=async()=>S()?Lt({applyUpdate:!0}):!1,Lt=async({applyUpdate:e=!1}={})=>{if(!S())return!1;try{return await w(`desktop_restart`,e?{applyUpdate:!0}:void 0),!0}catch(e){return console.warn(`Failed to restart desktop app`,e),!1}},Rt=async()=>{if(!S()||!T())return null;try{let e=await w(`desktop_get_lan_address`);return typeof e==`string`&&e.trim().length>0?e.trim():null}catch(e){return console.warn(`Failed to get desktop LAN address`,e),null}},zt=async(e,t)=>{if(!S()||!T())return!1;let n=e?.trim();if(!n)return!1;try{return await w(`desktop_open_path`,{path:n,app:typeof t==`string`&&t.trim().length>0?t.trim():void 0}),!0}catch(e){return console.warn(`Failed to open path`,e),!1}},Bt=async e=>{if(!S()||!T())return null;let t=e?.trim();if(!t)return null;try{let e=await w(`desktop_is_binary_path`,{path:t});return typeof e==`boolean`?e:null}catch{return null}},Vt=async e=>{if(!S()||!T())return!1;let t=e?.trim();if(!t)return!1;try{return await w(`desktop_reveal_path`,{path:t}),!0}catch{return zt(t)}},Ht=async(e,t)=>{if(!S()||!T())return null;let n=e?.trim();if(!n)return null;try{let e=await w(`desktop_save_markdown_file`,{defaultFileName:n,content:t});return typeof e==`string`&&e.trim().length>0?e:null}catch(e){return console.warn(`Failed to save markdown file`,e),null}},Ut=async(e,t,n)=>{if(!S()||!T())return!1;let r=e?.trim(),i=t?.trim(),a=n?.trim();if(!r||!i||!a)return!1;try{return await w(`desktop_open_in_app`,{projectPath:r,appId:i,appName:a}),!0}catch(e){return console.warn(`Failed to open project in app`,e),!1}},Wt=async(e,t,n)=>{if(!S()||!T())return!1;let r=e?.trim(),i=t?.trim(),a=n?.trim();if(!r||!i||!a)return!1;try{return await w(`desktop_open_file_in_app`,{filePath:r,appId:i,appName:a}),!0}catch(e){return console.warn(`Failed to open file in app`,e),!1}},Gt=async(e,t)=>{if(!S()||!T())return{apps:[],success:!1,hasCache:!1,isCacheStale:!1};if(st()===`linux`)return{apps:[],success:!0,hasCache:!1,isCacheStale:!1};let n=Array.isArray(e)?e.filter(e=>typeof e==`string`):[];if(n.length===0)return{apps:[],success:!0,hasCache:!1,isCacheStale:!1};try{let e=await w(`desktop_get_installed_apps`,{apps:n,force:t===!0||void 0});if(!e||typeof e!=`object`)return{apps:[],success:!1,hasCache:!1,isCacheStale:!1};let r=e;return r.supported===!1?{apps:[],success:!0,hasCache:!1,isCacheStale:!1}:Array.isArray(r.apps)?{apps:r.apps.filter(e=>e&&typeof e==`object`).map(e=>{let t=e;return{name:typeof t.name==`string`?t.name:``,iconDataUrl:typeof t.iconDataUrl==`string`?t.iconDataUrl:null}}).filter(e=>e.name.length>0),success:!0,hasCache:r.hasCache===!0,isCacheStale:r.isCacheStale===!0}:{apps:[],success:!1,hasCache:!1,isCacheStale:!1}}catch(e){return console.warn(`Failed to fetch installed apps`,e),{apps:[],success:!1,hasCache:!1,isCacheStale:!1}}},Kt=`oc.inst.`,qt=e=>{try{return btoa(unescape(encodeURIComponent(e))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}catch{return encodeURIComponent(e)}},Jt=e=>{let t=(e??c()).trim();return t.length>0?t:`default`},Yt=()=>{if(typeof window>`u`)return``;let e=window.__OPENCHAMBER_LOCAL_ORIGIN__;return typeof e==`string`?e.trim().replace(/\/+$/,``):``},E=(e,t=c())=>`${Kt}${qt(Jt(t))}.${e}`,Xt=(e=c())=>Jt(e).startsWith(`relay:`),Zt=(e=c())=>{let t=Jt(e);if(t==="default"||t===`local`)return!0;if(Xt(t)||!t.startsWith(`url:`))return!1;let n=Yt();if(!n)return!1;try{return new URL(t.slice(4)).origin===new URL(n).origin}catch{return!1}},Qt=(e=c())=>!Xt(e),$t=(e,t=n())=>{let r=t.trim().replace(/\/+$/,``);return r?`${e}:${encodeURIComponent(r)}`:null},en=(e,t)=>{let n=t?.storage??(typeof localStorage<`u`?localStorage:{getItem:()=>null}),r=t?.runtimeKey??c(),i=n.getItem(E(e,r));if(i!==null)return i;if(Qt(r)){let t=$t(e),r=t?n.getItem(t):null;if(r!==null)return r}return Zt(r)?n.getItem(e):null},D=(e,t,n)=>{let r=n?.storage??(typeof localStorage<`u`?localStorage:{setItem:()=>void 0}),i=n?.runtimeKey??c();r.setItem(E(e,i),t)},tn=e=>({getItem:t=>en(t,{storage:e}),setItem:(t,n)=>{D(t,n,{storage:e})},removeItem:t=>{O(t,{storage:e})}}),O=(e,t)=>{let n=t?.storage??(typeof localStorage<`u`?localStorage:{removeItem:()=>void 0}),r=t?.runtimeKey??c();n.removeItem(E(e,r))},nn=e=>{let t;try{t=s()}catch{return}let n=t=>t===null?null:JSON.parse(t,e?.reviver),r=e=>t.getItem(e);return{getItem:e=>{let t=c(),i=E(e,t),a=r(i);if(a instanceof Promise)return a.then(i=>{if(i!==null)return n(i);if(!Zt(t))return null;let a=r(e);return a instanceof Promise?a.then(n):n(a)});if(a!==null)return n(a);if(!Zt(t))return null;let o=r(e);return o instanceof Promise?o.then(n):n(o)},setItem:(n,r)=>{let i=E(n,c());t.setItem(i,JSON.stringify(r,e?.replacer))},removeItem:e=>{let n=E(e,c());t.removeItem(n)}}},rn=(e=an)=>{let t=new Map,n=0;return{countUnicodeCodePoints:r=>{let i=t.get(r);if(i!==void 0)return t.delete(r),t.set(r,i),i;let a=e(r);if(r.length>4e5)return a;for(;n+r.length>4e5&&t.size>0;){let e=t.keys().next().value;n-=e.length,t.delete(e)}return t.set(r,a),n+=r.length,a}}},an=e=>{let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r>=55296&&r<=56319&&n+1<e.length){let t=e.charCodeAt(n+1);t>=56320&&t<=57343&&(n+=1)}t+=1}return t},on=rn(),sn=e=>on.countUnicodeCodePoints(e),k=(e,t)=>{if(!e)throw Error(`${t} must be non-empty`);return e},cn=({transportIdentity:e},t)=>({transportIdentity:k(e,`transportIdentity`),owner:{kind:`session`,ownerID:k(t,`sessionID`)}}),ln=({transportIdentity:e},t)=>({transportIdentity:k(e,`transportIdentity`),owner:{kind:`draft`,ownerID:k(t,`draftID`)}}),un=e=>{let t=typeof e.projectId==`string`?e.projectId.trim():``;if(t)return`new-session:project:${t}`;let n=typeof e.directory==`string`?e.directory.trim():``;return n?`new-session:directory:${n}`:`new-session:default`},dn=({transportIdentity:e},t)=>({transportIdentity:k(e,`transportIdentity`),owner:{kind:`surface`,ownerID:k(t,`surfaceID`)}}),fn=8192,pn=e=>{if(typeof e!=`string`||e.length===0||e.length>fn)return!1;try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},mn=e=>JSON.stringify([e.transportIdentity,e.owner.kind,e.owner.ownerID]),hn=e=>JSON.stringify([e.transportIdentity,e.owner.kind,e.owner.ownerID,e.attachmentOccurrenceRefID]),gn=e=>JSON.stringify([`root`,e]),_n=(e,t)=>JSON.stringify([`part`,e,t]),vn={mentionCount:1e3,valueLength:8192,pathLength:8192,labelLength:512},A={referenceCount:1e3,idLength:512,displayLength:514,sessionIDLength:128,skillNameLength:511,commandNameLength:511,commandReferenceLength:8192,pastePayloadLength:1e5,totalPastePayloadLength:2e5},j=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},M=(e,t)=>Object.keys(e).every(e=>t.includes(e)),N=e=>typeof e==`string`&&e.length>0,yn=e=>typeof e==`string`,P=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,F=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,bn=(e,t)=>{if(t<=0||t>=e.length)return!0;let n=e.charCodeAt(t-1),r=e.charCodeAt(t);return!(n>=55296&&n<=56319&&r>=56320&&r<=57343)},xn=(e,t)=>{if(!Array.isArray(t)||t.length>vn.mentionCount)return;let n=[],r=new Set,i=0;for(let a of t){if(!j(a)||!M(a,[`kind`,`value`,`path`,`label`,`range`])||a.kind!==`file`&&a.kind!==`directory`&&a.kind!==`agent`||!F(a.value,vn.valueLength)||!F(a.path,vn.pathLength)||!F(a.label,vn.labelLength)||!j(a.range)||!M(a.range,[`start`,`end`])||!P(a.range.start)||!P(a.range.end)||a.range.end<=a.range.start||a.range.end>e.length||a.range.start<i||!bn(e,a.range.start)||!bn(e,a.range.end)||e.slice(a.range.start,a.range.end)!==`@${a.value}`)return;let t=JSON.stringify([a.kind,a.value,a.path,a.label,a.range.start,a.range.end]);if(r.has(t))return;r.add(t),i=a.range.end,n.push({kind:a.kind,value:a.value,path:a.path,label:a.label,range:{start:a.range.start,end:a.range.end}})}return n},Sn=e=>F(e,A.sessionIDLength)&&/^[A-Za-z0-9_-]+$/.test(e),Cn=e=>F(e,A.skillNameLength)&&/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(e),wn=e=>F(e,A.commandNameLength)&&/^[\p{L}\p{N}._/-]+$/u.test(e),Tn=e=>F(e,A.commandReferenceLength)&&!/[\]\r\n]/u.test(e),En=e=>{if(!(!j(e)||!F(e.id,A.idLength)||!F(e.display,A.displayLength)||!P(e.start)||!P(e.end)||e.end<=e.start)){if(e.kind===`session`&&M(e,[`id`,`kind`,`start`,`end`,`display`,`sessionId`])&&Sn(e.sessionId))return{id:e.id,kind:`session`,start:e.start,end:e.end,display:e.display,sessionId:e.sessionId};if(e.kind===`paste`&&M(e,[`id`,`kind`,`start`,`end`,`display`,`text`,`characterCount`,`index`])&&typeof e.text==`string`&&e.text.length<=A.pastePayloadLength&&P(e.characterCount)&&e.characterCount===sn(e.text)&&P(e.index)&&e.index>=1)return{id:e.id,kind:`paste`,start:e.start,end:e.end,display:e.display,text:e.text,characterCount:e.characterCount,index:e.index};if(e.kind===`skill`&&M(e,[`id`,`kind`,`start`,`end`,`display`,`skillName`])&&Cn(e.skillName)&&(e.display===`/${e.skillName}`||e.display===`/ ${e.skillName}`))return{id:e.id,kind:`skill`,start:e.start,end:e.end,display:e.display,skillName:e.skillName};if(e.kind===`command`&&M(e,[`id`,`kind`,`start`,`end`,`display`,`commandName`,`reference`])&&wn(e.commandName)&&Tn(e.reference)&&(e.display===`/${e.commandName}`||e.display===`/ ${e.commandName}`))return{id:e.id,kind:`command`,start:e.start,end:e.end,display:e.display,commandName:e.commandName,reference:e.reference}}},Dn=(e,t)=>{if(!Array.isArray(t)||t.length>A.referenceCount)return;let n=t.map(En);if(!n.every(Boolean))return;let r=n,i=new Set,a=0,o=0;for(let t of r)if(i.has(t.id)||t.start<a||t.end>e.length||e.slice(t.start,t.end)!==t.display||(i.add(t.id),a=t.end,t.kind===`paste`&&(o+=t.text.length,o>A.totalPastePayloadLength)))return;return{text:e,references:r}},On=(e,t)=>{if(e===null||[`string`,`number`,`boolean`,`undefined`].includes(typeof e))return!0;if(typeof e!=`object`||e instanceof Blob||typeof File<`u`&&e instanceof File||!Array.isArray(e)&&!j(e)||t.has(e))return!1;t.add(e);let n=Object.values(e).every(e=>On(e,t));return t.delete(e),n},kn=e=>{if(!(!j(e)||!M(e,[`kind`,`ownerID`])||!N(e.ownerID))&&(e.kind===`session`||e.kind===`draft`||e.kind===`surface`))return{kind:e.kind,ownerID:e.ownerID}},An=e=>{if(!j(e)||!M(e,[`transportIdentity`,`owner`])||!N(e.transportIdentity))return;let t=kn(e.owner);return t?{transportIdentity:e.transportIdentity,owner:t}:void 0},jn=e=>{if(!(!j(e)||!N(e.kind))){if(e.kind===`blob`&&M(e,[`kind`,`blobID`])&&N(e.blobID))return{kind:`blob`,blobID:e.blobID};if(!(e.kind!==`url`||!M(e,[`kind`,`url`])||!pn(e.url)))return{kind:`url`,url:e.url}}},Mn=(e,t,n)=>{try{let r=JSON.parse(e);return Array.isArray(r)?n===void 0?r.length===2&&r[0]===`root`&&r[1]===t:r.length===3&&r[0]===`part`&&r[1]===n&&r[2]===t:!1}catch{return!1}},Nn=(e,t)=>{if(!j(e)||!M(e,[`attachmentID`,`attachmentRefID`,`filename`,`mimeType`,`size`,`locator`,`source`,`serverPath`,`vscodePath`,`vscodeSource`])||!N(e.attachmentID)||!N(e.attachmentRefID)||!Mn(e.attachmentRefID,e.attachmentID,t)||!N(e.filename)||!yn(e.mimeType)||!P(e.size)||e.source!==`local`&&e.source!==`vscode`&&e.source!==`server`||e.serverPath!==void 0&&!N(e.serverPath)||e.vscodePath!==void 0&&!N(e.vscodePath)||e.vscodeSource!==void 0&&e.vscodeSource!==`file`&&e.vscodeSource!==`selection`||e.source===`server`&&!N(e.serverPath)||e.source===`vscode`&&(!N(e.vscodePath)||e.vscodeSource!==`file`&&e.vscodeSource!==`selection`))return;let n=jn(e.locator);if(n)return{attachmentID:e.attachmentID,attachmentRefID:e.attachmentRefID,filename:e.filename,mimeType:e.mimeType,size:e.size,locator:n,source:e.source,...e.serverPath===void 0?{}:{serverPath:e.serverPath},...e.vscodePath===void 0?{}:{vscodePath:e.vscodePath},...e.vscodeSource===void 0?{}:{vscodeSource:e.vscodeSource}}},Pn=e=>{if(!On(e,new Set)||!j(e)||!M(e,[`version`,`key`,`revision`,`text`,`attachments`,`syntheticParts`,`mentions`,`composerReferences`])||e.version!==1||!P(e.revision)||e.revision<1||typeof e.text!=`string`||!Array.isArray(e.attachments)||!Array.isArray(e.syntheticParts)||!Array.isArray(e.mentions))return;let t=e.text,n=An(e.key),r=e.attachments.map(e=>Nn(e)),i=e.syntheticParts.map(e=>{if(!j(e)||!M(e,[`partID`,`text`,`attachments`,`synthetic`])||!N(e.partID)||typeof e.text!=`string`||!Array.isArray(e.attachments)||e.synthetic!==void 0&&typeof e.synthetic!=`boolean`)return;let t=e.partID,n=e.text,r=e.attachments.map(e=>Nn(e,t));return r.every(Boolean)?{partID:t,text:n,attachments:r,...e.synthetic===void 0?{}:{synthetic:e.synthetic}}:void 0}),a=xn(t,e.mentions),o=e.composerReferences===void 0?{text:t,references:[]}:Dn(t,e.composerReferences);if(!n||!r.every(Boolean)||!i.every(Boolean)||!a||!o)return;let s=r,c=i,l=new Set;for(let e of[...s,...c.flatMap(e=>e.attachments)]){if(l.has(e.attachmentRefID))return;l.add(e.attachmentRefID)}if(new Set(c.map(e=>e.partID)).size===c.length)return{version:1,key:n,revision:e.revision,text:t,attachments:s,syntheticParts:c,mentions:a,...e.composerReferences===void 0?{}:{composerReferences:o.references}}},Fn=e=>Pn(e),I=` `,In=`0.2em`,Ln=`size-[1em]`,Rn=e=>e.startsWith(I)?e.slice(I.length):e,zn=e=>e.replaceAll(`/${I}`,`/`).replaceAll(`@${I}`,`@`).replaceAll(`[${I}`,`[`),Bn=e=>{let t=e.match(/^\s*/)?.[0].length??0,n=e.slice(t);if(!n.startsWith(`/`))return null;let r=1;n.startsWith(I,r)&&(r+=I.length);let i=n.slice(r);if(!i)return null;let a=i.search(/\s/u),o=a===-1?i:i.slice(0,a);return o?{commandName:o,argumentsText:a===-1?``:i.slice(a).trim()}:null},Vn=e=>L({trigger:`[`,icon:`file-image`,label:e,suffix:`]`}),Hn=({trigger:e,label:t,suffix:n=``})=>`${e}${t}${n}`,L=e=>`${e.trigger}${I}${e.label}${e.suffix??``}`,Un=e=>Hn(e),Wn=(e,t)=>e===Un(t)||e===L(t),Gn=(e,t)=>{let n=t===L(e);return{trigger:n?`${e.trigger}${I}`:e.trigger,icon:e.icon,align:e.align??`end`,label:e.label,suffix:e.suffix,slot:n?`reserved`:`compact`}},Kn=(e,t,n=``)=>{let r=e.startsWith(t)?e.slice(t.length):e,i=r.startsWith(I)?r.slice(I.length):r;return n&&i.endsWith(n)?i.slice(0,-n.length):i},qn=(e,t)=>e===t||!!e&&!!t&&e.trigger===t.trigger&&e.icon===t.icon&&e.align===t.align&&e.label===t.label&&e.suffix===t.suffix&&e.slot===t.slot,Jn=0n,Yn=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,Xn=14;function Zn(e){let t=``;for(let n=0;n<e;n++)t+=Yn[Math.floor(Math.random()*62)];return t}var Qn=/^[0-9a-f]{12}$/,$n=/^[0-9A-Za-z]{14}$/,er=(1n<<48n)-1n,tr=(e,t)=>{if(typeof t!=`string`||!t.startsWith(`${e}_`))return;let n=t.slice(e.length+1),r=n.slice(0,12);if(!(!Qn.test(r)||!$n.test(n.slice(12))))return BigInt(`0x${r}`)},nr=(e,t)=>{let n=BigInt(Date.now())*4096n&er,r=tr(e,t)??0n,i=[n,Jn,r].reduce((e,t)=>e>t?e:t);if(i>=er)throw Error(`Ascending ID space exhausted`);let a=i+1n;Jn=a;let o=new Uint8Array(6);for(let e=0;e<6;e++)o[e]=Number(a>>BigInt(40-8*e)&BigInt(255));let s=``;for(let e=0;e<o.length;e++)s+=o[e].toString(16).padStart(2,`0`);return`${e}_${s}${Zn(Xn)}`},rr=e=>nr(e),ir=e=>{let t=e.replace(/\\/g,`/`).replace(/\/+$/g,``).trim();if(!t)return``;let n=new TextEncoder().encode(t),r=``;for(let e of n)r+=String.fromCharCode(e);return`path_${typeof btoa==`function`?btoa(r).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``):t.replace(/[^A-Za-z0-9._-]+/g,`_`)}`},ar=()=>globalThis.crypto===void 0?null:{randomUUID:typeof globalThis.crypto.randomUUID==`function`?()=>globalThis.crypto.randomUUID():void 0,getRandomValues:typeof globalThis.crypto.getRandomValues==`function`?e=>globalThis.crypto.getRandomValues(e):void 0},or=(e=ar())=>{try{let t=e?.randomUUID?.();if(t)return t}catch{}let t=new Uint8Array(16),n=!1;try{e?.getRandomValues&&(e.getRandomValues(t),n=!0)}catch{}if(!n)for(let e=0;e<t.length;e+=1)t[e]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let r=Array.from(t,e=>e.toString(16).padStart(2,`0`));return`${r.slice(0,4).join(``)}-${r.slice(4,6).join(``)}-${r.slice(6,8).join(``)}-${r.slice(8,10).join(``)}-${r.slice(10).join(``)}`},sr=e=>/^[\\/]+$/.test(e),cr=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;if(sr(t))return t.length===1?`/`:null;let n=se(t);return n===`/`?`/`:(n.length>1?n.replace(/\/+$/,``):n)||null},lr=e=>{if(typeof e!=`string`)return``;let t=e.trim();return t?cr(t)??t:``},R={...A,sessionIdLength:A.sessionIDLength,visibleTextLength:1e5,canonicalOutputLength:2e5},ur=e=>typeof e==`string`&&Sn(e),dr=e=>e.replaceAll(`\\`,`/`).split(`/`).at(-1)?.replace(/\.md$/,``)??``,fr=e=>({trigger:`@`,icon:`chat-thread`,label:e}),z=(e,t)=>({trigger:`/`,icon:t,label:e}),pr={session:{kind:`session`,validatePayload:e=>ur(e.sessionId),contributeCanonical:e=>({text:`@session:${e.sessionId}`,semantic:{type:`session`,sessionId:e.sessionId}}),contributeDirectSend:e=>({text:Un(fr(Kn(e.display,`@`))),semantic:{type:`session`,sessionId:e.sessionId}}),decorate:e=>({style:`mentionSession`,visual:Gn(fr(Kn(e.display,`@`)),e.display)}),payloadBudget:()=>void 0,canonical:{matcher:/@session:([A-Za-z0-9_-]+)/g,resolveDisplay:(e,t)=>{let n=e.index===0?``:t.text[e.index-1],r=t.text[e.index+e[0].length]??``;return(n===``||/[\s([{]/.test(n))&&(r===``||/[\s)\]},.!?;:]/.test(r))?L(fr(t.sessionTitles.get(e[1])||e[1])):null},materialize:(e,t,n)=>({id:`session:${e[1]}:${e.index}`,kind:`session`,sessionId:e[1],display:t,start:n,end:n+t.length})}},paste:{kind:`paste`,validatePayload:e=>typeof e.text==`string`&&e.text.length<=R.pastePayloadLength&&typeof e.characterCount==`number`&&Number.isSafeInteger(e.characterCount)&&e.characterCount===sn(e.text)&&typeof e.index==`number`&&Number.isSafeInteger(e.index)&&e.index>=1,contributeCanonical:e=>({text:e.text}),contributeDirectSend:e=>({text:e.text}),decorate:()=>({style:`mentionPaste`}),payloadBudget:e=>({category:`opaque-text`,length:e.text.length})},skill:{kind:`skill`,validatePayload:e=>Cn(e.skillName)&&typeof e.display==`string`&&Wn(e.display,z(e.skillName,`book-open`)),contributeCanonical:e=>({text:`[skill:${e.skillName}]`}),contributeDirectSend:e=>({text:`[skill:${e.skillName}]`}),decorate:e=>({style:`mentionCommand`,skillName:e.skillName,visual:Gn(z(e.skillName,`book-open`),e.display)}),payloadBudget:()=>void 0,canonical:{matcher:/\[skill:([A-Za-z0-9][A-Za-z0-9_-]*)\]/g,resolveDisplay:e=>L(z(e[1],`book-open`)),materialize:(e,t,n)=>({id:`skill:${n}`,kind:`skill`,skillName:e[1],display:t,start:n,end:n+t.length})}},command:{kind:`command`,validatePayload:e=>wn(e.commandName)&&Tn(e.reference)&&typeof e.display==`string`&&Wn(e.display,z(e.commandName,`command`)),contributeCanonical:e=>({text:`[command:${e.reference}]`}),contributeDirectSend:e=>({text:`[command:${e.reference}]`}),decorate:e=>({style:`mentionCommand`,visual:Gn(z(e.commandName,`command`),e.display)}),payloadBudget:()=>void 0,canonical:{matcher:/\[command:([^\]\r\n]+)\]/g,resolveDisplay:e=>{let t=dr(e[1]);return Tn(e[1])&&wn(t)?L(z(t,`command`)):null},materialize:(e,t,n)=>({id:`command:${n}`,kind:`command`,commandName:dr(e[1]),reference:e[1],display:t,start:n,end:n+t.length})}}},B=e=>pr[e],mr=(e,t)=>B(e).validatePayload(t),hr=e=>B(e.kind).contributeCanonical(e),gr=e=>B(e.kind).contributeDirectSend(e),_r=e=>B(e.kind).decorate(e),vr=e=>B(e.kind).payloadBudget(e),yr=e=>B(e.kind).describeResourceIdentity?.(e),br=Object.keys(pr),xr=e=>typeof e==`string`&&br.includes(e),Sr=()=>br.flatMap(e=>{let t=B(e).canonical;return t?[t]:[]}),Cr=e=>{if(e.type===`attachment`)return`attachment:${e.attachmentRefID}`},wr=e=>{let t=new Map;for(let n of e.references){let e=yr(n);e&&t.set(Cr(e),e)}return[...t.values()]},Tr=(e,t)=>{let n=new Map(e.map(e=>[Cr(e),e])),r=new Map(t.map(e=>[Cr(e),e]));return{previous:[...n.values()],next:[...r.values()],added:[...r].flatMap(([e,t])=>n.has(e)?[]:[t]),removed:[...n].flatMap(([e,t])=>r.has(e)?[]:[t])}},Er=(e,t)=>Tr(wr(e),wr(t)),Dr=(e,t=`queue-canonical`)=>{if(e.references.length>R.referenceCount)return{ok:!1,reason:`reference-budget-exceeded`};let n=[...e.references].sort((e,t)=>e.start-t.start),r=0,i=0;for(let t of n){if(t.start<r||t.start<0||t.end<=t.start||t.end>e.text.length||e.text.slice(t.start,t.end)!==t.display)return{ok:!1,reason:`invalid-references`};r=t.end;let n=vr(t);i+=n?.category===`opaque-text`?n.length:0}if(i>R.totalPastePayloadLength)return{ok:!1,reason:`reference-payload-budget-exceeded`};let a=[],o=[],s=0;for(let r of n){s<r.start&&a.push({provenance:`authored`,text:e.text.slice(s,r.start),start:s,end:r.start});let n=t===`direct-send-display`?gr(r):hr(r);n.semantic?(a.push({provenance:`generated-reference`,text:n.text,start:r.start,end:r.end,referenceId:r.id,semantic:n.semantic}),o.push(n.semantic)):a.push({provenance:`reference-payload`,text:n.text,start:r.start,end:r.end,referenceId:r.id}),s=r.end}s<e.text.length&&a.push({provenance:`authored`,text:e.text.slice(s),start:s,end:e.text.length});let c=a.map(e=>e.text).join(``);return c.length>R.canonicalOutputLength?{ok:!1,reason:`canonical-output-too-large`}:{ok:!0,plan:{chunks:a,semantics:o},text:c}},V=(e,t)=>Math.max(0,Math.min(e,t)),Or=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,kr=e=>{if(typeof e!=`object`||!e)return!1;let t=e;return!Or(t.id,R.displayLength)||!Or(t.display,R.displayLength)||!Number.isSafeInteger(t.start)||!Number.isSafeInteger(t.end)||typeof t.kind!=`string`?!1:xr(t.kind)&&mr(t.kind,t)},H=(e,t)=>{let n=[],r=0,i=[],a=Math.min(t.length,R.referenceCount);for(let e=0;e<a;e+=1){let a=t[e];if(!kr(a)){typeof a==`object`&&a&&typeof a.id==`string`&&n.push(a.id),r+=1;continue}i.push({reference:a,index:e})}i.sort((e,t)=>e.reference.start-t.reference.start||e.index-t.index);let o=[],s=new Set,c=0,l=0,u=!1;for(let{reference:t}of i){if(s.has(t.id)||t.start<c||t.start<0||t.end<=t.start||t.end>e.length||e.slice(t.start,t.end)!==t.display){n.push(t.id),r+=1;continue}s.add(t.id),c=t.end;let i=vr(t);if(l+=i?.category===`opaque-text`?i.length:0,l>A.totalPastePayloadLength){n.push(t.id),r+=1,s.delete(t.id),c=o.at(-1)?.end??0,u=!0,l-=i?.category===`opaque-text`?i.length:0;continue}o.push(t)}return r+=t.length-a,{document:{text:e,references:o},rejectedIds:n,rejectedCount:r,budgetExceeded:t.length>R.referenceCount,payloadBudgetExceeded:u}},U=e=>{let t=[...e.references].sort((e,t)=>e.start-t.start||e.end-t.end),n=[],r=new Set,i=0,a=0;for(let o of t){if(!Or(o.id,R.idLength)||!Or(o.display,R.displayLength)||!xr(o.kind)||!Number.isSafeInteger(o.start)||!Number.isSafeInteger(o.end)||r.has(o.id)||o.start<i||o.start<0||o.end<=o.start||o.end>e.text.length||e.text.slice(o.start,o.end)!==o.display)continue;let t=vr(o),s=t?.category===`opaque-text`?t.length:0;a+s>A.totalPastePayloadLength||(r.add(o.id),i=o.end,a+=s,n.push(o))}return{text:e.text,references:n}},Ar=(e,t)=>{if(t.length>A.pastePayloadLength)return!1;let n=H(e.text,e.references);return n.budgetExceeded||n.payloadBudgetExceeded?!1:n.document.references.reduce((e,t)=>{let n=vr(t);return e+(n?.category===`opaque-text`?n.length:0)},0)+t.length<=A.totalPastePayloadLength},jr=(e,t,n)=>{let r=e.filter(e=>t===n?t>e.start&&t<e.end:e.start<n&&e.end>t);return r.length===0?{start:t,end:n}:{start:Math.min(t,...r.map(e=>e.start)),end:Math.max(n,...r.map(e=>e.end))}};function Mr(e,t,n,r,i={}){let a=U(e);if(!mr(r.kind,r))return{document:a,caret:V(n,a.text.length),edit:{oldStart:t,oldEnd:n,newEnd:n}};let o=V(t,a.text.length),s=Math.max(o,V(n,a.text.length)),c=jr(a.references,o,s),l=a.text.slice(0,c.start),u=a.text.slice(c.end),d=!!i.padDocumentEdges&&i.padLeadingDocumentEdge!==!1,f=!!i.padDocumentEdges,p=i.inlineBoundaries&&(l.length>0||d)&&!/\s$/.test(l)?` `:``,m=i.inlineBoundaries&&(u.length>0||f)&&!/^\s/.test(u)?` `:``,ee=`${l}${p}${r.display}${m}${u}`,h={...r,start:c.start+p.length,end:c.start+p.length+r.display.length},g=p.length+r.display.length+m.length-(c.end-c.start);return{document:U({text:ee,references:[...a.references.filter(e=>e.end<=c.start||e.start>=c.end).map(e=>e.start>=c.end?{...e,start:e.start+g,end:e.end+g}:e),h]}),caret:h.end,edit:{oldStart:c.start,oldEnd:c.end,newEnd:c.start+p.length+r.display.length+m.length}}}var Nr=(e,t)=>e<=t.oldStart?e:e>=t.oldEnd?e+t.newEnd-t.oldEnd:t.newEnd,Pr=(e,t,n=t.length,r=n)=>{let i=U(e),a=0,o=Math.min(i.text.length,t.length);for(;a<o&&i.text[a]===t[a];)a+=1;let s=0;for(;s<i.text.length-a&&s<t.length-a&&i.text[i.text.length-s-1]===t[t.length-s-1];)s+=1;let c={oldStart:a,oldEnd:i.text.length-s,newEnd:t.length-s},l=jr(i.references,c.oldStart,c.oldEnd),u=l.start!==c.oldStart||l.end!==c.oldEnd,d=i.references.filter(e=>e.start<l.end&&e.end>l.start),f=t.slice(c.oldStart,c.newEnd),p=`${i.text.slice(0,l.start)}${f}${i.text.slice(l.end)}`,m={oldStart:l.start,oldEnd:l.end,newEnd:l.start+f.length},ee=m.newEnd-m.oldEnd,h=i.references.filter(e=>e.end<=l.start||e.start>=l.end).map(e=>e.start>=l.end?{...e,start:e.start+ee,end:e.end+ee}:e),g=(e,n)=>{let r=V(e,t.length),i=c.newEnd+l.end-c.oldEnd;return V(r<=l.start?r:r<c.oldStart||r===c.oldStart&&n===`start`?l.start:r<c.newEnd||r===c.newEnd&&n===`start`?l.start+r-c.oldStart:r<=i?m.newEnd:m.newEnd+r-i,p.length)},te=g(n,`start`),ne=Math.max(te,g(r,`end`)),re=U({text:p,references:h});return{document:re,edit:m,requiresTextCorrection:u,selectionStart:te,selectionEnd:ne,caret:ne,mapCaret:e=>V(Nr(e,m),re.text.length),removedReferences:d}},Fr=(e,t,n)=>{let r=jr(n,e,t);return r.start===e&&r.end===t?null:r},Ir=(e,t,n)=>{let r=n,i=n;if(t===`Backspace`){for(;r>0&&/\s/.test(e[r-1]);)--r;for(;r>0&&!/\s/.test(e[r-1]);)--r}else{for(;i<e.length&&/\s/.test(e[i]);)i+=1;for(;i<e.length&&!/\s/.test(e[i]);)i+=1}return{start:r,end:i}},Lr=(e,t)=>{let n=U(e),r=V(t.selectionStart,n.text.length),i=Math.max(r,V(t.selectionEnd,n.text.length)),a=r===i?t.altKey?Ir(n.text,t.key,r):t.key===`Backspace`?{start:Math.max(0,r-1),end:r}:{start:r,end:Math.min(n.text.length,r+1)}:{start:r,end:i},o=Fr(a.start,a.end,n.references);if(!o)return null;let s=n.references.filter(e=>e.start<o.end&&e.end>o.start);return{document:U({text:`${n.text.slice(0,o.start)}${n.text.slice(o.end)}`,references:n.references.filter(e=>!s.includes(e)).map(e=>e.start>=o.end?{...e,start:e.start-(o.end-o.start),end:e.end-(o.end-o.start)}:e)}),caret:o.start,edit:{oldStart:o.start,oldEnd:o.end,newEnd:o.start},removedIds:s.map(e=>e.id),removedReferences:s}},Rr=(e,t)=>{let n=t,r=t;for(;n>0&&/\s/.test(e[n-1]);)--n;for(;r<e.length&&/\s/.test(e[r]);)r+=1;let i=n>0&&r<e.length?` `:``;return{text:`${e.slice(0,n)}${i}${e.slice(r)}`,caret:n+i.length}},zr=(e,t=`queue-canonical`)=>{let n=H(e.text,e.references);if(n.budgetExceeded)return{ok:!1,reason:`reference-budget-exceeded`};if(n.payloadBudgetExceeded)return{ok:!1,reason:`reference-payload-budget-exceeded`};if(n.rejectedCount>0)return{ok:!1,reason:`invalid-references`};let r=Dr(n.document,t);return r.ok?{ok:!0,text:r.text,chunks:r.plan.chunks,semantics:r.plan.semantics}:r},Br=(e,t)=>e.match.index-t.match.index||e.adapterOrder-t.adapterOrder||e.matchOrder-t.matchOrder,Vr=e=>{if(e.length>R.canonicalOutputLength||e.length>R.visibleTextLength)return null;let t=[],n=0;for(let[r,i]of Sr().entries()){i.matcher.lastIndex=0;let a,o=0;for(;(a=i.matcher.exec(e))!==null;){if(n+=1,n>R.referenceCount)return null;let e={codec:i,match:a,adapterOrder:r,matchOrder:o};o+=1;let s=t.findIndex(t=>Br(e,t)<0);s===-1?t.push(e):t.splice(s,0,e)}}return t},Hr=(e,t)=>{let n=H(e.text,e.references).document,r=Vr(n.text);if(r===null)return n;let i={text:n.text,sessionTitles:t},a=[],o=``,s=0,c=0,l=new Set(n.references.map(e=>e.id)),u=[];for(let e of r){let{match:t,codec:r}=e,a=t.index,o=a+t[0].length;if(a<c||n.references.some(e=>e.start<o&&e.end>a))continue;let s=r.resolveDisplay(t,i);if(s===null||s.length>R.displayLength)continue;let d=r.materialize(t,s,a),f=d.id;for(;l.has(f);)f=`materialized:${f}`;l.add(f),u.push({start:a,end:o,display:s,reference:{...d,id:f}}),c=o}s=0;let d=0;for(let e of u){o+=`${n.text.slice(s,e.start)}${e.display}`;let t=e.start+d;a.push({...e.reference,start:t,end:t+e.display.length}),d+=e.display.length-(e.end-e.start),s=e.end}if(o+=n.text.slice(s),o.length>R.visibleTextLength)return n;let f=n.references.map(e=>{let t=u.filter(t=>t.end<=e.start).reduce((e,t)=>e+t.display.length-(t.end-t.start),0);return{...e,start:e.start+t,end:e.end+t}});return H(o,[...f,...a]).document},Ur=(e,t)=>Hr({text:e,references:[]},t),Wr=(e,t,n=`
|
|
2
|
-
|
|
3
|
-
`)=>{let r=H(e.text,e.references).document,i=H(t.text,t.references).document;if(r.text===i.text&&JSON.stringify(r.references)===JSON.stringify(i.references))return i;let a=new Set(r.references.map(e=>e.id)),o=e=>{let t=e;for(;a.has(t);)t=`recovered:${t}`;return a.add(t),t},s=r.text.length+n.length;return H(`${r.text}${n}${i.text}`,[...r.references,...i.references.map(e=>({...e,id:o(e.id),start:e.start+s,end:e.end+s}))]).document},Gr=e=>({state:`unbound-legacy`,sessionID:e}),W=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,lr(e.directory),e.sessionID,e.deliveryTarget??{kind:`primary`}])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,Kr=(e,t)=>e.queuedMessages[W(t)]??qr,qr=[],Jr=3e4,Yr=`queue`,Xr=e=>e===`steer`||e===`queue`,Zr=(e,t)=>e===`immediate`?`steer`:Xr(e)?e:t===!1?`steer`:`queue`,Qr=[],$r=(e,t)=>e.pendingAdmissions[W(t)]??Qr,ei=e=>`${e}-${or()}`,ti=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,ni=(e,t,n=[])=>{if(!ti(e)||!Object.keys(e).every(e=>e===`text`||e===`references`))return;let r=e;if(typeof r.text!=`string`)return;let i=Dn(r.text,r.references),a=i&&zr(i,`queue-canonical`);if(!a||!a.ok||a.text!==t)return;let o=new Set(n.map(e=>e.id));return wr(i).every(e=>o.has(e.attachmentRefID))?i:void 0},ri=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=xn(t.text,e);if(n)return n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},ii=(e,t)=>{let n=ti(e)&&typeof e.content==`string`?e:t,r=ni(n.composerDocument,n.content,Array.isArray(n.attachments)?n.attachments:[]),i=ri(n.composerMentions,r);return{content:n.content,...r?{composerDocument:r}:{},...r&&i?.length?{composerMentions:i}:{},...Array.isArray(n.attachments)?{attachments:n.attachments}:{},...ti(n.sendConfig)?{sendConfig:n.sendConfig}:{}}},ai=e=>ii(void 0,e),oi=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&(!t.messageID||e.messageID===t.messageID),G=e=>e.status===`sending`||e.status===`reconciling`,si=te(),ci=()=>si?.flush()??!0,li=`quiescing`,ui=new Set,di=new Set,fi=e=>{if(li!==e){li=e;for(let e of di)e()}},pi=e=>{if(!(!e||ui.has(e))){ui.add(e);for(let e of di)e()}},mi=e=>e.state===`bound`&&ui.has(e.transportIdentity),K=e=>li===`open`&&(!e||!mi(e)),hi=(e,t=Date.now())=>({reconciliationStartedAt:e.reconciliationStartedAt??t,reconciliationDeadlineAt:e.reconciliationDeadlineAt??(e.reconciliationStartedAt??t)+Jr,reconciliationChecks:Math.max(0,Math.floor(e.reconciliationChecks??0))}),gi=(e,t,n)=>{let r=t.queueItemID??(t.id||ei(`queued`)),i=!t.owner&&(t.status===`sending`||t.status===`reconciling`),a=i?`unresolved`:t.status===`sending`?`reconciling`:t.status===`retrying`||t.status===`reconciling`||t.status===`unresolved`||t.status===`failed`?t.status:`queued`,o=typeof t.messageID==`string`&&t.messageID.startsWith(`msg_`)?t.messageID:rr(`msg`),s=ni(t.composerDocument,t.content,t.attachments),c=ri(t.composerMentions,s);return{...t,...s?{composerDocument:s}:{composerDocument:void 0},...s&&c?.length?{composerMentions:c}:{composerMentions:void 0},id:r,queueItemID:r,operationID:t.operationID??ei(`operation`),messageID:o,owner:n,status:a,attemptCount:Math.max(0,Math.floor(t.attemptCount??0)),...t.status===`sending`||t.status===`reconciling`?hi(t):{},...i||a===`reconciling`&&t.status===`sending`?{failure:{kind:`ambiguous-dispatch`,recovery:ii(t.failure?.recovery,t)}}:{}}},_i=e=>{let t=e??{},n={};for(let[e,r]of Object.entries(t.queuedMessages??{})){if(!Array.isArray(r))continue;let t;if(e.startsWith(`bound:`)||e.startsWith(`unbound-legacy:`)){let n=r[0],i=e.startsWith(`unbound-legacy:`)?(()=>{try{let t=JSON.parse(e.slice(15));return Array.isArray(t)&&typeof t[0]==`string`?t[0]:e}catch{return e}})():e;t=n?.owner?.state===`bound`?n.owner:Gr(n?.owner?.sessionID??i)}else t=Gr(e);for(let e of r){let r=e.owner?.state===`bound`?e.owner:t,i=W(r);(n[i]??=[]).push(gi(r.sessionID,e,r))}}return{queuedMessages:n,followUpBehavior:Zr(t.followUpBehavior,t.queueModeEnabled??null)}},q=(e,t,n,r)=>{if(mi(t))return;let i=W(t);e(e=>{let t=e.queuedMessages[i],a=t?.findIndex(e=>W(e.owner)===i&&oi(e,n))??-1;if(a<0||!t)return e;let o=r(t[a]);if(o===t[a])return e;let s=t.slice();return s[a]=o,{queuedMessages:{...e.queuedMessages,[i]:s}}})},vi=re()(ae(ie((e,t)=>({queuedMessages:{},followUpBehavior:Yr,pendingAdmissions:{},addToQueue:(t,n)=>{if(!K(t))return{ok:!1,reason:`invalid-composer-document`};let r=ni(n.composerDocument,n.content,n.attachments);if(n.composerDocument!==void 0&&!r)return{ok:!1,reason:`invalid-composer-document`};let i=ri(n.composerMentions,r);if(n.composerMentions!==void 0&&!i)return{ok:!1,reason:`invalid-composer-mentions`};n={...n,...r?{composerDocument:r}:{},...i?.length?{composerMentions:i}:{}};let a={...n,id:ei(`queued`),queueItemID:``,operationID:ei(`operation`),messageID:rr(`msg`),createdAt:Date.now(),owner:t,status:`queued`,attemptCount:0};a.queueItemID=a.id;let o=W(t);return e(e=>({queuedMessages:{...e.queuedMessages,[o]:[...e.queuedMessages[o]??[],a]}})),{ok:!0,item:a}},removeFromQueue:(n,r,i)=>{if(!K(n)||!i)return!1;let a=W(n),o=t().queuedMessages[a];if(!o||o.length===0)return!0;let s=o.find(e=>(e.queueItemID===r||e.id===r)&&W(e.owner)===a);if(s&&s.operationID!==i)return!1;let c=o.find(e=>(e.queueItemID===r||e.id===r)&&e.operationID===i&&W(e.owner)===a);return!c||!G(c)&&(e(e=>{let t=e.queuedMessages[a];if(!t)return e;let n=t.filter(e=>e!==c);if(n.length===t.length)return e;if(n.length)return{queuedMessages:{...e.queuedMessages,[a]:n}};let{[a]:r,...i}=e.queuedMessages;return{queuedMessages:i}}),!Kr(t(),n).some(e=>e===c||(e.queueItemID===r||e.id===r)&&e.operationID===i))},reorderQueue:(t,n,r,i)=>{if(!K(t)||!i)return;let a=W(t);e(e=>{let t=e.queuedMessages[a],o=t?.findIndex(e=>(e.id===n||e.queueItemID===n)&&e.operationID===i&&W(e.owner)===a)??-1,s=t?.findIndex(e=>(e.id===r||e.queueItemID===r)&&W(e.owner)===a)??-1;if(!t||o<0||s<0||o===s||G(t[o])||G(t[s]))return e;let c=t.slice(),[l]=c.splice(o,1);return c.splice(s,0,l),{queuedMessages:{...e.queuedMessages,[a]:c}}})},popToInput:(e,n,r)=>{if(!K(e)||!r)return null;let i=Kr(t(),e).find(t=>(t.id===n||t.queueItemID===n)&&t.operationID===r&&W(t.owner)===W(e));return!i||G(i)||!t().removeFromQueue(e,i.queueItemID,i.operationID)?null:i},clearQueue:n=>{if(!K(n))return!1;let r=W(n),i=t().queuedMessages[r],a=(t().pendingAdmissions[r]??[]).length>0;return(!i||i.length===0)&&!a||!i?.some(G)&&(e(e=>{if(e.queuedMessages[r]?.some(G))return e;let t={...e.queuedMessages},n={...e.pendingAdmissions};return delete t[r],delete n[r],{queuedMessages:t,pendingAdmissions:n}}),(t().queuedMessages[r]??[]).length===0)},clearAllQueues:()=>{K()&&e(e=>{let t={},n=!1;for(let[r,i]of Object.entries(e.queuedMessages)){if(i[0]&&mi(i[0].owner)){t[r]=i;continue}let e=i.filter(G);e.length&&(t[r]=e),e.length!==i.length&&(n=!0)}let r=Object.keys(e.pendingAdmissions).length>0;return n||r?{queuedMessages:t,pendingAdmissions:{}}:e})},setFollowUpBehavior:t=>{K()&&(e({followUpBehavior:t}),io({followUpBehavior:t}))},getQueueForScope:e=>Kr(t(),e),getPendingAdmissionsForScope:e=>$r(t(),e),stageAdmission:(t,n)=>{if(!K(t)||!n.requestID||!n.queueItemID||!n.operationID||!n.messageID||typeof n.content!=`string`)return;let r=ni(n.composerDocument,n.content);if(n.composerDocument!==void 0&&!r)return;let i=ri(n.composerMentions,r);if(n.composerMentions!==void 0&&!i)return;let a=W(t),o={kind:`pending-admission`,requestID:n.requestID,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`admitting`,attachmentCount:Math.max(0,Math.floor(n.attachmentCount??0)),...r?{composerDocument:r}:{},...r&&i?.length?{composerMentions:i}:{}};e(e=>{let t=[...(e.pendingAdmissions[a]??[]).filter(e=>e.requestID!==o.requestID&&e.queueItemID!==o.queueItemID),o];return{pendingAdmissions:{...e.pendingAdmissions,[a]:t}}})},unstageAdmission:(t,n)=>{if(!n)return;let r=W(t);e(e=>{let t=e.pendingAdmissions[r];if(!t?.length)return e;let i=t.filter(e=>e.requestID!==n);if(i.length===t.length)return e;if(i.length)return{pendingAdmissions:{...e.pendingAdmissions,[r]:i}};let{[r]:a,...o}=e.pendingAdmissions;return{pendingAdmissions:o}})},confirmAdmission:(n,r)=>{if(!K(n)||!r.requestID||!r.sendConfig?.providerID||!r.sendConfig?.modelID)return{ok:!1,reason:`invalid-composer-document`};let i=W(n),a=(t().pendingAdmissions[i]??[]).find(e=>e.requestID===r.requestID);if(!a)return{ok:!1,reason:`invalid-composer-document`};let o=ni(a.composerDocument,a.content,r.attachments);if(a.composerDocument!==void 0&&!o)return{ok:!1,reason:`invalid-composer-document`};let s=ri(a.composerMentions,o);if(a.composerMentions!==void 0&&!s)return{ok:!1,reason:`invalid-composer-mentions`};let c={id:a.queueItemID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID,content:a.content,createdAt:a.createdAt,owner:n,status:`queued`,attemptCount:0,sendConfig:r.sendConfig,...o?{composerDocument:o}:{},...o&&s?.length?{composerMentions:s}:{},...r.attachments?.length?{attachments:r.attachments}:{}};return e(e=>{let t=(e.pendingAdmissions[i]??[]).filter(e=>e.requestID!==r.requestID);return{pendingAdmissions:t.length?{...e.pendingAdmissions,[i]:t}:(()=>{let{[i]:t,...n}=e.pendingAdmissions;return n})(),queuedMessages:{...e.queuedMessages,[i]:[...e.queuedMessages[i]??[],c]}}}),{ok:!0,item:c}},bindLegacyQueue:(t,n)=>{if(!K(t)||!K(n)||t.state!==`unbound-legacy`||n.state!==`bound`||t.sessionID!==n.sessionID)return[];let r=W(t),i=W(n),a=[];return e(e=>{let t=e.queuedMessages[r];if(!t||(a=t.filter(e=>!G(e)),a.length===0))return e;let o=t.filter(G),s={...e.queuedMessages,[i]:[...a.map(e=>({...e,owner:n})),...e.queuedMessages[i]??[]]};return o.length?s[r]=o:delete s[r],{queuedMessages:s}}),a.map(e=>({...e,owner:n}))},markQueueItemSendAttempt:(t,n)=>{K(t)&&q(e,t,n,e=>e.status===`queued`||e.status===`retrying`&&(e.nextAttemptAt??0)<=Date.now()?{...e,status:`sending`,attemptCount:e.attemptCount+1,nextAttemptAt:void 0,failure:void 0}:e)},markQueueItemPreDispatchRetry:(t,n,r,i)=>q(e,t,n,e=>e.status===`sending`?{...e,status:`retrying`,nextAttemptAt:r,failure:{kind:`pre-dispatch`,recovery:i?.recovery??ai(e)}}:e),markQueueItemReconciling:(t,n,r)=>q(e,t,n,e=>e.status===`sending`?{...e,status:`reconciling`,nextAttemptAt:void 0,...hi(e),reconciliationNextCheckAt:void 0,failure:{kind:`ambiguous-dispatch`,recovery:r?.recovery??ai(e)}}:e),recordQueueItemReconciliationCheck:(t,n)=>q(e,t,n,e=>e.status===`reconciling`&&oi(e,n)?{...e,reconciliationChecks:(e.reconciliationChecks??0)+1,reconciliationNextCheckAt:Date.now()+2e3}:e),resolveQueueItemReconciliation:(t,n)=>q(e,t,n,e=>e.status===`reconciling`&&oi(e,n)?{...e,status:`unresolved`,nextAttemptAt:void 0}:e),markQueueItemDefinitiveFailure:(t,n,r)=>q(e,t,n,e=>e.status===`sending`?{...e,status:`failed`,nextAttemptAt:void 0,failure:{kind:`definitive`,recovery:r?.recovery??ai(e)}}:e),resetQueueItemForDispatch:(t,n)=>{K(t)&&q(e,t,n,e=>e.status!==`failed`&&e.status!==`unresolved`&&e.status!==`retrying`?e:{...e,status:`queued`,nextAttemptAt:void 0,failure:void 0,reconciliationStartedAt:void 0,reconciliationDeadlineAt:void 0,reconciliationChecks:void 0,reconciliationNextCheckAt:void 0})},beginQueueItemDispatch:(t,n,r,i,a=Date.now())=>{if(!K(t)||!r.startsWith(`msg_`))return null;let o=W(t),s=null;return e(e=>{let t=e.queuedMessages[o],c=i?t?.findIndex(e=>W(e.owner)===o&&oi(e,n))??-1:0,l=c>=0?t?.[c]:void 0,u=l?.status===`queued`||l?.status===`retrying`&&(i||(l.nextAttemptAt??0)<=a)||i&&(l?.status===`failed`||l?.status===`unresolved`);if(!l||W(l.owner)!==o||!oi(l,n)||!u||t?.some(G))return e;s={...l,messageID:r,status:`sending`,attemptCount:l.attemptCount+1,nextAttemptAt:void 0,failure:void 0,reconciliationStartedAt:void 0,reconciliationDeadlineAt:void 0,reconciliationChecks:void 0,reconciliationNextCheckAt:void 0};let d=t.slice();return d.splice(c,1),d.unshift(s),{queuedMessages:{...e.queuedMessages,[o]:d}}}),s},confirmQueueItem:(t,n)=>{if(mi(t))return;let r=W(t);e(e=>{let t=e.queuedMessages[r],i=t?.find(e=>{let t=!n.operationID||e.operationID===n.operationID,r=!n.messageID||e.messageID===n.messageID,i=!n.queueItemID||e.queueItemID===n.queueItemID;return t&&r&&i});if(!i||!n.operationID&&!n.messageID)return e;let a=t.filter(e=>e!==i);if(a.length)return{queuedMessages:{...e.queuedMessages,[r]:a}};let{[r]:o,...s}=e.queuedMessages;return{queuedMessages:s}})}}),{name:`message-queue-store`,version:4,storage:si,partialize:e=>({queuedMessages:e.queuedMessages,followUpBehavior:e.followUpBehavior}),migrate:_i,merge:(e,t)=>({...t,..._i(e),pendingAdmissions:t.pendingAdmissions})}),{name:`message-queue-store`})),yi=(e,t)=>{let n=vi.getState().queuedMessages,r=[],i=[];for(let[a,o]of Object.entries(n)){let n=o[0]?.owner;if(!n||n.state!==`unbound-legacy`)continue;let s=t(n.sessionID);if(!s){i.push(n.sessionID);continue}r.push({sourceKey:a,target:{state:`bound`,transportIdentity:e,directory:s,sessionID:n.sessionID},items:o})}return!e||i.length?{ok:!1,unresolvedSessionIDs:i}:r.length?(vi.setState(e=>{let t={...e.queuedMessages};for(let e of r){let n=W(e.target);t[n]=[...e.items.map(t=>({...t,owner:e.target})),...t[n]??[]],delete t[e.sourceKey]}return{queuedMessages:t}}),{ok:!0,moved:r.reduce((e,t)=>e+t.items.length,0)}):{ok:!0,moved:0}},bi=ce(),xi=e(oe(),1),Si=`directoryTreeShowHidden`,Ci=`directory-show-hidden-change`,wi=()=>{if(typeof window>`u`)return!0;try{let e=u().getItem(Si);return e===null||e===`true`}catch{return!0}},Ti=()=>{typeof window>`u`||window.dispatchEvent(new Event(Ci))},Ei=(e,t={})=>{if(!(typeof window>`u`)){try{u().setItem(Si,e?`true`:`false`),Ti()}catch{}t.persist!==!1&&io({directoryShowHidden:e})}},Di=()=>{let e=(0,bi.c)(2),[t,n]=xi.useState(wi),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>{n(wi())};return window.addEventListener(`storage`,e),window.addEventListener(Ci,e),()=>{window.removeEventListener(`storage`,e),window.removeEventListener(Ci,e)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),xi.useEffect(r,i),t},Oi=`filesViewShowGitignored`,ki=`files-view-show-gitignored-change`,Ai=()=>{if(typeof window>`u`)return!1;try{return u().getItem(Oi)===`true`}catch{return!1}},ji=()=>{typeof window>`u`||window.dispatchEvent(new Event(ki))},Mi=(e,t={})=>{if(!(typeof window>`u`)){try{u().setItem(Oi,e?`true`:`false`),ji()}catch{}t.persist!==!1&&io({filesViewShowGitignored:e})}},Ni=()=>{let e=(0,bi.c)(2),[t,n]=xi.useState(Ai),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>{n(Ai())};return window.addEventListener(`storage`,e),window.addEventListener(ki,e),()=>{window.removeEventListener(`storage`,e),window.removeEventListener(ki,e)}},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),xi.useEffect(r,i),t},Pi=e=>{if(!e||typeof e!=`object`)return null;let t={};return typeof e.showReasoningTraces==`boolean`&&(t.showReasoningTraces=e.showReasoningTraces),typeof e.collapsibleThinkingBlocks==`boolean`&&(t.collapsibleThinkingBlocks=e.collapsibleThinkingBlocks),Object.keys(t).length>0?t:null},Fi=e=>{if(!e||typeof e!=`object`)return null;let t=e;return{showReasoningTraces:t.showReasoningTraces,collapsibleThinkingBlocks:t.collapsibleThinkingBlocks}},Ii=e=>{let t=h.getState();typeof e.showReasoningTraces==`boolean`&&t.setShowReasoningTraces(e.showReasoningTraces),typeof e.collapsibleThinkingBlocks==`boolean`&&t.setCollapsibleThinkingBlocks(e.collapsibleThinkingBlocks)},Li=async()=>{if(typeof window>`u`)return null;let e=localStorage.getItem(`appearance-preferences`);if(!e)return null;try{return Pi(Fi(JSON.parse(e)))}catch(e){return console.warn(`Failed to parse stored appearance preferences:`,e),null}},Ri=[{name:`explore`,icon:`compass-3`,labelKey:`chat.draftPresets.explore.label`,command:`/explore`},{name:`catch-up`,icon:`history`,labelKey:`chat.draftPresets.catchup.label`,command:`/catch-up`},{name:`weigh`,icon:`scales-3`,labelKey:`chat.draftPresets.weigh.label`,command:`/weigh`},{name:`craft-goal`,icon:`target`,labelKey:`chat.draftPresets.craftGoal.label`,command:`/craft-goal`},{name:`debug`,icon:`bug`,labelKey:`chat.draftPresets.debug.label`,command:`/debug`},{name:`review`,icon:`search-eye`,labelKey:`chat.draftPresets.review.label`,command:`/workspace-review`}],zi=new Map(Ri.map(e=>[e.name,e])),Bi=e=>zi.get(e),Vi=[{type:`command`,name:`explore`},{type:`command`,name:`catch-up`},{type:`command`,name:`weigh`},{type:`command`,name:`debug`},{type:`command`,name:`review`}],Hi=`terminal-box`,Ui=`book-open`,Wi=e=>`${e.type}:${e.name}`,Gi=(e,t)=>e.type===t.type&&e.name===t.name,Ki=e=>{let t=e.replace(/^\//,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();return t?t.charAt(0).toUpperCase()+t.slice(1):e},qi=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=e.type===`command`||e.type===`skill`?e.type:null,a=typeof e.name==`string`?e.name.trim():``;if(!i||!a)continue;let o=`${i}:${a}`;n.has(o)||(n.add(o),t.push({type:i,name:a}))}return t},Ji=`oc.rt.`,Yi=e=>{try{return btoa(unescape(encodeURIComponent(e))).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/g,``)}catch{return encodeURIComponent(e)}},J=(e,t=r())=>`${Ji}${Yi(t.trim().length>0?t.trim():`default`)}.${e}`,Xi=(e,t,n=r())=>e?e===J(t,n):!1,Zi=()=>{if(typeof window>`u`)return!0;let e=window.__OPENCHAMBER_API_BASE_URL__,t=window.__OPENCHAMBER_LOCAL_ORIGIN__;if(typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim())try{return new URL(e).origin===new URL(t).origin}catch{return!1}try{if(T())return!0}catch{}if(typeof e==`string`&&e.trim())try{let t=new URL(e).hostname;if(t!==`localhost`&&t!==`127.0.0.1`&&t!==`::1`)return!1}catch{return!1}return!0},Qi=(e,t)=>{let n=t?.storage??(typeof localStorage<`u`?localStorage:{getItem:()=>null}),i=t?.transport??r(),a=n.getItem(J(e,i));return a===null?Zi()?n.getItem(e):null:a},Y=(e,t,n)=>{let i=n?.storage??(typeof localStorage<`u`?localStorage:{setItem:()=>void 0}),a=n?.transport??r();i.setItem(J(e,a),t)},$i=e=>{let t;try{t=s()}catch{return}let n=t=>t===null?null:JSON.parse(t,e?.reviver),i=e=>t.getItem(e);return{getItem:e=>{let t=J(e,r()),a=i(t);if(a instanceof Promise)return a.then(t=>{if(t!==null)return n(t);if(!Zi())return null;let r=i(e);return r instanceof Promise?r.then(n):n(r)});if(a!==null)return n(a);if(!Zi())return null;let o=i(e);return o instanceof Promise?o.then(n):n(o)},setItem:(n,i)=>{let a=J(n,r());t.setItem(a,JSON.stringify(i,e?.replacer))},removeItem:e=>{let n=J(e,r());t.removeItem(n)}}},ea=512,ta=4096,na=64,ra=2e5,ia=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`,`custom`],aa=[`defaultModel`,`defaultVariant`,`defaultAgent`,`autoCreateWorktree`,`gitmojiEnabled`,`defaultFileViewerPreview`,`zenModel`,`messageStreamTransport`,`sttProvider`,`sttServerUrl`,`sttModel`,`sttLocalModel`,`sttLanguage`,`responseStyleEnabled`,`responseStylePreset`,`responseStyleCustomInstructions`],oa=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype,sa=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ca=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();return n.length<=t?n:void 0},la=e=>{let t=ca(e,ta);if(t!==void 0)try{let e=new URL(t);return(e.protocol===`http:`||e.protocol===`https:`)&&!e.username&&!e.password?t:void 0}catch{return}},ua=(e,t)=>typeof e==`string`&&t.includes(e)?e:void 0,da=e=>typeof e==`boolean`?e:void 0,fa=(e,t)=>{let n=e[t];switch(t){case`autoCreateWorktree`:case`gitmojiEnabled`:case`defaultFileViewerPreview`:case`responseStyleEnabled`:return da(n);case`messageStreamTransport`:return ua(n,[`auto`,`ws`,`sse`]);case`sttProvider`:return ua(n,[`local`,`openai-compatible`]);case`sttServerUrl`:return la(n);case`sttLanguage`:return ca(n,na);case`responseStyleCustomInstructions`:return ca(n,ra);case`responseStylePreset`:return ua(n,ia);default:return ca(n,ea)}},pa=e=>{if(!oa(e))throw Error(`Invalid settings bootstrap response`);if(!sa(e,`schemaVersion`)||e.schemaVersion!==1)throw Error(`Unsupported settings bootstrap schema version`);let t={schemaVersion:1};for(let n of aa){if(!sa(e,n))continue;let r=fa(e,n);r!==void 0&&Object.assign(t,{[n]:r})}return t},ma=e=>{if(!oa(e))throw Error(`Invalid settings bootstrap patch`);for(let t of Object.keys(e))if(!aa.includes(t))throw Error(`Invalid settings bootstrap patch`);let t=pa({schemaVersion:1,...e}),n={};for(let r of aa)if(sa(e,r)){if(!sa(t,r))throw Error(`Invalid settings bootstrap patch`);Object.assign(n,{[r]:t[r]})}return n},ha=e=>{if(!oa(e))return{};let t={};for(let n of aa){if(!sa(e,n))continue;let r=fa(e,n);r!==void 0&&Object.assign(t,{[n]:r})}return t},ga=new le({defaultOptions:{queries:{staleTime:3e4,gcTime:3e5,retry:1,refetchOnWindowFocus:!1}}}),_a={runtime:()=>[r()],scoped:(...e)=>[r(),...e],quota:e=>[r(),e],commands:{list:(e,t=r())=>[t,`commands`,e]},agents:{list:(e,t=r())=>[t,`agents`,e],raw:(e,t=r())=>[t,`agents`,`raw`]},configCatalog:{providers:(e,t=r())=>[t,`configCatalog`,`providers`,e]},providers:{list:(e,t=r())=>[t,`providers`,e]},skills:{list:(e,t=r())=>[t,`skills`,e]},skillsCatalog:{sources:(e,t=r())=>[t,`skillsCatalog`,`sources`,X(e)],source:(e,t,n=r())=>[n,`skillsCatalog`,`source`,X(e),t]},messageQueue:{status:(e=r())=>[e,`messageQueue`,`status`],snapshot:(e=r())=>[e,`messageQueue`,`snapshot`],scope:(e,t,n=r())=>[n,`messageQueue`,`scope`,e,t]},mcp:{configs:(e,t=r())=>[t,`mcp`,`configs`,X(e)],status:(e,t=r())=>[t,`mcp`,`status`,X(e)]},github:{auth:(e=r())=>[e,`github`,`auth`]},git:{branches:(e,t=r())=>[t,`git`,`branches`,X(e)],remotes:(e,t=r())=>[t,`git`,`remotes`,X(e)]},sessionIndex:{snapshot:(e=r())=>[e,`sessionIndex`,`snapshot`]},sessionStatus:{snapshot:(e,t=r())=>[t,`sessionStatus`,`snapshot`,X(e)]},sessionTurnChanges:{file:(e,t,n,i,a,o=r())=>[o,`sessionTurnChanges`,`file`,X(e),t,n,i,typeof a==`number`&&Number.isFinite(a)?Math.max(0,Math.trunc(a)):null]},sessionActive:{snapshot:(e,t)=>[e,`sessionActive`,`snapshot`,t]},sessionTranscript:{infinite:(e,t,n=r(),i=g())=>[n,i,`session-transcript`,X(e)??``,t],page:(e,t,n,i,a=r(),o=g())=>[a,o,`sessionMessages`,`page`,X(e)??``,t,n,i?.trim()?i.trim():`tail`],tailTask:(e,t,n,i=r(),a=g())=>[i,a,`session-transcript-task`,`tail`,X(e)??``,t,n],reconcileTask:(e,t,n,i=r(),a=g())=>[i,a,`session-transcript-task`,`reconcile`,X(e)??``,t,n],checkpoint:(e,t,n=r(),i=g())=>[n,i,`session-transcript-checkpoint`,X(e)??``,t]},plugins:{list:(e,t=r())=>[t,`plugins`,`list`,e],registry:(e,t,n=!1,i=r())=>[i,`plugins`,`registry`,e,va(t),n],file:(e,t,n=r())=>[n,`plugins`,`file`,e,t]},files:{directory:(e,t,n,i=r())=>[i,`files`,`directory`,Z(e),Z(t),!!n],search:(e,t,n,i,a,o=r())=>[o,`files`,`search`,Z(e),t.trim(),n??null,!!i,!!a],content:(e,t,n,i=r())=>ya(`content`,e,t,n,i),stat:(e,t,n,i=r())=>ya(`stat`,e,t,n,i)}},va=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},ya=(e,t,n,r,i)=>[i,`files`,e,Z(t),Z(n),!!r?.allowOutsideWorkspace,r?.outsideFileGrant??null,!!r?.optional,Z(r?.directory)],ba=async(e,t)=>{let n=await Ue(`/api/quota/${encodeURIComponent(e)}`,{signal:t}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error||`Failed to fetch quota`);return r},xa=e=>t(t=>{a(t)&&e.clear()}),Sa=class extends Error{status;constructor(e){super(`Settings bootstrap request failed (${e})`),this.status=e,this.name=`SettingsBootstrapRequestError`}},Ca=(e=r())=>[e,`settings`,`bootstrap`],wa=(e=r())=>({queryKey:Ca(e),queryFn:async({signal:e})=>{let t=await Ue(`/api/config/settings/bootstrap`,{method:`GET`,headers:{Accept:`application/json`},signal:e});if(!t.ok)throw new Sa(t.status);return pa(await t.json())},retry:(e,t)=>!(t instanceof Sa&&(t.status===404||t.status===501))&&e<1,staleTime:1/0,gcTime:1/0}),Ta=(e=r())=>ga.fetchQuery(wa(e)),Ea=(e=r())=>ga.getQueryData(Ca(e)),Da=(e,t=r())=>{let n=ma(e),i=Ca(t),a=pa({schemaVersion:1,...ga.getQueryData(i),...n});return ga.setQueryData(i,a),a},Oa=e=>{if(!(typeof window>`u`)&&!(typeof window.__OPENCHAMBER_HOME__==`string`&&window.__OPENCHAMBER_HOME__.length>0))try{window.__OPENCHAMBER_HOME__=e}catch{}},ka=e=>{if(!(typeof window>`u`)){if(e.themeId&&Y(`selectedThemeId`,e.themeId),e.themeVariant&&Y(`selectedThemeVariant`,e.themeVariant),e.lightThemeId&&Y(`lightThemeId`,e.lightThemeId),e.darkThemeId&&Y(`darkThemeId`,e.darkThemeId),typeof e.useSystemTheme==`boolean`&&(Y(`useSystemTheme`,String(e.useSystemTheme)),Y(`themeMode`,e.useSystemTheme?`system`:e.themeVariant===`dark`||e.themeVariant===`light`?e.themeVariant:`system`)),e.lastDirectory&&D(`lastDirectory`,e.lastDirectory),e.homeDirectory&&(D(`homeDirectory`,e.homeDirectory),Oa(e.homeDirectory)),Array.isArray(e.projects)&&e.projects.length>0?D(`projects`,JSON.stringify(e.projects)):O(`projects`),e.activeProjectId?D(`activeProjectId`,e.activeProjectId):O(`activeProjectId`),Array.isArray(e.pinnedDirectories)&&e.pinnedDirectories.length>0?D(`pinnedDirectories`,JSON.stringify(e.pinnedDirectories)):O(`pinnedDirectories`),Array.isArray(e.projects)&&e.projects.length>0){let t=e.projects.filter(e=>e.sidebarCollapsed===!0).map(e=>e.id).filter(e=>typeof e==`string`&&e.length>0);t.length>0?D(`oc.sessions.projectCollapse`,JSON.stringify(t)):O(`oc.sessions.projectCollapse`)}if(typeof e.gitmojiEnabled==`boolean`?localStorage.setItem(`gitmojiEnabled`,String(e.gitmojiEnabled)):localStorage.removeItem(`gitmojiEnabled`),typeof e.directoryShowHidden==`boolean`&&localStorage.setItem(`directoryTreeShowHidden`,e.directoryShowHidden?`true`:`false`),typeof e.filesViewShowGitignored==`boolean`&&localStorage.setItem(`filesViewShowGitignored`,e.filesViewShowGitignored?`true`:`false`),typeof e.openInAppId==`string`&&e.openInAppId.length>0&&localStorage.setItem(`openInAppId`,e.openInAppId),typeof e.pwaAppName==`string`){let t=e.pwaAppName.trim().replace(/\s+/g,` `).slice(0,64);t.length>0?localStorage.setItem(`openchamber.pwaName`,t):localStorage.removeItem(`openchamber.pwaName`)}if(typeof e.mobileKeyboardMode==`string`&&p(e.mobileKeyboardMode),typeof e.openCodeUpdateToastDismissedVersion==`string`){let t=e.openCodeUpdateToastDismissedVersion.trim();t?localStorage.setItem(`opencode-update-toast-dismissed-version`,t):localStorage.removeItem(`opencode-update-toast-dismissed-version`)}typeof e.dictationEnabled==`boolean`&&localStorage.setItem(`dictationEnabled`,String(e.dictationEnabled)),(e.sttProvider===`local`||e.sttProvider===`openai-compatible`)&&localStorage.setItem(`sttProvider`,e.sttProvider),typeof e.sttServerUrl==`string`&&localStorage.setItem(`sttServerUrl`,e.sttServerUrl),typeof e.sttModel==`string`&&localStorage.setItem(`sttModel`,e.sttModel),typeof e.sttLocalModel==`string`&&localStorage.setItem(`sttLocalModel`,e.sttLocalModel),typeof e.sttLanguage==`string`&&localStorage.setItem(`sttLanguage`,e.sttLanguage)}},Aa=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:settings-synced`,{detail:e}))},ja=e=>{if(!Array.isArray(e))return;let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=typeof e.label==`string`?e.label.trim():``,o=typeof e.source==`string`?e.source.trim():``,s=typeof e.subpath==`string`?e.subpath.trim():``,c=typeof e.gitIdentityId==`string`?e.gitIdentityId.trim():``;!i||!a||!o||n.has(i)||(n.add(i),t.push({id:i,label:a,source:o,...s?{subpath:s}:{},...c?{gitIdentityId:c}:{}}))}return t},Ma=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=typeof n==`string`?n.trim():``,i=typeof r==`string`?r.trim():``;!e||!i||(t[e]=i)}return t},Na=(e,t)=>{let n=Object.entries(e),r=Object.entries(t);return n.length===r.length&&n.every(([e,n])=>t[e]===n)},Pa=(e,t)=>e.length===t.length&&e.every((e,n)=>e.providerID===t[n]?.providerID&&e.modelID===t[n]?.modelID&&e.variant===t[n]?.variant),Fa=(e,t)=>{if(t.length===0)return t;let n=new Map;for(let t of e)typeof t.variant==`string`&&t.variant.length>0&&n.set(`${t.providerID}/${t.modelID}`,t.variant);return t.map(e=>{if(typeof e.variant==`string`&&e.variant.length>0)return e;let t=n.get(`${e.providerID}/${e.modelID}`);return t?{providerID:e.providerID,modelID:e.modelID,variant:t}:e})},Ia=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),La=e=>{if(Array.isArray(e))return Array.from(new Set(e.filter(e=>typeof e==`string`&&e.length>0)))},Ra=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e)){if(!n||!Array.isArray(r))continue;let e=La(r);e&&e.length>0&&(t[n]=e.slice(0,5))}return Object.keys(t).length>0?t:void 0},za=(e,t)=>{let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Array.isArray(t[n])&&Ia(e[n],t[n]))},Ba=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Va=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Ba.test(t)?t.toLowerCase():null},Ha=e=>{if(!Array.isArray(e))return;let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=a===`/`?a:a.replace(/\\/g,`/`).replace(/\/+$/,``);if(!o)continue;let s=ir(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else if(e.iconImage&&typeof e.iconImage==`object`){let t=e.iconImage,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;n&&r>0&&i&&(c.iconImage={mime:n,updatedAt:r,source:i})}if(typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim()),e.iconBackground===null)c.iconBackground=null;else{let t=Va(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t.length>0?t:void 0},Ua=(e,t,n)=>{if(!Array.isArray(e))return;let r=[],i=new Set,a=n?.preserveVariant===!0;for(let n of e){if(!n||typeof n!=`object`)continue;let e=n,o=typeof e.providerID==`string`?e.providerID.trim():``,s=typeof e.modelID==`string`?e.modelID.trim():``;if(!o||!s)continue;let c=`${o}/${s}`;if(!i.has(c)&&(i.add(c),a&&typeof e.variant==`string`&&e.variant.trim().length>0?r.push({providerID:o,modelID:s,variant:e.variant.trim()}):r.push({providerID:o,modelID:s}),r.length>=t))break}return r},Wa=()=>{let e=h.persist;if(e&&typeof e==`object`)return e},Ga=()=>rt()?.settings??null,Ka=(e,t,n)=>{let r={...ha(t),...ha(e)};if(Object.keys(r).length!==0)try{Da(r,n)}catch(e){console.warn(`Failed to patch settings bootstrap cache:`,e)}},qa=e=>{let t=h.getState(),n=typeof window<`u`?window.__zustand_config_store__?.getState?.()??null:null,r=typeof window<`u`?window.__zustand_config_store__??null:null,i=vi.getState();if(typeof e.showReasoningTraces==`boolean`&&e.showReasoningTraces!==t.showReasoningTraces&&t.setShowReasoningTraces(e.showReasoningTraces),typeof e.sessionTitleRefreshEnabled==`boolean`&&e.sessionTitleRefreshEnabled!==t.sessionTitleRefreshEnabled&&t.setSessionTitleRefreshEnabled(e.sessionTitleRefreshEnabled),typeof e.sessionGoalEnabled==`boolean`&&e.sessionGoalEnabled!==t.sessionGoalEnabled&&t.setSessionGoalEnabled(e.sessionGoalEnabled),typeof e.sessionGoalDefaultBudgetEnabled==`boolean`&&e.sessionGoalDefaultBudgetEnabled!==t.sessionGoalDefaultBudgetEnabled&&t.setSessionGoalDefaultBudgetEnabled(e.sessionGoalDefaultBudgetEnabled),typeof e.sessionGoalDefaultBudget==`number`&&Number.isFinite(e.sessionGoalDefaultBudget)&&e.sessionGoalDefaultBudget!==t.sessionGoalDefaultBudget&&t.setSessionGoalDefaultBudget(e.sessionGoalDefaultBudget),typeof e.collapsibleThinkingBlocks==`boolean`&&e.collapsibleThinkingBlocks!==t.collapsibleThinkingBlocks&&t.setCollapsibleThinkingBlocks(e.collapsibleThinkingBlocks),typeof e.autoDeleteEnabled==`boolean`&&e.autoDeleteEnabled!==t.autoDeleteEnabled&&t.setAutoDeleteEnabled(e.autoDeleteEnabled),typeof e.autoDeleteAfterDays==`number`&&Number.isFinite(e.autoDeleteAfterDays)){let n=Math.max(1,Math.min(365,e.autoDeleteAfterDays));n!==t.autoDeleteAfterDays&&t.setAutoDeleteAfterDays(n)}(e.sessionRetentionAction===`archive`||e.sessionRetentionAction===`delete`)&&e.sessionRetentionAction!==t.sessionRetentionAction&&t.setSessionRetentionAction(e.sessionRetentionAction);let a=null;if(Xr(e.followUpBehavior)?a=e.followUpBehavior:typeof e.queueModeEnabled==`boolean`&&(a=Zr(void 0,e.queueModeEnabled)),a&&a!==i.followUpBehavior&&i.setFollowUpBehavior(a),typeof e.showDeletionDialog==`boolean`&&e.showDeletionDialog!==t.showDeletionDialog&&t.setShowDeletionDialog(e.showDeletionDialog),typeof e.nativeNotificationsEnabled==`boolean`&&e.nativeNotificationsEnabled!==t.nativeNotificationsEnabled&&t.setNativeNotificationsEnabled(e.nativeNotificationsEnabled),typeof e.notificationMode==`string`&&(e.notificationMode===`always`||e.notificationMode===`hidden-only`)&&e.notificationMode!==t.notificationMode&&t.setNotificationMode(e.notificationMode),typeof e.notifyOnSubtasks==`boolean`&&e.notifyOnSubtasks!==t.notifyOnSubtasks&&t.setNotifyOnSubtasks(e.notifyOnSubtasks),typeof e.notifyOnCompletion==`boolean`&&e.notifyOnCompletion!==t.notifyOnCompletion&&t.setNotifyOnCompletion(e.notifyOnCompletion),typeof e.notifyOnError==`boolean`&&e.notifyOnError!==t.notifyOnError&&t.setNotifyOnError(e.notifyOnError),typeof e.notifyOnQuestion==`boolean`&&e.notifyOnQuestion!==t.notifyOnQuestion&&t.setNotifyOnQuestion(e.notifyOnQuestion),e.notificationTemplates&&typeof e.notificationTemplates==`object`&&t.setNotificationTemplates(e.notificationTemplates),typeof e.summarizeLastMessage==`boolean`&&e.summarizeLastMessage!==t.summarizeLastMessage&&t.setSummarizeLastMessage(e.summarizeLastMessage),typeof e.summaryThreshold==`number`&&Number.isFinite(e.summaryThreshold)&&t.setSummaryThreshold(e.summaryThreshold),typeof e.summaryLength==`number`&&Number.isFinite(e.summaryLength)&&t.setSummaryLength(e.summaryLength),typeof e.maxLastMessageLength==`number`&&Number.isFinite(e.maxLastMessageLength)&&t.setMaxLastMessageLength(e.maxLastMessageLength),typeof e.inputSpellcheckEnabled==`boolean`&&e.inputSpellcheckEnabled!==t.inputSpellcheckEnabled&&t.setInputSpellcheckEnabled(e.inputSpellcheckEnabled),typeof e.showOpenCodeUpdateNotifications==`boolean`&&e.showOpenCodeUpdateNotifications!==t.showOpenCodeUpdateNotifications&&t.setShowOpenCodeUpdateNotifications(e.showOpenCodeUpdateNotifications),typeof e.showToolFileIcons==`boolean`&&e.showToolFileIcons!==t.showToolFileIcons&&t.setShowToolFileIcons(e.showToolFileIcons),typeof e.codeBlockLineWrap==`boolean`&&e.codeBlockLineWrap!==t.codeBlockLineWrap&&t.setCodeBlockLineWrap(e.codeBlockLineWrap),typeof e.showTurnChangedFiles==`boolean`&&e.showTurnChangedFiles!==t.showTurnChangedFiles&&t.setShowTurnChangedFiles(e.showTurnChangedFiles),typeof e.showExpandedBashTools==`boolean`&&e.showExpandedBashTools!==t.showExpandedBashTools&&t.setShowExpandedBashTools(e.showExpandedBashTools),typeof e.showSubagentTaskDetails==`boolean`&&e.showSubagentTaskDetails!==t.showSubagentTaskDetails&&t.setShowSubagentTaskDetails(e.showSubagentTaskDetails),typeof e.timeFormatPreference==`string`&&(e.timeFormatPreference===`auto`||e.timeFormatPreference===`12h`||e.timeFormatPreference===`24h`)&&e.timeFormatPreference!==t.timeFormatPreference&&t.setTimeFormatPreference(e.timeFormatPreference),typeof e.weekStartPreference==`string`&&(e.weekStartPreference===`auto`||e.weekStartPreference===`sunday`||e.weekStartPreference===`monday`)&&e.weekStartPreference!==t.weekStartPreference&&t.setWeekStartPreference(e.weekStartPreference),typeof e.desktopWindowControlsPosition==`string`&&(e.desktopWindowControlsPosition===`auto`||e.desktopWindowControlsPosition===`left`||e.desktopWindowControlsPosition===`right`)&&e.desktopWindowControlsPosition!==t.desktopWindowControlsPosition&&t.setDesktopWindowControlsPosition(e.desktopWindowControlsPosition),typeof e.chatRenderMode==`string`&&(e.chatRenderMode===`sorted`||e.chatRenderMode===`live`)&&e.chatRenderMode!==t.chatRenderMode&&t.setChatRenderMode(e.chatRenderMode),typeof e.activityRenderMode==`string`&&(e.activityRenderMode===`collapsed`||e.activityRenderMode===`summary`)&&e.activityRenderMode!==t.activityRenderMode&&t.setActivityRenderMode(e.activityRenderMode),typeof e.mermaidRenderingMode==`string`&&(e.mermaidRenderingMode===`svg`||e.mermaidRenderingMode===`ascii`)&&e.mermaidRenderingMode!==t.mermaidRenderingMode&&t.setMermaidRenderingMode(e.mermaidRenderingMode),typeof e.userMessageRenderingMode==`string`&&(e.userMessageRenderingMode===`markdown`||e.userMessageRenderingMode===`plain`)&&e.userMessageRenderingMode!==t.userMessageRenderingMode&&t.setUserMessageRenderingMode(e.userMessageRenderingMode),typeof e.collapsibleUserMessages==`boolean`&&e.collapsibleUserMessages!==t.collapsibleUserMessages&&t.setCollapsibleUserMessages(e.collapsibleUserMessages),typeof e.messageStreamTransport==`string`&&(e.messageStreamTransport===`auto`||e.messageStreamTransport===`ws`||e.messageStreamTransport===`sse`)&&n&&e.messageStreamTransport!==n.settingsMessageStreamTransport&&n.setSettingsMessageStreamTransport(e.messageStreamTransport),typeof e.stickyUserHeader==`boolean`&&e.stickyUserHeader!==t.stickyUserHeader&&t.setStickyUserHeader(e.stickyUserHeader),typeof e.promptNavigatorEnabled==`boolean`&&e.promptNavigatorEnabled!==t.promptNavigatorEnabled&&t.setPromptNavigatorEnabled(e.promptNavigatorEnabled),typeof e.expandedEditorToolbar==`boolean`&&e.expandedEditorToolbar!==t.expandedEditorToolbar&&t.setExpandedEditorToolbar(e.expandedEditorToolbar),typeof e.wideChatLayoutEnabled==`boolean`&&e.wideChatLayoutEnabled!==t.wideChatLayoutEnabled&&t.setWideChatLayoutEnabled(e.wideChatLayoutEnabled),typeof e.showSplitAssistantMessageActions==`boolean`&&e.showSplitAssistantMessageActions!==t.showSplitAssistantMessageActions&&t.setShowSplitAssistantMessageActions(e.showSplitAssistantMessageActions),typeof e.showAssistantTps==`boolean`&&e.showAssistantTps!==t.showAssistantTps&&t.setShowAssistantTps(e.showAssistantTps),typeof e.reportUsage==`boolean`&&e.reportUsage!==t.reportUsage&&t.setReportUsage(e.reportUsage),typeof e.fontSize==`number`&&Number.isFinite(e.fontSize)&&e.fontSize!==t.fontSize&&t.setFontSize(e.fontSize),Array.isArray(e.draftStarters)){let n=qi(e.draftStarters);JSON.stringify(t.globalDraftStarters)!==JSON.stringify(n)&&t.setGlobalDraftStarters(n)}if(typeof e.terminalFontSize==`number`&&Number.isFinite(e.terminalFontSize)&&e.terminalFontSize!==t.terminalFontSize&&t.setTerminalFontSize(e.terminalFontSize),typeof e.editorFontSize==`number`&&Number.isFinite(e.editorFontSize)&&e.editorFontSize!==t.editorFontSize&&t.setEditorFontSize(e.editorFontSize),m(e.uiFont)&&e.uiFont!==t.uiFont&&t.setUiFont(e.uiFont),f(e.monoFont)&&e.monoFont!==t.monoFont&&t.setMonoFont(e.monoFont),typeof e.padding==`number`&&Number.isFinite(e.padding)&&e.padding!==t.padding&&t.setPadding(e.padding),typeof e.cornerRadius==`number`&&Number.isFinite(e.cornerRadius)&&e.cornerRadius!==t.cornerRadius&&t.setCornerRadius(e.cornerRadius),typeof e.inputBarOffset==`number`&&Number.isFinite(e.inputBarOffset)&&e.inputBarOffset!==t.inputBarOffset&&t.setInputBarOffset(e.inputBarOffset),e.shortcutOverrides&&!Na(e.shortcutOverrides,t.shortcutOverrides)&&h.setState({shortcutOverrides:e.shortcutOverrides}),typeof e.mobileKeyboardMode==`string`){let n=ee(e.mobileKeyboardMode,t.mobileKeyboardMode);n!==t.mobileKeyboardMode&&t.setMobileKeyboardMode(n)}if(r&&n){let t={};typeof e.dictationEnabled==`boolean`&&e.dictationEnabled!==n.dictationEnabled&&(t.dictationEnabled=e.dictationEnabled),(e.sttProvider===`local`||e.sttProvider===`openai-compatible`)&&e.sttProvider!==n.sttProvider&&(t.sttProvider=e.sttProvider),typeof e.sttServerUrl==`string`&&e.sttServerUrl!==n.sttServerUrl&&(t.sttServerUrl=e.sttServerUrl),typeof e.sttModel==`string`&&e.sttModel!==n.sttModel&&(t.sttModel=e.sttModel),typeof e.sttLocalModel==`string`&&e.sttLocalModel!==n.sttLocalModel&&(t.sttLocalModel=e.sttLocalModel),typeof e.sttLanguage==`string`&&e.sttLanguage!==n.sttLanguage&&(t.sttLanguage=e.sttLanguage),Object.keys(t).length>0&&r.setState(t)}if(Array.isArray(e.favoriteModels)){let n=t.favoriteModels,r=Fa(n,e.favoriteModels);Pa(n,r)||h.setState({favoriteModels:r})}if(Array.isArray(e.hiddenModels)){let n=t.hiddenModels,r=e.hiddenModels;Pa(n,r)||h.setState({hiddenModels:r})}if(Array.isArray(e.collapsedModelProviders)){let n=t.collapsedModelProviders,r=e.collapsedModelProviders;Ia(n,r)||h.setState({collapsedModelProviders:r})}if(Array.isArray(e.recentModels)){let n=t.recentModels,r=Fa(n,e.recentModels);Pa(n,r)||h.setState({recentModels:r})}if(Array.isArray(e.recentAgents)){let n=t.recentAgents,r=e.recentAgents;Ia(n,r)||h.setState({recentAgents:r})}if(e.recentEfforts&&typeof e.recentEfforts==`object`){let n=t.recentEfforts,r=e.recentEfforts;za(n,r)||h.setState({recentEfforts:r})}typeof e.diffLayoutPreference==`string`&&(e.diffLayoutPreference===`dynamic`||e.diffLayoutPreference===`inline`||e.diffLayoutPreference===`side-by-side`)&&e.diffLayoutPreference!==t.diffLayoutPreference&&t.setDiffLayoutPreference(e.diffLayoutPreference),typeof e.gitChangesViewMode==`string`&&(e.gitChangesViewMode===`flat`||e.gitChangesViewMode===`tree`)&&e.gitChangesViewMode!==t.gitChangesViewMode&&t.setGitChangesViewMode(e.gitChangesViewMode),typeof e.directoryShowHidden==`boolean`&&Ei(e.directoryShowHidden,{persist:!1}),typeof e.filesViewShowGitignored==`boolean`&&Mi(e.filesViewShowGitignored,{persist:!1})},Ja=e=>{if(!e||typeof e!=`object`)return null;let t=e,n={};if(typeof t.themeId==`string`&&t.themeId.length>0&&(n.themeId=t.themeId),(t.useSystemTheme===!0||t.useSystemTheme===!1)&&(n.useSystemTheme=t.useSystemTheme),typeof t.themeVariant==`string`&&(t.themeVariant===`light`||t.themeVariant===`dark`)&&(n.themeVariant=t.themeVariant),typeof t.lightThemeId==`string`&&t.lightThemeId.length>0&&(n.lightThemeId=t.lightThemeId),typeof t.darkThemeId==`string`&&t.darkThemeId.length>0&&(n.darkThemeId=t.darkThemeId),typeof t.lastDirectory==`string`&&t.lastDirectory.length>0&&(n.lastDirectory=t.lastDirectory),typeof t.homeDirectory==`string`&&t.homeDirectory.length>0&&(n.homeDirectory=t.homeDirectory),typeof t.opencodeBinary==`string`){let e=t.opencodeBinary.trim();n.opencodeBinary=e.length>0?e:void 0}typeof t.desktopLanAccessEnabled==`boolean`&&(n.desktopLanAccessEnabled=t.desktopLanAccessEnabled),typeof t.desktopKeepAwakeEnabled==`boolean`&&(n.desktopKeepAwakeEnabled=t.desktopKeepAwakeEnabled),typeof t.desktopMinimizeToTrayEnabled==`boolean`&&(n.desktopMinimizeToTrayEnabled=t.desktopMinimizeToTrayEnabled);let r=Ha(t.projects);if(r&&(n.projects=r),typeof t.activeProjectId==`string`&&t.activeProjectId.length>0&&(n.activeProjectId=t.activeProjectId),Array.isArray(t.securityScopedBookmarks)&&(n.securityScopedBookmarks=t.securityScopedBookmarks.filter(e=>typeof e==`string`&&e.length>0)),Array.isArray(t.pinnedDirectories)&&(n.pinnedDirectories=Array.from(new Set(t.pinnedDirectories.filter(e=>typeof e==`string`&&e.length>0)))),Array.isArray(t.draftStarters)&&(n.draftStarters=qi(t.draftStarters)),typeof t.draftStartersCraftGoalAdded==`boolean`&&(n.draftStartersCraftGoalAdded=t.draftStartersCraftGoalAdded),typeof t.showReasoningTraces==`boolean`&&(n.showReasoningTraces=t.showReasoningTraces),typeof t.sessionTitleRefreshEnabled==`boolean`&&(n.sessionTitleRefreshEnabled=t.sessionTitleRefreshEnabled),typeof t.sessionGoalEnabled==`boolean`&&(n.sessionGoalEnabled=t.sessionGoalEnabled),typeof t.sessionGoalDefaultBudgetEnabled==`boolean`&&(n.sessionGoalDefaultBudgetEnabled=t.sessionGoalDefaultBudgetEnabled),typeof t.sessionGoalDefaultBudget==`number`&&Number.isFinite(t.sessionGoalDefaultBudget)&&t.sessionGoalDefaultBudget>0&&(n.sessionGoalDefaultBudget=Math.floor(t.sessionGoalDefaultBudget)),typeof t.collapsibleThinkingBlocks==`boolean`&&(n.collapsibleThinkingBlocks=t.collapsibleThinkingBlocks),typeof t.autoDeleteEnabled==`boolean`&&(n.autoDeleteEnabled=t.autoDeleteEnabled),typeof t.autoDeleteAfterDays==`number`&&Number.isFinite(t.autoDeleteAfterDays)&&(n.autoDeleteAfterDays=t.autoDeleteAfterDays),(t.sessionRetentionAction===`archive`||t.sessionRetentionAction===`delete`)&&(n.sessionRetentionAction=t.sessionRetentionAction),typeof t.defaultModel==`string`&&t.defaultModel.length>0&&(n.defaultModel=t.defaultModel),typeof t.defaultVariant==`string`&&t.defaultVariant.length>0&&(n.defaultVariant=t.defaultVariant),typeof t.defaultAgent==`string`&&t.defaultAgent.length>0&&(n.defaultAgent=t.defaultAgent),typeof t.smallModelUseDefault==`boolean`&&(n.smallModelUseDefault=t.smallModelUseDefault),typeof t.smallModelOverride==`string`&&t.smallModelOverride.length>0&&(n.smallModelOverride=t.smallModelOverride),(t.summaryModelMode===`provider`||t.summaryModelMode===`custom`)&&(n.summaryModelMode=t.summaryModelMode),typeof t.summaryProviderID==`string`&&t.summaryProviderID.length>0&&(n.summaryProviderID=t.summaryProviderID),typeof t.summaryModelID==`string`&&t.summaryModelID.length>0&&(n.summaryModelID=t.summaryModelID),typeof t.summaryCustomBaseURL==`string`&&(n.summaryCustomBaseURL=t.summaryCustomBaseURL),typeof t.hasSummaryCustomAPIToken==`boolean`&&(n.hasSummaryCustomAPIToken=t.hasSummaryCustomAPIToken),typeof t.summaryCommitPrompt==`string`&&(n.summaryCommitPrompt=t.summaryCommitPrompt),typeof t.summarySessionTitlePrompt==`string`&&(n.summarySessionTitlePrompt=t.summarySessionTitlePrompt),typeof t.autoCreateWorktree==`boolean`&&(n.autoCreateWorktree=t.autoCreateWorktree),typeof t.gitmojiEnabled==`boolean`&&(n.gitmojiEnabled=t.gitmojiEnabled),Xr(t.followUpBehavior)?n.followUpBehavior=t.followUpBehavior:typeof t.queueModeEnabled==`boolean`&&(n.followUpBehavior=Zr(void 0,t.queueModeEnabled)),typeof t.showDeletionDialog==`boolean`&&(n.showDeletionDialog=t.showDeletionDialog),typeof t.nativeNotificationsEnabled==`boolean`&&(n.nativeNotificationsEnabled=t.nativeNotificationsEnabled),typeof t.notificationMode==`string`&&(t.notificationMode===`always`||t.notificationMode===`hidden-only`)&&(n.notificationMode=t.notificationMode),typeof t.notifyOnSubtasks==`boolean`&&(n.notifyOnSubtasks=t.notifyOnSubtasks),typeof t.notifyOnCompletion==`boolean`&&(n.notifyOnCompletion=t.notifyOnCompletion),typeof t.notifyOnError==`boolean`&&(n.notifyOnError=t.notifyOnError),typeof t.notifyOnQuestion==`boolean`&&(n.notifyOnQuestion=t.notifyOnQuestion),t.notificationTemplates&&typeof t.notificationTemplates==`object`){let e=t.notificationTemplates,r=t=>{let n=e[t];if(!n||typeof n!=`object`)return;let r=n;return{title:typeof r.title==`string`?r.title:``,message:typeof r.message==`string`?r.message:``}},i=r(`completion`),a=r(`error`),o=r(`question`),s=r(`subtask`);(i||a||o||s)&&(n.notificationTemplates={completion:i??{title:`Task Complete`,message:`Your task has finished.`},error:a??{title:`Error Occurred`,message:`An error occurred while processing your task.`},question:o??{title:`Input Needed`,message:`Please provide input to continue.`},subtask:s??{title:`Subtask Complete`,message:`A subtask has finished.`}})}if(typeof t.summarizeLastMessage==`boolean`&&(n.summarizeLastMessage=t.summarizeLastMessage),typeof t.summaryThreshold==`number`&&Number.isFinite(t.summaryThreshold)&&(n.summaryThreshold=Math.max(0,Math.round(t.summaryThreshold))),typeof t.summaryLength==`number`&&Number.isFinite(t.summaryLength)&&(n.summaryLength=Math.max(10,Math.round(t.summaryLength))),typeof t.maxLastMessageLength==`number`&&Number.isFinite(t.maxLastMessageLength)&&(n.maxLastMessageLength=Math.max(10,Math.round(t.maxLastMessageLength))),typeof t.usageAutoRefresh==`boolean`&&(n.usageAutoRefresh=t.usageAutoRefresh),typeof t.usageRefreshIntervalMs==`number`&&Number.isFinite(t.usageRefreshIntervalMs)&&(n.usageRefreshIntervalMs=t.usageRefreshIntervalMs),(t.usageDisplayMode===`usage`||t.usageDisplayMode===`remaining`)&&(n.usageDisplayMode=t.usageDisplayMode),typeof t.usageShowPredValues==`boolean`&&(n.usageShowPredValues=t.usageShowPredValues),Array.isArray(t.usageDropdownProviders)&&(n.usageDropdownProviders=t.usageDropdownProviders.filter(e=>typeof e==`string`&&e.length>0)),t.usageSelectedModels&&typeof t.usageSelectedModels==`object`){let e={};for(let[n,r]of Object.entries(t.usageSelectedModels))Array.isArray(r)&&(e[n]=r.filter(e=>typeof e==`string`));Object.keys(e).length>0&&(n.usageSelectedModels=e)}if(t.usageCollapsedFamilies&&typeof t.usageCollapsedFamilies==`object`){let e={};for(let[n,r]of Object.entries(t.usageCollapsedFamilies))Array.isArray(r)&&(e[n]=r.filter(e=>typeof e==`string`));Object.keys(e).length>0&&(n.usageCollapsedFamilies=e)}if(t.usageExpandedFamilies&&typeof t.usageExpandedFamilies==`object`){let e={};for(let[n,r]of Object.entries(t.usageExpandedFamilies))Array.isArray(r)&&(e[n]=r.filter(e=>typeof e==`string`));Object.keys(e).length>0&&(n.usageExpandedFamilies=e)}if(t.usageModelGroups&&typeof t.usageModelGroups==`object`){let e={};for(let[n,r]of Object.entries(t.usageModelGroups))if(r&&typeof r==`object`){let t=r,i={};Array.isArray(t.customGroups)&&(i.customGroups=t.customGroups.filter(e=>e&&typeof e==`object`).map(e=>({id:String(e.id??``),label:String(e.label??``),models:Array.isArray(e.models)?e.models.filter(e=>typeof e==`string`):[],order:typeof e.order==`number`?e.order:0}))),t.modelAssignments&&typeof t.modelAssignments==`object`&&(i.modelAssignments=Object.fromEntries(Object.entries(t.modelAssignments).filter(([,e])=>typeof e==`string`).map(([e,t])=>[e,String(t)]))),t.renamedGroups&&typeof t.renamedGroups==`object`&&(i.renamedGroups=Object.fromEntries(Object.entries(t.renamedGroups).filter(([,e])=>typeof e==`string`).map(([e,t])=>[e,String(t)]))),Object.keys(i).length>0&&(e[n]=i)}Object.keys(e).length>0&&(n.usageModelGroups=e)}typeof t.inputSpellcheckEnabled==`boolean`&&(n.inputSpellcheckEnabled=t.inputSpellcheckEnabled),typeof t.showOpenCodeUpdateNotifications==`boolean`&&(n.showOpenCodeUpdateNotifications=t.showOpenCodeUpdateNotifications),typeof t.openCodeUpdateToastDismissedVersion==`string`&&(n.openCodeUpdateToastDismissedVersion=t.openCodeUpdateToastDismissedVersion.trim().slice(0,128)),typeof t.showToolFileIcons==`boolean`&&(n.showToolFileIcons=t.showToolFileIcons),typeof t.codeBlockLineWrap==`boolean`&&(n.codeBlockLineWrap=t.codeBlockLineWrap),typeof t.showTurnChangedFiles==`boolean`&&(n.showTurnChangedFiles=t.showTurnChangedFiles),typeof t.showExpandedBashTools==`boolean`&&(n.showExpandedBashTools=t.showExpandedBashTools),typeof t.showSubagentTaskDetails==`boolean`&&(n.showSubagentTaskDetails=t.showSubagentTaskDetails),typeof t.timeFormatPreference==`string`&&(t.timeFormatPreference===`auto`||t.timeFormatPreference===`12h`||t.timeFormatPreference===`24h`)&&(n.timeFormatPreference=t.timeFormatPreference),typeof t.weekStartPreference==`string`&&(t.weekStartPreference===`auto`||t.weekStartPreference===`sunday`||t.weekStartPreference===`monday`)&&(n.weekStartPreference=t.weekStartPreference),typeof t.desktopWindowControlsPosition==`string`&&(t.desktopWindowControlsPosition===`auto`||t.desktopWindowControlsPosition===`left`||t.desktopWindowControlsPosition===`right`)&&(n.desktopWindowControlsPosition=t.desktopWindowControlsPosition),typeof t.chatRenderMode==`string`&&(t.chatRenderMode===`sorted`||t.chatRenderMode===`live`)&&(n.chatRenderMode=t.chatRenderMode),typeof t.messageStreamTransport==`string`&&(t.messageStreamTransport===`auto`||t.messageStreamTransport===`ws`||t.messageStreamTransport===`sse`)&&(n.messageStreamTransport=t.messageStreamTransport),typeof t.activityRenderMode==`string`&&(t.activityRenderMode===`collapsed`||t.activityRenderMode===`summary`)&&(n.activityRenderMode=t.activityRenderMode),typeof t.mermaidRenderingMode==`string`&&(t.mermaidRenderingMode===`svg`||t.mermaidRenderingMode===`ascii`)&&(n.mermaidRenderingMode=t.mermaidRenderingMode),typeof t.userMessageRenderingMode==`string`&&(t.userMessageRenderingMode===`markdown`||t.userMessageRenderingMode===`plain`)&&(n.userMessageRenderingMode=t.userMessageRenderingMode),typeof t.collapsibleUserMessages==`boolean`&&(n.collapsibleUserMessages=t.collapsibleUserMessages),typeof t.stickyUserHeader==`boolean`&&(n.stickyUserHeader=t.stickyUserHeader),typeof t.promptNavigatorEnabled==`boolean`&&(n.promptNavigatorEnabled=t.promptNavigatorEnabled),typeof t.wideChatLayoutEnabled==`boolean`&&(n.wideChatLayoutEnabled=t.wideChatLayoutEnabled),typeof t.showSplitAssistantMessageActions==`boolean`&&(n.showSplitAssistantMessageActions=t.showSplitAssistantMessageActions),typeof t.showAssistantTps==`boolean`&&(n.showAssistantTps=t.showAssistantTps),typeof t.fontSize==`number`&&Number.isFinite(t.fontSize)&&(n.fontSize=t.fontSize),typeof t.terminalFontSize==`number`&&Number.isFinite(t.terminalFontSize)&&(n.terminalFontSize=t.terminalFontSize),typeof t.editorFontSize==`number`&&Number.isFinite(t.editorFontSize)&&(n.editorFontSize=t.editorFontSize),m(t.uiFont)&&(n.uiFont=t.uiFont),f(t.monoFont)&&(n.monoFont=t.monoFont),typeof t.padding==`number`&&Number.isFinite(t.padding)&&(n.padding=t.padding),typeof t.cornerRadius==`number`&&Number.isFinite(t.cornerRadius)&&(n.cornerRadius=t.cornerRadius),typeof t.inputBarOffset==`number`&&Number.isFinite(t.inputBarOffset)&&(n.inputBarOffset=t.inputBarOffset);let i=Ma(t.shortcutOverrides);i&&(n.shortcutOverrides=i),typeof t.mobileKeyboardMode==`string`&&(t.mobileKeyboardMode===`native`||t.mobileKeyboardMode===`resize-content`)&&(n.mobileKeyboardMode=t.mobileKeyboardMode);let a=Ua(t.favoriteModels,64,{preserveVariant:!0});a&&(n.favoriteModels=a);let o=Ua(t.hiddenModels,1024);o&&(n.hiddenModels=o);let s=La(t.collapsedModelProviders);s&&(n.collapsedModelProviders=s);let c=Ua(t.recentModels,16,{preserveVariant:!0});c&&(n.recentModels=c);let l=La(t.recentAgents);l&&(n.recentAgents=l);let u=Ra(t.recentEfforts);if(u&&(n.recentEfforts=u),typeof t.diffLayoutPreference==`string`&&(t.diffLayoutPreference===`dynamic`||t.diffLayoutPreference===`inline`||t.diffLayoutPreference===`side-by-side`)&&(n.diffLayoutPreference=t.diffLayoutPreference),typeof t.gitChangesViewMode==`string`&&(t.gitChangesViewMode===`flat`||t.gitChangesViewMode===`tree`)&&(n.gitChangesViewMode=t.gitChangesViewMode),typeof t.directoryShowHidden==`boolean`&&(n.directoryShowHidden=t.directoryShowHidden),typeof t.filesViewShowGitignored==`boolean`&&(n.filesViewShowGitignored=t.filesViewShowGitignored),typeof t.openInAppId==`string`&&t.openInAppId.length>0&&(n.openInAppId=t.openInAppId),typeof t.pwaAppName==`string`){let e=t.pwaAppName.trim().replace(/\s+/g,` `).slice(0,64);n.pwaAppName=e.length>0?e:``}let d=ja(t.skillCatalogs);return d&&(n.skillCatalogs=d),typeof t.reportUsage==`boolean`&&(n.reportUsage=t.reportUsage),typeof t.globalBehaviorPrompt==`string`&&(n.globalBehaviorPrompt=t.globalBehaviorPrompt),typeof t.responseStyleEnabled==`boolean`&&(n.responseStyleEnabled=t.responseStyleEnabled),typeof t.responseStylePreset==`string`&&(t.responseStylePreset===`concise`||t.responseStylePreset===`detailed`||t.responseStylePreset===`mentor`||t.responseStylePreset===`pushback`||t.responseStylePreset===`noFiller`||t.responseStylePreset===`matchEnergy`||t.responseStylePreset===`warmPeer`||t.responseStylePreset===`custom`)&&(n.responseStylePreset=t.responseStylePreset),typeof t.responseStyleCustomInstructions==`string`&&(n.responseStyleCustomInstructions=t.responseStyleCustomInstructions),typeof t.dictationEnabled==`boolean`&&(n.dictationEnabled=t.dictationEnabled),t.sttProvider===`local`||t.sttProvider===`openai-compatible`?n.sttProvider=t.sttProvider:t.sttProvider===`server`?n.sttProvider=`openai-compatible`:(t.sttProvider===`browser`||t.sttProvider===`wasm`)&&(n.sttProvider=`local`),typeof t.sttServerUrl==`string`&&(n.sttServerUrl=t.sttServerUrl.trim()),typeof t.sttModel==`string`&&(n.sttModel=t.sttModel.trim()),typeof t.sttLocalModel==`string`&&(n.sttLocalModel=t.sttLocalModel.trim()),typeof t.sttLanguage==`string`&&(n.sttLanguage=t.sttLanguage.trim()),n},Ya=new Map,Xa=new Map,Za=2e3,Qa=async e=>{let t=Ya.get(e);if(t&&Date.now()-t.at<Za)return t.value;let n=Xa.get(e);if(n)return n;let i=(async()=>{if(r()!==e)return null;let t=Ga();if(t)try{let n=Ja((await t.load()).settings);return Ya.set(e,{value:n,at:Date.now()}),n}catch(e){console.warn(`Failed to load shared settings from runtime settings API:`,e)}if(r()!==e)return null;try{let t=await Ue(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!t.ok)return null;let n=Ja(await t.json().catch(()=>null));return Ya.set(e,{value:n,at:Date.now()}),n}catch(e){return console.warn(`Failed to load shared settings from server:`,e),null}})();Xa.set(e,i);try{return await i}finally{Xa.get(e)===i&&Xa.delete(e)}},$a=async()=>{if(typeof window>`u`)return;let e=r(),t=Wa(),n=()=>!t?.hasHydrated||t.hasHydrated()||!t.onFinishHydration?Promise.resolve():new Promise(e=>{let n=!1,r=()=>{n||(n=!0,e())},i=t.onFinishHydration(()=>{i?.(),r()});t.hasHydrated?.()&&r()}),i=async t=>{if(await n(),r()===e){try{ka(t)}catch(e){console.warn(`persistToLocalStorage failed:`,e)}try{qa(t)}catch(e){console.warn(`applyDesktopUiPreferences failed:`,e)}Aa(t)}};try{let t=await Qa(e);t&&r()===e&&await i(t)}catch(e){console.warn(`Failed to synchronise settings:`,e)}},eo=null,Q=null,$=null,to=[],no=200,ro=async()=>{let e=eo,t=Q,n=to;if(eo=null,Q=null,$=null,to=[],!e||!t||Object.keys(e).length===0){n.forEach(e=>e());return}if(r()!==t){n.forEach(e=>e());return}let i=()=>r()===t,a=Ga();if(a){try{let r=await a.save(e);Ka(r,e,t),r&&i()&&(ka(r),qa(r),Aa(r),Ya.set(t,{value:Ja(r),at:Date.now()})),n.forEach(e=>e());return}catch(e){console.warn(`Failed to update settings via runtime settings API:`,e)}if(!i()){n.forEach(e=>e());return}}try{let n=await Ue(`/api/config/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)});if(!n.ok){console.warn(`Failed to update shared settings via API:`,n.status,n.statusText);return}let r=await n.json().catch(()=>null);Ka(r,e,t),r&&i()&&(ka(r),qa(r),Aa(r),Ya.set(t,{value:Ja(r),at:Date.now()}))}catch(e){console.warn(`Failed to update shared settings via API:`,e)}finally{n.forEach(e=>e())}},io=async e=>{if(typeof window>`u`)return;let t=r();if(Q&&Q!==t){$&&=(clearTimeout($),null),eo=null,Q=null;let e=to;to=[],e.forEach(e=>e())}let n={...eo??{}},i=Ya.get(t)?.value;for(let[t,r]of Object.entries(e)){let e=i?.[t];Object.is(r,e)||r!==void 0&&e!==void 0&&JSON.stringify(r)===JSON.stringify(e)?delete n[t]:n[t]=r}if(eo=n,Q=t,Object.keys(n).length===0&&!$){eo=null,Q=null;return}$&&clearTimeout($);let a=new Promise(e=>{to.push(e)});return $=setTimeout(()=>void ro(),no),a},ao=async()=>{if(typeof window>`u`)return;let e=Wa();try{let t=await Li();if(!t)return;let n=()=>Ii(t);if(e?.hasHydrated?.()){n();return}if(n(),e?.onFinishHydration){let t=e.onFinishHydration(()=>{t?.(),n()})}}catch(e){console.warn(`Failed to load appearance preferences:`,e)}};export{cr as $,Ct as $t,ci as A,xe as An,tn as At,Mr as B,ht as Bt,Gi as C,Xe as Cn,ln as Ct,Ni as D,Ze as Dn,cn as Dt,Mi as E,Ye as En,Pn as Et,yi as F,C as Ft,Pr as G,st as Gt,Ur as H,dt as Ht,W as I,Mt as It,H as J,Bt as Jt,Lr as K,S as Kt,fi as L,Ft as Lt,Kr as M,en as Mt,Gr as N,O as Nt,Ei as O,Ge as On,dn as Ot,pi as P,D as Pt,lr as Q,at as Qt,vi as R,Gt as Rt,Ki as S,nt as Sn,pn as St,Wi as T,Qe as Tn,xn as Tt,Wr as U,pt as Ut,Hr as V,Rt as Vt,Rr as W,ot as Wt,wr as X,xt as Xt,_r as Y,T as Yt,Er as Z,x as Zt,Ri as _,At as _n,un as _t,Da as a,Ut as an,Ln as at,Ui as b,ct as bn,gn as bt,xa as c,Ot as cn,L as ct,_a as d,It as dn,Bn as dt,wt as en,or as et,ha as f,Vt as fn,qn as ft,Y as g,mt as gn,Fn as gt,Qi as h,ft as hn,A as ht,Ta as i,zt as in,In as it,$r as j,Qt as jt,Di as k,Ue as kn,nn as kt,va as l,ut as ln,Un as lt,Xi as m,gt as mn,zn as mt,$a as n,Pt as nn,rr as nt,Ea as o,Et as on,I as ot,$i as p,Ht as pn,Rn as pt,zr as q,w as qt,io as r,Wt as rn,nr as rt,ba as s,kt as sn,Vn as st,ao as t,Nt as tn,ir as tt,ga as u,Lt as un,Gn as ut,Hi as v,St as vn,hn as vt,qi as w,et as wn,Dn as wt,Bi as x,rt as xn,_n as xt,Vi as y,jt as yn,mn as yt,Ar as z,Tt as zt};
|