@cuongtran001/kanna 1.3.0 → 1.3.1
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/client/assets/{arc-CAysfmX5.js → arc-DXtN3EWJ.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BKqRYsm4.js → architectureDiagram-3BPJPVTR-CIGqW1z-.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-Ce7Eorec.js → blockDiagram-GPEHLZMM-BafNS_H6.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CJ77zauH.js → c4Diagram-AAUBKEIU-YdAgRSis.js} +1 -1
- package/dist/client/assets/channel-BEYTrUAm.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-Rk_3zLxJ.js → chunk-2J33WTMH-eiP5y5G-.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DPIz6Nvf.js → chunk-4BX2VUAB-CvLGzPMF.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-D-TkbGh2.js → chunk-55IACEB6-Y-S9Fb8A.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-B4NOSIZV.js → chunk-727SXJPM-6sJH1RI9.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-Cm_TGLYm.js → chunk-AQP2D5EJ-hV1r_IXO.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-Bu45BUVh.js → chunk-FMBD7UC4-CC3L28S5.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-C1Bw8_gg.js → chunk-ND2GUHAM-BZ3czhdH.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-DueG15o0.js → chunk-QZHKN3VN-Bjyd6Yr-.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CvnF5Ud6.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CvnF5Ud6.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-YgpMurXf.js → cose-bilkent-S5V4N54A-CfxdDghE.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-Dop7Oq67.js → dagre-BM42HDAG-B8CddsbB.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-unMfBEJH.js → diagram-2AECGRRQ-F0yS0fVB.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-D9EJ9qMI.js → diagram-5GNKFQAL-cW0i0qlh.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-C5IykOIR.js → diagram-KO2AKTUF-BzAKMeJT.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DJAuPngz.js → diagram-LMA3HP47-qdC4XqIl.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-B3wHFtS-.js → diagram-OG6HWLK6-CGcpi6Dh.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-Dm7kt9o5.js → erDiagram-TEJ5UH35-CxNTDicM.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-s9Lds3ny.js → flowDiagram-I6XJVG4X-qkGa5TqY.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CRQNYdAf.js → ganttDiagram-6RSMTGT7-D9mVPoQi.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DhYjK4Jb.js → gitGraphDiagram-PVQCEYII-DA0grAXe.js} +1 -1
- package/dist/client/assets/{index-CbSY9HfS.js → index-BqUY1Bm4.js} +1 -1
- package/dist/client/assets/{index-C0U2kwuB.js → index-TU1k6ov6.js} +5 -5
- package/dist/client/assets/{infoDiagram-5YYISTIA-CRKJ0PSH.js → infoDiagram-5YYISTIA-CGljtLs3.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CEAkB0IY.js → ishikawaDiagram-YF4QCWOH-CtC0xrmG.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-CyOK5_DG.js → journeyDiagram-JHISSGLW-URLnVZeN.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-BfKjiJSo.js → kanban-definition-UN3LZRKU-C2Q6aqQh.js} +1 -1
- package/dist/client/assets/{linear-DLR6miy3.js → linear-ByKHtsIx.js} +1 -1
- package/dist/client/assets/{mermaid.core-D7AdC_lE.js → mermaid.core-Dl_f2KLc.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-zYyJtDSa.js → mindmap-definition-RKZ34NQL-CaJ9IDLI.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-BgP8PFlo.js → pieDiagram-4H26LBE5-mmYaf2Oa.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Di8h7J96.js → quadrantDiagram-W4KKPZXB-B_PO6OCC.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DuTzFl3R.js → requirementDiagram-4Y6WPE33-M4huwJt1.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DBRoMm_T.js → sankeyDiagram-5OEKKPKP-B0hb1sWh.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-Bmb-1HUN.js → sequenceDiagram-3UESZ5HK-BAqSptnA.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-fnv5ayn-.js → stateDiagram-AJRCARHV-DTNkvPi5.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CVN3oGTF.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-ByWRdpQX.js → timeline-definition-PNZ67QCA-MgAjHz8Q.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN--2WGpVXW.js → vennDiagram-CIIHVFJN-DmKoO51W.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-24zlnzxK.js → wardley-L42UT6IY-CWcyHnYs.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Cllvqb3K.js → wardleyDiagram-YWT4CUSO-BGIGmFP9.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-ZcdC6nPE.js → xychartDiagram-2RQKCTM6-D20YIvEl.js} +1 -1
- package/dist/client/index.html +1 -1
- package/package.json +1 -1
- package/src/server/agent-coordinator-types.ts +158 -0
- package/src/server/agent-coordinator.ts +919 -0
- package/src/server/agent-deps-builders.ts +425 -0
- package/src/server/agent.test.ts +22 -6
- package/src/server/agent.ts +35 -4987
- package/src/server/claude-autocontinue-commands.test.ts +494 -0
- package/src/server/claude-autocontinue-commands.ts +256 -0
- package/src/server/claude-cancel-handler.test.ts +472 -0
- package/src/server/claude-cancel-handler.ts +241 -0
- package/src/server/claude-chat-management.test.ts +395 -0
- package/src/server/claude-chat-management.ts +251 -0
- package/src/server/claude-harness-stream.test.ts +273 -0
- package/src/server/claude-harness-stream.ts +158 -0
- package/src/server/claude-loop-orch-commands.test.ts +579 -0
- package/src/server/claude-loop-orch-commands.ts +466 -0
- package/src/server/claude-message-normalizer.test.ts +213 -0
- package/src/server/claude-message-normalizer.ts +436 -0
- package/src/server/claude-prompt-helpers.test.ts +248 -0
- package/src/server/claude-prompt-helpers.ts +139 -0
- package/src/server/claude-sdk-queue.test.ts +169 -0
- package/src/server/claude-sdk-queue.ts +82 -0
- package/src/server/claude-send-command.test.ts +414 -0
- package/src/server/claude-send-command.ts +420 -0
- package/src/server/claude-session-config-helpers.test.ts +279 -0
- package/src/server/claude-session-config-helpers.ts +151 -0
- package/src/server/claude-session-config.test.ts +250 -0
- package/src/server/claude-session-config.ts +159 -0
- package/src/server/claude-session-error-handler.test.ts +498 -0
- package/src/server/claude-session-error-handler.ts +361 -0
- package/src/server/claude-session-lifecycle.test.ts +669 -0
- package/src/server/claude-session-lifecycle.ts +283 -0
- package/src/server/claude-session-rebuild.test.ts +224 -0
- package/src/server/claude-session-rebuild.ts +101 -0
- package/src/server/claude-session-runner.test.ts +523 -0
- package/src/server/claude-session-runner.ts +521 -0
- package/src/server/claude-session-spawner.test.ts +401 -0
- package/src/server/claude-session-spawner.ts +401 -0
- package/src/server/claude-session-start.test.ts +205 -0
- package/src/server/claude-session-start.ts +277 -0
- package/src/server/claude-session-state-queries.test.ts +344 -0
- package/src/server/claude-session-state-queries.ts +160 -0
- package/src/server/claude-session-state.ts +104 -0
- package/src/server/claude-slash-commands.test.ts +277 -0
- package/src/server/claude-slash-commands.ts +234 -0
- package/src/server/claude-spawn-helpers.test.ts +221 -0
- package/src/server/claude-spawn-helpers.ts +179 -0
- package/src/server/claude-steer-log.test.ts +243 -0
- package/src/server/claude-steer-log.ts +58 -0
- package/src/server/claude-subagent-tool-response.test.ts +213 -0
- package/src/server/claude-subagent-tool-response.ts +165 -0
- package/src/server/claude-subagent-wiring.test.ts +263 -0
- package/src/server/claude-subagent-wiring.ts +324 -0
- package/src/server/claude-tool-respond.test.ts +321 -0
- package/src/server/claude-tool-respond.ts +142 -0
- package/src/server/claude-turn-runner.test.ts +310 -0
- package/src/server/claude-turn-runner.ts +228 -0
- package/src/server/claude-turn-starter.test.ts +266 -0
- package/src/server/claude-turn-starter.ts +566 -0
- package/src/server/claude-usage-math.test.ts +169 -0
- package/src/server/claude-usage-math.ts +132 -0
- package/src/server/diff-store-branch-ops.adapter.test.ts +332 -0
- package/src/server/diff-store-branch-ops.adapter.ts +602 -0
- package/src/server/diff-store-commit-ops.adapter.test.ts +358 -0
- package/src/server/diff-store-commit-ops.adapter.ts +258 -0
- package/src/server/diff-store-errors.ts +85 -0
- package/src/server/diff-store-file-ops.adapter.ts +212 -0
- package/src/server/diff-store-git-branch.adapter.ts +686 -0
- package/src/server/diff-store-io.adapter.ts +27 -0
- package/src/server/diff-store-parse.test.ts +212 -0
- package/src/server/diff-store-parse.ts +122 -0
- package/src/server/diff-store-state.ts +82 -0
- package/src/server/diff-store.ts +76 -1854
- package/src/server/event-store-apply.test.ts +280 -0
- package/src/server/event-store-apply.ts +132 -0
- package/src/server/event-store-chat-lifecycle.test.ts +408 -0
- package/src/server/event-store-chat-lifecycle.ts +441 -0
- package/src/server/event-store-entity-write.ts +356 -0
- package/src/server/event-store-helpers.test.ts +230 -0
- package/src/server/event-store-helpers.ts +235 -0
- package/src/server/event-store-init.ts +276 -0
- package/src/server/event-store-messages.adapter.test.ts +365 -0
- package/src/server/event-store-messages.adapter.ts +213 -0
- package/src/server/event-store-orch-subscription.ts +124 -0
- package/src/server/event-store-orch.test.ts +462 -0
- package/src/server/event-store-orch.ts +312 -0
- package/src/server/event-store-peripheral-events.adapter.test.ts +254 -0
- package/src/server/event-store-peripheral-events.adapter.ts +105 -0
- package/src/server/event-store-snapshot.test.ts +597 -0
- package/src/server/event-store-snapshot.ts +658 -0
- package/src/server/event-store-subagent.test.ts +408 -0
- package/src/server/event-store-subagent.ts +198 -0
- package/src/server/event-store-tool-requests.test.ts +210 -0
- package/src/server/event-store-tool-requests.ts +131 -0
- package/src/server/event-store-transcript-write.adapter.ts +285 -0
- package/src/server/event-store-write-ops.test.ts +554 -0
- package/src/server/event-store-write-ops.ts +529 -0
- package/src/server/event-store.test.ts +35 -0
- package/src/server/event-store.ts +251 -2285
- package/src/server/harness-types.ts +15 -1
- package/src/server/oauth-errors.ts +19 -0
- package/src/server/ws-router-agent-ctrl.test.ts +187 -0
- package/src/server/ws-router-agent-ctrl.ts +137 -0
- package/src/server/ws-router-broadcast.ts +488 -0
- package/src/server/ws-router-chat.test.ts +461 -0
- package/src/server/ws-router-chat.ts +279 -0
- package/src/server/ws-router-defaults.test.ts +283 -0
- package/src/server/ws-router-defaults.ts +434 -0
- package/src/server/ws-router-diff.test.ts +167 -0
- package/src/server/ws-router-diff.ts +250 -0
- package/src/server/ws-router-envelope.ts +329 -0
- package/src/server/ws-router-misc.test.ts +422 -0
- package/src/server/ws-router-misc.ts +265 -0
- package/src/server/ws-router-orch.test.ts +190 -0
- package/src/server/ws-router-orch.ts +93 -0
- package/src/server/ws-router-project.test.ts +403 -0
- package/src/server/ws-router-project.ts +256 -0
- package/src/server/ws-router-push.test.ts +193 -0
- package/src/server/ws-router-push.ts +120 -0
- package/src/server/ws-router-settings.test.ts +173 -0
- package/src/server/ws-router-settings.ts +416 -0
- package/src/server/ws-router-skills.test.ts +194 -0
- package/src/server/ws-router-skills.ts +204 -0
- package/src/server/ws-router-utils.ts +224 -0
- package/src/server/ws-router.ts +339 -2254
- package/src/shared/app-settings-types.ts +365 -0
- package/src/shared/core-types.ts +27 -0
- package/src/shared/git-diff-types.ts +165 -0
- package/src/shared/mcp-types.ts +105 -0
- package/src/shared/provider-model-types.ts +437 -0
- package/src/shared/subagent-types.ts +198 -0
- package/src/shared/tool-call-types.ts +314 -0
- package/src/shared/transcript-types.ts +270 -0
- package/src/shared/types.ts +25 -1711
- package/dist/client/assets/channel-KQhRwDzJ.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-ChxT1GNq.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-ChxT1GNq.js +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D4X-ZnLV.js +0 -1
|
@@ -768,11 +768,11 @@ For more information, see https://radix-ui.com/primitives/docs/components/${t.do
|
|
|
768
768
|
`)!==n.readPathDeny.join(`
|
|
769
769
|
`)&&(C.readPathDeny=x),S.join(`
|
|
770
770
|
`)!==n.writePathDeny.join(`
|
|
771
|
-
`)&&(C.writePathDeny=S),Object.keys(C).length===0?null:C}function v(){r(m())}function b(){r(null)}return c.jsxs(c.Fragment,{children:[c.jsx(To,{open:e,onOpenChange:x=>{x||i()},children:c.jsxs(io,{className:"max-w-2xl",children:[c.jsxs(Ao,{children:["Permissions — ",t]}),c.jsxs(la,{className:"space-y-5",children:[c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Default action"}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Behaviour when a tool call has no explicit allow/deny rule. ",c.jsx("strong",{children:"auto-allow"})," bypasses prompts and runs untrusted shell commands without supervision — use a worktree."]}),c.jsx(Es,{value:s,onValueChange:p,options:[{value:"ask",label:"Ask"},{value:"auto-allow",label:"Auto-allow (unsafe)"},{value:"auto-deny",label:"Auto-deny"}]})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Read-path deny list"}),c.jsx("div",{className:"text-xs text-muted-foreground",children:"One glob per line. The model cannot read paths matching any entry. Defaults shown below — edit to add or remove."}),c.jsx("textarea",{value:o,onChange:x=>h.getState().setReadDenyText(x.target.value),rows:8,className:"w-full rounded-md border border-border bg-background px-3 py-2 font-mono text-xs",spellCheck:!1})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Write-path deny list"}),c.jsx("div",{className:"text-xs text-muted-foreground",children:"One glob per line. The model cannot edit or write paths matching any entry."}),c.jsx("textarea",{value:a,onChange:x=>h.getState().setWriteDenyText(x.target.value),rows:8,className:"w-full rounded-md border border-border bg-background px-3 py-2 font-mono text-xs",spellCheck:!1})]})]}),c.jsxs(Lc,{className:"justify-between",children:[c.jsx(Me,{variant:"ghost",onClick:b,children:"Reset to defaults"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Me,{variant:"ghost",onClick:i,children:"Cancel"}),c.jsx(Me,{onClick:v,children:"Apply"})]})]})]})}),c.jsx(To,{open:l,onOpenChange:x=>{x||(h.getState().setConfirmUnsafeOpen(!1),h.getState().setPendingDefaultAction(null))},children:c.jsxs(io,{className:"max-w-md",children:[c.jsx(Ao,{children:"Enable auto-allow for this chat?"}),c.jsxs(la,{className:"space-y-3 text-sm",children:[c.jsx("p",{children:"Auto-allow disables tool-call prompts. The model can run shell commands, write files, and edit code without asking. Read/write deny lists still apply."}),c.jsx("p",{className:"text-warning",children:"Use a worktree for risky tasks."})]}),c.jsxs(Lc,{className:"justify-end gap-2",children:[c.jsx(Me,{variant:"ghost",onClick:()=>{h.getState().setConfirmUnsafeOpen(!1),h.getState().setPendingDefaultAction(null)},children:"Cancel"}),c.jsx(Me,{variant:"destructive",onClick:()=>{const x=h.getState();d&&x.setDefaultAction(d),x.setConfirmUnsafeOpen(!1),x.setPendingDefaultAction(null)},children:"Enable auto-allow"})]})]})})]})}const afe={defaultAction:"ask",bash:{autoAllowVerbs:["ls","pwd","git status","git diff","git log"]},readPathDeny:["~/.ssh","~/.aws","~/.gcp","~/.config/gh","~/.claude","~/.kanna","~/Library/Keychains","/etc/shadow","/etc/sudoers","~/.gnupg","~/.gitconfig","**/.git/config","~/.npmrc","~/.netrc","~/.docker/config.json","**/.env","**/.env.*","**/credentials*","**/*.pem","**/*.key","**/id_rsa*","**/id_ed25519*"],writePathDeny:["/etc/**","/usr/**","/System/**","~/.ssh/**","~/.aws/**","~/.config/gh/**","~/.claude/**","~/.kanna/**","~/.gnupg/**","~/.gitconfig","**/.git/config"],toolDenyList:[{tool:"mcp__kanna__bash",pattern:"rm\\s+-rf\\s+(/|~|\\$HOME)(?:\\b|$|\\s)"},{tool:"mcp__kanna__bash",pattern:"git\\s+push\\b.*--force"}],toolAllowList:[]},dn=_.forwardRef(({className:e,type:t,...n},r)=>c.jsx("input",{ref:r,type:t,className:fe("flex w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e),...n}));dn.displayName="Input";const c9=_.createContext(null);function lfe({children:e}){const[t,n]=_.useState(null),[r,i]=_.useState(""),s=_.useRef(null);_.useEffect(()=>{(t==null?void 0:t.kind)==="prompt"&&(i(t.options.initialValue??""),setTimeout(()=>{var b,x;(b=s.current)==null||b.focus(),(x=s.current)==null||x.select()},0))},[t]);const o=_.useCallback(()=>{n(null),i("")},[]),a=_.useCallback(()=>{t&&(t.kind==="confirm"?t.resolve(!1):t.kind==="prompt"?t.resolve(null):t.resolve(),o())},[o,t]),l=_.useCallback(()=>{t&&(t.kind==="confirm"?t.resolve(!0):t.kind==="prompt"?t.resolve(r.trim()||null):t.resolve(),o())},[o,t,r]),d=_.useCallback(b=>new Promise(x=>{n({kind:"confirm",options:b,resolve:x})}),[]),h=_.useCallback(b=>new Promise(x=>{n({kind:"prompt",options:b,resolve:x})}),[]),p=_.useCallback(b=>new Promise(x=>{n({kind:"alert",options:b,resolve:x})}),[]),m=_.useMemo(()=>({confirm:d,prompt:h,alert:p}),[p,d,h]);let v="Confirm";return t&&(t.kind==="alert"?v=t.options.closeLabel??"OK":"confirmLabel"in t.options&&(v=t.options.confirmLabel??"Confirm")),c.jsxs(c9.Provider,{value:m,children:[e,c.jsx(To,{open:t!==null,onOpenChange:b=>{b||!t||a()},children:c.jsx(io,{size:"sm",onKeyDown:b=>{b.key!=="Enter"||b.shiftKey||!t||t.kind!=="confirm"||(b.preventDefault(),l())},children:t?c.jsxs(c.Fragment,{children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:t.options.title}),t.options.description?c.jsx(Qm,{children:t.options.description}):null,t.kind==="prompt"?c.jsx(dn,{ref:s,type:"text",value:r,onChange:b=>i(b.target.value),onKeyDown:b=>{b.key==="Enter"&&(b.preventDefault(),l())},placeholder:t.options.placeholder}):null]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:a,className:t.kind==="alert"?"hidden":void 0,children:"cancelLabel"in t.options?t.options.cancelLabel??"Cancel":"Cancel"}),c.jsx(Me,{variant:t.kind==="confirm"?t.options.confirmVariant??"default":"secondary",size:"sm",onClick:l,disabled:t.kind==="prompt"&&!r.trim(),children:v})]})]}):null})})]})}function zx(){const e=_.useContext(c9);if(!e)throw new Error("useAppDialog must be used within AppDialogProvider");return e}const Mj=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("bg-card text-card-foreground",e),...t}));Mj.displayName="Card";const jj=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("flex flex-col space-y-1.5 p-2",e),...t}));jj.displayName="CardHeader";const u9=_.forwardRef(({className:e,...t},n)=>c.jsx("h3",{ref:n,className:fe("text-2xl font-semibold leading-none tracking-tight",e),...t}));u9.displayName="CardTitle";const d9=_.forwardRef(({className:e,...t},n)=>c.jsx("p",{ref:n,className:fe("text-sm text-muted-foreground",e),...t}));d9.displayName="CardDescription";const Ij=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("p-6 pt-0",e),...t}));Ij.displayName="CardContent";const cfe=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("flex items-center p-6 pt-0",e),...t}));cfe.displayName="CardFooter";const ufe={info:{dotVar:"var(--info)",bgClass:"bg-info/[0.06]"},warning:{dotVar:"var(--warning)",bgClass:"bg-warning/[0.06]"},success:{dotVar:"var(--success)",bgClass:"bg-success/[0.06]"},error:{dotVar:"var(--destructive)",bgClass:"bg-destructive/[0.06]"}};function dfe({variant:e,children:t,dot:n=!0,className:r}){const i=ufe[e];return c.jsxs("div",{role:"status",className:fe("flex flex-wrap items-center justify-center gap-x-2 gap-y-1 border-b border-border px-4 py-2 text-xs leading-tight",i.bgClass,r),children:[n?c.jsx("span",{"aria-hidden":"true",className:"inline-block size-1.5 shrink-0 rounded-full",style:{backgroundColor:i.dotVar}}):null,t]})}const ffe="modulepreload",hfe=function(e){return"/"+e},w$={},Z=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let o=function(d){return Promise.all(d.map(h=>Promise.resolve(h).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=o(n.map(d=>{if(d=hfe(d),d in w$)return;w$[d]=!0;const h=d.endsWith(".css"),p=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${p}`))return;const m=document.createElement("link");if(m.rel=h?"stylesheet":ffe,h||(m.as="script"),m.crossOrigin="",m.href=d,l&&m.setAttribute("nonce",l),document.head.appendChild(m),h)return new Promise((v,b)=>{m.addEventListener("load",v),m.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${d}`)))})}))}function s(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return i.then(o=>{for(const a of o||[])a.status==="rejected"&&s(a.reason);return t().catch(s)})},pfe=_.lazy(()=>Z(()=>import("./index-CbSY9HfS.js"),[]).then(e=>({default:e.Toaster})));function mfe(){return c.jsx(_.Suspense,{fallback:null,children:c.jsx(pfe,{position:"bottom-right",theme:"system",closeButton:!0,duration:6e3})})}const gfe="1.3.0",vfe={version:gfe},$r="Kanna",C$="kanna",bfe=".kanna",xfe=".kanna-dev",yfe="KANNA_RUNTIME_PROFILE",Pj=`kanna/${vfe.version}`,_fe="[kanna]",Sfe=`~/${$r}`;function jC(){const e=Reflect.get(globalThis,"process");return e==null?void 0:e.env}function wfe(e=jC()){var t;return((t=e==null?void 0:e[yfe])==null?void 0:t.trim().toLowerCase())==="dev"?"dev":"prod"}function Cfe(e=jC()){return wfe(e)==="dev"?xfe:bfe}function kfe(e=jC()){return`~/${Cfe(e)}`}function Efe(e=jC()){return`${kfe(e)}/keybindings.json`}function U_(e){return e?`${C$} ${e}`:C$}const f9="always",h9="funk",Nfe=[{value:"blow",label:"Blow"},{value:"bottle",label:"Bottle"},{value:"frog",label:"Frog"},{value:"funk",label:"Funk"},{value:"glass",label:"Glass"},{value:"ping",label:"Ping"},{value:"pop",label:"Pop"},{value:"purr",label:"Purr"},{value:"tink",label:"Tink"}];function Tfe(e){switch(e){case"never":case"unfocused":case"always":return e;default:return f9}}function Afe(e){switch(e){case"blow":case"bottle":case"frog":case"funk":case"glass":case"ping":case"pop":case"purr":case"tink":return e;default:return h9}}const Rf=tr()(e=>({chatSoundPreference:f9,chatSoundId:h9,setChatSoundPreference:t=>e({chatSoundPreference:Tfe(t)}),setChatSoundId:t=>e({chatSoundId:Afe(t)})})),Rfe={blow:"/chat-sounds/Blow.mp3",bottle:"/chat-sounds/Bottle.mp3",frog:"/chat-sounds/Frog.mp3",funk:"/chat-sounds/Funk.mp3",glass:"/chat-sounds/Glass.mp3",ping:"/chat-sounds/Ping.mp3",pop:"/chat-sounds/Pop.mp3",purr:"/chat-sounds/Purr.mp3",tink:"/chat-sounds/Tink.mp3"};function Mfe(e=document){return e.visibilityState!=="visible"||!e.hasFocus()}function jfe(e){const t=new Audio(Rfe[e]);return t.preload="auto",t.play()}async function C2(e,t){if(t<=0)return;const n=Array.from({length:t},(r,i)=>new Promise(s=>{window.setTimeout(()=>{jfe(e).catch(()=>{}).finally(()=>s())},i*90)}));await Promise.all(n)}function Ife(e,t=document){return e==="never"?!1:e==="always"?!0:Mfe(t)}function Pfe(e){return e.projectGroups.reduce((t,n)=>t+n.chats.reduce((r,i)=>r+(i.unread?1:0)+(i.status==="waiting_for_user"?1:0),0),0)}function k$(e){let t=0;const n=new Set;for(const r of e.projectGroups)for(const i of r.chats)i.unread&&(t+=1),i.status==="waiting_for_user"&&n.add(i.chatId);return{unreadCount:t,waitingChatIds:n}}function Lfe(e,t){if(!e)return 0;const n=k$(e),r=k$(t),i=Math.max(0,r.unreadCount-n.unreadCount);let s=0;for(const o of r.waitingChatIds)n.waitingChatIds.has(o)||(s+=1);return i+s}function k2(e){return e.split(/[\s_-]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}const Ofe=[/^(?:\/usr\/bin\/env\s+)?(?:\/bin\/)?(?:bash|zsh|sh)\s+(?:-[a-zA-Z]*c|-c)\s+(['"])([\s\S]*)\1$/,/^(?:\/usr\/bin\/env\s+)?(?:\/bin\/)?(?:bash|zsh|sh)\s+(?:-[a-zA-Z]*c|-c)\s+(.+)$/,/^(?:\/usr\/bin\/env\s+)?(?:cmd(?:\.exe)?)\s+\/c\s+(['"])([\s\S]*)\1$/i,/^(?:\/usr\/bin\/env\s+)?(?:cmd(?:\.exe)?)\s+\/c\s+(.+)$/i,/^(?:\/usr\/bin\/env\s+)?(?:powershell(?:\.exe)?|pwsh)\s+(?:-NoProfile\s+)?-Command\s+(['"])([\s\S]*)\1$/i,/^(?:\/usr\/bin\/env\s+)?(?:powershell(?:\.exe)?|pwsh)\s+(?:-NoProfile\s+)?-Command\s+(.+)$/i];function p9(e){const t=e.trim();for(const n of Ofe){const r=t.match(n);if(!r)continue;const i=(r[2]??r[1]??"").trim();if(i)return i}return t}function Lj(e){return e.split("/").pop()||e}const Dfe=1440*6e4;function $fe(e,t){if(e===void 0)return null;const n=Math.max(0,t-e),r=6e4,i=60*r,s=Dfe,o=7*s;return n<r?"now":n<i?`${Math.floor(n/r)}m`:n<s?`${Math.floor(n/i)}h`:n<o?`${Math.floor(n/s)}d`:`${Math.floor(n/o)}w`}function zfe(e){return e.lastMessageAt??e._creationTime}const Oj=1e3,nS=60*Oj,Bp=60*nS,hN=24*Bp;function Jo(e){const t=Math.max(0,e);if(t<nS)return`${Math.floor(t/Oj)}s`;if(t<Bp)return`${Math.floor(t/nS)}m`;if(t<hN){const i=Math.floor(t/Bp),s=Math.floor(t%Bp/nS);return s===0?`${i}h`:`${i}h ${s}m`}const n=Math.floor(t/hN),r=Math.floor(t%hN/Bp);return r===0?`${n}d`:`${n}d ${r}h`}function E2(e){const t=Math.max(0,e);if(t>=Bp)return Jo(t);const n=Math.floor(t/Oj),r=Math.floor(n/60),i=n%60;return`${r}:${i.toString().padStart(2,"0")}`}function N2(e){switch(e){case"idle":return"Idle";case"starting":return"Starting";case"running":return"Running";case"waiting_for_user":return"Waiting";case"failed":return"Failed"}}function E$(e){switch(e){case"running":return"active";case"waiting_for_user":return"attention";case"failed":return"destructive";case"idle":case"starting":default:return"muted"}}function N$(e){switch(e){case"active":return"text-emerald-500 dark:text-emerald-400";case"attention":return"text-amber-500 dark:text-amber-400";case"destructive":return"text-destructive";case"muted":default:return"text-muted-foreground"}}function Dj(e){const t=e+"CollectionProvider",[n,r]=Zc(t),[i,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=x=>{const{scope:S,children:C}=x,k=$n.useRef(null),w=$n.useRef(new Map).current;return c.jsx(i,{scope:S,itemMap:w,collectionRef:k,children:C})};o.displayName=t;const a=e+"CollectionSlot",l=qf(a),d=$n.forwardRef((x,S)=>{const{scope:C,children:k}=x,w=s(a,C),N=Vn(S,w.collectionRef);return c.jsx(l,{ref:N,children:k})});d.displayName=a;const h=e+"CollectionItemSlot",p="data-radix-collection-item",m=qf(h),v=$n.forwardRef((x,S)=>{const{scope:C,children:k,...w}=x,N=$n.useRef(null),A=Vn(S,N),T=s(h,C);return $n.useEffect(()=>(T.itemMap.set(N,{ref:N,...w}),()=>void T.itemMap.delete(N))),c.jsx(m,{[p]:"",ref:A,children:k})});v.displayName=h;function b(x){const S=s(e+"CollectionConsumer",x);return $n.useCallback(()=>{const k=S.collectionRef.current;if(!k)return[];const w=Array.from(k.querySelectorAll(`[${p}]`));return Array.from(S.itemMap.values()).sort((T,M)=>w.indexOf(T.ref.current)-w.indexOf(M.ref.current))},[S.collectionRef,S.itemMap])}return[{Provider:o,Slot:d,ItemSlot:v},b,r]}var Bfe=_.createContext(void 0);function $j(e){const t=_.useContext(Bfe);return e||t||"ltr"}var pN="rovingFocusGroup.onEntryFocus",Ffe={bubbles:!1,cancelable:!0},Bx="RovingFocusGroup",[T2,m9,Ufe]=Dj(Bx),[Hfe,g9]=Zc(Bx,[Ufe]),[Wfe,Vfe]=Hfe(Bx),v9=_.forwardRef((e,t)=>c.jsx(T2.Provider,{scope:e.__scopeRovingFocusGroup,children:c.jsx(T2.Slot,{scope:e.__scopeRovingFocusGroup,children:c.jsx(Kfe,{...e,ref:t})})}));v9.displayName=Bx;var Kfe=_.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:s,currentTabStopId:o,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...p}=e,m=_.useRef(null),v=Vn(t,m),b=$j(s),[x,S]=ym({prop:o,defaultProp:a??null,onChange:l,caller:Bx}),[C,k]=_.useState(!1),w=Fa(d),N=m9(n),A=_.useRef(!1),[T,M]=_.useState(0);return _.useEffect(()=>{const j=m.current;if(j)return j.addEventListener(pN,w),()=>j.removeEventListener(pN,w)},[w]),c.jsx(Wfe,{scope:n,orientation:r,dir:b,loop:i,currentTabStopId:x,onItemFocus:_.useCallback(j=>S(j),[S]),onItemShiftTab:_.useCallback(()=>k(!0),[]),onFocusableItemAdd:_.useCallback(()=>M(j=>j+1),[]),onFocusableItemRemove:_.useCallback(()=>M(j=>j-1),[]),children:c.jsx(Sn.div,{tabIndex:C||T===0?-1:0,"data-orientation":r,...p,ref:v,style:{outline:"none",...e.style},onMouseDown:nt(e.onMouseDown,()=>{A.current=!0}),onFocus:nt(e.onFocus,j=>{const P=!A.current;if(j.target===j.currentTarget&&P&&!C){const D=new CustomEvent(pN,Ffe);if(j.currentTarget.dispatchEvent(D),!D.defaultPrevented){const L=N().filter(F=>F.focusable),I=L.find(F=>F.active),$=L.find(F=>F.id===x),z=[I,$,...L].filter(Boolean).map(F=>F.ref.current);y9(z,h)}}A.current=!1}),onBlur:nt(e.onBlur,()=>k(!1))})})}),b9="RovingFocusGroupItem",x9=_.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:s,children:o,...a}=e,l=Rc(),d=s||l,h=Vfe(b9,n),p=h.currentTabStopId===d,m=m9(n),{onFocusableItemAdd:v,onFocusableItemRemove:b,currentTabStopId:x}=h;return _.useEffect(()=>{if(r)return v(),()=>b()},[r,v,b]),c.jsx(T2.ItemSlot,{scope:n,id:d,focusable:r,active:i,children:c.jsx(Sn.span,{tabIndex:p?0:-1,"data-orientation":h.orientation,...a,ref:t,onMouseDown:nt(e.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(e.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(e.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const C=Yfe(S,h.orientation,h.dir);if(C!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let w=m().filter(N=>N.focusable).map(N=>N.ref.current);if(C==="last")w.reverse();else if(C==="prev"||C==="next"){C==="prev"&&w.reverse();const N=w.indexOf(S.currentTarget);w=h.loop?Xfe(w,N+1):w.slice(N+1)}setTimeout(()=>y9(w))}}),children:typeof o=="function"?o({isCurrentTabStop:p,hasTabStop:x!=null}):o})})});x9.displayName=b9;var Gfe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function qfe(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Yfe(e,t,n){const r=qfe(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Gfe[r]}function y9(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function Xfe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Jfe=v9,Zfe=x9,A2=["Enter"," "],Qfe=["ArrowDown","PageUp","Home"],_9=["ArrowUp","PageDown","End"],ehe=[...Qfe,..._9],the={ltr:[...A2,"ArrowRight"],rtl:[...A2,"ArrowLeft"]},nhe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Fx="Menu",[Ab,rhe,ihe]=Dj(Fx),[vh,S9]=Zc(Fx,[ihe,jd,g9]),IC=jd(),w9=g9(),[she,bh]=vh(Fx),[ohe,Ux]=vh(Fx),C9=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:s,modal:o=!0}=e,a=IC(t),[l,d]=_.useState(null),h=_.useRef(!1),p=Fa(s),m=$j(i);return _.useEffect(()=>{const v=()=>{h.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>h.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),c.jsx(NC,{...a,children:c.jsx(she,{scope:t,open:n,onOpenChange:p,content:l,onContentChange:d,children:c.jsx(ohe,{scope:t,onClose:_.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:h,dir:m,modal:o,children:r})})})};C9.displayName=Fx;var ahe="MenuAnchor",zj=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=IC(n);return c.jsx(Dx,{...i,...r,ref:t})});zj.displayName=ahe;var Bj="MenuPortal",[lhe,k9]=vh(Bj,{forceMount:void 0}),E9=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:i}=e,s=bh(Bj,t);return c.jsx(lhe,{scope:t,forceMount:n,children:c.jsx(ma,{present:n||s.open,children:c.jsx(Zm,{asChild:!0,container:i,children:r})})})};E9.displayName=Bj;var ia="MenuContent",[che,Fj]=vh(ia),N9=_.forwardRef((e,t)=>{const n=k9(ia,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,s=bh(ia,e.__scopeMenu),o=Ux(ia,e.__scopeMenu);return c.jsx(Ab.Provider,{scope:e.__scopeMenu,children:c.jsx(ma,{present:r||s.open,children:c.jsx(Ab.Slot,{scope:e.__scopeMenu,children:o.modal?c.jsx(uhe,{...i,ref:t}):c.jsx(dhe,{...i,ref:t})})})})}),uhe=_.forwardRef((e,t)=>{const n=bh(ia,e.__scopeMenu),r=_.useRef(null),i=Vn(t,r);return _.useEffect(()=>{const s=r.current;if(s)return yC(s)},[]),c.jsx(Uj,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),dhe=_.forwardRef((e,t)=>{const n=bh(ia,e.__scopeMenu);return c.jsx(Uj,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),fhe=qf("MenuContent.ScrollLock"),Uj=_.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:o,disableOutsidePointerEvents:a,onEntryFocus:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:b,...x}=e,S=bh(ia,n),C=Ux(ia,n),k=IC(n),w=w9(n),N=rhe(n),[A,T]=_.useState(null),M=_.useRef(null),j=Vn(t,M,S.onContentChange),P=_.useRef(0),D=_.useRef(""),L=_.useRef(0),I=_.useRef(null),$=_.useRef("right"),H=_.useRef(0),z=b?Lx:_.Fragment,F=b?{as:fhe,allowPinchZoom:!0}:void 0,K=V=>{var ne,ie;const X=D.current+V,G=N().filter(ae=>!ae.disabled),te=document.activeElement,oe=(ne=G.find(ae=>ae.ref.current===te))==null?void 0:ne.textValue,ce=G.map(ae=>ae.textValue),de=Che(ce,X,oe),ee=(ie=G.find(ae=>ae.textValue===de))==null?void 0:ie.ref.current;(function ae(Q){D.current=Q,window.clearTimeout(P.current),Q!==""&&(P.current=window.setTimeout(()=>ae(""),1e3))})(X),ee&&setTimeout(()=>ee.focus())};_.useEffect(()=>()=>window.clearTimeout(P.current),[]),bC();const W=_.useCallback(V=>{var G,te;return $.current===((G=I.current)==null?void 0:G.side)&&Ehe(V,(te=I.current)==null?void 0:te.area)},[]);return c.jsx(che,{scope:n,searchRef:D,onItemEnter:_.useCallback(V=>{W(V)&&V.preventDefault()},[W]),onItemLeave:_.useCallback(V=>{var X;W(V)||((X=M.current)==null||X.focus(),T(null))},[W]),onTriggerLeave:_.useCallback(V=>{W(V)&&V.preventDefault()},[W]),pointerGraceTimerRef:L,onPointerGraceIntentChange:_.useCallback(V=>{I.current=V},[]),children:c.jsx(z,{...F,children:c.jsx(Px,{asChild:!0,trapped:i,onMountAutoFocus:nt(s,V=>{var X;V.preventDefault(),(X=M.current)==null||X.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:c.jsx(Jfe,{asChild:!0,...w,dir:C.dir,orientation:"vertical",loop:r,currentTabStopId:A,onCurrentTabStopIdChange:T,onEntryFocus:nt(l,V=>{C.isUsingKeyboardRef.current||V.preventDefault()}),preventScrollOnEntryFocus:!0,children:c.jsx(TC,{role:"menu","aria-orientation":"vertical","data-state":H9(S.open),"data-radix-menu-content":"",dir:C.dir,...k,...x,ref:j,style:{outline:"none",...x.style},onKeyDown:nt(x.onKeyDown,V=>{const G=V.target.closest("[data-radix-menu-content]")===V.currentTarget,te=V.ctrlKey||V.altKey||V.metaKey,oe=V.key.length===1;G&&(V.key==="Tab"&&V.preventDefault(),!te&&oe&&K(V.key));const ce=M.current;if(V.target!==ce||!ehe.includes(V.key))return;V.preventDefault();const ee=N().filter(ne=>!ne.disabled).map(ne=>ne.ref.current);_9.includes(V.key)&&ee.reverse(),She(ee)}),onBlur:nt(e.onBlur,V=>{V.currentTarget.contains(V.target)||(window.clearTimeout(P.current),D.current="")}),onPointerMove:nt(e.onPointerMove,Rb(V=>{const X=V.target,G=H.current!==V.clientX;if(V.currentTarget.contains(X)&&G){const te=V.clientX>H.current?"right":"left";$.current=te,H.current=V.clientX}}))})})})})})})});N9.displayName=ia;var hhe="MenuGroup",Hj=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{role:"group",...r,ref:t})});Hj.displayName=hhe;var phe="MenuLabel",T9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{...r,ref:t})});T9.displayName=phe;var ZS="MenuItem",T$="menu.itemSelect",PC=_.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...i}=e,s=_.useRef(null),o=Ux(ZS,e.__scopeMenu),a=Fj(ZS,e.__scopeMenu),l=Vn(t,s),d=_.useRef(!1),h=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(T$,{bubbles:!0,cancelable:!0});p.addEventListener(T$,v=>r==null?void 0:r(v),{once:!0}),G7(p,m),m.defaultPrevented?d.current=!1:o.onClose()}};return c.jsx(A9,{...i,ref:l,disabled:n,onClick:nt(e.onClick,h),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),d.current=!0},onPointerUp:nt(e.onPointerUp,p=>{var m;d.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:nt(e.onKeyDown,p=>{const m=a.searchRef.current!=="";n||m&&p.key===" "||A2.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});PC.displayName=ZS;var A9=_.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:i,...s}=e,o=Fj(ZS,n),a=w9(n),l=_.useRef(null),d=Vn(t,l),[h,p]=_.useState(!1),[m,v]=_.useState("");return _.useEffect(()=>{const b=l.current;b&&v((b.textContent??"").trim())},[s.children]),c.jsx(Ab.ItemSlot,{scope:n,disabled:r,textValue:i??m,children:c.jsx(Zfe,{asChild:!0,...a,focusable:!r,children:c.jsx(Sn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:d,onPointerMove:nt(e.onPointerMove,Rb(b=>{r?o.onItemLeave(b):(o.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(e.onPointerLeave,Rb(b=>o.onItemLeave(b))),onFocus:nt(e.onFocus,()=>p(!0)),onBlur:nt(e.onBlur,()=>p(!1))})})})}),mhe="MenuCheckboxItem",R9=_.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...i}=e;return c.jsx(L9,{scope:e.__scopeMenu,checked:n,children:c.jsx(PC,{role:"menuitemcheckbox","aria-checked":QS(n)?"mixed":n,...i,ref:t,"data-state":Vj(n),onSelect:nt(i.onSelect,()=>r==null?void 0:r(QS(n)?!0:!n),{checkForDefaultPrevented:!1})})})});R9.displayName=mhe;var M9="MenuRadioGroup",[ghe,vhe]=vh(M9,{value:void 0,onValueChange:()=>{}}),j9=_.forwardRef((e,t)=>{const{value:n,onValueChange:r,...i}=e,s=Fa(r);return c.jsx(ghe,{scope:e.__scopeMenu,value:n,onValueChange:s,children:c.jsx(Hj,{...i,ref:t})})});j9.displayName=M9;var I9="MenuRadioItem",P9=_.forwardRef((e,t)=>{const{value:n,...r}=e,i=vhe(I9,e.__scopeMenu),s=n===i.value;return c.jsx(L9,{scope:e.__scopeMenu,checked:s,children:c.jsx(PC,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":Vj(s),onSelect:nt(r.onSelect,()=>{var o;return(o=i.onValueChange)==null?void 0:o.call(i,n)},{checkForDefaultPrevented:!1})})})});P9.displayName=I9;var Wj="MenuItemIndicator",[L9,bhe]=vh(Wj,{checked:!1}),O9=_.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...i}=e,s=bhe(Wj,n);return c.jsx(ma,{present:r||QS(s.checked)||s.checked===!0,children:c.jsx(Sn.span,{...i,ref:t,"data-state":Vj(s.checked)})})});O9.displayName=Wj;var xhe="MenuSeparator",D9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});D9.displayName=xhe;var yhe="MenuArrow",$9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=IC(n);return c.jsx(AC,{...i,...r,ref:t})});$9.displayName=yhe;var _he="MenuSub",[B8e,z9]=vh(_he),jv="MenuSubTrigger",B9=_.forwardRef((e,t)=>{const n=bh(jv,e.__scopeMenu),r=Ux(jv,e.__scopeMenu),i=z9(jv,e.__scopeMenu),s=Fj(jv,e.__scopeMenu),o=_.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:l}=s,d={__scopeMenu:e.__scopeMenu},h=_.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return _.useEffect(()=>h,[h]),_.useEffect(()=>{const p=a.current;return()=>{window.clearTimeout(p),l(null)}},[a,l]),c.jsx(zj,{asChild:!0,...d,children:c.jsx(A9,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":i.contentId,"data-state":H9(n.open),...e,ref:fj(t,i.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(e.onPointerMove,Rb(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(s.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(e.onPointerLeave,Rb(p=>{var v,b;h();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const x=(b=n.content)==null?void 0:b.dataset.side,S=x==="right",C=S?-5:5,k=m[S?"left":"right"],w=m[S?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+C,y:p.clientY},{x:k,y:m.top},{x:w,y:m.top},{x:w,y:m.bottom},{x:k,y:m.bottom}],side:x}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:nt(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||the[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});B9.displayName=jv;var F9="MenuSubContent",U9=_.forwardRef((e,t)=>{const n=k9(ia,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,s=bh(ia,e.__scopeMenu),o=Ux(ia,e.__scopeMenu),a=z9(F9,e.__scopeMenu),l=_.useRef(null),d=Vn(t,l);return c.jsx(Ab.Provider,{scope:e.__scopeMenu,children:c.jsx(ma,{present:r||s.open,children:c.jsx(Ab.Slot,{scope:e.__scopeMenu,children:c.jsx(Uj,{id:a.contentId,"aria-labelledby":a.triggerId,...i,ref:d,align:"start",side:o.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{var p;o.isUsingKeyboardRef.current&&((p=l.current)==null||p.focus()),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(e.onFocusOutside,h=>{h.target!==a.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:nt(e.onEscapeKeyDown,h=>{o.onClose(),h.preventDefault()}),onKeyDown:nt(e.onKeyDown,h=>{var v;const p=h.currentTarget.contains(h.target),m=nhe[o.dir].includes(h.key);p&&m&&(s.onOpenChange(!1),(v=a.trigger)==null||v.focus(),h.preventDefault())})})})})})});U9.displayName=F9;function H9(e){return e?"open":"closed"}function QS(e){return e==="indeterminate"}function Vj(e){return QS(e)?"indeterminate":e?"checked":"unchecked"}function She(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function whe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Che(e,t,n){const i=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let o=whe(e,Math.max(s,0));i.length===1&&(o=o.filter(d=>d!==n));const l=o.find(d=>d.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function khe(e,t){const{x:n,y:r}=e;let i=!1;for(let s=0,o=t.length-1;s<t.length;o=s++){const a=t[s],l=t[o],d=a.x,h=a.y,p=l.x,m=l.y;h>r!=m>r&&n<(p-d)*(r-h)/(m-h)+d&&(i=!i)}return i}function Ehe(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return khe(n,t)}function Rb(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Nhe=C9,The=zj,Ahe=E9,Rhe=N9,Mhe=Hj,jhe=T9,Ihe=PC,Phe=R9,Lhe=j9,Ohe=P9,Dhe=O9,$he=D9,zhe=$9,Bhe=B9,Fhe=U9,Kj="ContextMenu",[Uhe]=Zc(Kj,[S9]),Ps=S9(),[Hhe,W9]=Uhe(Kj),V9=e=>{const{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:s=!0}=e,[o,a]=_.useState(!1),l=Ps(t),d=Fa(r),h=_.useCallback(p=>{a(p),d(p)},[d]);return c.jsx(Hhe,{scope:t,open:o,onOpenChange:h,modal:s,children:c.jsx(Nhe,{...l,dir:i,open:o,onOpenChange:h,modal:s,children:n})})};V9.displayName=Kj;var K9="ContextMenuTrigger",G9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,disabled:r=!1,...i}=e,s=W9(K9,n),o=Ps(n),a=_.useRef({x:0,y:0}),l=_.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),d=_.useRef(0),h=_.useCallback(()=>window.clearTimeout(d.current),[]),p=m=>{a.current={x:m.clientX,y:m.clientY},s.onOpenChange(!0)};return _.useEffect(()=>h,[h]),_.useEffect(()=>void(r&&h()),[r,h]),c.jsxs(c.Fragment,{children:[c.jsx(The,{...o,virtualRef:l}),c.jsx(Sn.span,{"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,...i,ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:r?e.onContextMenu:nt(e.onContextMenu,m=>{h(),p(m),m.preventDefault()}),onPointerDown:r?e.onPointerDown:nt(e.onPointerDown,H_(m=>{h(),d.current=window.setTimeout(()=>p(m),700)})),onPointerMove:r?e.onPointerMove:nt(e.onPointerMove,H_(h)),onPointerCancel:r?e.onPointerCancel:nt(e.onPointerCancel,H_(h)),onPointerUp:r?e.onPointerUp:nt(e.onPointerUp,H_(h))})]})});G9.displayName=K9;var Whe="ContextMenuPortal",q9=e=>{const{__scopeContextMenu:t,...n}=e,r=Ps(t);return c.jsx(Ahe,{...r,...n})};q9.displayName=Whe;var Y9="ContextMenuContent",X9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=W9(Y9,n),s=Ps(n),o=_.useRef(!1);return c.jsx(Rhe,{...s,...r,ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:a=>{var l;(l=e.onCloseAutoFocus)==null||l.call(e,a),!a.defaultPrevented&&o.current&&a.preventDefault(),o.current=!1},onInteractOutside:a=>{var l;(l=e.onInteractOutside)==null||l.call(e,a),!a.defaultPrevented&&!i.modal&&(o.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});X9.displayName=Y9;var Vhe="ContextMenuGroup",Khe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Mhe,{...i,...r,ref:t})});Khe.displayName=Vhe;var Ghe="ContextMenuLabel",qhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(jhe,{...i,...r,ref:t})});qhe.displayName=Ghe;var Yhe="ContextMenuItem",J9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Ihe,{...i,...r,ref:t})});J9.displayName=Yhe;var Xhe="ContextMenuCheckboxItem",Jhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Phe,{...i,...r,ref:t})});Jhe.displayName=Xhe;var Zhe="ContextMenuRadioGroup",Qhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Lhe,{...i,...r,ref:t})});Qhe.displayName=Zhe;var epe="ContextMenuRadioItem",tpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Ohe,{...i,...r,ref:t})});tpe.displayName=epe;var npe="ContextMenuItemIndicator",rpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Dhe,{...i,...r,ref:t})});rpe.displayName=npe;var ipe="ContextMenuSeparator",Z9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx($he,{...i,...r,ref:t})});Z9.displayName=ipe;var spe="ContextMenuArrow",ope=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(zhe,{...i,...r,ref:t})});ope.displayName=spe;var ape="ContextMenuSubTrigger",lpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Bhe,{...i,...r,ref:t})});lpe.displayName=ape;var cpe="ContextMenuSubContent",upe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Fhe,{...i,...r,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});upe.displayName=cpe;function H_(e){return t=>t.pointerType!=="mouse"?e(t):void 0}var dpe=V9,fpe=G9,hpe=q9,Q9=X9,eW=J9,tW=Z9;const nW=_.createContext(null);function xh({onOpenChange:e,...t}){const[n,r]=_.useState(0),i=_.useCallback(()=>{r(s=>s+1),e==null||e(!1)},[e]);return c.jsx(nW.Provider,{value:i,children:c.jsx(dpe,{onOpenChange:e,...t},n)})}const yh=fpe,Id=_.forwardRef(({className:e,...t},n)=>c.jsx(hpe,{children:c.jsx(Q9,{ref:n,className:fe("z-50 min-w-[170px] overflow-hidden rounded-xl border border-border bg-background p-1 shadow-lg outline-hidden animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",e),...t})}));Id.displayName=Q9.displayName;const vr=_.forwardRef(({className:e,onSelect:t,...n},r)=>{const i=_.useContext(nW);return c.jsx(eW,{ref:r,className:fe("relative flex cursor-default select-none items-center gap-2.5 rounded-lg px-3 py-2 text-xs font-medium text-foreground outline-hidden transition-colors hover:bg-muted focus:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),onSelect:s=>{t==null||t(s),i==null||i()},...n})});vr.displayName=eW.displayName;const rW=_.forwardRef(({className:e,...t},n)=>c.jsx(tW,{ref:n,className:fe("-mx-1 my-1 h-px bg-border",e),...t}));rW.displayName=tW.displayName;var LC="Popover",[iW]=Zc(LC,[jd]),Hx=jd(),[ppe,Pd]=iW(LC),sW=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:s,modal:o=!1}=e,a=Hx(t),l=_.useRef(null),[d,h]=_.useState(!1),[p,m]=ym({prop:r,defaultProp:i??!1,onChange:s,caller:LC});return c.jsx(NC,{...a,children:c.jsx(ppe,{scope:t,contentId:Rc(),triggerRef:l,open:p,onOpenChange:m,onOpenToggle:_.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:d,onCustomAnchorAdd:_.useCallback(()=>h(!0),[]),onCustomAnchorRemove:_.useCallback(()=>h(!1),[]),modal:o,children:n})})};sW.displayName=LC;var oW="PopoverAnchor",mpe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(oW,n),s=Hx(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:a}=i;return _.useEffect(()=>(o(),()=>a()),[o,a]),c.jsx(Dx,{...s,...r,ref:t})});mpe.displayName=oW;var aW="PopoverTrigger",lW=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(aW,n),s=Hx(n),o=Vn(t,i.triggerRef),a=c.jsx(Sn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":hW(i.open),...r,ref:o,onClick:nt(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?a:c.jsx(Dx,{asChild:!0,...s,children:a})});lW.displayName=aW;var Gj="PopoverPortal",[gpe,vpe]=iW(Gj,{forceMount:void 0}),cW=e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,s=Pd(Gj,t);return c.jsx(gpe,{scope:t,forceMount:n,children:c.jsx(ma,{present:n||s.open,children:c.jsx(Zm,{asChild:!0,container:i,children:r})})})};cW.displayName=Gj;var wm="PopoverContent",uW=_.forwardRef((e,t)=>{const n=vpe(wm,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,s=Pd(wm,e.__scopePopover);return c.jsx(ma,{present:r||s.open,children:s.modal?c.jsx(xpe,{...i,ref:t}):c.jsx(ype,{...i,ref:t})})});uW.displayName=wm;var bpe=qf("PopoverContent.RemoveScroll"),xpe=_.forwardRef((e,t)=>{const n=Pd(wm,e.__scopePopover),r=_.useRef(null),i=Vn(t,r),s=_.useRef(!1);return _.useEffect(()=>{const o=r.current;if(o)return yC(o)},[]),c.jsx(Lx,{as:bpe,allowPinchZoom:!0,children:c.jsx(dW,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),s.current||(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:nt(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0,d=a.button===2||l;s.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1})})})}),ype=_.forwardRef((e,t)=>{const n=Pd(wm,e.__scopePopover),r=_.useRef(!1),i=_.useRef(!1);return c.jsx(dW,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var o,a;(o=e.onCloseAutoFocus)==null||o.call(e,s),s.defaultPrevented||(r.current||(a=n.triggerRef.current)==null||a.focus(),s.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:s=>{var l,d;(l=e.onInteractOutside)==null||l.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const o=s.target;((d=n.triggerRef.current)==null?void 0:d.contains(o))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&i.current&&s.preventDefault()}})}),dW=_.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:s,disableOutsidePointerEvents:o,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:h,...p}=e,m=Pd(wm,n),v=Hx(n);return bC(),c.jsx(Px,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:s,children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:h,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:d,onDismiss:()=>m.onOpenChange(!1),children:c.jsx(TC,{"data-state":hW(m.open),role:"dialog",id:m.contentId,...v,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),fW="PopoverClose",_pe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(fW,n);return c.jsx(Sn.button,{type:"button",...r,ref:t,onClick:nt(e.onClick,()=>i.onOpenChange(!1))})});_pe.displayName=fW;var Spe="PopoverArrow",wpe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Hx(n);return c.jsx(AC,{...i,...r,ref:t})});wpe.displayName=Spe;function hW(e){return e?"open":"closed"}var Cpe=sW,kpe=lW,Epe=cW,pW=uW;const Ld=Cpe,Od=kpe,eu=_.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},i)=>c.jsx(Epe,{children:c.jsx(pW,{ref:i,align:t,sideOffset:n,[Cb]:"",onCloseAutoFocus:s=>{var o;s.preventDefault(),window.dispatchEvent(new Event(VS)),(o=r.onCloseAutoFocus)==null||o.call(r,s)},className:fe("z-50 w-72 rounded-xl border border-border bg-background p-4 shadow-lg outline-hidden animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r})}));eu.displayName=pW.displayName;const R2=qt("StackActionsPopover",()=>e=>({open:!1,setOpen:t=>e({open:t})}));function Npe({editorLabel:e,starred:t,onCopyPath:n,onShowArchived:r,onOpenInFinder:i,onOpenInEditor:s,onToggleStar:o,onHide:a,children:l}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:l}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),o()},children:[t?c.jsx(Aae,{className:"h-3.5 w-3.5"}):c.jsx(N7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:t?"Unstar project":"Star project"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),n()},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy Path"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),r()},children:[c.jsx(QM,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Show Archived"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),i()},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Show in Finder"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),s()},children:[c.jsx(ej,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Open in ",e]})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),a()},className:"text-destructive hover:bg-destructive/10 focus:bg-destructive/10",children:[c.jsx(wse,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Hide"})]})]})]})}function Tpe({canFork:e,onRename:t,onOpenInFinder:n,onFork:r,onArchive:i,onDelete:s,onEditPermissions:o,children:a}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:a}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:l=>{l.preventDefault(),t()},children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Rename"})]}),c.jsxs(vr,{onSelect:l=>{l.preventDefault(),n()},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Open in Finder"})]}),c.jsxs(vr,{disabled:!e,onSelect:l=>{l.preventDefault(),e&&r()},children:[c.jsx(E7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Fork"})]}),o?c.jsxs(vr,{onSelect:l=>{l.preventDefault(),o()},children:[c.jsx(oj,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Permissions…"})]}):null,c.jsxs(vr,{onSelect:l=>{l.preventDefault(),i()},children:[c.jsx(QM,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Archive"})]}),c.jsxs(vr,{onSelect:l=>{l.preventDefault(),s()},className:"text-destructive dark:text-red-400 hover:bg-destructive/10 focus:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Delete"})]})]})]})}function Ape({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){const s=R2.useScopedStore(l=>l.open),o=R2.useScopedStore(l=>l.setOpen);function a(l){return()=>{o(!1),l()}}return c.jsxs(Ld,{open:s,onOpenChange:o,children:[c.jsx(Od,{asChild:!0,children:i}),c.jsxs(eu,{align:"end",sideOffset:4,className:"w-44 p-1",role:"menu","aria-label":`Actions for ${e}`,children:[c.jsxs("button",{type:"button",role:"menuitem",onClick:a(t),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-muted focus-visible:bg-muted outline-hidden",children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Rename"})]}),c.jsxs("button",{type:"button",role:"menuitem",onClick:a(n),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-muted focus-visible:bg-muted outline-hidden",children:[c.jsx(A7,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Edit members"})]}),c.jsxs("button",{type:"button",role:"menuitem",onClick:a(r),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium text-destructive dark:text-red-400 hover:bg-destructive/10 focus-visible:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus-visible:bg-red-500/20 outline-hidden",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsxs("span",{children:["Delete ",e]})]})]})]})}function Rpe({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){return c.jsx(R2.Provider,{init:{},children:c.jsx(Ape,{stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i})})}function Mpe({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:i}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:s=>{s.preventDefault(),t()},children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Rename"})]}),c.jsxs(vr,{onSelect:s=>{s.preventDefault(),n()},children:[c.jsx(A7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Edit members"})]}),c.jsxs(vr,{onSelect:s=>{s.preventDefault(),r()},className:"text-destructive dark:text-red-400 hover:bg-destructive/10 focus:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Delete ",e]})]})]})]})}function jpe(e){return e.status==="running"||e.status==="starting"?"warning":e.status==="waiting_for_user"?"info":e.status==="failed"?"destructive":e.unread?"success":null}function Ipe(e){switch(e){case"warning":return"bg-warning";case"info":return"bg-info";case"success":return"bg-success";case"destructive":return"bg-destructive";default:return""}}function Ppe(e){switch(e){case"warning":return"text-warning";case"info":return"text-info";case"success":return"text-success";case"destructive":return"text-destructive";default:return"text-muted-foreground"}}function Lpe(e){switch(e){case"active":return{glyph:"●",tone:"text-success",title:"Claude PTY session active"};case"warming":return{glyph:"◐",tone:"text-warning",title:"Claude PTY session warming"};case"idle":return{glyph:"○",tone:"text-muted-foreground",title:"Claude PTY session idle"};case"cooling":return{glyph:"◌",tone:"text-muted-foreground",title:"Claude PTY session cooling down"};case"cold":default:return null}}function Ope({chat:e,activeChatId:t,nowMs:n,shortcutHint:r=null,showShortcutHint:i=!1,onSelectChat:s,onRenameChat:o,onOpenInFinder:a,onForkChat:l,onArchiveChat:d,onDeleteChat:h,onEditPermissions:p}){const m=(e.status==="running"||e.status==="waiting_for_user")&&e.stateEnteredAt!=null,v=m&&e.stateEnteredAt!=null?`${N2(e.status)} ${E2(n-e.stateEnteredAt)}`:Jo(n-(e.lastMessageAt??e._creationTime)),b=i&&r?r:v,x=i&&!!r,S=Ble(e.chatId),C=t===S,k=jpe(e);let w;e.canFork?w="w-12":m?w="w-12 md:w-20":w="w-6 md:w-14";let N=null;b&&(x?N=c.jsx("span",{className:"hidden md:flex absolute inset-0 items-center justify-end pr-0.5 text-[11px] text-foreground transition-opacity duration-150 group-hover:opacity-0",children:c.jsx(a9,{className:"h-4 min-w-4 rounded-sm border-border/50 bg-transparent px-1 text-[10px]",children:r})}):N=c.jsx("span",{className:fe("hidden md:flex absolute inset-0 items-center justify-end pr-1 text-[11px] tabular-nums transition-opacity duration-150 group-hover:opacity-0 whitespace-nowrap",m?Ppe(k):"text-muted-foreground"),children:b}));const A=c.jsxs("div",{"data-chat-id":S,className:fe("group flex items-center gap-2 pl-2 pr-1 py-1.5 rounded-md cursor-pointer transition-colors duration-150",C?"bg-muted":"hover:bg-muted/40"),onClick:()=>s(e.chatId),children:[c.jsx("span",{className:"relative flex h-3.5 w-3.5 shrink-0 items-center justify-center","aria-hidden":!0,children:k?c.jsx("span",{className:fe("h-2 w-2 rounded-full",Ipe(k))}):null}),(()=>{const T=Lpe(e.sessionState);return T?c.jsx("span",{className:fe("shrink-0 text-[10px] leading-none",T.tone),title:T.title,"aria-label":T.title,children:T.glyph}):null})(),e.hasPolicyOverride?c.jsx(oj,{className:"size-3 shrink-0 text-warning","aria-label":"Per-chat permission override active"}):null,c.jsx("span",{className:fe("truncate flex-1 text-sm",C?"text-foreground font-medium":"text-foreground/90",e.status==="idle"&&!e.unread&&!C?"text-muted-foreground":""),children:e.title}),c.jsxs("div",{className:fe("relative h-6 shrink-0",w),children:[N,c.jsxs("div",{className:fe("absolute inset-0 flex items-center justify-end gap-0 transition-opacity duration-150",b?"opacity-100 md:opacity-0 md:group-hover:opacity-100":"opacity-100"),children:[e.canFork?c.jsx(Me,{variant:"ghost",size:"icon",className:"h-6 w-6 cursor-pointer rounded-sm hover:!bg-transparent !border-0",onClick:T=>{T.stopPropagation(),l(e.chatId)},title:"Fork chat",children:c.jsx(E7,{className:"size-3.5"})}):null,c.jsx(Me,{variant:"ghost",size:"icon",className:"h-6 w-6 cursor-pointer rounded-sm hover:!bg-transparent !border-0",onClick:T=>{T.stopPropagation(),d(e.chatId)},title:"Archive chat",children:c.jsx(QM,{className:"size-3.5"})})]})]})]},e._id);return c.jsx(Tpe,{canFork:e.canFork,onRename:()=>o(e.chatId),onOpenInFinder:()=>a(e.localPath),onFork:()=>l(e.chatId),onArchive:()=>d(e.chatId),onDelete:()=>h(e.chatId),onEditPermissions:p?()=>p(e.chatId):void 0,children:A})}const Dpe=_.memo(Ope);function $pe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _.useMemo(()=>r=>{t.forEach(i=>i(r))},t)}const OC=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ng(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function qj(e){return"nodeType"in e}function oo(e){var t,n;return e?ng(e)?e:qj(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function Yj(e){const{Document:t}=oo(e);return e instanceof t}function Wx(e){return ng(e)?!1:e instanceof oo(e).HTMLElement}function mW(e){return e instanceof oo(e).SVGElement}function rg(e){return e?ng(e)?e.document:qj(e)?Yj(e)?e:Wx(e)||mW(e)?e.ownerDocument:document:document:document}const Ml=OC?_.useLayoutEffect:_.useEffect;function Xj(e){const t=_.useRef(e);return Ml(()=>{t.current=e}),_.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return t.current==null?void 0:t.current(...r)},[])}function zpe(){const e=_.useRef(null),t=_.useCallback((r,i)=>{e.current=setInterval(r,i)},[]),n=_.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Mb(e,t){t===void 0&&(t=[e]);const n=_.useRef(e);return Ml(()=>{n.current!==e&&(n.current=e)},t),n}function Vx(e,t){const n=_.useRef();return _.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function ew(e){const t=Xj(e),n=_.useRef(null),r=_.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function M2(e){const t=_.useRef();return _.useEffect(()=>{t.current=e},[e]),t.current}let mN={};function Kx(e,t){return _.useMemo(()=>{if(t)return t;const n=mN[e]==null?0:mN[e]+1;return mN[e]=n,e+"-"+n},[e,t])}function gW(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((s,o)=>{const a=Object.entries(o);for(const[l,d]of a){const h=s[l];h!=null&&(s[l]=h+e*d)}return s},{...t})}}const em=gW(1),tw=gW(-1);function Bpe(e){return"clientX"in e&&"clientY"in e}function Jj(e){if(!e)return!1;const{KeyboardEvent:t}=oo(e.target);return t&&e instanceof t}function Fpe(e){if(!e)return!1;const{TouchEvent:t}=oo(e.target);return t&&e instanceof t}function j2(e){if(Fpe(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Bpe(e)?{x:e.clientX,y:e.clientY}:null}const jb=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[jb.Translate.toString(e),jb.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),A$="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Upe(e){return e.matches(A$)?e:e.querySelector(A$)}const Hpe={display:"none"};function Wpe(e){let{id:t,value:n}=e;return $n.createElement("div",{id:t,style:Hpe},n)}function Vpe(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const i={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return $n.createElement("div",{id:t,style:i,role:"status","aria-live":r,"aria-atomic":!0},n)}function Kpe(){const[e,t]=_.useState("");return{announce:_.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const vW=_.createContext(null);function Gpe(e){const t=_.useContext(vW);_.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function qpe(){const[e]=_.useState(()=>new Set),t=_.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[_.useCallback(r=>{let{type:i,event:s}=r;e.forEach(o=>{var a;return(a=o[i])==null?void 0:a.call(o,s)})},[e]),t]}const Ype={draggable:`
|
|
771
|
+
`)&&(C.writePathDeny=S),Object.keys(C).length===0?null:C}function v(){r(m())}function b(){r(null)}return c.jsxs(c.Fragment,{children:[c.jsx(To,{open:e,onOpenChange:x=>{x||i()},children:c.jsxs(io,{className:"max-w-2xl",children:[c.jsxs(Ao,{children:["Permissions — ",t]}),c.jsxs(la,{className:"space-y-5",children:[c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Default action"}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Behaviour when a tool call has no explicit allow/deny rule. ",c.jsx("strong",{children:"auto-allow"})," bypasses prompts and runs untrusted shell commands without supervision — use a worktree."]}),c.jsx(Es,{value:s,onValueChange:p,options:[{value:"ask",label:"Ask"},{value:"auto-allow",label:"Auto-allow (unsafe)"},{value:"auto-deny",label:"Auto-deny"}]})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Read-path deny list"}),c.jsx("div",{className:"text-xs text-muted-foreground",children:"One glob per line. The model cannot read paths matching any entry. Defaults shown below — edit to add or remove."}),c.jsx("textarea",{value:o,onChange:x=>h.getState().setReadDenyText(x.target.value),rows:8,className:"w-full rounded-md border border-border bg-background px-3 py-2 font-mono text-xs",spellCheck:!1})]}),c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-sm font-medium",children:"Write-path deny list"}),c.jsx("div",{className:"text-xs text-muted-foreground",children:"One glob per line. The model cannot edit or write paths matching any entry."}),c.jsx("textarea",{value:a,onChange:x=>h.getState().setWriteDenyText(x.target.value),rows:8,className:"w-full rounded-md border border-border bg-background px-3 py-2 font-mono text-xs",spellCheck:!1})]})]}),c.jsxs(Lc,{className:"justify-between",children:[c.jsx(Me,{variant:"ghost",onClick:b,children:"Reset to defaults"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Me,{variant:"ghost",onClick:i,children:"Cancel"}),c.jsx(Me,{onClick:v,children:"Apply"})]})]})]})}),c.jsx(To,{open:l,onOpenChange:x=>{x||(h.getState().setConfirmUnsafeOpen(!1),h.getState().setPendingDefaultAction(null))},children:c.jsxs(io,{className:"max-w-md",children:[c.jsx(Ao,{children:"Enable auto-allow for this chat?"}),c.jsxs(la,{className:"space-y-3 text-sm",children:[c.jsx("p",{children:"Auto-allow disables tool-call prompts. The model can run shell commands, write files, and edit code without asking. Read/write deny lists still apply."}),c.jsx("p",{className:"text-warning",children:"Use a worktree for risky tasks."})]}),c.jsxs(Lc,{className:"justify-end gap-2",children:[c.jsx(Me,{variant:"ghost",onClick:()=>{h.getState().setConfirmUnsafeOpen(!1),h.getState().setPendingDefaultAction(null)},children:"Cancel"}),c.jsx(Me,{variant:"destructive",onClick:()=>{const x=h.getState();d&&x.setDefaultAction(d),x.setConfirmUnsafeOpen(!1),x.setPendingDefaultAction(null)},children:"Enable auto-allow"})]})]})})]})}const afe={defaultAction:"ask",bash:{autoAllowVerbs:["ls","pwd","git status","git diff","git log"]},readPathDeny:["~/.ssh","~/.aws","~/.gcp","~/.config/gh","~/.claude","~/.kanna","~/Library/Keychains","/etc/shadow","/etc/sudoers","~/.gnupg","~/.gitconfig","**/.git/config","~/.npmrc","~/.netrc","~/.docker/config.json","**/.env","**/.env.*","**/credentials*","**/*.pem","**/*.key","**/id_rsa*","**/id_ed25519*"],writePathDeny:["/etc/**","/usr/**","/System/**","~/.ssh/**","~/.aws/**","~/.config/gh/**","~/.claude/**","~/.kanna/**","~/.gnupg/**","~/.gitconfig","**/.git/config"],toolDenyList:[{tool:"mcp__kanna__bash",pattern:"rm\\s+-rf\\s+(/|~|\\$HOME)(?:\\b|$|\\s)"},{tool:"mcp__kanna__bash",pattern:"git\\s+push\\b.*--force"}],toolAllowList:[]},dn=_.forwardRef(({className:e,type:t,...n},r)=>c.jsx("input",{ref:r,type:t,className:fe("flex w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e),...n}));dn.displayName="Input";const c9=_.createContext(null);function lfe({children:e}){const[t,n]=_.useState(null),[r,i]=_.useState(""),s=_.useRef(null);_.useEffect(()=>{(t==null?void 0:t.kind)==="prompt"&&(i(t.options.initialValue??""),setTimeout(()=>{var b,x;(b=s.current)==null||b.focus(),(x=s.current)==null||x.select()},0))},[t]);const o=_.useCallback(()=>{n(null),i("")},[]),a=_.useCallback(()=>{t&&(t.kind==="confirm"?t.resolve(!1):t.kind==="prompt"?t.resolve(null):t.resolve(),o())},[o,t]),l=_.useCallback(()=>{t&&(t.kind==="confirm"?t.resolve(!0):t.kind==="prompt"?t.resolve(r.trim()||null):t.resolve(),o())},[o,t,r]),d=_.useCallback(b=>new Promise(x=>{n({kind:"confirm",options:b,resolve:x})}),[]),h=_.useCallback(b=>new Promise(x=>{n({kind:"prompt",options:b,resolve:x})}),[]),p=_.useCallback(b=>new Promise(x=>{n({kind:"alert",options:b,resolve:x})}),[]),m=_.useMemo(()=>({confirm:d,prompt:h,alert:p}),[p,d,h]);let v="Confirm";return t&&(t.kind==="alert"?v=t.options.closeLabel??"OK":"confirmLabel"in t.options&&(v=t.options.confirmLabel??"Confirm")),c.jsxs(c9.Provider,{value:m,children:[e,c.jsx(To,{open:t!==null,onOpenChange:b=>{b||!t||a()},children:c.jsx(io,{size:"sm",onKeyDown:b=>{b.key!=="Enter"||b.shiftKey||!t||t.kind!=="confirm"||(b.preventDefault(),l())},children:t?c.jsxs(c.Fragment,{children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:t.options.title}),t.options.description?c.jsx(Qm,{children:t.options.description}):null,t.kind==="prompt"?c.jsx(dn,{ref:s,type:"text",value:r,onChange:b=>i(b.target.value),onKeyDown:b=>{b.key==="Enter"&&(b.preventDefault(),l())},placeholder:t.options.placeholder}):null]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:a,className:t.kind==="alert"?"hidden":void 0,children:"cancelLabel"in t.options?t.options.cancelLabel??"Cancel":"Cancel"}),c.jsx(Me,{variant:t.kind==="confirm"?t.options.confirmVariant??"default":"secondary",size:"sm",onClick:l,disabled:t.kind==="prompt"&&!r.trim(),children:v})]})]}):null})})]})}function zx(){const e=_.useContext(c9);if(!e)throw new Error("useAppDialog must be used within AppDialogProvider");return e}const Mj=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("bg-card text-card-foreground",e),...t}));Mj.displayName="Card";const jj=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("flex flex-col space-y-1.5 p-2",e),...t}));jj.displayName="CardHeader";const u9=_.forwardRef(({className:e,...t},n)=>c.jsx("h3",{ref:n,className:fe("text-2xl font-semibold leading-none tracking-tight",e),...t}));u9.displayName="CardTitle";const d9=_.forwardRef(({className:e,...t},n)=>c.jsx("p",{ref:n,className:fe("text-sm text-muted-foreground",e),...t}));d9.displayName="CardDescription";const Ij=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("p-6 pt-0",e),...t}));Ij.displayName="CardContent";const cfe=_.forwardRef(({className:e,...t},n)=>c.jsx("div",{ref:n,className:fe("flex items-center p-6 pt-0",e),...t}));cfe.displayName="CardFooter";const ufe={info:{dotVar:"var(--info)",bgClass:"bg-info/[0.06]"},warning:{dotVar:"var(--warning)",bgClass:"bg-warning/[0.06]"},success:{dotVar:"var(--success)",bgClass:"bg-success/[0.06]"},error:{dotVar:"var(--destructive)",bgClass:"bg-destructive/[0.06]"}};function dfe({variant:e,children:t,dot:n=!0,className:r}){const i=ufe[e];return c.jsxs("div",{role:"status",className:fe("flex flex-wrap items-center justify-center gap-x-2 gap-y-1 border-b border-border px-4 py-2 text-xs leading-tight",i.bgClass,r),children:[n?c.jsx("span",{"aria-hidden":"true",className:"inline-block size-1.5 shrink-0 rounded-full",style:{backgroundColor:i.dotVar}}):null,t]})}const ffe="modulepreload",hfe=function(e){return"/"+e},w$={},Z=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let o=function(d){return Promise.all(d.map(h=>Promise.resolve(h).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=o(n.map(d=>{if(d=hfe(d),d in w$)return;w$[d]=!0;const h=d.endsWith(".css"),p=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${p}`))return;const m=document.createElement("link");if(m.rel=h?"stylesheet":ffe,h||(m.as="script"),m.crossOrigin="",m.href=d,l&&m.setAttribute("nonce",l),document.head.appendChild(m),h)return new Promise((v,b)=>{m.addEventListener("load",v),m.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${d}`)))})}))}function s(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return i.then(o=>{for(const a of o||[])a.status==="rejected"&&s(a.reason);return t().catch(s)})},pfe=_.lazy(()=>Z(()=>import("./index-BqUY1Bm4.js"),[]).then(e=>({default:e.Toaster})));function mfe(){return c.jsx(_.Suspense,{fallback:null,children:c.jsx(pfe,{position:"bottom-right",theme:"system",closeButton:!0,duration:6e3})})}const gfe="1.3.1",vfe={version:gfe},$r="Kanna",C$="kanna",bfe=".kanna",xfe=".kanna-dev",yfe="KANNA_RUNTIME_PROFILE",Pj=`kanna/${vfe.version}`,_fe="[kanna]",Sfe=`~/${$r}`;function jC(){const e=Reflect.get(globalThis,"process");return e==null?void 0:e.env}function wfe(e=jC()){var t;return((t=e==null?void 0:e[yfe])==null?void 0:t.trim().toLowerCase())==="dev"?"dev":"prod"}function Cfe(e=jC()){return wfe(e)==="dev"?xfe:bfe}function kfe(e=jC()){return`~/${Cfe(e)}`}function Efe(e=jC()){return`${kfe(e)}/keybindings.json`}function U_(e){return e?`${C$} ${e}`:C$}const f9="always",h9="funk",Nfe=[{value:"blow",label:"Blow"},{value:"bottle",label:"Bottle"},{value:"frog",label:"Frog"},{value:"funk",label:"Funk"},{value:"glass",label:"Glass"},{value:"ping",label:"Ping"},{value:"pop",label:"Pop"},{value:"purr",label:"Purr"},{value:"tink",label:"Tink"}];function Tfe(e){switch(e){case"never":case"unfocused":case"always":return e;default:return f9}}function Afe(e){switch(e){case"blow":case"bottle":case"frog":case"funk":case"glass":case"ping":case"pop":case"purr":case"tink":return e;default:return h9}}const Rf=tr()(e=>({chatSoundPreference:f9,chatSoundId:h9,setChatSoundPreference:t=>e({chatSoundPreference:Tfe(t)}),setChatSoundId:t=>e({chatSoundId:Afe(t)})})),Rfe={blow:"/chat-sounds/Blow.mp3",bottle:"/chat-sounds/Bottle.mp3",frog:"/chat-sounds/Frog.mp3",funk:"/chat-sounds/Funk.mp3",glass:"/chat-sounds/Glass.mp3",ping:"/chat-sounds/Ping.mp3",pop:"/chat-sounds/Pop.mp3",purr:"/chat-sounds/Purr.mp3",tink:"/chat-sounds/Tink.mp3"};function Mfe(e=document){return e.visibilityState!=="visible"||!e.hasFocus()}function jfe(e){const t=new Audio(Rfe[e]);return t.preload="auto",t.play()}async function C2(e,t){if(t<=0)return;const n=Array.from({length:t},(r,i)=>new Promise(s=>{window.setTimeout(()=>{jfe(e).catch(()=>{}).finally(()=>s())},i*90)}));await Promise.all(n)}function Ife(e,t=document){return e==="never"?!1:e==="always"?!0:Mfe(t)}function Pfe(e){return e.projectGroups.reduce((t,n)=>t+n.chats.reduce((r,i)=>r+(i.unread?1:0)+(i.status==="waiting_for_user"?1:0),0),0)}function k$(e){let t=0;const n=new Set;for(const r of e.projectGroups)for(const i of r.chats)i.unread&&(t+=1),i.status==="waiting_for_user"&&n.add(i.chatId);return{unreadCount:t,waitingChatIds:n}}function Lfe(e,t){if(!e)return 0;const n=k$(e),r=k$(t),i=Math.max(0,r.unreadCount-n.unreadCount);let s=0;for(const o of r.waitingChatIds)n.waitingChatIds.has(o)||(s+=1);return i+s}function k2(e){return e.split(/[\s_-]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" ")}const Ofe=[/^(?:\/usr\/bin\/env\s+)?(?:\/bin\/)?(?:bash|zsh|sh)\s+(?:-[a-zA-Z]*c|-c)\s+(['"])([\s\S]*)\1$/,/^(?:\/usr\/bin\/env\s+)?(?:\/bin\/)?(?:bash|zsh|sh)\s+(?:-[a-zA-Z]*c|-c)\s+(.+)$/,/^(?:\/usr\/bin\/env\s+)?(?:cmd(?:\.exe)?)\s+\/c\s+(['"])([\s\S]*)\1$/i,/^(?:\/usr\/bin\/env\s+)?(?:cmd(?:\.exe)?)\s+\/c\s+(.+)$/i,/^(?:\/usr\/bin\/env\s+)?(?:powershell(?:\.exe)?|pwsh)\s+(?:-NoProfile\s+)?-Command\s+(['"])([\s\S]*)\1$/i,/^(?:\/usr\/bin\/env\s+)?(?:powershell(?:\.exe)?|pwsh)\s+(?:-NoProfile\s+)?-Command\s+(.+)$/i];function p9(e){const t=e.trim();for(const n of Ofe){const r=t.match(n);if(!r)continue;const i=(r[2]??r[1]??"").trim();if(i)return i}return t}function Lj(e){return e.split("/").pop()||e}const Dfe=1440*6e4;function $fe(e,t){if(e===void 0)return null;const n=Math.max(0,t-e),r=6e4,i=60*r,s=Dfe,o=7*s;return n<r?"now":n<i?`${Math.floor(n/r)}m`:n<s?`${Math.floor(n/i)}h`:n<o?`${Math.floor(n/s)}d`:`${Math.floor(n/o)}w`}function zfe(e){return e.lastMessageAt??e._creationTime}const Oj=1e3,nS=60*Oj,Bp=60*nS,hN=24*Bp;function Jo(e){const t=Math.max(0,e);if(t<nS)return`${Math.floor(t/Oj)}s`;if(t<Bp)return`${Math.floor(t/nS)}m`;if(t<hN){const i=Math.floor(t/Bp),s=Math.floor(t%Bp/nS);return s===0?`${i}h`:`${i}h ${s}m`}const n=Math.floor(t/hN),r=Math.floor(t%hN/Bp);return r===0?`${n}d`:`${n}d ${r}h`}function E2(e){const t=Math.max(0,e);if(t>=Bp)return Jo(t);const n=Math.floor(t/Oj),r=Math.floor(n/60),i=n%60;return`${r}:${i.toString().padStart(2,"0")}`}function N2(e){switch(e){case"idle":return"Idle";case"starting":return"Starting";case"running":return"Running";case"waiting_for_user":return"Waiting";case"failed":return"Failed"}}function E$(e){switch(e){case"running":return"active";case"waiting_for_user":return"attention";case"failed":return"destructive";case"idle":case"starting":default:return"muted"}}function N$(e){switch(e){case"active":return"text-emerald-500 dark:text-emerald-400";case"attention":return"text-amber-500 dark:text-amber-400";case"destructive":return"text-destructive";case"muted":default:return"text-muted-foreground"}}function Dj(e){const t=e+"CollectionProvider",[n,r]=Zc(t),[i,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=x=>{const{scope:S,children:C}=x,k=$n.useRef(null),w=$n.useRef(new Map).current;return c.jsx(i,{scope:S,itemMap:w,collectionRef:k,children:C})};o.displayName=t;const a=e+"CollectionSlot",l=qf(a),d=$n.forwardRef((x,S)=>{const{scope:C,children:k}=x,w=s(a,C),N=Vn(S,w.collectionRef);return c.jsx(l,{ref:N,children:k})});d.displayName=a;const h=e+"CollectionItemSlot",p="data-radix-collection-item",m=qf(h),v=$n.forwardRef((x,S)=>{const{scope:C,children:k,...w}=x,N=$n.useRef(null),A=Vn(S,N),T=s(h,C);return $n.useEffect(()=>(T.itemMap.set(N,{ref:N,...w}),()=>void T.itemMap.delete(N))),c.jsx(m,{[p]:"",ref:A,children:k})});v.displayName=h;function b(x){const S=s(e+"CollectionConsumer",x);return $n.useCallback(()=>{const k=S.collectionRef.current;if(!k)return[];const w=Array.from(k.querySelectorAll(`[${p}]`));return Array.from(S.itemMap.values()).sort((T,M)=>w.indexOf(T.ref.current)-w.indexOf(M.ref.current))},[S.collectionRef,S.itemMap])}return[{Provider:o,Slot:d,ItemSlot:v},b,r]}var Bfe=_.createContext(void 0);function $j(e){const t=_.useContext(Bfe);return e||t||"ltr"}var pN="rovingFocusGroup.onEntryFocus",Ffe={bubbles:!1,cancelable:!0},Bx="RovingFocusGroup",[T2,m9,Ufe]=Dj(Bx),[Hfe,g9]=Zc(Bx,[Ufe]),[Wfe,Vfe]=Hfe(Bx),v9=_.forwardRef((e,t)=>c.jsx(T2.Provider,{scope:e.__scopeRovingFocusGroup,children:c.jsx(T2.Slot,{scope:e.__scopeRovingFocusGroup,children:c.jsx(Kfe,{...e,ref:t})})}));v9.displayName=Bx;var Kfe=_.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:s,currentTabStopId:o,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...p}=e,m=_.useRef(null),v=Vn(t,m),b=$j(s),[x,S]=ym({prop:o,defaultProp:a??null,onChange:l,caller:Bx}),[C,k]=_.useState(!1),w=Fa(d),N=m9(n),A=_.useRef(!1),[T,M]=_.useState(0);return _.useEffect(()=>{const j=m.current;if(j)return j.addEventListener(pN,w),()=>j.removeEventListener(pN,w)},[w]),c.jsx(Wfe,{scope:n,orientation:r,dir:b,loop:i,currentTabStopId:x,onItemFocus:_.useCallback(j=>S(j),[S]),onItemShiftTab:_.useCallback(()=>k(!0),[]),onFocusableItemAdd:_.useCallback(()=>M(j=>j+1),[]),onFocusableItemRemove:_.useCallback(()=>M(j=>j-1),[]),children:c.jsx(Sn.div,{tabIndex:C||T===0?-1:0,"data-orientation":r,...p,ref:v,style:{outline:"none",...e.style},onMouseDown:nt(e.onMouseDown,()=>{A.current=!0}),onFocus:nt(e.onFocus,j=>{const P=!A.current;if(j.target===j.currentTarget&&P&&!C){const D=new CustomEvent(pN,Ffe);if(j.currentTarget.dispatchEvent(D),!D.defaultPrevented){const L=N().filter(F=>F.focusable),I=L.find(F=>F.active),$=L.find(F=>F.id===x),z=[I,$,...L].filter(Boolean).map(F=>F.ref.current);y9(z,h)}}A.current=!1}),onBlur:nt(e.onBlur,()=>k(!1))})})}),b9="RovingFocusGroupItem",x9=_.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:s,children:o,...a}=e,l=Rc(),d=s||l,h=Vfe(b9,n),p=h.currentTabStopId===d,m=m9(n),{onFocusableItemAdd:v,onFocusableItemRemove:b,currentTabStopId:x}=h;return _.useEffect(()=>{if(r)return v(),()=>b()},[r,v,b]),c.jsx(T2.ItemSlot,{scope:n,id:d,focusable:r,active:i,children:c.jsx(Sn.span,{tabIndex:p?0:-1,"data-orientation":h.orientation,...a,ref:t,onMouseDown:nt(e.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(e.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(e.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const C=Yfe(S,h.orientation,h.dir);if(C!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let w=m().filter(N=>N.focusable).map(N=>N.ref.current);if(C==="last")w.reverse();else if(C==="prev"||C==="next"){C==="prev"&&w.reverse();const N=w.indexOf(S.currentTarget);w=h.loop?Xfe(w,N+1):w.slice(N+1)}setTimeout(()=>y9(w))}}),children:typeof o=="function"?o({isCurrentTabStop:p,hasTabStop:x!=null}):o})})});x9.displayName=b9;var Gfe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function qfe(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Yfe(e,t,n){const r=qfe(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Gfe[r]}function y9(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function Xfe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Jfe=v9,Zfe=x9,A2=["Enter"," "],Qfe=["ArrowDown","PageUp","Home"],_9=["ArrowUp","PageDown","End"],ehe=[...Qfe,..._9],the={ltr:[...A2,"ArrowRight"],rtl:[...A2,"ArrowLeft"]},nhe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Fx="Menu",[Ab,rhe,ihe]=Dj(Fx),[vh,S9]=Zc(Fx,[ihe,jd,g9]),IC=jd(),w9=g9(),[she,bh]=vh(Fx),[ohe,Ux]=vh(Fx),C9=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:s,modal:o=!0}=e,a=IC(t),[l,d]=_.useState(null),h=_.useRef(!1),p=Fa(s),m=$j(i);return _.useEffect(()=>{const v=()=>{h.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>h.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),c.jsx(NC,{...a,children:c.jsx(she,{scope:t,open:n,onOpenChange:p,content:l,onContentChange:d,children:c.jsx(ohe,{scope:t,onClose:_.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:h,dir:m,modal:o,children:r})})})};C9.displayName=Fx;var ahe="MenuAnchor",zj=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=IC(n);return c.jsx(Dx,{...i,...r,ref:t})});zj.displayName=ahe;var Bj="MenuPortal",[lhe,k9]=vh(Bj,{forceMount:void 0}),E9=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:i}=e,s=bh(Bj,t);return c.jsx(lhe,{scope:t,forceMount:n,children:c.jsx(ma,{present:n||s.open,children:c.jsx(Zm,{asChild:!0,container:i,children:r})})})};E9.displayName=Bj;var ia="MenuContent",[che,Fj]=vh(ia),N9=_.forwardRef((e,t)=>{const n=k9(ia,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,s=bh(ia,e.__scopeMenu),o=Ux(ia,e.__scopeMenu);return c.jsx(Ab.Provider,{scope:e.__scopeMenu,children:c.jsx(ma,{present:r||s.open,children:c.jsx(Ab.Slot,{scope:e.__scopeMenu,children:o.modal?c.jsx(uhe,{...i,ref:t}):c.jsx(dhe,{...i,ref:t})})})})}),uhe=_.forwardRef((e,t)=>{const n=bh(ia,e.__scopeMenu),r=_.useRef(null),i=Vn(t,r);return _.useEffect(()=>{const s=r.current;if(s)return yC(s)},[]),c.jsx(Uj,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),dhe=_.forwardRef((e,t)=>{const n=bh(ia,e.__scopeMenu);return c.jsx(Uj,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),fhe=qf("MenuContent.ScrollLock"),Uj=_.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:o,disableOutsidePointerEvents:a,onEntryFocus:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:b,...x}=e,S=bh(ia,n),C=Ux(ia,n),k=IC(n),w=w9(n),N=rhe(n),[A,T]=_.useState(null),M=_.useRef(null),j=Vn(t,M,S.onContentChange),P=_.useRef(0),D=_.useRef(""),L=_.useRef(0),I=_.useRef(null),$=_.useRef("right"),H=_.useRef(0),z=b?Lx:_.Fragment,F=b?{as:fhe,allowPinchZoom:!0}:void 0,K=V=>{var ne,ie;const X=D.current+V,G=N().filter(ae=>!ae.disabled),te=document.activeElement,oe=(ne=G.find(ae=>ae.ref.current===te))==null?void 0:ne.textValue,ce=G.map(ae=>ae.textValue),de=Che(ce,X,oe),ee=(ie=G.find(ae=>ae.textValue===de))==null?void 0:ie.ref.current;(function ae(Q){D.current=Q,window.clearTimeout(P.current),Q!==""&&(P.current=window.setTimeout(()=>ae(""),1e3))})(X),ee&&setTimeout(()=>ee.focus())};_.useEffect(()=>()=>window.clearTimeout(P.current),[]),bC();const W=_.useCallback(V=>{var G,te;return $.current===((G=I.current)==null?void 0:G.side)&&Ehe(V,(te=I.current)==null?void 0:te.area)},[]);return c.jsx(che,{scope:n,searchRef:D,onItemEnter:_.useCallback(V=>{W(V)&&V.preventDefault()},[W]),onItemLeave:_.useCallback(V=>{var X;W(V)||((X=M.current)==null||X.focus(),T(null))},[W]),onTriggerLeave:_.useCallback(V=>{W(V)&&V.preventDefault()},[W]),pointerGraceTimerRef:L,onPointerGraceIntentChange:_.useCallback(V=>{I.current=V},[]),children:c.jsx(z,{...F,children:c.jsx(Px,{asChild:!0,trapped:i,onMountAutoFocus:nt(s,V=>{var X;V.preventDefault(),(X=M.current)==null||X.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:c.jsx(Jfe,{asChild:!0,...w,dir:C.dir,orientation:"vertical",loop:r,currentTabStopId:A,onCurrentTabStopIdChange:T,onEntryFocus:nt(l,V=>{C.isUsingKeyboardRef.current||V.preventDefault()}),preventScrollOnEntryFocus:!0,children:c.jsx(TC,{role:"menu","aria-orientation":"vertical","data-state":H9(S.open),"data-radix-menu-content":"",dir:C.dir,...k,...x,ref:j,style:{outline:"none",...x.style},onKeyDown:nt(x.onKeyDown,V=>{const G=V.target.closest("[data-radix-menu-content]")===V.currentTarget,te=V.ctrlKey||V.altKey||V.metaKey,oe=V.key.length===1;G&&(V.key==="Tab"&&V.preventDefault(),!te&&oe&&K(V.key));const ce=M.current;if(V.target!==ce||!ehe.includes(V.key))return;V.preventDefault();const ee=N().filter(ne=>!ne.disabled).map(ne=>ne.ref.current);_9.includes(V.key)&&ee.reverse(),She(ee)}),onBlur:nt(e.onBlur,V=>{V.currentTarget.contains(V.target)||(window.clearTimeout(P.current),D.current="")}),onPointerMove:nt(e.onPointerMove,Rb(V=>{const X=V.target,G=H.current!==V.clientX;if(V.currentTarget.contains(X)&&G){const te=V.clientX>H.current?"right":"left";$.current=te,H.current=V.clientX}}))})})})})})})});N9.displayName=ia;var hhe="MenuGroup",Hj=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{role:"group",...r,ref:t})});Hj.displayName=hhe;var phe="MenuLabel",T9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{...r,ref:t})});T9.displayName=phe;var ZS="MenuItem",T$="menu.itemSelect",PC=_.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...i}=e,s=_.useRef(null),o=Ux(ZS,e.__scopeMenu),a=Fj(ZS,e.__scopeMenu),l=Vn(t,s),d=_.useRef(!1),h=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(T$,{bubbles:!0,cancelable:!0});p.addEventListener(T$,v=>r==null?void 0:r(v),{once:!0}),G7(p,m),m.defaultPrevented?d.current=!1:o.onClose()}};return c.jsx(A9,{...i,ref:l,disabled:n,onClick:nt(e.onClick,h),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),d.current=!0},onPointerUp:nt(e.onPointerUp,p=>{var m;d.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:nt(e.onKeyDown,p=>{const m=a.searchRef.current!=="";n||m&&p.key===" "||A2.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});PC.displayName=ZS;var A9=_.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:i,...s}=e,o=Fj(ZS,n),a=w9(n),l=_.useRef(null),d=Vn(t,l),[h,p]=_.useState(!1),[m,v]=_.useState("");return _.useEffect(()=>{const b=l.current;b&&v((b.textContent??"").trim())},[s.children]),c.jsx(Ab.ItemSlot,{scope:n,disabled:r,textValue:i??m,children:c.jsx(Zfe,{asChild:!0,...a,focusable:!r,children:c.jsx(Sn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:d,onPointerMove:nt(e.onPointerMove,Rb(b=>{r?o.onItemLeave(b):(o.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(e.onPointerLeave,Rb(b=>o.onItemLeave(b))),onFocus:nt(e.onFocus,()=>p(!0)),onBlur:nt(e.onBlur,()=>p(!1))})})})}),mhe="MenuCheckboxItem",R9=_.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...i}=e;return c.jsx(L9,{scope:e.__scopeMenu,checked:n,children:c.jsx(PC,{role:"menuitemcheckbox","aria-checked":QS(n)?"mixed":n,...i,ref:t,"data-state":Vj(n),onSelect:nt(i.onSelect,()=>r==null?void 0:r(QS(n)?!0:!n),{checkForDefaultPrevented:!1})})})});R9.displayName=mhe;var M9="MenuRadioGroup",[ghe,vhe]=vh(M9,{value:void 0,onValueChange:()=>{}}),j9=_.forwardRef((e,t)=>{const{value:n,onValueChange:r,...i}=e,s=Fa(r);return c.jsx(ghe,{scope:e.__scopeMenu,value:n,onValueChange:s,children:c.jsx(Hj,{...i,ref:t})})});j9.displayName=M9;var I9="MenuRadioItem",P9=_.forwardRef((e,t)=>{const{value:n,...r}=e,i=vhe(I9,e.__scopeMenu),s=n===i.value;return c.jsx(L9,{scope:e.__scopeMenu,checked:s,children:c.jsx(PC,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":Vj(s),onSelect:nt(r.onSelect,()=>{var o;return(o=i.onValueChange)==null?void 0:o.call(i,n)},{checkForDefaultPrevented:!1})})})});P9.displayName=I9;var Wj="MenuItemIndicator",[L9,bhe]=vh(Wj,{checked:!1}),O9=_.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...i}=e,s=bhe(Wj,n);return c.jsx(ma,{present:r||QS(s.checked)||s.checked===!0,children:c.jsx(Sn.span,{...i,ref:t,"data-state":Vj(s.checked)})})});O9.displayName=Wj;var xhe="MenuSeparator",D9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return c.jsx(Sn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});D9.displayName=xhe;var yhe="MenuArrow",$9=_.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=IC(n);return c.jsx(AC,{...i,...r,ref:t})});$9.displayName=yhe;var _he="MenuSub",[B8e,z9]=vh(_he),jv="MenuSubTrigger",B9=_.forwardRef((e,t)=>{const n=bh(jv,e.__scopeMenu),r=Ux(jv,e.__scopeMenu),i=z9(jv,e.__scopeMenu),s=Fj(jv,e.__scopeMenu),o=_.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:l}=s,d={__scopeMenu:e.__scopeMenu},h=_.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return _.useEffect(()=>h,[h]),_.useEffect(()=>{const p=a.current;return()=>{window.clearTimeout(p),l(null)}},[a,l]),c.jsx(zj,{asChild:!0,...d,children:c.jsx(A9,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":i.contentId,"data-state":H9(n.open),...e,ref:fj(t,i.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(e.onPointerMove,Rb(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(s.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(e.onPointerLeave,Rb(p=>{var v,b;h();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const x=(b=n.content)==null?void 0:b.dataset.side,S=x==="right",C=S?-5:5,k=m[S?"left":"right"],w=m[S?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+C,y:p.clientY},{x:k,y:m.top},{x:w,y:m.top},{x:w,y:m.bottom},{x:k,y:m.bottom}],side:x}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:nt(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||the[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});B9.displayName=jv;var F9="MenuSubContent",U9=_.forwardRef((e,t)=>{const n=k9(ia,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,s=bh(ia,e.__scopeMenu),o=Ux(ia,e.__scopeMenu),a=z9(F9,e.__scopeMenu),l=_.useRef(null),d=Vn(t,l);return c.jsx(Ab.Provider,{scope:e.__scopeMenu,children:c.jsx(ma,{present:r||s.open,children:c.jsx(Ab.Slot,{scope:e.__scopeMenu,children:c.jsx(Uj,{id:a.contentId,"aria-labelledby":a.triggerId,...i,ref:d,align:"start",side:o.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{var p;o.isUsingKeyboardRef.current&&((p=l.current)==null||p.focus()),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(e.onFocusOutside,h=>{h.target!==a.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:nt(e.onEscapeKeyDown,h=>{o.onClose(),h.preventDefault()}),onKeyDown:nt(e.onKeyDown,h=>{var v;const p=h.currentTarget.contains(h.target),m=nhe[o.dir].includes(h.key);p&&m&&(s.onOpenChange(!1),(v=a.trigger)==null||v.focus(),h.preventDefault())})})})})})});U9.displayName=F9;function H9(e){return e?"open":"closed"}function QS(e){return e==="indeterminate"}function Vj(e){return QS(e)?"indeterminate":e?"checked":"unchecked"}function She(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function whe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Che(e,t,n){const i=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let o=whe(e,Math.max(s,0));i.length===1&&(o=o.filter(d=>d!==n));const l=o.find(d=>d.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function khe(e,t){const{x:n,y:r}=e;let i=!1;for(let s=0,o=t.length-1;s<t.length;o=s++){const a=t[s],l=t[o],d=a.x,h=a.y,p=l.x,m=l.y;h>r!=m>r&&n<(p-d)*(r-h)/(m-h)+d&&(i=!i)}return i}function Ehe(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return khe(n,t)}function Rb(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Nhe=C9,The=zj,Ahe=E9,Rhe=N9,Mhe=Hj,jhe=T9,Ihe=PC,Phe=R9,Lhe=j9,Ohe=P9,Dhe=O9,$he=D9,zhe=$9,Bhe=B9,Fhe=U9,Kj="ContextMenu",[Uhe]=Zc(Kj,[S9]),Ps=S9(),[Hhe,W9]=Uhe(Kj),V9=e=>{const{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:s=!0}=e,[o,a]=_.useState(!1),l=Ps(t),d=Fa(r),h=_.useCallback(p=>{a(p),d(p)},[d]);return c.jsx(Hhe,{scope:t,open:o,onOpenChange:h,modal:s,children:c.jsx(Nhe,{...l,dir:i,open:o,onOpenChange:h,modal:s,children:n})})};V9.displayName=Kj;var K9="ContextMenuTrigger",G9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,disabled:r=!1,...i}=e,s=W9(K9,n),o=Ps(n),a=_.useRef({x:0,y:0}),l=_.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),d=_.useRef(0),h=_.useCallback(()=>window.clearTimeout(d.current),[]),p=m=>{a.current={x:m.clientX,y:m.clientY},s.onOpenChange(!0)};return _.useEffect(()=>h,[h]),_.useEffect(()=>void(r&&h()),[r,h]),c.jsxs(c.Fragment,{children:[c.jsx(The,{...o,virtualRef:l}),c.jsx(Sn.span,{"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,...i,ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:r?e.onContextMenu:nt(e.onContextMenu,m=>{h(),p(m),m.preventDefault()}),onPointerDown:r?e.onPointerDown:nt(e.onPointerDown,H_(m=>{h(),d.current=window.setTimeout(()=>p(m),700)})),onPointerMove:r?e.onPointerMove:nt(e.onPointerMove,H_(h)),onPointerCancel:r?e.onPointerCancel:nt(e.onPointerCancel,H_(h)),onPointerUp:r?e.onPointerUp:nt(e.onPointerUp,H_(h))})]})});G9.displayName=K9;var Whe="ContextMenuPortal",q9=e=>{const{__scopeContextMenu:t,...n}=e,r=Ps(t);return c.jsx(Ahe,{...r,...n})};q9.displayName=Whe;var Y9="ContextMenuContent",X9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=W9(Y9,n),s=Ps(n),o=_.useRef(!1);return c.jsx(Rhe,{...s,...r,ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:a=>{var l;(l=e.onCloseAutoFocus)==null||l.call(e,a),!a.defaultPrevented&&o.current&&a.preventDefault(),o.current=!1},onInteractOutside:a=>{var l;(l=e.onInteractOutside)==null||l.call(e,a),!a.defaultPrevented&&!i.modal&&(o.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});X9.displayName=Y9;var Vhe="ContextMenuGroup",Khe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Mhe,{...i,...r,ref:t})});Khe.displayName=Vhe;var Ghe="ContextMenuLabel",qhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(jhe,{...i,...r,ref:t})});qhe.displayName=Ghe;var Yhe="ContextMenuItem",J9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Ihe,{...i,...r,ref:t})});J9.displayName=Yhe;var Xhe="ContextMenuCheckboxItem",Jhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Phe,{...i,...r,ref:t})});Jhe.displayName=Xhe;var Zhe="ContextMenuRadioGroup",Qhe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Lhe,{...i,...r,ref:t})});Qhe.displayName=Zhe;var epe="ContextMenuRadioItem",tpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Ohe,{...i,...r,ref:t})});tpe.displayName=epe;var npe="ContextMenuItemIndicator",rpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Dhe,{...i,...r,ref:t})});rpe.displayName=npe;var ipe="ContextMenuSeparator",Z9=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx($he,{...i,...r,ref:t})});Z9.displayName=ipe;var spe="ContextMenuArrow",ope=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(zhe,{...i,...r,ref:t})});ope.displayName=spe;var ape="ContextMenuSubTrigger",lpe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Bhe,{...i,...r,ref:t})});lpe.displayName=ape;var cpe="ContextMenuSubContent",upe=_.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=Ps(n);return c.jsx(Fhe,{...i,...r,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});upe.displayName=cpe;function H_(e){return t=>t.pointerType!=="mouse"?e(t):void 0}var dpe=V9,fpe=G9,hpe=q9,Q9=X9,eW=J9,tW=Z9;const nW=_.createContext(null);function xh({onOpenChange:e,...t}){const[n,r]=_.useState(0),i=_.useCallback(()=>{r(s=>s+1),e==null||e(!1)},[e]);return c.jsx(nW.Provider,{value:i,children:c.jsx(dpe,{onOpenChange:e,...t},n)})}const yh=fpe,Id=_.forwardRef(({className:e,...t},n)=>c.jsx(hpe,{children:c.jsx(Q9,{ref:n,className:fe("z-50 min-w-[170px] overflow-hidden rounded-xl border border-border bg-background p-1 shadow-lg outline-hidden animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",e),...t})}));Id.displayName=Q9.displayName;const vr=_.forwardRef(({className:e,onSelect:t,...n},r)=>{const i=_.useContext(nW);return c.jsx(eW,{ref:r,className:fe("relative flex cursor-default select-none items-center gap-2.5 rounded-lg px-3 py-2 text-xs font-medium text-foreground outline-hidden transition-colors hover:bg-muted focus:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),onSelect:s=>{t==null||t(s),i==null||i()},...n})});vr.displayName=eW.displayName;const rW=_.forwardRef(({className:e,...t},n)=>c.jsx(tW,{ref:n,className:fe("-mx-1 my-1 h-px bg-border",e),...t}));rW.displayName=tW.displayName;var LC="Popover",[iW]=Zc(LC,[jd]),Hx=jd(),[ppe,Pd]=iW(LC),sW=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:s,modal:o=!1}=e,a=Hx(t),l=_.useRef(null),[d,h]=_.useState(!1),[p,m]=ym({prop:r,defaultProp:i??!1,onChange:s,caller:LC});return c.jsx(NC,{...a,children:c.jsx(ppe,{scope:t,contentId:Rc(),triggerRef:l,open:p,onOpenChange:m,onOpenToggle:_.useCallback(()=>m(v=>!v),[m]),hasCustomAnchor:d,onCustomAnchorAdd:_.useCallback(()=>h(!0),[]),onCustomAnchorRemove:_.useCallback(()=>h(!1),[]),modal:o,children:n})})};sW.displayName=LC;var oW="PopoverAnchor",mpe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(oW,n),s=Hx(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:a}=i;return _.useEffect(()=>(o(),()=>a()),[o,a]),c.jsx(Dx,{...s,...r,ref:t})});mpe.displayName=oW;var aW="PopoverTrigger",lW=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(aW,n),s=Hx(n),o=Vn(t,i.triggerRef),a=c.jsx(Sn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":hW(i.open),...r,ref:o,onClick:nt(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?a:c.jsx(Dx,{asChild:!0,...s,children:a})});lW.displayName=aW;var Gj="PopoverPortal",[gpe,vpe]=iW(Gj,{forceMount:void 0}),cW=e=>{const{__scopePopover:t,forceMount:n,children:r,container:i}=e,s=Pd(Gj,t);return c.jsx(gpe,{scope:t,forceMount:n,children:c.jsx(ma,{present:n||s.open,children:c.jsx(Zm,{asChild:!0,container:i,children:r})})})};cW.displayName=Gj;var wm="PopoverContent",uW=_.forwardRef((e,t)=>{const n=vpe(wm,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,s=Pd(wm,e.__scopePopover);return c.jsx(ma,{present:r||s.open,children:s.modal?c.jsx(xpe,{...i,ref:t}):c.jsx(ype,{...i,ref:t})})});uW.displayName=wm;var bpe=qf("PopoverContent.RemoveScroll"),xpe=_.forwardRef((e,t)=>{const n=Pd(wm,e.__scopePopover),r=_.useRef(null),i=Vn(t,r),s=_.useRef(!1);return _.useEffect(()=>{const o=r.current;if(o)return yC(o)},[]),c.jsx(Lx,{as:bpe,allowPinchZoom:!0,children:c.jsx(dW,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),s.current||(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:nt(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0,d=a.button===2||l;s.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1})})})}),ype=_.forwardRef((e,t)=>{const n=Pd(wm,e.__scopePopover),r=_.useRef(!1),i=_.useRef(!1);return c.jsx(dW,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var o,a;(o=e.onCloseAutoFocus)==null||o.call(e,s),s.defaultPrevented||(r.current||(a=n.triggerRef.current)==null||a.focus(),s.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:s=>{var l,d;(l=e.onInteractOutside)==null||l.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const o=s.target;((d=n.triggerRef.current)==null?void 0:d.contains(o))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&i.current&&s.preventDefault()}})}),dW=_.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:s,disableOutsidePointerEvents:o,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:h,...p}=e,m=Pd(wm,n),v=Hx(n);return bC(),c.jsx(Px,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:s,children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:h,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:d,onDismiss:()=>m.onOpenChange(!1),children:c.jsx(TC,{"data-state":hW(m.open),role:"dialog",id:m.contentId,...v,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),fW="PopoverClose",_pe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Pd(fW,n);return c.jsx(Sn.button,{type:"button",...r,ref:t,onClick:nt(e.onClick,()=>i.onOpenChange(!1))})});_pe.displayName=fW;var Spe="PopoverArrow",wpe=_.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,i=Hx(n);return c.jsx(AC,{...i,...r,ref:t})});wpe.displayName=Spe;function hW(e){return e?"open":"closed"}var Cpe=sW,kpe=lW,Epe=cW,pW=uW;const Ld=Cpe,Od=kpe,eu=_.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},i)=>c.jsx(Epe,{children:c.jsx(pW,{ref:i,align:t,sideOffset:n,[Cb]:"",onCloseAutoFocus:s=>{var o;s.preventDefault(),window.dispatchEvent(new Event(VS)),(o=r.onCloseAutoFocus)==null||o.call(r,s)},className:fe("z-50 w-72 rounded-xl border border-border bg-background p-4 shadow-lg outline-hidden animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r})}));eu.displayName=pW.displayName;const R2=qt("StackActionsPopover",()=>e=>({open:!1,setOpen:t=>e({open:t})}));function Npe({editorLabel:e,starred:t,onCopyPath:n,onShowArchived:r,onOpenInFinder:i,onOpenInEditor:s,onToggleStar:o,onHide:a,children:l}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:l}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),o()},children:[t?c.jsx(Aae,{className:"h-3.5 w-3.5"}):c.jsx(N7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:t?"Unstar project":"Star project"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),n()},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy Path"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),r()},children:[c.jsx(QM,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Show Archived"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),i()},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Show in Finder"})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),s()},children:[c.jsx(ej,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Open in ",e]})]}),c.jsxs(vr,{onSelect:d=>{d.stopPropagation(),a()},className:"text-destructive hover:bg-destructive/10 focus:bg-destructive/10",children:[c.jsx(wse,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Hide"})]})]})]})}function Tpe({canFork:e,onRename:t,onOpenInFinder:n,onFork:r,onArchive:i,onDelete:s,onEditPermissions:o,children:a}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:a}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:l=>{l.preventDefault(),t()},children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Rename"})]}),c.jsxs(vr,{onSelect:l=>{l.preventDefault(),n()},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Open in Finder"})]}),c.jsxs(vr,{disabled:!e,onSelect:l=>{l.preventDefault(),e&&r()},children:[c.jsx(E7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Fork"})]}),o?c.jsxs(vr,{onSelect:l=>{l.preventDefault(),o()},children:[c.jsx(oj,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Permissions…"})]}):null,c.jsxs(vr,{onSelect:l=>{l.preventDefault(),i()},children:[c.jsx(QM,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Archive"})]}),c.jsxs(vr,{onSelect:l=>{l.preventDefault(),s()},className:"text-destructive dark:text-red-400 hover:bg-destructive/10 focus:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Delete"})]})]})]})}function Ape({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){const s=R2.useScopedStore(l=>l.open),o=R2.useScopedStore(l=>l.setOpen);function a(l){return()=>{o(!1),l()}}return c.jsxs(Ld,{open:s,onOpenChange:o,children:[c.jsx(Od,{asChild:!0,children:i}),c.jsxs(eu,{align:"end",sideOffset:4,className:"w-44 p-1",role:"menu","aria-label":`Actions for ${e}`,children:[c.jsxs("button",{type:"button",role:"menuitem",onClick:a(t),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-muted focus-visible:bg-muted outline-hidden",children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Rename"})]}),c.jsxs("button",{type:"button",role:"menuitem",onClick:a(n),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium hover:bg-muted focus-visible:bg-muted outline-hidden",children:[c.jsx(A7,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Edit members"})]}),c.jsxs("button",{type:"button",role:"menuitem",onClick:a(r),className:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs font-medium text-destructive dark:text-red-400 hover:bg-destructive/10 focus-visible:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus-visible:bg-red-500/20 outline-hidden",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsxs("span",{children:["Delete ",e]})]})]})]})}function Rpe({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){return c.jsx(R2.Provider,{init:{},children:c.jsx(Ape,{stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i})})}function Mpe({stackTitle:e,onRename:t,onEditMembers:n,onDelete:r,children:i}){return c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:i}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:s=>{s.preventDefault(),t()},children:[c.jsx(Rd,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Rename"})]}),c.jsxs(vr,{onSelect:s=>{s.preventDefault(),n()},children:[c.jsx(A7,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Edit members"})]}),c.jsxs(vr,{onSelect:s=>{s.preventDefault(),r()},className:"text-destructive dark:text-red-400 hover:bg-destructive/10 focus:bg-destructive/10 dark:hover:bg-red-500/20 dark:focus:bg-red-500/20",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Delete ",e]})]})]})]})}function jpe(e){return e.status==="running"||e.status==="starting"?"warning":e.status==="waiting_for_user"?"info":e.status==="failed"?"destructive":e.unread?"success":null}function Ipe(e){switch(e){case"warning":return"bg-warning";case"info":return"bg-info";case"success":return"bg-success";case"destructive":return"bg-destructive";default:return""}}function Ppe(e){switch(e){case"warning":return"text-warning";case"info":return"text-info";case"success":return"text-success";case"destructive":return"text-destructive";default:return"text-muted-foreground"}}function Lpe(e){switch(e){case"active":return{glyph:"●",tone:"text-success",title:"Claude PTY session active"};case"warming":return{glyph:"◐",tone:"text-warning",title:"Claude PTY session warming"};case"idle":return{glyph:"○",tone:"text-muted-foreground",title:"Claude PTY session idle"};case"cooling":return{glyph:"◌",tone:"text-muted-foreground",title:"Claude PTY session cooling down"};case"cold":default:return null}}function Ope({chat:e,activeChatId:t,nowMs:n,shortcutHint:r=null,showShortcutHint:i=!1,onSelectChat:s,onRenameChat:o,onOpenInFinder:a,onForkChat:l,onArchiveChat:d,onDeleteChat:h,onEditPermissions:p}){const m=(e.status==="running"||e.status==="waiting_for_user")&&e.stateEnteredAt!=null,v=m&&e.stateEnteredAt!=null?`${N2(e.status)} ${E2(n-e.stateEnteredAt)}`:Jo(n-(e.lastMessageAt??e._creationTime)),b=i&&r?r:v,x=i&&!!r,S=Ble(e.chatId),C=t===S,k=jpe(e);let w;e.canFork?w="w-12":m?w="w-12 md:w-20":w="w-6 md:w-14";let N=null;b&&(x?N=c.jsx("span",{className:"hidden md:flex absolute inset-0 items-center justify-end pr-0.5 text-[11px] text-foreground transition-opacity duration-150 group-hover:opacity-0",children:c.jsx(a9,{className:"h-4 min-w-4 rounded-sm border-border/50 bg-transparent px-1 text-[10px]",children:r})}):N=c.jsx("span",{className:fe("hidden md:flex absolute inset-0 items-center justify-end pr-1 text-[11px] tabular-nums transition-opacity duration-150 group-hover:opacity-0 whitespace-nowrap",m?Ppe(k):"text-muted-foreground"),children:b}));const A=c.jsxs("div",{"data-chat-id":S,className:fe("group flex items-center gap-2 pl-2 pr-1 py-1.5 rounded-md cursor-pointer transition-colors duration-150",C?"bg-muted":"hover:bg-muted/40"),onClick:()=>s(e.chatId),children:[c.jsx("span",{className:"relative flex h-3.5 w-3.5 shrink-0 items-center justify-center","aria-hidden":!0,children:k?c.jsx("span",{className:fe("h-2 w-2 rounded-full",Ipe(k))}):null}),(()=>{const T=Lpe(e.sessionState);return T?c.jsx("span",{className:fe("shrink-0 text-[10px] leading-none",T.tone),title:T.title,"aria-label":T.title,children:T.glyph}):null})(),e.hasPolicyOverride?c.jsx(oj,{className:"size-3 shrink-0 text-warning","aria-label":"Per-chat permission override active"}):null,c.jsx("span",{className:fe("truncate flex-1 text-sm",C?"text-foreground font-medium":"text-foreground/90",e.status==="idle"&&!e.unread&&!C?"text-muted-foreground":""),children:e.title}),c.jsxs("div",{className:fe("relative h-6 shrink-0",w),children:[N,c.jsxs("div",{className:fe("absolute inset-0 flex items-center justify-end gap-0 transition-opacity duration-150",b?"opacity-100 md:opacity-0 md:group-hover:opacity-100":"opacity-100"),children:[e.canFork?c.jsx(Me,{variant:"ghost",size:"icon",className:"h-6 w-6 cursor-pointer rounded-sm hover:!bg-transparent !border-0",onClick:T=>{T.stopPropagation(),l(e.chatId)},title:"Fork chat",children:c.jsx(E7,{className:"size-3.5"})}):null,c.jsx(Me,{variant:"ghost",size:"icon",className:"h-6 w-6 cursor-pointer rounded-sm hover:!bg-transparent !border-0",onClick:T=>{T.stopPropagation(),d(e.chatId)},title:"Archive chat",children:c.jsx(QM,{className:"size-3.5"})})]})]})]},e._id);return c.jsx(Tpe,{canFork:e.canFork,onRename:()=>o(e.chatId),onOpenInFinder:()=>a(e.localPath),onFork:()=>l(e.chatId),onArchive:()=>d(e.chatId),onDelete:()=>h(e.chatId),onEditPermissions:p?()=>p(e.chatId):void 0,children:A})}const Dpe=_.memo(Ope);function $pe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _.useMemo(()=>r=>{t.forEach(i=>i(r))},t)}const OC=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ng(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function qj(e){return"nodeType"in e}function oo(e){var t,n;return e?ng(e)?e:qj(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function Yj(e){const{Document:t}=oo(e);return e instanceof t}function Wx(e){return ng(e)?!1:e instanceof oo(e).HTMLElement}function mW(e){return e instanceof oo(e).SVGElement}function rg(e){return e?ng(e)?e.document:qj(e)?Yj(e)?e:Wx(e)||mW(e)?e.ownerDocument:document:document:document}const Ml=OC?_.useLayoutEffect:_.useEffect;function Xj(e){const t=_.useRef(e);return Ml(()=>{t.current=e}),_.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return t.current==null?void 0:t.current(...r)},[])}function zpe(){const e=_.useRef(null),t=_.useCallback((r,i)=>{e.current=setInterval(r,i)},[]),n=_.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Mb(e,t){t===void 0&&(t=[e]);const n=_.useRef(e);return Ml(()=>{n.current!==e&&(n.current=e)},t),n}function Vx(e,t){const n=_.useRef();return _.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function ew(e){const t=Xj(e),n=_.useRef(null),r=_.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function M2(e){const t=_.useRef();return _.useEffect(()=>{t.current=e},[e]),t.current}let mN={};function Kx(e,t){return _.useMemo(()=>{if(t)return t;const n=mN[e]==null?0:mN[e]+1;return mN[e]=n,e+"-"+n},[e,t])}function gW(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((s,o)=>{const a=Object.entries(o);for(const[l,d]of a){const h=s[l];h!=null&&(s[l]=h+e*d)}return s},{...t})}}const em=gW(1),tw=gW(-1);function Bpe(e){return"clientX"in e&&"clientY"in e}function Jj(e){if(!e)return!1;const{KeyboardEvent:t}=oo(e.target);return t&&e instanceof t}function Fpe(e){if(!e)return!1;const{TouchEvent:t}=oo(e.target);return t&&e instanceof t}function j2(e){if(Fpe(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Bpe(e)?{x:e.clientX,y:e.clientY}:null}const jb=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[jb.Translate.toString(e),jb.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),A$="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Upe(e){return e.matches(A$)?e:e.querySelector(A$)}const Hpe={display:"none"};function Wpe(e){let{id:t,value:n}=e;return $n.createElement("div",{id:t,style:Hpe},n)}function Vpe(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const i={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return $n.createElement("div",{id:t,style:i,role:"status","aria-live":r,"aria-atomic":!0},n)}function Kpe(){const[e,t]=_.useState("");return{announce:_.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const vW=_.createContext(null);function Gpe(e){const t=_.useContext(vW);_.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function qpe(){const[e]=_.useState(()=>new Set),t=_.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[_.useCallback(r=>{let{type:i,event:s}=r;e.forEach(o=>{var a;return(a=o[i])==null?void 0:a.call(o,s)})},[e]),t]}const Ype={draggable:`
|
|
772
772
|
To pick up a draggable item, press the space bar.
|
|
773
773
|
While dragging, use the arrow keys to move the item.
|
|
774
774
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
775
|
-
`},Xpe={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Jpe(e){let{announcements:t=Xpe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=Ype}=e;const{announce:s,announcement:o}=Kpe(),a=Kx("DndLiveRegion"),[l,d]=_.useState(!1);if(_.useEffect(()=>{d(!0)},[]),Gpe(_.useMemo(()=>({onDragStart(p){let{active:m}=p;s(t.onDragStart({active:m}))},onDragMove(p){let{active:m,over:v}=p;t.onDragMove&&s(t.onDragMove({active:m,over:v}))},onDragOver(p){let{active:m,over:v}=p;s(t.onDragOver({active:m,over:v}))},onDragEnd(p){let{active:m,over:v}=p;s(t.onDragEnd({active:m,over:v}))},onDragCancel(p){let{active:m,over:v}=p;s(t.onDragCancel({active:m,over:v}))}}),[s,t])),!l)return null;const h=$n.createElement($n.Fragment,null,$n.createElement(Wpe,{id:r,value:i.draggable}),$n.createElement(Vpe,{id:a,announcement:o}));return n?As.createPortal(h,n):h}var vi;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(vi||(vi={}));function nw(){}function gN(e,t){return _.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Zpe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const Wa=Object.freeze({x:0,y:0});function Qpe(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function eme(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function tme(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function nme(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function R$(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const M$=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=R$(t,t.left,t.top),s=[];for(const o of r){const{id:a}=o,l=n.get(a);if(l){const d=Qpe(R$(l),i);s.push({id:a,data:{droppableContainer:o,value:d}})}}return s.sort(eme)};function rme(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),s=Math.min(t.top+t.height,e.top+e.height),o=i-r,a=s-n;if(r<i&&n<s){const l=t.width*t.height,d=e.width*e.height,h=o*a,p=h/(l+d-h);return Number(p.toFixed(4))}return 0}const ime=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=[];for(const s of r){const{id:o}=s,a=n.get(o);if(a){const l=rme(a,t);l>0&&i.push({id:o,data:{droppableContainer:s,value:l}})}}return i.sort(tme)};function sme(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function bW(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Wa}function ome(e){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s<r;s++)i[s-1]=arguments[s];return i.reduce((o,a)=>({...o,top:o.top+e*a.y,bottom:o.bottom+e*a.y,left:o.left+e*a.x,right:o.right+e*a.x}),{...n})}}const ame=ome(1);function lme(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function cme(e,t,n){const r=lme(t);if(!r)return e;const{scaleX:i,scaleY:s,x:o,y:a}=r,l=e.left-o-(1-i)*parseFloat(n),d=e.top-a-(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),h=i?e.width/i:e.width,p=s?e.height/s:e.height;return{width:h,height:p,top:d,right:l+h,bottom:d+p,left:l}}const ume={ignoreTransform:!1};function ig(e,t){t===void 0&&(t=ume);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:d,transformOrigin:h}=oo(e).getComputedStyle(e);d&&(n=cme(n,d,h))}const{top:r,left:i,width:s,height:o,bottom:a,right:l}=n;return{top:r,left:i,width:s,height:o,bottom:a,right:l}}function j$(e){return ig(e,{ignoreTransform:!0})}function dme(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function fme(e,t){return t===void 0&&(t=oo(e).getComputedStyle(e)),t.position==="fixed"}function hme(e,t){t===void 0&&(t=oo(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const s=t[i];return typeof s=="string"?n.test(s):!1})}function Zj(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(Yj(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Wx(i)||mW(i)||n.includes(i))return n;const s=oo(e).getComputedStyle(i);return i!==e&&hme(i,s)&&n.push(i),fme(i,s)?n:r(i.parentNode)}return e?r(e):n}function xW(e){const[t]=Zj(e,1);return t??null}function vN(e){return!OC||!e?null:ng(e)?e:qj(e)?Yj(e)||e===rg(e).scrollingElement?window:Wx(e)?e:null:null}function yW(e){return ng(e)?e.scrollX:e.scrollLeft}function _W(e){return ng(e)?e.scrollY:e.scrollTop}function I2(e){return{x:yW(e),y:_W(e)}}var ji;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(ji||(ji={}));function SW(e){return!OC||!e?!1:e===document.scrollingElement}function wW(e){const t={x:0,y:0},n=SW(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},i=e.scrollTop<=t.y,s=e.scrollLeft<=t.x,o=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:i,isLeft:s,isBottom:o,isRight:a,maxScroll:r,minScroll:t}}const pme={x:.2,y:.2};function mme(e,t,n,r,i){let{top:s,left:o,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=pme);const{isTop:d,isBottom:h,isLeft:p,isRight:m}=wW(e),v={x:0,y:0},b={x:0,y:0},x={height:t.height*i.y,width:t.width*i.x};return!d&&s<=t.top+x.height?(v.y=ji.Backward,b.y=r*Math.abs((t.top+x.height-s)/x.height)):!h&&l>=t.bottom-x.height&&(v.y=ji.Forward,b.y=r*Math.abs((t.bottom-x.height-l)/x.height)),!m&&a>=t.right-x.width?(v.x=ji.Forward,b.x=r*Math.abs((t.right-x.width-a)/x.width)):!p&&o<=t.left+x.width&&(v.x=ji.Backward,b.x=r*Math.abs((t.left+x.width-o)/x.width)),{direction:v,speed:b}}function gme(e){if(e===document.scrollingElement){const{innerWidth:s,innerHeight:o}=window;return{top:0,left:0,right:s,bottom:o,width:s,height:o}}const{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function CW(e){return e.reduce((t,n)=>em(t,I2(n)),Wa)}function vme(e){return e.reduce((t,n)=>t+yW(n),0)}function bme(e){return e.reduce((t,n)=>t+_W(n),0)}function xme(e,t){if(t===void 0&&(t=ig),!e)return;const{top:n,left:r,bottom:i,right:s}=t(e);xW(e)&&(i<=0||s<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const yme=[["x",["left","right"],vme],["y",["top","bottom"],bme]];class Qj{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Zj(n),i=CW(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[s,o,a]of yme)for(const l of o)Object.defineProperty(this,l,{get:()=>{const d=a(r),h=i[s]-d;return this.rect[l]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class tb{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var i;(i=this.target)==null||i.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function _me(e){const{EventTarget:t}=oo(e);return e instanceof t?e:rg(e)}function bN(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var Yo;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Yo||(Yo={}));function I$(e){e.preventDefault()}function Sme(e){e.stopPropagation()}var Un;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(Un||(Un={}));const kW={start:[Un.Space,Un.Enter],cancel:[Un.Esc],end:[Un.Space,Un.Enter,Un.Tab]},wme=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Un.Right:return{...n,x:n.x+25};case Un.Left:return{...n,x:n.x-25};case Un.Down:return{...n,y:n.y+25};case Un.Up:return{...n,y:n.y-25}}};class eI{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new tb(rg(n)),this.windowListeners=new tb(oo(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Yo.Resize,this.handleCancel),this.windowListeners.add(Yo.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Yo.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&xme(r),n(Wa)}handleKeyDown(t){if(Jj(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:s=kW,coordinateGetter:o=wme,scrollBehavior:a="smooth"}=i,{code:l}=t;if(s.end.includes(l)){this.handleEnd(t);return}if(s.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Wa;this.referenceCoordinates||(this.referenceCoordinates=h);const p=o(t,{active:n,context:r.current,currentCoordinates:h});if(p){const m=tw(p,h),v={x:0,y:0},{scrollableAncestors:b}=r.current;for(const x of b){const S=t.code,{isTop:C,isRight:k,isLeft:w,isBottom:N,maxScroll:A,minScroll:T}=wW(x),M=gme(x),j={x:Math.min(S===Un.Right?M.right-M.width/2:M.right,Math.max(S===Un.Right?M.left:M.left+M.width/2,p.x)),y:Math.min(S===Un.Down?M.bottom-M.height/2:M.bottom,Math.max(S===Un.Down?M.top:M.top+M.height/2,p.y))},P=S===Un.Right&&!k||S===Un.Left&&!w,D=S===Un.Down&&!N||S===Un.Up&&!C;if(P&&j.x!==p.x){const L=x.scrollLeft+m.x,I=S===Un.Right&&L<=A.x||S===Un.Left&&L>=T.x;if(I&&!m.y){x.scrollTo({left:L,behavior:a});return}I?v.x=x.scrollLeft-L:v.x=S===Un.Right?x.scrollLeft-A.x:x.scrollLeft-T.x,v.x&&x.scrollBy({left:-v.x,behavior:a});break}else if(D&&j.y!==p.y){const L=x.scrollTop+m.y,I=S===Un.Down&&L<=A.y||S===Un.Up&&L>=T.y;if(I&&!m.x){x.scrollTo({top:L,behavior:a});return}I?v.y=x.scrollTop-L:v.y=S===Un.Down?x.scrollTop-A.y:x.scrollTop-T.y,v.y&&x.scrollBy({top:-v.y,behavior:a});break}}this.handleMove(t,em(tw(p,this.referenceCoordinates),v))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}eI.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=kW,onActivation:i}=t,{active:s}=n;const{code:o}=e.nativeEvent;if(r.start.includes(o)){const a=s.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),i==null||i({event:e.nativeEvent}),!0)}return!1}}];function P$(e){return!!(e&&"distance"in e)}function L$(e){return!!(e&&"delay"in e)}class tI{constructor(t,n,r){var i;r===void 0&&(r=_me(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:s}=t,{target:o}=s;this.props=t,this.events=n,this.document=rg(o),this.documentListeners=new tb(this.document),this.listeners=new tb(r),this.windowListeners=new tb(oo(o)),this.initialCoordinates=(i=j2(s))!=null?i:Wa,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(Yo.Resize,this.handleCancel),this.windowListeners.add(Yo.DragStart,I$),this.windowListeners.add(Yo.VisibilityChange,this.handleCancel),this.windowListeners.add(Yo.ContextMenu,I$),this.documentListeners.add(Yo.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(L$(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(P$(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:i}=this.props;i(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(Yo.Click,Sme,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Yo.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:i,props:s}=this,{onMove:o,options:{activationConstraint:a}}=s;if(!i)return;const l=(n=j2(t))!=null?n:Wa,d=tw(i,l);if(!r&&a){if(P$(a)){if(a.tolerance!=null&&bN(d,a.tolerance))return this.handleCancel();if(bN(d,a.distance))return this.handleStart()}if(L$(a)&&bN(d,a.tolerance))return this.handleCancel();this.handlePending(a,d);return}t.cancelable&&t.preventDefault(),o(l)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===Un.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const Cme={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class EW extends tI{constructor(t){const{event:n}=t,r=rg(n.target);super(t,Cme,r)}}EW.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const kme={move:{name:"mousemove"},end:{name:"mouseup"}};var P2;(function(e){e[e.RightClick=2]="RightClick"})(P2||(P2={}));class NW extends tI{constructor(t){super(t,kme,rg(t.event.target))}}NW.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===P2.RightClick?!1:(r==null||r({event:n}),!0)}}];const xN={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class TW extends tI{constructor(t){super(t,xN)}static setup(){return window.addEventListener(xN.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(xN.move.name,t)};function t(){}}}TW.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:i}=n;return i.length>1?!1:(r==null||r({event:n}),!0)}}];var nb;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(nb||(nb={}));var rw;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(rw||(rw={}));function Eme(e){let{acceleration:t,activator:n=nb.Pointer,canScroll:r,draggingRect:i,enabled:s,interval:o=5,order:a=rw.TreeOrder,pointerCoordinates:l,scrollableAncestors:d,scrollableAncestorRects:h,delta:p,threshold:m}=e;const v=Tme({delta:p,disabled:!s}),[b,x]=zpe(),S=_.useRef({x:0,y:0}),C=_.useRef({x:0,y:0}),k=_.useMemo(()=>{switch(n){case nb.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case nb.DraggableRect:return i}},[n,i,l]),w=_.useRef(null),N=_.useCallback(()=>{const T=w.current;if(!T)return;const M=S.current.x*C.current.x,j=S.current.y*C.current.y;T.scrollBy(M,j)},[]),A=_.useMemo(()=>a===rw.TreeOrder?[...d].reverse():d,[a,d]);_.useEffect(()=>{if(!s||!d.length||!k){x();return}for(const T of A){if((r==null?void 0:r(T))===!1)continue;const M=d.indexOf(T),j=h[M];if(!j)continue;const{direction:P,speed:D}=mme(T,j,k,t,m);for(const L of["x","y"])v[L][P[L]]||(D[L]=0,P[L]=0);if(D.x>0||D.y>0){x(),w.current=T,b(N,o),S.current=D,C.current=P;return}}S.current={x:0,y:0},C.current={x:0,y:0},x()},[t,N,r,x,s,o,JSON.stringify(k),JSON.stringify(v),b,d,A,h,JSON.stringify(m)])}const Nme={x:{[ji.Backward]:!1,[ji.Forward]:!1},y:{[ji.Backward]:!1,[ji.Forward]:!1}};function Tme(e){let{delta:t,disabled:n}=e;const r=M2(t);return Vx(i=>{if(n||!r||!i)return Nme;const s={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[ji.Backward]:i.x[ji.Backward]||s.x===-1,[ji.Forward]:i.x[ji.Forward]||s.x===1},y:{[ji.Backward]:i.y[ji.Backward]||s.y===-1,[ji.Forward]:i.y[ji.Forward]||s.y===1}}},[n,t,r])}function Ame(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return Vx(i=>{var s;return t==null?null:(s=r??i)!=null?s:null},[r,t])}function Rme(e,t){return _.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,s=i.activators.map(o=>({eventName:o.eventName,handler:t(o.handler,r)}));return[...n,...s]},[]),[e,t])}var Ib;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Ib||(Ib={}));var L2;(function(e){e.Optimized="optimized"})(L2||(L2={}));const O$=new Map;function Mme(e,t){let{dragging:n,dependencies:r,config:i}=t;const[s,o]=_.useState(null),{frequency:a,measure:l,strategy:d}=i,h=_.useRef(e),p=S(),m=Mb(p),v=_.useCallback(function(C){C===void 0&&(C=[]),!m.current&&o(k=>k===null?C:k.concat(C.filter(w=>!k.includes(w))))},[m]),b=_.useRef(null),x=Vx(C=>{if(p&&!n)return O$;if(!C||C===O$||h.current!==e||s!=null){const k=new Map;for(let w of e){if(!w)continue;if(s&&s.length>0&&!s.includes(w.id)&&w.rect.current){k.set(w.id,w.rect.current);continue}const N=w.node.current,A=N?new Qj(l(N),N):null;w.rect.current=A,A&&k.set(w.id,A)}return k}return C},[e,s,n,p,l]);return _.useEffect(()=>{h.current=e},[e]),_.useEffect(()=>{p||v()},[n,p]),_.useEffect(()=>{s&&s.length>0&&o(null)},[JSON.stringify(s)]),_.useEffect(()=>{p||typeof a!="number"||b.current!==null||(b.current=setTimeout(()=>{v(),b.current=null},a))},[a,p,v,...r]),{droppableRects:x,measureDroppableContainers:v,measuringScheduled:s!=null};function S(){switch(d){case Ib.Always:return!1;case Ib.BeforeDragging:return n;default:return!n}}}function AW(e,t){return Vx(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function jme(e,t){return AW(e,t)}function Ime(e){let{callback:t,disabled:n}=e;const r=Xj(t),i=_.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:s}=window;return new s(r)},[r,n]);return _.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function DC(e){let{callback:t,disabled:n}=e;const r=Xj(t),i=_.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:s}=window;return new s(r)},[n]);return _.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function Pme(e){return new Qj(ig(e),e)}function D$(e,t,n){t===void 0&&(t=Pme);const[r,i]=_.useState(null);function s(){i(l=>{if(!e)return null;if(e.isConnected===!1){var d;return(d=l??n)!=null?d:null}const h=t(e);return JSON.stringify(l)===JSON.stringify(h)?l:h})}const o=Ime({callback(l){if(e)for(const d of l){const{type:h,target:p}=d;if(h==="childList"&&p instanceof HTMLElement&&p.contains(e)){s();break}}}}),a=DC({callback:s});return Ml(()=>{s(),e?(a==null||a.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(a==null||a.disconnect(),o==null||o.disconnect())},[e]),r}function Lme(e){const t=AW(e);return bW(e,t)}const $$=[];function Ome(e){const t=_.useRef(e),n=Vx(r=>e?r&&r!==$$&&e&&t.current&&e.parentNode===t.current.parentNode?r:Zj(e):$$,[e]);return _.useEffect(()=>{t.current=e},[e]),n}function Dme(e){const[t,n]=_.useState(null),r=_.useRef(e),i=_.useCallback(s=>{const o=vN(s.target);o&&n(a=>a?(a.set(o,I2(o)),new Map(a)):null)},[]);return _.useEffect(()=>{const s=r.current;if(e!==s){o(s);const a=e.map(l=>{const d=vN(l);return d?(d.addEventListener("scroll",i,{passive:!0}),[d,I2(d)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{o(e),o(s)};function o(a){a.forEach(l=>{const d=vN(l);d==null||d.removeEventListener("scroll",i)})}},[i,e]),_.useMemo(()=>e.length?t?Array.from(t.values()).reduce((s,o)=>em(s,o),Wa):CW(e):Wa,[e,t])}function z$(e,t){t===void 0&&(t=[]);const n=_.useRef(null);return _.useEffect(()=>{n.current=null},t),_.useEffect(()=>{const r=e!==Wa;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?tw(e,n.current):Wa}function $me(e){_.useEffect(()=>{if(!OC)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function zme(e,t){return _.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:s}=r;return n[i]=o=>{s(o,t)},n},{}),[e,t])}function RW(e){return _.useMemo(()=>e?dme(e):null,[e])}const B$=[];function Bme(e,t){t===void 0&&(t=ig);const[n]=e,r=RW(n?oo(n):null),[i,s]=_.useState(B$);function o(){s(()=>e.length?e.map(l=>SW(l)?r:new Qj(t(l),l)):B$)}const a=DC({callback:o});return Ml(()=>{a==null||a.disconnect(),o(),e.forEach(l=>a==null?void 0:a.observe(l))},[e]),i}function Fme(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Wx(t)?t:e}function Ume(e){let{measure:t}=e;const[n,r]=_.useState(null),i=_.useCallback(d=>{for(const{target:h}of d)if(Wx(h)){r(p=>{const m=t(h);return p?{...p,width:m.width,height:m.height}:m});break}},[t]),s=DC({callback:i}),o=_.useCallback(d=>{const h=Fme(d);s==null||s.disconnect(),h&&(s==null||s.observe(h)),r(h?t(h):null)},[t,s]),[a,l]=ew(o);return _.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const Hme=[{sensor:EW,options:{}},{sensor:eI,options:{}}],Wme={current:{}},rS={draggable:{measure:j$},droppable:{measure:j$,strategy:Ib.WhileDragging,frequency:L2.Optimized},dragOverlay:{measure:ig}};class rb extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const Vme={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new rb,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:nw},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:rS,measureDroppableContainers:nw,windowRect:null,measuringScheduled:!1},Kme={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:nw,draggableNodes:new Map,over:null,measureDroppableContainers:nw},$C=_.createContext(Kme),MW=_.createContext(Vme);function Gme(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new rb}}}function qme(e,t){switch(t.type){case vi.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case vi.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case vi.DragEnd:case vi.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case vi.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new rb(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case vi.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=t,s=e.droppable.containers.get(n);if(!s||r!==s.key)return e;const o=new rb(e.droppable.containers);return o.set(n,{...s,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case vi.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const s=new rb(e.droppable.containers);return s.delete(n),{...e,droppable:{...e.droppable,containers:s}}}default:return e}}function Yme(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=_.useContext($C),s=M2(r),o=M2(n==null?void 0:n.id);return _.useEffect(()=>{if(!t&&!r&&s&&o!=null){if(!Jj(s)||document.activeElement===s.target)return;const a=i.get(o);if(!a)return;const{activatorNode:l,node:d}=a;if(!l.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[l.current,d.current]){if(!h)continue;const p=Upe(h);if(p){p.focus();break}}})}},[r,t,i,o,s]),null}function Xme(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,s)=>s({transform:i,...r}),n):n}function Jme(e){return _.useMemo(()=>({draggable:{...rS.draggable,...e==null?void 0:e.draggable},droppable:{...rS.droppable,...e==null?void 0:e.droppable},dragOverlay:{...rS.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function Zme(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const s=_.useRef(!1),{x:o,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Ml(()=>{if(!o&&!a||!t){s.current=!1;return}if(s.current||!r)return;const d=t==null?void 0:t.node.current;if(!d||d.isConnected===!1)return;const h=n(d),p=bW(h,r);if(o||(p.x=0),a||(p.y=0),s.current=!0,Math.abs(p.x)>0||Math.abs(p.y)>0){const m=xW(d);m&&m.scrollBy({top:p.y,left:p.x})}},[t,o,a,r,n])}const jW=_.createContext({...Wa,scaleX:1,scaleY:1});var Xu;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Xu||(Xu={}));const Qme=_.memo(function(t){var n,r,i,s;let{id:o,accessibility:a,autoScroll:l=!0,children:d,sensors:h=Hme,collisionDetection:p=ime,measuring:m,modifiers:v,...b}=t;const x=_.useReducer(qme,void 0,Gme),[S,C]=x,[k,w]=qpe(),[N,A]=_.useState(Xu.Uninitialized),T=N===Xu.Initialized,{draggable:{active:M,nodes:j,translate:P},droppable:{containers:D}}=S,L=M!=null?j.get(M):null,I=_.useRef({initial:null,translated:null}),$=_.useMemo(()=>{var Et;return M!=null?{id:M,data:(Et=L==null?void 0:L.data)!=null?Et:Wme,rect:I}:null},[M,L]),H=_.useRef(null),[z,F]=_.useState(null),[K,W]=_.useState(null),V=Mb(b,Object.values(b)),X=Kx("DndDescribedBy",o),G=_.useMemo(()=>D.getEnabled(),[D]),te=Jme(m),{droppableRects:oe,measureDroppableContainers:ce,measuringScheduled:de}=Mme(G,{dragging:T,dependencies:[P.x,P.y],config:te.droppable}),ee=Ame(j,M),ne=_.useMemo(()=>K?j2(K):null,[K]),ie=Bt(),ae=jme(ee,te.draggable.measure);Zme({activeNode:M!=null?j.get(M):null,config:ie.layoutShiftCompensation,initialRect:ae,measure:te.draggable.measure});const Q=D$(ee,te.draggable.measure,ae),ke=D$(ee?ee.parentElement:null),we=_.useRef({activatorEvent:null,active:null,activeNode:ee,collisionRect:null,collisions:null,droppableRects:oe,draggableNodes:j,draggingNode:null,draggingNodeRect:null,droppableContainers:D,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ae=D.getNodeFor((n=we.current.over)==null?void 0:n.id),Xe=Ume({measure:te.dragOverlay.measure}),ft=(r=Xe.nodeRef.current)!=null?r:ee,Ct=T?(i=Xe.rect)!=null?i:Q:null,ln=!!(Xe.nodeRef.current&&Xe.rect),en=Lme(ln?null:Q),bt=RW(ft?oo(ft):null),fn=Ome(T?Ae??ee:null),qe=Bme(fn),Ht=Xme(v,{transform:{x:P.x-en.x,y:P.y-en.y,scaleX:1,scaleY:1},activatorEvent:K,active:$,activeNodeRect:Q,containerNodeRect:ke,draggingNodeRect:Ct,over:we.current.over,overlayNodeRect:Xe.rect,scrollableAncestors:fn,scrollableAncestorRects:qe,windowRect:bt}),cn=ne?em(ne,P):null,wt=Dme(fn),zt=z$(wt),tn=z$(wt,[Q]),Yt=em(Ht,zt),Kt=Ct?ame(Ct,Ht):null,sn=$&&Kt?p({active:$,collisionRect:Kt,droppableRects:oe,droppableContainers:G,pointerCoordinates:cn}):null,Nn=nme(sn,"id"),[Ue,un]=_.useState(null),wn=ln?Ht:em(Ht,tn),kt=sme(wn,(s=Ue==null?void 0:Ue.rect)!=null?s:null,Q),Xt=_.useRef(null),Ce=_.useCallback((Et,Lt)=>{let{sensor:nn,options:$t}=Lt;if(H.current==null)return;const re=j.get(H.current);if(!re)return;const je=Et.nativeEvent,ht=new nn({active:H.current,activeNode:re,event:je,options:$t,context:we,onAbort(We){if(!j.get(We))return;const{onDragAbort:Je}=V.current,pt={id:We};Je==null||Je(pt),k({type:"onDragAbort",event:pt})},onPending(We,Ke,Je,pt){if(!j.get(We))return;const{onDragPending:xt}=V.current,Be={id:We,constraint:Ke,initialCoordinates:Je,offset:pt};xt==null||xt(Be),k({type:"onDragPending",event:Be})},onStart(We){const Ke=H.current;if(Ke==null)return;const Je=j.get(Ke);if(!Je)return;const{onDragStart:pt}=V.current,Ot={activatorEvent:je,active:{id:Ke,data:Je.data,rect:I}};As.unstable_batchedUpdates(()=>{pt==null||pt(Ot),A(Xu.Initializing),C({type:vi.DragStart,initialCoordinates:We,active:Ke}),k({type:"onDragStart",event:Ot}),F(Xt.current),W(je)})},onMove(We){C({type:vi.DragMove,coordinates:We})},onEnd:Ne(vi.DragEnd),onCancel:Ne(vi.DragCancel)});Xt.current=ht;function Ne(We){return async function(){const{active:Je,collisions:pt,over:Ot,scrollAdjustedTranslate:xt}=we.current;let Be=null;if(Je&&xt){const{cancelDrop:Ft}=V.current;Be={activatorEvent:je,active:Je,collisions:pt,delta:xt,over:Ot},We===vi.DragEnd&&typeof Ft=="function"&&await Promise.resolve(Ft(Be))&&(We=vi.DragCancel)}H.current=null,As.unstable_batchedUpdates(()=>{C({type:We}),A(Xu.Uninitialized),un(null),F(null),W(null),Xt.current=null;const Ft=We===vi.DragEnd?"onDragEnd":"onDragCancel";if(Be){const Ln=V.current[Ft];Ln==null||Ln(Be),k({type:Ft,event:Be})}})}}},[j]),rt=_.useCallback((Et,Lt)=>(nn,$t)=>{const re=nn.nativeEvent,je=j.get($t);if(H.current!==null||!je||re.dndKit||re.defaultPrevented)return;const ht={active:je};Et(nn,Lt.options,ht)===!0&&(re.dndKit={capturedBy:Lt.sensor},H.current=$t,Ce(nn,Lt))},[j,Ce]),gt=Rme(h,rt);$me(h),Ml(()=>{Q&&N===Xu.Initializing&&A(Xu.Initialized)},[Q,N]),_.useEffect(()=>{const{onDragMove:Et}=V.current,{active:Lt,activatorEvent:nn,collisions:$t,over:re}=we.current;if(!Lt||!nn)return;const je={active:Lt,activatorEvent:nn,collisions:$t,delta:{x:Yt.x,y:Yt.y},over:re};As.unstable_batchedUpdates(()=>{Et==null||Et(je),k({type:"onDragMove",event:je})})},[Yt.x,Yt.y]),_.useEffect(()=>{const{active:Et,activatorEvent:Lt,collisions:nn,droppableContainers:$t,scrollAdjustedTranslate:re}=we.current;if(!Et||H.current==null||!Lt||!re)return;const{onDragOver:je}=V.current,ht=$t.get(Nn),Ne=ht&&ht.rect.current?{id:ht.id,rect:ht.rect.current,data:ht.data,disabled:ht.disabled}:null,We={active:Et,activatorEvent:Lt,collisions:nn,delta:{x:re.x,y:re.y},over:Ne};As.unstable_batchedUpdates(()=>{un(Ne),je==null||je(We),k({type:"onDragOver",event:We})})},[Nn]),Ml(()=>{we.current={activatorEvent:K,active:$,activeNode:ee,collisionRect:Kt,collisions:sn,droppableRects:oe,draggableNodes:j,draggingNode:ft,draggingNodeRect:Ct,droppableContainers:D,over:Ue,scrollableAncestors:fn,scrollAdjustedTranslate:Yt},I.current={initial:Ct,translated:Kt}},[$,ee,sn,Kt,j,ft,Ct,oe,D,Ue,fn,Yt]),Eme({...ie,delta:P,draggingRect:Kt,pointerCoordinates:cn,scrollableAncestors:fn,scrollableAncestorRects:qe});const it=_.useMemo(()=>({active:$,activeNode:ee,activeNodeRect:Q,activatorEvent:K,collisions:sn,containerNodeRect:ke,dragOverlay:Xe,draggableNodes:j,droppableContainers:D,droppableRects:oe,over:Ue,measureDroppableContainers:ce,scrollableAncestors:fn,scrollableAncestorRects:qe,measuringConfiguration:te,measuringScheduled:de,windowRect:bt}),[$,ee,Q,K,sn,ke,Xe,j,D,oe,Ue,ce,fn,qe,te,de,bt]),jt=_.useMemo(()=>({activatorEvent:K,activators:gt,active:$,activeNodeRect:Q,ariaDescribedById:{draggable:X},dispatch:C,draggableNodes:j,over:Ue,measureDroppableContainers:ce}),[K,gt,$,Q,C,X,j,Ue,ce]);return $n.createElement(vW.Provider,{value:w},$n.createElement($C.Provider,{value:jt},$n.createElement(MW.Provider,{value:it},$n.createElement(jW.Provider,{value:kt},d)),$n.createElement(Yme,{disabled:(a==null?void 0:a.restoreFocus)===!1})),$n.createElement(Jpe,{...a,hiddenTextDescribedById:X}));function Bt(){const Et=(z==null?void 0:z.autoScrollEnabled)===!1,Lt=typeof l=="object"?l.enabled===!1:l===!1,nn=T&&!Et&&!Lt;return typeof l=="object"?{...l,enabled:nn}:{enabled:nn}}}),ege=_.createContext(null),F$="button",tge="Draggable";function nge(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const s=Kx(tge),{activators:o,activatorEvent:a,active:l,activeNodeRect:d,ariaDescribedById:h,draggableNodes:p,over:m}=_.useContext($C),{role:v=F$,roleDescription:b="draggable",tabIndex:x=0}=i??{},S=(l==null?void 0:l.id)===t,C=_.useContext(S?jW:ege),[k,w]=ew(),[N,A]=ew(),T=zme(o,t),M=Mb(n);Ml(()=>(p.set(t,{id:t,key:s,node:k,activatorNode:N,data:M}),()=>{const P=p.get(t);P&&P.key===s&&p.delete(t)}),[p,t]);const j=_.useMemo(()=>({role:v,tabIndex:x,"aria-disabled":r,"aria-pressed":S&&v===F$?!0:void 0,"aria-roledescription":b,"aria-describedby":h.draggable}),[r,v,x,S,b,h.draggable]);return{active:l,activatorEvent:a,activeNodeRect:d,attributes:j,isDragging:S,listeners:r?void 0:T,node:k,over:m,setNodeRef:w,setActivatorNodeRef:A,transform:C}}function rge(){return _.useContext(MW)}const ige="Droppable",sge={timeout:25};function oge(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const s=Kx(ige),{active:o,dispatch:a,over:l,measureDroppableContainers:d}=_.useContext($C),h=_.useRef({disabled:n}),p=_.useRef(!1),m=_.useRef(null),v=_.useRef(null),{disabled:b,updateMeasurementsFor:x,timeout:S}={...sge,...i},C=Mb(x??r),k=_.useCallback(()=>{if(!p.current){p.current=!0;return}v.current!=null&&clearTimeout(v.current),v.current=setTimeout(()=>{d(Array.isArray(C.current)?C.current:[C.current]),v.current=null},S)},[S]),w=DC({callback:k,disabled:b||!o}),N=_.useCallback((j,P)=>{w&&(P&&(w.unobserve(P),p.current=!1),j&&w.observe(j))},[w]),[A,T]=ew(N),M=Mb(t);return _.useEffect(()=>{!w||!A.current||(w.disconnect(),p.current=!1,w.observe(A.current))},[A,w]),_.useEffect(()=>(a({type:vi.RegisterDroppable,element:{id:r,key:s,disabled:n,node:A,rect:m,data:M}}),()=>a({type:vi.UnregisterDroppable,key:s,id:r})),[r]),_.useEffect(()=>{n!==h.current.disabled&&(a({type:vi.SetDroppableDisabled,id:r,key:s,disabled:n}),h.current.disabled=n)},[r,s,n,a]),{active:o,rect:m,isOver:(l==null?void 0:l.id)===r,node:A,over:l,setNodeRef:T}}function nI(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function age(e,t){return e.reduce((n,r,i)=>{const s=t.get(r);return s&&(n[i]=s),n},Array(e.length))}function W_(e){return e!==null&&e>=0}function lge(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function cge(e){return typeof e=="boolean"?{draggable:e,droppable:e}:e}const IW=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e;const s=nI(t,r,n),o=t[i],a=s[i];return!a||!o?null:{x:a.left-o.left,y:a.top-o.top,scaleX:a.width/o.width,scaleY:a.height/o.height}},V_={scaleX:1,scaleY:1},uge=e=>{var t;let{activeIndex:n,activeNodeRect:r,index:i,rects:s,overIndex:o}=e;const a=(t=s[n])!=null?t:r;if(!a)return null;if(i===n){const d=s[o];return d?{x:0,y:n<o?d.top+d.height-(a.top+a.height):d.top-a.top,...V_}:null}const l=dge(s,i,n);return i>n&&i<=o?{x:0,y:-a.height-l,...V_}:i<n&&i>=o?{x:0,y:a.height+l,...V_}:{x:0,y:0,...V_}};function dge(e,t,n){const r=e[t],i=e[t-1],s=e[t+1];return r?n<t?i?r.top-(i.top+i.height):s?s.top-(r.top+r.height):0:s?s.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}const PW="Sortable",LW=$n.createContext({activeIndex:-1,containerId:PW,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:IW,disabled:{draggable:!1,droppable:!1}});function fge(e){let{children:t,id:n,items:r,strategy:i=IW,disabled:s=!1}=e;const{active:o,dragOverlay:a,droppableRects:l,over:d,measureDroppableContainers:h}=rge(),p=Kx(PW,n),m=a.rect!==null,v=_.useMemo(()=>r.map(T=>typeof T=="object"&&"id"in T?T.id:T),[r]),b=o!=null,x=o?v.indexOf(o.id):-1,S=d?v.indexOf(d.id):-1,C=_.useRef(v),k=!lge(v,C.current),w=S!==-1&&x===-1||k,N=cge(s);Ml(()=>{k&&b&&h(v)},[k,v,b,h]),_.useEffect(()=>{C.current=v},[v]);const A=_.useMemo(()=>({activeIndex:x,containerId:p,disabled:N,disableTransforms:w,items:v,overIndex:S,useDragOverlay:m,sortedRects:age(v,l),strategy:i}),[x,p,N.draggable,N.droppable,w,v,S,l,m,i]);return $n.createElement(LW.Provider,{value:A},t)}const hge=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return nI(n,r,i).indexOf(t)},pge=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:s,newIndex:o,previousItems:a,previousContainerId:l,transition:d}=e;return!d||!r||a!==s&&i===o?!1:n?!0:o!==i&&t===l},mge={duration:200,easing:"ease"},OW="transform",gge=jb.Transition.toString({property:OW,duration:0,easing:"linear"}),vge={roleDescription:"sortable"};function bge(e){let{disabled:t,index:n,node:r,rect:i}=e;const[s,o]=_.useState(null),a=_.useRef(n);return Ml(()=>{if(!t&&n!==a.current&&r.current){const l=i.current;if(l){const d=ig(r.current,{ignoreTransform:!0}),h={x:l.left-d.left,y:l.top-d.top,scaleX:l.width/d.width,scaleY:l.height/d.height};(h.x||h.y)&&o(h)}}n!==a.current&&(a.current=n)},[t,n,r,i]),_.useEffect(()=>{s&&o(null)},[s]),s}function xge(e){let{animateLayoutChanges:t=pge,attributes:n,disabled:r,data:i,getNewIndex:s=hge,id:o,strategy:a,resizeObserverConfig:l,transition:d=mge}=e;const{items:h,containerId:p,activeIndex:m,disabled:v,disableTransforms:b,sortedRects:x,overIndex:S,useDragOverlay:C,strategy:k}=_.useContext(LW),w=yge(r,v),N=h.indexOf(o),A=_.useMemo(()=>({sortable:{containerId:p,index:N,items:h},...i}),[p,i,N,h]),T=_.useMemo(()=>h.slice(h.indexOf(o)),[h,o]),{rect:M,node:j,isOver:P,setNodeRef:D}=oge({id:o,data:A,disabled:w.droppable,resizeObserverConfig:{updateMeasurementsFor:T,...l}}),{active:L,activatorEvent:I,activeNodeRect:$,attributes:H,setNodeRef:z,listeners:F,isDragging:K,over:W,setActivatorNodeRef:V,transform:X}=nge({id:o,data:A,attributes:{...vge,...n},disabled:w.draggable}),G=$pe(D,z),te=!!L,oe=te&&!b&&W_(m)&&W_(S),ce=!C&&K,de=ce&&oe?X:null,ne=oe?de??(a??k)({rects:x,activeNodeRect:$,activeIndex:m,overIndex:S,index:N}):null,ie=W_(m)&&W_(S)?s({id:o,items:h,activeIndex:m,overIndex:S}):N,ae=L==null?void 0:L.id,Q=_.useRef({activeId:ae,items:h,newIndex:ie,containerId:p}),ke=h!==Q.current.items,we=t({active:L,containerId:p,isDragging:K,isSorting:te,id:o,index:N,items:h,newIndex:Q.current.newIndex,previousItems:Q.current.items,previousContainerId:Q.current.containerId,transition:d,wasDragging:Q.current.activeId!=null}),Ae=bge({disabled:!we,index:N,node:j,rect:M});return _.useEffect(()=>{te&&Q.current.newIndex!==ie&&(Q.current.newIndex=ie),p!==Q.current.containerId&&(Q.current.containerId=p),h!==Q.current.items&&(Q.current.items=h)},[te,ie,p,h]),_.useEffect(()=>{if(ae===Q.current.activeId)return;if(ae!=null&&Q.current.activeId==null){Q.current.activeId=ae;return}const ft=setTimeout(()=>{Q.current.activeId=ae},50);return()=>clearTimeout(ft)},[ae]),{active:L,activeIndex:m,attributes:H,data:A,rect:M,index:N,newIndex:ie,items:h,isOver:P,isSorting:te,isDragging:K,listeners:F,node:j,overIndex:S,over:W,setNodeRef:G,setActivatorNodeRef:V,setDroppableNodeRef:D,setDraggableNodeRef:z,transform:Ae??ne,transition:Xe()};function Xe(){if(Ae||ke&&Q.current.newIndex===N)return gge;if(!(ce&&!Jj(I)||!d)&&(te||we))return jb.Transition.toString({...d,property:OW})}}function yge(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e==null?void 0:e.draggable)!=null?n:t.draggable,droppable:(r=e==null?void 0:e.droppable)!=null?r:t.droppable}}Un.Down,Un.Right,Un.Up,Un.Left;const _ge=20;function Sge(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();e.currentTarget.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:t.left+t.width/2,clientY:t.bottom,view:window}))}function U$(e){return e.top+e.height/2}function wge({localPath:e,onNewLocalChat:t,isConnected:n,startingLocalPath:r}){const i=!n||r===e;return c.jsxs("button",{type:"button",disabled:i,title:n?"New Chat":`Start ${$r} to connect`,className:fe("group flex w-full items-center gap-2 pl-2 pr-1 py-1.5 rounded-md text-left cursor-pointer transition-colors duration-150","hover:bg-muted/40",i&&"cursor-not-allowed opacity-50"),onClick:()=>t(e),children:[c.jsx("span",{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),c.jsx("span",{className:"text-sm truncate flex-1 text-muted-foreground italic",children:"New Chat"})]})}function Cge({activeId:e,groupIds:t,collisionRect:n,droppableRects:r}){const i=t.indexOf(e);if(i===-1)return null;const s=r.get(e);if(!s)return null;const o=n.top+_ge;if(n.top>s.top){for(let a=t.length-1;a>i;a--){const l=r.get(t[a]);if(l&&o>=U$(l))return t[a]}return e}if(n.top<s.top){for(let a=0;a<i;a++){const l=r.get(t[a]);if(l&&o<=U$(l))return t[a]}return e}return e}const kge=_.memo(({group:e,editorLabel:t,collapsedSections:n,expandedGroups:r,onToggleSection:i,onToggleExpandedGroup:s,renderChatRow:o,onShowArchivedProject:a,onNewLocalChat:l,onCopyPath:d,onOpenExternalPath:h,onHideProject:p,onToggleStar:m,isConnected:v,startingLocalPath:b})=>{const{groupKey:x,localPath:S}=e,C=r.has(x),k=e.chats.length===0,w=e.olderChats.length>0,N=!!(p&&d&&h),{attributes:A,listeners:T,setNodeRef:M,setActivatorNodeRef:j,transform:P,transition:D,isDragging:L}=xge({id:x}),I={transform:jb.Translate.toString(P?{...P,x:0}:null),transition:L?void 0:D},$=c.jsxs("div",{className:fe("sticky top-0 bg-background dark:bg-card z-10 relative pl-2 pr-2 py-1 flex items-center gap-1 select-none",L&&"opacity-50"),children:[c.jsx("button",{ref:j,type:"button","aria-label":"Drag to reorder project",title:"Drag to reorder",className:fe("absolute left-0 top-1/2 -translate-y-1/2 flex h-6 w-4 items-center justify-center rounded-sm text-muted-foreground/60 cursor-grab active:cursor-grabbing touch-none transition-opacity duration-150","opacity-0 md:group-hover/section:opacity-100",L&&"opacity-100 cursor-grabbing"),...T,children:c.jsx(coe,{className:"size-3"})}),c.jsxs("button",{type:"button",onClick:()=>i(x),className:"flex items-center gap-1.5 min-w-0 flex-1 rounded-md py-0.5 text-left hover:bg-muted/30 transition-colors duration-150",children:[c.jsx(aa,{className:fe("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150 motion-reduce:transition-none",!n.has(x)&&"rotate-90")}),c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx("span",{className:"truncate min-w-0 text-[13px] font-semibold text-foreground/80",children:Lj(S)})}),c.jsx(Ms,{side:"right",sideOffset:4,children:S})]})]}),e.starredAt!==void 0&&c.jsx(N7,{className:"size-3 shrink-0 fill-amber-400 text-amber-400","aria-label":"Starred"}),(N||l)&&c.jsxs("div",{className:"flex items-center gap-px opacity-100 md:opacity-0 md:group-hover/section:opacity-100 transition-opacity duration-150",children:[N?c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",className:"size-6 rounded-sm text-muted-foreground hover:text-foreground",onClick:Sge,"aria-label":"Project options",children:c.jsx(wb,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:"More"})]}):null,l?c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",className:fe("size-6 rounded-sm text-muted-foreground hover:text-foreground",(!v||b===S)&&"opacity-50 cursor-not-allowed"),disabled:!v||b===S,onClick:H=>{H.stopPropagation(),l(S)},"aria-label":"New chat in this project",children:b===S?c.jsx(jn,{className:"size-3.5 animate-spin"}):c.jsx(aj,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:v?"New Chat":`Start ${$r} to connect`})]}):null]})]});return c.jsxs("div",{ref:M,style:I,className:fe("group/section mb-3",L&&"opacity-50 shadow-lg z-50 relative"),...A,children:[N?c.jsx(Npe,{editorLabel:t,starred:e.starredAt!==void 0,onCopyPath:()=>d==null?void 0:d(S),onShowArchived:()=>a==null?void 0:a(x),onOpenInFinder:()=>h==null?void 0:h("open_finder",S),onOpenInEditor:()=>h==null?void 0:h("open_editor",S),onToggleStar:()=>m==null?void 0:m(x,e.starredAt===void 0),onHide:()=>p==null?void 0:p(x),children:$}):$,!n.has(x)&&(k?!!l:e.previewChats.length>0||w)&&c.jsx("div",{className:"flex flex-col gap-px pl-1",children:k&&l?c.jsx(wge,{localPath:S,onNewLocalChat:l,isConnected:v,startingLocalPath:b}):c.jsxs(c.Fragment,{children:[e.previewChats.map(o),w&&C?c.jsx("button",{onClick:()=>s(x),className:"ml-6 mt-1 self-start px-2 py-0.5 text-[11px] text-muted-foreground hover:text-foreground rounded-md transition-colors duration-150",children:"Show less"}):null,C?e.olderChats.map(o):null,w&&!C?c.jsx("button",{onClick:()=>s(x),className:"ml-6 mt-1 self-start px-2 py-0.5 text-[11px] text-muted-foreground hover:text-foreground rounded-md transition-colors duration-150",children:"Show more"}):null]})})]})}),Ege=function({projectGroups:t,editorLabel:n,collapsedSections:r,expandedGroups:i,onToggleSection:s,onToggleExpandedGroup:o,renderChatRow:a,onShowArchivedProject:l,onNewLocalChat:d,onCopyPath:h,onOpenExternalPath:p,onHideProject:m,onToggleStar:v,onReorderGroups:b,isConnected:x,startingLocalPath:S}){const C=Zpe(gN(NW,{activationConstraint:{distance:2}}),gN(TW,{activationConstraint:{delay:250,tolerance:5}}),gN(eI)),k=_.useMemo(()=>t.map(A=>A.groupKey),[t]),w=_.useMemo(()=>A=>{const T=Cge({activeId:String(A.active.id),groupIds:k,collisionRect:A.collisionRect,droppableRects:A.droppableRects});if(!T)return M$(A);const M=A.droppableContainers.find(j=>j.id===T);return M?[{id:M.id,data:{droppableContainer:M,value:0}}]:M$(A)},[k]);function N(A){const{active:T,over:M}=A;if(M&&T.id!==M.id&&b){const j=k.indexOf(String(T.id)),P=k.indexOf(String(M.id));if(j!==-1&&P!==-1){const D=nI(k,j,P);b(D)}}}return c.jsx(Qme,{sensors:C,collisionDetection:w,onDragEnd:N,children:c.jsx(fge,{items:k,strategy:uge,children:t.map(A=>c.jsx(kge,{group:A,editorLabel:n,collapsedSections:r,expandedGroups:i,onToggleSection:s,onToggleExpandedGroup:o,renderChatRow:a,onShowArchivedProject:l,onNewLocalChat:d,onCopyPath:h,onOpenExternalPath:p,onHideProject:m,onToggleStar:v,isConnected:x,startingLocalPath:S},A.groupKey))})})},H$=_.memo(Ege);function Nge({stacks:e,projects:t,expandedStackIds:n,onToggleExpanded:r,onOpenCreatePanel:i,onOpenStackMenu:s,onDeleteStack:o,onStartChat:a,renderChatCreate:l,renderChatRow:d,chats:h}){const p=t.length>=2,m=new Map;for(const b of h){if(!b.stackId)continue;const x=m.get(b.stackId);x?x.push(b):m.set(b.stackId,[b])}function v(b,x){(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),r(b))}return c.jsxs("div",{className:"flex flex-col mb-3",children:[c.jsxs("div",{className:"pl-2 pr-2 pt-2 pb-1 flex items-center gap-1",children:[c.jsx("span",{className:"flex-1 min-w-0 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Stacks"}),c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",type:"button",disabled:!p,onClick:i,className:"size-6 rounded-md text-muted-foreground hover:text-foreground","aria-label":"New stack",children:c.jsx(ro,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:p?"New stack":"Register a second project to create a stack"})]})]}),e.length===0?c.jsx("p",{className:"pl-2 pr-2 pb-2 text-xs leading-relaxed text-muted-foreground",children:"A stack groups projects so one chat can read and write across them. Add your first stack."}):c.jsx("div",{className:"flex flex-col gap-px",children:e.map((b,x)=>{const S=n.has(b.id),C=t.filter(w=>b.projectIds.includes(w.id)),k=c.jsxs("div",{className:"group/section pl-2 pr-2 py-1 flex items-center gap-1 select-none",children:[c.jsxs("div",{role:"button",tabIndex:0,className:"flex items-center gap-1.5 min-w-0 flex-1 rounded-md py-0.5 text-left hover:bg-muted/30 transition-colors duration-150 cursor-pointer",onClick:()=>r(b.id),onKeyDown:w=>v(b.id,w),children:[c.jsx(aa,{className:fe("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150 motion-reduce:transition-none",S&&"rotate-90")}),c.jsx("span",{className:"truncate min-w-0 text-[13px] font-semibold text-foreground/80",children:b.title})]}),c.jsx("span",{className:"text-[11px] tabular-nums text-muted-foreground px-1.5 py-0.5 rounded bg-muted/60 shrink-0",children:b.memberCount}),o?c.jsx(Rpe,{stackTitle:b.title,onRename:()=>s(b.id),onEditMembers:()=>s(b.id),onDelete:()=>o(b.id),children:c.jsx(Me,{type:"button",variant:"ghost",size:"icon","aria-label":"Stack actions",className:"size-6 rounded-sm opacity-0 group-hover/section:opacity-100 focus-visible:opacity-100 data-[state=open]:opacity-100 transition-opacity duration-150",onClick:w=>w.stopPropagation(),children:c.jsx(wb,{className:"size-3.5"})})}):c.jsx(Me,{type:"button",variant:"ghost",size:"icon","aria-label":"Stack actions",className:"size-6 rounded-sm opacity-0 group-hover/section:opacity-100 transition-opacity duration-150",onClick:w=>{w.stopPropagation(),s(b.id)},children:c.jsx(wb,{className:"size-3.5"})})]});return c.jsxs("div",{children:[x>0?c.jsx("div",{"aria-hidden":!0,"data-testid":"stack-separator",className:"flex justify-center py-1.5 select-none",children:c.jsx("span",{className:"text-[10px] tracking-[0.6em] text-muted-foreground/40 pl-[0.6em] leading-none",children:"✦ ✦ ✦"})}):null,o?c.jsx(Mpe,{stackTitle:b.title,onRename:()=>s(b.id),onEditMembers:()=>s(b.id),onDelete:()=>o(b.id),children:k}):k,S&&c.jsxs("div",{className:"flex flex-col gap-px pb-1",children:[C.map(w=>c.jsx("div",{className:"pl-[28px] pr-2 py-1 text-[13px] text-muted-foreground truncate",children:w.title},w.id)),d&&(m.get(b.id)??[]).length>0&&c.jsx("div",{className:"flex flex-col mt-0.5 pl-1",children:(m.get(b.id)??[]).map(w=>d(w))}),a&&c.jsxs(Me,{type:"button",variant:"ghost",size:"sm",className:"ml-[28px] mt-1 self-start h-6 px-2 text-xs text-muted-foreground hover:text-foreground rounded-md",onClick:w=>{w.stopPropagation(),a(b.id)},children:[c.jsx(ro,{className:"size-3"})," New chat"]}),l?c.jsx("div",{className:"pl-[28px] pr-2 py-1",children:l(b)}):null]})]},b.id)})})]})}const Iv=qt("StackCreatePanel",e=>t=>({title:e.initialTitle,selectedIds:e.initialSelectedIds,setTitle:n=>t({title:n}),setSelectedIds:n=>t(r=>({selectedIds:n(r.selectedIds)}))}));function Tge({mode:e,projects:t,onSubmit:n,onCancel:r}){const i=_.useRef(null),s=Iv.useScopedStore(S=>S.title),o=Iv.useScopedStore(S=>S.selectedIds),a=Iv.useScopedStore(S=>S.setTitle),l=Iv.useScopedStore(S=>S.setSelectedIds),d=t.length>=2,h=!d||s.trim()===""||o.size<2,p=_.useCallback(S=>{l(C=>{const k=new Set(C);return k.has(S)?k.delete(S):k.add(S),k})},[l]),m=_.useCallback(async S=>{S.preventDefault(),!h&&await n(s.trim(),Array.from(o))},[h,n,s,o]),v=_.useCallback(S=>{S.key==="Escape"&&(S.preventDefault(),r())},[r]),b=_.useCallback(S=>{S.key==="Escape"&&r()},[r]),x=_.useCallback((S,C)=>{var k,w,N,A;if((S.metaKey||S.ctrlKey)&&S.key==="Enter")h||n(s.trim(),Array.from(o));else if(S.key==="ArrowRight"){const T=(k=i.current)==null?void 0:k.querySelectorAll("button");T&&((w=T[C+1])==null||w.focus())}else if(S.key==="ArrowLeft"){const T=(N=i.current)==null?void 0:N.querySelectorAll("button");T&&((A=T[C-1])==null||A.focus())}},[h,n,s,o]);return c.jsxs("form",{onSubmit:m,onKeyDown:v,className:"flex flex-col gap-2 px-2.5 py-2 border border-border rounded-lg bg-background",children:[c.jsx("input",{type:"text",value:s,onChange:S=>a(S.target.value),onKeyDown:b,placeholder:"Stack name","aria-label":"Stack name",autoFocus:!0,className:"w-full text-sm px-2 py-1 rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring"}),c.jsx("div",{ref:i,className:"flex flex-wrap gap-1",children:t.map((S,C)=>{const k=o.has(S.id);return c.jsx("button",{type:"button",onClick:()=>p(S.id),onKeyDown:w=>x(w,C),"aria-pressed":k,className:fe("rounded-full px-2 py-0.5 text-xs border transition-colors",k?"bg-primary text-primary-foreground border-primary":"border-border text-muted-foreground hover:border-foreground"),children:S.title},S.id)})}),!d&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Register a second project to create a stack"}),c.jsxs("div",{className:"flex gap-2 pt-1",children:[c.jsx(Me,{type:"submit",size:"sm",disabled:h,children:"Save"}),c.jsx(Me,{type:"button",size:"sm",variant:"ghost",onClick:r,children:"Cancel"})]})]})}function Age({mode:e,initialTitle:t,initialProjectIds:n,projects:r,onSubmit:i,onCancel:s}){return c.jsx(Iv.Provider,{init:{initialTitle:t??"",initialSelectedIds:new Set(n??[])},children:c.jsx(Tge,{mode:e,initialTitle:t,initialProjectIds:n,projects:r,onSubmit:i,onCancel:s})})}function Rge(e=640){const[t,n]=_.useState(()=>typeof window>"u"?!1:window.matchMedia(`(max-width: ${e}px)`).matches);return _.useEffect(()=>{const r=window.matchMedia(`(max-width: ${e}px)`),i=()=>n(r.matches);return r.addEventListener("change",i),()=>r.removeEventListener("change",i)},[e]),t}const dc=qt("StackChatCreateRow",e=>t=>({selectedWorktrees:e.initialSelectedWorktrees,primaryProjectId:e.initialPrimaryProjectId,isSubmitting:!1,errorMessage:null,setSelectedWorktrees:n=>t(r=>({selectedWorktrees:n(r.selectedWorktrees)})),setPrimaryProjectId:n=>t({primaryProjectId:n}),setIsSubmitting:n=>t({isSubmitting:n}),setErrorMessage:n=>t({errorMessage:n})}));function Mge({stack:e,projects:t,onCreate:n,onCancel:r}){const i=t.filter(w=>e.projectIds.includes(w.id)),s=Rge(),o=_.useId(),a=dc.useScopedStore(w=>w.selectedWorktrees),l=dc.useScopedStore(w=>w.primaryProjectId),d=dc.useScopedStore(w=>w.isSubmitting),h=dc.useScopedStore(w=>w.errorMessage),p=dc.useScopedStore(w=>w.setSelectedWorktrees),m=dc.useScopedStore(w=>w.setPrimaryProjectId),v=dc.useScopedStore(w=>w.setIsSubmitting),b=dc.useScopedStore(w=>w.setErrorMessage),x=i.length<=1,S=_.useCallback(async w=>{if(w.preventDefault(),!d){b(null),v(!0);try{const N=i.map(A=>{var M;const T=A.id===l?"primary":"additional";return{projectId:A.id,worktreePath:a.get(A.id)??((M=A.worktrees[0])==null?void 0:M.path)??"",role:T}});await n({primaryProjectId:l,stackBindings:N})}catch(N){b(N instanceof Error?N.message:"Could not create chat. Try again."),v(!1)}}},[i,a,l,n,d,b,v]),C=_.useCallback(w=>{w.key==="Escape"&&!d&&(w.preventDefault(),r())},[r,d]),k=c.jsx("form",{onSubmit:S,onKeyDown:C,"aria-busy":d,"aria-describedby":h?o:void 0,className:fe("flex flex-col gap-3",!s&&"px-3 py-3 border border-border rounded-lg bg-card"),children:c.jsxs("fieldset",{disabled:d,className:"contents",children:[c.jsx("ul",{className:"flex flex-col gap-3",children:i.map(w=>{var M;const N=a.get(w.id)??((M=w.worktrees[0])==null?void 0:M.path)??"",A=w.id===l,T=w.worktrees.length<=1;return c.jsxs("li",{className:"flex flex-col gap-1.5 min-w-0",children:[c.jsxs("div",{className:"flex items-baseline justify-between gap-2 min-w-0",children:[c.jsx("span",{className:"text-[15px] font-semibold leading-snug truncate min-w-0",title:w.title,children:w.title}),!x&&c.jsxs("label",{className:"shrink-0 inline-flex items-center gap-1.5 text-xs text-muted-foreground cursor-pointer select-none",children:[c.jsx("input",{type:"radio",name:"primaryProject",value:w.id,checked:A,onChange:()=>m(w.id),"aria-label":`Set ${w.title} as primary`,className:"accent-foreground"}),c.jsx("span",{className:A?"text-foreground":void 0,children:"Primary"})]})]}),c.jsx("select",{value:N,onChange:j=>{p(P=>{const D=new Map(P);return D.set(w.id,j.target.value),D})},disabled:T,className:"w-full text-[13px] font-mono tabular-nums border border-border rounded-md px-2 py-1.5 bg-background text-foreground truncate disabled:opacity-70 disabled:cursor-not-allowed","aria-label":`Worktree for ${w.title}`,children:w.worktrees.map(j=>c.jsx("option",{value:j.path,children:j.branch},j.path))})]},w.id)})}),h&&c.jsx("p",{id:o,role:"alert",className:"text-xs leading-snug text-destructive",children:h}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Me,{type:"submit",size:"sm",disabled:d,children:d?"Creating…":"Create Chat"}),c.jsx(Me,{type:"button",size:"sm",variant:"ghost",onClick:r,disabled:d,children:"Cancel"})]})]})});return s?c.jsx(yH,{open:!0,onOpenChange:w=>{!w&&!d&&r()},children:c.jsxs(_H,{children:[c.jsx(gj,{className:"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"}),c.jsxs(vj,{"aria-label":`Create chat in ${e.title}`,className:fe("fixed inset-x-0 bottom-0 z-50 flex flex-col gap-3 rounded-t-2xl border-t border-border bg-card px-4 pt-5","pb-[max(env(safe-area-inset-bottom),16px)]","max-h-[85dvh] overflow-y-auto","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom","motion-reduce:data-[state=open]:animate-none motion-reduce:data-[state=closed]:animate-none"),children:[c.jsx("div",{className:"mx-auto mb-1 h-1 w-9 rounded-full bg-border","aria-hidden":!0}),c.jsxs(SH,{className:"text-[15px] font-semibold leading-snug",children:["New chat in ",e.title]}),k]})]})}):k}function jge({stack:e,projects:t,onCreate:n,onCancel:r}){var a;const i=t.filter(l=>e.projectIds.includes(l.id)),s=new Map;for(const l of i){const d=l.worktrees.find(h=>h.isPrimary)??l.worktrees[0];d&&s.set(l.id,d.path)}const o=((a=i[0])==null?void 0:a.id)??"";return c.jsx(dc.Provider,{init:{initialPrimaryProjectId:o,initialSelectedWorktrees:s},children:c.jsx(Mge,{stack:e,projects:t,onCreate:n,onCancel:r})})}const Ige="gpt-5.4-mini",zC="moonshotai/kimi-k2.5:nitro",Pb=[{id:"low",label:"Low"},{id:"medium",label:"Medium"},{id:"high",label:"High"},{id:"max",label:"Max"}],iw=[{id:"minimal",label:"Minimal"},{id:"low",label:"Low"},{id:"medium",label:"Medium"},{id:"high",label:"High"},{id:"xhigh",label:"XHigh"}],wo={reasoningEffort:"high",contextWindow:"200k"},hd={reasoningEffort:"high",fastMode:!1};function sw(e){return Pb.some(t=>t.id===e)}function ow(e){return iw.some(t=>t.id===e)}const Mf=[{id:"200k",label:"200k"},{id:"1m",label:"1M"}];function DW(e){return Mf.some(t=>t.id===e)}const Lb=[{id:"claude",label:"Claude",defaultModel:"claude-sonnet-4-6",defaultEffort:"high",supportsPlanMode:!0,models:[{id:"claude-fable-5",label:"Fable 5",supportsEffort:!0,aliases:["fable"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0},{id:"claude-opus-4-7",label:"Opus 4.7",supportsEffort:!0,aliases:["opus"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0},{id:"claude-sonnet-4-6",label:"Sonnet 4.6",supportsEffort:!0,aliases:["sonnet"],contextWindowOptions:[...Mf]},{id:"claude-haiku-4-5-20251001",label:"Haiku 4.5",supportsEffort:!0,aliases:["haiku"]},{id:"claude-opus-4-8",label:"Opus 4.8",supportsEffort:!0,aliases:["opus-4-8"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0}],efforts:[...Pb]},{id:"codex",label:"Codex",defaultModel:"gpt-5.5",supportsPlanMode:!0,models:[{id:"gpt-5.5",label:"GPT-5.5",supportsEffort:!1},{id:"gpt-5.4",label:"GPT-5.4",supportsEffort:!1},{id:"gpt-5.3-codex",label:"GPT-5.3 Codex",supportsEffort:!1,aliases:["gpt-5-codex"]},{id:"gpt-5.3-codex-spark",label:"GPT-5.3 Codex Spark",supportsEffort:!1}],efforts:[]},{id:"openrouter",label:"OpenRouter",defaultModel:zC,supportsPlanMode:!0,models:[],efforts:[]}];function $c(e){const t=Lb.find(n=>n.id===e);if(!t)throw new Error(`Unknown provider: ${e}`);return t}function Pge(e){return{id:e.id,label:e.label,supportsEffort:e.supportsEffort,...e.aliases?{aliases:e.aliases}:{},...e.contextWindowOptions?{contextWindowOptions:e.contextWindowOptions}:{},...e.supportsMaxReasoningEffort!==void 0?{supportsMaxReasoningEffort:e.supportsMaxReasoningEffort}:{}}}function rI(e,t){return e.map(n=>{if(n.id!=="claude"&&n.id!=="codex")return{...n,models:[...n.models]};const r=t.filter(s=>s.provider===n.id);if(r.length===0)return{...n,models:[...n.models]};const i=[...n.models];for(const s of r){const o=Pge(s),a=i.findIndex(l=>l.id===o.id);a>=0?i[a]=o:i.push(o)}return{...n,models:i}})}function $W(e,t){const n=$c(e);if(!t||t.length===0)return n.models;const[r]=rI([{...n,models:[...n.models]}],t);return r.models}function Lge(e,t,n){if(t)return $W(e,n).find(r=>{var i;return r.id===t||((i=r.aliases)==null?void 0:i.includes(t))})}function iI(e,t,n,r){var i;return((i=Lge(e,t,r))==null?void 0:i.id)??n??$c(e).defaultModel}function Oge(e,t="claude-opus-4-7",n){return iI("claude",e,t,n)}function Dge(e,t="gpt-5.5",n){return iI("codex",e,t,n)}function $ge(e,t,n){const r=iI(e,t,void 0,n);return $W(e,n).find(i=>i.id===r)}function zW(e,t){return $ge("claude",e,t)}function BW(e,t){var n;return!!((n=zW(e,t))!=null&&n.supportsMaxReasoningEffort)}function zge(e,t){var n;return((n=zW(e,t))==null?void 0:n.contextWindowOptions)??[]}function sI(e,t,n){const r=zge(e,n);return r.length===0?wo.contextWindow:DW(t)&&r.some(i=>i.id===t)?t:wo.contextWindow}function Bge(e){switch(e){case"1m":return 1e6;case"200k":default:return 2e5}}const Ob=1,Db=5,Fge=1,W$={maxFileSizeMb:100},K_=1,G_=2048,V$=8e3;function Uge(e){return e==="sdk"||e==="pty"}const iS={idleTimeoutMs:6e5,maxConcurrent:4},yN=6e4,_N=36e5,q_=1,Y_=16,K$={preference:"sdk",lifecycle:{...iS}},$b={toggleEmbeddedTerminal:["cmd+j","ctrl+`"],toggleRightSidebar:["cmd+b","ctrl+b"],openInFinder:["cmd+alt+f","ctrl+alt+f"],openInEditor:["cmd+shift+o","ctrl+shift+o"],addSplitTerminal:["cmd+/","ctrl+/"],jumpToSidebarChat:["cmd+alt"],createChatInCurrentProject:["cmd+alt+n"],openAddProject:["cmd+alt+o"],newStack:["cmd+alt+w"],newStackChat:["cmd+alt+shift+n"],jumpToStacks:["g s"]},G$=["toggleEmbeddedTerminal","toggleRightSidebar","openInFinder","openInEditor","addSplitTerminal","jumpToSidebarChat","createChatInCurrentProject","openAddProject","newStack","newStackChat","jumpToStacks"],Hge={enabled:!1,mode:"always-ask"};function FW(e){return e==="cursor"||e==="vscode"||e==="xcode"||e==="windsurf"||e==="custom"}function Wge(e){return e==="never"||e==="unfocused"||e==="always"}function Vge(e){return e==="blow"||e==="bottle"||e==="frog"||e==="funk"||e==="glass"||e==="ping"||e==="pop"||e==="purr"||e==="tink"}function Kge(e){return e==="openai"||e==="openrouter"||e==="custom"}function UW(e){return e==="claude"||e==="codex"||e==="openrouter"}function Gge(e){return e==="previous-assistant-reply"||e==="full-transcript"}function qge(e){return e==="auto"||e==="manual"}const Yge={toggleEmbeddedTerminal:"Toggle Embedded Terminal",toggleRightSidebar:"Toggle Right Sidebar",openInFinder:"Open In Finder",openInEditor:"Open In Editor",addSplitTerminal:"Add Split Terminal",jumpToSidebarChat:"Jump To Sidebar Chat",createChatInCurrentProject:"New Chat In Current Project",openAddProject:"Open Add Project",newStack:"New Stack",newStackChat:"New Stack Chat",jumpToStacks:"Jump To Stacks"};function SN(e){return(e??[]).join(", ")}function ka(e){return e.split(",").map(t=>t.trim()).map(t=>t.toLowerCase()).filter(Boolean)}const Xge=new Map([["cmd","meta"],["meta","meta"],["ctrl","ctrl"],["control","ctrl"],["alt","alt"],["option","alt"],["shift","shift"]]);function HW(e,t){const n=Qge(e);return n?eve(t,n.key)&&t.ctrlKey===n.ctrl&&t.metaKey===n.meta&&t.altKey===n.alt&&t.shiftKey===n.shift:!1}function hv(e,t,n){return BC(e,t).some(i=>HW(i,n))}function Jge(e,t,n){return BC(e,t).find(r=>HW(r,n))??null}function BC(e,t){return(e==null?void 0:e.bindings[t])??$b[t]}function Zge(){return Object.keys($b)}function oI(e){return{bindings:Object.fromEntries(Zge().map(n=>[n,(e==null?void 0:e.bindings[n])??$b[n]])),warning:(e==null?void 0:e.warning)??null,filePathDisplay:(e==null?void 0:e.filePathDisplay)??""}}function Qge(e){const t=e.split("+").map(r=>r.trim()).filter(Boolean);if(t.length===0)return null;const n={key:"",ctrl:!1,meta:!1,alt:!1,shift:!1};for(const r of t){const i=r.toLowerCase(),s=Xge.get(i);if(s==="ctrl"){n.ctrl=!0;continue}if(s==="meta"){n.meta=!0;continue}if(s==="alt"){n.alt=!0;continue}if(s==="shift"){n.shift=!0;continue}if(n.key)return null;n.key=i}return n.key?n:null}function eve(e,t){if(e.key.toLowerCase()===t)return!0;const n=tve(t);return n?e.code===n:!1}function tve(e){if(e.length===1&&e>="a"&&e<="z")return`Key${e.toUpperCase()}`;if(e.length===1&&e>="0"&&e<="9")return`Digit${e}`;switch(e){case"/":return"Slash";case"`":return"Backquote";default:return null}}const WW=9;function nve(e,t,n){const r=[];for(const i of e){if(t.has(i.groupKey))continue;const s=n.has(i.groupKey)?[...i.previewChats,...i.olderChats]:i.previewChats;for(const o of s)r.push({chat:o,visibleIndex:r.length+1})}return r}function rve(e,t){if(!O2(e,t)||!t.code.startsWith("Digit"))return null;const n=Number(t.code.slice(5));return Number.isInteger(n)&&n>=1&&n<=WW?n:null}function ive(e,t){return sve(e,t)?String(t):null}function O2(e,t){return BC(e,"jumpToSidebarChat").some(n=>ove(n,t))}function X_(e,t,n){return Jge(e,t,n)!==null}function sve(e,t){return t<1||t>WW?null:BC(e,"jumpToSidebarChat")[0]??null}function ove(e,t){const n=e.split("+").map(a=>a.trim().toLowerCase()).filter(Boolean);let r=!1,i=!1,s=!1,o=!1;for(const a of n){if(a==="cmd"||a==="meta"){r=!0;continue}if(a==="alt"||a==="option"){i=!0;continue}if(a==="ctrl"||a==="control"){s=!0;continue}a==="shift"&&(o=!0)}return t.metaKey===r&&t.altKey===i&&t.ctrlKey===s&&t.shiftKey===o}const Qs={debug(...e){console.debug(...e)},info(...e){console.info(...e)},warn(...e){console.warn(...e)},error(...e){console.error(...e)}},VW="kanna:sidebar-width",zb=275,KW=220,GW=520;function Bb(e){return Number.isFinite(e)?Math.min(GW,Math.max(KW,Math.round(e))):zb}function ave(){if(typeof window>"u")return zb;const e=window.localStorage.getItem(VW);return e?Bb(Number(e)):zb}function qW(e){typeof window>"u"||window.localStorage.setItem(VW,String(Bb(e)))}const lve=new Map,Fn=tr()(e=>({collapsedSections:new Set,expandedGroups:new Set,nowMs:Date.now(),showNumberJumpHints:!1,sidebarWidth:ave(),isResizingSidebar:!1,archivedProjectId:null,expandedStackIds:new Set,stackCreatePanelOpen:!1,stackEditId:null,stackDeleteConfirmId:null,stackChatCreateId:null,stackChatWorktrees:lve,stackChatLoading:!1,isImporting:!1,setCollapsedSections:t=>e(n=>({collapsedSections:t(n.collapsedSections)})),setExpandedGroups:t=>e(n=>({expandedGroups:t(n.expandedGroups)})),setExpandedGroupsSnapshot:t=>e({expandedGroups:t}),setNowMs:t=>e({nowMs:t}),setShowNumberJumpHints:t=>e({showNumberJumpHints:t}),setSidebarWidth:t=>{e(typeof t=="function"?n=>({sidebarWidth:t(n.sidebarWidth)}):{sidebarWidth:t})},setSidebarWidthAndPersist:t=>{const n=Bb(t);qW(n),e({sidebarWidth:n})},setIsResizingSidebar:t=>e({isResizingSidebar:t}),setArchivedProjectId:t=>e({archivedProjectId:t}),setExpandedStackIds:t=>e(n=>({expandedStackIds:t(n.expandedStackIds)})),setStackCreatePanelOpen:t=>e({stackCreatePanelOpen:t}),setStackEditId:t=>e({stackEditId:t}),setStackDeleteConfirmId:t=>e({stackDeleteConfirmId:t}),setStackChatCreateId:t=>e({stackChatCreateId:t}),setStackChatWorktrees:t=>e({stackChatWorktrees:t}),setStackChatLoading:t=>e({stackChatLoading:t}),setIsImporting:t=>e({isImporting:t})}));function cve(e){return Object.assign({},e)}function uve({data:e,activeChatId:t,connectionStatus:n,open:r,collapsed:i,showMobileOpenButton:s,onOpen:o,onClose:a,onCollapse:l,onExpand:d,onCreateChat:h,onForkChat:p,currentProjectId:m,keybindings:v,onRenameChat:b,onArchiveChat:x,onOpenArchivedChat:S,onDeleteChat:C,onEditChatPermissions:k,onOpenAddProjectModal:w,onImportClaudeSessions:N,onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,onReorderProjectGroups:P,onCreateStack:D,onRenameStack:L,onRemoveStack:I,onCreateStackChat:$,onListStackWorktrees:H,editorLabel:z,updateSnapshot:F}){var Qe,zn,Ur;const K=qa(),W=Ad(),V=_.useRef(null),X=_.useRef(null),G=_.useRef(new Set),te=_.useRef(new Set),oe=Fn(ue=>ue.collapsedSections),ce=Fn(ue=>ue.expandedGroups),de=Fn(ue=>ue.nowMs),ee=Fn(ue=>ue.showNumberJumpHints),ne=Fn(ue=>ue.sidebarWidth),ie=Fn(ue=>ue.isResizingSidebar),ae=Fn(ue=>ue.archivedProjectId),Q=Fn(ue=>ue.expandedStackIds),ke=Fn(ue=>ue.stackCreatePanelOpen),we=Fn(ue=>ue.stackEditId),Ae=Fn(ue=>ue.stackDeleteConfirmId),Xe=Fn(ue=>ue.stackChatCreateId),ft=Fn(ue=>ue.stackChatWorktrees),Ct=Fn(ue=>ue.stackChatLoading),ln=Fn(ue=>ue.isImporting),en=Fn(ue=>ue.setCollapsedSections),bt=Fn(ue=>ue.setExpandedGroups),fn=Fn(ue=>ue.setNowMs),qe=Fn(ue=>ue.setShowNumberJumpHints),Ht=Fn(ue=>ue.setSidebarWidth),cn=Fn(ue=>ue.setSidebarWidthAndPersist),wt=Fn(ue=>ue.setIsResizingSidebar),zt=Fn(ue=>ue.setArchivedProjectId),tn=Fn(ue=>ue.setExpandedStackIds),Yt=Fn(ue=>ue.setStackCreatePanelOpen),Kt=Fn(ue=>ue.setStackEditId),sn=Fn(ue=>ue.setStackDeleteConfirmId),Nn=Fn(ue=>ue.setStackChatCreateId),Ue=Fn(ue=>ue.setStackChatWorktrees),un=Fn(ue=>ue.setStackChatLoading),wn=Fn(ue=>ue.setIsImporting),kt=_.useMemo(()=>oI(v),[v]),Xt=_.useMemo(()=>{const ue=[];for(const Ye of e.projectGroups)for(const ct of Ye.chats)ct.stackId&&ue.push(ct);return ue},[e.projectGroups]),Ce=_.useCallback(ue=>ue.map(Ye=>{const ct=Ye.chats.filter(It=>!It.stackId);if(ct.length===Ye.chats.length)return Ye;const at=Ye.previewChats.filter(It=>!It.stackId),Mn=Ye.olderChats.filter(It=>!It.stackId);return{...Ye,chats:ct,previewChats:at,olderChats:Mn}}),[]),rt=_.useMemo(()=>Ce(e.starredProjectGroups),[e.starredProjectGroups,Ce]),gt=_.useMemo(()=>Ce(e.projectGroups),[e.projectGroups,Ce]),it=_.useMemo(()=>nve([...rt,...gt],oe,ce),[oe,rt,gt,ce]),jt=_.useRef(it),Bt=_.useMemo(()=>new Map(it.map(ue=>[ue.chat.chatId,ue.visibleIndex])),[it]),Et=_.useMemo(()=>e.projectGroups.map(ue=>({id:ue.groupKey,title:Lj(ue.localPath)})),[e.projectGroups]),Lt=_.useCallback(async ue=>{const Ye=e.stacks.find(ct=>ct.id===ue);if(Ye){Nn(ue),un(!0);try{const ct=await Promise.all(Ye.projectIds.map(async at=>[at,await H(at)]));Ue(new Map(ct))}finally{un(!1)}}},[e.stacks,H,Nn,un,Ue]),nn=_.useCallback(()=>{Nn(null),Ue(new Map)},[Nn,Ue]),$t=_.useMemo(()=>new Map([...e.starredProjectGroups,...e.projectGroups].map(ue=>[ue.localPath,ue.groupKey])),[e.starredProjectGroups,e.projectGroups]),re=it.length,je=_.useMemo(()=>[...e.starredProjectGroups,...e.projectGroups].find(ue=>ue.groupKey===ae)??null,[ae,e.starredProjectGroups,e.projectGroups]);_.useEffect(()=>{jt.current=it},[it]),_.useEffect(()=>{en(ue=>{const Ye=new Set,ct=[...e.starredProjectGroups,...e.projectGroups],at=new Set(ct.map(It=>It.groupKey)),Mn=G.current;for(const It of ue)at.has(It)&&Ye.add(It);G.current=new Set([...Mn].filter(It=>at.has(It)));for(const It of ct)G.current.has(It.groupKey)||(G.current.add(It.groupKey),It.defaultCollapsed&&Ye.add(It.groupKey));return Ye.size===ue.size&&[...Ye].every(It=>ue.has(It))?ue:Ye})},[e.starredProjectGroups,e.projectGroups,en]);const ht=_.useCallback(ue=>{en(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct})},[en]),Ne=_.useCallback(ue=>{bt(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct})},[bt]),We=_.useMemo(()=>[...e.starredProjectGroups,...e.projectGroups].map(ue=>ue.groupKey),[e.starredProjectGroups,e.projectGroups]),Ke=We.length>0&&We.every(ue=>oe.has(ue)),Je=_.useCallback(()=>{if(We.length!==0){if(Ke){en(()=>new Set),bt(()=>te.current);return}te.current=ce,en(()=>new Set(We)),bt(()=>new Set)}},[We,Ke,ce,en,bt]),pt=_.useCallback(ue=>{const Ye=Bt.get(ue.chatId);return c.jsx(Dpe,{chat:ue,activeChatId:t,nowMs:de,shortcutHint:Ye?ive(kt,Ye):null,showShortcutHint:ee,onSelectChat:ct=>{W(`/chat/${ct}`),a()},onRenameChat:()=>b(ue),onOpenInFinder:()=>T("open_finder",ue.localPath),onForkChat:()=>p(ue),onArchiveChat:()=>x(ue),onDeleteChat:()=>C(ue),onEditPermissions:k},ue._id)},[t,W,de,x,a,C,k,p,T,b,kt,ee,Bt]);_.useEffect(()=>{const ue=window.setInterval(()=>{fn(Date.now())},3e4);return()=>window.clearInterval(ue)},[fn]),_.useEffect(()=>{function ue(at){var Hr;if(qe(O2(kt,at)),X_(kt,"createChatInCurrentProject",at)){if(!m)return;at.preventDefault(),h(m);return}if(X_(kt,"openAddProject",at)){at.preventDefault(),W("/"),a(),w();return}if(X_(kt,"newStack",at)){at.preventDefault(),Yt(!0);return}if(X_(kt,"newStackChat",at)){at.preventDefault();return}const Mn=rve(kt,at);if(Mn===null)return;const It=(Hr=jt.current[Mn-1])==null?void 0:Hr.chat;It&&(at.preventDefault(),W(`/chat/${It.chatId}`),a())}function Ye(at){qe(O2(kt,at))}function ct(){qe(!1)}return window.addEventListener("keydown",ue),window.addEventListener("keyup",Ye),window.addEventListener("blur",ct),()=>{window.removeEventListener("keydown",ue),window.removeEventListener("keyup",Ye),window.removeEventListener("blur",ct)}},[m,W,a,h,w,kt,qe,Yt]),_.useEffect(()=>{!t||!V.current||requestAnimationFrame(()=>{const ue=V.current,Ye=ue==null?void 0:ue.querySelector(`[data-chat-id="${t}"]`),ct=Ye instanceof HTMLElement?Ye:null;if(!ct||!ue)return;const at=ct.getBoundingClientRect(),Mn=ue.getBoundingClientRect();if(at.top<Mn.top+38){const It=at.top-Mn.top+ue.scrollTop;ue.scrollTo({top:It-38,behavior:"smooth"})}else if(at.bottom>Mn.bottom){const It=at.top+at.height/2-Mn.top+ue.scrollTop,Hr=ue.clientHeight/2;ue.scrollTo({top:It-Hr,behavior:"smooth"})}})},[t]),_.useEffect(()=>{if(!ie)return;const ue=document.body.style.cursor,Ye=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";function ct(Mn){const It=X.current;It&&Ht(Bb(It.width+Mn.clientX-It.pointerX))}function at(){wt(!1),X.current=null,Ht(Mn=>{const It=Bb(Mn);return qW(It),It})}return window.addEventListener("pointermove",ct),window.addEventListener("pointerup",at,{once:!0}),()=>{window.removeEventListener("pointermove",ct),window.removeEventListener("pointerup",at),document.body.style.cursor=ue,document.body.style.userSelect=Ye}},[ie,Ht,wt]);const Ot=zx(),xt=_.useCallback(async()=>{if(!(ln||!N||!await Ot.confirm({title:"Import Claude sessions",description:"Scan ~/.claude/projects/ and import all sessions into Kanna? Already-imported sessions are skipped.",confirmLabel:"Import"}))){wn(!0);try{await N()}catch(Ye){Qs.error("[kanna/import] failed",String(Ye))}finally{wn(!1)}}},[Ot,ln,N,wn]),Be=re>0,Ft=K.pathname==="/",Ln=K.pathname.startsWith("/settings"),Gt=K.pathname.startsWith("/workflows"),Jt=Ft||Ln||Gt,xr=n==="connecting";let In;xr?In="Connecting":n==="connected"?In="Connected":In="Disconnected";const Gn=n==="connected"?"bg-success":"bg-warning",qn=F?F.latestVersion===`${F.currentVersion}-dev`:!1;let ye;return t?Gt?ye="bg-muted":ye="hover:bg-muted/50":ye="opacity-50 cursor-not-allowed",c.jsxs(c.Fragment,{children:[!r&&s&&c.jsx(Me,{variant:"ghost",size:"icon-mobile","aria-label":"Open sidebar",className:"fixed top-3 left-3 z-50 md:hidden",onClick:o,children:c.jsx(rj,{className:"h-5 w-5"})}),i&&Jt&&c.jsx("div",{className:"hidden md:flex fixed left-0 top-0 h-full z-40 items-start pt-4 pl-5 border-l border-border/0",children:c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(fd,{className:"size-6 text-logo"}),c.jsx(Me,{variant:"ghost",size:"icon",onClick:d,title:"Expand sidebar","aria-label":"Expand sidebar",children:c.jsx(m2,{className:"h-5 w-5"})})]})}),c.jsxs("div",{"data-sidebar":"open",className:fe("fixed inset-0 z-50 bg-background dark:bg-card flex flex-col h-[100dvh] select-none","md:relative md:inset-auto md:w-[var(--sidebar-width)] md:mr-0 md:h-[calc(100%-16px)] md:my-2 md:ml-2 md:border md:border-border md:rounded-2xl",r?"flex":"hidden md:flex",i&&"md:hidden"),style:cve({"--sidebar-width":`${ne}px`}),children:[c.jsxs("div",{className:"px-[5px] h-[64px] max-h-[64px] md:h-[55px] md:max-h-[55px] border-b grid grid-cols-[40px_minmax(0,1fr)_40px] items-center md:px-[7px] md:pl-3 md:flex md:justify-between",children:[c.jsx("div",{className:"md:hidden",children:c.jsx(Me,{variant:"ghost",size:"icon",className:"size-10 rounded-lg hover:!border-border/0",onClick:a,title:"Close sidebar","aria-label":"Close sidebar",children:c.jsx(jo,{className:"h-5 w-5"})})}),c.jsxs("div",{className:"flex items-center justify-self-center gap-2 md:justify-self-auto",children:[c.jsxs("button",{type:"button",onClick:l,title:"Collapse sidebar","aria-label":"Collapse sidebar",className:"hidden md:flex group/sidebar-collapse relative items-center justify-center h-5 w-5 sm:h-6 sm:w-6",children:[c.jsx(fd,{className:"absolute inset-0.5 h-4 w-4 sm:h-5 sm:w-5 text-logo transition-all duration-200 ease-out opacity-100 scale-100 group-hover/sidebar-collapse:opacity-0 group-hover/sidebar-collapse:scale-0"}),c.jsx(m2,{className:"absolute inset-0 h-4 w-4 sm:h-6 sm:w-6 text-muted-foreground transition-all duration-200 ease-out opacity-0 scale-0 group-hover/sidebar-collapse:opacity-100 group-hover/sidebar-collapse:scale-80 hover:opacity-50"})]}),c.jsx(fd,{className:"h-5 w-5 sm:h-6 sm:w-6 text-logo md:hidden"}),c.jsx("span",{className:"font-logo text-base sm:text-md text-foreground",children:$r})]}),c.jsxs("div",{className:"flex items-center justify-self-end md:justify-self-auto",children:[c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>{W("/"),a()},className:"size-10 rounded-lg hover:!border-border/0 md:hidden",title:"New project","aria-label":"New project",children:c.jsx(ro,{className:"h-5 w-5"})}),qn?c.jsx("span",{className:"mr-1 hidden md:inline-flex items-center rounded-full border border-border bg-muted px-2 py-0.5 text-[11px] font-bold tracking-wider text-muted-foreground",title:"Development build",children:"DEV"}):null,N?c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>void xt(),disabled:ln,className:"inline-flex size-10 rounded-lg hover:!border-border/0",title:"Import Claude Code sessions","aria-label":"Import Claude Code sessions",children:c.jsx(tj,{className:"size-4"})}):null,c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>{W("/"),a()},className:"hidden md:inline-flex size-10 rounded-lg hover:!border-border/0",title:"New project","aria-label":"New project",children:c.jsx(ro,{className:"size-4"})})]})]}),We.length>0&&c.jsx("div",{className:"flex items-center justify-end pl-2 pr-2 pt-1.5 pb-1 shrink-0",children:c.jsx("button",{type:"button",onClick:Je,"aria-pressed":Ke,className:"group/collapse-all inline-flex items-center gap-1.5 rounded-full border border-border/50 bg-transparent px-2.5 py-1 text-xs font-medium tracking-[0.005em] text-muted-foreground hover:border-border hover:bg-muted/50 hover:text-foreground aria-pressed:border-border aria-pressed:bg-muted/40 aria-pressed:text-foreground transition-colors duration-150 motion-reduce:transition-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:Ke?c.jsxs(c.Fragment,{children:[c.jsx(Uae,{className:"size-3.5 text-muted-foreground/80 group-hover/collapse-all:text-foreground group-aria-pressed/collapse-all:text-foreground transition-colors duration-150 motion-reduce:transition-none","aria-hidden":!0}),"Expand all"]}):c.jsxs(c.Fragment,{children:[c.jsx(Yse,{className:"size-3.5 text-muted-foreground/80 group-hover/collapse-all:text-foreground transition-colors duration-150 motion-reduce:transition-none","aria-hidden":!0}),"Collapse all"]})})}),c.jsx("div",{ref:V,className:"flex-1 min-h-0 overflow-y-auto overflow-x-hidden scrollbar-hide",style:{WebkitOverflowScrolling:"touch",touchAction:"pan-y"},children:c.jsxs("div",{className:"p-[7px]",children:[!Be&&e.projectGroups.length===0?c.jsx("p",{className:"text-sm text-muted-foreground p-2 mt-6 text-center",children:"No conversations yet"}):null,c.jsx(Nge,{stacks:e.stacks,projects:Et,expandedStackIds:Q,onToggleExpanded:ue=>tn(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct}),onOpenCreatePanel:()=>Yt(!0),onOpenStackMenu:ue=>{Kt(ue),Yt(!0)},onDeleteStack:ue=>sn(ue),onStartChat:ue=>{Lt(ue)},renderChatCreate:ue=>{if(ue.id!==Xe)return null;if(Ct)return c.jsx("p",{className:"text-xs text-muted-foreground",children:"Loading worktrees…"});const Ye=ue.projectIds.map(ct=>{var at;return{id:ct,title:((at=Et.find(Mn=>Mn.id===ct))==null?void 0:at.title)??ct,worktrees:ft.get(ct)??[]}});return c.jsx(jge,{stack:ue,projects:Ye,onCreate:async({primaryProjectId:ct,stackBindings:at})=>{$(ct,ue.id,at),nn()},onCancel:nn})},renderChatRow:pt,chats:Xt}),ke&&c.jsx(Age,{mode:we?"edit":"create",projects:Et,initialProjectIds:we?((Qe=e.stacks.find(ue=>ue.id===we))==null?void 0:Qe.projectIds)??[]:[],initialTitle:we?((zn=e.stacks.find(ue=>ue.id===we))==null?void 0:zn.title)??"":"",onSubmit:async(ue,Ye)=>{we?L(we,ue):D(ue,Ye),Yt(!1),Kt(null)},onCancel:()=>{Yt(!1),Kt(null)}}),Ae&&(()=>{const ue=e.stacks.find(Ye=>Ye.id===Ae);return ue?c.jsxs("div",{className:"px-2.5 py-2 border border-destructive/50 rounded-lg bg-background mx-2 my-1",children:[c.jsxs("p",{className:"text-xs text-destructive mb-2",children:['Delete "',ue.title,'"?']}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx("button",{type:"button",className:"text-xs px-2 py-1 rounded bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{I(Ae),sn(null)},children:"Delete"}),c.jsx("button",{type:"button",className:"text-xs px-2 py-1 rounded border border-border hover:bg-muted",onClick:()=>sn(null),children:"Cancel"})]})]}):null})(),rt.length>0&&c.jsxs(c.Fragment,{children:[c.jsx(H$,{projectGroups:rt,editorLabel:z,collapsedSections:oe,expandedGroups:ce,onToggleSection:ht,onToggleExpandedGroup:Ne,renderChatRow:pt,onShowArchivedProject:zt,onNewLocalChat:ue=>{const Ye=$t.get(ue);Ye&&h(Ye)},onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,isConnected:n==="connected"}),e.projectGroups.length>0&&c.jsx("div",{className:"mx-3 my-1 border-t border-border/50"})]}),c.jsx(H$,{projectGroups:gt,editorLabel:z,onReorderGroups:P,collapsedSections:oe,expandedGroups:ce,onToggleSection:ht,onToggleExpandedGroup:Ne,renderChatRow:pt,onShowArchivedProject:zt,onNewLocalChat:ue=>{const Ye=$t.get(ue);Ye&&h(Ye)},onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,isConnected:n==="connected"})]})}),c.jsxs("div",{className:"border-t border-border",children:[c.jsxs("button",{type:"button",disabled:!t,"aria-label":"Workflows",onClick:()=>{t&&(W(`/workflows/${t}`),a())},className:fe("w-full flex items-center gap-2 px-3 py-2.5 text-left transition-colors duration-150 rounded-none",ye),children:[c.jsx(lj,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("span",{className:"text-sm flex-1",children:"Workflows"})]}),c.jsxs("button",{type:"button",onClick:()=>{W("/settings/general"),a()},className:fe("w-full flex items-center gap-2 px-3 py-2.5 text-left transition-colors duration-150 rounded-none",Ln?"bg-muted":"hover:bg-muted/50"),children:[c.jsx(fae,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("span",{className:"text-sm flex-1",children:"Settings"})]}),c.jsxs("div",{className:"flex items-center gap-2 px-3 pb-2.5 pt-0.5",children:[c.jsx("span",{className:fe("h-1.5 w-1.5 rounded-full shrink-0",Gn),"aria-hidden":!0}),c.jsx("span",{className:"text-[11px] text-muted-foreground tabular-nums",children:In})]})]}),c.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize sidebar",tabIndex:0,title:"Resize sidebar",className:fe("hidden md:block absolute -right-1 top-3 bottom-3 z-20 w-2 cursor-col-resize rounded-full","focus-visible:outline-none"),onPointerDown:ue=>{ue.preventDefault(),X.current={pointerX:ue.clientX,width:ne},wt(!0)},onDoubleClick:()=>{cn(zb)},onKeyDown:ue=>{let Ye=null;ue.key==="ArrowLeft"?Ye=ne-16:ue.key==="ArrowRight"?Ye=ne+16:ue.key==="Home"?Ye=KW:ue.key==="End"?Ye=GW:ue.key==="Enter"&&(Ye=zb),Ye!==null&&(ue.preventDefault(),cn(Ye))}})]}),c.jsx(To,{open:!!je,onOpenChange:ue=>{ue||zt(null)},children:c.jsxs(io,{size:"md",children:[c.jsxs(SC,{children:[c.jsx(Ao,{children:"Archived Chats"}),c.jsx(Qm,{children:(je==null?void 0:je.localPath)??""})]}),c.jsx(la,{className:"space-y-1",children:(Ur=je==null?void 0:je.archivedChats)!=null&&Ur.length?je.archivedChats.map(ue=>c.jsxs("button",{type:"button",className:"flex w-full items-center justify-between gap-3 rounded-lg border border-border/0 px-3 py-2 text-left transition-colors hover:border-border hover:bg-muted",onClick:()=>{S(ue.chatId),zt(null),a()},children:[c.jsx("span",{className:"min-w-0 truncate text-sm",children:ue.title}),c.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:$fe(zfe(ue),de)})]},ue.chatId)):c.jsx("p",{className:"px-1 py-3 text-sm text-muted-foreground",children:"No archived chats"})})]})}),r?c.jsx("div",{className:"fixed inset-0 bg-black/40 z-40 md:hidden",onClick:a}):null]})}const dve=_.memo(uve),fve=_.forwardRef((e,t)=>c.jsx(Me,{ref:t,variant:"ghost",size:"none","aria-label":"Public link",...e,className:e.className??"border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",children:c.jsx(goe,{strokeWidth:2,className:"h-4.5"})})),D2=qt("SharePopoverBody",()=>e=>({busy:!1,setBusy:t=>e({busy:t})}));function hve(e,t){const n=e-t;if(n<=0)return"Expired";const r=Math.round(n/36e5);return r<1?"Expires in <1h":r<48?`Expires in ${r}h`:`Expires in ${Math.round(r/24)}d`}function pve(e){const t=D2.useScopedStore(i=>i.busy),n=D2.useScopedStore(i=>i.setBusy),r=e.shares.filter(i=>!i.revoked);return c.jsxs(c.Fragment,{children:[c.jsx(Me,{variant:"default",disabled:t,"data-share-mint":"",onClick:()=>{n(!0),e.onMint(e.chatId).finally(()=>{n(!1)})},children:t?"Creating…":"Create share link"}),r.length===0?c.jsx("p",{className:"text-xs text-muted-foreground",children:"No active share links for this chat."}):c.jsx("ul",{className:"space-y-2",children:r.map(i=>c.jsxs("li",{className:"flex flex-col gap-1 rounded border border-border/40 p-2 text-xs",children:[c.jsx("code",{className:"break-all",children:i.url}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsxs(Me,{size:"sm",variant:"ghost",onClick:()=>{navigator.clipboard.writeText(i.url)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5 mr-1"}),"Copy"]}),c.jsxs(Me,{size:"sm",variant:"ghost","data-share-revoke":"",onClick:()=>{e.onRevoke(i.tokenId)},children:[c.jsx(poe,{className:"h-3.5 w-3.5 mr-1"}),"Revoke"]}),c.jsx("span",{className:"ml-auto text-muted-foreground",children:hve(i.expiresAt,e.now)})]})]},i.tokenId))})]})}function mve(e){return c.jsx(D2.Provider,{init:void 0,children:c.jsx(pve,{...e})})}function gve(e){const t=_.useMemo(()=>Date.now(),[e.open]);return c.jsxs(Js,{children:[c.jsxs(Ld,{open:e.open,onOpenChange:e.onOpenChange,children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Od,{asChild:!0,children:e.trigger})}),c.jsx(eu,{align:"end",className:"w-96 p-4 space-y-3",children:c.jsx(mve,{chatId:e.chatId,shares:e.shares,now:t,onMint:e.onMint,onRevoke:e.onRevoke})})]}),c.jsx(Ms,{side:"bottom",children:"Mint a public read-only link"})]})}function vve({bindings:e,provider:t,onOpenPath:n}){return e.length<=1?null:c.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-0.5",children:[e.map(r=>{const i=r.worktreePath.split("/").pop()??r.worktreePath,s=r.role==="primary",o=r.projectStatus==="missing";return c.jsxs("div",{role:"button",tabIndex:0,className:"flex items-center gap-1 cursor-pointer",onClick:()=>n(r.worktreePath),onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),n(r.worktreePath))},children:[s?c.jsx("span",{className:"text-emerald-500",children:"●"}):c.jsx("span",{className:"text-muted-foreground",children:"○"}),c.jsx("span",{className:`font-mono tabular-nums text-xs${o?" line-through text-muted-foreground":""}`,children:i})]},r.projectId)}),t==="codex"&&c.jsx("span",{className:"font-mono text-xs text-muted-foreground ml-2",children:"codex: cwd-only"})]})}function q$(e){return e.replace(/[/\\]+$/,"")}function bve(e,t){const n=q$(e);if(!t)return n.split(/[/\\]/).filter(Boolean).pop()??"";const r=q$(t);if(n===r)return"~";for(const i of["/","\\"])if(n.startsWith(r+i))return`~/${n.slice(r.length+1).replace(/\\/g,"/")}`;return n}function xve({hasGitRepo:e=!0,gitStatus:t="unknown",localPath:n,branchName:r,homeDir:i}){if(!e)return"Setup Git";if(t==="unknown")return null;const s=n?bve(n,i):"",o=r??"Detached HEAD";return s?`${s} · ${o}`:o}const $2=qt("OpenExternalSelect",({initialValue:e})=>t=>({lastValue:e,setLastValue:n=>t({lastValue:n})})),aI=1e3,z2=500,B2=5e3,lI=450,F2=250,U2=900,H2="cursor";function Cm(e){switch(e){case"vscode":return"code {path}";case"xcode":return"xed {path}";case"windsurf":return"windsurf {path}";case"custom":return"cursor {path}";case"cursor":default:return"cursor {path}"}}function yve(e){switch(e){case"vscode":return"VS Code";case"xcode":return"Xcode";case"windsurf":return"Windsurf";case"custom":return"Custom";case"cursor":default:return"Cursor"}}function _ve(e){return Number.isFinite(e)?Math.min(B2,Math.max(z2,Math.round(e))):aI}function Sve(e){return Number.isFinite(e)?Math.min(U2,Math.max(F2,Math.round(e))):lI}function wve(e){switch(e){case"vscode":case"xcode":case"windsurf":case"custom":case"cursor":return e;default:return H2}}function Y$(e,t){const n=e==null?void 0:e.trim();return n&&n.length>0?n:Cm(t)}const Ss=tr()(e=>({scrollbackLines:aI,minColumnWidth:lI,editorPreset:H2,editorCommandTemplate:Cm(H2),setScrollbackLines:t=>e({scrollbackLines:_ve(t)}),setMinColumnWidth:t=>e({minColumnWidth:Sve(t)}),setEditorPreset:t=>e(n=>{const r=wve(t);return{editorPreset:r,editorCommandTemplate:r==="custom"?Y$(n.editorCommandTemplate,r):Cm(r)}}),setEditorCommandTemplate:t=>e(n=>({editorCommandTemplate:Y$(t,n.editorPreset)}))})),FC=[{value:"cursor",label:"Cursor"},{value:"xcode",label:"Xcode"},{value:"windsurf",label:"Windsurf"},{value:"custom",label:"Custom"}],ad={cursor:"/editor-icons/cursor.png",defaultApp:"/editor-icons/default-app.png",finder:"/editor-icons/finder.png",preview:"/editor-icons/preview.png",xcode:"/editor-icons/xcode.png",terminal:"/editor-icons/terminal.png",windsurf:"/editor-icons/windsurf.png",custom:"/editor-icons/custom.png"};function ld({src:e,className:t}){return c.jsx("img",{src:e,alt:"","aria-hidden":"true",draggable:!1,className:t})}function YW({preset:e,className:t}){switch(e){case"xcode":return c.jsx(ld,{src:ad.xcode,className:t});case"windsurf":return c.jsx(ld,{src:ad.windsurf,className:t});case"custom":return c.jsx(ld,{src:ad.custom,className:t});case"cursor":case"vscode":default:return c.jsx(ld,{src:ad.cursor,className:t})}}function Cve({className:e}){return c.jsx(ld,{src:ad.finder,className:e})}function kve({className:e}){return c.jsx(ld,{src:ad.preview,className:e})}function Eve({className:e}){return c.jsx(ld,{src:ad.defaultApp,className:e})}function Nve({className:e}){return c.jsx(mC,{className:e})}function Tve({className:e}){return c.jsx(ld,{src:ad.terminal,className:e})}function X$(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ave(e){const t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Rve=[" ","Enter","ArrowUp","ArrowDown"],Mve=[" ","Enter"],Jf="Select",[UC,HC,jve]=Dj(Jf),[sg]=Zc(Jf,[jve,jd]),WC=jd(),[Ive,Dd]=sg(Jf),[Pve,Lve]=sg(Jf),XW=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:s,value:o,defaultValue:a,onValueChange:l,dir:d,name:h,autoComplete:p,disabled:m,required:v,form:b}=e,x=WC(t),[S,C]=_.useState(null),[k,w]=_.useState(null),[N,A]=_.useState(!1),T=$j(d),[M,j]=ym({prop:r,defaultProp:i??!1,onChange:s,caller:Jf}),[P,D]=ym({prop:o,defaultProp:a,onChange:l,caller:Jf}),L=_.useRef(null),I=S?b||!!S.closest("form"):!0,[$,H]=_.useState(new Set),z=Array.from($).map(F=>F.props.value).join(";");return c.jsx(NC,{...x,children:c.jsxs(Ive,{required:v,scope:t,trigger:S,onTriggerChange:C,valueNode:k,onValueNodeChange:w,valueNodeHasChildren:N,onValueNodeHasChildrenChange:A,contentId:Rc(),value:P,onValueChange:D,open:M,onOpenChange:j,dir:T,triggerPointerDownPosRef:L,disabled:m,children:[c.jsx(UC.Provider,{scope:t,children:c.jsx(Pve,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(F=>{H(K=>new Set(K).add(F))},[]),onNativeOptionRemove:_.useCallback(F=>{H(K=>{const W=new Set(K);return W.delete(F),W})},[]),children:n})}),I?c.jsxs(_V,{"aria-hidden":!0,required:v,tabIndex:-1,name:h,autoComplete:p,value:P,onChange:F=>D(F.target.value),disabled:m,form:b,children:[P===void 0?c.jsx("option",{value:""}):null,Array.from($)]},z):null]})})};XW.displayName=Jf;var JW="SelectTrigger",ZW=_.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...i}=e,s=WC(n),o=Dd(JW,n),a=o.disabled||r,l=Vn(t,o.onTriggerChange),d=HC(n),h=_.useRef("touch"),[p,m,v]=wV(x=>{const S=d().filter(w=>!w.disabled),C=S.find(w=>w.value===o.value),k=CV(S,x,C);k!==void 0&&o.onValueChange(k.value)}),b=x=>{a||(o.onOpenChange(!0),v()),x&&(o.triggerPointerDownPosRef.current={x:Math.round(x.pageX),y:Math.round(x.pageY)})};return c.jsx(Dx,{asChild:!0,...s,children:c.jsx(Sn.button,{type:"button",role:"combobox","aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":"none",dir:o.dir,"data-state":o.open?"open":"closed",disabled:a,"data-disabled":a?"":void 0,"data-placeholder":SV(o.value)?"":void 0,...i,ref:l,onClick:nt(i.onClick,x=>{x.currentTarget.focus(),h.current!=="mouse"&&b(x)}),onPointerDown:nt(i.onPointerDown,x=>{h.current=x.pointerType;const S=x.target;S.hasPointerCapture(x.pointerId)&&S.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&x.pointerType==="mouse"&&(b(x),x.preventDefault())}),onKeyDown:nt(i.onKeyDown,x=>{const S=p.current!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&m(x.key),!(S&&x.key===" ")&&Rve.includes(x.key)&&(b(),x.preventDefault())})})})});ZW.displayName=JW;var QW="SelectValue",eV=_.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:i,children:s,placeholder:o="",...a}=e,l=Dd(QW,n),{onValueNodeHasChildrenChange:d}=l,h=s!==void 0,p=Vn(t,l.onValueNodeChange);return ps(()=>{d(h)},[d,h]),c.jsx(Sn.span,{...a,ref:p,style:{pointerEvents:"none"},children:SV(l.value)?c.jsx(c.Fragment,{children:o}):s})});eV.displayName=QW;var Ove="SelectIcon",tV=_.forwardRef((e,t)=>{const{__scopeSelect:n,children:r,...i}=e;return c.jsx(Sn.span,{"aria-hidden":!0,...i,ref:t,children:r||"▼"})});tV.displayName=Ove;var Dve="SelectPortal",nV=e=>c.jsx(Zm,{asChild:!0,...e});nV.displayName=Dve;var Zf="SelectContent",rV=_.forwardRef((e,t)=>{const n=Dd(Zf,e.__scopeSelect),[r,i]=_.useState();if(ps(()=>{i(new DocumentFragment)},[]),!n.open){const s=r;return s?As.createPortal(c.jsx(iV,{scope:e.__scopeSelect,children:c.jsx(UC.Slot,{scope:e.__scopeSelect,children:c.jsx("div",{children:e.children})})}),s):null}return c.jsx(sV,{...e,ref:t})});rV.displayName=Zf;var Ta=10,[iV,$d]=sg(Zf),$ve="SelectContentImpl",zve=qf("SelectContent.RemoveScroll"),sV=_.forwardRef((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:s,onPointerDownOutside:o,side:a,sideOffset:l,align:d,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:v,sticky:b,hideWhenDetached:x,avoidCollisions:S,...C}=e,k=Dd(Zf,n),[w,N]=_.useState(null),[A,T]=_.useState(null),M=Vn(t,ne=>N(ne)),[j,P]=_.useState(null),[D,L]=_.useState(null),I=HC(n),[$,H]=_.useState(!1),z=_.useRef(!1);_.useEffect(()=>{if(w)return yC(w)},[w]),bC();const F=_.useCallback(ne=>{const[ie,...ae]=I().map(we=>we.ref.current),[Q]=ae.slice(-1),ke=document.activeElement;for(const we of ne)if(we===ke||(we==null||we.scrollIntoView({block:"nearest"}),we===ie&&A&&(A.scrollTop=0),we===Q&&A&&(A.scrollTop=A.scrollHeight),we==null||we.focus(),document.activeElement!==ke))return},[I,A]),K=_.useCallback(()=>F([j,w]),[F,j,w]);_.useEffect(()=>{$&&K()},[$,K]);const{onOpenChange:W,triggerPointerDownPosRef:V}=k;_.useEffect(()=>{if(w){let ne={x:0,y:0};const ie=Q=>{var ke,we;ne={x:Math.abs(Math.round(Q.pageX)-(((ke=V.current)==null?void 0:ke.x)??0)),y:Math.abs(Math.round(Q.pageY)-(((we=V.current)==null?void 0:we.y)??0))}},ae=Q=>{ne.x<=10&&ne.y<=10?Q.preventDefault():w.contains(Q.target)||W(!1),document.removeEventListener("pointermove",ie),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",ie),document.addEventListener("pointerup",ae,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ie),document.removeEventListener("pointerup",ae,{capture:!0})}}},[w,W,V]),_.useEffect(()=>{const ne=()=>W(!1);return window.addEventListener("blur",ne),window.addEventListener("resize",ne),()=>{window.removeEventListener("blur",ne),window.removeEventListener("resize",ne)}},[W]);const[X,G]=wV(ne=>{const ie=I().filter(ke=>!ke.disabled),ae=ie.find(ke=>ke.ref.current===document.activeElement),Q=CV(ie,ne,ae);Q&&setTimeout(()=>Q.ref.current.focus())}),te=_.useCallback((ne,ie,ae)=>{const Q=!z.current&&!ae;(k.value!==void 0&&k.value===ie||Q)&&(P(ne),Q&&(z.current=!0))},[k.value]),oe=_.useCallback(()=>w==null?void 0:w.focus(),[w]),ce=_.useCallback((ne,ie,ae)=>{const Q=!z.current&&!ae;(k.value!==void 0&&k.value===ie||Q)&&L(ne)},[k.value]),de=r==="popper"?W2:oV,ee=de===W2?{side:a,sideOffset:l,align:d,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:v,sticky:b,hideWhenDetached:x,avoidCollisions:S}:{};return c.jsx(iV,{scope:n,content:w,viewport:A,onViewportChange:T,itemRefCallback:te,selectedItem:j,onItemLeave:oe,itemTextRefCallback:ce,focusSelectedItem:K,selectedItemText:D,position:r,isPositioned:$,searchRef:X,children:c.jsx(Lx,{as:zve,allowPinchZoom:!0,children:c.jsx(Px,{asChild:!0,trapped:k.open,onMountAutoFocus:ne=>{ne.preventDefault()},onUnmountAutoFocus:nt(i,ne=>{var ie;(ie=k.trigger)==null||ie.focus({preventScroll:!0}),ne.preventDefault()}),children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:ne=>ne.preventDefault(),onDismiss:()=>k.onOpenChange(!1),children:c.jsx(de,{role:"listbox",id:k.contentId,"data-state":k.open?"open":"closed",dir:k.dir,onContextMenu:ne=>ne.preventDefault(),...C,...ee,onPlaced:()=>H(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...C.style},onKeyDown:nt(C.onKeyDown,ne=>{const ie=ne.ctrlKey||ne.altKey||ne.metaKey;if(ne.key==="Tab"&&ne.preventDefault(),!ie&&ne.key.length===1&&G(ne.key),["ArrowUp","ArrowDown","Home","End"].includes(ne.key)){let Q=I().filter(ke=>!ke.disabled).map(ke=>ke.ref.current);if(["ArrowUp","End"].includes(ne.key)&&(Q=Q.slice().reverse()),["ArrowUp","ArrowDown"].includes(ne.key)){const ke=ne.target,we=Q.indexOf(ke);Q=Q.slice(we+1)}setTimeout(()=>F(Q)),ne.preventDefault()}})})})})})})});sV.displayName=$ve;var Bve="SelectItemAlignedPosition",oV=_.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:r,...i}=e,s=Dd(Zf,n),o=$d(Zf,n),[a,l]=_.useState(null),[d,h]=_.useState(null),p=Vn(t,M=>h(M)),m=HC(n),v=_.useRef(!1),b=_.useRef(!0),{viewport:x,selectedItem:S,selectedItemText:C,focusSelectedItem:k}=o,w=_.useCallback(()=>{if(s.trigger&&s.valueNode&&a&&d&&x&&S&&C){const M=s.trigger.getBoundingClientRect(),j=d.getBoundingClientRect(),P=s.valueNode.getBoundingClientRect(),D=C.getBoundingClientRect();if(s.dir!=="rtl"){const ke=D.left-j.left,we=P.left-ke,Ae=M.left-we,Xe=M.width+Ae,ft=Math.max(Xe,j.width),Ct=window.innerWidth-Ta,ln=X$(we,[Ta,Math.max(Ta,Ct-ft)]);a.style.minWidth=Xe+"px",a.style.left=ln+"px"}else{const ke=j.right-D.right,we=window.innerWidth-P.right-ke,Ae=window.innerWidth-M.right-we,Xe=M.width+Ae,ft=Math.max(Xe,j.width),Ct=window.innerWidth-Ta,ln=X$(we,[Ta,Math.max(Ta,Ct-ft)]);a.style.minWidth=Xe+"px",a.style.right=ln+"px"}const L=m(),I=window.innerHeight-Ta*2,$=x.scrollHeight,H=window.getComputedStyle(d),z=parseInt(H.borderTopWidth,10),F=parseInt(H.paddingTop,10),K=parseInt(H.borderBottomWidth,10),W=parseInt(H.paddingBottom,10),V=z+F+$+W+K,X=Math.min(S.offsetHeight*5,V),G=window.getComputedStyle(x),te=parseInt(G.paddingTop,10),oe=parseInt(G.paddingBottom,10),ce=M.top+M.height/2-Ta,de=I-ce,ee=S.offsetHeight/2,ne=S.offsetTop+ee,ie=z+F+ne,ae=V-ie;if(ie<=ce){const ke=L.length>0&&S===L[L.length-1].ref.current;a.style.bottom="0px";const we=d.clientHeight-x.offsetTop-x.offsetHeight,Ae=Math.max(de,ee+(ke?oe:0)+we+K),Xe=ie+Ae;a.style.height=Xe+"px"}else{const ke=L.length>0&&S===L[0].ref.current;a.style.top="0px";const Ae=Math.max(ce,z+x.offsetTop+(ke?te:0)+ee)+ae;a.style.height=Ae+"px",x.scrollTop=ie-ce+x.offsetTop}a.style.margin=`${Ta}px 0`,a.style.minHeight=X+"px",a.style.maxHeight=I+"px",r==null||r(),requestAnimationFrame(()=>v.current=!0)}},[m,s.trigger,s.valueNode,a,d,x,S,C,s.dir,r]);ps(()=>w(),[w]);const[N,A]=_.useState();ps(()=>{d&&A(window.getComputedStyle(d).zIndex)},[d]);const T=_.useCallback(M=>{M&&b.current===!0&&(w(),k==null||k(),b.current=!1)},[w,k]);return c.jsx(Uve,{scope:n,contentWrapper:a,shouldExpandOnScrollRef:v,onScrollButtonChange:T,children:c.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:N},children:c.jsx(Sn.div,{...i,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});oV.displayName=Bve;var Fve="SelectPopperPosition",W2=_.forwardRef((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:i=Ta,...s}=e,o=WC(n);return c.jsx(TC,{...o,...s,ref:t,align:r,collisionPadding:i,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});W2.displayName=Fve;var[Uve,cI]=sg(Zf,{}),V2="SelectViewport",aV=_.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:r,...i}=e,s=$d(V2,n),o=cI(V2,n),a=Vn(t,s.onViewportChange),l=_.useRef(0);return c.jsxs(c.Fragment,{children:[c.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),c.jsx(UC.Slot,{scope:n,children:c.jsx(Sn.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:a,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:nt(i.onScroll,d=>{const h=d.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:m}=o;if(m!=null&&m.current&&p){const v=Math.abs(l.current-h.scrollTop);if(v>0){const b=window.innerHeight-Ta*2,x=parseFloat(p.style.minHeight),S=parseFloat(p.style.height),C=Math.max(x,S);if(C<b){const k=C+v,w=Math.min(b,k),N=k-w;p.style.height=w+"px",p.style.bottom==="0px"&&(h.scrollTop=N>0?N:0,p.style.justifyContent="flex-end")}}}l.current=h.scrollTop})})})]})});aV.displayName=V2;var lV="SelectGroup",[Hve,Wve]=sg(lV),cV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=Rc();return c.jsx(Hve,{scope:n,id:i,children:c.jsx(Sn.div,{role:"group","aria-labelledby":i,...r,ref:t})})});cV.displayName=lV;var uV="SelectLabel",dV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=Wve(uV,n);return c.jsx(Sn.div,{id:i.id,...r,ref:t})});dV.displayName=uV;var aw="SelectItem",[Vve,fV]=sg(aw),hV=_.forwardRef((e,t)=>{const{__scopeSelect:n,value:r,disabled:i=!1,textValue:s,...o}=e,a=Dd(aw,n),l=$d(aw,n),d=a.value===r,[h,p]=_.useState(s??""),[m,v]=_.useState(!1),b=Vn(t,k=>{var w;return(w=l.itemRefCallback)==null?void 0:w.call(l,k,r,i)}),x=Rc(),S=_.useRef("touch"),C=()=>{i||(a.onValueChange(r),a.onOpenChange(!1))};if(r==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return c.jsx(Vve,{scope:n,value:r,disabled:i,textId:x,isSelected:d,onItemTextChange:_.useCallback(k=>{p(w=>w||((k==null?void 0:k.textContent)??"").trim())},[]),children:c.jsx(UC.ItemSlot,{scope:n,value:r,disabled:i,textValue:h,children:c.jsx(Sn.div,{role:"option","aria-labelledby":x,"data-highlighted":m?"":void 0,"aria-selected":d&&m,"data-state":d?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...o,ref:b,onFocus:nt(o.onFocus,()=>v(!0)),onBlur:nt(o.onBlur,()=>v(!1)),onClick:nt(o.onClick,()=>{S.current!=="mouse"&&C()}),onPointerUp:nt(o.onPointerUp,()=>{S.current==="mouse"&&C()}),onPointerDown:nt(o.onPointerDown,k=>{S.current=k.pointerType}),onPointerMove:nt(o.onPointerMove,k=>{var w;S.current=k.pointerType,i?(w=l.onItemLeave)==null||w.call(l):S.current==="mouse"&&k.currentTarget.focus({preventScroll:!0})}),onPointerLeave:nt(o.onPointerLeave,k=>{var w;k.currentTarget===document.activeElement&&((w=l.onItemLeave)==null||w.call(l))}),onKeyDown:nt(o.onKeyDown,k=>{var N;((N=l.searchRef)==null?void 0:N.current)!==""&&k.key===" "||(Mve.includes(k.key)&&C(),k.key===" "&&k.preventDefault())})})})})});hV.displayName=aw;var Pv="SelectItemText",pV=_.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:i,...s}=e,o=Dd(Pv,n),a=$d(Pv,n),l=fV(Pv,n),d=Lve(Pv,n),[h,p]=_.useState(null),m=Vn(t,C=>p(C),l.onItemTextChange,C=>{var k;return(k=a.itemTextRefCallback)==null?void 0:k.call(a,C,l.value,l.disabled)}),v=h==null?void 0:h.textContent,b=_.useMemo(()=>c.jsx("option",{value:l.value,disabled:l.disabled,children:v},l.value),[l.disabled,l.value,v]),{onNativeOptionAdd:x,onNativeOptionRemove:S}=d;return ps(()=>(x(b),()=>S(b)),[x,S,b]),c.jsxs(c.Fragment,{children:[c.jsx(Sn.span,{id:l.textId,...s,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?As.createPortal(s.children,o.valueNode):null]})});pV.displayName=Pv;var mV="SelectItemIndicator",gV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return fV(mV,n).isSelected?c.jsx(Sn.span,{"aria-hidden":!0,...r,ref:t}):null});gV.displayName=mV;var K2="SelectScrollUpButton",vV=_.forwardRef((e,t)=>{const n=$d(K2,e.__scopeSelect),r=cI(K2,e.__scopeSelect),[i,s]=_.useState(!1),o=Vn(t,r.onScrollButtonChange);return ps(()=>{if(n.viewport&&n.isPositioned){let a=function(){const d=l.scrollTop>0;s(d)};const l=n.viewport;return a(),l.addEventListener("scroll",a),()=>l.removeEventListener("scroll",a)}},[n.viewport,n.isPositioned]),i?c.jsx(xV,{...e,ref:o,onAutoScroll:()=>{const{viewport:a,selectedItem:l}=n;a&&l&&(a.scrollTop=a.scrollTop-l.offsetHeight)}}):null});vV.displayName=K2;var G2="SelectScrollDownButton",bV=_.forwardRef((e,t)=>{const n=$d(G2,e.__scopeSelect),r=cI(G2,e.__scopeSelect),[i,s]=_.useState(!1),o=Vn(t,r.onScrollButtonChange);return ps(()=>{if(n.viewport&&n.isPositioned){let a=function(){const d=l.scrollHeight-l.clientHeight,h=Math.ceil(l.scrollTop)<d;s(h)};const l=n.viewport;return a(),l.addEventListener("scroll",a),()=>l.removeEventListener("scroll",a)}},[n.viewport,n.isPositioned]),i?c.jsx(xV,{...e,ref:o,onAutoScroll:()=>{const{viewport:a,selectedItem:l}=n;a&&l&&(a.scrollTop=a.scrollTop+l.offsetHeight)}}):null});bV.displayName=G2;var xV=_.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...i}=e,s=$d("SelectScrollButton",n),o=_.useRef(null),a=HC(n),l=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>l(),[l]),ps(()=>{var h;const d=a().find(p=>p.ref.current===document.activeElement);(h=d==null?void 0:d.ref.current)==null||h.scrollIntoView({block:"nearest"})},[a]),c.jsx(Sn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:nt(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:nt(i.onPointerMove,()=>{var d;(d=s.onItemLeave)==null||d.call(s),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:nt(i.onPointerLeave,()=>{l()})})}),Kve="SelectSeparator",yV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return c.jsx(Sn.div,{"aria-hidden":!0,...r,ref:t})});yV.displayName=Kve;var q2="SelectArrow",Gve=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=WC(n),s=Dd(q2,n),o=$d(q2,n);return s.open&&o.position==="popper"?c.jsx(AC,{...i,...r,ref:t}):null});Gve.displayName=q2;var qve="SelectBubbleInput",_V=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{const i=_.useRef(null),s=Vn(r,i),o=Ave(t);return _.useEffect(()=>{const a=i.current;if(!a)return;const l=window.HTMLSelectElement.prototype,h=Object.getOwnPropertyDescriptor(l,"value").set;if(o!==t&&h){const p=new Event("change",{bubbles:!0});h.call(a,t),a.dispatchEvent(p)}},[o,t]),c.jsx(Sn.select,{...n,style:{...qH,...n.style},ref:s,defaultValue:t})});_V.displayName=qve;function SV(e){return e===""||e===void 0}function wV(e){const t=Fa(e),n=_.useRef(""),r=_.useRef(0),i=_.useCallback(o=>{const a=n.current+o;t(a),(function l(d){n.current=d,window.clearTimeout(r.current),d!==""&&(r.current=window.setTimeout(()=>l(""),1e3))})(a)},[t]),s=_.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,s]}function CV(e,t,n){const i=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let o=Yve(e,Math.max(s,0));i.length===1&&(o=o.filter(d=>d!==n));const l=o.find(d=>d.textValue.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function Yve(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Xve=XW,kV=ZW,Jve=eV,Zve=tV,Qve=nV,EV=rV,ebe=aV,tbe=cV,NV=dV,TV=hV,nbe=pV,rbe=gV,AV=vV,RV=bV,MV=yV;const Qo=Xve,jp=tbe,ja=Jve,Co=_.forwardRef(({className:e,children:t,...n},r)=>c.jsxs(kV,{ref:r,className:fe("flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition-colors","placeholder:text-muted-foreground","focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-50","[&>span]:line-clamp-1",e),...n,children:[t,c.jsx(Zve,{asChild:!0,children:c.jsx(Xm,{className:"h-4 w-4 shrink-0 opacity-50"})})]}));Co.displayName=kV.displayName;const jV=_.forwardRef(({className:e,...t},n)=>c.jsx(AV,{ref:n,className:fe("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(h7,{className:"h-4 w-4"})}));jV.displayName=AV.displayName;const IV=_.forwardRef(({className:e,...t},n)=>c.jsx(RV,{ref:n,className:fe("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(Xm,{className:"h-4 w-4"})}));IV.displayName=RV.displayName;const ko=_.forwardRef(({className:e,children:t,position:n="popper",...r},i)=>c.jsx(Qve,{children:c.jsxs(EV,{ref:i,className:fe("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-background text-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:[c.jsx(jV,{}),c.jsx(ebe,{className:fe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),c.jsx(IV,{})]})}));ko.displayName=EV.displayName;const ibe=_.forwardRef(({className:e,...t},n)=>c.jsx(NV,{ref:n,className:fe("px-2 py-1.5 text-sm font-semibold",e),...t}));ibe.displayName=NV.displayName;const ri=_.forwardRef(({className:e,children:t,...n},r)=>c.jsxs(TV,{ref:r,className:fe("relative flex w-full cursor-default select-none items-center rounded-md py-1.5 pl-2 pr-8 text-sm outline-none","focus:bg-accent focus:text-accent-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[c.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:c.jsx(rbe,{children:c.jsx(js,{className:"h-4 w-4"})})}),c.jsx(nbe,{children:t})]}));ri.displayName=TV.displayName;const sbe=_.forwardRef(({className:e,...t},n)=>c.jsx(MV,{ref:n,className:fe("-mx-1 my-1 h-px bg-border",e),...t}));sbe.displayName=MV.displayName;const J$="kanna:last-open-external",PV="py-2 pl-2 pr-8",obe="rounded-md text-sm font-normal focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground",abe="flex items-center gap-3",lbe="h-5 w-5 shrink-0";function LV({value:e,label:t,isMac:n}){return c.jsxs("span",{className:abe,children:[c.jsx(OV,{value:e,isMac:n,className:lbe}),c.jsx("span",{children:t})]})}function cbe(e,t){return{preset:e,commandTemplate:e==="custom"&&(t==null?void 0:t.trim())||Cm(e)}}function ube(e,t){var r;if(e==="finder")return t?"Finder":"Folder";if(e==="terminal")return"Terminal";if(e==="preview")return"Preview";if(e==="default")return"Default App";const n=e.slice(7);return n==="vscode"?"VS Code":((r=FC.find(i=>i.value===n))==null?void 0:r.label)??"Editor"}function OV({value:e,isMac:t,className:n}){var s;if(e==="finder")return t?c.jsx(Cve,{className:n}):c.jsx(Nve,{className:n});if(e==="terminal")return c.jsx(Tve,{className:n});if(e==="preview")return c.jsx(kve,{className:n});if(e==="default")return c.jsx(Eve,{className:n});const r=e.slice(7),i=((s=FC.find(o=>o.value===r))==null?void 0:s.value)??"vscode";return c.jsx(YW,{preset:i,className:n})}function Z$(e,t){if(e==="finder"||e==="terminal"||e==="preview"||e==="default")return e;if(e!=null&&e.startsWith("editor:")){const n=e.slice(7);if(FW(n))return`editor:${n}`}return t}function DV({editorPreset:e,isMac:t,includeFinder:n=!0,includeTerminal:r=!1,includePreview:i=!1,includeDefault:s=!1,menuKind:o="context"}){const a={value:"finder",label:t?"Finder":"Folder"},l={value:"terminal",label:"Terminal"},d={value:"preview",label:"Preview"},h={value:"default",label:"Default App"},m=[{value:"editor:cursor",label:"Cursor"},{value:"editor:xcode",label:"Xcode"},{value:"editor:windsurf",label:"Windsurf"},...e==="custom"?[{value:"editor:custom",label:"Custom"}]:[]],v=`editor:${e}`,b=[...m.filter(x=>x.value===v),...m.filter(x=>x.value!==v)];return o==="navbar"?[...b.filter(x=>x.value===v),...n?[a]:[],...r?[l]:[],...b.filter(x=>x.value!==v)]:[...b,...i&&t?[d]:[],...n?[a]:[],...r?[l]:[],...s?[h]:[]]}function $V(e){var r;if(e.value==="finder"){e.onOpenExternal("open_finder");return}if(e.value==="terminal"){e.onOpenExternal("open_terminal");return}if(e.value==="preview"){e.onOpenExternal("open_preview");return}if(e.value==="default"){e.onOpenExternal("open_default");return}const t=e.value.slice(7),n=((r=FC.find(i=>i.value===t))==null?void 0:r.value)??"vscode";e.onOpenExternal("open_editor",cbe(n,e.editorCommandTemplate))}function dbe({isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s}){const o=`editor:${t}`,a=$2.useScopedStore(m=>m.lastValue),l=$2.useScopedStore(m=>m.setLastValue);_.useEffect(()=>{l(Z$(window.localStorage.getItem(J$),o))},[o,l]);const d=_.useMemo(()=>DV({editorPreset:t,isMac:e,includeFinder:!0,includeTerminal:!0,menuKind:"navbar"}),[t,e]);function h(m){l(m),window.localStorage.setItem(J$,m),$V({value:m,editorCommandTemplate:n,onOpenExternal:s})}let p;return a==="finder"?p=r:a===`editor:${t}`?p=i:p=void 0,c.jsxs("div",{className:"grid grid-cols-[1fr_auto]",children:[c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:()=>h(a),title:`Open in ${ube(a,e)}`,className:"border-0 !pl-2.5 !pr-1 hover:!border-border/0 hover:!bg-transparent",children:c.jsx(OV,{value:a,isMac:e,className:"size-6"})})}),c.jsx(Tb,{side:"bottom",shortcut:p})]}),c.jsxs(Qo,{value:void 0,onValueChange:m=>h(Z$(m,a)),children:[c.jsx(Co,{"aria-label":"Choose open destination",className:"!pl-1 !pr-2.5 border-0 bg-transparent hover:bg-transparent focus:ring-0 focus:ring-offset-0 [&>svg]:hidden",children:c.jsx("span",{className:"flex items-center justify-center",children:c.jsx(Xm,{className:"h-4 w-4 opacity-60"})})}),c.jsx(ko,{align:"end",children:c.jsx(jp,{children:d.map(m=>c.jsx(ri,{value:m.value,className:PV,children:c.jsx(LV,{value:m.value,label:m.label,isMac:e})},m.value))})})]})]})}function fbe({isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s}){const o=`editor:${t}`;return c.jsx($2.Provider,{init:{initialValue:o},children:c.jsx(dbe,{isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s})})}function hbe({isMac:e,editorPreset:t,editorCommandTemplate:n,includeFinder:r=!0,includeTerminal:i=!1,includePreview:s=!1,includeDefault:o=!1,onOpenExternal:a}){const l=DV({editorPreset:t,isMac:e,includeFinder:r,includeTerminal:i,includePreview:s,includeDefault:o});return c.jsx(Id,{className:"rounded-lg p-1",children:l.map(d=>c.jsx(vr,{className:`${PV} ${obe}`,onSelect:h=>{h.preventDefault(),$V({value:d.value,editorCommandTemplate:n,onOpenExternal:a})},children:c.jsx(LV,{value:d.value,label:d.label,isMac:e})},d.value))})}const J_=Object.freeze([]);function wN(e){return e.phase!=="exited"}function pbe(){return tr()(e=>({instances:J_,popoverOpen:!1,applySnapshot:t=>{const n=t.filter(wN);e({instances:n.length===0?J_:n})},applyDiff:t=>e(n=>{const r=n.instances;if(t.op==="added")return!wN(t.instance)||r.some(s=>s.chatId===t.instance.chatId)?n:{instances:[...r,t.instance]};if(t.op==="updated"){if(!wN(t.instance)){const a=r.filter(l=>l.chatId!==t.instance.chatId);return a.length===r.length?n:{instances:a.length===0?J_:a}}return r.some(a=>a.chatId===t.instance.chatId)?{instances:r.map(a=>a.chatId===t.instance.chatId?t.instance:a)}:{instances:[...r,t.instance]}}const i=r.filter(s=>s.chatId!==t.chatId);return i.length===r.length?n:{instances:i.length===0?J_:i}}),openPopover:()=>e({popoverOpen:!0}),closePopover:()=>e({popoverOpen:!1}),togglePopover:()=>e(t=>({popoverOpen:!t.popoverOpen}))}))}const kc=pbe();function mbe(){return kc(e=>e.instances)}function gbe(){return kc(e=>e.instances.length)}function vbe(){return kc(e=>e.popoverOpen)}const Y2=qt("PtyInstanceRow",()=>e=>({confirmKill:!1,setConfirmKill:t=>e({confirmKill:t})})),km={spawning:"var(--warning)","trust-dialog":"var(--warning)",ready:"var(--success, oklch(0.72 0.16 145))",streaming:"var(--primary)",cancelling:"var(--warning)",exited:"var(--muted-foreground)"},bbe={spawning:"spawning","trust-dialog":"trust",ready:"ready",streaming:"streaming",cancelling:"cancelling",exited:"exited"};function xbe(e){return e.length<=40?e:`…${e.slice(-39)}`}function ybe(e){return e.length>8?e.slice(0,8):e}function _be(e,t){const n=t??Date.now(),r=Math.max(0,n-e),i=Math.floor(r/1e3);if(i<60)return`${i}s`;const s=Math.floor(i/60);return s<60?`${s}m ${i%60}s`:`${Math.floor(s/60)}h ${s%60}m`}function Q$(e){if(e<1024)return`${e} B`;const t=e/1024;if(t<1024)return`${t.toFixed(0)} KB`;const n=t/1024;return n<1024?`${n.toFixed(0)} MB`:`${(n/1024).toFixed(1)} GB`}function e4(e){return e>=100?`${e.toFixed(0)}%`:e>=10?`${e.toFixed(1)}%`:`${e.toFixed(1)}%`}function Sbe({phase:e}){return c.jsxs("span",{className:"inline-flex items-center gap-1.5 px-1.5 py-0.5 rounded-full text-[10px] font-mono uppercase tracking-wide tabular-nums",style:{background:"color-mix(in oklch, var(--muted) 60%, transparent)"},children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block w-[6px] h-[6px] rounded-full",style:{backgroundColor:km[e]}}),c.jsx("span",{style:{color:km[e]},children:bbe[e]})]})}function wbe({instance:e,onOpenChat:t,onCancel:n,onKill:r}){return c.jsx(Y2.Provider,{init:void 0,children:c.jsx(Cbe,{instance:e,onOpenChat:t,onCancel:n,onKill:r})})}function Cbe({instance:e,onOpenChat:t,onCancel:n,onKill:r}){const i=Y2.useScopedStore(a=>a.confirmKill),s=Y2.useScopedStoreApi(),o=_.useCallback(()=>{const a=s.getState();a.confirmKill?(r(e.chatId),a.setConfirmKill(!1)):a.setConfirmKill(!0)},[s,e.chatId,r]);return c.jsxs("div",{className:"group border border-border/60 rounded-lg p-3 flex flex-col gap-2 hover:border-border transition-colors",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("button",{type:"button",onClick:()=>t(e.chatId),className:"text-xs font-mono font-medium text-foreground hover:text-primary transition-colors text-left truncate flex-1 min-w-0",children:ybe(e.chatId)}),c.jsx(Sbe,{phase:e.phase})]}),c.jsxs("div",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px] text-muted-foreground font-mono tabular-nums",children:[c.jsxs("div",{className:"truncate",title:e.cwd,children:[c.jsx("span",{className:"text-foreground/40",children:"cwd"})," ",xbe(e.cwd)]}),c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"pid"})," ",e.pid??"—"]}),c.jsxs("div",{className:"truncate",title:e.model,children:[c.jsx("span",{className:"text-foreground/40",children:"model"})," ",e.model||"—"]}),c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"up"})," ",_be(e.startedAt,e.exitedAt)]}),e.accountLabel?c.jsxs("div",{className:"truncate col-span-2",title:e.accountLabel,children:[c.jsx("span",{className:"text-foreground/40",children:"acct"})," ",e.accountLabel,e.oauthMasked?c.jsxs("span",{className:"text-foreground/30",children:[" · ",e.oauthMasked]}):null]}):null,e.planMode!==null?c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"plan"})," ",e.planMode?"on":"off"]}):null,e.smokeTest?c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"smoke"})," ",c.jsx("span",{style:{color:e.smokeTest==="pass"?km.ready:km.exited},children:e.smokeTest})]}):null,e.rssBytes!==null?c.jsxs("div",{className:"truncate col-span-2",title:"Resident memory (current · peak across session)",children:[c.jsx("span",{className:"text-foreground/40",children:"mem"})," ",Q$(e.rssBytes),e.rssPeakBytes!==null&&e.rssPeakBytes>e.rssBytes?c.jsxs("span",{className:"text-foreground/30",children:[" · peak ",Q$(e.rssPeakBytes)]}):null]}):null,e.cpuPercent!==null?c.jsxs("div",{className:"truncate col-span-2",title:"CPU usage % across process tree (current · peak; >100% = multi-core)",children:[c.jsx("span",{className:"text-foreground/40",children:"cpu"})," ",e4(e.cpuPercent),e.cpuPeakPercent!==null&&e.cpuPeakPercent>e.cpuPercent?c.jsxs("span",{className:"text-foreground/30",children:[" · peak ",e4(e.cpuPeakPercent)]}):null]}):null]}),e.phase!=="exited"?c.jsxs("div",{className:"flex items-center gap-1.5 pt-1",children:[c.jsx("button",{type:"button",onClick:()=>t(e.chatId),className:"text-[10px] font-mono px-2 py-1 rounded-md border border-border/60 hover:bg-muted/40 transition-colors",children:"open"}),c.jsx("button",{type:"button",onClick:()=>n(e.chatId),className:"text-[10px] font-mono px-2 py-1 rounded-md border border-border/60 hover:bg-muted/40 transition-colors",children:"cancel"}),c.jsx("button",{type:"button",onClick:o,onBlur:()=>s.getState().setConfirmKill(!1),className:"text-[10px] font-mono px-2 py-1 rounded-md border transition-colors ml-auto",style:{borderColor:i?"var(--destructive)":"var(--border)",color:i?"var(--destructive)":void 0},"aria-label":i?"Confirm kill":"Kill PTY process",children:i?"confirm kill?":"kill"})]}):c.jsxs("div",{className:"text-[10px] font-mono text-muted-foreground pt-1",children:["exited",e.exitCode!==null?` · code ${e.exitCode}`:""]})]})}function kbe({instances:e,liveCount:t,open:n,onOpenChange:r,onOpenChat:i,onCancel:s,onKill:o}){const a=t>0,l=a?`${t} claude PTY instance${t===1?"":"s"}`:"No live PTY instances";return c.jsxs(Ld,{open:n,onOpenChange:r,children:[c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Od,{asChild:!0,children:c.jsxs("button",{type:"button","aria-label":l,className:"inline-flex items-center gap-1.5 px-1.5 h-9 rounded-md hover:bg-transparent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block w-[7px] h-[7px] rounded-full flex-shrink-0",style:{backgroundColor:a?km.ready:"var(--muted-foreground)"}}),c.jsxs("span",{className:"text-xs font-mono font-medium tabular-nums leading-none",style:{color:a?km.ready:"var(--muted-foreground)"},children:["pty ",t]})]})})}),c.jsx(Ms,{side:"bottom",children:l})]}),c.jsxs(eu,{align:"end",sideOffset:8,className:"w-[420px] p-3",children:[c.jsxs("div",{className:"flex items-center justify-between mb-3",children:[c.jsx("h3",{className:"text-xs font-mono uppercase tracking-wider text-foreground/60",children:"claude pty instances"}),c.jsxs("span",{className:"text-[10px] font-mono text-muted-foreground tabular-nums",children:[t," live"]})]}),e.length===0?c.jsx("div",{className:"text-xs text-muted-foreground text-center py-6 font-mono",children:"no instances yet"}):c.jsx("div",{className:"flex flex-col gap-2 max-h-[60vh] overflow-y-auto",children:e.map(d=>c.jsx(wbe,{instance:d,onOpenChat:i,onCancel:s,onKill:o},d.chatId))})]})]})}function Ebe({socket:e,onOpenChat:t}){const n=mbe(),r=gbe(),i=vbe(),s=_.useCallback(h=>{const p=kc.getState();h?p.openPopover():p.closePopover()},[]),o=_.useCallback(h=>{kc.getState().closePopover(),t==null||t(h)},[t]),a=_.useCallback(h=>{if(!e)return;const p={type:"pty.cancel",chatId:h};e.command(p).catch(()=>{})},[e]),l=_.useCallback(h=>{if(!e)return;const p={type:"pty.kill",chatId:h};e.command(p).catch(()=>{})},[e]),d=_.useMemo(()=>n,[n]);return c.jsx(kbe,{instances:d,liveCount:r,open:i,onOpenChange:s,onOpenChat:o,onCancel:a,onKill:l})}const zV=tr()(e=>({sharePopoverOpen:!1,setSharePopoverOpen:t=>e({sharePopoverOpen:t})})),Nbe=()=>zV(e=>e.sharePopoverOpen),Tbe=()=>zV(e=>e.setSharePopoverOpen);function Abe(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();e.currentTarget.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:t.left+t.width/2,clientY:t.bottom,view:window}))}function Rbe({showOnDesktop:e,onToggleEmbeddedTerminal:t}){return t?c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:Abe,title:"More actions",className:fe("border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",e?"flex":"flex md:hidden"),children:c.jsx(wb,{strokeWidth:2,className:"h-4.5"})})}),c.jsx(Id,{children:t?c.jsxs(vr,{onSelect:n=>{n.preventDefault(),t()},children:[c.jsx(gC,{strokeWidth:2,className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Toggle Terminal"})]}):null})]}):null}function Mbe({sidebarCollapsed:e,onOpenSidebar:t,onExpandSidebar:n,onNewChat:r,localPath:i,embeddedTerminalVisible:s=!1,onToggleEmbeddedTerminal:o,rightSidebarVisible:a=!1,onToggleRightSidebar:l,onOpenExternal:d,editorPreset:h="cursor",editorCommandTemplate:p,platform:m="darwin",finderShortcut:v,editorShortcut:b,terminalShortcut:x,rightSidebarShortcut:S,branchName:C,homeDir:k,hasGitRepo:w=!0,gitStatus:N="unknown",timings:A,status:T,resolvedBindings:M,provider:j,onOpenPath:P=()=>{},socket:D,onOpenPtyChat:L,currentChatId:I,shareShares:$,onShareMint:H,onShareRevoke:z}){const F=xve({hasGitRepo:w,gitStatus:N,localPath:i,branchName:C,homeDir:k}),K=Nbe(),W=Tbe(),V=m==="darwin";return c.jsxs(jj,{className:fe("absolute top-0 left-0 right-0 z-10 md:pt-3 px-3 border-border/0 md:pb-0 flex items-center justify-center"," bg-gradient-to-b from-background/70"),children:[c.jsxs("div",{className:"relative flex items-center gap-2 w-full",children:[c.jsxs("div",{className:`flex items-center gap-1 flex-shrink-0 border border-border/0 rounded-2xl ${e?"px-1.5 border-border":""} p-1 backdrop-blur-lg`,children:[c.jsx(Me,{variant:"ghost",size:"icon-mobile",className:"md:hidden",onClick:t,"aria-label":"Open sidebar",children:c.jsx(rj,{className:"size-4.5"})}),e&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"flex items-center justify-center w-[36px] h-[36px]",children:c.jsx(fd,{className:"h-4 w-4 sm:h-5 sm:w-5 text-logo ml-1 hidden md:block"})}),c.jsx(Me,{variant:"ghost",size:"icon",className:"hidden md:flex",onClick:n,title:"Expand sidebar","aria-label":"Expand sidebar",children:c.jsx(m2,{className:"size-4.5"})})]}),c.jsx(Me,{variant:"ghost",size:"icon",className:"hover:!border-border/0 hover:!bg-transparent",onClick:r,title:"Compose","aria-label":"New chat",children:c.jsx(aj,{className:"size-4.5"})})]}),A&&T?c.jsx("div",{className:"flex-1 min-w-0 flex items-center justify-center select-none",children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("div",{className:"flex items-center gap-2 cursor-default",children:[c.jsxs("span",{className:"flex md:hidden items-center gap-1",children:[c.jsx("span",{className:fe("text-xs font-medium",N$(E$(T))),children:"●"}),c.jsx("span",{className:"text-xs font-medium text-foreground",children:N2(T)}),c.jsx("span",{className:"text-xs font-mono tabular-nums text-foreground/80",children:E2(A.derivedAtMs-A.stateEnteredAt)})]}),c.jsxs("span",{className:"hidden md:flex items-center gap-2",children:[c.jsxs("span",{className:"flex items-center gap-1",children:[c.jsx("span",{className:fe("text-xs",N$(E$(T))),children:"●"}),c.jsx("span",{className:"text-xs font-medium text-foreground",children:N2(T)})]}),c.jsx("span",{className:"text-xs font-mono tabular-nums text-foreground/80",children:E2(A.derivedAtMs-A.stateEnteredAt)}),c.jsx("span",{className:"h-3 w-px bg-border/60","aria-hidden":!0}),c.jsx("span",{className:"text-xs tabular-nums text-muted-foreground",children:Jo(A.derivedAtMs-A.activeSessionStartedAt)}),A.lastTurnDurationMs!=null?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"h-3 w-px bg-border/60","aria-hidden":!0}),c.jsx("span",{className:"text-xs tabular-nums text-muted-foreground",children:Jo(A.lastTurnDurationMs)})]}):null]})]})}),c.jsx(Ms,{side:"bottom",className:"text-left",children:c.jsxs("div",{className:"space-y-0.5 text-xs",children:[c.jsxs("div",{children:["Chat created ",Jo(A.derivedAtMs-A.chatCreatedAt)," ago"]}),c.jsxs("div",{children:["Idle ",Jo(A.cumulativeMs.idle)]}),c.jsxs("div",{children:["Running ",Jo(A.cumulativeMs.running)]}),c.jsxs("div",{children:["Waiting ",Jo(A.cumulativeMs.waiting_for_user)]})]})})]})}):c.jsx("div",{className:"flex-1 min-w-0"}),c.jsx("div",{className:"flex items-center flex-shrink-0 border border-border rounded-2xl backdrop-blur-lg",children:c.jsx(Ebe,{socket:D,onOpenChat:L})}),i&&(d||o||l)?c.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[d?c.jsx("div",{className:"hidden py-0.5 md:block border border-border rounded-2xl backdrop-blur-lg",children:c.jsx(fbe,{isMac:V,editorPreset:h,editorCommandTemplate:p,finderShortcut:v,editorShortcut:b,onOpenExternal:d})}):null,o||l?c.jsxs("div",{className:"flex items-center border border-border rounded-2xl px-2 py-0.5 backdrop-blur-lg",children:[c.jsx(Rbe,{showOnDesktop:a,onToggleEmbeddedTerminal:o}),o?c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:o,"aria-label":"Toggle terminal","aria-pressed":s,className:fe(a?"hidden":"hidden md:flex","border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",s&&"text-foreground"),children:c.jsx(gC,{strokeWidth:2,className:"h-4.5"})})}),c.jsx(Tb,{side:"bottom",shortcut:x})]}):null,I&&H&&z?c.jsx(gve,{chatId:I,shares:$??[],open:K,onOpenChange:W,trigger:c.jsx(fve,{}),onMint:H,onRevoke:z}):null,l?c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsxs(Me,{variant:"ghost",onClick:l,className:fe("border flex flex-row items-center gap-1.5 h-9 border-border/0 pl-1.5 pr-2 hover:!border-border/0 hover:!bg-transparent",a&&"text-foreground"),children:[a?c.jsx(Doe,{strokeWidth:2.25,className:"h-4"}):c.jsx(Cc,{strokeWidth:2.25,className:"h-4"}),F&&!a?c.jsx("div",{className:"text-[13px] font-mono max-w-[280px] truncate hidden md:block",children:F}):null]})}),c.jsx(Tb,{side:"bottom",shortcut:S})]}):null]}):null]}):null]}),M&&M.length>1&&c.jsx(vve,{bindings:M,provider:j??null,onOpenPath:P})]})}var CN={exports:{}},kN={};/**
|
|
775
|
+
`},Xpe={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Jpe(e){let{announcements:t=Xpe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=Ype}=e;const{announce:s,announcement:o}=Kpe(),a=Kx("DndLiveRegion"),[l,d]=_.useState(!1);if(_.useEffect(()=>{d(!0)},[]),Gpe(_.useMemo(()=>({onDragStart(p){let{active:m}=p;s(t.onDragStart({active:m}))},onDragMove(p){let{active:m,over:v}=p;t.onDragMove&&s(t.onDragMove({active:m,over:v}))},onDragOver(p){let{active:m,over:v}=p;s(t.onDragOver({active:m,over:v}))},onDragEnd(p){let{active:m,over:v}=p;s(t.onDragEnd({active:m,over:v}))},onDragCancel(p){let{active:m,over:v}=p;s(t.onDragCancel({active:m,over:v}))}}),[s,t])),!l)return null;const h=$n.createElement($n.Fragment,null,$n.createElement(Wpe,{id:r,value:i.draggable}),$n.createElement(Vpe,{id:a,announcement:o}));return n?As.createPortal(h,n):h}var vi;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(vi||(vi={}));function nw(){}function gN(e,t){return _.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Zpe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _.useMemo(()=>[...t].filter(r=>r!=null),[...t])}const Wa=Object.freeze({x:0,y:0});function Qpe(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function eme(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function tme(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function nme(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function R$(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const M$=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=R$(t,t.left,t.top),s=[];for(const o of r){const{id:a}=o,l=n.get(a);if(l){const d=Qpe(R$(l),i);s.push({id:a,data:{droppableContainer:o,value:d}})}}return s.sort(eme)};function rme(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),s=Math.min(t.top+t.height,e.top+e.height),o=i-r,a=s-n;if(r<i&&n<s){const l=t.width*t.height,d=e.width*e.height,h=o*a,p=h/(l+d-h);return Number(p.toFixed(4))}return 0}const ime=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=[];for(const s of r){const{id:o}=s,a=n.get(o);if(a){const l=rme(a,t);l>0&&i.push({id:o,data:{droppableContainer:s,value:l}})}}return i.sort(tme)};function sme(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function bW(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Wa}function ome(e){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s<r;s++)i[s-1]=arguments[s];return i.reduce((o,a)=>({...o,top:o.top+e*a.y,bottom:o.bottom+e*a.y,left:o.left+e*a.x,right:o.right+e*a.x}),{...n})}}const ame=ome(1);function lme(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function cme(e,t,n){const r=lme(t);if(!r)return e;const{scaleX:i,scaleY:s,x:o,y:a}=r,l=e.left-o-(1-i)*parseFloat(n),d=e.top-a-(1-s)*parseFloat(n.slice(n.indexOf(" ")+1)),h=i?e.width/i:e.width,p=s?e.height/s:e.height;return{width:h,height:p,top:d,right:l+h,bottom:d+p,left:l}}const ume={ignoreTransform:!1};function ig(e,t){t===void 0&&(t=ume);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:d,transformOrigin:h}=oo(e).getComputedStyle(e);d&&(n=cme(n,d,h))}const{top:r,left:i,width:s,height:o,bottom:a,right:l}=n;return{top:r,left:i,width:s,height:o,bottom:a,right:l}}function j$(e){return ig(e,{ignoreTransform:!0})}function dme(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function fme(e,t){return t===void 0&&(t=oo(e).getComputedStyle(e)),t.position==="fixed"}function hme(e,t){t===void 0&&(t=oo(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const s=t[i];return typeof s=="string"?n.test(s):!1})}function Zj(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(Yj(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Wx(i)||mW(i)||n.includes(i))return n;const s=oo(e).getComputedStyle(i);return i!==e&&hme(i,s)&&n.push(i),fme(i,s)?n:r(i.parentNode)}return e?r(e):n}function xW(e){const[t]=Zj(e,1);return t??null}function vN(e){return!OC||!e?null:ng(e)?e:qj(e)?Yj(e)||e===rg(e).scrollingElement?window:Wx(e)?e:null:null}function yW(e){return ng(e)?e.scrollX:e.scrollLeft}function _W(e){return ng(e)?e.scrollY:e.scrollTop}function I2(e){return{x:yW(e),y:_W(e)}}var ji;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(ji||(ji={}));function SW(e){return!OC||!e?!1:e===document.scrollingElement}function wW(e){const t={x:0,y:0},n=SW(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},i=e.scrollTop<=t.y,s=e.scrollLeft<=t.x,o=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:i,isLeft:s,isBottom:o,isRight:a,maxScroll:r,minScroll:t}}const pme={x:.2,y:.2};function mme(e,t,n,r,i){let{top:s,left:o,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=pme);const{isTop:d,isBottom:h,isLeft:p,isRight:m}=wW(e),v={x:0,y:0},b={x:0,y:0},x={height:t.height*i.y,width:t.width*i.x};return!d&&s<=t.top+x.height?(v.y=ji.Backward,b.y=r*Math.abs((t.top+x.height-s)/x.height)):!h&&l>=t.bottom-x.height&&(v.y=ji.Forward,b.y=r*Math.abs((t.bottom-x.height-l)/x.height)),!m&&a>=t.right-x.width?(v.x=ji.Forward,b.x=r*Math.abs((t.right-x.width-a)/x.width)):!p&&o<=t.left+x.width&&(v.x=ji.Backward,b.x=r*Math.abs((t.left+x.width-o)/x.width)),{direction:v,speed:b}}function gme(e){if(e===document.scrollingElement){const{innerWidth:s,innerHeight:o}=window;return{top:0,left:0,right:s,bottom:o,width:s,height:o}}const{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function CW(e){return e.reduce((t,n)=>em(t,I2(n)),Wa)}function vme(e){return e.reduce((t,n)=>t+yW(n),0)}function bme(e){return e.reduce((t,n)=>t+_W(n),0)}function xme(e,t){if(t===void 0&&(t=ig),!e)return;const{top:n,left:r,bottom:i,right:s}=t(e);xW(e)&&(i<=0||s<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const yme=[["x",["left","right"],vme],["y",["top","bottom"],bme]];class Qj{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Zj(n),i=CW(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[s,o,a]of yme)for(const l of o)Object.defineProperty(this,l,{get:()=>{const d=a(r),h=i[s]-d;return this.rect[l]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class tb{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var i;(i=this.target)==null||i.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function _me(e){const{EventTarget:t}=oo(e);return e instanceof t?e:rg(e)}function bN(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var Yo;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Yo||(Yo={}));function I$(e){e.preventDefault()}function Sme(e){e.stopPropagation()}var Un;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(Un||(Un={}));const kW={start:[Un.Space,Un.Enter],cancel:[Un.Esc],end:[Un.Space,Un.Enter,Un.Tab]},wme=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Un.Right:return{...n,x:n.x+25};case Un.Left:return{...n,x:n.x-25};case Un.Down:return{...n,y:n.y+25};case Un.Up:return{...n,y:n.y-25}}};class eI{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new tb(rg(n)),this.windowListeners=new tb(oo(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Yo.Resize,this.handleCancel),this.windowListeners.add(Yo.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Yo.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&xme(r),n(Wa)}handleKeyDown(t){if(Jj(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:s=kW,coordinateGetter:o=wme,scrollBehavior:a="smooth"}=i,{code:l}=t;if(s.end.includes(l)){this.handleEnd(t);return}if(s.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Wa;this.referenceCoordinates||(this.referenceCoordinates=h);const p=o(t,{active:n,context:r.current,currentCoordinates:h});if(p){const m=tw(p,h),v={x:0,y:0},{scrollableAncestors:b}=r.current;for(const x of b){const S=t.code,{isTop:C,isRight:k,isLeft:w,isBottom:N,maxScroll:A,minScroll:T}=wW(x),M=gme(x),j={x:Math.min(S===Un.Right?M.right-M.width/2:M.right,Math.max(S===Un.Right?M.left:M.left+M.width/2,p.x)),y:Math.min(S===Un.Down?M.bottom-M.height/2:M.bottom,Math.max(S===Un.Down?M.top:M.top+M.height/2,p.y))},P=S===Un.Right&&!k||S===Un.Left&&!w,D=S===Un.Down&&!N||S===Un.Up&&!C;if(P&&j.x!==p.x){const L=x.scrollLeft+m.x,I=S===Un.Right&&L<=A.x||S===Un.Left&&L>=T.x;if(I&&!m.y){x.scrollTo({left:L,behavior:a});return}I?v.x=x.scrollLeft-L:v.x=S===Un.Right?x.scrollLeft-A.x:x.scrollLeft-T.x,v.x&&x.scrollBy({left:-v.x,behavior:a});break}else if(D&&j.y!==p.y){const L=x.scrollTop+m.y,I=S===Un.Down&&L<=A.y||S===Un.Up&&L>=T.y;if(I&&!m.x){x.scrollTo({top:L,behavior:a});return}I?v.y=x.scrollTop-L:v.y=S===Un.Down?x.scrollTop-A.y:x.scrollTop-T.y,v.y&&x.scrollBy({top:-v.y,behavior:a});break}}this.handleMove(t,em(tw(p,this.referenceCoordinates),v))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}eI.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=kW,onActivation:i}=t,{active:s}=n;const{code:o}=e.nativeEvent;if(r.start.includes(o)){const a=s.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),i==null||i({event:e.nativeEvent}),!0)}return!1}}];function P$(e){return!!(e&&"distance"in e)}function L$(e){return!!(e&&"delay"in e)}class tI{constructor(t,n,r){var i;r===void 0&&(r=_me(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:s}=t,{target:o}=s;this.props=t,this.events=n,this.document=rg(o),this.documentListeners=new tb(this.document),this.listeners=new tb(r),this.windowListeners=new tb(oo(o)),this.initialCoordinates=(i=j2(s))!=null?i:Wa,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(Yo.Resize,this.handleCancel),this.windowListeners.add(Yo.DragStart,I$),this.windowListeners.add(Yo.VisibilityChange,this.handleCancel),this.windowListeners.add(Yo.ContextMenu,I$),this.documentListeners.add(Yo.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(L$(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(P$(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:i}=this.props;i(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(Yo.Click,Sme,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Yo.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:i,props:s}=this,{onMove:o,options:{activationConstraint:a}}=s;if(!i)return;const l=(n=j2(t))!=null?n:Wa,d=tw(i,l);if(!r&&a){if(P$(a)){if(a.tolerance!=null&&bN(d,a.tolerance))return this.handleCancel();if(bN(d,a.distance))return this.handleStart()}if(L$(a)&&bN(d,a.tolerance))return this.handleCancel();this.handlePending(a,d);return}t.cancelable&&t.preventDefault(),o(l)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===Un.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const Cme={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class EW extends tI{constructor(t){const{event:n}=t,r=rg(n.target);super(t,Cme,r)}}EW.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const kme={move:{name:"mousemove"},end:{name:"mouseup"}};var P2;(function(e){e[e.RightClick=2]="RightClick"})(P2||(P2={}));class NW extends tI{constructor(t){super(t,kme,rg(t.event.target))}}NW.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===P2.RightClick?!1:(r==null||r({event:n}),!0)}}];const xN={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class TW extends tI{constructor(t){super(t,xN)}static setup(){return window.addEventListener(xN.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(xN.move.name,t)};function t(){}}}TW.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:i}=n;return i.length>1?!1:(r==null||r({event:n}),!0)}}];var nb;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(nb||(nb={}));var rw;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(rw||(rw={}));function Eme(e){let{acceleration:t,activator:n=nb.Pointer,canScroll:r,draggingRect:i,enabled:s,interval:o=5,order:a=rw.TreeOrder,pointerCoordinates:l,scrollableAncestors:d,scrollableAncestorRects:h,delta:p,threshold:m}=e;const v=Tme({delta:p,disabled:!s}),[b,x]=zpe(),S=_.useRef({x:0,y:0}),C=_.useRef({x:0,y:0}),k=_.useMemo(()=>{switch(n){case nb.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case nb.DraggableRect:return i}},[n,i,l]),w=_.useRef(null),N=_.useCallback(()=>{const T=w.current;if(!T)return;const M=S.current.x*C.current.x,j=S.current.y*C.current.y;T.scrollBy(M,j)},[]),A=_.useMemo(()=>a===rw.TreeOrder?[...d].reverse():d,[a,d]);_.useEffect(()=>{if(!s||!d.length||!k){x();return}for(const T of A){if((r==null?void 0:r(T))===!1)continue;const M=d.indexOf(T),j=h[M];if(!j)continue;const{direction:P,speed:D}=mme(T,j,k,t,m);for(const L of["x","y"])v[L][P[L]]||(D[L]=0,P[L]=0);if(D.x>0||D.y>0){x(),w.current=T,b(N,o),S.current=D,C.current=P;return}}S.current={x:0,y:0},C.current={x:0,y:0},x()},[t,N,r,x,s,o,JSON.stringify(k),JSON.stringify(v),b,d,A,h,JSON.stringify(m)])}const Nme={x:{[ji.Backward]:!1,[ji.Forward]:!1},y:{[ji.Backward]:!1,[ji.Forward]:!1}};function Tme(e){let{delta:t,disabled:n}=e;const r=M2(t);return Vx(i=>{if(n||!r||!i)return Nme;const s={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[ji.Backward]:i.x[ji.Backward]||s.x===-1,[ji.Forward]:i.x[ji.Forward]||s.x===1},y:{[ji.Backward]:i.y[ji.Backward]||s.y===-1,[ji.Forward]:i.y[ji.Forward]||s.y===1}}},[n,t,r])}function Ame(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return Vx(i=>{var s;return t==null?null:(s=r??i)!=null?s:null},[r,t])}function Rme(e,t){return _.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,s=i.activators.map(o=>({eventName:o.eventName,handler:t(o.handler,r)}));return[...n,...s]},[]),[e,t])}var Ib;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Ib||(Ib={}));var L2;(function(e){e.Optimized="optimized"})(L2||(L2={}));const O$=new Map;function Mme(e,t){let{dragging:n,dependencies:r,config:i}=t;const[s,o]=_.useState(null),{frequency:a,measure:l,strategy:d}=i,h=_.useRef(e),p=S(),m=Mb(p),v=_.useCallback(function(C){C===void 0&&(C=[]),!m.current&&o(k=>k===null?C:k.concat(C.filter(w=>!k.includes(w))))},[m]),b=_.useRef(null),x=Vx(C=>{if(p&&!n)return O$;if(!C||C===O$||h.current!==e||s!=null){const k=new Map;for(let w of e){if(!w)continue;if(s&&s.length>0&&!s.includes(w.id)&&w.rect.current){k.set(w.id,w.rect.current);continue}const N=w.node.current,A=N?new Qj(l(N),N):null;w.rect.current=A,A&&k.set(w.id,A)}return k}return C},[e,s,n,p,l]);return _.useEffect(()=>{h.current=e},[e]),_.useEffect(()=>{p||v()},[n,p]),_.useEffect(()=>{s&&s.length>0&&o(null)},[JSON.stringify(s)]),_.useEffect(()=>{p||typeof a!="number"||b.current!==null||(b.current=setTimeout(()=>{v(),b.current=null},a))},[a,p,v,...r]),{droppableRects:x,measureDroppableContainers:v,measuringScheduled:s!=null};function S(){switch(d){case Ib.Always:return!1;case Ib.BeforeDragging:return n;default:return!n}}}function AW(e,t){return Vx(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function jme(e,t){return AW(e,t)}function Ime(e){let{callback:t,disabled:n}=e;const r=Xj(t),i=_.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:s}=window;return new s(r)},[r,n]);return _.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function DC(e){let{callback:t,disabled:n}=e;const r=Xj(t),i=_.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:s}=window;return new s(r)},[n]);return _.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function Pme(e){return new Qj(ig(e),e)}function D$(e,t,n){t===void 0&&(t=Pme);const[r,i]=_.useState(null);function s(){i(l=>{if(!e)return null;if(e.isConnected===!1){var d;return(d=l??n)!=null?d:null}const h=t(e);return JSON.stringify(l)===JSON.stringify(h)?l:h})}const o=Ime({callback(l){if(e)for(const d of l){const{type:h,target:p}=d;if(h==="childList"&&p instanceof HTMLElement&&p.contains(e)){s();break}}}}),a=DC({callback:s});return Ml(()=>{s(),e?(a==null||a.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(a==null||a.disconnect(),o==null||o.disconnect())},[e]),r}function Lme(e){const t=AW(e);return bW(e,t)}const $$=[];function Ome(e){const t=_.useRef(e),n=Vx(r=>e?r&&r!==$$&&e&&t.current&&e.parentNode===t.current.parentNode?r:Zj(e):$$,[e]);return _.useEffect(()=>{t.current=e},[e]),n}function Dme(e){const[t,n]=_.useState(null),r=_.useRef(e),i=_.useCallback(s=>{const o=vN(s.target);o&&n(a=>a?(a.set(o,I2(o)),new Map(a)):null)},[]);return _.useEffect(()=>{const s=r.current;if(e!==s){o(s);const a=e.map(l=>{const d=vN(l);return d?(d.addEventListener("scroll",i,{passive:!0}),[d,I2(d)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{o(e),o(s)};function o(a){a.forEach(l=>{const d=vN(l);d==null||d.removeEventListener("scroll",i)})}},[i,e]),_.useMemo(()=>e.length?t?Array.from(t.values()).reduce((s,o)=>em(s,o),Wa):CW(e):Wa,[e,t])}function z$(e,t){t===void 0&&(t=[]);const n=_.useRef(null);return _.useEffect(()=>{n.current=null},t),_.useEffect(()=>{const r=e!==Wa;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?tw(e,n.current):Wa}function $me(e){_.useEffect(()=>{if(!OC)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function zme(e,t){return _.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:s}=r;return n[i]=o=>{s(o,t)},n},{}),[e,t])}function RW(e){return _.useMemo(()=>e?dme(e):null,[e])}const B$=[];function Bme(e,t){t===void 0&&(t=ig);const[n]=e,r=RW(n?oo(n):null),[i,s]=_.useState(B$);function o(){s(()=>e.length?e.map(l=>SW(l)?r:new Qj(t(l),l)):B$)}const a=DC({callback:o});return Ml(()=>{a==null||a.disconnect(),o(),e.forEach(l=>a==null?void 0:a.observe(l))},[e]),i}function Fme(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Wx(t)?t:e}function Ume(e){let{measure:t}=e;const[n,r]=_.useState(null),i=_.useCallback(d=>{for(const{target:h}of d)if(Wx(h)){r(p=>{const m=t(h);return p?{...p,width:m.width,height:m.height}:m});break}},[t]),s=DC({callback:i}),o=_.useCallback(d=>{const h=Fme(d);s==null||s.disconnect(),h&&(s==null||s.observe(h)),r(h?t(h):null)},[t,s]),[a,l]=ew(o);return _.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const Hme=[{sensor:EW,options:{}},{sensor:eI,options:{}}],Wme={current:{}},rS={draggable:{measure:j$},droppable:{measure:j$,strategy:Ib.WhileDragging,frequency:L2.Optimized},dragOverlay:{measure:ig}};class rb extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const Vme={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new rb,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:nw},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:rS,measureDroppableContainers:nw,windowRect:null,measuringScheduled:!1},Kme={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:nw,draggableNodes:new Map,over:null,measureDroppableContainers:nw},$C=_.createContext(Kme),MW=_.createContext(Vme);function Gme(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new rb}}}function qme(e,t){switch(t.type){case vi.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case vi.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case vi.DragEnd:case vi.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case vi.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new rb(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case vi.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=t,s=e.droppable.containers.get(n);if(!s||r!==s.key)return e;const o=new rb(e.droppable.containers);return o.set(n,{...s,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case vi.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const s=new rb(e.droppable.containers);return s.delete(n),{...e,droppable:{...e.droppable,containers:s}}}default:return e}}function Yme(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=_.useContext($C),s=M2(r),o=M2(n==null?void 0:n.id);return _.useEffect(()=>{if(!t&&!r&&s&&o!=null){if(!Jj(s)||document.activeElement===s.target)return;const a=i.get(o);if(!a)return;const{activatorNode:l,node:d}=a;if(!l.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[l.current,d.current]){if(!h)continue;const p=Upe(h);if(p){p.focus();break}}})}},[r,t,i,o,s]),null}function Xme(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,s)=>s({transform:i,...r}),n):n}function Jme(e){return _.useMemo(()=>({draggable:{...rS.draggable,...e==null?void 0:e.draggable},droppable:{...rS.droppable,...e==null?void 0:e.droppable},dragOverlay:{...rS.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function Zme(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const s=_.useRef(!1),{x:o,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Ml(()=>{if(!o&&!a||!t){s.current=!1;return}if(s.current||!r)return;const d=t==null?void 0:t.node.current;if(!d||d.isConnected===!1)return;const h=n(d),p=bW(h,r);if(o||(p.x=0),a||(p.y=0),s.current=!0,Math.abs(p.x)>0||Math.abs(p.y)>0){const m=xW(d);m&&m.scrollBy({top:p.y,left:p.x})}},[t,o,a,r,n])}const jW=_.createContext({...Wa,scaleX:1,scaleY:1});var Xu;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Xu||(Xu={}));const Qme=_.memo(function(t){var n,r,i,s;let{id:o,accessibility:a,autoScroll:l=!0,children:d,sensors:h=Hme,collisionDetection:p=ime,measuring:m,modifiers:v,...b}=t;const x=_.useReducer(qme,void 0,Gme),[S,C]=x,[k,w]=qpe(),[N,A]=_.useState(Xu.Uninitialized),T=N===Xu.Initialized,{draggable:{active:M,nodes:j,translate:P},droppable:{containers:D}}=S,L=M!=null?j.get(M):null,I=_.useRef({initial:null,translated:null}),$=_.useMemo(()=>{var Et;return M!=null?{id:M,data:(Et=L==null?void 0:L.data)!=null?Et:Wme,rect:I}:null},[M,L]),H=_.useRef(null),[z,F]=_.useState(null),[K,W]=_.useState(null),V=Mb(b,Object.values(b)),X=Kx("DndDescribedBy",o),G=_.useMemo(()=>D.getEnabled(),[D]),te=Jme(m),{droppableRects:oe,measureDroppableContainers:ce,measuringScheduled:de}=Mme(G,{dragging:T,dependencies:[P.x,P.y],config:te.droppable}),ee=Ame(j,M),ne=_.useMemo(()=>K?j2(K):null,[K]),ie=Bt(),ae=jme(ee,te.draggable.measure);Zme({activeNode:M!=null?j.get(M):null,config:ie.layoutShiftCompensation,initialRect:ae,measure:te.draggable.measure});const Q=D$(ee,te.draggable.measure,ae),ke=D$(ee?ee.parentElement:null),we=_.useRef({activatorEvent:null,active:null,activeNode:ee,collisionRect:null,collisions:null,droppableRects:oe,draggableNodes:j,draggingNode:null,draggingNodeRect:null,droppableContainers:D,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ae=D.getNodeFor((n=we.current.over)==null?void 0:n.id),Xe=Ume({measure:te.dragOverlay.measure}),ft=(r=Xe.nodeRef.current)!=null?r:ee,Ct=T?(i=Xe.rect)!=null?i:Q:null,ln=!!(Xe.nodeRef.current&&Xe.rect),en=Lme(ln?null:Q),bt=RW(ft?oo(ft):null),fn=Ome(T?Ae??ee:null),qe=Bme(fn),Ht=Xme(v,{transform:{x:P.x-en.x,y:P.y-en.y,scaleX:1,scaleY:1},activatorEvent:K,active:$,activeNodeRect:Q,containerNodeRect:ke,draggingNodeRect:Ct,over:we.current.over,overlayNodeRect:Xe.rect,scrollableAncestors:fn,scrollableAncestorRects:qe,windowRect:bt}),cn=ne?em(ne,P):null,wt=Dme(fn),zt=z$(wt),tn=z$(wt,[Q]),Yt=em(Ht,zt),Kt=Ct?ame(Ct,Ht):null,sn=$&&Kt?p({active:$,collisionRect:Kt,droppableRects:oe,droppableContainers:G,pointerCoordinates:cn}):null,Nn=nme(sn,"id"),[Ue,un]=_.useState(null),wn=ln?Ht:em(Ht,tn),kt=sme(wn,(s=Ue==null?void 0:Ue.rect)!=null?s:null,Q),Xt=_.useRef(null),Ce=_.useCallback((Et,Lt)=>{let{sensor:nn,options:$t}=Lt;if(H.current==null)return;const re=j.get(H.current);if(!re)return;const je=Et.nativeEvent,ht=new nn({active:H.current,activeNode:re,event:je,options:$t,context:we,onAbort(We){if(!j.get(We))return;const{onDragAbort:Je}=V.current,pt={id:We};Je==null||Je(pt),k({type:"onDragAbort",event:pt})},onPending(We,Ke,Je,pt){if(!j.get(We))return;const{onDragPending:xt}=V.current,Be={id:We,constraint:Ke,initialCoordinates:Je,offset:pt};xt==null||xt(Be),k({type:"onDragPending",event:Be})},onStart(We){const Ke=H.current;if(Ke==null)return;const Je=j.get(Ke);if(!Je)return;const{onDragStart:pt}=V.current,Ot={activatorEvent:je,active:{id:Ke,data:Je.data,rect:I}};As.unstable_batchedUpdates(()=>{pt==null||pt(Ot),A(Xu.Initializing),C({type:vi.DragStart,initialCoordinates:We,active:Ke}),k({type:"onDragStart",event:Ot}),F(Xt.current),W(je)})},onMove(We){C({type:vi.DragMove,coordinates:We})},onEnd:Ne(vi.DragEnd),onCancel:Ne(vi.DragCancel)});Xt.current=ht;function Ne(We){return async function(){const{active:Je,collisions:pt,over:Ot,scrollAdjustedTranslate:xt}=we.current;let Be=null;if(Je&&xt){const{cancelDrop:Ft}=V.current;Be={activatorEvent:je,active:Je,collisions:pt,delta:xt,over:Ot},We===vi.DragEnd&&typeof Ft=="function"&&await Promise.resolve(Ft(Be))&&(We=vi.DragCancel)}H.current=null,As.unstable_batchedUpdates(()=>{C({type:We}),A(Xu.Uninitialized),un(null),F(null),W(null),Xt.current=null;const Ft=We===vi.DragEnd?"onDragEnd":"onDragCancel";if(Be){const Ln=V.current[Ft];Ln==null||Ln(Be),k({type:Ft,event:Be})}})}}},[j]),rt=_.useCallback((Et,Lt)=>(nn,$t)=>{const re=nn.nativeEvent,je=j.get($t);if(H.current!==null||!je||re.dndKit||re.defaultPrevented)return;const ht={active:je};Et(nn,Lt.options,ht)===!0&&(re.dndKit={capturedBy:Lt.sensor},H.current=$t,Ce(nn,Lt))},[j,Ce]),gt=Rme(h,rt);$me(h),Ml(()=>{Q&&N===Xu.Initializing&&A(Xu.Initialized)},[Q,N]),_.useEffect(()=>{const{onDragMove:Et}=V.current,{active:Lt,activatorEvent:nn,collisions:$t,over:re}=we.current;if(!Lt||!nn)return;const je={active:Lt,activatorEvent:nn,collisions:$t,delta:{x:Yt.x,y:Yt.y},over:re};As.unstable_batchedUpdates(()=>{Et==null||Et(je),k({type:"onDragMove",event:je})})},[Yt.x,Yt.y]),_.useEffect(()=>{const{active:Et,activatorEvent:Lt,collisions:nn,droppableContainers:$t,scrollAdjustedTranslate:re}=we.current;if(!Et||H.current==null||!Lt||!re)return;const{onDragOver:je}=V.current,ht=$t.get(Nn),Ne=ht&&ht.rect.current?{id:ht.id,rect:ht.rect.current,data:ht.data,disabled:ht.disabled}:null,We={active:Et,activatorEvent:Lt,collisions:nn,delta:{x:re.x,y:re.y},over:Ne};As.unstable_batchedUpdates(()=>{un(Ne),je==null||je(We),k({type:"onDragOver",event:We})})},[Nn]),Ml(()=>{we.current={activatorEvent:K,active:$,activeNode:ee,collisionRect:Kt,collisions:sn,droppableRects:oe,draggableNodes:j,draggingNode:ft,draggingNodeRect:Ct,droppableContainers:D,over:Ue,scrollableAncestors:fn,scrollAdjustedTranslate:Yt},I.current={initial:Ct,translated:Kt}},[$,ee,sn,Kt,j,ft,Ct,oe,D,Ue,fn,Yt]),Eme({...ie,delta:P,draggingRect:Kt,pointerCoordinates:cn,scrollableAncestors:fn,scrollableAncestorRects:qe});const it=_.useMemo(()=>({active:$,activeNode:ee,activeNodeRect:Q,activatorEvent:K,collisions:sn,containerNodeRect:ke,dragOverlay:Xe,draggableNodes:j,droppableContainers:D,droppableRects:oe,over:Ue,measureDroppableContainers:ce,scrollableAncestors:fn,scrollableAncestorRects:qe,measuringConfiguration:te,measuringScheduled:de,windowRect:bt}),[$,ee,Q,K,sn,ke,Xe,j,D,oe,Ue,ce,fn,qe,te,de,bt]),jt=_.useMemo(()=>({activatorEvent:K,activators:gt,active:$,activeNodeRect:Q,ariaDescribedById:{draggable:X},dispatch:C,draggableNodes:j,over:Ue,measureDroppableContainers:ce}),[K,gt,$,Q,C,X,j,Ue,ce]);return $n.createElement(vW.Provider,{value:w},$n.createElement($C.Provider,{value:jt},$n.createElement(MW.Provider,{value:it},$n.createElement(jW.Provider,{value:kt},d)),$n.createElement(Yme,{disabled:(a==null?void 0:a.restoreFocus)===!1})),$n.createElement(Jpe,{...a,hiddenTextDescribedById:X}));function Bt(){const Et=(z==null?void 0:z.autoScrollEnabled)===!1,Lt=typeof l=="object"?l.enabled===!1:l===!1,nn=T&&!Et&&!Lt;return typeof l=="object"?{...l,enabled:nn}:{enabled:nn}}}),ege=_.createContext(null),F$="button",tge="Draggable";function nge(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const s=Kx(tge),{activators:o,activatorEvent:a,active:l,activeNodeRect:d,ariaDescribedById:h,draggableNodes:p,over:m}=_.useContext($C),{role:v=F$,roleDescription:b="draggable",tabIndex:x=0}=i??{},S=(l==null?void 0:l.id)===t,C=_.useContext(S?jW:ege),[k,w]=ew(),[N,A]=ew(),T=zme(o,t),M=Mb(n);Ml(()=>(p.set(t,{id:t,key:s,node:k,activatorNode:N,data:M}),()=>{const P=p.get(t);P&&P.key===s&&p.delete(t)}),[p,t]);const j=_.useMemo(()=>({role:v,tabIndex:x,"aria-disabled":r,"aria-pressed":S&&v===F$?!0:void 0,"aria-roledescription":b,"aria-describedby":h.draggable}),[r,v,x,S,b,h.draggable]);return{active:l,activatorEvent:a,activeNodeRect:d,attributes:j,isDragging:S,listeners:r?void 0:T,node:k,over:m,setNodeRef:w,setActivatorNodeRef:A,transform:C}}function rge(){return _.useContext(MW)}const ige="Droppable",sge={timeout:25};function oge(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const s=Kx(ige),{active:o,dispatch:a,over:l,measureDroppableContainers:d}=_.useContext($C),h=_.useRef({disabled:n}),p=_.useRef(!1),m=_.useRef(null),v=_.useRef(null),{disabled:b,updateMeasurementsFor:x,timeout:S}={...sge,...i},C=Mb(x??r),k=_.useCallback(()=>{if(!p.current){p.current=!0;return}v.current!=null&&clearTimeout(v.current),v.current=setTimeout(()=>{d(Array.isArray(C.current)?C.current:[C.current]),v.current=null},S)},[S]),w=DC({callback:k,disabled:b||!o}),N=_.useCallback((j,P)=>{w&&(P&&(w.unobserve(P),p.current=!1),j&&w.observe(j))},[w]),[A,T]=ew(N),M=Mb(t);return _.useEffect(()=>{!w||!A.current||(w.disconnect(),p.current=!1,w.observe(A.current))},[A,w]),_.useEffect(()=>(a({type:vi.RegisterDroppable,element:{id:r,key:s,disabled:n,node:A,rect:m,data:M}}),()=>a({type:vi.UnregisterDroppable,key:s,id:r})),[r]),_.useEffect(()=>{n!==h.current.disabled&&(a({type:vi.SetDroppableDisabled,id:r,key:s,disabled:n}),h.current.disabled=n)},[r,s,n,a]),{active:o,rect:m,isOver:(l==null?void 0:l.id)===r,node:A,over:l,setNodeRef:T}}function nI(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function age(e,t){return e.reduce((n,r,i)=>{const s=t.get(r);return s&&(n[i]=s),n},Array(e.length))}function W_(e){return e!==null&&e>=0}function lge(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function cge(e){return typeof e=="boolean"?{draggable:e,droppable:e}:e}const IW=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e;const s=nI(t,r,n),o=t[i],a=s[i];return!a||!o?null:{x:a.left-o.left,y:a.top-o.top,scaleX:a.width/o.width,scaleY:a.height/o.height}},V_={scaleX:1,scaleY:1},uge=e=>{var t;let{activeIndex:n,activeNodeRect:r,index:i,rects:s,overIndex:o}=e;const a=(t=s[n])!=null?t:r;if(!a)return null;if(i===n){const d=s[o];return d?{x:0,y:n<o?d.top+d.height-(a.top+a.height):d.top-a.top,...V_}:null}const l=dge(s,i,n);return i>n&&i<=o?{x:0,y:-a.height-l,...V_}:i<n&&i>=o?{x:0,y:a.height+l,...V_}:{x:0,y:0,...V_}};function dge(e,t,n){const r=e[t],i=e[t-1],s=e[t+1];return r?n<t?i?r.top-(i.top+i.height):s?s.top-(r.top+r.height):0:s?s.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}const PW="Sortable",LW=$n.createContext({activeIndex:-1,containerId:PW,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:IW,disabled:{draggable:!1,droppable:!1}});function fge(e){let{children:t,id:n,items:r,strategy:i=IW,disabled:s=!1}=e;const{active:o,dragOverlay:a,droppableRects:l,over:d,measureDroppableContainers:h}=rge(),p=Kx(PW,n),m=a.rect!==null,v=_.useMemo(()=>r.map(T=>typeof T=="object"&&"id"in T?T.id:T),[r]),b=o!=null,x=o?v.indexOf(o.id):-1,S=d?v.indexOf(d.id):-1,C=_.useRef(v),k=!lge(v,C.current),w=S!==-1&&x===-1||k,N=cge(s);Ml(()=>{k&&b&&h(v)},[k,v,b,h]),_.useEffect(()=>{C.current=v},[v]);const A=_.useMemo(()=>({activeIndex:x,containerId:p,disabled:N,disableTransforms:w,items:v,overIndex:S,useDragOverlay:m,sortedRects:age(v,l),strategy:i}),[x,p,N.draggable,N.droppable,w,v,S,l,m,i]);return $n.createElement(LW.Provider,{value:A},t)}const hge=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return nI(n,r,i).indexOf(t)},pge=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:s,newIndex:o,previousItems:a,previousContainerId:l,transition:d}=e;return!d||!r||a!==s&&i===o?!1:n?!0:o!==i&&t===l},mge={duration:200,easing:"ease"},OW="transform",gge=jb.Transition.toString({property:OW,duration:0,easing:"linear"}),vge={roleDescription:"sortable"};function bge(e){let{disabled:t,index:n,node:r,rect:i}=e;const[s,o]=_.useState(null),a=_.useRef(n);return Ml(()=>{if(!t&&n!==a.current&&r.current){const l=i.current;if(l){const d=ig(r.current,{ignoreTransform:!0}),h={x:l.left-d.left,y:l.top-d.top,scaleX:l.width/d.width,scaleY:l.height/d.height};(h.x||h.y)&&o(h)}}n!==a.current&&(a.current=n)},[t,n,r,i]),_.useEffect(()=>{s&&o(null)},[s]),s}function xge(e){let{animateLayoutChanges:t=pge,attributes:n,disabled:r,data:i,getNewIndex:s=hge,id:o,strategy:a,resizeObserverConfig:l,transition:d=mge}=e;const{items:h,containerId:p,activeIndex:m,disabled:v,disableTransforms:b,sortedRects:x,overIndex:S,useDragOverlay:C,strategy:k}=_.useContext(LW),w=yge(r,v),N=h.indexOf(o),A=_.useMemo(()=>({sortable:{containerId:p,index:N,items:h},...i}),[p,i,N,h]),T=_.useMemo(()=>h.slice(h.indexOf(o)),[h,o]),{rect:M,node:j,isOver:P,setNodeRef:D}=oge({id:o,data:A,disabled:w.droppable,resizeObserverConfig:{updateMeasurementsFor:T,...l}}),{active:L,activatorEvent:I,activeNodeRect:$,attributes:H,setNodeRef:z,listeners:F,isDragging:K,over:W,setActivatorNodeRef:V,transform:X}=nge({id:o,data:A,attributes:{...vge,...n},disabled:w.draggable}),G=$pe(D,z),te=!!L,oe=te&&!b&&W_(m)&&W_(S),ce=!C&&K,de=ce&&oe?X:null,ne=oe?de??(a??k)({rects:x,activeNodeRect:$,activeIndex:m,overIndex:S,index:N}):null,ie=W_(m)&&W_(S)?s({id:o,items:h,activeIndex:m,overIndex:S}):N,ae=L==null?void 0:L.id,Q=_.useRef({activeId:ae,items:h,newIndex:ie,containerId:p}),ke=h!==Q.current.items,we=t({active:L,containerId:p,isDragging:K,isSorting:te,id:o,index:N,items:h,newIndex:Q.current.newIndex,previousItems:Q.current.items,previousContainerId:Q.current.containerId,transition:d,wasDragging:Q.current.activeId!=null}),Ae=bge({disabled:!we,index:N,node:j,rect:M});return _.useEffect(()=>{te&&Q.current.newIndex!==ie&&(Q.current.newIndex=ie),p!==Q.current.containerId&&(Q.current.containerId=p),h!==Q.current.items&&(Q.current.items=h)},[te,ie,p,h]),_.useEffect(()=>{if(ae===Q.current.activeId)return;if(ae!=null&&Q.current.activeId==null){Q.current.activeId=ae;return}const ft=setTimeout(()=>{Q.current.activeId=ae},50);return()=>clearTimeout(ft)},[ae]),{active:L,activeIndex:m,attributes:H,data:A,rect:M,index:N,newIndex:ie,items:h,isOver:P,isSorting:te,isDragging:K,listeners:F,node:j,overIndex:S,over:W,setNodeRef:G,setActivatorNodeRef:V,setDroppableNodeRef:D,setDraggableNodeRef:z,transform:Ae??ne,transition:Xe()};function Xe(){if(Ae||ke&&Q.current.newIndex===N)return gge;if(!(ce&&!Jj(I)||!d)&&(te||we))return jb.Transition.toString({...d,property:OW})}}function yge(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e==null?void 0:e.draggable)!=null?n:t.draggable,droppable:(r=e==null?void 0:e.droppable)!=null?r:t.droppable}}Un.Down,Un.Right,Un.Up,Un.Left;const _ge=20;function Sge(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();e.currentTarget.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:t.left+t.width/2,clientY:t.bottom,view:window}))}function U$(e){return e.top+e.height/2}function wge({localPath:e,onNewLocalChat:t,isConnected:n,startingLocalPath:r}){const i=!n||r===e;return c.jsxs("button",{type:"button",disabled:i,title:n?"New Chat":`Start ${$r} to connect`,className:fe("group flex w-full items-center gap-2 pl-2 pr-1 py-1.5 rounded-md text-left cursor-pointer transition-colors duration-150","hover:bg-muted/40",i&&"cursor-not-allowed opacity-50"),onClick:()=>t(e),children:[c.jsx("span",{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),c.jsx("span",{className:"text-sm truncate flex-1 text-muted-foreground italic",children:"New Chat"})]})}function Cge({activeId:e,groupIds:t,collisionRect:n,droppableRects:r}){const i=t.indexOf(e);if(i===-1)return null;const s=r.get(e);if(!s)return null;const o=n.top+_ge;if(n.top>s.top){for(let a=t.length-1;a>i;a--){const l=r.get(t[a]);if(l&&o>=U$(l))return t[a]}return e}if(n.top<s.top){for(let a=0;a<i;a++){const l=r.get(t[a]);if(l&&o<=U$(l))return t[a]}return e}return e}const kge=_.memo(({group:e,editorLabel:t,collapsedSections:n,expandedGroups:r,onToggleSection:i,onToggleExpandedGroup:s,renderChatRow:o,onShowArchivedProject:a,onNewLocalChat:l,onCopyPath:d,onOpenExternalPath:h,onHideProject:p,onToggleStar:m,isConnected:v,startingLocalPath:b})=>{const{groupKey:x,localPath:S}=e,C=r.has(x),k=e.chats.length===0,w=e.olderChats.length>0,N=!!(p&&d&&h),{attributes:A,listeners:T,setNodeRef:M,setActivatorNodeRef:j,transform:P,transition:D,isDragging:L}=xge({id:x}),I={transform:jb.Translate.toString(P?{...P,x:0}:null),transition:L?void 0:D},$=c.jsxs("div",{className:fe("sticky top-0 bg-background dark:bg-card z-10 relative pl-2 pr-2 py-1 flex items-center gap-1 select-none",L&&"opacity-50"),children:[c.jsx("button",{ref:j,type:"button","aria-label":"Drag to reorder project",title:"Drag to reorder",className:fe("absolute left-0 top-1/2 -translate-y-1/2 flex h-6 w-4 items-center justify-center rounded-sm text-muted-foreground/60 cursor-grab active:cursor-grabbing touch-none transition-opacity duration-150","opacity-0 md:group-hover/section:opacity-100",L&&"opacity-100 cursor-grabbing"),...T,children:c.jsx(coe,{className:"size-3"})}),c.jsxs("button",{type:"button",onClick:()=>i(x),className:"flex items-center gap-1.5 min-w-0 flex-1 rounded-md py-0.5 text-left hover:bg-muted/30 transition-colors duration-150",children:[c.jsx(aa,{className:fe("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150 motion-reduce:transition-none",!n.has(x)&&"rotate-90")}),c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx("span",{className:"truncate min-w-0 text-[13px] font-semibold text-foreground/80",children:Lj(S)})}),c.jsx(Ms,{side:"right",sideOffset:4,children:S})]})]}),e.starredAt!==void 0&&c.jsx(N7,{className:"size-3 shrink-0 fill-amber-400 text-amber-400","aria-label":"Starred"}),(N||l)&&c.jsxs("div",{className:"flex items-center gap-px opacity-100 md:opacity-0 md:group-hover/section:opacity-100 transition-opacity duration-150",children:[N?c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",className:"size-6 rounded-sm text-muted-foreground hover:text-foreground",onClick:Sge,"aria-label":"Project options",children:c.jsx(wb,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:"More"})]}):null,l?c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",className:fe("size-6 rounded-sm text-muted-foreground hover:text-foreground",(!v||b===S)&&"opacity-50 cursor-not-allowed"),disabled:!v||b===S,onClick:H=>{H.stopPropagation(),l(S)},"aria-label":"New chat in this project",children:b===S?c.jsx(jn,{className:"size-3.5 animate-spin"}):c.jsx(aj,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:v?"New Chat":`Start ${$r} to connect`})]}):null]})]});return c.jsxs("div",{ref:M,style:I,className:fe("group/section mb-3",L&&"opacity-50 shadow-lg z-50 relative"),...A,children:[N?c.jsx(Npe,{editorLabel:t,starred:e.starredAt!==void 0,onCopyPath:()=>d==null?void 0:d(S),onShowArchived:()=>a==null?void 0:a(x),onOpenInFinder:()=>h==null?void 0:h("open_finder",S),onOpenInEditor:()=>h==null?void 0:h("open_editor",S),onToggleStar:()=>m==null?void 0:m(x,e.starredAt===void 0),onHide:()=>p==null?void 0:p(x),children:$}):$,!n.has(x)&&(k?!!l:e.previewChats.length>0||w)&&c.jsx("div",{className:"flex flex-col gap-px pl-1",children:k&&l?c.jsx(wge,{localPath:S,onNewLocalChat:l,isConnected:v,startingLocalPath:b}):c.jsxs(c.Fragment,{children:[e.previewChats.map(o),w&&C?c.jsx("button",{onClick:()=>s(x),className:"ml-6 mt-1 self-start px-2 py-0.5 text-[11px] text-muted-foreground hover:text-foreground rounded-md transition-colors duration-150",children:"Show less"}):null,C?e.olderChats.map(o):null,w&&!C?c.jsx("button",{onClick:()=>s(x),className:"ml-6 mt-1 self-start px-2 py-0.5 text-[11px] text-muted-foreground hover:text-foreground rounded-md transition-colors duration-150",children:"Show more"}):null]})})]})}),Ege=function({projectGroups:t,editorLabel:n,collapsedSections:r,expandedGroups:i,onToggleSection:s,onToggleExpandedGroup:o,renderChatRow:a,onShowArchivedProject:l,onNewLocalChat:d,onCopyPath:h,onOpenExternalPath:p,onHideProject:m,onToggleStar:v,onReorderGroups:b,isConnected:x,startingLocalPath:S}){const C=Zpe(gN(NW,{activationConstraint:{distance:2}}),gN(TW,{activationConstraint:{delay:250,tolerance:5}}),gN(eI)),k=_.useMemo(()=>t.map(A=>A.groupKey),[t]),w=_.useMemo(()=>A=>{const T=Cge({activeId:String(A.active.id),groupIds:k,collisionRect:A.collisionRect,droppableRects:A.droppableRects});if(!T)return M$(A);const M=A.droppableContainers.find(j=>j.id===T);return M?[{id:M.id,data:{droppableContainer:M,value:0}}]:M$(A)},[k]);function N(A){const{active:T,over:M}=A;if(M&&T.id!==M.id&&b){const j=k.indexOf(String(T.id)),P=k.indexOf(String(M.id));if(j!==-1&&P!==-1){const D=nI(k,j,P);b(D)}}}return c.jsx(Qme,{sensors:C,collisionDetection:w,onDragEnd:N,children:c.jsx(fge,{items:k,strategy:uge,children:t.map(A=>c.jsx(kge,{group:A,editorLabel:n,collapsedSections:r,expandedGroups:i,onToggleSection:s,onToggleExpandedGroup:o,renderChatRow:a,onShowArchivedProject:l,onNewLocalChat:d,onCopyPath:h,onOpenExternalPath:p,onHideProject:m,onToggleStar:v,isConnected:x,startingLocalPath:S},A.groupKey))})})},H$=_.memo(Ege);function Nge({stacks:e,projects:t,expandedStackIds:n,onToggleExpanded:r,onOpenCreatePanel:i,onOpenStackMenu:s,onDeleteStack:o,onStartChat:a,renderChatCreate:l,renderChatRow:d,chats:h}){const p=t.length>=2,m=new Map;for(const b of h){if(!b.stackId)continue;const x=m.get(b.stackId);x?x.push(b):m.set(b.stackId,[b])}function v(b,x){(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),r(b))}return c.jsxs("div",{className:"flex flex-col mb-3",children:[c.jsxs("div",{className:"pl-2 pr-2 pt-2 pb-1 flex items-center gap-1",children:[c.jsx("span",{className:"flex-1 min-w-0 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Stacks"}),c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"icon",type:"button",disabled:!p,onClick:i,className:"size-6 rounded-md text-muted-foreground hover:text-foreground","aria-label":"New stack",children:c.jsx(ro,{className:"size-3.5"})})}),c.jsx(Ms,{side:"right",sideOffset:4,children:p?"New stack":"Register a second project to create a stack"})]})]}),e.length===0?c.jsx("p",{className:"pl-2 pr-2 pb-2 text-xs leading-relaxed text-muted-foreground",children:"A stack groups projects so one chat can read and write across them. Add your first stack."}):c.jsx("div",{className:"flex flex-col gap-px",children:e.map((b,x)=>{const S=n.has(b.id),C=t.filter(w=>b.projectIds.includes(w.id)),k=c.jsxs("div",{className:"group/section pl-2 pr-2 py-1 flex items-center gap-1 select-none",children:[c.jsxs("div",{role:"button",tabIndex:0,className:"flex items-center gap-1.5 min-w-0 flex-1 rounded-md py-0.5 text-left hover:bg-muted/30 transition-colors duration-150 cursor-pointer",onClick:()=>r(b.id),onKeyDown:w=>v(b.id,w),children:[c.jsx(aa,{className:fe("size-3.5 shrink-0 text-muted-foreground transition-transform duration-150 motion-reduce:transition-none",S&&"rotate-90")}),c.jsx("span",{className:"truncate min-w-0 text-[13px] font-semibold text-foreground/80",children:b.title})]}),c.jsx("span",{className:"text-[11px] tabular-nums text-muted-foreground px-1.5 py-0.5 rounded bg-muted/60 shrink-0",children:b.memberCount}),o?c.jsx(Rpe,{stackTitle:b.title,onRename:()=>s(b.id),onEditMembers:()=>s(b.id),onDelete:()=>o(b.id),children:c.jsx(Me,{type:"button",variant:"ghost",size:"icon","aria-label":"Stack actions",className:"size-6 rounded-sm opacity-0 group-hover/section:opacity-100 focus-visible:opacity-100 data-[state=open]:opacity-100 transition-opacity duration-150",onClick:w=>w.stopPropagation(),children:c.jsx(wb,{className:"size-3.5"})})}):c.jsx(Me,{type:"button",variant:"ghost",size:"icon","aria-label":"Stack actions",className:"size-6 rounded-sm opacity-0 group-hover/section:opacity-100 transition-opacity duration-150",onClick:w=>{w.stopPropagation(),s(b.id)},children:c.jsx(wb,{className:"size-3.5"})})]});return c.jsxs("div",{children:[x>0?c.jsx("div",{"aria-hidden":!0,"data-testid":"stack-separator",className:"flex justify-center py-1.5 select-none",children:c.jsx("span",{className:"text-[10px] tracking-[0.6em] text-muted-foreground/40 pl-[0.6em] leading-none",children:"✦ ✦ ✦"})}):null,o?c.jsx(Mpe,{stackTitle:b.title,onRename:()=>s(b.id),onEditMembers:()=>s(b.id),onDelete:()=>o(b.id),children:k}):k,S&&c.jsxs("div",{className:"flex flex-col gap-px pb-1",children:[C.map(w=>c.jsx("div",{className:"pl-[28px] pr-2 py-1 text-[13px] text-muted-foreground truncate",children:w.title},w.id)),d&&(m.get(b.id)??[]).length>0&&c.jsx("div",{className:"flex flex-col mt-0.5 pl-1",children:(m.get(b.id)??[]).map(w=>d(w))}),a&&c.jsxs(Me,{type:"button",variant:"ghost",size:"sm",className:"ml-[28px] mt-1 self-start h-6 px-2 text-xs text-muted-foreground hover:text-foreground rounded-md",onClick:w=>{w.stopPropagation(),a(b.id)},children:[c.jsx(ro,{className:"size-3"})," New chat"]}),l?c.jsx("div",{className:"pl-[28px] pr-2 py-1",children:l(b)}):null]})]},b.id)})})]})}const Iv=qt("StackCreatePanel",e=>t=>({title:e.initialTitle,selectedIds:e.initialSelectedIds,setTitle:n=>t({title:n}),setSelectedIds:n=>t(r=>({selectedIds:n(r.selectedIds)}))}));function Tge({mode:e,projects:t,onSubmit:n,onCancel:r}){const i=_.useRef(null),s=Iv.useScopedStore(S=>S.title),o=Iv.useScopedStore(S=>S.selectedIds),a=Iv.useScopedStore(S=>S.setTitle),l=Iv.useScopedStore(S=>S.setSelectedIds),d=t.length>=2,h=!d||s.trim()===""||o.size<2,p=_.useCallback(S=>{l(C=>{const k=new Set(C);return k.has(S)?k.delete(S):k.add(S),k})},[l]),m=_.useCallback(async S=>{S.preventDefault(),!h&&await n(s.trim(),Array.from(o))},[h,n,s,o]),v=_.useCallback(S=>{S.key==="Escape"&&(S.preventDefault(),r())},[r]),b=_.useCallback(S=>{S.key==="Escape"&&r()},[r]),x=_.useCallback((S,C)=>{var k,w,N,A;if((S.metaKey||S.ctrlKey)&&S.key==="Enter")h||n(s.trim(),Array.from(o));else if(S.key==="ArrowRight"){const T=(k=i.current)==null?void 0:k.querySelectorAll("button");T&&((w=T[C+1])==null||w.focus())}else if(S.key==="ArrowLeft"){const T=(N=i.current)==null?void 0:N.querySelectorAll("button");T&&((A=T[C-1])==null||A.focus())}},[h,n,s,o]);return c.jsxs("form",{onSubmit:m,onKeyDown:v,className:"flex flex-col gap-2 px-2.5 py-2 border border-border rounded-lg bg-background",children:[c.jsx("input",{type:"text",value:s,onChange:S=>a(S.target.value),onKeyDown:b,placeholder:"Stack name","aria-label":"Stack name",autoFocus:!0,className:"w-full text-sm px-2 py-1 rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring"}),c.jsx("div",{ref:i,className:"flex flex-wrap gap-1",children:t.map((S,C)=>{const k=o.has(S.id);return c.jsx("button",{type:"button",onClick:()=>p(S.id),onKeyDown:w=>x(w,C),"aria-pressed":k,className:fe("rounded-full px-2 py-0.5 text-xs border transition-colors",k?"bg-primary text-primary-foreground border-primary":"border-border text-muted-foreground hover:border-foreground"),children:S.title},S.id)})}),!d&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Register a second project to create a stack"}),c.jsxs("div",{className:"flex gap-2 pt-1",children:[c.jsx(Me,{type:"submit",size:"sm",disabled:h,children:"Save"}),c.jsx(Me,{type:"button",size:"sm",variant:"ghost",onClick:r,children:"Cancel"})]})]})}function Age({mode:e,initialTitle:t,initialProjectIds:n,projects:r,onSubmit:i,onCancel:s}){return c.jsx(Iv.Provider,{init:{initialTitle:t??"",initialSelectedIds:new Set(n??[])},children:c.jsx(Tge,{mode:e,initialTitle:t,initialProjectIds:n,projects:r,onSubmit:i,onCancel:s})})}function Rge(e=640){const[t,n]=_.useState(()=>typeof window>"u"?!1:window.matchMedia(`(max-width: ${e}px)`).matches);return _.useEffect(()=>{const r=window.matchMedia(`(max-width: ${e}px)`),i=()=>n(r.matches);return r.addEventListener("change",i),()=>r.removeEventListener("change",i)},[e]),t}const dc=qt("StackChatCreateRow",e=>t=>({selectedWorktrees:e.initialSelectedWorktrees,primaryProjectId:e.initialPrimaryProjectId,isSubmitting:!1,errorMessage:null,setSelectedWorktrees:n=>t(r=>({selectedWorktrees:n(r.selectedWorktrees)})),setPrimaryProjectId:n=>t({primaryProjectId:n}),setIsSubmitting:n=>t({isSubmitting:n}),setErrorMessage:n=>t({errorMessage:n})}));function Mge({stack:e,projects:t,onCreate:n,onCancel:r}){const i=t.filter(w=>e.projectIds.includes(w.id)),s=Rge(),o=_.useId(),a=dc.useScopedStore(w=>w.selectedWorktrees),l=dc.useScopedStore(w=>w.primaryProjectId),d=dc.useScopedStore(w=>w.isSubmitting),h=dc.useScopedStore(w=>w.errorMessage),p=dc.useScopedStore(w=>w.setSelectedWorktrees),m=dc.useScopedStore(w=>w.setPrimaryProjectId),v=dc.useScopedStore(w=>w.setIsSubmitting),b=dc.useScopedStore(w=>w.setErrorMessage),x=i.length<=1,S=_.useCallback(async w=>{if(w.preventDefault(),!d){b(null),v(!0);try{const N=i.map(A=>{var M;const T=A.id===l?"primary":"additional";return{projectId:A.id,worktreePath:a.get(A.id)??((M=A.worktrees[0])==null?void 0:M.path)??"",role:T}});await n({primaryProjectId:l,stackBindings:N})}catch(N){b(N instanceof Error?N.message:"Could not create chat. Try again."),v(!1)}}},[i,a,l,n,d,b,v]),C=_.useCallback(w=>{w.key==="Escape"&&!d&&(w.preventDefault(),r())},[r,d]),k=c.jsx("form",{onSubmit:S,onKeyDown:C,"aria-busy":d,"aria-describedby":h?o:void 0,className:fe("flex flex-col gap-3",!s&&"px-3 py-3 border border-border rounded-lg bg-card"),children:c.jsxs("fieldset",{disabled:d,className:"contents",children:[c.jsx("ul",{className:"flex flex-col gap-3",children:i.map(w=>{var M;const N=a.get(w.id)??((M=w.worktrees[0])==null?void 0:M.path)??"",A=w.id===l,T=w.worktrees.length<=1;return c.jsxs("li",{className:"flex flex-col gap-1.5 min-w-0",children:[c.jsxs("div",{className:"flex items-baseline justify-between gap-2 min-w-0",children:[c.jsx("span",{className:"text-[15px] font-semibold leading-snug truncate min-w-0",title:w.title,children:w.title}),!x&&c.jsxs("label",{className:"shrink-0 inline-flex items-center gap-1.5 text-xs text-muted-foreground cursor-pointer select-none",children:[c.jsx("input",{type:"radio",name:"primaryProject",value:w.id,checked:A,onChange:()=>m(w.id),"aria-label":`Set ${w.title} as primary`,className:"accent-foreground"}),c.jsx("span",{className:A?"text-foreground":void 0,children:"Primary"})]})]}),c.jsx("select",{value:N,onChange:j=>{p(P=>{const D=new Map(P);return D.set(w.id,j.target.value),D})},disabled:T,className:"w-full text-[13px] font-mono tabular-nums border border-border rounded-md px-2 py-1.5 bg-background text-foreground truncate disabled:opacity-70 disabled:cursor-not-allowed","aria-label":`Worktree for ${w.title}`,children:w.worktrees.map(j=>c.jsx("option",{value:j.path,children:j.branch},j.path))})]},w.id)})}),h&&c.jsx("p",{id:o,role:"alert",className:"text-xs leading-snug text-destructive",children:h}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(Me,{type:"submit",size:"sm",disabled:d,children:d?"Creating…":"Create Chat"}),c.jsx(Me,{type:"button",size:"sm",variant:"ghost",onClick:r,disabled:d,children:"Cancel"})]})]})});return s?c.jsx(yH,{open:!0,onOpenChange:w=>{!w&&!d&&r()},children:c.jsxs(_H,{children:[c.jsx(gj,{className:"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"}),c.jsxs(vj,{"aria-label":`Create chat in ${e.title}`,className:fe("fixed inset-x-0 bottom-0 z-50 flex flex-col gap-3 rounded-t-2xl border-t border-border bg-card px-4 pt-5","pb-[max(env(safe-area-inset-bottom),16px)]","max-h-[85dvh] overflow-y-auto","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom","motion-reduce:data-[state=open]:animate-none motion-reduce:data-[state=closed]:animate-none"),children:[c.jsx("div",{className:"mx-auto mb-1 h-1 w-9 rounded-full bg-border","aria-hidden":!0}),c.jsxs(SH,{className:"text-[15px] font-semibold leading-snug",children:["New chat in ",e.title]}),k]})]})}):k}function jge({stack:e,projects:t,onCreate:n,onCancel:r}){var a;const i=t.filter(l=>e.projectIds.includes(l.id)),s=new Map;for(const l of i){const d=l.worktrees.find(h=>h.isPrimary)??l.worktrees[0];d&&s.set(l.id,d.path)}const o=((a=i[0])==null?void 0:a.id)??"";return c.jsx(dc.Provider,{init:{initialPrimaryProjectId:o,initialSelectedWorktrees:s},children:c.jsx(Mge,{stack:e,projects:t,onCreate:n,onCancel:r})})}const Ige="gpt-5.4-mini",zC="moonshotai/kimi-k2.5:nitro",Pb=[{id:"low",label:"Low"},{id:"medium",label:"Medium"},{id:"high",label:"High"},{id:"max",label:"Max"}],iw=[{id:"minimal",label:"Minimal"},{id:"low",label:"Low"},{id:"medium",label:"Medium"},{id:"high",label:"High"},{id:"xhigh",label:"XHigh"}],wo={reasoningEffort:"high",contextWindow:"200k"},hd={reasoningEffort:"high",fastMode:!1};function sw(e){return Pb.some(t=>t.id===e)}function ow(e){return iw.some(t=>t.id===e)}const Mf=[{id:"200k",label:"200k"},{id:"1m",label:"1M"}];function DW(e){return Mf.some(t=>t.id===e)}const Lb=[{id:"claude",label:"Claude",defaultModel:"claude-sonnet-4-6",defaultEffort:"high",supportsPlanMode:!0,models:[{id:"claude-fable-5",label:"Fable 5",supportsEffort:!0,aliases:["fable"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0},{id:"claude-opus-4-7",label:"Opus 4.7",supportsEffort:!0,aliases:["opus"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0},{id:"claude-sonnet-4-6",label:"Sonnet 4.6",supportsEffort:!0,aliases:["sonnet"],contextWindowOptions:[...Mf]},{id:"claude-haiku-4-5-20251001",label:"Haiku 4.5",supportsEffort:!0,aliases:["haiku"]},{id:"claude-opus-4-8",label:"Opus 4.8",supportsEffort:!0,aliases:["opus-4-8"],contextWindowOptions:[...Mf],supportsMaxReasoningEffort:!0}],efforts:[...Pb]},{id:"codex",label:"Codex",defaultModel:"gpt-5.5",supportsPlanMode:!0,models:[{id:"gpt-5.5",label:"GPT-5.5",supportsEffort:!1},{id:"gpt-5.4",label:"GPT-5.4",supportsEffort:!1},{id:"gpt-5.3-codex",label:"GPT-5.3 Codex",supportsEffort:!1,aliases:["gpt-5-codex"]},{id:"gpt-5.3-codex-spark",label:"GPT-5.3 Codex Spark",supportsEffort:!1}],efforts:[]},{id:"openrouter",label:"OpenRouter",defaultModel:zC,supportsPlanMode:!0,models:[],efforts:[]}];function $c(e){const t=Lb.find(n=>n.id===e);if(!t)throw new Error(`Unknown provider: ${e}`);return t}function Pge(e){return{id:e.id,label:e.label,supportsEffort:e.supportsEffort,...e.aliases?{aliases:e.aliases}:{},...e.contextWindowOptions?{contextWindowOptions:e.contextWindowOptions}:{},...e.supportsMaxReasoningEffort!==void 0?{supportsMaxReasoningEffort:e.supportsMaxReasoningEffort}:{}}}function rI(e,t){return e.map(n=>{if(n.id!=="claude"&&n.id!=="codex")return{...n,models:[...n.models]};const r=t.filter(s=>s.provider===n.id);if(r.length===0)return{...n,models:[...n.models]};const i=[...n.models];for(const s of r){const o=Pge(s),a=i.findIndex(l=>l.id===o.id);a>=0?i[a]=o:i.push(o)}return{...n,models:i}})}function $W(e,t){const n=$c(e);if(!t||t.length===0)return n.models;const[r]=rI([{...n,models:[...n.models]}],t);return r.models}function Lge(e,t,n){if(t)return $W(e,n).find(r=>{var i;return r.id===t||((i=r.aliases)==null?void 0:i.includes(t))})}function iI(e,t,n,r){var i;return((i=Lge(e,t,r))==null?void 0:i.id)??n??$c(e).defaultModel}function Oge(e,t="claude-opus-4-7",n){return iI("claude",e,t,n)}function Dge(e,t="gpt-5.5",n){return iI("codex",e,t,n)}function $ge(e,t,n){const r=iI(e,t,void 0,n);return $W(e,n).find(i=>i.id===r)}function zW(e,t){return $ge("claude",e,t)}function BW(e,t){var n;return!!((n=zW(e,t))!=null&&n.supportsMaxReasoningEffort)}function zge(e,t){var n;return((n=zW(e,t))==null?void 0:n.contextWindowOptions)??[]}function sI(e,t,n){const r=zge(e,n);return r.length===0?wo.contextWindow:DW(t)&&r.some(i=>i.id===t)?t:wo.contextWindow}function Bge(e){switch(e){case"1m":return 1e6;case"200k":default:return 2e5}}function Fge(e){return e==="previous-assistant-reply"||e==="full-transcript"}function Uge(e){return e==="auto"||e==="manual"}const Ob=1,Db=5,Hge=1,W$={maxFileSizeMb:100},K_=1,G_=2048,V$=8e3;function Wge(e){return e==="sdk"||e==="pty"}const iS={idleTimeoutMs:6e5,maxConcurrent:4},yN=6e4,_N=36e5,q_=1,Y_=16,K$={preference:"sdk",lifecycle:{...iS}},Vge={enabled:!1,mode:"always-ask"},$b={toggleEmbeddedTerminal:["cmd+j","ctrl+`"],toggleRightSidebar:["cmd+b","ctrl+b"],openInFinder:["cmd+alt+f","ctrl+alt+f"],openInEditor:["cmd+shift+o","ctrl+shift+o"],addSplitTerminal:["cmd+/","ctrl+/"],jumpToSidebarChat:["cmd+alt"],createChatInCurrentProject:["cmd+alt+n"],openAddProject:["cmd+alt+o"],newStack:["cmd+alt+w"],newStackChat:["cmd+alt+shift+n"],jumpToStacks:["g s"]},G$=["toggleEmbeddedTerminal","toggleRightSidebar","openInFinder","openInEditor","addSplitTerminal","jumpToSidebarChat","createChatInCurrentProject","openAddProject","newStack","newStackChat","jumpToStacks"];function FW(e){return e==="cursor"||e==="vscode"||e==="xcode"||e==="windsurf"||e==="custom"}function Kge(e){return e==="never"||e==="unfocused"||e==="always"}function Gge(e){return e==="blow"||e==="bottle"||e==="frog"||e==="funk"||e==="glass"||e==="ping"||e==="pop"||e==="purr"||e==="tink"}function qge(e){return e==="openai"||e==="openrouter"||e==="custom"}function UW(e){return e==="claude"||e==="codex"||e==="openrouter"}const Yge={toggleEmbeddedTerminal:"Toggle Embedded Terminal",toggleRightSidebar:"Toggle Right Sidebar",openInFinder:"Open In Finder",openInEditor:"Open In Editor",addSplitTerminal:"Add Split Terminal",jumpToSidebarChat:"Jump To Sidebar Chat",createChatInCurrentProject:"New Chat In Current Project",openAddProject:"Open Add Project",newStack:"New Stack",newStackChat:"New Stack Chat",jumpToStacks:"Jump To Stacks"};function SN(e){return(e??[]).join(", ")}function ka(e){return e.split(",").map(t=>t.trim()).map(t=>t.toLowerCase()).filter(Boolean)}const Xge=new Map([["cmd","meta"],["meta","meta"],["ctrl","ctrl"],["control","ctrl"],["alt","alt"],["option","alt"],["shift","shift"]]);function HW(e,t){const n=Qge(e);return n?eve(t,n.key)&&t.ctrlKey===n.ctrl&&t.metaKey===n.meta&&t.altKey===n.alt&&t.shiftKey===n.shift:!1}function hv(e,t,n){return BC(e,t).some(i=>HW(i,n))}function Jge(e,t,n){return BC(e,t).find(r=>HW(r,n))??null}function BC(e,t){return(e==null?void 0:e.bindings[t])??$b[t]}function Zge(){return Object.keys($b)}function oI(e){return{bindings:Object.fromEntries(Zge().map(n=>[n,(e==null?void 0:e.bindings[n])??$b[n]])),warning:(e==null?void 0:e.warning)??null,filePathDisplay:(e==null?void 0:e.filePathDisplay)??""}}function Qge(e){const t=e.split("+").map(r=>r.trim()).filter(Boolean);if(t.length===0)return null;const n={key:"",ctrl:!1,meta:!1,alt:!1,shift:!1};for(const r of t){const i=r.toLowerCase(),s=Xge.get(i);if(s==="ctrl"){n.ctrl=!0;continue}if(s==="meta"){n.meta=!0;continue}if(s==="alt"){n.alt=!0;continue}if(s==="shift"){n.shift=!0;continue}if(n.key)return null;n.key=i}return n.key?n:null}function eve(e,t){if(e.key.toLowerCase()===t)return!0;const n=tve(t);return n?e.code===n:!1}function tve(e){if(e.length===1&&e>="a"&&e<="z")return`Key${e.toUpperCase()}`;if(e.length===1&&e>="0"&&e<="9")return`Digit${e}`;switch(e){case"/":return"Slash";case"`":return"Backquote";default:return null}}const WW=9;function nve(e,t,n){const r=[];for(const i of e){if(t.has(i.groupKey))continue;const s=n.has(i.groupKey)?[...i.previewChats,...i.olderChats]:i.previewChats;for(const o of s)r.push({chat:o,visibleIndex:r.length+1})}return r}function rve(e,t){if(!O2(e,t)||!t.code.startsWith("Digit"))return null;const n=Number(t.code.slice(5));return Number.isInteger(n)&&n>=1&&n<=WW?n:null}function ive(e,t){return sve(e,t)?String(t):null}function O2(e,t){return BC(e,"jumpToSidebarChat").some(n=>ove(n,t))}function X_(e,t,n){return Jge(e,t,n)!==null}function sve(e,t){return t<1||t>WW?null:BC(e,"jumpToSidebarChat")[0]??null}function ove(e,t){const n=e.split("+").map(a=>a.trim().toLowerCase()).filter(Boolean);let r=!1,i=!1,s=!1,o=!1;for(const a of n){if(a==="cmd"||a==="meta"){r=!0;continue}if(a==="alt"||a==="option"){i=!0;continue}if(a==="ctrl"||a==="control"){s=!0;continue}a==="shift"&&(o=!0)}return t.metaKey===r&&t.altKey===i&&t.ctrlKey===s&&t.shiftKey===o}const Qs={debug(...e){console.debug(...e)},info(...e){console.info(...e)},warn(...e){console.warn(...e)},error(...e){console.error(...e)}},VW="kanna:sidebar-width",zb=275,KW=220,GW=520;function Bb(e){return Number.isFinite(e)?Math.min(GW,Math.max(KW,Math.round(e))):zb}function ave(){if(typeof window>"u")return zb;const e=window.localStorage.getItem(VW);return e?Bb(Number(e)):zb}function qW(e){typeof window>"u"||window.localStorage.setItem(VW,String(Bb(e)))}const lve=new Map,Fn=tr()(e=>({collapsedSections:new Set,expandedGroups:new Set,nowMs:Date.now(),showNumberJumpHints:!1,sidebarWidth:ave(),isResizingSidebar:!1,archivedProjectId:null,expandedStackIds:new Set,stackCreatePanelOpen:!1,stackEditId:null,stackDeleteConfirmId:null,stackChatCreateId:null,stackChatWorktrees:lve,stackChatLoading:!1,isImporting:!1,setCollapsedSections:t=>e(n=>({collapsedSections:t(n.collapsedSections)})),setExpandedGroups:t=>e(n=>({expandedGroups:t(n.expandedGroups)})),setExpandedGroupsSnapshot:t=>e({expandedGroups:t}),setNowMs:t=>e({nowMs:t}),setShowNumberJumpHints:t=>e({showNumberJumpHints:t}),setSidebarWidth:t=>{e(typeof t=="function"?n=>({sidebarWidth:t(n.sidebarWidth)}):{sidebarWidth:t})},setSidebarWidthAndPersist:t=>{const n=Bb(t);qW(n),e({sidebarWidth:n})},setIsResizingSidebar:t=>e({isResizingSidebar:t}),setArchivedProjectId:t=>e({archivedProjectId:t}),setExpandedStackIds:t=>e(n=>({expandedStackIds:t(n.expandedStackIds)})),setStackCreatePanelOpen:t=>e({stackCreatePanelOpen:t}),setStackEditId:t=>e({stackEditId:t}),setStackDeleteConfirmId:t=>e({stackDeleteConfirmId:t}),setStackChatCreateId:t=>e({stackChatCreateId:t}),setStackChatWorktrees:t=>e({stackChatWorktrees:t}),setStackChatLoading:t=>e({stackChatLoading:t}),setIsImporting:t=>e({isImporting:t})}));function cve(e){return Object.assign({},e)}function uve({data:e,activeChatId:t,connectionStatus:n,open:r,collapsed:i,showMobileOpenButton:s,onOpen:o,onClose:a,onCollapse:l,onExpand:d,onCreateChat:h,onForkChat:p,currentProjectId:m,keybindings:v,onRenameChat:b,onArchiveChat:x,onOpenArchivedChat:S,onDeleteChat:C,onEditChatPermissions:k,onOpenAddProjectModal:w,onImportClaudeSessions:N,onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,onReorderProjectGroups:P,onCreateStack:D,onRenameStack:L,onRemoveStack:I,onCreateStackChat:$,onListStackWorktrees:H,editorLabel:z,updateSnapshot:F}){var Qe,zn,Ur;const K=qa(),W=Ad(),V=_.useRef(null),X=_.useRef(null),G=_.useRef(new Set),te=_.useRef(new Set),oe=Fn(ue=>ue.collapsedSections),ce=Fn(ue=>ue.expandedGroups),de=Fn(ue=>ue.nowMs),ee=Fn(ue=>ue.showNumberJumpHints),ne=Fn(ue=>ue.sidebarWidth),ie=Fn(ue=>ue.isResizingSidebar),ae=Fn(ue=>ue.archivedProjectId),Q=Fn(ue=>ue.expandedStackIds),ke=Fn(ue=>ue.stackCreatePanelOpen),we=Fn(ue=>ue.stackEditId),Ae=Fn(ue=>ue.stackDeleteConfirmId),Xe=Fn(ue=>ue.stackChatCreateId),ft=Fn(ue=>ue.stackChatWorktrees),Ct=Fn(ue=>ue.stackChatLoading),ln=Fn(ue=>ue.isImporting),en=Fn(ue=>ue.setCollapsedSections),bt=Fn(ue=>ue.setExpandedGroups),fn=Fn(ue=>ue.setNowMs),qe=Fn(ue=>ue.setShowNumberJumpHints),Ht=Fn(ue=>ue.setSidebarWidth),cn=Fn(ue=>ue.setSidebarWidthAndPersist),wt=Fn(ue=>ue.setIsResizingSidebar),zt=Fn(ue=>ue.setArchivedProjectId),tn=Fn(ue=>ue.setExpandedStackIds),Yt=Fn(ue=>ue.setStackCreatePanelOpen),Kt=Fn(ue=>ue.setStackEditId),sn=Fn(ue=>ue.setStackDeleteConfirmId),Nn=Fn(ue=>ue.setStackChatCreateId),Ue=Fn(ue=>ue.setStackChatWorktrees),un=Fn(ue=>ue.setStackChatLoading),wn=Fn(ue=>ue.setIsImporting),kt=_.useMemo(()=>oI(v),[v]),Xt=_.useMemo(()=>{const ue=[];for(const Ye of e.projectGroups)for(const ct of Ye.chats)ct.stackId&&ue.push(ct);return ue},[e.projectGroups]),Ce=_.useCallback(ue=>ue.map(Ye=>{const ct=Ye.chats.filter(It=>!It.stackId);if(ct.length===Ye.chats.length)return Ye;const at=Ye.previewChats.filter(It=>!It.stackId),Mn=Ye.olderChats.filter(It=>!It.stackId);return{...Ye,chats:ct,previewChats:at,olderChats:Mn}}),[]),rt=_.useMemo(()=>Ce(e.starredProjectGroups),[e.starredProjectGroups,Ce]),gt=_.useMemo(()=>Ce(e.projectGroups),[e.projectGroups,Ce]),it=_.useMemo(()=>nve([...rt,...gt],oe,ce),[oe,rt,gt,ce]),jt=_.useRef(it),Bt=_.useMemo(()=>new Map(it.map(ue=>[ue.chat.chatId,ue.visibleIndex])),[it]),Et=_.useMemo(()=>e.projectGroups.map(ue=>({id:ue.groupKey,title:Lj(ue.localPath)})),[e.projectGroups]),Lt=_.useCallback(async ue=>{const Ye=e.stacks.find(ct=>ct.id===ue);if(Ye){Nn(ue),un(!0);try{const ct=await Promise.all(Ye.projectIds.map(async at=>[at,await H(at)]));Ue(new Map(ct))}finally{un(!1)}}},[e.stacks,H,Nn,un,Ue]),nn=_.useCallback(()=>{Nn(null),Ue(new Map)},[Nn,Ue]),$t=_.useMemo(()=>new Map([...e.starredProjectGroups,...e.projectGroups].map(ue=>[ue.localPath,ue.groupKey])),[e.starredProjectGroups,e.projectGroups]),re=it.length,je=_.useMemo(()=>[...e.starredProjectGroups,...e.projectGroups].find(ue=>ue.groupKey===ae)??null,[ae,e.starredProjectGroups,e.projectGroups]);_.useEffect(()=>{jt.current=it},[it]),_.useEffect(()=>{en(ue=>{const Ye=new Set,ct=[...e.starredProjectGroups,...e.projectGroups],at=new Set(ct.map(It=>It.groupKey)),Mn=G.current;for(const It of ue)at.has(It)&&Ye.add(It);G.current=new Set([...Mn].filter(It=>at.has(It)));for(const It of ct)G.current.has(It.groupKey)||(G.current.add(It.groupKey),It.defaultCollapsed&&Ye.add(It.groupKey));return Ye.size===ue.size&&[...Ye].every(It=>ue.has(It))?ue:Ye})},[e.starredProjectGroups,e.projectGroups,en]);const ht=_.useCallback(ue=>{en(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct})},[en]),Ne=_.useCallback(ue=>{bt(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct})},[bt]),We=_.useMemo(()=>[...e.starredProjectGroups,...e.projectGroups].map(ue=>ue.groupKey),[e.starredProjectGroups,e.projectGroups]),Ke=We.length>0&&We.every(ue=>oe.has(ue)),Je=_.useCallback(()=>{if(We.length!==0){if(Ke){en(()=>new Set),bt(()=>te.current);return}te.current=ce,en(()=>new Set(We)),bt(()=>new Set)}},[We,Ke,ce,en,bt]),pt=_.useCallback(ue=>{const Ye=Bt.get(ue.chatId);return c.jsx(Dpe,{chat:ue,activeChatId:t,nowMs:de,shortcutHint:Ye?ive(kt,Ye):null,showShortcutHint:ee,onSelectChat:ct=>{W(`/chat/${ct}`),a()},onRenameChat:()=>b(ue),onOpenInFinder:()=>T("open_finder",ue.localPath),onForkChat:()=>p(ue),onArchiveChat:()=>x(ue),onDeleteChat:()=>C(ue),onEditPermissions:k},ue._id)},[t,W,de,x,a,C,k,p,T,b,kt,ee,Bt]);_.useEffect(()=>{const ue=window.setInterval(()=>{fn(Date.now())},3e4);return()=>window.clearInterval(ue)},[fn]),_.useEffect(()=>{function ue(at){var Hr;if(qe(O2(kt,at)),X_(kt,"createChatInCurrentProject",at)){if(!m)return;at.preventDefault(),h(m);return}if(X_(kt,"openAddProject",at)){at.preventDefault(),W("/"),a(),w();return}if(X_(kt,"newStack",at)){at.preventDefault(),Yt(!0);return}if(X_(kt,"newStackChat",at)){at.preventDefault();return}const Mn=rve(kt,at);if(Mn===null)return;const It=(Hr=jt.current[Mn-1])==null?void 0:Hr.chat;It&&(at.preventDefault(),W(`/chat/${It.chatId}`),a())}function Ye(at){qe(O2(kt,at))}function ct(){qe(!1)}return window.addEventListener("keydown",ue),window.addEventListener("keyup",Ye),window.addEventListener("blur",ct),()=>{window.removeEventListener("keydown",ue),window.removeEventListener("keyup",Ye),window.removeEventListener("blur",ct)}},[m,W,a,h,w,kt,qe,Yt]),_.useEffect(()=>{!t||!V.current||requestAnimationFrame(()=>{const ue=V.current,Ye=ue==null?void 0:ue.querySelector(`[data-chat-id="${t}"]`),ct=Ye instanceof HTMLElement?Ye:null;if(!ct||!ue)return;const at=ct.getBoundingClientRect(),Mn=ue.getBoundingClientRect();if(at.top<Mn.top+38){const It=at.top-Mn.top+ue.scrollTop;ue.scrollTo({top:It-38,behavior:"smooth"})}else if(at.bottom>Mn.bottom){const It=at.top+at.height/2-Mn.top+ue.scrollTop,Hr=ue.clientHeight/2;ue.scrollTo({top:It-Hr,behavior:"smooth"})}})},[t]),_.useEffect(()=>{if(!ie)return;const ue=document.body.style.cursor,Ye=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";function ct(Mn){const It=X.current;It&&Ht(Bb(It.width+Mn.clientX-It.pointerX))}function at(){wt(!1),X.current=null,Ht(Mn=>{const It=Bb(Mn);return qW(It),It})}return window.addEventListener("pointermove",ct),window.addEventListener("pointerup",at,{once:!0}),()=>{window.removeEventListener("pointermove",ct),window.removeEventListener("pointerup",at),document.body.style.cursor=ue,document.body.style.userSelect=Ye}},[ie,Ht,wt]);const Ot=zx(),xt=_.useCallback(async()=>{if(!(ln||!N||!await Ot.confirm({title:"Import Claude sessions",description:"Scan ~/.claude/projects/ and import all sessions into Kanna? Already-imported sessions are skipped.",confirmLabel:"Import"}))){wn(!0);try{await N()}catch(Ye){Qs.error("[kanna/import] failed",String(Ye))}finally{wn(!1)}}},[Ot,ln,N,wn]),Be=re>0,Ft=K.pathname==="/",Ln=K.pathname.startsWith("/settings"),Gt=K.pathname.startsWith("/workflows"),Jt=Ft||Ln||Gt,xr=n==="connecting";let In;xr?In="Connecting":n==="connected"?In="Connected":In="Disconnected";const Gn=n==="connected"?"bg-success":"bg-warning",qn=F?F.latestVersion===`${F.currentVersion}-dev`:!1;let ye;return t?Gt?ye="bg-muted":ye="hover:bg-muted/50":ye="opacity-50 cursor-not-allowed",c.jsxs(c.Fragment,{children:[!r&&s&&c.jsx(Me,{variant:"ghost",size:"icon-mobile","aria-label":"Open sidebar",className:"fixed top-3 left-3 z-50 md:hidden",onClick:o,children:c.jsx(rj,{className:"h-5 w-5"})}),i&&Jt&&c.jsx("div",{className:"hidden md:flex fixed left-0 top-0 h-full z-40 items-start pt-4 pl-5 border-l border-border/0",children:c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(fd,{className:"size-6 text-logo"}),c.jsx(Me,{variant:"ghost",size:"icon",onClick:d,title:"Expand sidebar","aria-label":"Expand sidebar",children:c.jsx(m2,{className:"h-5 w-5"})})]})}),c.jsxs("div",{"data-sidebar":"open",className:fe("fixed inset-0 z-50 bg-background dark:bg-card flex flex-col h-[100dvh] select-none","md:relative md:inset-auto md:w-[var(--sidebar-width)] md:mr-0 md:h-[calc(100%-16px)] md:my-2 md:ml-2 md:border md:border-border md:rounded-2xl",r?"flex":"hidden md:flex",i&&"md:hidden"),style:cve({"--sidebar-width":`${ne}px`}),children:[c.jsxs("div",{className:"px-[5px] h-[64px] max-h-[64px] md:h-[55px] md:max-h-[55px] border-b grid grid-cols-[40px_minmax(0,1fr)_40px] items-center md:px-[7px] md:pl-3 md:flex md:justify-between",children:[c.jsx("div",{className:"md:hidden",children:c.jsx(Me,{variant:"ghost",size:"icon",className:"size-10 rounded-lg hover:!border-border/0",onClick:a,title:"Close sidebar","aria-label":"Close sidebar",children:c.jsx(jo,{className:"h-5 w-5"})})}),c.jsxs("div",{className:"flex items-center justify-self-center gap-2 md:justify-self-auto",children:[c.jsxs("button",{type:"button",onClick:l,title:"Collapse sidebar","aria-label":"Collapse sidebar",className:"hidden md:flex group/sidebar-collapse relative items-center justify-center h-5 w-5 sm:h-6 sm:w-6",children:[c.jsx(fd,{className:"absolute inset-0.5 h-4 w-4 sm:h-5 sm:w-5 text-logo transition-all duration-200 ease-out opacity-100 scale-100 group-hover/sidebar-collapse:opacity-0 group-hover/sidebar-collapse:scale-0"}),c.jsx(m2,{className:"absolute inset-0 h-4 w-4 sm:h-6 sm:w-6 text-muted-foreground transition-all duration-200 ease-out opacity-0 scale-0 group-hover/sidebar-collapse:opacity-100 group-hover/sidebar-collapse:scale-80 hover:opacity-50"})]}),c.jsx(fd,{className:"h-5 w-5 sm:h-6 sm:w-6 text-logo md:hidden"}),c.jsx("span",{className:"font-logo text-base sm:text-md text-foreground",children:$r})]}),c.jsxs("div",{className:"flex items-center justify-self-end md:justify-self-auto",children:[c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>{W("/"),a()},className:"size-10 rounded-lg hover:!border-border/0 md:hidden",title:"New project","aria-label":"New project",children:c.jsx(ro,{className:"h-5 w-5"})}),qn?c.jsx("span",{className:"mr-1 hidden md:inline-flex items-center rounded-full border border-border bg-muted px-2 py-0.5 text-[11px] font-bold tracking-wider text-muted-foreground",title:"Development build",children:"DEV"}):null,N?c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>void xt(),disabled:ln,className:"inline-flex size-10 rounded-lg hover:!border-border/0",title:"Import Claude Code sessions","aria-label":"Import Claude Code sessions",children:c.jsx(tj,{className:"size-4"})}):null,c.jsx(Me,{variant:"ghost",size:"icon",onClick:()=>{W("/"),a()},className:"hidden md:inline-flex size-10 rounded-lg hover:!border-border/0",title:"New project","aria-label":"New project",children:c.jsx(ro,{className:"size-4"})})]})]}),We.length>0&&c.jsx("div",{className:"flex items-center justify-end pl-2 pr-2 pt-1.5 pb-1 shrink-0",children:c.jsx("button",{type:"button",onClick:Je,"aria-pressed":Ke,className:"group/collapse-all inline-flex items-center gap-1.5 rounded-full border border-border/50 bg-transparent px-2.5 py-1 text-xs font-medium tracking-[0.005em] text-muted-foreground hover:border-border hover:bg-muted/50 hover:text-foreground aria-pressed:border-border aria-pressed:bg-muted/40 aria-pressed:text-foreground transition-colors duration-150 motion-reduce:transition-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:Ke?c.jsxs(c.Fragment,{children:[c.jsx(Uae,{className:"size-3.5 text-muted-foreground/80 group-hover/collapse-all:text-foreground group-aria-pressed/collapse-all:text-foreground transition-colors duration-150 motion-reduce:transition-none","aria-hidden":!0}),"Expand all"]}):c.jsxs(c.Fragment,{children:[c.jsx(Yse,{className:"size-3.5 text-muted-foreground/80 group-hover/collapse-all:text-foreground transition-colors duration-150 motion-reduce:transition-none","aria-hidden":!0}),"Collapse all"]})})}),c.jsx("div",{ref:V,className:"flex-1 min-h-0 overflow-y-auto overflow-x-hidden scrollbar-hide",style:{WebkitOverflowScrolling:"touch",touchAction:"pan-y"},children:c.jsxs("div",{className:"p-[7px]",children:[!Be&&e.projectGroups.length===0?c.jsx("p",{className:"text-sm text-muted-foreground p-2 mt-6 text-center",children:"No conversations yet"}):null,c.jsx(Nge,{stacks:e.stacks,projects:Et,expandedStackIds:Q,onToggleExpanded:ue=>tn(Ye=>{const ct=new Set(Ye);return ct.has(ue)?ct.delete(ue):ct.add(ue),ct}),onOpenCreatePanel:()=>Yt(!0),onOpenStackMenu:ue=>{Kt(ue),Yt(!0)},onDeleteStack:ue=>sn(ue),onStartChat:ue=>{Lt(ue)},renderChatCreate:ue=>{if(ue.id!==Xe)return null;if(Ct)return c.jsx("p",{className:"text-xs text-muted-foreground",children:"Loading worktrees…"});const Ye=ue.projectIds.map(ct=>{var at;return{id:ct,title:((at=Et.find(Mn=>Mn.id===ct))==null?void 0:at.title)??ct,worktrees:ft.get(ct)??[]}});return c.jsx(jge,{stack:ue,projects:Ye,onCreate:async({primaryProjectId:ct,stackBindings:at})=>{$(ct,ue.id,at),nn()},onCancel:nn})},renderChatRow:pt,chats:Xt}),ke&&c.jsx(Age,{mode:we?"edit":"create",projects:Et,initialProjectIds:we?((Qe=e.stacks.find(ue=>ue.id===we))==null?void 0:Qe.projectIds)??[]:[],initialTitle:we?((zn=e.stacks.find(ue=>ue.id===we))==null?void 0:zn.title)??"":"",onSubmit:async(ue,Ye)=>{we?L(we,ue):D(ue,Ye),Yt(!1),Kt(null)},onCancel:()=>{Yt(!1),Kt(null)}}),Ae&&(()=>{const ue=e.stacks.find(Ye=>Ye.id===Ae);return ue?c.jsxs("div",{className:"px-2.5 py-2 border border-destructive/50 rounded-lg bg-background mx-2 my-1",children:[c.jsxs("p",{className:"text-xs text-destructive mb-2",children:['Delete "',ue.title,'"?']}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx("button",{type:"button",className:"text-xs px-2 py-1 rounded bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{I(Ae),sn(null)},children:"Delete"}),c.jsx("button",{type:"button",className:"text-xs px-2 py-1 rounded border border-border hover:bg-muted",onClick:()=>sn(null),children:"Cancel"})]})]}):null})(),rt.length>0&&c.jsxs(c.Fragment,{children:[c.jsx(H$,{projectGroups:rt,editorLabel:z,collapsedSections:oe,expandedGroups:ce,onToggleSection:ht,onToggleExpandedGroup:Ne,renderChatRow:pt,onShowArchivedProject:zt,onNewLocalChat:ue=>{const Ye=$t.get(ue);Ye&&h(Ye)},onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,isConnected:n==="connected"}),e.projectGroups.length>0&&c.jsx("div",{className:"mx-3 my-1 border-t border-border/50"})]}),c.jsx(H$,{projectGroups:gt,editorLabel:z,onReorderGroups:P,collapsedSections:oe,expandedGroups:ce,onToggleSection:ht,onToggleExpandedGroup:Ne,renderChatRow:pt,onShowArchivedProject:zt,onNewLocalChat:ue=>{const Ye=$t.get(ue);Ye&&h(Ye)},onCopyPath:A,onOpenExternalPath:T,onHideProject:M,onToggleStar:j,isConnected:n==="connected"})]})}),c.jsxs("div",{className:"border-t border-border",children:[c.jsxs("button",{type:"button",disabled:!t,"aria-label":"Workflows",onClick:()=>{t&&(W(`/workflows/${t}`),a())},className:fe("w-full flex items-center gap-2 px-3 py-2.5 text-left transition-colors duration-150 rounded-none",ye),children:[c.jsx(lj,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("span",{className:"text-sm flex-1",children:"Workflows"})]}),c.jsxs("button",{type:"button",onClick:()=>{W("/settings/general"),a()},className:fe("w-full flex items-center gap-2 px-3 py-2.5 text-left transition-colors duration-150 rounded-none",Ln?"bg-muted":"hover:bg-muted/50"),children:[c.jsx(fae,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("span",{className:"text-sm flex-1",children:"Settings"})]}),c.jsxs("div",{className:"flex items-center gap-2 px-3 pb-2.5 pt-0.5",children:[c.jsx("span",{className:fe("h-1.5 w-1.5 rounded-full shrink-0",Gn),"aria-hidden":!0}),c.jsx("span",{className:"text-[11px] text-muted-foreground tabular-nums",children:In})]})]}),c.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize sidebar",tabIndex:0,title:"Resize sidebar",className:fe("hidden md:block absolute -right-1 top-3 bottom-3 z-20 w-2 cursor-col-resize rounded-full","focus-visible:outline-none"),onPointerDown:ue=>{ue.preventDefault(),X.current={pointerX:ue.clientX,width:ne},wt(!0)},onDoubleClick:()=>{cn(zb)},onKeyDown:ue=>{let Ye=null;ue.key==="ArrowLeft"?Ye=ne-16:ue.key==="ArrowRight"?Ye=ne+16:ue.key==="Home"?Ye=KW:ue.key==="End"?Ye=GW:ue.key==="Enter"&&(Ye=zb),Ye!==null&&(ue.preventDefault(),cn(Ye))}})]}),c.jsx(To,{open:!!je,onOpenChange:ue=>{ue||zt(null)},children:c.jsxs(io,{size:"md",children:[c.jsxs(SC,{children:[c.jsx(Ao,{children:"Archived Chats"}),c.jsx(Qm,{children:(je==null?void 0:je.localPath)??""})]}),c.jsx(la,{className:"space-y-1",children:(Ur=je==null?void 0:je.archivedChats)!=null&&Ur.length?je.archivedChats.map(ue=>c.jsxs("button",{type:"button",className:"flex w-full items-center justify-between gap-3 rounded-lg border border-border/0 px-3 py-2 text-left transition-colors hover:border-border hover:bg-muted",onClick:()=>{S(ue.chatId),zt(null),a()},children:[c.jsx("span",{className:"min-w-0 truncate text-sm",children:ue.title}),c.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:$fe(zfe(ue),de)})]},ue.chatId)):c.jsx("p",{className:"px-1 py-3 text-sm text-muted-foreground",children:"No archived chats"})})]})}),r?c.jsx("div",{className:"fixed inset-0 bg-black/40 z-40 md:hidden",onClick:a}):null]})}const dve=_.memo(uve),fve=_.forwardRef((e,t)=>c.jsx(Me,{ref:t,variant:"ghost",size:"none","aria-label":"Public link",...e,className:e.className??"border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",children:c.jsx(goe,{strokeWidth:2,className:"h-4.5"})})),D2=qt("SharePopoverBody",()=>e=>({busy:!1,setBusy:t=>e({busy:t})}));function hve(e,t){const n=e-t;if(n<=0)return"Expired";const r=Math.round(n/36e5);return r<1?"Expires in <1h":r<48?`Expires in ${r}h`:`Expires in ${Math.round(r/24)}d`}function pve(e){const t=D2.useScopedStore(i=>i.busy),n=D2.useScopedStore(i=>i.setBusy),r=e.shares.filter(i=>!i.revoked);return c.jsxs(c.Fragment,{children:[c.jsx(Me,{variant:"default",disabled:t,"data-share-mint":"",onClick:()=>{n(!0),e.onMint(e.chatId).finally(()=>{n(!1)})},children:t?"Creating…":"Create share link"}),r.length===0?c.jsx("p",{className:"text-xs text-muted-foreground",children:"No active share links for this chat."}):c.jsx("ul",{className:"space-y-2",children:r.map(i=>c.jsxs("li",{className:"flex flex-col gap-1 rounded border border-border/40 p-2 text-xs",children:[c.jsx("code",{className:"break-all",children:i.url}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsxs(Me,{size:"sm",variant:"ghost",onClick:()=>{navigator.clipboard.writeText(i.url)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5 mr-1"}),"Copy"]}),c.jsxs(Me,{size:"sm",variant:"ghost","data-share-revoke":"",onClick:()=>{e.onRevoke(i.tokenId)},children:[c.jsx(poe,{className:"h-3.5 w-3.5 mr-1"}),"Revoke"]}),c.jsx("span",{className:"ml-auto text-muted-foreground",children:hve(i.expiresAt,e.now)})]})]},i.tokenId))})]})}function mve(e){return c.jsx(D2.Provider,{init:void 0,children:c.jsx(pve,{...e})})}function gve(e){const t=_.useMemo(()=>Date.now(),[e.open]);return c.jsxs(Js,{children:[c.jsxs(Ld,{open:e.open,onOpenChange:e.onOpenChange,children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Od,{asChild:!0,children:e.trigger})}),c.jsx(eu,{align:"end",className:"w-96 p-4 space-y-3",children:c.jsx(mve,{chatId:e.chatId,shares:e.shares,now:t,onMint:e.onMint,onRevoke:e.onRevoke})})]}),c.jsx(Ms,{side:"bottom",children:"Mint a public read-only link"})]})}function vve({bindings:e,provider:t,onOpenPath:n}){return e.length<=1?null:c.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-0.5",children:[e.map(r=>{const i=r.worktreePath.split("/").pop()??r.worktreePath,s=r.role==="primary",o=r.projectStatus==="missing";return c.jsxs("div",{role:"button",tabIndex:0,className:"flex items-center gap-1 cursor-pointer",onClick:()=>n(r.worktreePath),onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),n(r.worktreePath))},children:[s?c.jsx("span",{className:"text-emerald-500",children:"●"}):c.jsx("span",{className:"text-muted-foreground",children:"○"}),c.jsx("span",{className:`font-mono tabular-nums text-xs${o?" line-through text-muted-foreground":""}`,children:i})]},r.projectId)}),t==="codex"&&c.jsx("span",{className:"font-mono text-xs text-muted-foreground ml-2",children:"codex: cwd-only"})]})}function q$(e){return e.replace(/[/\\]+$/,"")}function bve(e,t){const n=q$(e);if(!t)return n.split(/[/\\]/).filter(Boolean).pop()??"";const r=q$(t);if(n===r)return"~";for(const i of["/","\\"])if(n.startsWith(r+i))return`~/${n.slice(r.length+1).replace(/\\/g,"/")}`;return n}function xve({hasGitRepo:e=!0,gitStatus:t="unknown",localPath:n,branchName:r,homeDir:i}){if(!e)return"Setup Git";if(t==="unknown")return null;const s=n?bve(n,i):"",o=r??"Detached HEAD";return s?`${s} · ${o}`:o}const $2=qt("OpenExternalSelect",({initialValue:e})=>t=>({lastValue:e,setLastValue:n=>t({lastValue:n})})),aI=1e3,z2=500,B2=5e3,lI=450,F2=250,U2=900,H2="cursor";function Cm(e){switch(e){case"vscode":return"code {path}";case"xcode":return"xed {path}";case"windsurf":return"windsurf {path}";case"custom":return"cursor {path}";case"cursor":default:return"cursor {path}"}}function yve(e){switch(e){case"vscode":return"VS Code";case"xcode":return"Xcode";case"windsurf":return"Windsurf";case"custom":return"Custom";case"cursor":default:return"Cursor"}}function _ve(e){return Number.isFinite(e)?Math.min(B2,Math.max(z2,Math.round(e))):aI}function Sve(e){return Number.isFinite(e)?Math.min(U2,Math.max(F2,Math.round(e))):lI}function wve(e){switch(e){case"vscode":case"xcode":case"windsurf":case"custom":case"cursor":return e;default:return H2}}function Y$(e,t){const n=e==null?void 0:e.trim();return n&&n.length>0?n:Cm(t)}const Ss=tr()(e=>({scrollbackLines:aI,minColumnWidth:lI,editorPreset:H2,editorCommandTemplate:Cm(H2),setScrollbackLines:t=>e({scrollbackLines:_ve(t)}),setMinColumnWidth:t=>e({minColumnWidth:Sve(t)}),setEditorPreset:t=>e(n=>{const r=wve(t);return{editorPreset:r,editorCommandTemplate:r==="custom"?Y$(n.editorCommandTemplate,r):Cm(r)}}),setEditorCommandTemplate:t=>e(n=>({editorCommandTemplate:Y$(t,n.editorPreset)}))})),FC=[{value:"cursor",label:"Cursor"},{value:"xcode",label:"Xcode"},{value:"windsurf",label:"Windsurf"},{value:"custom",label:"Custom"}],ad={cursor:"/editor-icons/cursor.png",defaultApp:"/editor-icons/default-app.png",finder:"/editor-icons/finder.png",preview:"/editor-icons/preview.png",xcode:"/editor-icons/xcode.png",terminal:"/editor-icons/terminal.png",windsurf:"/editor-icons/windsurf.png",custom:"/editor-icons/custom.png"};function ld({src:e,className:t}){return c.jsx("img",{src:e,alt:"","aria-hidden":"true",draggable:!1,className:t})}function YW({preset:e,className:t}){switch(e){case"xcode":return c.jsx(ld,{src:ad.xcode,className:t});case"windsurf":return c.jsx(ld,{src:ad.windsurf,className:t});case"custom":return c.jsx(ld,{src:ad.custom,className:t});case"cursor":case"vscode":default:return c.jsx(ld,{src:ad.cursor,className:t})}}function Cve({className:e}){return c.jsx(ld,{src:ad.finder,className:e})}function kve({className:e}){return c.jsx(ld,{src:ad.preview,className:e})}function Eve({className:e}){return c.jsx(ld,{src:ad.defaultApp,className:e})}function Nve({className:e}){return c.jsx(mC,{className:e})}function Tve({className:e}){return c.jsx(ld,{src:ad.terminal,className:e})}function X$(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ave(e){const t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Rve=[" ","Enter","ArrowUp","ArrowDown"],Mve=[" ","Enter"],Jf="Select",[UC,HC,jve]=Dj(Jf),[sg]=Zc(Jf,[jve,jd]),WC=jd(),[Ive,Dd]=sg(Jf),[Pve,Lve]=sg(Jf),XW=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:s,value:o,defaultValue:a,onValueChange:l,dir:d,name:h,autoComplete:p,disabled:m,required:v,form:b}=e,x=WC(t),[S,C]=_.useState(null),[k,w]=_.useState(null),[N,A]=_.useState(!1),T=$j(d),[M,j]=ym({prop:r,defaultProp:i??!1,onChange:s,caller:Jf}),[P,D]=ym({prop:o,defaultProp:a,onChange:l,caller:Jf}),L=_.useRef(null),I=S?b||!!S.closest("form"):!0,[$,H]=_.useState(new Set),z=Array.from($).map(F=>F.props.value).join(";");return c.jsx(NC,{...x,children:c.jsxs(Ive,{required:v,scope:t,trigger:S,onTriggerChange:C,valueNode:k,onValueNodeChange:w,valueNodeHasChildren:N,onValueNodeHasChildrenChange:A,contentId:Rc(),value:P,onValueChange:D,open:M,onOpenChange:j,dir:T,triggerPointerDownPosRef:L,disabled:m,children:[c.jsx(UC.Provider,{scope:t,children:c.jsx(Pve,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(F=>{H(K=>new Set(K).add(F))},[]),onNativeOptionRemove:_.useCallback(F=>{H(K=>{const W=new Set(K);return W.delete(F),W})},[]),children:n})}),I?c.jsxs(_V,{"aria-hidden":!0,required:v,tabIndex:-1,name:h,autoComplete:p,value:P,onChange:F=>D(F.target.value),disabled:m,form:b,children:[P===void 0?c.jsx("option",{value:""}):null,Array.from($)]},z):null]})})};XW.displayName=Jf;var JW="SelectTrigger",ZW=_.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...i}=e,s=WC(n),o=Dd(JW,n),a=o.disabled||r,l=Vn(t,o.onTriggerChange),d=HC(n),h=_.useRef("touch"),[p,m,v]=wV(x=>{const S=d().filter(w=>!w.disabled),C=S.find(w=>w.value===o.value),k=CV(S,x,C);k!==void 0&&o.onValueChange(k.value)}),b=x=>{a||(o.onOpenChange(!0),v()),x&&(o.triggerPointerDownPosRef.current={x:Math.round(x.pageX),y:Math.round(x.pageY)})};return c.jsx(Dx,{asChild:!0,...s,children:c.jsx(Sn.button,{type:"button",role:"combobox","aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":"none",dir:o.dir,"data-state":o.open?"open":"closed",disabled:a,"data-disabled":a?"":void 0,"data-placeholder":SV(o.value)?"":void 0,...i,ref:l,onClick:nt(i.onClick,x=>{x.currentTarget.focus(),h.current!=="mouse"&&b(x)}),onPointerDown:nt(i.onPointerDown,x=>{h.current=x.pointerType;const S=x.target;S.hasPointerCapture(x.pointerId)&&S.releasePointerCapture(x.pointerId),x.button===0&&x.ctrlKey===!1&&x.pointerType==="mouse"&&(b(x),x.preventDefault())}),onKeyDown:nt(i.onKeyDown,x=>{const S=p.current!=="";!(x.ctrlKey||x.altKey||x.metaKey)&&x.key.length===1&&m(x.key),!(S&&x.key===" ")&&Rve.includes(x.key)&&(b(),x.preventDefault())})})})});ZW.displayName=JW;var QW="SelectValue",eV=_.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:i,children:s,placeholder:o="",...a}=e,l=Dd(QW,n),{onValueNodeHasChildrenChange:d}=l,h=s!==void 0,p=Vn(t,l.onValueNodeChange);return ps(()=>{d(h)},[d,h]),c.jsx(Sn.span,{...a,ref:p,style:{pointerEvents:"none"},children:SV(l.value)?c.jsx(c.Fragment,{children:o}):s})});eV.displayName=QW;var Ove="SelectIcon",tV=_.forwardRef((e,t)=>{const{__scopeSelect:n,children:r,...i}=e;return c.jsx(Sn.span,{"aria-hidden":!0,...i,ref:t,children:r||"▼"})});tV.displayName=Ove;var Dve="SelectPortal",nV=e=>c.jsx(Zm,{asChild:!0,...e});nV.displayName=Dve;var Zf="SelectContent",rV=_.forwardRef((e,t)=>{const n=Dd(Zf,e.__scopeSelect),[r,i]=_.useState();if(ps(()=>{i(new DocumentFragment)},[]),!n.open){const s=r;return s?As.createPortal(c.jsx(iV,{scope:e.__scopeSelect,children:c.jsx(UC.Slot,{scope:e.__scopeSelect,children:c.jsx("div",{children:e.children})})}),s):null}return c.jsx(sV,{...e,ref:t})});rV.displayName=Zf;var Ta=10,[iV,$d]=sg(Zf),$ve="SelectContentImpl",zve=qf("SelectContent.RemoveScroll"),sV=_.forwardRef((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:s,onPointerDownOutside:o,side:a,sideOffset:l,align:d,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:v,sticky:b,hideWhenDetached:x,avoidCollisions:S,...C}=e,k=Dd(Zf,n),[w,N]=_.useState(null),[A,T]=_.useState(null),M=Vn(t,ne=>N(ne)),[j,P]=_.useState(null),[D,L]=_.useState(null),I=HC(n),[$,H]=_.useState(!1),z=_.useRef(!1);_.useEffect(()=>{if(w)return yC(w)},[w]),bC();const F=_.useCallback(ne=>{const[ie,...ae]=I().map(we=>we.ref.current),[Q]=ae.slice(-1),ke=document.activeElement;for(const we of ne)if(we===ke||(we==null||we.scrollIntoView({block:"nearest"}),we===ie&&A&&(A.scrollTop=0),we===Q&&A&&(A.scrollTop=A.scrollHeight),we==null||we.focus(),document.activeElement!==ke))return},[I,A]),K=_.useCallback(()=>F([j,w]),[F,j,w]);_.useEffect(()=>{$&&K()},[$,K]);const{onOpenChange:W,triggerPointerDownPosRef:V}=k;_.useEffect(()=>{if(w){let ne={x:0,y:0};const ie=Q=>{var ke,we;ne={x:Math.abs(Math.round(Q.pageX)-(((ke=V.current)==null?void 0:ke.x)??0)),y:Math.abs(Math.round(Q.pageY)-(((we=V.current)==null?void 0:we.y)??0))}},ae=Q=>{ne.x<=10&&ne.y<=10?Q.preventDefault():w.contains(Q.target)||W(!1),document.removeEventListener("pointermove",ie),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",ie),document.addEventListener("pointerup",ae,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ie),document.removeEventListener("pointerup",ae,{capture:!0})}}},[w,W,V]),_.useEffect(()=>{const ne=()=>W(!1);return window.addEventListener("blur",ne),window.addEventListener("resize",ne),()=>{window.removeEventListener("blur",ne),window.removeEventListener("resize",ne)}},[W]);const[X,G]=wV(ne=>{const ie=I().filter(ke=>!ke.disabled),ae=ie.find(ke=>ke.ref.current===document.activeElement),Q=CV(ie,ne,ae);Q&&setTimeout(()=>Q.ref.current.focus())}),te=_.useCallback((ne,ie,ae)=>{const Q=!z.current&&!ae;(k.value!==void 0&&k.value===ie||Q)&&(P(ne),Q&&(z.current=!0))},[k.value]),oe=_.useCallback(()=>w==null?void 0:w.focus(),[w]),ce=_.useCallback((ne,ie,ae)=>{const Q=!z.current&&!ae;(k.value!==void 0&&k.value===ie||Q)&&L(ne)},[k.value]),de=r==="popper"?W2:oV,ee=de===W2?{side:a,sideOffset:l,align:d,alignOffset:h,arrowPadding:p,collisionBoundary:m,collisionPadding:v,sticky:b,hideWhenDetached:x,avoidCollisions:S}:{};return c.jsx(iV,{scope:n,content:w,viewport:A,onViewportChange:T,itemRefCallback:te,selectedItem:j,onItemLeave:oe,itemTextRefCallback:ce,focusSelectedItem:K,selectedItemText:D,position:r,isPositioned:$,searchRef:X,children:c.jsx(Lx,{as:zve,allowPinchZoom:!0,children:c.jsx(Px,{asChild:!0,trapped:k.open,onMountAutoFocus:ne=>{ne.preventDefault()},onUnmountAutoFocus:nt(i,ne=>{var ie;(ie=k.trigger)==null||ie.focus({preventScroll:!0}),ne.preventDefault()}),children:c.jsx(Jm,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:ne=>ne.preventDefault(),onDismiss:()=>k.onOpenChange(!1),children:c.jsx(de,{role:"listbox",id:k.contentId,"data-state":k.open?"open":"closed",dir:k.dir,onContextMenu:ne=>ne.preventDefault(),...C,...ee,onPlaced:()=>H(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...C.style},onKeyDown:nt(C.onKeyDown,ne=>{const ie=ne.ctrlKey||ne.altKey||ne.metaKey;if(ne.key==="Tab"&&ne.preventDefault(),!ie&&ne.key.length===1&&G(ne.key),["ArrowUp","ArrowDown","Home","End"].includes(ne.key)){let Q=I().filter(ke=>!ke.disabled).map(ke=>ke.ref.current);if(["ArrowUp","End"].includes(ne.key)&&(Q=Q.slice().reverse()),["ArrowUp","ArrowDown"].includes(ne.key)){const ke=ne.target,we=Q.indexOf(ke);Q=Q.slice(we+1)}setTimeout(()=>F(Q)),ne.preventDefault()}})})})})})})});sV.displayName=$ve;var Bve="SelectItemAlignedPosition",oV=_.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:r,...i}=e,s=Dd(Zf,n),o=$d(Zf,n),[a,l]=_.useState(null),[d,h]=_.useState(null),p=Vn(t,M=>h(M)),m=HC(n),v=_.useRef(!1),b=_.useRef(!0),{viewport:x,selectedItem:S,selectedItemText:C,focusSelectedItem:k}=o,w=_.useCallback(()=>{if(s.trigger&&s.valueNode&&a&&d&&x&&S&&C){const M=s.trigger.getBoundingClientRect(),j=d.getBoundingClientRect(),P=s.valueNode.getBoundingClientRect(),D=C.getBoundingClientRect();if(s.dir!=="rtl"){const ke=D.left-j.left,we=P.left-ke,Ae=M.left-we,Xe=M.width+Ae,ft=Math.max(Xe,j.width),Ct=window.innerWidth-Ta,ln=X$(we,[Ta,Math.max(Ta,Ct-ft)]);a.style.minWidth=Xe+"px",a.style.left=ln+"px"}else{const ke=j.right-D.right,we=window.innerWidth-P.right-ke,Ae=window.innerWidth-M.right-we,Xe=M.width+Ae,ft=Math.max(Xe,j.width),Ct=window.innerWidth-Ta,ln=X$(we,[Ta,Math.max(Ta,Ct-ft)]);a.style.minWidth=Xe+"px",a.style.right=ln+"px"}const L=m(),I=window.innerHeight-Ta*2,$=x.scrollHeight,H=window.getComputedStyle(d),z=parseInt(H.borderTopWidth,10),F=parseInt(H.paddingTop,10),K=parseInt(H.borderBottomWidth,10),W=parseInt(H.paddingBottom,10),V=z+F+$+W+K,X=Math.min(S.offsetHeight*5,V),G=window.getComputedStyle(x),te=parseInt(G.paddingTop,10),oe=parseInt(G.paddingBottom,10),ce=M.top+M.height/2-Ta,de=I-ce,ee=S.offsetHeight/2,ne=S.offsetTop+ee,ie=z+F+ne,ae=V-ie;if(ie<=ce){const ke=L.length>0&&S===L[L.length-1].ref.current;a.style.bottom="0px";const we=d.clientHeight-x.offsetTop-x.offsetHeight,Ae=Math.max(de,ee+(ke?oe:0)+we+K),Xe=ie+Ae;a.style.height=Xe+"px"}else{const ke=L.length>0&&S===L[0].ref.current;a.style.top="0px";const Ae=Math.max(ce,z+x.offsetTop+(ke?te:0)+ee)+ae;a.style.height=Ae+"px",x.scrollTop=ie-ce+x.offsetTop}a.style.margin=`${Ta}px 0`,a.style.minHeight=X+"px",a.style.maxHeight=I+"px",r==null||r(),requestAnimationFrame(()=>v.current=!0)}},[m,s.trigger,s.valueNode,a,d,x,S,C,s.dir,r]);ps(()=>w(),[w]);const[N,A]=_.useState();ps(()=>{d&&A(window.getComputedStyle(d).zIndex)},[d]);const T=_.useCallback(M=>{M&&b.current===!0&&(w(),k==null||k(),b.current=!1)},[w,k]);return c.jsx(Uve,{scope:n,contentWrapper:a,shouldExpandOnScrollRef:v,onScrollButtonChange:T,children:c.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:N},children:c.jsx(Sn.div,{...i,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});oV.displayName=Bve;var Fve="SelectPopperPosition",W2=_.forwardRef((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:i=Ta,...s}=e,o=WC(n);return c.jsx(TC,{...o,...s,ref:t,align:r,collisionPadding:i,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});W2.displayName=Fve;var[Uve,cI]=sg(Zf,{}),V2="SelectViewport",aV=_.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:r,...i}=e,s=$d(V2,n),o=cI(V2,n),a=Vn(t,s.onViewportChange),l=_.useRef(0);return c.jsxs(c.Fragment,{children:[c.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),c.jsx(UC.Slot,{scope:n,children:c.jsx(Sn.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:a,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:nt(i.onScroll,d=>{const h=d.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:m}=o;if(m!=null&&m.current&&p){const v=Math.abs(l.current-h.scrollTop);if(v>0){const b=window.innerHeight-Ta*2,x=parseFloat(p.style.minHeight),S=parseFloat(p.style.height),C=Math.max(x,S);if(C<b){const k=C+v,w=Math.min(b,k),N=k-w;p.style.height=w+"px",p.style.bottom==="0px"&&(h.scrollTop=N>0?N:0,p.style.justifyContent="flex-end")}}}l.current=h.scrollTop})})})]})});aV.displayName=V2;var lV="SelectGroup",[Hve,Wve]=sg(lV),cV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=Rc();return c.jsx(Hve,{scope:n,id:i,children:c.jsx(Sn.div,{role:"group","aria-labelledby":i,...r,ref:t})})});cV.displayName=lV;var uV="SelectLabel",dV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=Wve(uV,n);return c.jsx(Sn.div,{id:i.id,...r,ref:t})});dV.displayName=uV;var aw="SelectItem",[Vve,fV]=sg(aw),hV=_.forwardRef((e,t)=>{const{__scopeSelect:n,value:r,disabled:i=!1,textValue:s,...o}=e,a=Dd(aw,n),l=$d(aw,n),d=a.value===r,[h,p]=_.useState(s??""),[m,v]=_.useState(!1),b=Vn(t,k=>{var w;return(w=l.itemRefCallback)==null?void 0:w.call(l,k,r,i)}),x=Rc(),S=_.useRef("touch"),C=()=>{i||(a.onValueChange(r),a.onOpenChange(!1))};if(r==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return c.jsx(Vve,{scope:n,value:r,disabled:i,textId:x,isSelected:d,onItemTextChange:_.useCallback(k=>{p(w=>w||((k==null?void 0:k.textContent)??"").trim())},[]),children:c.jsx(UC.ItemSlot,{scope:n,value:r,disabled:i,textValue:h,children:c.jsx(Sn.div,{role:"option","aria-labelledby":x,"data-highlighted":m?"":void 0,"aria-selected":d&&m,"data-state":d?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...o,ref:b,onFocus:nt(o.onFocus,()=>v(!0)),onBlur:nt(o.onBlur,()=>v(!1)),onClick:nt(o.onClick,()=>{S.current!=="mouse"&&C()}),onPointerUp:nt(o.onPointerUp,()=>{S.current==="mouse"&&C()}),onPointerDown:nt(o.onPointerDown,k=>{S.current=k.pointerType}),onPointerMove:nt(o.onPointerMove,k=>{var w;S.current=k.pointerType,i?(w=l.onItemLeave)==null||w.call(l):S.current==="mouse"&&k.currentTarget.focus({preventScroll:!0})}),onPointerLeave:nt(o.onPointerLeave,k=>{var w;k.currentTarget===document.activeElement&&((w=l.onItemLeave)==null||w.call(l))}),onKeyDown:nt(o.onKeyDown,k=>{var N;((N=l.searchRef)==null?void 0:N.current)!==""&&k.key===" "||(Mve.includes(k.key)&&C(),k.key===" "&&k.preventDefault())})})})})});hV.displayName=aw;var Pv="SelectItemText",pV=_.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:i,...s}=e,o=Dd(Pv,n),a=$d(Pv,n),l=fV(Pv,n),d=Lve(Pv,n),[h,p]=_.useState(null),m=Vn(t,C=>p(C),l.onItemTextChange,C=>{var k;return(k=a.itemTextRefCallback)==null?void 0:k.call(a,C,l.value,l.disabled)}),v=h==null?void 0:h.textContent,b=_.useMemo(()=>c.jsx("option",{value:l.value,disabled:l.disabled,children:v},l.value),[l.disabled,l.value,v]),{onNativeOptionAdd:x,onNativeOptionRemove:S}=d;return ps(()=>(x(b),()=>S(b)),[x,S,b]),c.jsxs(c.Fragment,{children:[c.jsx(Sn.span,{id:l.textId,...s,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?As.createPortal(s.children,o.valueNode):null]})});pV.displayName=Pv;var mV="SelectItemIndicator",gV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return fV(mV,n).isSelected?c.jsx(Sn.span,{"aria-hidden":!0,...r,ref:t}):null});gV.displayName=mV;var K2="SelectScrollUpButton",vV=_.forwardRef((e,t)=>{const n=$d(K2,e.__scopeSelect),r=cI(K2,e.__scopeSelect),[i,s]=_.useState(!1),o=Vn(t,r.onScrollButtonChange);return ps(()=>{if(n.viewport&&n.isPositioned){let a=function(){const d=l.scrollTop>0;s(d)};const l=n.viewport;return a(),l.addEventListener("scroll",a),()=>l.removeEventListener("scroll",a)}},[n.viewport,n.isPositioned]),i?c.jsx(xV,{...e,ref:o,onAutoScroll:()=>{const{viewport:a,selectedItem:l}=n;a&&l&&(a.scrollTop=a.scrollTop-l.offsetHeight)}}):null});vV.displayName=K2;var G2="SelectScrollDownButton",bV=_.forwardRef((e,t)=>{const n=$d(G2,e.__scopeSelect),r=cI(G2,e.__scopeSelect),[i,s]=_.useState(!1),o=Vn(t,r.onScrollButtonChange);return ps(()=>{if(n.viewport&&n.isPositioned){let a=function(){const d=l.scrollHeight-l.clientHeight,h=Math.ceil(l.scrollTop)<d;s(h)};const l=n.viewport;return a(),l.addEventListener("scroll",a),()=>l.removeEventListener("scroll",a)}},[n.viewport,n.isPositioned]),i?c.jsx(xV,{...e,ref:o,onAutoScroll:()=>{const{viewport:a,selectedItem:l}=n;a&&l&&(a.scrollTop=a.scrollTop+l.offsetHeight)}}):null});bV.displayName=G2;var xV=_.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...i}=e,s=$d("SelectScrollButton",n),o=_.useRef(null),a=HC(n),l=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>l(),[l]),ps(()=>{var h;const d=a().find(p=>p.ref.current===document.activeElement);(h=d==null?void 0:d.ref.current)==null||h.scrollIntoView({block:"nearest"})},[a]),c.jsx(Sn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:nt(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:nt(i.onPointerMove,()=>{var d;(d=s.onItemLeave)==null||d.call(s),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:nt(i.onPointerLeave,()=>{l()})})}),Kve="SelectSeparator",yV=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return c.jsx(Sn.div,{"aria-hidden":!0,...r,ref:t})});yV.displayName=Kve;var q2="SelectArrow",Gve=_.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,i=WC(n),s=Dd(q2,n),o=$d(q2,n);return s.open&&o.position==="popper"?c.jsx(AC,{...i,...r,ref:t}):null});Gve.displayName=q2;var qve="SelectBubbleInput",_V=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{const i=_.useRef(null),s=Vn(r,i),o=Ave(t);return _.useEffect(()=>{const a=i.current;if(!a)return;const l=window.HTMLSelectElement.prototype,h=Object.getOwnPropertyDescriptor(l,"value").set;if(o!==t&&h){const p=new Event("change",{bubbles:!0});h.call(a,t),a.dispatchEvent(p)}},[o,t]),c.jsx(Sn.select,{...n,style:{...qH,...n.style},ref:s,defaultValue:t})});_V.displayName=qve;function SV(e){return e===""||e===void 0}function wV(e){const t=Fa(e),n=_.useRef(""),r=_.useRef(0),i=_.useCallback(o=>{const a=n.current+o;t(a),(function l(d){n.current=d,window.clearTimeout(r.current),d!==""&&(r.current=window.setTimeout(()=>l(""),1e3))})(a)},[t]),s=_.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,s]}function CV(e,t,n){const i=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let o=Yve(e,Math.max(s,0));i.length===1&&(o=o.filter(d=>d!==n));const l=o.find(d=>d.textValue.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function Yve(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Xve=XW,kV=ZW,Jve=eV,Zve=tV,Qve=nV,EV=rV,ebe=aV,tbe=cV,NV=dV,TV=hV,nbe=pV,rbe=gV,AV=vV,RV=bV,MV=yV;const Qo=Xve,jp=tbe,ja=Jve,Co=_.forwardRef(({className:e,children:t,...n},r)=>c.jsxs(kV,{ref:r,className:fe("flex h-9 w-full items-center justify-between gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground outline-none transition-colors","placeholder:text-muted-foreground","focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-50","[&>span]:line-clamp-1",e),...n,children:[t,c.jsx(Zve,{asChild:!0,children:c.jsx(Xm,{className:"h-4 w-4 shrink-0 opacity-50"})})]}));Co.displayName=kV.displayName;const jV=_.forwardRef(({className:e,...t},n)=>c.jsx(AV,{ref:n,className:fe("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(h7,{className:"h-4 w-4"})}));jV.displayName=AV.displayName;const IV=_.forwardRef(({className:e,...t},n)=>c.jsx(RV,{ref:n,className:fe("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(Xm,{className:"h-4 w-4"})}));IV.displayName=RV.displayName;const ko=_.forwardRef(({className:e,children:t,position:n="popper",...r},i)=>c.jsx(Qve,{children:c.jsxs(EV,{ref:i,className:fe("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-background text-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:[c.jsx(jV,{}),c.jsx(ebe,{className:fe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),c.jsx(IV,{})]})}));ko.displayName=EV.displayName;const ibe=_.forwardRef(({className:e,...t},n)=>c.jsx(NV,{ref:n,className:fe("px-2 py-1.5 text-sm font-semibold",e),...t}));ibe.displayName=NV.displayName;const ri=_.forwardRef(({className:e,children:t,...n},r)=>c.jsxs(TV,{ref:r,className:fe("relative flex w-full cursor-default select-none items-center rounded-md py-1.5 pl-2 pr-8 text-sm outline-none","focus:bg-accent focus:text-accent-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[c.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:c.jsx(rbe,{children:c.jsx(js,{className:"h-4 w-4"})})}),c.jsx(nbe,{children:t})]}));ri.displayName=TV.displayName;const sbe=_.forwardRef(({className:e,...t},n)=>c.jsx(MV,{ref:n,className:fe("-mx-1 my-1 h-px bg-border",e),...t}));sbe.displayName=MV.displayName;const J$="kanna:last-open-external",PV="py-2 pl-2 pr-8",obe="rounded-md text-sm font-normal focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground",abe="flex items-center gap-3",lbe="h-5 w-5 shrink-0";function LV({value:e,label:t,isMac:n}){return c.jsxs("span",{className:abe,children:[c.jsx(OV,{value:e,isMac:n,className:lbe}),c.jsx("span",{children:t})]})}function cbe(e,t){return{preset:e,commandTemplate:e==="custom"&&(t==null?void 0:t.trim())||Cm(e)}}function ube(e,t){var r;if(e==="finder")return t?"Finder":"Folder";if(e==="terminal")return"Terminal";if(e==="preview")return"Preview";if(e==="default")return"Default App";const n=e.slice(7);return n==="vscode"?"VS Code":((r=FC.find(i=>i.value===n))==null?void 0:r.label)??"Editor"}function OV({value:e,isMac:t,className:n}){var s;if(e==="finder")return t?c.jsx(Cve,{className:n}):c.jsx(Nve,{className:n});if(e==="terminal")return c.jsx(Tve,{className:n});if(e==="preview")return c.jsx(kve,{className:n});if(e==="default")return c.jsx(Eve,{className:n});const r=e.slice(7),i=((s=FC.find(o=>o.value===r))==null?void 0:s.value)??"vscode";return c.jsx(YW,{preset:i,className:n})}function Z$(e,t){if(e==="finder"||e==="terminal"||e==="preview"||e==="default")return e;if(e!=null&&e.startsWith("editor:")){const n=e.slice(7);if(FW(n))return`editor:${n}`}return t}function DV({editorPreset:e,isMac:t,includeFinder:n=!0,includeTerminal:r=!1,includePreview:i=!1,includeDefault:s=!1,menuKind:o="context"}){const a={value:"finder",label:t?"Finder":"Folder"},l={value:"terminal",label:"Terminal"},d={value:"preview",label:"Preview"},h={value:"default",label:"Default App"},m=[{value:"editor:cursor",label:"Cursor"},{value:"editor:xcode",label:"Xcode"},{value:"editor:windsurf",label:"Windsurf"},...e==="custom"?[{value:"editor:custom",label:"Custom"}]:[]],v=`editor:${e}`,b=[...m.filter(x=>x.value===v),...m.filter(x=>x.value!==v)];return o==="navbar"?[...b.filter(x=>x.value===v),...n?[a]:[],...r?[l]:[],...b.filter(x=>x.value!==v)]:[...b,...i&&t?[d]:[],...n?[a]:[],...r?[l]:[],...s?[h]:[]]}function $V(e){var r;if(e.value==="finder"){e.onOpenExternal("open_finder");return}if(e.value==="terminal"){e.onOpenExternal("open_terminal");return}if(e.value==="preview"){e.onOpenExternal("open_preview");return}if(e.value==="default"){e.onOpenExternal("open_default");return}const t=e.value.slice(7),n=((r=FC.find(i=>i.value===t))==null?void 0:r.value)??"vscode";e.onOpenExternal("open_editor",cbe(n,e.editorCommandTemplate))}function dbe({isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s}){const o=`editor:${t}`,a=$2.useScopedStore(m=>m.lastValue),l=$2.useScopedStore(m=>m.setLastValue);_.useEffect(()=>{l(Z$(window.localStorage.getItem(J$),o))},[o,l]);const d=_.useMemo(()=>DV({editorPreset:t,isMac:e,includeFinder:!0,includeTerminal:!0,menuKind:"navbar"}),[t,e]);function h(m){l(m),window.localStorage.setItem(J$,m),$V({value:m,editorCommandTemplate:n,onOpenExternal:s})}let p;return a==="finder"?p=r:a===`editor:${t}`?p=i:p=void 0,c.jsxs("div",{className:"grid grid-cols-[1fr_auto]",children:[c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:()=>h(a),title:`Open in ${ube(a,e)}`,className:"border-0 !pl-2.5 !pr-1 hover:!border-border/0 hover:!bg-transparent",children:c.jsx(OV,{value:a,isMac:e,className:"size-6"})})}),c.jsx(Tb,{side:"bottom",shortcut:p})]}),c.jsxs(Qo,{value:void 0,onValueChange:m=>h(Z$(m,a)),children:[c.jsx(Co,{"aria-label":"Choose open destination",className:"!pl-1 !pr-2.5 border-0 bg-transparent hover:bg-transparent focus:ring-0 focus:ring-offset-0 [&>svg]:hidden",children:c.jsx("span",{className:"flex items-center justify-center",children:c.jsx(Xm,{className:"h-4 w-4 opacity-60"})})}),c.jsx(ko,{align:"end",children:c.jsx(jp,{children:d.map(m=>c.jsx(ri,{value:m.value,className:PV,children:c.jsx(LV,{value:m.value,label:m.label,isMac:e})},m.value))})})]})]})}function fbe({isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s}){const o=`editor:${t}`;return c.jsx($2.Provider,{init:{initialValue:o},children:c.jsx(dbe,{isMac:e,editorPreset:t,editorCommandTemplate:n,finderShortcut:r,editorShortcut:i,onOpenExternal:s})})}function hbe({isMac:e,editorPreset:t,editorCommandTemplate:n,includeFinder:r=!0,includeTerminal:i=!1,includePreview:s=!1,includeDefault:o=!1,onOpenExternal:a}){const l=DV({editorPreset:t,isMac:e,includeFinder:r,includeTerminal:i,includePreview:s,includeDefault:o});return c.jsx(Id,{className:"rounded-lg p-1",children:l.map(d=>c.jsx(vr,{className:`${PV} ${obe}`,onSelect:h=>{h.preventDefault(),$V({value:d.value,editorCommandTemplate:n,onOpenExternal:a})},children:c.jsx(LV,{value:d.value,label:d.label,isMac:e})},d.value))})}const J_=Object.freeze([]);function wN(e){return e.phase!=="exited"}function pbe(){return tr()(e=>({instances:J_,popoverOpen:!1,applySnapshot:t=>{const n=t.filter(wN);e({instances:n.length===0?J_:n})},applyDiff:t=>e(n=>{const r=n.instances;if(t.op==="added")return!wN(t.instance)||r.some(s=>s.chatId===t.instance.chatId)?n:{instances:[...r,t.instance]};if(t.op==="updated"){if(!wN(t.instance)){const a=r.filter(l=>l.chatId!==t.instance.chatId);return a.length===r.length?n:{instances:a.length===0?J_:a}}return r.some(a=>a.chatId===t.instance.chatId)?{instances:r.map(a=>a.chatId===t.instance.chatId?t.instance:a)}:{instances:[...r,t.instance]}}const i=r.filter(s=>s.chatId!==t.chatId);return i.length===r.length?n:{instances:i.length===0?J_:i}}),openPopover:()=>e({popoverOpen:!0}),closePopover:()=>e({popoverOpen:!1}),togglePopover:()=>e(t=>({popoverOpen:!t.popoverOpen}))}))}const kc=pbe();function mbe(){return kc(e=>e.instances)}function gbe(){return kc(e=>e.instances.length)}function vbe(){return kc(e=>e.popoverOpen)}const Y2=qt("PtyInstanceRow",()=>e=>({confirmKill:!1,setConfirmKill:t=>e({confirmKill:t})})),km={spawning:"var(--warning)","trust-dialog":"var(--warning)",ready:"var(--success, oklch(0.72 0.16 145))",streaming:"var(--primary)",cancelling:"var(--warning)",exited:"var(--muted-foreground)"},bbe={spawning:"spawning","trust-dialog":"trust",ready:"ready",streaming:"streaming",cancelling:"cancelling",exited:"exited"};function xbe(e){return e.length<=40?e:`…${e.slice(-39)}`}function ybe(e){return e.length>8?e.slice(0,8):e}function _be(e,t){const n=t??Date.now(),r=Math.max(0,n-e),i=Math.floor(r/1e3);if(i<60)return`${i}s`;const s=Math.floor(i/60);return s<60?`${s}m ${i%60}s`:`${Math.floor(s/60)}h ${s%60}m`}function Q$(e){if(e<1024)return`${e} B`;const t=e/1024;if(t<1024)return`${t.toFixed(0)} KB`;const n=t/1024;return n<1024?`${n.toFixed(0)} MB`:`${(n/1024).toFixed(1)} GB`}function e4(e){return e>=100?`${e.toFixed(0)}%`:e>=10?`${e.toFixed(1)}%`:`${e.toFixed(1)}%`}function Sbe({phase:e}){return c.jsxs("span",{className:"inline-flex items-center gap-1.5 px-1.5 py-0.5 rounded-full text-[10px] font-mono uppercase tracking-wide tabular-nums",style:{background:"color-mix(in oklch, var(--muted) 60%, transparent)"},children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block w-[6px] h-[6px] rounded-full",style:{backgroundColor:km[e]}}),c.jsx("span",{style:{color:km[e]},children:bbe[e]})]})}function wbe({instance:e,onOpenChat:t,onCancel:n,onKill:r}){return c.jsx(Y2.Provider,{init:void 0,children:c.jsx(Cbe,{instance:e,onOpenChat:t,onCancel:n,onKill:r})})}function Cbe({instance:e,onOpenChat:t,onCancel:n,onKill:r}){const i=Y2.useScopedStore(a=>a.confirmKill),s=Y2.useScopedStoreApi(),o=_.useCallback(()=>{const a=s.getState();a.confirmKill?(r(e.chatId),a.setConfirmKill(!1)):a.setConfirmKill(!0)},[s,e.chatId,r]);return c.jsxs("div",{className:"group border border-border/60 rounded-lg p-3 flex flex-col gap-2 hover:border-border transition-colors",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsx("button",{type:"button",onClick:()=>t(e.chatId),className:"text-xs font-mono font-medium text-foreground hover:text-primary transition-colors text-left truncate flex-1 min-w-0",children:ybe(e.chatId)}),c.jsx(Sbe,{phase:e.phase})]}),c.jsxs("div",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px] text-muted-foreground font-mono tabular-nums",children:[c.jsxs("div",{className:"truncate",title:e.cwd,children:[c.jsx("span",{className:"text-foreground/40",children:"cwd"})," ",xbe(e.cwd)]}),c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"pid"})," ",e.pid??"—"]}),c.jsxs("div",{className:"truncate",title:e.model,children:[c.jsx("span",{className:"text-foreground/40",children:"model"})," ",e.model||"—"]}),c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"up"})," ",_be(e.startedAt,e.exitedAt)]}),e.accountLabel?c.jsxs("div",{className:"truncate col-span-2",title:e.accountLabel,children:[c.jsx("span",{className:"text-foreground/40",children:"acct"})," ",e.accountLabel,e.oauthMasked?c.jsxs("span",{className:"text-foreground/30",children:[" · ",e.oauthMasked]}):null]}):null,e.planMode!==null?c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"plan"})," ",e.planMode?"on":"off"]}):null,e.smokeTest?c.jsxs("div",{children:[c.jsx("span",{className:"text-foreground/40",children:"smoke"})," ",c.jsx("span",{style:{color:e.smokeTest==="pass"?km.ready:km.exited},children:e.smokeTest})]}):null,e.rssBytes!==null?c.jsxs("div",{className:"truncate col-span-2",title:"Resident memory (current · peak across session)",children:[c.jsx("span",{className:"text-foreground/40",children:"mem"})," ",Q$(e.rssBytes),e.rssPeakBytes!==null&&e.rssPeakBytes>e.rssBytes?c.jsxs("span",{className:"text-foreground/30",children:[" · peak ",Q$(e.rssPeakBytes)]}):null]}):null,e.cpuPercent!==null?c.jsxs("div",{className:"truncate col-span-2",title:"CPU usage % across process tree (current · peak; >100% = multi-core)",children:[c.jsx("span",{className:"text-foreground/40",children:"cpu"})," ",e4(e.cpuPercent),e.cpuPeakPercent!==null&&e.cpuPeakPercent>e.cpuPercent?c.jsxs("span",{className:"text-foreground/30",children:[" · peak ",e4(e.cpuPeakPercent)]}):null]}):null]}),e.phase!=="exited"?c.jsxs("div",{className:"flex items-center gap-1.5 pt-1",children:[c.jsx("button",{type:"button",onClick:()=>t(e.chatId),className:"text-[10px] font-mono px-2 py-1 rounded-md border border-border/60 hover:bg-muted/40 transition-colors",children:"open"}),c.jsx("button",{type:"button",onClick:()=>n(e.chatId),className:"text-[10px] font-mono px-2 py-1 rounded-md border border-border/60 hover:bg-muted/40 transition-colors",children:"cancel"}),c.jsx("button",{type:"button",onClick:o,onBlur:()=>s.getState().setConfirmKill(!1),className:"text-[10px] font-mono px-2 py-1 rounded-md border transition-colors ml-auto",style:{borderColor:i?"var(--destructive)":"var(--border)",color:i?"var(--destructive)":void 0},"aria-label":i?"Confirm kill":"Kill PTY process",children:i?"confirm kill?":"kill"})]}):c.jsxs("div",{className:"text-[10px] font-mono text-muted-foreground pt-1",children:["exited",e.exitCode!==null?` · code ${e.exitCode}`:""]})]})}function kbe({instances:e,liveCount:t,open:n,onOpenChange:r,onOpenChat:i,onCancel:s,onKill:o}){const a=t>0,l=a?`${t} claude PTY instance${t===1?"":"s"}`:"No live PTY instances";return c.jsxs(Ld,{open:n,onOpenChange:r,children:[c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsx(Od,{asChild:!0,children:c.jsxs("button",{type:"button","aria-label":l,className:"inline-flex items-center gap-1.5 px-1.5 h-9 rounded-md hover:bg-transparent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block w-[7px] h-[7px] rounded-full flex-shrink-0",style:{backgroundColor:a?km.ready:"var(--muted-foreground)"}}),c.jsxs("span",{className:"text-xs font-mono font-medium tabular-nums leading-none",style:{color:a?km.ready:"var(--muted-foreground)"},children:["pty ",t]})]})})}),c.jsx(Ms,{side:"bottom",children:l})]}),c.jsxs(eu,{align:"end",sideOffset:8,className:"w-[420px] p-3",children:[c.jsxs("div",{className:"flex items-center justify-between mb-3",children:[c.jsx("h3",{className:"text-xs font-mono uppercase tracking-wider text-foreground/60",children:"claude pty instances"}),c.jsxs("span",{className:"text-[10px] font-mono text-muted-foreground tabular-nums",children:[t," live"]})]}),e.length===0?c.jsx("div",{className:"text-xs text-muted-foreground text-center py-6 font-mono",children:"no instances yet"}):c.jsx("div",{className:"flex flex-col gap-2 max-h-[60vh] overflow-y-auto",children:e.map(d=>c.jsx(wbe,{instance:d,onOpenChat:i,onCancel:s,onKill:o},d.chatId))})]})]})}function Ebe({socket:e,onOpenChat:t}){const n=mbe(),r=gbe(),i=vbe(),s=_.useCallback(h=>{const p=kc.getState();h?p.openPopover():p.closePopover()},[]),o=_.useCallback(h=>{kc.getState().closePopover(),t==null||t(h)},[t]),a=_.useCallback(h=>{if(!e)return;const p={type:"pty.cancel",chatId:h};e.command(p).catch(()=>{})},[e]),l=_.useCallback(h=>{if(!e)return;const p={type:"pty.kill",chatId:h};e.command(p).catch(()=>{})},[e]),d=_.useMemo(()=>n,[n]);return c.jsx(kbe,{instances:d,liveCount:r,open:i,onOpenChange:s,onOpenChat:o,onCancel:a,onKill:l})}const zV=tr()(e=>({sharePopoverOpen:!1,setSharePopoverOpen:t=>e({sharePopoverOpen:t})})),Nbe=()=>zV(e=>e.sharePopoverOpen),Tbe=()=>zV(e=>e.setSharePopoverOpen);function Abe(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget.getBoundingClientRect();e.currentTarget.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:t.left+t.width/2,clientY:t.bottom,view:window}))}function Rbe({showOnDesktop:e,onToggleEmbeddedTerminal:t}){return t?c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:Abe,title:"More actions",className:fe("border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",e?"flex":"flex md:hidden"),children:c.jsx(wb,{strokeWidth:2,className:"h-4.5"})})}),c.jsx(Id,{children:t?c.jsxs(vr,{onSelect:n=>{n.preventDefault(),t()},children:[c.jsx(gC,{strokeWidth:2,className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Toggle Terminal"})]}):null})]}):null}function Mbe({sidebarCollapsed:e,onOpenSidebar:t,onExpandSidebar:n,onNewChat:r,localPath:i,embeddedTerminalVisible:s=!1,onToggleEmbeddedTerminal:o,rightSidebarVisible:a=!1,onToggleRightSidebar:l,onOpenExternal:d,editorPreset:h="cursor",editorCommandTemplate:p,platform:m="darwin",finderShortcut:v,editorShortcut:b,terminalShortcut:x,rightSidebarShortcut:S,branchName:C,homeDir:k,hasGitRepo:w=!0,gitStatus:N="unknown",timings:A,status:T,resolvedBindings:M,provider:j,onOpenPath:P=()=>{},socket:D,onOpenPtyChat:L,currentChatId:I,shareShares:$,onShareMint:H,onShareRevoke:z}){const F=xve({hasGitRepo:w,gitStatus:N,localPath:i,branchName:C,homeDir:k}),K=Nbe(),W=Tbe(),V=m==="darwin";return c.jsxs(jj,{className:fe("absolute top-0 left-0 right-0 z-10 md:pt-3 px-3 border-border/0 md:pb-0 flex items-center justify-center"," bg-gradient-to-b from-background/70"),children:[c.jsxs("div",{className:"relative flex items-center gap-2 w-full",children:[c.jsxs("div",{className:`flex items-center gap-1 flex-shrink-0 border border-border/0 rounded-2xl ${e?"px-1.5 border-border":""} p-1 backdrop-blur-lg`,children:[c.jsx(Me,{variant:"ghost",size:"icon-mobile",className:"md:hidden",onClick:t,"aria-label":"Open sidebar",children:c.jsx(rj,{className:"size-4.5"})}),e&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"flex items-center justify-center w-[36px] h-[36px]",children:c.jsx(fd,{className:"h-4 w-4 sm:h-5 sm:w-5 text-logo ml-1 hidden md:block"})}),c.jsx(Me,{variant:"ghost",size:"icon",className:"hidden md:flex",onClick:n,title:"Expand sidebar","aria-label":"Expand sidebar",children:c.jsx(m2,{className:"size-4.5"})})]}),c.jsx(Me,{variant:"ghost",size:"icon",className:"hover:!border-border/0 hover:!bg-transparent",onClick:r,title:"Compose","aria-label":"New chat",children:c.jsx(aj,{className:"size-4.5"})})]}),A&&T?c.jsx("div",{className:"flex-1 min-w-0 flex items-center justify-center select-none",children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("div",{className:"flex items-center gap-2 cursor-default",children:[c.jsxs("span",{className:"flex md:hidden items-center gap-1",children:[c.jsx("span",{className:fe("text-xs font-medium",N$(E$(T))),children:"●"}),c.jsx("span",{className:"text-xs font-medium text-foreground",children:N2(T)}),c.jsx("span",{className:"text-xs font-mono tabular-nums text-foreground/80",children:E2(A.derivedAtMs-A.stateEnteredAt)})]}),c.jsxs("span",{className:"hidden md:flex items-center gap-2",children:[c.jsxs("span",{className:"flex items-center gap-1",children:[c.jsx("span",{className:fe("text-xs",N$(E$(T))),children:"●"}),c.jsx("span",{className:"text-xs font-medium text-foreground",children:N2(T)})]}),c.jsx("span",{className:"text-xs font-mono tabular-nums text-foreground/80",children:E2(A.derivedAtMs-A.stateEnteredAt)}),c.jsx("span",{className:"h-3 w-px bg-border/60","aria-hidden":!0}),c.jsx("span",{className:"text-xs tabular-nums text-muted-foreground",children:Jo(A.derivedAtMs-A.activeSessionStartedAt)}),A.lastTurnDurationMs!=null?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"h-3 w-px bg-border/60","aria-hidden":!0}),c.jsx("span",{className:"text-xs tabular-nums text-muted-foreground",children:Jo(A.lastTurnDurationMs)})]}):null]})]})}),c.jsx(Ms,{side:"bottom",className:"text-left",children:c.jsxs("div",{className:"space-y-0.5 text-xs",children:[c.jsxs("div",{children:["Chat created ",Jo(A.derivedAtMs-A.chatCreatedAt)," ago"]}),c.jsxs("div",{children:["Idle ",Jo(A.cumulativeMs.idle)]}),c.jsxs("div",{children:["Running ",Jo(A.cumulativeMs.running)]}),c.jsxs("div",{children:["Waiting ",Jo(A.cumulativeMs.waiting_for_user)]})]})})]})}):c.jsx("div",{className:"flex-1 min-w-0"}),c.jsx("div",{className:"flex items-center flex-shrink-0 border border-border rounded-2xl backdrop-blur-lg",children:c.jsx(Ebe,{socket:D,onOpenChat:L})}),i&&(d||o||l)?c.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[d?c.jsx("div",{className:"hidden py-0.5 md:block border border-border rounded-2xl backdrop-blur-lg",children:c.jsx(fbe,{isMac:V,editorPreset:h,editorCommandTemplate:p,finderShortcut:v,editorShortcut:b,onOpenExternal:d})}):null,o||l?c.jsxs("div",{className:"flex items-center border border-border rounded-2xl px-2 py-0.5 backdrop-blur-lg",children:[c.jsx(Rbe,{showOnDesktop:a,onToggleEmbeddedTerminal:o}),o?c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsx(Me,{variant:"ghost",size:"none",onClick:o,"aria-label":"Toggle terminal","aria-pressed":s,className:fe(a?"hidden":"hidden md:flex","border border-border/0 hover:!border-border/0 px-1.5 h-9 hover:!bg-transparent",s&&"text-foreground"),children:c.jsx(gC,{strokeWidth:2,className:"h-4.5"})})}),c.jsx(Tb,{side:"bottom",shortcut:x})]}):null,I&&H&&z?c.jsx(gve,{chatId:I,shares:$??[],open:K,onOpenChange:W,trigger:c.jsx(fve,{}),onMint:H,onRevoke:z}):null,l?c.jsxs(XS,{children:[c.jsx(JS,{asChild:!0,children:c.jsxs(Me,{variant:"ghost",onClick:l,className:fe("border flex flex-row items-center gap-1.5 h-9 border-border/0 pl-1.5 pr-2 hover:!border-border/0 hover:!bg-transparent",a&&"text-foreground"),children:[a?c.jsx(Doe,{strokeWidth:2.25,className:"h-4"}):c.jsx(Cc,{strokeWidth:2.25,className:"h-4"}),F&&!a?c.jsx("div",{className:"text-[13px] font-mono max-w-[280px] truncate hidden md:block",children:F}):null]})}),c.jsx(Tb,{side:"bottom",shortcut:S})]}):null]}):null]}):null]}),M&&M.length>1&&c.jsx(vve,{bindings:M,provider:j??null,onOpenPath:P})]})}var CN={exports:{}},kN={};/**
|
|
776
776
|
* @license React
|
|
777
777
|
* use-sync-external-store-shim.production.js
|
|
778
778
|
*
|
|
@@ -2684,7 +2684,7 @@ XID_Start XIDS`.split(/\s/).map(e=>[i1(e),e])),wCe=new Map([["s",gi(383)],[gi(38
|
|
|
2684
2684
|
|(?![\\s\\S])))+`,"m"),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})})(Prism);const fm=/^(\d+(?:\.\d+)?)px$/,Rn={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};let Pl=class yJ extends Vi{constructor(n=Rn.NO_STATUS,r=1,i,s){super(s);U(this,"__colSpan");U(this,"__rowSpan");U(this,"__headerState");U(this,"__width");U(this,"__backgroundColor");U(this,"__verticalAlign");this.__colSpan=r,this.__rowSpan=1,this.__headerState=n,this.__width=i,this.__backgroundColor=null,this.__verticalAlign=void 0}static getType(){return"tablecell"}static clone(n){return new yJ(n.__headerState,n.__colSpan,n.__width,n.__key)}afterCloneFrom(n){super.afterCloneFrom(n),this.__rowSpan=n.__rowSpan,this.__backgroundColor=n.__backgroundColor,this.__verticalAlign=n.__verticalAlign,this.__colSpan=n.__colSpan,this.__headerState=n.__headerState,this.__width=n.__width}static importDOM(){return{td:n=>({conversion:X6,priority:0}),th:n=>({conversion:X6,priority:0})}}static importJSON(n){return no().updateFromJSON(n)}updateFromJSON(n){return super.updateFromJSON(n).setHeaderStyles(n.headerState).setColSpan(n.colSpan||1).setRowSpan(n.rowSpan||1).setWidth(n.width||void 0).setBackgroundColor(n.backgroundColor||null).setVerticalAlign(n.verticalAlign||void 0)}createDOM(n){const r=document.createElement(this.getTag());return this.__width&&(r.style.width=`${this.__width}px`),this.__colSpan>1&&(r.colSpan=this.__colSpan),this.__rowSpan>1&&(r.rowSpan=this.__rowSpan),this.__backgroundColor!==null&&(r.style.backgroundColor=this.__backgroundColor),AR(this.__verticalAlign)&&(r.style.verticalAlign=this.__verticalAlign),Yr(r,n.theme.tableCell,this.hasHeader()&&n.theme.tableCellHeader),r}exportDOM(n){const r=super.exportDOM(n);if(Mt(r.element)){const i=r.element;i.setAttribute("data-temporary-table-cell-lexical-key",this.getKey()),i.style.border="1px solid black",this.__colSpan>1&&(i.colSpan=this.__colSpan),this.__rowSpan>1&&(i.rowSpan=this.__rowSpan),i.style.width=`${this.getWidth()||75}px`,i.style.verticalAlign=this.getVerticalAlign()||"top",i.style.textAlign="start",this.__backgroundColor===null&&this.hasHeader()&&(i.style.backgroundColor="#f2f3f5")}return r}exportJSON(){return{...super.exportJSON(),...AR(this.__verticalAlign)&&{verticalAlign:this.__verticalAlign},backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(n){const r=this.getWritable();return r.__colSpan=n,r}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(n){const r=this.getWritable();return r.__rowSpan=n,r}getTag(){return this.hasHeader()?"th":"td"}setHeaderStyles(n,r=Rn.BOTH){const i=this.getWritable();return i.__headerState=n&r|i.__headerState&~r,i}getHeaderStyles(){return this.getLatest().__headerState}setWidth(n){const r=this.getWritable();return r.__width=n,r}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(n){const r=this.getWritable();return r.__backgroundColor=n,r}getVerticalAlign(){return this.getLatest().__verticalAlign}setVerticalAlign(n){const r=this.getWritable();return r.__verticalAlign=n||void 0,r}toggleHeaderStyle(n){const r=this.getWritable();return(r.__headerState&n)===n?r.__headerState-=n:r.__headerState+=n,r}hasHeaderState(n){return(this.getHeaderStyles()&n)===n}hasHeader(){return this.getLatest().__headerState!==Rn.NO_STATUS}updateDOM(n){return n.__headerState!==this.__headerState||n.__width!==this.__width||n.__colSpan!==this.__colSpan||n.__rowSpan!==this.__rowSpan||n.__backgroundColor!==this.__backgroundColor||n.__verticalAlign!==this.__verticalAlign}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}};function AR(e){return e==="middle"||e==="bottom"}function X6(e){const t=e,n=e.nodeName.toLowerCase();let r;fm.test(t.style.width)&&(r=parseFloat(t.style.width));let i=Rn.NO_STATUS;if(n==="th"){const x=t.getAttribute("scope");if(x==="col")i=Rn.COLUMN;else if(x==="row")i=Rn.ROW;else{const S=t.parentElement,C=Mt(S)&&S.nodeName.toLowerCase()==="tr"&&Mt(S.parentElement)&&(S.parentElement.nodeName.toLowerCase()==="thead"||S.rowIndex===0),k=t.cellIndex===0;C&&(i|=Rn.ROW),k&&(i|=Rn.COLUMN),i===Rn.NO_STATUS&&(i=Rn.ROW)}}const s=no(i,t.colSpan,r);s.__rowSpan=t.rowSpan;const o=t.style.backgroundColor;o!==""&&(s.__backgroundColor=o);const a=t.style.verticalAlign;AR(a)&&(s.__verticalAlign=a);const l=t.style,d=(l&&l.textDecoration||"").split(" "),h=l.fontWeight==="700"||l.fontWeight==="bold",p=d.includes("line-through"),m=l.fontStyle==="italic",v=d.includes("underline"),b=l.color;return{after:x=>{const S=[];let C=null;const k=()=>{if(C){const w=C.getFirstChild();oi(w)&&C.getChildrenSize()===1&&w.remove()}};for(const w of x)if(OY(w)||Pe(w)||oi(w)){if(Pe(w)&&(h&&w.toggleFormat("bold"),p&&w.toggleFormat("strikethrough"),m&&w.toggleFormat("italic"),v&&w.toggleFormat("underline"),b)){const N=w.getStyle();N.includes("color:")||w.setStyle(N+`color: ${b};`)}C?C.append(w):(C=Pt().append(w),S.push(C))}else S.push(w),k(),C=null;return k(),S.length===0&&S.push(Pt()),S},node:s}}function no(e=Rn.NO_STATUS,t=1,n){return ai(new Pl(e,t,n))}function St(e){return e instanceof Pl}const gRe=mt("INSERT_TABLE_COMMAND");function Rt(e,...t){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",e);for(const i of t)r.append("v",i);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}let Mh=class _J extends Vi{constructor(n,r){super(r);U(this,"__height");this.__height=n}static getType(){return"tablerow"}static clone(n){return new _J(n.__height,n.__key)}afterCloneFrom(n){super.afterCloneFrom(n),this.__height=n.__height}static importDOM(){return{tr:n=>({conversion:vRe,priority:0})}}static importJSON(n){return Ed().updateFromJSON(n)}updateFromJSON(n){return super.updateFromJSON(n).setHeight(n.height)}exportJSON(){const n=this.getHeight();return{...super.exportJSON(),...n===void 0?void 0:{height:n}}}createDOM(n){const r=document.createElement("tr");return this.__height&&(r.style.height=`${this.__height}px`),Yr(r,n.theme.tableRow),r}extractWithChild(n,r,i){return i==="html"}isShadowRoot(){return!0}setHeight(n){const r=this.getWritable();return r.__height=n,r}getHeight(){return this.getLatest().__height}updateDOM(n){return n.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}};function vRe(e){const t=e;let n;return fm.test(t.style.height)&&(n=parseFloat(t.style.height)),{after:r=>Hw(r,St),node:Ed(n)}}function Ed(e){return ai(new Mh(e))}function ur(e){return e instanceof Mh}function bRe(e,t,n=!0){const r=my();for(let i=0;i<e;i++){const s=Ed();for(let o=0;o<t;o++){let a=Rn.NO_STATUS;typeof n=="object"?(i===0&&n.rows&&(a|=Rn.ROW),o===0&&n.columns&&(a|=Rn.COLUMN)):n&&(i===0&&(a|=Rn.ROW),o===0&&(a|=Rn.COLUMN));const l=no(a),d=Pt();d.append(Hn()),l.append(d),s.append(l)}r.append(s)}return r}function xRe(e){const t=Vt(e,n=>hr(n));if(hr(t))return t;throw new Error("Expected table cell to be inside of table.")}const RR=(e,t)=>e===Rn.BOTH||e===t?t:Rn.NO_STATUS;function yRe(e,t=!0){const[,,n]=yl(e),[r,i]=ha(n,e,e),s=r[0].length,{startRow:o}=i;let a=null;if(t){const l=o+e.__rowSpan-1,d=r[l],h=Ed();for(let m=0;m<s;m++){const{cell:v,startRow:b}=d[m];if(b+v.__rowSpan-1<=l){const x=d[m].cell.__headerState,S=RR(x,Rn.COLUMN);h.append(no(S).append(Pt()))}else v.setRowSpan(v.__rowSpan+1)}const p=n.getChildAtIndex(l);ur(p)||Rt(256),p.insertAfter(h),a=h}else{const l=o,d=r[l],h=Ed();for(let m=0;m<s;m++){const{cell:v,startRow:b}=d[m];if(b===l){const x=d[m].cell.__headerState,S=RR(x,Rn.COLUMN);h.append(no(S).append(Pt()))}else v.setRowSpan(v.__rowSpan+1)}const p=n.getChildAtIndex(l);ur(p)||Rt(257),p.insertBefore(h),a=h}return a}function _Re(e,t=!0,n=!0){const[,,r]=yl(e),[i,s]=ha(r,e,e),o=i.length,{startColumn:a}=s,l=t?a+e.__colSpan-1:a-1,d=r.getFirstChild();ur(d)||Rt(120);let h=null;function p(b=Rn.NO_STATUS){const x=no(b).append(Pt());return h===null&&(h=x),x}let m=d;e:for(let b=0;b<o;b++){if(b!==0){const A=m.getNextSibling();ur(A)||Rt(121),m=A}const x=i[b],S=x[l<0?0:l].cell.__headerState,C=RR(S,Rn.ROW);if(l<0){SJ(m,p(C));continue}const{cell:k,startColumn:w,startRow:N}=x[l];if(w+k.__colSpan-1<=l){let A=k,T=N,M=l;for(;T!==b&&A.__rowSpan>1;){if(M-=k.__colSpan,!(M>=0)){m.append(p(C));continue e}{const{cell:j,startRow:P}=x[M];A=j,T=P}}A.insertAfter(p(C))}else k.setColSpan(k.__colSpan+1)}h!==null&&n&&SRe(h);const v=r.getColWidths();if(v){const b=[...v],x=l<0?0:l,S=b[x];b.splice(x,0,S),r.setColWidths(b)}return h}function SRe(e){const t=e.getFirstDescendant();t==null?e.selectStart():t.getParentOrThrow().selectStart()}function SJ(e,t){const n=e.getFirstChild();n!==null?n.insertBefore(t):e.append(t)}function wRe(e){if(e.length===0)return null;const t=xRe(e[0]),[n]=Tc(t,null,null);let r=1/0,i=-1/0,s=1/0,o=-1/0;const a=new Set;for(const v of n)for(const b of v){if(!b||!b.cell)continue;const x=b.cell.getKey();if(!a.has(x)&&e.some(S=>S.is(b.cell))){a.add(x);const S=b.startRow,C=b.startColumn,k=b.cell.__rowSpan||1,w=b.cell.__colSpan||1;r=Math.min(r,S),i=Math.max(i,S+k-1),s=Math.min(s,C),o=Math.max(o,C+w-1)}}if(r===1/0||s===1/0)return null;const l=i-r+1,d=o-s+1,h=n[r][s];if(!h.cell)return null;const p=h.cell;p.setColSpan(d),p.setRowSpan(l);const m=new Set([p.getKey()]);for(let v=r;v<=i;v++)for(let b=s;b<=o;b++){const x=n[v][b];if(!x.cell)continue;const S=x.cell,C=S.getKey();m.has(C)||(m.add(C),CRe(S)||p.append(...S.getChildren()),S.remove())}return p.getChildrenSize()===0&&p.append(Pt()),p}function CRe(e){if(e.getChildrenSize()!==1)return!1;const t=e.getFirstChildOrThrow();return!(!ga(t)||!t.isEmpty())}function kRe(e){const[t,n,r]=yl(e),i=t.__colSpan,s=t.__rowSpan;if(i===1&&s===1)return;const[o,a]=ha(r,t,t),{startColumn:l,startRow:d}=a,h=t.__headerState&Rn.COLUMN,p=Array.from({length:i},(b,x)=>{let S=h;for(let C=0;S!==0&&C<o.length;C++)S&=o[C][x+l].cell.__headerState;return S}),m=t.__headerState&Rn.ROW,v=Array.from({length:s},(b,x)=>{let S=m;for(let C=0;S!==0&&C<o[0].length;C++)S&=o[x+d][C].cell.__headerState;return S});if(i>1){for(let b=1;b<i;b++)t.insertAfter(no(p[b]|v[0]).append(Pt()));t.setColSpan(1)}if(s>1){let b;for(let x=1;x<s;x++){const S=d+x,C=o[S];b=(b||n).getNextSibling(),ur(b)||Rt(125);let k=null;for(let w=0;w<l;w++){const N=C[w],A=N.cell;N.startRow===S&&(k=A),A.__colSpan>1&&(w+=A.__colSpan-1)}if(k===null)for(let w=i-1;w>=0;w--)SJ(b,no(p[w]|v[x]).append(Pt()));else for(let w=i-1;w>=0;w--)k.insertAfter(no(p[w]|v[x]).append(Pt()))}t.setRowSpan(1)}}function ha(e,t,n){const[r,i,s]=Tc(e,t,n);return i===null&&Rt(207),s===null&&Rt(208),[r,i,s]}function Tc(e,t,n){const r=[];let i=null,s=null;function o(l){let d=r[l];return d===void 0&&(r[l]=d=[]),d}const a=e.getChildren();for(let l=0;l<a.length;l++){const d=a[l];ur(d)||Rt(209);const h=o(l);for(let p=d.getFirstChild(),m=0;p!=null;p=p.getNextSibling()){for(St(p)||Rt(147);h[m]!==void 0;)m++;const v={cell:p,startColumn:m,startRow:l},{__rowSpan:b,__colSpan:x}=p;for(let S=0;S<b&&!(l+S>=a.length);S++){const C=o(l+S);for(let k=0;k<x;k++)C[m+k]=v}t!==null&&i===null&&t.is(p)&&(i=v),n!==null&&s===null&&n.is(p)&&(s=v)}}return[r,i,s]}function yl(e){let t;if(e instanceof Pl)t=e;else if("__type"in e){const i=Vt(e,St);St(i)||Rt(148),t=i}else{const i=Vt(e.getNode(),St);St(i)||Rt(148),t=i}const n=t.getParent();ur(n)||Rt(149);const r=n.getParent();return hr(r)||Rt(210),[t,n,r]}function qw(e,t,n){let r,i=Math.min(t.startColumn,n.startColumn),s=Math.min(t.startRow,n.startRow),o=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),a=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1);do{r=!1;for(let l=0;l<e.length;l++)for(let d=0;d<e[0].length;d++){const h=e[l][d];if(!h)continue;const p=h.startColumn+h.cell.__colSpan-1,m=h.startRow+h.cell.__rowSpan-1,v=h.startColumn<=o&&p>=i,b=h.startRow<=a&&m>=s;if(v&&b){const x=Math.min(i,h.startColumn),S=Math.max(o,p),C=Math.min(s,h.startRow),k=Math.max(a,m);x===i&&S===o&&C===s&&k===a||(i=x,o=S,s=C,a=k,r=!0)}}}while(r);return{maxColumn:o,maxRow:a,minColumn:i,minRow:s}}function J6(e){const[t,,n]=yl(e),r=n.getChildren(),i=r.length,s=r[0].getChildren().length,o=new Array(i);for(let a=0;a<i;a++)o[a]=new Array(s);for(let a=0;a<i;a++){const l=r[a].getChildren();let d=0;for(let h=0;h<l.length;h++){for(;o[a][d];)d++;const p=l[h],m=p.__rowSpan||1,v=p.__colSpan||1;for(let b=0;b<m;b++)for(let x=0;x<v;x++)o[a+b][d+x]=p;if(t===p)return{colSpan:v,columnIndex:d,rowIndex:a,rowSpan:m};d+=v}}return null}function Z6(e){const[[t,n,r,i],[s,o,a,l]]=["anchor","focus"].map(d=>{const h=e[d].getNode(),p=Vt(h,St);St(p)||Rt(238,d,h.getKey(),h.getType());const m=p.getParent();ur(m)||Rt(239,d);const v=m.getParent();return hr(v)||Rt(240,d),[h,p,m,v]});return i.is(l)||Rt(241),{anchorCell:n,anchorNode:t,anchorRow:r,anchorTable:i,focusCell:o,focusNode:s,focusRow:a,focusTable:l}}let wJ=class CJ{constructor(t,n,r){U(this,"tableKey");U(this,"anchor");U(this,"focus");U(this,"_cachedNodes");U(this,"dirty");this.anchor=n,this.focus=r,n._selection=this,r._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=t}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){if(this.tableKey==="root"||this.anchor.key==="root"||this.anchor.type!=="element"||this.focus.key==="root"||this.focus.type!=="element")return!1;const t=lr(this.tableKey),n=lr(this.anchor.key),r=lr(this.focus.key);return t!==null&&n!==null&&r!==null}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(t){this._cachedNodes=t}is(t){return fr(t)&&this.tableKey===t.tableKey&&this.anchor.is(t.anchor)&&this.focus.is(t.focus)}set(t,n,r){this.dirty=this.dirty||t!==this.tableKey||n!==this.anchor.key||r!==this.focus.key,this.tableKey=t,this.anchor.key=n,this.focus.key=r,this._cachedNodes=null}clone(){return new CJ(this.tableKey,so(this.anchor.key,this.anchor.offset,this.anchor.type),so(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(t){}insertText(){}hasFormat(t){let n=0;this.getNodes().filter(St).forEach(i=>{const s=i.getFirstChild();ga(s)&&(n|=s.getTextFormat())});const r=wd[t];return(n&r)!==0}insertNodes(t){const n=this.focus.getNode();pe(n)||Rt(151),Cd(n.select(0,n.getChildrenSize())).insertNodes(t)}getShape(){const{anchorCell:t,focusCell:n}=Z6(this),r=J6(t);r===null&&Rt(153);const i=J6(n);i===null&&Rt(155);const s=Math.min(r.columnIndex,i.columnIndex),o=Math.max(r.columnIndex+r.colSpan-1,i.columnIndex+i.colSpan-1),a=Math.min(r.rowIndex,i.rowIndex),l=Math.max(r.rowIndex+r.rowSpan-1,i.rowIndex+i.rowSpan-1);return{fromX:Math.min(s,o),fromY:Math.min(a,l),toX:Math.max(s,o),toY:Math.max(a,l)}}getNodes(){if(!this.isValid())return[];const t=this._cachedNodes;if(t!==null)return t;const{anchorTable:n,anchorCell:r,focusCell:i}=Z6(this),s=i.getParents()[1];if(s!==n){if(n.isParentOf(i)){const S=s.getParent();S==null&&Rt(159),this.set(this.tableKey,i.getKey(),S.getKey())}else{const S=n.getParent();S==null&&Rt(158),this.set(this.tableKey,S.getKey(),i.getKey())}return this.getNodes()}const[o,a,l]=ha(n,r,i),{minColumn:d,maxColumn:h,minRow:p,maxRow:m}=qw(o,a,l),v=new Map([[n.getKey(),n]]);let b=null;for(let S=p;S<=m;S++)for(let C=d;C<=h;C++){const{cell:k}=o[S][C],w=k.getParent();ur(w)||Rt(160),w!==b&&(v.set(w.getKey(),w),b=w),v.has(k.getKey())||NRe(k,N=>{v.set(N.getKey(),N)})}const x=Array.from(v.values());return oh()||(this._cachedNodes=x),x}getTextContent(){const t=this.getNodes().filter(r=>St(r));let n="";for(let r=0;r<t.length;r++){const i=t[r],s=i.__parent,o=(t[r+1]||{}).__parent;n+=i.getTextContent()+(o!==s?`
|
|
2685
2685
|
`:" ")}return n}};function fr(e){return e instanceof wJ}function ERe(){const e=so("root",0,"element"),t=so("root",0,"element");return new wJ("root",e,t)}function MR(e,t,n){e.getKey(),t.getKey(),n.getKey();const r=$e(),i=fr(r)?r.clone():ERe();return i.set(e.getKey(),t.getKey(),n.getKey()),i}function NRe(e,t){const n=[[e]];for(let r=n.at(-1);r!==void 0&&n.length>0;r=n.at(-1)){const i=r.pop();i===void 0?n.pop():t(i)!==!1&&pe(i)&&n.push(i.getChildren())}}function kJ(e,t=br()){const n=lr(e);hr(n)||Rt(231,e);const r=Gc(n,t.getElementByKey(e));return r===null&&Rt(232,e),{tableElement:r,tableNode:n}}let TRe=class{constructor(){U(this,"observers");U(this,"nextFocus");U(this,"shouldCheckSelectionForTable");this.observers=new Map,this.nextFocus=null,this.shouldCheckSelectionForTable=null}setNextFocus(t){this.nextFocus=t}getAndClearNextFocus(){const{nextFocus:t}=this;return t!==null&&(this.nextFocus=null),t}setShouldCheckSelectionForTable(t){this.shouldCheckSelectionForTable=t}getAndClearShouldCheckSelectionForTable(){const{shouldCheckSelectionForTable:t}=this;return t?(this.shouldCheckSelectionForTable=null,t):null}},ARe=class{constructor(t,n){U(this,"focusX");U(this,"focusY");U(this,"listenersToRemove");U(this,"table");U(this,"isHighlightingCells");U(this,"anchorX");U(this,"anchorY");U(this,"tableNodeKey");U(this,"anchorCell");U(this,"focusCell");U(this,"anchorCellNodeKey");U(this,"focusCellNodeKey");U(this,"editor");U(this,"tableSelection");U(this,"hasHijackedSelectionStyles");U(this,"isSelecting");U(this,"pointerType");U(this,"abortController");U(this,"listenerOptions");this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=n,this.editor=t,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.pointerType=null,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort("removeListeners"),Array.from(this.listenersToRemove).forEach(t=>t()),this.listenersToRemove.clear()}$lookup(){return kJ(this.tableNodeKey,this.editor)}trackTable(){const t=new MutationObserver(n=>{this.editor.getEditorState().read(()=>{let r=!1;for(let o=0;o<n.length;o++){const a=n[o].target.nodeName;if(a==="TABLE"||a==="TBODY"||a==="THEAD"||a==="TR"){r=!0;break}}if(!r)return;const{tableNode:i,tableElement:s}=this.$lookup();this.table=pm(i,s)},{editor:this.editor})});this.editor.getEditorState().read(()=>{const{tableNode:n,tableElement:r}=this.$lookup();this.table=pm(n,r),t.observe(r,{attributes:!0,childList:!0,subtree:!0})},{editor:this.editor})}$clearHighlight(t=!0){const n=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:r,tableElement:i}=this.$lookup();E0(n,pm(r,i),null),t&&$e()!==null&&(pr(null),n.dispatchCommand(bl,void 0))}$enableHighlightStyle(){const t=this.editor,{tableElement:n}=this.$lookup();Tl(n,t._config.theme.tableSelection),n.classList.remove("disable-selection"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();Yr(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(t){if(t!==null){t.tableKey!==this.tableNodeKey&&Rt(233,t.tableKey,this.tableNodeKey);const n=this.editor;this.tableSelection=t,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),E0(n,this.table,this.tableSelection)}else this.$clearHighlight()}updateDOMSelection(){if(this.anchorCell!==null&&this.focusCell!==null){const t=Ki(this.editor._window);t&&t.rangeCount>0&&t.removeAllRanges()}}$setFocusCellForSelection(t,n=!1){const r=this.editor,{tableNode:i}=this.$lookup(),s=t.x,o=t.y;if(this.focusCell=t,!this.isHighlightingCells&&(n||this.anchorX!==s||this.anchorY!==o||this.tableSelection!=null&&this.anchorCellNodeKey!=null)&&(this.isHighlightingCells=!0,this.$disableHighlightStyle()),this.focusX!==-1&&this.focusY!==-1&&s===this.focusX&&o===this.focusY)return!1;if(this.focusX=s,this.focusY=o,this.isHighlightingCells){const a=IR(i,t.elem);if(this.tableSelection!=null&&this.anchorCellNodeKey!=null){let l=a;if(l===null&&n&&(l=i.getCellNodeFromCords(s,o,this.table)),l!==null){const d=this.$getAnchorTableCellOrThrow();return this.focusCellNodeKey=l.getKey(),this.tableSelection=MR(i,d,l),pr(this.tableSelection),r.dispatchCommand(bl,void 0),E0(r,this.table,this.tableSelection),!0}}}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?lr(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const t=this.$getAnchorTableCell();return t===null&&Rt(234),t}$getFocusTableCell(){return this.focusCellNodeKey?lr(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const t=this.$getFocusTableCell();return t===null&&Rt(235),t}$setAnchorCellForSelection(t){this.isHighlightingCells=!1,this.anchorCell=t,this.anchorX=t.x,this.anchorY=t.y,this.focusX=-1,this.focusY=-1,this.focusCell=null,this.focusCellNodeKey=null;const{tableNode:n}=this.$lookup(),r=IR(n,t.elem);if(r!==null){const i=r.getKey();this.tableSelection!=null?(this.tableSelection=this.tableSelection.clone(),this.tableSelection.set(n.getKey(),i,i)):this.tableSelection=MR(n,r,r),this.anchorCellNodeKey=i}}$formatCells(t){const n=$e();fr(n)||Rt(236);const r=vP(),i=r.anchor,s=r.focus,o=n.getNodes().filter(St);o.length>0||Rt(237);const a=o[0].getFirstChild(),l=ga(a)?a.getFormatFlags(t,null):null;o.forEach(d=>{i.set(d.getKey(),0,"element"),s.set(d.getKey(),d.getChildrenSize(),"element"),r.formatText(t,l)}),pr(n),this.editor.dispatchCommand(bl,void 0)}$clearText(){const{editor:t}=this,n=lr(this.tableNodeKey);if(!hr(n))throw new Error("Expected TableNode.");const r=$e();fr(r)||Rt(253);const i=r.getNodes().filter(St),s=n.getFirstChild(),o=n.getLastChild();if(i.length>0&&s!==null&&o!==null&&ur(s)&&ur(o)&&i[0]===s.getFirstChild()&&i[i.length-1]===o.getLastChild()){n.selectPrevious();const a=n.getParent();return n.remove(),void(bi(a)&&a.isEmpty()&&t.dispatchCommand(rh,void 0))}i.forEach(a=>{if(pe(a)){const l=Pt(),d=Hn();l.append(d),a.append(l),a.getChildren().forEach(h=>{h!==l&&h.remove()})}}),E0(t,this.table,null),pr(null),t.dispatchCommand(bl,void 0)}};const hm="__lexicalTableSelection";function Af(e){return Mt(e)&&e.nodeName==="TABLE"}function Gc(e,t){if(!t)return t;const n=Af(t)?t:t.querySelector("table");return Af(n)||Rt(341,e.constructor.name,e.getType(),e.getKey(),t.nodeName),n}function L1(e){return e._window}function _x(e,t){for(let n=t,r=null;n!==null;n=n.getParent()){if(e.is(n))return r;St(n)&&(r=n)}return null}const RRe=[[f1,"down"],[d1,"up"],[cP,"backward"],[lP,"forward"]],MRe=[Lm,ih,pd],jRe=[uP,dP];function IRe(e,t){return e.registerRootListener(n=>{if(n===null)return;const r=e._window;if(r===null)return;const i=s=>{const o=s.target;if(s.button!==0||!Ka(o)||!n.contains(o))return;const a=(function(l){const d=Yw(l);if(d===null)return null;let h=d.elem;for(;h!=null;){if(h.nodeName==="TABLE"&&hm in h&&h[hm])return{cellElement:d,tableElement:h,tableObserver:h[hm]};h=h.parentNode}return null})(o);e.update(()=>{if(fr($e())){for(const[p]of t.observers.values())p.$clearHighlight(!1);pr(null),e.dispatchCommand(bl,void 0)}if(!a)return;const{tableObserver:l,tableElement:d,cellElement:h}=a;(function(p,m,v,b,x,S){const C=p._window;if(!C)return;const k=A=>{if(x.isSelecting)return;x.isSelecting=!0,A!==null&&x.anchorCell===null&&p.update(()=>{x.$setAnchorCellForSelection(A)});const T=()=>{x.isSelecting=!1,C.removeEventListener("pointerup",T),C.removeEventListener("pointermove",M)},M=j=>{if(!(L=>!(1&~L.buttons))(j)&&x.isSelecting)return x.isSelecting=!1,C.removeEventListener("pointerup",T),void C.removeEventListener("pointermove",M);if(!Ka(j.target))return;let P=null;const D=!(jl||b.contains(j.target));if(D)P=eF(b,j.target);else for(const L of document.elementsFromPoint(j.clientX,j.clientY))if(P=eF(b,L),P)break;if(P){const L=P;x.anchorCell===null&&p.update(()=>{x.$setAnchorCellForSelection(L)}),x.focusCell!==null&&P.elem===x.focusCell.elem||(S.setNextFocus({focusCell:P,override:D,tableKey:x.tableNodeKey}),p.dispatchCommand(bl,void 0))}};C.addEventListener("pointerup",T,x.listenerOptions),C.addEventListener("pointermove",M,x.listenerOptions)};x.pointerType=m.pointerType;const w=pb(x.tableNodeKey),N=eo();if(jl&&m.shiftKey&&gc(N,w)&&(_e(N)||fr(N))){const A=N.anchor.getNode(),T=_x(w,N.anchor.getNode());T?(x.$setAnchorCellForSelection(Of(x,T)),x.$setFocusCellForSelection(v),_c(m)):(w.isBefore(A)?w.selectStart():w.selectEnd()).anchor.set(N.anchor.key,N.anchor.offset,N.anchor.type)}else m.pointerType!=="touch"&&x.$setAnchorCellForSelection(v);k(v)})(e,s,h,d,l,t)})};return r.addEventListener("pointerdown",i),()=>{r.removeEventListener("pointerdown",i)}})}function PRe(e,t,n,r,i){const s=n.getRootElement(),o=L1(n);s!==null&&o!==null||Rt(246);const a=new ARe(n,e.getKey()),l=Gc(e,t);(function(m,v){Q6(m)!==null&&Rt(205),m[hm]=v})(l,a),a.listenersToRemove.add(()=>(function(m,v){Q6(m)===v&&delete m[hm]})(l,a));const d=m=>{m.detail>=3&&Ka(m.target)&&Yw(m.target)!==null&&m.preventDefault()};l.addEventListener("mousedown",d,a.listenerOptions),a.listenersToRemove.add(()=>{l.removeEventListener("mousedown",d)});for(const[m,v]of RRe)a.listenersToRemove.add(n.registerCommand(m,b=>TJ(n,b,v,e,a,i),ls));a.listenersToRemove.add(n.registerCommand(h1,m=>{const v=$e();if(fr(v)){const b=_x(e,v.focus.getNode());if(b!==null)return _c(m),b.selectEnd(),!0}return!1},ls));const h=m=>()=>{const v=$e();if(!gc(v,e))return!1;if(fr(v))return a.$clearText(),!0;if(_e(v)){if(!St(_x(e,v.anchor.getNode())))return!1;const b=v.anchor.getNode(),x=v.focus.getNode(),S=e.isParentOf(b),C=e.isParentOf(x);if(S&&!C||C&&!S)return a.$clearText(),!0;const k=Vt(v.anchor.getNode(),N=>pe(N)),w=k&&Vt(k,N=>pe(N)&&St(N.getParent()));if(!pe(w)||!pe(k))return!1;if(m===ih&&w.getPreviousSibling()===null)return!0}return!1};for(const m of MRe)a.listenersToRemove.add(n.registerCommand(m,h(m),ls));const p=m=>{const v=$e();if(!fr(v)&&!_e(v))return!1;const b=e.isParentOf(v.anchor.getNode());if(b!==e.isParentOf(v.focus.getNode())){const x=b?"anchor":"focus",S=b?"focus":"anchor",{key:C,offset:k,type:w}=v[S];return e[v[x].isBefore(v[S])?"selectPrevious":"selectNext"]()[S].set(C,k,w),!1}return!!gc(v,e)&&!!fr(v)&&(m&&(m.preventDefault(),m.stopPropagation()),a.$clearText(),!0)};for(const m of jRe)a.listenersToRemove.add(n.registerCommand(m,p,ls));return a.listenersToRemove.add(n.registerCommand(m1,m=>{const v=$e();if(v){if(!fr(v)&&!_e(v))return!1;wR(n,xl(m,ClipboardEvent)?m:null,qP(v));const b=p(m);return _e(v)?(v.removeText(),!0):b}return!1},ls)),a.listenersToRemove.add(n.registerCommand(Nc,m=>{const v=$e();if(!gc(v,e))return!1;if(fr(v))return a.$formatCells(m),!0;if(_e(v)){const b=Vt(v.anchor.getNode(),x=>St(x));if(!St(b))return!1}return!1},ls)),a.listenersToRemove.add(n.registerCommand(Uq,m=>{const v=$e();if(!fr(v)||!gc(v,e))return!1;const b=v.anchor.getNode(),x=v.focus.getNode();if(!St(b)||!St(x))return!1;if((function(j,P){if(fr(j)){const D=j.anchor.getNode(),L=j.focus.getNode();if(P&&D&&L){const[I]=ha(P,D,L);return D.getKey()===I[0][0].cell.getKey()&&L.getKey()===I[I.length-1].at(-1).cell.getKey()}}return!1})(v,e))return e.setFormat(m),!0;const[S,C,k]=ha(e,b,x),w=Math.max(C.startRow+C.cell.__rowSpan-1,k.startRow+k.cell.__rowSpan-1),N=Math.max(C.startColumn+C.cell.__colSpan-1,k.startColumn+k.cell.__colSpan-1),A=Math.min(C.startRow,k.startRow),T=Math.min(C.startColumn,k.startColumn),M=new Set;for(let j=A;j<=w;j++)for(let P=T;P<=N;P++){const D=S[j][P].cell;if(M.has(D))continue;M.add(D),D.setFormat(m);const L=D.getChildren();for(let I=0;I<L.length;I++){const $=L[I];pe($)&&!$.isInline()&&$.setFormat(m)}}return!0},ls)),a.listenersToRemove.add(n.registerCommand(Hf,m=>{const v=$e();if(!gc(v,e))return!1;if(fr(v))return a.$clearHighlight(),!1;if(_e(v)){const b=Vt(v.anchor.getNode(),x=>St(x));if(!St(b))return!1;if(typeof m=="string"){const x=nF(n,v,e);if(x)return tF(x,e,[Hn(m)]),!0}}return!1},ls)),r&&a.listenersToRemove.add(n.registerCommand(iy,m=>{const v=$e();if(!_e(v)||!v.isCollapsed()||!gc(v,e))return!1;const b=zv(v.anchor.getNode());return!(b===null||!e.is(Um(b)))&&(_c(m),(function(x,S){const C=S==="next"?"getNextSibling":"getPreviousSibling",k=S==="next"?"getFirstChild":"getLastChild",w=x[C]();if(pe(w))return w.selectEnd();const N=Vt(x,ur);N===null&&Rt(247);for(let T=N[C]();ur(T);T=T[C]()){const M=T[k]();if(pe(M))return M.selectEnd()}const A=Vt(N,hr);A===null&&Rt(248),S==="next"?A.selectNext():A.selectPrevious()})(b,m.shiftKey?"previous":"next"),!0)},ls)),a.listenersToRemove.add(n.registerCommand(Wq,m=>e.isSelected(),ls)),a.listenersToRemove.add(n.registerCommand(rh,()=>{const m=$e();if(!_e(m)||!m.isCollapsed()||!gc(m,e))return!1;const v=nF(n,m,e);return!!v&&(tF(v,e),!0)},ls)),a}function LRe(e,t){const n=$e(),r=eo(),i=e.getAndClearNextFocus();if(i!==null){const{tableKey:a,focusCell:l}=i,d=e.observers.get(a);d||Rt(335,a);const[h]=d;if(fr(n)&&n.tableKey===h.tableNodeKey)return(l.x!==h.focusX||l.y!==h.focusY)&&(h.$setFocusCellForSelection(l),!0);if(h.anchorCell!==null&&h.anchorCellNodeKey!==null&&l.elem!==h.anchorCell.elem&&h.tableSelection!==null)return h.$setFocusCellForSelection(l,!0),!0}const s=e.getAndClearShouldCheckSelectionForTable();if(s&&_e(r)&&_e(n)&&n.isCollapsed()){const a=pb(s),l=n.anchor.getNode(),d=a.getFirstChild(),h=zv(l);if(h!==null&&ur(d)){const p=d.getFirstChild();if(St(p)&&a.is(Vt(h,m=>m.is(a)||m.is(p))))return p.selectStart(),!0}}fr(n)&&(function(a,l){const d=L1(a),h=eo();if(!l.is(h))return;const p=pb(l.tableKey),m=Ki(d);if(m&&m.anchorNode&&m.focusNode){const v=Is(m.focusNode),b=v&&!p.isParentOf(v),x=Is(m.anchorNode),S=x&&p.isParentOf(x);if(b&&S&&m.rangeCount>0){const C=CNe(m,a);C&&(C.anchor.set(p.getKey(),l.isBackward()?p.getChildrenSize():0,"element"),m.removeAllRanges(),pr(C))}}})(t,n),_e(n)&&(function(a,l){const d=eo(),{anchor:h,focus:p}=a,m=h.getNode(),v=p.getNode(),b=zv(m),x=zv(v),S=b?Um(b):null,C=x?Um(x):null,k=a.isBackward(),w=b&&x&&S&&C&&S.is(C),N=C&&(!S||S.isParentOf(C)),A=S&&(!C||C.isParentOf(S));if(N){const T=a.clone(),[M]=ha(C,x,x),j=M[0][0].cell,P=M[M.length-1].at(-1).cell;T.focus.set(k?j.getKey():P.getKey(),k?0:P.getChildrenSize(),"element"),pr(T)}else if(A){const T=a.clone(),[M]=ha(S,b,b),j=M[0][0].cell,P=M[M.length-1].at(-1).cell;T.anchor.set(k?P.getKey():j.getKey(),k?P.getChildrenSize():0,"element"),pr(T)}else if(w){const T=l.observers.get(S.getKey());T||Rt(335,S.getKey());const[M]=T;if(b.is(x)||(M.$setAnchorCellForSelection(Of(M,b)),M.$setFocusCellForSelection(Of(M,x),!0)),M.pointerType==="touch"&&M.isSelecting&&a.isCollapsed()&&_e(d)&&d.isCollapsed()){const j=zv(d.anchor.getNode());j&&!j.is(x)&&(M.$setAnchorCellForSelection(Of(M,j)),M.$setFocusCellForSelection(Of(M,x),!0),M.pointerType=null)}}})(n,e);const o=Array.from(e.observers.entries()).map(([a,[l]])=>({tableNode:pb(a),tableObserver:l}));for(const{tableNode:a,tableObserver:l}of o)ORe(t,a,l);return!1}function ORe(e,t,n){const r=$e(),i=eo();r&&!r.is(i)&&(fr(r)||fr(i))&&n.tableSelection&&!n.tableSelection.is(i)&&(fr(r)&&r.tableKey===n.tableNodeKey?n.$updateTableTableSelection(r):!fr(r)&&fr(i)&&i.tableKey===n.tableNodeKey&&n.$updateTableTableSelection(null)),n.hasHijackedSelectionStyles&&!t.isSelected()?(function(s,o){o.$enableHighlightStyle(),jR(o.table,a=>{const l=a.elem;a.highlighted=!1,NJ(s,a),l.getAttribute("style")||l.removeAttribute("style")})})(e,n):!n.hasHijackedSelectionStyles&&t.isSelected()&&(function(s,o){o.$disableHighlightStyle(),jR(o.table,a=>{a.highlighted=!0,EJ(s,a)})})(e,n)}function Q6(e){return e[hm]||null}function Yw(e){let t=e;for(;t!=null;){const n=t.nodeName;if(n==="TD"||n==="TH"){const r=t._cell;return r===void 0?null:r}t=t.parentNode}return null}function eF(e,t){if(!e.contains(t))return null;let n=null;for(let r=t;r!=null;r=r.parentNode){if(r===e)return n;const i=r.nodeName;i!=="TD"&&i!=="TH"||(n=r._cell||null)}return null}function pm(e,t){const n=[],r={columns:0,domRows:n,rows:0};let i=Gc(e,t).querySelector("tr"),s=0,o=0;for(n.length=0;i!=null;){const a=i.nodeName;if(a==="TD"||a==="TH"){const h={elem:i,hasBackgroundColor:i.style.backgroundColor!=="",highlighted:!1,x:s,y:o};i._cell=h;let p=n[o];p===void 0&&(p=n[o]=[]),p[s]=h}else{const h=i.firstChild;if(h!=null){i=h;continue}}const l=i.nextSibling;if(l!=null){s++,i=l;continue}const d=i.parentNode;if(d!=null){const h=d.nextSibling;if(h==null)break;o++,s=0,i=h}}return r.columns=s+1,r.rows=o+1,r}function E0(e,t,n){const r=new Set(n?n.getNodes():[]);jR(t,(i,s)=>{const o=i.elem;r.has(s)?(i.highlighted=!0,EJ(e,i)):(i.highlighted=!1,NJ(e,i),o.getAttribute("style")||o.removeAttribute("style"))})}function jR(e,t){const{domRows:n}=e;for(let r=0;r<n.length;r++){const i=n[r];if(i)for(let s=0;s<i.length;s++){const o=i[s];if(!o)continue;const a=Is(o.elem);a!==null&&t(o,a,{x:s,y:r})}}}const DRe=(e,t,n,r,i)=>{const s=i==="forward";switch(i){case"backward":case"forward":return n!==(s?e.table.columns-1:0)?T0(t.getCellNodeFromCordsOrThrow(n+(s?1:-1),r,e.table),s):r!==(s?e.table.rows-1:0)?T0(t.getCellNodeFromCordsOrThrow(s?0:e.table.columns-1,r+(s?1:-1),e.table),s):s?t.selectNext():t.selectPrevious(),!0;case"up":return r!==0?T0(t.getCellNodeFromCordsOrThrow(n,r-1,e.table),!1):t.selectPrevious(),!0;case"down":return r!==e.table.rows-1?T0(t.getCellNodeFromCordsOrThrow(n,r+1,e.table),!0):t.selectNext(),!0;default:return!1}};function NT(e,t){let n,r;if(t.startColumn===e.minColumn)n="minColumn";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n="maxColumn"}if(t.startRow===e.minRow)r="minRow";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;r="maxRow"}return[n,r]}function N0([e,t]){return[e==="minColumn"?"maxColumn":"minColumn",t==="minRow"?"maxRow":"minRow"]}function kp(e,t,[n,r]){const i=t[r],s=e[i];s===void 0&&Rt(250,r,String(i));const o=t[n],a=s[o];return a===void 0&&Rt(250,n,String(o)),a}function $Re(e,t,n,r,i){const s=qw(t,n,r),o=(function(T,M){const{minColumn:j,maxColumn:P,minRow:D,maxRow:L}=M;let I=1,$=1,H=1,z=1;const F=T[D],K=T[L];for(let W=j;W<=P;W++)I=Math.max(I,F[W].cell.__rowSpan),z=Math.max(z,K[W].cell.__rowSpan);for(let W=D;W<=L;W++)$=Math.max($,T[W][j].cell.__colSpan),H=Math.max(H,T[W][P].cell.__colSpan);return{bottomSpan:z,leftSpan:$,rightSpan:H,topSpan:I}})(t,s),{topSpan:a,leftSpan:l,bottomSpan:d,rightSpan:h}=o,p=(function(T,M){const j=NT(T,M);return j===null&&Rt(249,M.cell.getKey()),j})(s,n),[m,v]=N0(p);let b=s[m],x=s[v];i==="forward"?b+=m==="maxColumn"?1:l:i==="backward"?b-=m==="minColumn"?1:h:i==="down"?x+=v==="maxRow"?1:a:i==="up"&&(x-=v==="minRow"?1:d);const S=t[x];if(S===void 0)return!1;const C=S[b];if(C===void 0)return!1;const[k,w]=(function(T,M,j){const P=qw(T,M,j),D=NT(P,M);if(D)return[kp(T,P,D),kp(T,P,N0(D))];const L=NT(P,j);if(L)return[kp(T,P,N0(L)),kp(T,P,L)];const I=["minColumn","minRow"];return[kp(T,P,I),kp(T,P,N0(I))]})(t,n,C),N=Of(e,k.cell),A=Of(e,w.cell);return e.$setAnchorCellForSelection(N),e.$setFocusCellForSelection(A,!0),!0}function gc(e,t){if(_e(e)||fr(e)){const n=t.isParentOf(e.anchor.getNode()),r=t.isParentOf(e.focus.getNode());return n&&r}return!1}function T0(e,t){t?e.selectStart():e.selectEnd()}function EJ(e,t){const n=t.elem,r=e._config.theme;St(Is(n))||Rt(131),Yr(n,r.tableCellSelected)}function NJ(e,t){const n=t.elem;St(Is(n))||Rt(131);const r=e._config.theme;Tl(n,r.tableCellSelected)}function zv(e){const t=Vt(e,St);return St(t)?t:null}function Um(e){const t=Vt(e,hr);return hr(t)?t:null}function zRe(e,t,n,r,i,s,o){const a=fa(n.focus,i?"previous":"next");if(zP(a))return!1;let l=a;for(const S of gx(a).iterNodeCarets("shadowRoot")){if(!da(S)||!pe(S.origin))return!1;l=S}const d=l.getParentAtCaret();if(!St(d))return!1;const h=d,p=(function(S){for(const C of gx(S).iterNodeCarets("root")){const{origin:k}=C;if(St(k)){if(hs(C))return _i(k,S.direction)}else if(!ur(k))break}return null})(er(h,l.direction)),m=Vt(h,hr);if(!m||!m.is(s))return!1;const v=e.getElementByKey(h.getKey()),b=Yw(v);if(!v||!b)return!1;const x=FRe(e,m);if(o.table=x,p)if(r==="extend"){const S=Yw(e.getElementByKey(p.origin.getKey()));if(!S)return!1;o.$setAnchorCellForSelection(b),o.$setFocusCellForSelection(S,!0)}else{const S=xi(p);ra(n.anchor,S),ra(n.focus,S)}else if(r==="extend")o.$setAnchorCellForSelection(b),o.$setFocusCellForSelection(b,!0);else{const S=(function(C){const k=lh(C);return hs(k)?xi(k):C})(er(m,a.direction));ra(n.anchor,S),ra(n.focus,S)}return _c(t),!0}function TJ(e,t,n,r,i,s){if((n==="up"||n==="down")&&(function(a){const l=a.getRootElement();return l?l.hasAttribute("aria-controls")&&l.getAttribute("aria-controls")==="typeahead-menu":!1})(e))return!1;const o=$e();if(!gc(o,r)){if(_e(o)){if(n==="backward"){if(o.focus.offset>0)return!1;const a=(function(d){for(let h=d,p=d;p!==null;h=p,p=p.getParent())if(pe(p)){if(p!==h&&p.getFirstChild()!==h)return null;if(!p.isInline())return p}return null})(o.focus.getNode());if(!a)return!1;const l=a.getPreviousSibling();return!!hr(l)&&(_c(t),t.shiftKey?o.focus.set(l.getParentOrThrow().getKey(),l.getIndexWithinParent(),"element"):l.selectEnd(),!0)}if(t.shiftKey&&(n==="up"||n==="down")){const a=o.focus.getNode();if(!o.isCollapsed()&&(n==="up"&&!o.isBackward()||n==="down"&&o.isBackward())){let l=Vt(a,v=>hr(v));if(St(l)&&(l=Vt(l,hr)),l!==r||!l)return!1;const d=n==="down"?l.getNextSibling():l.getPreviousSibling();if(!d)return!1;let h=0;n==="up"&&pe(d)&&(h=d.getChildrenSize());let p=d;n==="up"&&pe(d)&&(p=d.getLastChild()||d,h=Pe(p)?p.getTextContentSize():0);const m=o.clone();return m.focus.set(p.getKey(),h,Pe(p)?"text":"element"),pr(m),_c(t),!0}if(Wi(a)){const l=n==="up"?o.getNodes()[o.getNodes().length-1]:o.getNodes()[0];if(l&&_x(r,l)!==null){const d=r.getFirstDescendant(),h=r.getLastDescendant();if(!d||!h)return!1;const[p]=yl(d),[m]=yl(h),v=r.getCordsFromCellNode(p,i.table),b=r.getCordsFromCellNode(m,i.table),x=r.getDOMCellFromCordsOrThrow(v.x,v.y,i.table),S=r.getDOMCellFromCordsOrThrow(b.x,b.y,i.table);return i.$setAnchorCellForSelection(x),i.$setFocusCellForSelection(S,!0),!0}return!1}{let l=Vt(a,h=>pe(h)&&!h.isInline());if(St(l)&&(l=Vt(l,hr)),!l)return!1;const d=n==="down"?l.getNextSibling():l.getPreviousSibling();if(hr(d)&&i.tableNodeKey===d.getKey()){const h=d.getFirstDescendant(),p=d.getLastDescendant();if(!h||!p)return!1;const[m]=yl(h),[v]=yl(p),b=o.clone();return b.focus.set((n==="up"?m:v).getKey(),n==="up"?0:v.getChildrenSize(),"element"),_c(t),pr(b),!0}}}}return n==="down"&&Xw(e)&&s.setShouldCheckSelectionForTable(r.getKey()),!1}if(_e(o)){if(n==="backward"||n==="forward")return zRe(e,t,o,t.shiftKey?"extend":"move",n==="backward",r,i);if(o.isCollapsed()){const{anchor:a,focus:l}=o,d=Vt(a.getNode(),St),h=Vt(l.getNode(),St);if(!St(d)||!d.is(h))return!1;const p=Um(d);if(p!==r&&p!=null){const k=Gc(p,e.getElementByKey(p.getKey()));if(k!=null)return i.table=pm(p,k),TJ(e,t,n,p,i,s)}const m=e.getElementByKey(d.__key),v=e.getElementByKey(a.key);if(v==null||m==null)return!1;let b;if(a.type==="element")b=v.getBoundingClientRect();else{const k=Ki(L1(e));if(k===null||k.rangeCount===0)return!1;b=k.getRangeAt(0).getBoundingClientRect()}const x=n==="up"?d.getFirstChild():d.getLastChild();if(x==null)return!1;const S=e.getElementByKey(x.__key);if(S==null)return!1;const C=S.getBoundingClientRect();if(n==="up"?C.top>b.top-b.height:b.bottom+b.height>C.bottom){_c(t);const k=r.getCordsFromCellNode(d,i.table);if(!t.shiftKey)return DRe(i,r,k.x,k.y,n);{const w=r.getDOMCellFromCordsOrThrow(k.x,k.y,i.table);i.$setAnchorCellForSelection(w),i.$setFocusCellForSelection(w,!0)}return!0}}}else if(fr(o)){const{anchor:a,focus:l,tableKey:d}=o;if(d!==r.getKey())return!1;const h=Vt(a.getNode(),St),p=Vt(l.getNode(),St),[m]=o.getNodes();hr(m)||Rt(251);const v=Gc(m,e.getElementByKey(m.getKey()));if(!St(h)||!St(p)||!hr(m)||v==null)return!1;i.$updateTableTableSelection(o);const b=pm(m,v),x=r.getCordsFromCellNode(h,b),S=r.getDOMCellFromCordsOrThrow(x.x,x.y,b);if(i.$setAnchorCellForSelection(S),_c(t),t.shiftKey){const[C,k,w]=ha(r,h,p);return $Re(i,C,k,w,n)}return p.selectEnd(),!0}return!1}function _c(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function tF(e,t,n){const r=Pt();e==="first"?t.insertBefore(r):t.insertAfter(r),r.append(...n||[]),r.selectEnd()}function nF(e,t,n){const r=n.getParent();if(!r)return;const i=Ki(L1(e));if(!i)return;const s=i.anchorNode,o=e.getElementByKey(r.getKey()),a=Gc(n,e.getElementByKey(n.getKey()));if(!s||!o||!a||!o.contains(s)||a.contains(s))return;const l=Vt(t.anchor.getNode(),k=>St(k));if(!l)return;const d=Vt(l,k=>hr(k));if(!hr(d)||!d.is(n))return;const[h,p]=ha(n,l,l),m=h[0][0],v=h[h.length-1][h[0].length-1],{startRow:b,startColumn:x}=p,S=b===m.startRow&&x===m.startColumn,C=b===v.startRow&&x===v.startColumn;return S?"first":C?"last":void 0}function Of(e,t){const{tableNode:n}=e.$lookup(),r=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(r.x,r.y,e.table)}function IR(e,t,n){return _x(e,Is(t,n))}function rF(e,t,n){const r=e.querySelector("colgroup");if(!r)return;const i=[];for(let s=0;s<t;s++){const o=document.createElement("col"),a=n&&n[s];a&&(o.style.width=`${a}px`),i.push(o)}r.replaceChildren(...i)}function iF(e,t,n){if(!t.theme.tableAlignment)return;const r=[],i=[];for(const s of["center","right"]){const o=t.theme.tableAlignment[s];o&&(s===n?i:r).push(o)}Tl(e,...r),Yr(e,...i)}const PR=new WeakSet;function Xw(e=br()){return PR.has(e)}function BRe(e,t){t?PR.add(e):PR.delete(e)}let qc=class AJ extends Vi{constructor(n){super(n);U(this,"__rowStriping");U(this,"__frozenColumnCount");U(this,"__frozenRowCount");U(this,"__colWidths");this.__rowStriping=!1,this.__frozenColumnCount=0,this.__frozenRowCount=0,this.__colWidths=void 0}static getType(){return"table"}getColWidths(){return this.getLatest().__colWidths}setColWidths(n){const r=this.getWritable();return r.__colWidths=n,r}static clone(n){return new AJ(n.__key)}afterCloneFrom(n){super.afterCloneFrom(n),this.__colWidths=n.__colWidths,this.__rowStriping=n.__rowStriping,this.__frozenColumnCount=n.__frozenColumnCount,this.__frozenRowCount=n.__frozenRowCount}static importDOM(){return{table:n=>({conversion:URe,priority:1})}}static importJSON(n){return my().updateFromJSON(n)}updateFromJSON(n){return super.updateFromJSON(n).setRowStriping(n.rowStriping||!1).setFrozenColumns(n.frozenColumnCount||0).setFrozenRows(n.frozenRowCount||0).setColWidths(n.colWidths)}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),frozenColumnCount:this.__frozenColumnCount?this.__frozenColumnCount:void 0,frozenRowCount:this.__frozenRowCount?this.__frozenRowCount:void 0,rowStriping:this.__rowStriping?this.__rowStriping:void 0}}extractWithChild(n,r,i){return i==="html"}getDOMSlot(n){const r=Af(n)?n:n.querySelector("table");return Af(r)||Rt(229),super.getDOMSlot(n).withElement(r).withAfter(r.querySelector("colgroup"))}createDOM(n,r){const i=document.createElement("table");this.__style&&md(i.style,this.__style);const s=document.createElement("colgroup");if(i.appendChild(s),XNe(s),Yr(i,n.theme.table),this.updateTableElement(null,i,n),Xw(r)){const o=document.createElement("div"),a=n.theme.tableScrollableWrapper;return a?Yr(o,a):o.style.overflowX="auto",o.appendChild(i),this.updateTableWrapper(null,o,i,n),o}return i}updateTableWrapper(n,r,i,s){this.__frozenColumnCount!==(n?n.__frozenColumnCount:0)&&(function(o,a,l,d){d>0?(Yr(o,l.theme.tableFrozenColumn),a.setAttribute("data-lexical-frozen-column","true")):(Tl(o,l.theme.tableFrozenColumn),a.removeAttribute("data-lexical-frozen-column"))})(r,i,s,this.__frozenColumnCount),this.__frozenRowCount!==(n?n.__frozenRowCount:0)&&(function(o,a,l,d){d>0?(Yr(o,l.theme.tableFrozenRow),a.setAttribute("data-lexical-frozen-row","true")):(Tl(o,l.theme.tableFrozenRow),a.removeAttribute("data-lexical-frozen-row"))})(r,i,s,this.__frozenRowCount)}updateTableElement(n,r,i){this.__style!==(n?n.__style:"")&&md(r.style,this.__style,n?n.__style:""),this.__rowStriping!==(!!n&&n.__rowStriping)&&(function(a,l,d){d?(Yr(a,l.theme.tableRowStriping),a.setAttribute("data-lexical-row-striping","true")):(Tl(a,l.theme.tableRowStriping),a.removeAttribute("data-lexical-row-striping"))})(r,i,this.__rowStriping);const s=n?n.getColumnCount():0,o=n?n.__colWidths:void 0;this.getColumnCount()===s&&this.getColWidths()===o||rF(r,this.getColumnCount(),this.getColWidths()),iF(r,i,this.getFormatType())}updateDOM(n,r,i){const s=Gc(this,r);return r===s===Xw()||(Mt(o=r)&&o.nodeName==="DIV"&&this.updateTableWrapper(n,r,s,i),this.updateTableElement(n,s,i),!1);var o}scaleDOMColWidths(n,r){const i=this.getColWidths();i&&rF(Gc(this,n),this.getColumnCount(),i.map(s=>s*r))}exportDOM(n){const r=super.exportDOM(n),{element:i}=r;return{after:s=>{if(r.after&&(s=r.after(s)),!Af(s)&&Mt(s)&&(s=s.querySelector("table")),!Af(s))return null;iF(s,n._config,this.getFormatType());const[o]=Tc(this,null,null),a=new Map;for(const p of o)for(const m of p){const v=m.cell.getKey();a.has(v)||a.set(v,{colSpan:m.cell.getColSpan(),startColumn:m.startColumn})}const l=new Set;for(const p of s.querySelectorAll(":scope > tr > [data-temporary-table-cell-lexical-key]")){const m=p.getAttribute("data-temporary-table-cell-lexical-key");if(m){const v=a.get(m);if(p.removeAttribute("data-temporary-table-cell-lexical-key"),v){a.delete(m);for(let b=0;b<v.colSpan;b++)l.add(b+v.startColumn)}}}const d=s.querySelector(":scope > colgroup");if(d){const p=Array.from(s.querySelectorAll(":scope > colgroup > col")).filter((m,v)=>l.has(v));d.replaceChildren(...p)}const h=s.querySelectorAll(":scope > tr");if(h.length>0){const p=document.createElement("tbody");for(const m of h)p.appendChild(m);s.append(p)}return s},element:!Af(i)&&Mt(i)?i.querySelector("table"):i}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(n,r){const{rows:i,domRows:s}=r;for(let o=0;o<i;o++){const a=s[o];if(a!=null)for(let l=0;l<a.length;l++){const d=a[l];if(d==null)continue;const{elem:h}=d,p=IR(this,h);if(p!==null&&n.is(p))return{x:l,y:o}}}throw new Error("Cell not found in table.")}getDOMCellFromCords(n,r,i){const{domRows:s}=i,o=s[r];if(o==null)return null;const a=o[n<o.length?n:o.length-1];return a??null}getDOMCellFromCordsOrThrow(n,r,i){const s=this.getDOMCellFromCords(n,r,i);if(!s)throw new Error("Cell not found at cords.");return s}getCellNodeFromCords(n,r,i){const s=this.getDOMCellFromCords(n,r,i);if(s==null)return null;const o=Is(s.elem);return St(o)?o:null}getCellNodeFromCordsOrThrow(n,r,i){const s=this.getCellNodeFromCords(n,r,i);if(!s)throw new Error("Node at cords not TableCellNode.");return s}getRowStriping(){return!!this.getLatest().__rowStriping}setRowStriping(n){const r=this.getWritable();return r.__rowStriping=n,r}setFrozenColumns(n){const r=this.getWritable();return r.__frozenColumnCount=n,r}getFrozenColumns(){return this.getLatest().__frozenColumnCount}setFrozenRows(n){const r=this.getWritable();return r.__frozenRowCount=n,r}getFrozenRows(){return this.getLatest().__frozenRowCount}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const n=this.getFirstChild();if(!n)return 0;let r=0;return n.getChildren().forEach(i=>{St(i)&&(r+=i.getColSpan())}),r}};function FRe(e,t){const n=e.getElementByKey(t.getKey());return n===null&&Rt(230),pm(t,n)}function URe(e){const t=my();e.hasAttribute("data-lexical-row-striping")&&t.setRowStriping(!0),e.hasAttribute("data-lexical-frozen-column")&&t.setFrozenColumns(1),e.hasAttribute("data-lexical-frozen-row")&&t.setFrozenRows(1);const n=e.querySelector(":scope > colgroup");if(n){let r=[];for(const i of n.querySelectorAll(":scope > col")){let s=i.style.width||"";if(!fm.test(s)&&(s=i.getAttribute("width")||"",!/^\d+$/.test(s))){r=void 0;break}r.push(parseFloat(s))}r&&t.setColWidths(r)}return{after:r=>Hw(r,ur),node:t}}function my(){return ai(new qc)}function hr(e){return e instanceof qc}function HRe(e){ur(e.getParent())?e.isEmpty()&&e.append(Pt()):e.remove()}function WRe(e){hr(e.getParent())?QY(e,St):e.remove()}function VRe(e){QY(e,ur);const[t]=Tc(e,null,null),n=t.reduce((o,a)=>Math.max(o,a.length),0),r=e.getChildren();for(let o=0;o<t.length;++o){const a=r[o];if(!a)continue;ur(a)||Rt(254,a.constructor.name,a.getType());const l=t[o].reduce((d,h)=>h?1+d:d,0);if(l!==n)for(let d=l;d<n;++d){const h=no();h.append(Pt()),a.append(h)}}const i=e.getColWidths(),s=e.getColumnCount();if(i&&i.length!==s){let o;if(s<i.length)o=i.slice(0,s);else if(i.length>0){const a=i[i.length-1];o=[...i,...Array(s-i.length).fill(a)]}e.setColWidths(o)}}function KRe(e){if(e.detail<3||!Ka(e.target))return!1;const t=Is(e.target);if(t===null)return!1;const n=Vt(t,r=>pe(r)&&!r.isInline());return n===null?!1:!!St(n.getParent())&&(n.select(0),!0)}function GRe(){const e=$e();if(!_e(e))return!1;const t=Um(e.anchor.getNode());if(t===null)return!1;const n=Pn();if(!n.is(t.getParent())||n.getChildrenSize()!==1)return!1;const[r]=Tc(t,null,null);if(r.length===0||r[0].length===0)return!1;const i=r[0][0];if(!i||!i.cell)return!1;const s=r[r.length-1],o=s[s.length-1];if(!o||!o.cell)return!1;const a=MR(t,i.cell,o.cell);return pr(a),!0}function qRe(e){return e.registerNodeTransform(Pl,t=>{if(t.getColSpan()>1||t.getRowSpan()>1){const[,,n]=yl(t),[r]=ha(n,t,t),i=r.length,s=r[0].length;let o=n.getFirstChild();ur(o)||Rt(175);const a=[];for(let l=0;l<i;l++){l!==0&&(o=o.getNextSibling(),ur(o)||Rt(175));let d=null;for(let h=0;h<s;h++){const p=r[l][h],m=p.cell;if(p.startRow===l&&p.startColumn===h)d=m,a.push(m);else if(m.getColSpan()>1||m.getRowSpan()>1){St(m)||Rt(176);const v=no(m.__headerState);d!==null?d.insertAfter(v):mTe(o,v)}}}for(const l of a)l.setColSpan(1),l.setRowSpan(1)}})}function YRe(e,t=!0){const n=new TRe,r=(i,s,o)=>{const a=Gc(i,o),l=PRe(i,a,e,t,n);n.observers.set(s,[l,a])};return Si(IRe(e,n),e.registerCommand(bl,()=>LRe(n,e),ls),e.registerMutationListener(qc,i=>{e.getEditorState().read(()=>{for(const[s,o]of i){const a=n.observers.get(s);if(o==="created"||o==="updated"){const{tableNode:l,tableElement:d}=kJ(s);a===void 0?r(l,s,d):d!==a[1]&&(a[0].removeListeners(),n.observers.delete(s),r(l,s,d))}else o==="destroyed"&&a!==void 0&&(a[0].removeListeners(),n.observers.delete(s))}},{editor:e})},{skipInitialization:!1}),()=>{for(const[,[i]]of n.observers)i.removeListeners()})}function XRe(e,t){e.hasNodes([qc])||Rt(255);const{hasNestedTables:n=Kc(!1)}=t??{};return Si(e.registerCommand(gRe,r=>(function({rows:i,columns:s,includeHeaders:o},a){const l=$e()||eo();if(!l||!_e(l)||!a&&Um(l.anchor.getNode()))return!1;const d=bRe(Number(i),Number(s),o);ZY(d);const h=d.getFirstDescendant();return Pe(h)&&h.select(),!0})(r,n.peek()),Wt),e.registerCommand(Iq,(r,i)=>e===i&&(function(s,o){const{nodes:a,selection:l}=s;if(!a.some(p=>hr(p)||lTe(p).some(m=>hr(m.node))))return!1;const d=fr(l),h=_e(l);return h&&Vt(l.anchor.getNode(),p=>St(p))!==null&&Vt(l.focus.getNode(),p=>St(p))!==null||d?a.length===1&&hr(a[0])?(function(p,m){const v=m.getStartEndPoints(),b=fr(m);if(v===null)return!1;const[x,S]=v,[C,k,w]=yl(x),N=Vt(S.getNode(),te=>St(te));if(!(St(C)&&St(N)&&ur(k)&&hr(w)))return!1;const[A,T,M]=ha(w,C,N),[j]=Tc(p,null,null),P=A.length,D=P>0?A[0].length:0;let L=T.startRow,I=T.startColumn,$=j.length,H=$>0?j[0].length:0;if(b){const te=qw(A,T,M),oe=te.maxRow-te.minRow+1,ce=te.maxColumn-te.minColumn+1;L=te.minRow,I=te.minColumn,$=Math.min($,oe),H=Math.min(H,ce)}let z=!1;const F=Math.min(P,L+$)-1,K=Math.min(D,I+H)-1,W=new Set;for(let te=L;te<=F;te++)for(let oe=I;oe<=K;oe++){const ce=A[te][oe];W.has(ce.cell.getKey())||ce.cell.__rowSpan===1&&ce.cell.__colSpan===1||(kRe(ce.cell),W.add(ce.cell.getKey()),z=!0)}let[V]=Tc(w.getWritable(),null,null);const X=$-P+L;for(let te=0;te<X;te++)yRe(V[P-1][0].cell);const G=H-D+I;for(let te=0;te<G;te++)_Re(V[0][D-1].cell,!0,!1);[V]=Tc(w.getWritable(),null,null);for(let te=L;te<L+$;te++)for(let oe=I;oe<I+H;oe++){const ce=te-L,de=oe-I,ee=j[ce][de];if(ee.startRow!==ce||ee.startColumn!==de)continue;const ne=ee.cell;if(ne.__rowSpan!==1||ne.__colSpan!==1){const ke=[],we=Math.min(te+ne.__rowSpan,L+$)-1,Ae=Math.min(oe+ne.__colSpan,I+H)-1;for(let Xe=te;Xe<=we;Xe++)for(let ft=oe;ft<=Ae;ft++){const Ct=V[Xe][ft];ke.push(Ct.cell)}wRe(ke),z=!0}const{cell:ie}=V[te][oe],ae=ne.getBackgroundColor();ae!=null&&ie.setBackgroundColor(ae);const Q=ie.getChildren();ne.getChildren().forEach(ke=>{Pe(ke)&&Pt().append(ke),ie.append(ke)}),Q.forEach(ke=>ke.remove())}if(b&&z){const[te]=Tc(w.getWritable(),null,null);te[T.startRow][T.startColumn].cell.selectEnd()}return!0})(a[0],l):!(h&&o.peek()&&!(function(p){return!!(fr(p)&&!p.focus.getNode().is(p.anchor.getNode())||_e(p)&&St(p.anchor.getNode())&&!p.anchor.getNode().is(p.focus.getNode()))})(l)):!1})(r,n),Wt),e.registerCommand(pP,GRe,ta),e.registerCommand(u1,KRe,Wt),e.registerNodeTransform(qc,VRe),e.registerNodeTransform(Mh,WRe),e.registerNodeTransform(Pl,HRe))}const JRe={build:(e,t,n)=>ou(t),config:{hasCellBackgroundColor:!0,hasCellMerge:!0,hasHorizontalScroll:!0,hasNestedTables:!1,hasTabHandler:!0},name:"@lexical/table/Table",nodes:()=>[qc,Mh,Pl],register(e,t,n){const r=n.getOutput();return Si(is(()=>{const i=r.hasHorizontalScroll.value;Xw(e)!==i&&(BRe(e,i),e.update(ENe))}),XRe(e,r),is(()=>YRe(e,r.hasTabHandler.value)),is(()=>r.hasCellMerge.value?void 0:qRe(e)),is(()=>r.hasCellBackgroundColor.value?void 0:e.registerNodeTransform(Pl,i=>{i.getBackgroundColor()!==null&&i.setBackgroundColor(null)})))}};function ZRe(e){const t=[];let n=null;const r=()=>{if(n!==null){const i=n.getFirstChild();oi(i)&&n.getChildrenSize()===1&&i.remove()}};for(const i of e)OY(i)||Pe(i)||oi(i)?n!==null?n.append(i):(n=Pt().append(i),t.push(n)):(r(),t.push(i),n=null);return r(),t.length===0&&t.push(Pt()),t}const QRe=[{$import:(e,t)=>{const n=my();t.hasAttribute("data-lexical-row-striping")&&n.setRowStriping(!0),t.hasAttribute("data-lexical-frozen-column")&&n.setFrozenColumns(1),t.hasAttribute("data-lexical-frozen-row")&&n.setFrozenRows(1);const r=t.querySelector(":scope > colgroup");if(r){let i=[];for(const s of r.querySelectorAll(":scope > col")){let o=s.style.width||"";if(!fm.test(o)&&(o=s.getAttribute("width")||"",!/^\d+$/.test(o))){i=void 0;break}i.push(parseFloat(o))}i&&n.setColWidths(i)}return[n.splice(0,0,Hw(e.$importChildren(t),ur))]},match:si.tag("table"),name:"@lexical/table/table"},{$import:(e,t)=>[Ed(fm.test(t.style.height)?parseFloat(t.style.height):void 0).splice(0,0,Hw(e.$importChildren(t),St))],match:si.tag("tr"),name:"@lexical/table/tr"},{$import:(e,t)=>{const n=t.nodeName==="TH",r=fm.test(t.style.width)?parseFloat(t.style.width):void 0;let i=Rn.NO_STATUS;if(n){const b=t.getAttribute("scope");if(b==="col")i=Rn.COLUMN;else if(b==="row")i=Rn.ROW;else{const x=t.parentElement,S=WNe(x)&&(x.parentElement&&x.parentElement.nodeName==="THEAD"||x.rowIndex===0),C=t.cellIndex===0;S&&(i|=Rn.ROW),C&&(i|=Rn.COLUMN),i===Rn.NO_STATUS&&(i=Rn.ROW)}}const s=no(i,t.colSpan,r);s.__rowSpan=t.rowSpan;const o=t.style.backgroundColor;o!==""&&(s.__backgroundColor=o);const a=t.style.verticalAlign;(function(b){return b==="middle"||b==="bottom"})(a)&&(s.__verticalAlign=a);const l=e.get(xx),d=l|(function(b){let x=0;const S=b.fontWeight;S!=="700"&&S!=="bold"||(x|=ix),b.fontStyle==="italic"&&(x|=sx);const C=(b.textDecoration||"").split(" ");return C.includes("underline")&&(x|=LA),C.includes("line-through")&&(x|=ox),x})(t.style),h=e.get(pR),p=t.style.color,m=p?{...h,color:p}:h,v=[];return d!==l&&v.push(zm(xx,d)),m!==h&&v.push(zm(pR,m)),[s.splice(0,0,ZRe(e.$importChildren(t,{context:v})))]},match:si.tag("td","th"),name:"@lexical/table/cell"}];su(zd,{rules:QRe});function LR(e){const t=e.trim(),n=t.startsWith("|")?t.slice(1):t;return(n.endsWith("|")?n.slice(0,-1):n).split("|").map(i=>i.trim())}function eMe(e){const t=LR(e);return t.length>0&&t.every(n=>/^:?-+:?$/.test(n.trim())&&n.trim().length>=1)}const tMe={type:"multiline-element",dependencies:[qc,Mh,Pl],regExpStart:/^\|?[^|]*\|.*$/,regExpEnd:{optional:!0,regExp:/^\x00$/},handleImportAfterStartMatch({lines:e,rootNode:t,startLineIndex:n}){const r=e[n];if(r===void 0)return null;const i=e[n+1];if(i===void 0||!eMe(i))return null;const s=LR(r),o=s.length,a=[];let l=n+1;for(let p=n+2;p<e.length;p++){const m=e[p];if(m===void 0||!m.trim().includes("|")&&m.trim()!==""||m.trim()==="")break;a.push(LR(m)),l=p}const d=my(),h=Ed();for(let p=0;p<o;p++){const m=no(Rn.ROW),v=Pt(),b=s[p]??"";v.append(Hn(b)),m.append(v),h.append(m)}d.append(h);for(const p of a){const m=Ed();for(let v=0;v<o;v++){const b=no(Rn.NO_STATUS),x=Pt(),S=p[v]??"";x.append(Hn(S)),b.append(x),m.append(b)}d.append(m)}return t.append(d),[!0,l]},replace(e,t,n,r,i,s){return!1},export(e,t){if(!hr(e))return null;const n=e.getChildren();if(n.length===0)return null;const r=[];return n.forEach((i,s)=>{if(!ur(i))return;const o=i.getChildren(),a=o.map(l=>St(l)?t(l).trim():"");r.push(`| ${a.join(" | ")} |`),s===0&&r.push(`| ${o.map(()=>"---").join(" | ")} |`)}),r.join(`
|
|
2686
2686
|
`)}},RJ=[tMe,HAe,...bJ],nMe={paragraph:"break-words mt-5 mb-3 first:mt-0 last:mb-0",quote:"my-2 mt-5 mb-3 first:mt-0 last:mb-0 border-l-2 border-border/80 pl-2 text-muted-foreground",heading:{h1:"text-[20px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h2:"text-[18px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h3:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h4:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h5:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h6:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0"},list:{ul:"list-disc ml-5 my-2",ol:"list-decimal ml-5 my-2",listitem:"my-0.5",nested:{listitem:"list-none"}},link:"text-primary underline underline-offset-2",text:{bold:"font-semibold",italic:"italic",strikethrough:"line-through",code:"break-all px-1 bg-border/60 py-0.5 rounded text-sm"},code:"block text-xs whitespace-pre"};function rMe(e){throw e}function JP(e){return{namespace:e.namespace,theme:nMe,nodes:[...e.nodes],editable:e.editable??!0,onError:rMe}}function iMe(e,t){var n,r,i,s,o,a,l,d,h,p,m,v,b;return{...e,...t,terminal:{...e.terminal,...t.terminal},editor:{...e.editor,...t.editor},providerDefaults:{claude:{...e.providerDefaults.claude,...(n=t.providerDefaults)==null?void 0:n.claude,modelOptions:{...e.providerDefaults.claude.modelOptions,...(i=(r=t.providerDefaults)==null?void 0:r.claude)==null?void 0:i.modelOptions}},codex:{...e.providerDefaults.codex,...(s=t.providerDefaults)==null?void 0:s.codex,modelOptions:{...e.providerDefaults.codex.modelOptions,...(a=(o=t.providerDefaults)==null?void 0:o.codex)==null?void 0:a.modelOptions}},openrouter:{...e.providerDefaults.openrouter,...(l=t.providerDefaults)==null?void 0:l.openrouter,modelOptions:{}}},cloudflareTunnel:{...e.cloudflareTunnel,...t.cloudflareTunnel},claudeAuth:{tokens:((d=t.claudeAuth)==null?void 0:d.tokens)??e.claudeAuth.tokens,concurrencyDefault:((h=t.claudeAuth)==null?void 0:h.concurrencyDefault)??e.claudeAuth.concurrencyDefault},auth:{...e.auth,...t.auth},uploads:{...e.uploads,...t.uploads},subagents:e.subagents,customMcpServers:e.customMcpServers,customModels:e.customModels,textSnippets:e.textSnippets,claudeDriver:{preference:((p=t.claudeDriver)==null?void 0:p.preference)??e.claudeDriver.preference,lifecycle:{...e.claudeDriver.lifecycle,...(m=t.claudeDriver)==null?void 0:m.lifecycle}},globalPromptAppend:t.globalPromptAppend??e.globalPromptAppend,subagentRuntime:{runTimeoutMs:((v=t.subagentRuntime)==null?void 0:v.runTimeoutMs)??e.subagentRuntime.runTimeoutMs,defaultLoopSubagentId:((b=t.subagentRuntime)==null?void 0:b.defaultLoopSubagentId)!==void 0?t.subagentRuntime.defaultLoopSubagentId:e.subagentRuntime.defaultLoopSubagentId}}}const jr=tr()(e=>({settings:null,hydrationStatus:"idle",setHydrationStatus:t=>e({hydrationStatus:t}),setFromServer:t=>e({settings:t,hydrationStatus:"ready"}),applyOptimisticPatch:t=>e(n=>({settings:n.settings?iMe(n.settings,t):n.settings}))})),sMe=[],oMe=e=>{var t;return((t=e.settings)==null?void 0:t.customMcpServers)??sMe},aMe=[],gy=e=>{var t;return((t=e.settings)==null?void 0:t.customModels)??aMe},lMe=[],MJ=e=>{var t;return((t=e.settings)==null?void 0:t.textSnippets)??lMe},jJ=_.createContext(void 0),cMe=e=>e==="light"||e==="dark"||e==="system";function uMe(e){return e==="dark"?"black-translucent":"default"}function sF(e,t){if(typeof document>"u")return;let n=document.head.querySelector(`meta[name="${e}"]`);n||(n=document.createElement("meta"),n.setAttribute("name",e),document.head.appendChild(n)),n.setAttribute("content",t)}function oF(e){if(typeof document>"u"||typeof window>"u")return;const t=getComputedStyle(document.body).backgroundColor||getComputedStyle(document.documentElement).backgroundColor;t&&sF("theme-color",t),sF("apple-mobile-web-app-status-bar-style",uMe(e)),document.documentElement.style.colorScheme=e}const TS=()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",aF=e=>{if(typeof document>"u")return;const t=e==="system"?TS():e;document.documentElement.classList.toggle("dark",t==="dark")},dMe=()=>{var t;const e=(t=jr.getState().settings)==null?void 0:t.theme;return e&&cMe(e)?e:"system"};function fMe({children:e}){const t=jr(o=>{var a;return(a=o.settings)==null?void 0:a.theme}),n=jr(o=>o.applyOptimisticPatch),[r,i]=_.useState(dMe);_.useEffect(()=>{!t||t===r||i(t)},[t,r]),_.useEffect(()=>{aF(r)},[r]),_.useEffect(()=>{const o=r==="system"?TS():r;oF(o)},[r]),_.useEffect(()=>{if(r!=="system")return;const o=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>{aF("system"),oF(TS())};return o.addEventListener?(o.addEventListener("change",a),()=>o.removeEventListener("change",a)):(o.addListener(a),()=>o.removeListener(a))},[r]);const s=_.useMemo(()=>{const o=r==="system"?TS():r;return{theme:r,resolvedTheme:o,setTheme:a=>{i(a),n({theme:a})}}},[n,r]);return c.jsx(jJ.Provider,{value:s,children:e})}function O1(){const e=_.useContext(jJ);if(!e)throw new Error("useTheme must be used within ThemeProvider");return e}const OR=qt("HighlightedCode",()=>e=>({highlighted:null,setHighlighted:t=>e({highlighted:t})})),hMe=200*1024,pMe={ts:"typescript",typescript:"typescript",tsx:"tsx",js:"javascript",javascript:"javascript",jsx:"jsx",py:"python",python:"python",go:"go",golang:"go",rs:"rust",rust:"rust",java:"java",rb:"ruby",ruby:"ruby",sh:"bash",bash:"bash",zsh:"bash",shell:"bash",yml:"yaml",yaml:"yaml",css:"css",scss:"scss",html:"html",xml:"xml",json:"json",json5:"json5",md:"markdown",markdown:"markdown",sql:"sql",cpp:"cpp","c++":"cpp",c:"c",h:"c",swift:"swift",kt:"kotlin",kotlin:"kotlin",php:"php",toml:"toml",dockerfile:"dockerfile",diff:"diff",patch:"diff",vue:"vue",svelte:"svelte"};function mMe(e){return pMe[e.toLowerCase()]??null}const gMe=/^<pre[^>]*>/,vMe=/<\/pre>\s*$/,bMe=/^<code[^>]*>/,xMe=/<\/code>\s*$/;function yMe(e){return e.replace(gMe,"").replace(vMe,"").replace(bMe,"").replace(xMe,"")}function _Me({source:e,lang:t}){const{resolvedTheme:n}=O1(),r=n==="dark"?"github-dark":"github-light",i=mMe(t),s=i!==null&&e.length<=hMe,o=OR.useScopedStore(h=>h.highlighted),a=OR.useScopedStore(h=>h.setHighlighted);_.useEffect(()=>{if(!s||i===null)return;let h=!1;return Z(()=>Promise.resolve().then(()=>WG),void 0).then(async p=>{if(h)return;const m=await p.codeToHtml(e,{lang:i,theme:r});h||a({source:e,theme:r,lang:i,html:yMe(m)})}).catch(()=>{Qs.warn("[transcript] Shiki unavailable; falling back to plain code")}),()=>{h=!0}},[s,e,i,r,a]);const l=i??t.toLowerCase();return o!==null&&o.source===e&&o.theme===r&&o.lang===i?c.jsx("code",{className:`block text-xs whitespace-pre language-${l} shiki-highlighted`,dangerouslySetInnerHTML:{__html:o.html}}):c.jsx("code",{className:`block text-xs whitespace-pre language-${l}`,children:e})}function Bv({source:e,lang:t}){return c.jsx(OR.Provider,{init:void 0,children:c.jsx(_Me,{source:e,lang:t})})}const DR=qt("MessageCodeBlock",()=>e=>({copied:!1,setCopied:t=>e({copied:t})}));function SMe({source:e,lang:t}){const n=DR.useScopedStore(s=>s.copied),r=DR.useScopedStore(s=>s.setCopied),i=_.useCallback(async()=>{await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),2e3)},[e,r]);return c.jsxs("div",{className:"relative overflow-x-auto max-w-full min-w-0 no-code-highlight group/pre",children:[c.jsx("pre",{className:"min-w-0 rounded-xl py-2.5 px-3.5",children:t?c.jsx(Bv,{source:e,lang:t}):c.jsx("code",{className:"block text-xs whitespace-pre",children:e})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":n?"Copied":"Copy code",className:fe("absolute top-[35px] -translate-y-[50%] -translate-x-[1px] rounded-md right-1.5 h-11 w-11 md:h-8 md:w-8 text-muted-foreground opacity-100 md:opacity-0 md:group-hover/pre:opacity-100 transition-opacity [@media(hover:none)]:!opacity-100",!n&&"hover:text-foreground",n&&"hover:!bg-transparent hover:!border-transparent"),onClick:i,children:n?c.jsx(js,{className:"h-4 w-4 text-success"}):c.jsx(Ba,{className:"h-4 w-4"})})]})}function IJ({source:e,lang:t}){return c.jsx(DR.Provider,{init:void 0,children:c.jsx(SMe,{source:e,lang:t})})}const wMe=[bg,vg,au,Dl,gg,py,Bd,j1,qc,Mh,Pl];let PJ=0;function Ti(){return String(PJ++)}function LJ(e){if(YP(e)){const n=e.getTag(),r=Du(e),i={h1:"text-[20px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h2:"text-[18px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h3:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h4:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h5:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0",h6:"text-[16px] font-normal leading-tight mt-5 mb-3 first:mt-0 last:mb-0"},s=i[n]??i.h1,o=Ti();switch(n){case"h1":return c.jsx("h1",{className:s,children:r},o);case"h2":return c.jsx("h2",{className:s,children:r},o);case"h3":return c.jsx("h3",{className:s,children:r},o);case"h4":return c.jsx("h4",{className:s,children:r},o);case"h5":return c.jsx("h5",{className:s,children:r},o);default:return c.jsx("h6",{className:s,children:r},o)}}if(yx(e))return c.jsx("blockquote",{className:"my-2 mt-5 mb-3 first:mt-0 last:mb-0 border-l-2 border-border/80 pl-2 text-muted-foreground",children:Du(e)},Ti());if(ga(e))return c.jsx("p",{className:"break-words mt-5 mb-3 first:mt-0 last:mb-0",children:Du(e)},Ti());if(hy(e)){const n=e.getLanguage()??"",r=e.getChildren().map(i=>Pe(i)||Bm(i)?i.getTextContent():oi(i)?`
|
|
2687
|
-
`:"").join("");return c.jsx(IJ,{source:r,lang:n},Ti())}if(At(e)){const n=e.getListType(),r=Du(e),i=Ti();return n==="number"?c.jsx("ol",{className:"list-decimal ml-5 my-2",children:r},i):c.jsx("ul",{className:"list-disc ml-5 my-2",children:r},i)}if(_n(e)){const n=e.getChecked(),r=Du(e),i=Ti();return n!==void 0?c.jsxs("li",{className:"my-0.5 list-none flex items-start gap-1.5",children:[c.jsx("input",{type:"checkbox",readOnly:!0,checked:n,className:"mt-[3px] shrink-0"}),c.jsx("span",{children:r})]},i):c.jsx("li",{className:"my-0.5",children:r},i)}if(Gs(e)||td(e)){const n=e.getURL();return c.jsx("a",{href:n,className:"transition-all underline decoration-2 text-logo decoration-logo/50 hover:text-logo/70 dark:text-logo dark:decoration-logo/70 dark:hover:text-logo/60 dark:hover:decoration-logo/40",target:"_blank",rel:"noopener noreferrer",children:Du(e)},Ti())}if(hr(e)){const n=e.getChildren(),r=n[0],i=r!==void 0&&ur(r)&&r.getChildren().every(a=>St(a)&&(a.getHeaderStyles()&Rn.ROW)!==0),s=i?r:void 0,o=i?n.slice(1):n;return c.jsx("div",{className:"border border-border rounded-xl overflow-x-auto",children:c.jsxs("table",{className:"table-auto min-w-full divide-y divide-border bg-background",children:[s!==void 0&&c.jsx("thead",{children:c.jsx("tr",{children:s.getChildren().map(a=>c.jsx("th",{className:"text-left text-xs uppercase text-muted-foreground tracking-wider p-2 pl-0 first:pl-3 bg-muted dark:bg-card [&_*]:font-semibold",children:Du(a)},Ti()))})}),c.jsx("tbody",{className:"divide-y divide-border",children:o.map(a=>ur(a)?c.jsx("tr",{children:a.getChildren().map(l=>St(l)?c.jsx("td",{className:"text-left p-2 pl-0 first:pl-3 [&_*]:font-normal",children:Du(l)},Ti()):null)},Ti()):null)})]})},Ti())}if(oi(e))return c.jsx("br",{},Ti());if(Pe(e))return CMe(e);if(Bm(e))return c.jsx("code",{className:"break-all px-1 bg-border/60 py-0.5 rounded text-sm",children:e.getTextContent()},Ti());const t=e.getTextContent();return t?c.jsx("span",{children:t},Ti()):null}function CMe(e){const t=e.getFormat(),n=e.getTextContent(),r=(t&ix)!==0,i=(t&sx)!==0,s=(t&ox)!==0,o=(t&tP)!==0;let a=n;return o?c.jsx("code",{className:"break-all px-1 bg-border/60 py-0.5 rounded text-sm",children:n},Ti()):(s&&(a=c.jsx("del",{className:"line-through",children:a},Ti())),i&&(a=c.jsx("em",{className:"italic",children:a},Ti())),r&&(a=c.jsx("strong",{className:"font-semibold",children:a},Ti())),!r&&!i&&!s?n:a)}function Du(e){return e.getChildren().map(LJ)}function kMe(){PJ=0;const t=Pn().getChildren();return c.jsx(c.Fragment,{children:t.map(LJ)})}function Yc(e,t=RJ){const n=VY(JP({namespace:"kanna-md-renderer",nodes:wMe,editable:!1}));return n.update(()=>{xJ(e,t,void 0,!0)},{discrete:!0}),n.getEditorState().read(()=>kMe())}const AS=new Map;function EMe(e){return`${e.id}|${e.contentUrl}|${e.size??0}`}function NMe(e,t){return t.type==="setLoadState"?{...e,loadState:t.payload}:{lastKey:t.newKey,loadState:AS.get(t.newKey)??{status:"loading"}}}function vy(e){const t=EMe(e),n=AS.get(t),[{loadState:r,lastKey:i},s]=_.useReducer(NMe,{loadState:n??{status:"loading"},lastKey:t}),o=_.useRef(t);return o.current=t,i!==t&&s({type:"resetForKey",newKey:t}),_.useEffect(()=>{if(n&&n.status!=="loading")return;let a=!1;const l=t;return QI(e.contentUrl,QG).then(d=>{if(a||o.current!==l)return;const h={status:"ready",content:d.content,truncated:d.truncated};AS.set(l,h),s({payload:h,type:"setLoadState"})}).catch(d=>{if(a||o.current!==l)return;const p={status:"error",message:d instanceof Error?d.message:"Unable to load preview."};AS.set(l,p),s({payload:p,type:"setLoadState"})}),()=>{a=!0}},[n,t,e.contentUrl]),r}function TMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("div",{className:"prose hidden"})," Loading…"]}):t.status==="error"?c.jsx("div",{className:"p-4 text-sm text-destructive",children:t.message}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("div",{className:"prose prose-sm prose-invert max-w-none rounded-xl border border-border bg-background p-4",children:Yc(t.content)})]})}const $R=qt("TableBody",e=>t=>({state:e.initialState,setState:n=>t({state:n})})),RS=new Map;function OJ(e){return`${e.id}|${e.contentUrl}|${e.size??0}|${e.mimeType}`}function AMe({source:e}){const t=OJ(e),n=RS.get(t),r=$R.useScopedStore(h=>h.state),i=$R.useScopedStore(h=>h.setState),s=_.useRef(t);if(s.current=t,_.useEffect(()=>{if(n&&n.status!=="loading")return;const h=e.mimeType==="text/tab-separated-values"?" ":",";let p=!1;const m=t;return QI(e.contentUrl,QG).then(v=>{if(p||s.current!==m)return;const b={status:"ready",table:cEe(v.content,h),truncated:v.truncated};RS.set(m,b),i(b)}).catch(v=>{if(p||s.current!==m)return;const b={status:"error",message:v instanceof Error?v.message:"Unable to load preview."};RS.set(m,b),i(b)}),()=>{p=!0}},[n,t,e.contentUrl,e.mimeType,i]),r.status==="loading")return c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("table",{className:"sr-only"})," Loading…"]});if(r.status==="error")return c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("table",{className:"sr-only"})," ",r.message]});const{table:o}=r,[a,...l]=o.rows,d=[r.truncated?"Preview truncated to 1024 KB.":null,o.truncatedRows?`Showing first ${o.rows.length} of ${o.rowCount} rows.`:null,o.truncatedColumns?`Showing first ${AA} of ${o.columnCount} columns.`:null].filter(Boolean);return c.jsxs("div",{className:"space-y-2 p-3",children:[d.length?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:d.join(" ")}):null,c.jsx("div",{className:"overflow-x-auto rounded-xl border border-border bg-background",children:c.jsxs("table",{className:"min-w-full border-collapse text-xs",children:[a?c.jsx("thead",{className:"sticky top-0 bg-muted",children:c.jsx("tr",{children:a.map((h,p)=>c.jsx("th",{className:"border-b border-border px-3 py-2 text-left font-medium",children:h||" "},p))})}):null,c.jsx("tbody",{children:l.map((h,p)=>c.jsx("tr",{className:"odd:bg-background even:bg-muted/20",children:h.map((m,v)=>c.jsx("td",{className:"max-w-[320px] border-b border-border px-3 py-2 align-top",children:c.jsx("div",{className:"whitespace-pre-wrap break-words",children:m||" "})},v))},p))})]})})]})}function RMe({source:e}){const t=OJ(e),n=RS.get(t);return c.jsx($R.Provider,{init:{initialState:n??{status:"loading"}},children:c.jsx(AMe,{source:e})})}function MMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx(jMe,{children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:t.content})]})}function jMe({children:e}){return c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:e})}function IMe({source:e}){const t=vy(e),n=_.useMemo(()=>t.status==="ready"?lEe(t.content):"",[t]);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:n})]})}function PMe({source:e}){return c.jsxs("div",{className:"flex h-full flex-col items-stretch justify-center gap-3 p-4",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:e.displayName}),c.jsx("audio",{src:e.contentUrl,controls:!0,preload:"metadata",className:"w-full"})]})}function LMe({source:e}){return c.jsx("div",{className:"flex h-full items-center justify-center bg-black/40 p-2",children:c.jsx("video",{src:e.contentUrl,controls:!0,playsInline:!0,preload:"metadata",className:"max-h-[60dvh] w-full rounded-xl"})})}const zR=qt("CodeBody",()=>e=>({highlighted:null,setHighlighted:t=>e({highlighted:t})})),OMe=200*1024;function DMe(e){const t=e.lastIndexOf(".");if(t<0)return"text";const n=e.slice(t+1).toLowerCase();return{ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",py:"python",go:"go",rs:"rust",java:"java",rb:"ruby",sh:"bash",zsh:"bash",yml:"yaml",yaml:"yaml",css:"css",scss:"scss",html:"html",json:"json",md:"markdown",sql:"sql",cpp:"cpp",c:"c",h:"c",swift:"swift",kt:"kotlin",php:"php",toml:"toml"}[n]??"text"}function $Me({source:e}){const t=vy(e),n=t.status==="ready"&&t.content.length<=OMe,r=n?`${e.id}|${e.contentUrl}|${e.size??0}|${t.content.length}`:null,i=zR.useScopedStore(o=>o.highlighted),s=zR.useScopedStore(o=>o.setHighlighted);return _.useEffect(()=>{if(!n||t.status!=="ready"||r===null)return;let o=!1;const a=r;return Z(()=>Promise.resolve().then(()=>WG),void 0).then(async l=>{if(o)return;const d=await l.codeToHtml(t.content,{lang:DMe(e.fileName),theme:"github-dark"});o||s({key:a,html:d})}).catch(()=>{Qs.warn("[file-preview] Shiki unavailable; falling back to plain text")}),()=>{o=!0}},[n,r,t,e.fileName,s]),t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):i&&i.key===r?c.jsx("div",{className:"overflow-x-auto p-3 text-xs",dangerouslySetInnerHTML:{__html:i.html}}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:t.content})]})}function zMe({source:e}){return c.jsx(zR.Provider,{init:void 0,children:c.jsx($Me,{source:e})})}const vf=qt("MermaidZoomModal",()=>e=>({scale:1,offset:{x:0,y:0},drag:null,setScale:t=>e({scale:t}),setOffset:t=>e({offset:t}),setDrag:t=>e({drag:t})}));function BMe({svg:e,onClose:t}){const n=vf.useScopedStore(m=>m.scale),r=vf.useScopedStore(m=>m.offset),i=vf.useScopedStore(m=>m.drag),s=vf.useScopedStore(m=>m.setScale),o=vf.useScopedStore(m=>m.setOffset),a=vf.useScopedStore(m=>m.setDrag);_.useEffect(()=>{const m=v=>{v.key==="Escape"&&t()};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[t]);const l=m=>Math.min(8,Math.max(.25,m)),d=m=>{a({x:m.clientX-r.x,y:m.clientY-r.y})},h=m=>{i&&o({x:m.clientX-i.x,y:m.clientY-i.y})},p=()=>a(null);return As.createPortal(c.jsxs("div",{className:"fixed inset-0 z-[100] flex flex-col bg-background/95",role:"dialog","aria-modal":"true","aria-label":"Diagram zoom view",children:[c.jsxs("div",{className:"flex justify-end gap-1 p-2",children:[c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom out",className:"h-9 w-9",onClick:()=>s(l(n-.25)),children:c.jsx(C7,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom in",className:"h-9 w-9",onClick:()=>s(l(n+.25)),children:c.jsx(ro,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Reset view",className:"h-9 w-9",onClick:()=>{s(1),o({x:0,y:0})},children:c.jsx(tae,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Close",className:"h-9 w-9",onClick:t,children:c.jsx(jo,{className:"h-4 w-4"})})]}),c.jsx("div",{className:"flex-1 overflow-hidden touch-none cursor-grab active:cursor-grabbing",onPointerDown:d,onPointerMove:h,onPointerUp:p,onPointerLeave:p,children:c.jsx("div",{"data-mermaid-stage":!0,className:"w-full h-full flex items-center justify-center",style:{transform:`translate(${r.x}px, ${r.y}px) scale(${n})`},dangerouslySetInnerHTML:{__html:e}})})]}),document.body)}function FMe({svg:e,onClose:t}){return c.jsx(vf.Provider,{init:void 0,children:c.jsx(BMe,{svg:e,onClose:t})})}const fc=qt("MermaidDiagram",()=>e=>({renderState:{status:"loading"},showSource:!1,zoomOpen:!1,copied:!1,setRenderState:t=>e({renderState:t}),setShowSource:t=>e({showSource:t}),setZoomOpen:t=>e({zoomOpen:t}),setCopied:t=>e({copied:t})}));let TT=null;function UMe(){return TT||(TT=Z(()=>import("./mermaid.core-D7AdC_lE.js").then(e=>e.bm),[]).then(e=>e.default)),TT}function HMe({source:e}){const{resolvedTheme:t}=O1(),n=t==="dark"?"dark":"default",r=fc.useScopedStore(x=>x.renderState),i=fc.useScopedStore(x=>x.showSource),s=fc.useScopedStore(x=>x.zoomOpen),o=fc.useScopedStore(x=>x.copied),a=fc.useScopedStore(x=>x.setRenderState),l=fc.useScopedStore(x=>x.setShowSource),d=fc.useScopedStore(x=>x.setZoomOpen),h=fc.useScopedStore(x=>x.setCopied),m=`mermaid-${_.useId().replace(/[^a-zA-Z0-9_-]/g,"")}`,v=_.useCallback(()=>d(!1),[d]),b=async()=>{await navigator.clipboard.writeText(e),h(!0),setTimeout(()=>h(!1),2e3)};return _.useEffect(()=>{let x=!1;return UMe().then(async S=>{S.initialize({startOnLoad:!1,securityLevel:"strict",theme:n});const{svg:C}=await S.render(m,e);x||a({status:"ready",svg:C})}).catch(()=>{x||a({status:"error"})}),()=>{x=!0}},[e,n,m,a]),r.status==="error"?c.jsx(oT,{source:e}):r.status==="loading"?c.jsx("div",{className:"relative group/mermaid",children:c.jsx(oT,{source:e})}):i?c.jsxs("div",{className:"relative group/mermaid",children:[c.jsx(oT,{source:e}),c.jsx(lF,{showSource:i,onToggleSource:()=>l(!i),onCopy:b,copied:o,onZoom:void 0})]}):c.jsxs("div",{className:"relative group/mermaid my-3",children:[c.jsx("div",{className:"flex justify-center overflow-x-auto",dangerouslySetInnerHTML:{__html:r.svg}}),c.jsx(lF,{showSource:i,onToggleSource:()=>l(!i),onCopy:b,copied:o,onZoom:()=>d(!0)}),s&&c.jsx(FMe,{svg:r.svg,onClose:v})]})}function DJ({source:e}){return c.jsx(fc.Provider,{init:void 0,children:c.jsx(HMe,{source:e})})}function lF({showSource:e,onToggleSource:t,onCopy:n,copied:r,onZoom:i}){return c.jsxs("div",{className:"absolute top-1.5 right-1.5 flex gap-1 opacity-100 md:opacity-0 md:group-hover/mermaid:opacity-100 transition-opacity [@media(hover:none)]:!opacity-100",children:[i&&!e&&c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom diagram",className:"h-8 w-8 rounded-md text-muted-foreground hover:text-foreground",onClick:i,children:c.jsx(Eoe,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":e?"View rendered diagram":"View diagram source",className:"h-8 w-8 rounded-md text-muted-foreground hover:text-foreground",onClick:t,children:c.jsx(p2,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":r?"Copied":"Copy diagram source",className:fe("h-8 w-8 rounded-md text-muted-foreground",!r&&"hover:text-foreground",r&&"hover:!bg-transparent"),onClick:n,children:r?c.jsx(js,{className:"h-4 w-4 text-success"}):c.jsx(Ba,{className:"h-4 w-4"})})]})}function WMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("div",{className:"hidden"})," Loading…"]}):t.status==="error"?c.jsx("div",{className:"p-4 text-sm text-destructive",children:t.message}):c.jsx("div",{className:"p-4",children:c.jsx(DJ,{source:t.content})})}async function VMe(e){var n;const t=GMe(e.contentUrl);if("share"in navigator&&typeof navigator.share=="function")try{return await navigator.share({title:e.displayName,url:t}),"shared"}catch(r){if(r instanceof DOMException&&r.name==="AbortError")return"shared"}if((n=navigator.clipboard)!=null&&n.writeText)try{return await navigator.clipboard.writeText(t),"copied"}catch{return"failed"}return"failed"}function KMe(e){const t=document.createElement("a");t.href=e.contentUrl,t.download=e.fileName,t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function GMe(e){return typeof window>"u"?e:new URL(e,document.baseURI||window.location.href).toString()}const BR=qt("SheetBody",()=>e=>({dy:0,setDy:t=>e({dy:t})}));function jh({source:e,open:t,onOpenChange:n}){const r=_.useCallback(()=>n(!1),[n]);return c.jsx(To,{open:t&&e!==null,onOpenChange:n,children:c.jsx(io,{size:"lg",className:"inset-0 h-[100dvh] max-h-none w-full max-w-none translate-x-0 translate-y-0 rounded-none p-0 md:inset-auto md:left-1/2 md:top-1/2 md:h-auto md:max-h-[90dvh] md:w-auto md:max-w-3xl md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-2xl",children:e?c.jsx(ZMe,{source:e,onClose:r}):null})})}const qMe=120,YMe=.5;function XMe({startY:e,lastY:t,lastT:n,endY:r,now:i}){const s=r-e,o=Math.max(1,i-n),a=(r-t)/o;return s>qMe||a>YMe}function JMe({source:e,onClose:t}){const n=eje(e),r=BR.useScopedStore(p=>p.dy),i=BR.useScopedStore(p=>p.setDy),s=_.useRef(null),o=_.useCallback(p=>{s.current={y:p.clientY,lastY:p.clientY,lastT:Date.now()};try{p.currentTarget.setPointerCapture(p.pointerId)}catch{}},[]),a=_.useCallback(p=>{if(!s.current)return;const m=p.clientY-s.current.y;m<0||(s.current.lastY=p.clientY,s.current.lastT=Date.now(),i(m))},[i]),l=_.useCallback(p=>{const m=s.current;s.current=null;try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}m&&(XMe({startY:m.y,lastY:m.lastY,lastT:m.lastT,endY:p.clientY,now:Date.now()})?t():i(0))},[t,i]),d=_.useCallback(()=>{VMe(e)},[e]),h=_.useCallback(()=>KMe(e),[e]);return c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",style:r>0?{transform:`translateY(${r}px)`,transition:"none"}:void 0,children:[c.jsxs("div",{onPointerDown:o,onPointerMove:a,onPointerUp:l,onPointerCancel:l,className:"border-b border-border px-4 py-3 touch-none",children:[c.jsx("div",{className:"mx-auto mb-2 h-1 w-12 rounded-full bg-muted md:hidden",role:"button","aria-label":"Drag down to close"}),c.jsx(Ao,{className:"truncate text-base",children:e.displayName}),c.jsx(Qm,{className:"truncate text-xs",children:n})]}),c.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain touch-pan-y [-webkit-overflow-scrolling:touch]",role:"region","aria-label":"File preview",children:_.createElement(QMe(e),{source:e})},e.id),c.jsxs("div",{className:"flex items-center justify-end gap-2 border-t border-border px-4 py-3",children:[c.jsxs(Me,{type:"button",variant:"outline",onClick:d,children:[c.jsx(gae,{className:"mr-2 h-4 w-4"}),"Share"]}),e.origin==="offer_download"?c.jsxs(Me,{type:"button",onClick:h,children:[c.jsx(tj,{className:"mr-2 h-4 w-4"}),"Download"]}):null]})]})}function ZMe({source:e,onClose:t}){return c.jsx(BR.Provider,{init:void 0,children:c.jsx(JMe,{source:e,onClose:t})})}function QMe(e){const t={id:e.id,displayName:e.displayName,mimeType:e.mimeType,size:e.size??0,contentUrl:e.contentUrl,relativePath:e.relativePath??""},n=kh(t);return n==="image"?CEe:n==="pdf"?Yz:n==="audio"?PMe:n==="video"?LMe:n==="table"?RMe:n==="markdown"?TMe:n==="json"?IMe:n==="mermaid"?WMe:n==="code"?zMe:dg(t).kind==="external"?Yz:MMe}function eje(e){const t={id:e.id,displayName:e.displayName,mimeType:e.mimeType,size:e.size??0,contentUrl:e.contentUrl,relativePath:e.relativePath??""},n=kh(t),r=Qx(n,e.mimeType),i=e.size?` · ${Eh(e.size)}`:"";return`${r}${i}`}function xg(e,t){return{id:e.id,contentUrl:e.contentUrl,displayName:e.displayName,fileName:e.displayName,relativePath:e.relativePath,mimeType:e.mimeType,size:e.size,origin:t}}const Al=_.forwardRef(({className:e,...t},n)=>c.jsx("textarea",{"data-gramm":"false","data-gramm_editor":"false","data-enable-grammarly":"false","data-1p-ignore":!0,autoComplete:"off",className:fe("flex w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));Al.displayName="Textarea";const tje=new Set(["changes","history"]),nje=new Set(["public","private"]),rje=new Set(["branches","pull_requests"]);function ije(e){return tje.has(e)}function sje(e){return nje.has(e)}function oje(e){return rje.has(e)}const A0={};function cF(e){return!e.isCollapsed&&!e.hasPreviewAttachment&&e.patch===void 0&&e.patchError===void 0&&!e.isPatchLoading}function aje(e,t){return!e||!t.mimeType||typeof t.size!="number"||t.changeType==="deleted"||!t.mimeType.startsWith("image/")&&t.mimeType!=="application/pdf"?null:{id:`diff:${t.path}`,kind:t.mimeType.startsWith("image/")?"image":"file",displayName:t.path.split("/").pop()??t.path,absolutePath:t.path,relativePath:t.path,contentUrl:`/api/projects/${e}/files/${encodeURIComponent(t.path)}/content`,mimeType:t.mimeType,size:t.size}}function $J(e){return e.isUntracked}function lje(e){return $J(e)?e.path.includes("/"):!1}function AT(e){return c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsx("button",{type:"button","aria-label":e.label,title:e.label,onClick:e.onClick,className:fe("flex h-11 w-11 md:h-7 md:w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",e.active&&"bg-accent text-foreground"),children:e.children})}),c.jsx(Ms,{children:e.label})]})}function zJ({checked:e,mixed:t=!1,label:n,className:r,onClick:i}){let s;return t?s=c.jsx(C7,{className:"h-3 w-3",strokeWidth:3}):e?s=c.jsx(js,{className:"h-3 w-3",strokeWidth:3}):s=null,c.jsx("button",{type:"button","aria-label":n??(e?"Exclude file from commit":"Include file in commit"),"aria-checked":t?"mixed":e,"aria-pressed":t?"mixed":e,onClick:o=>{o.stopPropagation(),i()},className:fe("flex size-4.5 shrink-0 items-center justify-center rounded border transition-colors",e||t?"border-foreground bg-foreground text-background":"border-border bg-background text-transparent",r),children:s})}function ZP(e){const t=Date.parse(e);if(!Number.isFinite(t))return"";const n=Date.now()-t,r=6e4,i=60*r,s=24*i,o=7*s,a=30*s,l=365*s;return n<r?"just now":n<i?`${Math.round(n/r)}m ago`:n<s?`${Math.round(n/i)}hr ago`:n<o?`${Math.round(n/s)}d ago`:n<a?`${Math.round(n/o)}wk ago`:n<l?`${Math.round(n/a)}mo ago`:`${Math.round(n/l)}yr ago`}function cje(e){return e?`Last fetched ${ZP(e)}`:"No local fetch recorded"}function uje({entry:e,isPendingPush:t=!1}){const n=ZP(e.authoredAt),r=!!e.githubUrl;let i;return e.tags.length>0?i=c.jsxs("div",{className:"flex shrink-0 flex-wrap justify-end gap-1",children:[e.tags.map(s=>c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:s},s)),t?c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:c.jsx(Sb,{className:"size-3"})}):null]}):t?i=c.jsx("div",{className:"flex shrink-0 flex-wrap justify-end gap-1",children:c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:c.jsx(Sb,{className:"size-3"})})}):i=null,c.jsxs("button",{type:"button",disabled:!r,onClick:()=>{!e.githubUrl||typeof window>"u"||window.open(e.githubUrl,"_blank","noopener,noreferrer")},className:fe("flex w-full items-start gap-3 rounded-lg border border-border bg-background pl-3 pr-2 py-2 text-left transition-colors",r?"hover:bg-accent":"cursor-default opacity-60"),children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.summary}),e.description?c.jsx("div",{className:"mt-1 line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:e.description}):null,c.jsxs("div",{className:"mt-1 flex min-w-0 items-center gap-1 text-xs text-muted-foreground",children:[e.authorName?c.jsx("span",{className:"truncate",children:e.authorName}):null,e.authorName&&n?c.jsx("span",{"aria-hidden":"true",children:"•"}):null,n?c.jsx("span",{children:n}):null]})]}),i]})}function uF(e){switch(e.kind){case"local":return 0;case"pull_request":return 1;case"remote":default:return 2}}function dje(e){const t=new Map;for(const n of e){const r=t.get(n.name);(!r||uF(n)<uF(r))&&t.set(n.name,n)}return t}function fje(e,t){const n=dje([...e.local,...e.pullRequests,...e.remote]);t&&n.delete(t);const r=new Set,i=e.defaultBranchName?n.get(e.defaultBranchName):void 0;i&&r.add(i.name);const s=e.recent.map(a=>n.get(a.name)??a).filter(a=>!!a&&!r.has(a.name));for(const a of s)r.add(a.name);const o=[...n.values()].filter(a=>!r.has(a.name)).sort((a,l)=>a.displayName.localeCompare(l.displayName));return{defaultBranch:i,recent:s,other:o}}function hje({open:e,onOpenChange:t,onGetGitHubPublishInfo:n,onCheckGitHubRepoAvailability:r,onPublish:i}){const s=st(L=>L.publishInfo),o=st(L=>L.isLoadingPublishInfo),a=st(L=>L.publishOwner),l=st(L=>L.publishName),d=st(L=>L.publishVisibility),h=st(L=>L.publishDescription),p=st(L=>L.publishAvailability),m=st(L=>L.isCheckingPublishAvailability),v=st(L=>L.isPublishing),b=st(L=>L.setPublishInfo),x=st(L=>L.setIsLoadingPublishInfo),S=st(L=>L.setPublishOwner),C=st(L=>L.setPublishName),k=st(L=>L.setPublishVisibility),w=st(L=>L.setPublishDescription),N=st(L=>L.setPublishAvailability),A=st(L=>L.setIsCheckingPublishAvailability),T=st(L=>L.setIsPublishing);_.useEffect(()=>{if(!e)return;let L=!1;return x(!0),N(null),n().then(I=>{L||(b(I),S(I.owners[0]??I.activeAccountLogin??""),C(I.suggestedRepoName),k("private"),w(""))}).finally(()=>{L||x(!1)}),()=>{L=!0}},[n,e,N,w,b,x,C,S,k]),_.useEffect(()=>{if(!e||!(s!=null&&s.ghInstalled)||!s.authenticated)return;const L=a.trim(),I=l.trim();if(!L||!I){N(null);return}let $=!1;A(!0);const H=window.setTimeout(()=>{r({owner:L,name:I}).then(z=>{$||N(z)}).finally(()=>{$||A(!1)})},250);return()=>{$=!0,window.clearTimeout(H)}},[s==null?void 0:s.authenticated,s==null?void 0:s.ghInstalled,l,r,e,a,N,A]);async function M(){if(!(!a.trim()||!l.trim())){T(!0);try{const L=await i({owner:a.trim(),name:l.trim(),visibility:d,description:h});Hi(L)&&L.ok&&t(!1)}finally{T(!1)}}}const j=!!(s!=null&&s.ghInstalled&&s.authenticated&&a.trim()&&l.trim()&&(p!=null&&p.available)&&!m&&!v);let P;m?P=c.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-3 flex items-center text-muted-foreground",children:c.jsx(jn,{className:"size-4 animate-spin"})}):p?P=c.jsx("div",{className:"absolute inset-y-0 right-2 flex items-center",children:c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsx("button",{type:"button",tabIndex:-1,"aria-label":p.message,className:fe("flex size-6 items-center justify-center rounded-md",p.available?"text-success":"text-destructive"),children:p.available?c.jsx(js,{className:"size-4"}):c.jsx(xm,{className:"size-4"})})}),c.jsx(Ms,{children:p.message})]})}):P=null;let D;return o?D=c.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-4 animate-spin"}),c.jsx("span",{children:"Checking GitHub CLI…"})]}):s&&!s.ghInstalled?D=c.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[c.jsx("p",{children:"GitHub CLI is not installed."}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"brew install gh"}),c.jsx("p",{children:"Then run:"}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"gh auth login"})]}):s&&!s.authenticated?D=c.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[c.jsx("p",{children:"GitHub CLI is installed but not signed in."}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"gh auth login"})]}):D=c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"space-y-2",children:c.jsxs(Qo,{value:a,onValueChange:S,children:[c.jsx(Co,{className:"pl-[11px] [&>span]:flex [&>span]:items-center [&>span]:gap-2",children:c.jsx(ja,{placeholder:"Select owner"})}),c.jsx(ko,{children:((s==null?void 0:s.owners)??[]).map(L=>c.jsx(ri,{value:L,children:c.jsxs("span",{className:"flex items-center gap-2",children:[L===(s==null?void 0:s.activeAccountLogin)?c.jsx(vC,{className:"size-4 text-muted-foreground"}):c.jsx(Bie,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:L})]})},L))})]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs("div",{className:"relative",children:[c.jsx(dn,{value:l,onChange:L=>C(L.target.value),placeholder:"my-repo",className:"pl-9 pr-10"}),c.jsx(Hoe,{className:"pointer-events-none absolute inset-y-0 left-3 my-auto size-4 text-muted-foreground"}),P]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs("div",{className:"relative",children:[c.jsx(Ix,{className:"pointer-events-none absolute left-3 top-3 size-4 text-muted-foreground"}),c.jsx(Al,{value:h,onChange:L=>w(L.target.value),rows:3,placeholder:"Optional description",className:"pl-9 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"})]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs(Qo,{value:d,onValueChange:L=>{sje(L)&&k(L)},children:[c.jsx(Co,{className:"pl-[11px] [&>span]:flex [&>span]:items-center [&>span]:gap-2",children:c.jsx(ja,{placeholder:"Select visibility"})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"private",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(Soe,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:"Private"})]})}),c.jsx(ri,{value:"public",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(aoe,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:"Public"})]})})]})]})})]}),c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",className:"max-w-[min(92vw,475px)]",children:[c.jsxs(la,{className:"space-y-2 px-4 pb-4 pt-4",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx(Ao,{children:"Push to GitHub"}),c.jsx(Qm,{children:"Create a GitHub repository from this local project using GitHub CLI."})]}),D]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{size:"sm",disabled:!j,onClick:()=>void M(),children:v?c.jsxs(c.Fragment,{children:[c.jsx(jn,{className:"mr-1.5 size-3.5 animate-spin"}),"Publishing…"]}):"Push to GitHub"})]})]})})}function BJ({value:e,onChange:t,placeholder:n,disabled:r,trailingAction:i}){return c.jsxs("div",{className:"relative",children:[c.jsx(Jp,{className:"pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),c.jsx(dn,{value:e,onChange:s=>t(s.target.value),placeholder:n,className:fe("h-9 pl-7 text-sm",i?"pr-14":void 0),disabled:r}),i?c.jsx("div",{className:"absolute right-1 top-1/2 -translate-y-1/2",children:i}):null]})}function Df({title:e,entries:t,emptyLabel:n,selectedName:r,disabled:i,stickyTitle:s=!1,onSelect:o}){return t.length===0&&!n?null:c.jsxs("div",{className:"space-y-1",children:[c.jsx("div",{className:fe("px-1 py-1 text-[11px] font-medium uppercase tracking-[0.08em] text-muted-foreground",s&&"sticky top-0 z-10 bg-background"),children:e}),t.length===0?c.jsx("div",{className:"px-1 py-1 text-xs text-muted-foreground",children:n}):t.map(a=>{const l=r===a.name;return c.jsxs("button",{type:"button",disabled:i,onClick:()=>o(a),className:fe("flex w-full items-start gap-2 rounded-lg px-2 py-2 text-left transition-colors disabled:opacity-60",l?"bg-accent text-foreground":"hover:bg-accent"),children:[a.kind==="pull_request"?c.jsx(x7,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}):c.jsx(Cc,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex w-full items-center gap-3",children:[c.jsx("div",{className:"min-w-0 flex-1 overflow-hidden whitespace-nowrap text-sm text-foreground",children:a.displayName}),a.updatedAt?c.jsx("div",{className:"ml-auto shrink-0 text-right text-[11px] text-muted-foreground",children:ZP(a.updatedAt)}):null]}),a.kind==="pull_request"&&a.description||a.headLabel?c.jsx("div",{className:"truncate text-xs text-muted-foreground",children:a.kind==="pull_request"?a.description??a.headLabel??a.name:a.headLabel??void 0}):null]})]},a.id)})]})}function pje({open:e,onOpenChange:t,branchList:n,currentBranchName:r,onPreviewMergeBranch:i,onMergeBranch:s}){const o=st(z=>z.mergeBranchQuery),a=st(z=>z.mergeBranchSelectedName),l=st(z=>z.mergePreview),d=st(z=>z.mergePreviewError),h=st(z=>z.isMergePreviewLoading),p=st(z=>z.isMergeBranching),m=st(z=>z.setMergeBranchQuery),v=st(z=>z.setMergeBranchSelectedName),b=st(z=>z.setMergePreview),x=st(z=>z.setMergePreviewError),S=st(z=>z.setIsMergePreviewLoading),C=st(z=>z.setIsMergeBranching),k=st(z=>z.resetMergeBranchModal),w=st(z=>z.resetMergePreview),N=_.useMemo(()=>n?fje(n,r):{defaultBranch:void 0,recent:[],other:[]},[n,r]),A=o.trim().toLowerCase(),T=_.useCallback(z=>A?[z.displayName,z.name,z.description,z.prTitle,z.headLabel].some(F=>F==null?void 0:F.toLowerCase().includes(A)):!0,[A]),M=N.defaultBranch&&T(N.defaultBranch)?N.defaultBranch:void 0,j=N.recent.filter(T),P=N.other.filter(T),D=_.useMemo(()=>a?[N.defaultBranch,...N.recent,...N.other].find(z=>z!==void 0&&z.name===a)??null:null,[N.defaultBranch,N.other,N.recent,a]);_.useEffect(()=>{e||k()},[e,k]),_.useEffect(()=>{if(!e||!D){w();return}let z=!1;return b(null),x(null),S(!0),i(D).then(F=>{z||b(F)}).catch(F=>{z||x(F instanceof Error?F.message:String(F))}).finally(()=>{z||S(!1)}),()=>{z=!0}},[i,e,w,D,S,b,x]);const L=!D||!l||h||p||l.status!=="mergeable";async function I(){if(!(!D||L)){C(!0);try{const z=await s(D);z!=null&&z.ok&&t(!1)}finally{C(!1)}}}let $;l?l.status==="up_to_date"?$=c.jsx(js,{className:"mt-1 size-3.5 shrink-0 text-success"}):l.status==="conflicts"?$=c.jsx(xm,{className:"mt-1 size-3.5 shrink-0 text-warning"}):l.status==="mergeable"?$=c.jsx(b7,{className:"mt-1 size-3.5 shrink-0 text-muted-foreground"}):$=c.jsx(xm,{className:"mt-1 size-3.5 shrink-0 text-destructive"}):$=null;let H;return D?h?H=c.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-3.5 animate-spin"}),c.jsx("span",{children:"Checking merge preview…"})]}):d?H=c.jsx("div",{className:"text-sm text-destructive",children:d}):l?H=c.jsxs("div",{className:"flex items-start gap-2",children:[$,c.jsxs("div",{className:"min-w-0 space-y-1",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:l.message}),l.detail?c.jsx("div",{className:"line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:l.detail}):null]})]}):H=c.jsx("div",{className:"text-sm text-muted-foreground",children:"Preview unavailable."}):H=c.jsx("div",{className:"text-sm text-muted-foreground",children:"Select a branch to preview the merge."}),c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",className:"max-w-[min(92vw,475px)]",children:[c.jsxs(la,{className:"flex min-h-0 flex-col gap-3 px-4 pb-4 pt-4",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsxs(Ao,{children:["Merge into ",r??"current branch"]}),c.jsx(Qm,{children:"Choose a branch to continue."})]}),c.jsx(BJ,{value:o,onChange:m,placeholder:"Search branches"}),c.jsxs("div",{className:"max-h-[375px] space-y-3 overflow-y-auto pr-1",children:[c.jsx(Df,{title:"Default Branch",entries:M?[M]:[],emptyLabel:"No default branch available.",selectedName:a,onSelect:z=>v(z.name)}),c.jsx(Df,{title:"Recent Branches",entries:j,emptyLabel:"No recent branches.",selectedName:a,onSelect:z=>v(z.name)}),c.jsx(Df,{title:"Other Branches",entries:P,emptyLabel:"No other branches match this search.",selectedName:a,onSelect:z=>v(z.name)})]}),c.jsx("div",{className:"px-2",children:H})]}),c.jsx(Lc,{children:c.jsxs("div",{className:"flex min-w-0 w-full items-center justify-end gap-2",children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{className:"max-w-full min-w-0",size:"sm",disabled:L,onClick:()=>void I(),children:p?c.jsxs(c.Fragment,{children:[c.jsx(jn,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}),"Merging…"]}):c.jsx("span",{className:"block max-w-full truncate",children:"Merge"})})]})})]})})}function mje({currentBranchName:e,onListBranches:t,onPreviewMergeBranch:n,onMergeBranch:r,onCheckoutBranch:i,onCreateBranch:s}){const o=st(X=>X.branchSwitcherOpen),a=st(X=>X.mergeModalOpen),l=st(X=>X.branchSwitcherIsLoading),d=st(X=>X.branchSwitcherIsMutating),h=st(X=>X.branchSwitcherQuery),p=st(X=>X.branchSwitcherEntryView),m=st(X=>X.branchList),v=st(X=>X.branchSwitcherError),b=st(X=>X.setBranchSwitcherOpen),x=st(X=>X.setMergeModalOpen),S=st(X=>X.setBranchSwitcherIsLoading),C=st(X=>X.setBranchSwitcherIsMutating),k=st(X=>X.setBranchSwitcherQuery),w=st(X=>X.setBranchSwitcherEntryView),N=st(X=>X.setBranchList),A=st(X=>X.setBranchSwitcherError);_.useEffect(()=>{o&&(S(!0),A(null),t().then(X=>N(X)).catch(X=>{A(X instanceof Error?X.message:String(X))}).finally(()=>{S(!1)}))},[t,o,N,A,S]);const T=h.trim().toLowerCase(),M=X=>X.filter(G=>T?[G.displayName,G.name,G.description,G.prTitle,G.headLabel].some(te=>te==null?void 0:te.toLowerCase().includes(T)):!0),j=(m==null?void 0:m.currentBranchName)??e,P=new Set(((m==null?void 0:m.pullRequests)??[]).map(X=>X.headRefName??X.name)),D=M((m==null?void 0:m.recent)??[]).filter(X=>X.name!==j),L=M((m==null?void 0:m.local)??[]).filter(X=>X.name!==j),I=M((m==null?void 0:m.remote)??[]).filter(X=>X.name!==j&&!P.has(X.name)),$=M((m==null?void 0:m.pullRequests)??[]).filter(X=>X.name!==j),H=(m==null?void 0:m.pullRequests.length)??0;async function z(X){C(!0);try{await i(X),b(!1),k(""),w("branches")}finally{C(!1)}}async function F(){C(!0);try{await s(),b(!1),k(""),w("branches")}finally{C(!1)}}function K(){b(!1),x(!0)}let W;(m==null?void 0:m.pullRequestsStatus)==="error"?W=m.pullRequestsError??"Could not load pull requests.":(m==null?void 0:m.pullRequestsStatus)==="unavailable"?W="Pull requests unavailable for this repository.":W="No open pull requests.";let V;return l?V=c.jsxs("div",{className:"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading branches…"})]}):v?V=c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 text-sm text-muted-foreground",children:v}):p==="pull_requests"?V=c.jsx(Df,{title:"Open PRs",entries:$,emptyLabel:W,disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}):V=c.jsxs("div",{className:"space-y-3",children:[c.jsx(Df,{title:"Recent",entries:D,emptyLabel:"No recent branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}),c.jsx(Df,{title:"Local",entries:L,emptyLabel:"No local branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}),c.jsx(Df,{title:"Remote",entries:I,emptyLabel:"No remote branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}})]}),c.jsxs(Ld,{open:o,onOpenChange:b,children:[c.jsx(Od,{asChild:!0,children:c.jsxs("button",{type:"button",className:"flex min-w-0 max-w-full items-center gap-1 rounded-md px-1.5 py-1 text-sm transition-colors hover:bg-accent hover:text-foreground","aria-label":"Open branch switcher",children:[c.jsx(Cc,{className:"h-3.5 w-3.5 shrink-0"}),c.jsx("span",{className:"truncate",children:e??"Detached HEAD"}),c.jsx(Xm,{className:"h-3.5 w-3.5 shrink-0"})]})}),c.jsx(eu,{align:"start",className:"w-[320px] p-2",children:c.jsxs("div",{className:"space-y-2",children:[c.jsx(BJ,{value:h,onChange:k,placeholder:p==="pull_requests"?"Search pull requests":"Search branches",disabled:l||d,trailingAction:c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>void F(),disabled:l||d,className:"h-7 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:"+ New"})}),c.jsx(Es,{value:p,onValueChange:X=>{oje(X)&&w(X)},size:"sm",className:"w-full",optionClassName:"flex-1 justify-center",options:[{value:"branches",label:"Branches"},{value:"pull_requests",label:`Open PRs ${H}`}]}),c.jsx("div",{className:"max-h-[420px] overflow-y-auto pr-1.5 -mr-[8px]",children:V}),j?c.jsx(Me,{variant:"default",size:"sm",disabled:l||d||!!v,onClick:K,className:"h-9 w-full justify-center rounded-lg px-3 text-sm",children:c.jsxs("span",{className:"block max-w-full truncate",children:[c.jsx(noe,{className:"mr-1.5 inline h-3.5 w-3.5 shrink-0"}),"Merge branch into ",j,"..."]})}):null]})}),c.jsx(pje,{open:a,onOpenChange:x,branchList:m,currentBranchName:j,onPreviewMergeBranch:n,onMergeBranch:r})]})}function gje({file:e,rootRef:t,projectId:n,isCollapsed:r,isChecked:i,editorLabel:s,diffRenderMode:o,wrapLines:a,onToggleCollapsed:l,onToggleChecked:d,fileActions:h,patch:p,patchError:m,isPatchLoading:v,onLoadPatch:b}){const x=$J(e),S=lje(e),C=TA.useScopedStore(z=>z.selectedAttachmentId),k=TA.useScopedStore(z=>z.setSelectedAttachmentId),w=_.useRef(null),N=_.useRef(null),{sentinelRef:A,isStuck:T}=Zke({rootRef:t,disabled:r}),M=_.useMemo(()=>aje(n,e),[e,n]),j=M!==null,P=cF({isCollapsed:r,hasPreviewAttachment:j,patch:p,patchError:m,isPatchLoading:v});_.useEffect(()=>{if(!P)return;const z=`${e.path}\0${e.patchDigest}`;N.current!==z&&(N.current=z,b(e.path).catch(()=>{}))},[e.patchDigest,e.path,b,P]);function D(z){if(dg(z).openInNewTab){typeof window<"u"&&window.open(new URL(z.contentUrl,window.location.origin).toString(),"_blank","noopener,noreferrer");return}k(z.id)}function L(z){var K;z.preventDefault(),z.stopPropagation();const F=z.currentTarget.getBoundingClientRect();(K=w.current)==null||K.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:F.left+F.width/2,clientY:F.bottom,view:window}))}function I(){if(!r){l();return}if(j||p!==void 0){l();return}if(v)return;if(!(m!==void 0||cF({isCollapsed:!1,hasPreviewAttachment:j,patch:p,patchError:m,isPatchLoading:v}))){l();return}b(e.path).then(()=>{l()}).catch(()=>{})}let $;v&&r&&!M?$=c.jsx(jn,{className:"h-3.5 w-3.5 shrink-0 animate-spin"}):r?$=c.jsx(Xm,{className:"h-3.5 w-3.5 shrink-0"}):$=c.jsx(h7,{className:"h-3.5 w-3.5 shrink-0"});let H;return M?H=c.jsx("div",{className:"flex justify-center p-3",children:M.kind==="image"?c.jsx(l1,{attachment:M,onClick:()=>D(M)}):c.jsx(No,{attachment:M,onClick:()=>D(M)})}):v?H=c.jsxs("div",{className:"flex items-center justify-center px-3 py-8 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading diff..."]}):m?H=c.jsx("div",{className:"px-3 py-4 text-sm text-destructive",children:m}):p!==void 0?H=c.jsx(Xke,{patch:p,options:{diffStyle:o,disableFileHeader:!0,disableBackground:!1,overflow:a?"wrap":"scroll",lineDiffType:"word",diffIndicators:"classic"}}):H=c.jsx("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"Diff unavailable."}),c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsxs("div",{ref:w,className:"relative rounded-lg border border-border bg-background",children:[r?null:c.jsx("div",{ref:A,className:"pointer-events-none absolute inset-x-0 top-0 h-px","aria-hidden":"true"}),c.jsxs("div",{role:"button",tabIndex:0,onClick:I,onKeyDown:z=>{z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),I())},className:fe("group/header sticky top-0 z-20 flex cursor-pointer items-center justify-between gap-3 bg-background pl-[7px] pr-2.5 py-1.5 text-[13px] text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",!r&&!T&&"rounded-t-[calc(theme(borderRadius.lg)-1px)]",r&&"rounded-[calc(theme(borderRadius.lg)-1px)]",!r&&"border-b border-border/50"),children:[c.jsxs("div",{className:"flex min-w-0 items-center",children:[c.jsx(zJ,{checked:i,onClick:d}),c.jsx("div",{className:"min-w-0 truncate select-none ml-2 mr-1",children:e.path})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2 select-none",children:[c.jsxs("span",{className:"whitespace-nowrap text-xs font-mono",children:[e.additions>0?c.jsxs("span",{className:"text-success",children:["+",e.additions]}):null,e.deletions>0?c.jsxs("span",{className:e.additions>0?"ml-2 text-destructive":"text-destructive",children:["-",e.deletions]}):null]}),c.jsx("button",{type:"button","aria-label":`Open actions for ${e.path}`,onClick:L,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:c.jsx(wb,{className:"h-3.5 w-3.5 shrink-0"})}),$]})]}),r?null:c.jsx("div",{className:"kanna-diff-patch overflow-hidden rounded-b-[calc(theme(borderRadius.lg)-1px)] pb-[1px]",children:H}),c.jsx(jh,{source:M&&C===M.id?xg(M,"user_attachment"):null,open:M!==null&&C===M.id,onOpenChange:z=>!z&&k(null)})]},e.path)}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onOpenFile(e.path)},children:[c.jsx(ej,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Open in ",s]})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onOpenInFinder(e.path)},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Open in Finder"})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onDiscardFile(e.path)},className:"text-destructive hover:bg-destructive/10 focus:bg-destructive/10",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Discard Changes"})]}),c.jsxs(vr,{disabled:!x,onSelect:z=>{z.stopPropagation(),x&&h.onIgnoreFile(e.path)},children:[c.jsx(M3,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Ignore File"})]}),c.jsxs(vr,{disabled:!S,onSelect:z=>{z.stopPropagation(),S&&h.onIgnoreFolder(e.path)},children:[c.jsx(M3,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Ignore folder..."})]}),c.jsx(rW,{}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onCopyFilePath(e.path)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy File Path"})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onCopyRelativePath(e.path)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy Relative Path"})]})]})]})}function vje({projectId:e,diffs:t,editorLabel:n,diffRenderMode:r,wrapLines:i,onOpenFile:s,onOpenInFinder:o,onDiscardFile:a,onIgnoreFile:l,onIgnoreFolder:d,onCopyFilePath:h,onCopyRelativePath:p,onListBranches:m,onPreviewMergeBranch:v,onMergeBranch:b,onCheckoutBranch:x,onCreateBranch:S,onGenerateCommitMessage:C,onInitializeGit:k,onGetGitHubPublishInfo:w,onCheckGitHubRepoAvailability:N,onSetupGitHub:A,onCommit:T,onSyncWithRemote:M,onLoadPatch:j,onDiffRenderModeChange:P,onWrapLinesChange:D}){var qn;const L=_.useMemo(()=>({onOpenFile:s,onOpenInFinder:o,onDiscardFile:a,onIgnoreFile:l,onIgnoreFolder:d,onCopyFilePath:h,onCopyRelativePath:p}),[s,o,a,l,d,h,p]),I=t.files.length>0,$=st(ye=>ye.isGenerating),H=st(ye=>ye.commitModeInFlight),z=st(ye=>ye.isSyncing),F=st(ye=>ye.isGitHubPublishModalOpen),K=st(ye=>ye.patchesByPath),W=st(ye=>ye.patchErrorsByPath),V=st(ye=>ye.loadingPatchPaths),X=st(ye=>ye.setIsGenerating),G=st(ye=>ye.setCommitModeInFlight),te=st(ye=>ye.setIsSyncing),oe=st(ye=>ye.setIsGitHubPublishModalOpen),ce=st(ye=>ye.reconcilePatches),de=st(ye=>ye.setPatchLoading),ee=st(ye=>ye.clearPatchLoading),ne=st(ye=>ye.clearPatchError),ie=st(ye=>ye.setPatchResult),ae=st(ye=>ye.setPatchError),Q=_.useRef(null),ke=_.useRef(null),we=_.useRef({}),Ae=_.useMemo(()=>t.files.map(ye=>ye.path),[t.files]),Xe=_.useMemo(()=>Ae.join("\0"),[Ae]),ft=I?"changes":"history",Ct=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.viewMode)??ft:ft}),ln=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.collapsedPaths)??A0:A0}),en=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.summary)??"":""}),bt=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.description)??"":""}),fn=Ks(ye=>ye.reconcileCollapsedPaths),qe=Ks(ye=>ye.toggleCollapsedPath),Ht=Ks(ye=>ye.setViewMode),cn=Ks(ye=>ye.setCommitDraft),wt=Ks(ye=>ye.clearCommitDraft),zt=m0(ye=>e?ye.checkedPathsByProjectId[e]??A0:A0),tn=m0(ye=>ye.reconcileProject),Yt=m0(ye=>ye.setChecked),Kt=m0(ye=>ye.setAllChecked),sn=_.useRef(I);_.useEffect(()=>{e&&fn(e,Ae)},[Ae,Xe,e,fn]),_.useEffect(()=>{const ye=Object.fromEntries(t.files.map(zn=>[zn.path,zn.patchDigest]));ce(Ae,zn=>we.current[zn]===ye[zn]),we.current=ye},[t.files,Ae,Xe,ce]),_.useEffect(()=>{e&&tn(e,Ae)},[Ae,Xe,e,tn]),_.useEffect(()=>{if(!e)return;if(sn.current!==I){Ht(e,I?"changes":"history"),sn.current=I;return}sn.current=I},[I,e,Ht]);const Nn=_.useMemo(()=>t.files.filter(ye=>zt[ye.path]??!0).map(ye=>ye.path),[zt,t.files]),Ue=Nn.length,un=t.files.length>0&&Ue===t.files.length,wn=Ue>0&&Ue<t.files.length,kt=en.trim(),Xt=kt.length>0,Ce=H!==null,rt=$||Ce,gt=((qn=t.branchHistory)==null?void 0:qn.entries)??[],it=t.behindCount??0,jt=t.aheadCount??0,Bt=t.hasUpstream===!0,Et=t.hasUpstream===!1&&!!t.branchName,Lt=t.hasOriginRemote===!0,nn=t.branchName?t.branchName.split("/").map(ye=>encodeURIComponent(ye)).join("/"):null;let $t;Et?$t="publish":it>0?$t="pull":$t="fetch";const re=t.originRepoSlug&&nn?`https://github.com/${t.originRepoSlug}/compare/${nn}?expand=1`:null,je=!!(Bt&&re&&t.branchName&&t.branchName!==t.defaultBranchName),ht=t.status==="ready"&&Ue>0&&!rt,Ne=t.status==="ready"&&Ue>0&&Xt&&!rt,We=Lt?"commit_and_push":"commit_only",Ke=t.branchName??"current branch";async function Je(ye){if(Ne){G(ye);try{const Qe=await T({paths:Nn,summary:kt,description:bt.trim(),mode:ye});(Qe!=null&&Qe.ok||Qe!=null&&Qe.localCommitCreated)&&e&&wt(e)}finally{G(null)}}}async function pt(){if(ht){X(!0);try{const ye=await C({paths:Nn});e&&cn(e,{summary:ye.subject,description:ye.body})}finally{X(!1)}}}function Ot(ye){if(!(!(ye.metaKey||ye.ctrlKey)||ye.key!=="Enter")){if(ye.preventDefault(),Xt){Je(We);return}pt()}}async function xt(ye=$t){if(!(t.status!=="ready"||z)){te(!0);try{await M(ye)}finally{te(!1)}}}const Be=_.useCallback(async ye=>{var Ur;const{patchesByPath:Qe,loadingPatchPaths:zn}=st.getState();if(Qe[ye]!==void 0||zn[ye])return Qe[ye]??"";de(ye),ne(ye);try{const ue=await j(ye);ie(ye,ue);const Ye=(Ur=t.files.find(ct=>ct.path===ye))==null?void 0:Ur.patchDigest;return Ye&&(we.current={...we.current,[ye]:Ye}),ue}catch(ue){const Ye=ue instanceof Error?ue.message:String(ue);throw ae(ye,Ye),ue}finally{ee(ye)}},[ne,ee,t.files,j,ae,de,ie]),Ft=_.useCallback(ye=>ye.path,[]),Ln=_.useCallback(({item:ye})=>{const Qe=ln[ye.path]??!0,zn=zt[ye.path]??!0;return c.jsx("div",{className:"pb-1.5",children:c.jsx(TA.Provider,{init:void 0,children:c.jsx(gje,{file:ye,rootRef:Q,projectId:e,isCollapsed:Qe,isChecked:zn,editorLabel:n,diffRenderMode:r,wrapLines:i,onToggleCollapsed:()=>{e&&qe(e,ye.path)},onToggleChecked:()=>{e&&Yt(e,ye.path,!zn)},fileActions:L,patch:K[ye.path],patchError:W[ye.path],isPatchLoading:!!V[ye.path],onLoadPatch:Be})})})},[zt,ln,r,n,L,Be,V,W,K,e,Yt,qe,i]);_.useEffect(()=>{var Qe,zn;const ye=(zn=(Qe=ke.current)==null?void 0:Qe.getScrollableNode)==null?void 0:zn.call(Qe);Q.current=ye instanceof HTMLElement?ye:null},[Ct,t.files.length]);let Gt;wn?Gt="Select all files for commit":un?Gt="Unselect all files from commit":Gt="Select all files for commit";let Jt;t.status==="ready"?Lt?$t==="publish"?Jt=c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(Z0,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Publish Branch"})]}):Jt=c.jsxs("div",{className:"flex items-center gap-1",children:[$t==="fetch"?c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(sj,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Fetch"})]})}),c.jsx(Ms,{children:cje(t.lastFetchedAt)})]}):c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(tj,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Pull"}),c.jsx("span",{className:"inline-flex min-w-4 items-center justify-center rounded-full bg-muted px-1 text-[10px] text-muted-foreground",children:it})]}),Bt&&jt>0?c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>void xt("push"),disabled:z,className:"h-7 gap-1.5 px-2 text-xs",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(Z0,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Push"}),c.jsx("span",{className:"inline-flex min-w-4 items-center justify-center rounded-full bg-primary-foreground/15 px-1 text-[10px] text-primary-foreground",children:jt})]}):null,je&&re?c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>{typeof window>"u"||window.open(re,"_blank","noopener,noreferrer")},className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[c.jsx(x7,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"PR"})]}):null]}):Jt=c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>oe(!0),className:"h-7 gap-1.5 px-3 text-xs",children:[c.jsx(soe,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Push to GitHub"})]}):Jt=null;let xr;t.status==="no_repo"?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsxs("div",{className:"flex max-w-[280px] flex-col items-center gap-3",children:[c.jsx("p",{className:"text-sm text-muted-foreground",children:"Initialize git here to start tracking branches, diffs, and history."}),c.jsx(Me,{size:"sm",onClick:()=>void k(),children:"Init Git"})]})}):Ct==="history"?gt.length===0?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsxs("p",{className:"text-sm text-muted-foreground",children:["No recent commits on ",t.branchName??"this branch","."]})}):xr=c.jsx("div",{className:"h-full overflow-y-auto [scrollbar-gutter:stable] space-y-1.5 p-1.5",children:gt.map((ye,Qe)=>c.jsx(uje,{entry:ye,isPendingPush:Qe<jt},ye.sha))}):t.files.length===0?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsx("p",{className:"text-sm text-muted-foreground",children:"No file changes."})}):xr=null;let In;Xt?Ce?In=c.jsx(jn,{strokeWidth:2.5,className:"size-3 shrink-0 animate-spin"}):We==="commit_and_push"&&t.hasUpstream?In=c.jsx(Z0,{strokeWidth:2.5,className:"size-3 shrink-0"}):We==="commit_and_push"?In=c.jsx(b7,{strokeWidth:2.5,className:"size-3 shrink-0"}):In=c.jsx(js,{strokeWidth:2.5,className:"size-3 shrink-0"}):$?In=c.jsx(jn,{strokeWidth:2.5,className:"size-3 shrink-0 animate-spin"}):In=c.jsx(Foe,{strokeWidth:2.5,className:"size-3 shrink-0"});let Gn;return Xt?Ce?Gn=H==="commit_only"?"Committing...":"Committing & Pushing...":We==="commit_only"?Gn=c.jsxs(c.Fragment,{children:["Commit to ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):t.hasUpstream?Gn=c.jsxs(c.Fragment,{children:["Commit & push to ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):Gn=c.jsxs(c.Fragment,{children:["Commit & publish ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):$?Gn="Generating...":Gn=c.jsxs(c.Fragment,{children:["Generate message for ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}),c.jsx("div",{className:"h-full min-h-0 border-l border-border bg-background md:min-w-[370px]",children:c.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[c.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border pl-2.5 pr-2 py-2",children:[c.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:c.jsx(mje,{currentBranchName:t.branchName,onListBranches:m,onPreviewMergeBranch:v,onMergeBranch:b,onCheckoutBranch:x,onCreateBranch:S})}),Jt]}),c.jsxs("div",{className:"relative min-h-0 flex-1",children:[c.jsx("div",{className:"sticky top-0 z-30 pl-[14px] pr-[12px] pt-[6px] bg-gradient-to-b from-background to-transparent",children:c.jsx("div",{className:"relative h-[40px] flex min-w-0 items-center justify-center gap-[13px]",children:c.jsxs("div",{className:"flex min-w-0 flex-1 items-center justify-between gap-[13px] relative",children:[Ct==="changes"?c.jsxs("div",{className:"flex items-center gap-2 text-[11px] text-muted-foreground/70",children:[c.jsx(zJ,{checked:un,mixed:wn,label:Gt,onClick:()=>{!e||t.files.length===0||Kt(e,Ae,wn?!0:!un)}}),c.jsxs("span",{children:[Ue," files"]})]}):c.jsx("div",{}),c.jsx("div",{className:"pointer-events-none absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2",children:c.jsx("div",{className:"pointer-events-auto",children:c.jsx(Es,{value:Ct,onValueChange:ye=>{e&&ije(ye)&&Ht(e,ye)},size:"sm",optionClassName:"flex-1 justify-center",options:[{value:"changes",label:"Changes"},{value:"history",label:"History"}]})})}),Ct==="changes"?c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(AT,{label:"Unified diff",active:r==="unified",onClick:()=>P("unified"),children:c.jsx(sae,{className:"h-4 w-4"})}),c.jsx(AT,{label:"Side-by-side diff",active:r==="split",onClick:()=>P("split"),children:c.jsx(use,{className:"h-4 w-4"})}),c.jsx(AT,{label:i?"Disable word wrap":"Enable word wrap",active:i,onClick:()=>D(!i),children:c.jsx(Lae,{className:"h-4 w-4"})})]}):c.jsx("div",{})]})})}),c.jsxs("div",{className:"h-full min-h-0",children:[xr,t.status!=="no_repo"&&Ct!=="history"&&t.files.length>0&&c.jsxs("div",{className:"relative h-full min-h-0",children:[c.jsx(dK,{ref:ke,data:t.files,keyExtractor:Ft,renderItem:Ln,extraData:{collapsedPaths:ln,checkedPaths:zt,patchesByPath:K,patchErrorsByPath:W,loadingPatchPaths:V,diffRenderMode:r,wrapLines:i},estimatedItemSize:44,className:"h-full overflow-y-auto [scrollbar-gutter:stable] p-1.5",contentContainerStyle:{paddingBottom:Ct==="changes"?220:40}}),Ct==="changes"?c.jsxs("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 py-1 pb-6 z-30",children:[c.jsx("div",{className:"absolute inset-x-0 bottom-0 top-0 bg-gradient-to-t from-background to-transparent"}),c.jsx("div",{className:"pointer-events-auto relative",children:c.jsxs("div",{className:"space-y-0 rounded-xl mx-auto max-w-[700px]",children:[c.jsx(dn,{value:en,onChange:ye=>{e&&cn(e,{summary:ye.target.value,description:bt})},onKeyDown:Ot,placeholder:"Commit message (override)",className:"rounded-t-xl rounded-b-none px-3",disabled:rt||t.status!=="ready"}),c.jsx(Al,{value:bt,onChange:ye=>{e&&cn(e,{summary:en,description:ye.target.value})},onKeyDown:Ot,placeholder:"Description",rows:5,className:"-mt-px rounded-t-none rounded-b-xl px-3 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background mb-2",disabled:rt||t.status!=="ready"}),c.jsx("div",{className:"w-full flex flex-row",children:c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsx(Me,{type:"button",className:"-mt-px w-full rounded-xl",disabled:Xt?!Ne:!ht,onClick:()=>{if(Xt){Je(We);return}pt()},children:c.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[In,c.jsx("span",{className:"min-w-0 truncate text-left",children:Gn})]})})}),t.hasUpstream?c.jsx(Id,{children:c.jsx(vr,{disabled:!Xt||!Ne,onSelect:ye=>{ye.stopPropagation(),Je("commit_only")},children:"Commit Only"})}):null]})})]})})]}):null]})]})]}),c.jsx(hje,{open:F,onOpenChange:oe,onGetGitHubPublishInfo:w,onCheckGitHubRepoAvailability:N,onPublish:A})]})})}const bje=_.memo(vje);function xje(e,t){const n=getComputedStyle(e),r=parseFloat(n.fontSize);return t*r}function yje(e,t){const n=getComputedStyle(e.ownerDocument.body),r=parseFloat(n.fontSize);return t*r}function _je(e){return e/100*window.innerHeight}function Sje(e){return e/100*window.innerWidth}function wje(e){switch(typeof e){case"number":return[e,"px"];case"string":{const t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}function Fv({groupSize:e,panelElement:t,styleProp:n}){let r;const[i,s]=wje(n);switch(s){case"%":{r=i/100*e;break}case"px":{r=i;break}case"rem":{r=yje(t,i);break}case"em":{r=xje(t,i);break}case"vh":{r=_je(i);break}case"vw":{r=Sje(i);break}}return r}function Xs(e){return parseFloat(e.toFixed(3))}function Hm({group:e}){const{orientation:t,panels:n}=e;return n.reduce((r,i)=>(r+=t==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,r),0)}function FR(e){const{panels:t}=e,n=Hm({group:e});return n===0?t.map(r=>({groupResizeBehavior:r.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:r.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:r.panelConstraints.disabled,minSize:0,maxSize:100,panelId:r.id})):t.map(r=>{const{element:i,panelConstraints:s}=r;let o=0;if(s.collapsedSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.collapsedSize});o=Xs(h/n*100)}let a;if(s.defaultSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.defaultSize});a=Xs(h/n*100)}let l=0;if(s.minSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.minSize});l=Xs(h/n*100)}let d=100;if(s.maxSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.maxSize});d=Xs(h/n*100)}return{groupResizeBehavior:s.groupResizeBehavior,collapsedSize:o,collapsible:s.collapsible===!0,defaultSize:a,disabled:s.disabled,minSize:l,maxSize:d,panelId:r.id}})}function ar(e,t="Assertion error"){if(!e)throw Error(t)}function UR(e,t){return Array.from(t).sort(e==="horizontal"?Cje:kje)}function Cje(e,t){const n=e.element.offsetLeft-t.element.offsetLeft;return n!==0?n:e.element.offsetWidth-t.element.offsetWidth}function kje(e,t){const n=e.element.offsetTop-t.element.offsetTop;return n!==0?n:e.element.offsetHeight-t.element.offsetHeight}function FJ(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function UJ(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function Eje({orientation:e,rects:t,targetRect:n}){const r={x:n.x+n.width/2,y:n.y+n.height/2};let i,s=Number.MAX_VALUE;for(const o of t){const{x:a,y:l}=UJ(r,o),d=e==="horizontal"?a:l;d<s&&(s=d,i=o)}return ar(i,"No rect found"),i}let R0;function Nje(){return R0===void 0&&(typeof matchMedia=="function"?R0=!!matchMedia("(pointer:coarse)").matches:R0=!1),R0}function HJ(e){const{element:t,orientation:n,panels:r,separators:i}=e,s=UR(n,Array.from(t.children).filter(FJ).map(b=>({element:b}))).map(({element:b})=>b),o=[];let a=!1,l=!1,d=-1,h=-1,p=0,m,v=[];{let b=-1;for(const x of s)x.hasAttribute("data-panel")&&(b++,x.ariaDisabled===null&&(p++,d===-1&&(d=b),h=b))}if(p>1){let b=-1;for(const x of s)if(x.hasAttribute("data-panel")){b++;const S=r.find(C=>C.element===x);if(S){if(m){const C=m.element.getBoundingClientRect(),k=x.getBoundingClientRect();let w;if(l){const N=n==="horizontal"?new DOMRect(C.right,C.top,0,C.height):new DOMRect(C.left,C.bottom,C.width,0),A=n==="horizontal"?new DOMRect(k.left,k.top,0,k.height):new DOMRect(k.left,k.top,k.width,0);switch(v.length){case 0:{w=[N,A];break}case 1:{const T=v[0],M=Eje({orientation:n,rects:[C,k],targetRect:T.element.getBoundingClientRect()});w=[T,M===C?A:N];break}default:{w=v;break}}}else v.length?w=v:w=[n==="horizontal"?new DOMRect(C.right,k.top,k.left-C.right,k.height):new DOMRect(k.left,C.bottom,k.width,k.top-C.bottom)];for(const N of w){let A="width"in N?N:N.element.getBoundingClientRect();const T=Nje()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(A.width<T){const j=T-A.width;A=new DOMRect(A.x-j/2,A.y,A.width+j,A.height)}if(A.height<T){const j=T-A.height;A=new DOMRect(A.x,A.y-j/2,A.width,A.height+j)}const M=b<=d||b>h;!a&&!M&&o.push({group:e,groupSize:Hm({group:e}),panels:[m,S],separator:"width"in N?void 0:N,rect:A}),a=!1}}l=!1,m=S,v=[]}}else if(x.hasAttribute("data-separator")){x.ariaDisabled!==null&&(a=!0);const S=i.find(C=>C.element===x);S?v.push(S):(m=void 0,v=[])}else l=!0}return o}var od,zU;let WJ=(zU=class{constructor(){Pu(this,od,{})}addListener(t,n){const r=di(this,od)[t];return r===void 0?di(this,od)[t]=[n]:r.includes(n)||r.push(n),()=>{this.removeListener(t,n)}}emit(t,n){const r=di(this,od)[t];if(r!==void 0)if(r.length===1)r[0].call(null,n);else{let i=!1,s=null;const o=Array.from(r);for(let a=0;a<o.length;a++){const l=o[a];try{l.call(null,n)}catch(d){s===null&&(i=!0,s=d)}}if(i)throw s}}removeAllListeners(){Ho(this,od,{})}removeListener(t,n){const r=di(this,od)[t];if(r!==void 0){const i=r.indexOf(n);i>=0&&r.splice(i,1)}}},od=new WeakMap,zU),_l=new Map;const VJ=new WJ;function Tje(e){_l=new Map(_l),_l.delete(e)}function dF(e,t){for(const[n]of _l)if(n.id===e)return n}function gd(e,t){for(const[n,r]of _l)if(n.id===e)return r;if(t)throw Error(`Could not find data for Group with id ${e}`)}function Ih(){return _l}function QP(e,t){return VJ.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function Xc(e,t){const n=_l.get(e);_l=new Map(_l),_l.set(e,t),VJ.emit("groupChange",{group:e,prev:n,next:t})}function Aje(e,t,n){let r,i={x:1/0,y:1/0};for(const s of t){const o=UJ(n,s.rect);switch(e){case"horizontal":{o.x<=i.x&&(r=s,i=o);break}case"vertical":{o.y<=i.y&&(r=s,i=o);break}}}return r?{distance:i,hitRegion:r}:void 0}function Rje(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Mje(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:pF(e),b:pF(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();ar(r,"Stacking order can only be calculated for elements with a common ancestor");const i={a:hF(fF(n.a)),b:hF(fF(n.b))};if(i.a===i.b){const s=r.childNodes,o={a:n.a.at(-1),b:n.b.at(-1)};let a=s.length;for(;a--;){const l=s[a];if(l===o.a)return 1;if(l===o.b)return-1}}return Math.sign(i.a-i.b)}const jje=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Ije(e){const t=getComputedStyle(KJ(e)??e).display;return t==="flex"||t==="inline-flex"}function Pje(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||Ije(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||jje.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function fF(e){let t=e.length;for(;t--;){const n=e[t];if(ar(n,"Missing node"),Pje(n))return n}return null}function hF(e){return e&&Number(getComputedStyle(e).zIndex)||0}function pF(e){const t=[];for(;e;)t.push(e),e=KJ(e);return t}function KJ(e){const{parentNode:t}=e;return Rje(t)?t.host:t}function Lje(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Oje({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!FJ(n)||n.contains(e)||e.contains(n))return!0;if(Mje(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Lje(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function eL(e,t){const n=[];return t.forEach((r,i)=>{if(i.disabled)return;const s=HJ(i),o=Aje(i.orientation,s,{x:e.clientX,y:e.clientY});o&&o.distance.x<=0&&o.distance.y<=0&&Oje({groupElement:i.element,hitRegion:o.hitRegion.rect,pointerEventTarget:e.target})&&n.push(o.hitRegion)}),n}function Dje(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function Cs(e,t,n=0){return Math.abs(Xs(e)-Xs(t))<=n}function ul(e,t){return Cs(e,t)?0:e>t?1:-1}function Vp({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){const{collapsedSize:i=0,collapsible:s,disabled:o,maxSize:a=100,minSize:l=0}=t;if(o&&!e)return n;if(ul(r,l)<0)if(s){const d=(i+l)/2;ul(r,d)<0?r=i:r=l}else r=l;return r=Math.min(a,r),r=Xs(r),r}function Sx({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:s}){if(Cs(e,0))return t;const o=s==="imperative-api",a=Object.values(t),l=Object.values(i),d=[...a],[h,p]=r;ar(h!=null,"Invalid first pivot index"),ar(p!=null,"Invalid second pivot index");let m=0;switch(s){case"keyboard":{{const x=e<0?p:h,S=n[x];ar(S,`Panel constraints not found for index ${x}`);const{collapsedSize:C=0,collapsible:k,minSize:w=0}=S;if(k){const N=a[x];if(ar(N!=null,`Previous layout not found for panel index ${x}`),Cs(N,C)){const A=w-N;ul(A,Math.abs(e))>0&&(e=e<0?0-A:A)}}}{const x=e<0?h:p,S=n[x];ar(S,`No panel constraints found for index ${x}`);const{collapsedSize:C=0,collapsible:k,minSize:w=0}=S;if(k){const N=a[x];if(ar(N!=null,`Previous layout not found for panel index ${x}`),Cs(N,w)){const A=N-C;ul(A,Math.abs(e))>0&&(e=e<0?0-A:A)}}}break}default:{const x=e<0?p:h,S=n[x];ar(S,`Panel constraints not found for index ${x}`);const C=a[x],{collapsible:k,collapsedSize:w,minSize:N}=S;if(k&&ul(C,N)<0)if(e>0){const A=N-w,T=A/2,M=C+e;ul(M,N)<0&&(e=ul(e,T)<=0?0:A)}else{const A=N-w,T=100-A/2,M=C-e;ul(M,N)<0&&(e=ul(100+e,T)>0?0:-A)}break}}{const x=e<0?1:-1;let S=e<0?p:h,C=0;for(;;){const w=a[S];ar(w!=null,`Previous layout not found for panel index ${S}`);const N=Vp({overrideDisabledPanels:o,panelConstraints:n[S],prevSize:w,size:100})-w;if(C+=N,S+=x,S<0||S>=n.length)break}const k=Math.min(Math.abs(e),Math.abs(C));e=e<0?0-k:k}{let x=e<0?h:p;for(;x>=0&&x<n.length;){const S=Math.abs(e)-Math.abs(m),C=a[x];ar(C!=null,`Previous layout not found for panel index ${x}`);const k=C-S,w=Vp({overrideDisabledPanels:o,panelConstraints:n[x],prevSize:C,size:k});if(!Cs(C,w)&&(m+=C-w,d[x]=w,m.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?x--:x++}}if(Dje(l,d))return i;{const x=e<0?p:h,S=a[x];ar(S!=null,`Previous layout not found for panel index ${x}`);const C=S+m,k=Vp({overrideDisabledPanels:o,panelConstraints:n[x],prevSize:S,size:C});if(d[x]=k,!Cs(k,C)){let w=C-k,N=e<0?p:h;for(;N>=0&&N<n.length;){const A=d[N];ar(A!=null,`Previous layout not found for panel index ${N}`);const T=A+w,M=Vp({overrideDisabledPanels:o,panelConstraints:n[N],prevSize:A,size:T});if(Cs(A,M)||(w-=M-A,d[N]=M),Cs(w,0))break;e>0?N--:N++}}}const v=Object.values(d).reduce((x,S)=>S+x,0);if(!Cs(v,100,.1))return i;const b=Object.keys(i);return d.reduce((x,S,C)=>(x[b[C]]=S,x),{})}function uh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(t[n]===void 0||ul(e[n],t[n])!==0)return!1;return!0}function dh({layout:e,panelConstraints:t}){const n=Object.values(e),r=[...n],i=r.reduce((a,l)=>a+l,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(a=>`${a}%`).join(", ")}`);if(!Cs(i,100)&&r.length>0)for(let a=0;a<t.length;a++){const l=r[a];ar(l!=null,`No layout data found for index ${a}`);const d=100/i*l;r[a]=d}let s=0;for(let a=0;a<t.length;a++){const l=n[a];ar(l!=null,`No layout data found for index ${a}`);const d=r[a];ar(d!=null,`No layout data found for index ${a}`);const h=Vp({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:l,size:d});d!=h&&(s+=d-h,r[a]=h)}if(!Cs(s,0))for(let a=0;a<t.length;a++){const l=r[a];ar(l!=null,`No layout data found for index ${a}`);const d=l+s,h=Vp({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:l,size:d});if(l!==h&&(s-=h-l,r[a]=h,Cs(s,0)))break}const o=Object.keys(e);return r.reduce((a,l,d)=>(a[o[d]]=l,a),{})}function GJ({groupId:e,panelId:t}){const n=()=>{const a=Ih();for(const[l,{defaultLayoutDeferred:d,derivedPanelConstraints:h,layout:p,groupSize:m,separatorToPanels:v}]of a)if(l.id===e)return{defaultLayoutDeferred:d,derivedPanelConstraints:h,group:l,groupSize:m,layout:p,separatorToPanels:v};throw Error(`Group ${e} not found`)},r=()=>{const a=n().derivedPanelConstraints.find(l=>l.panelId===t);if(a!==void 0)return a;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{const a=n().group.panels.find(l=>l.id===t);if(a!==void 0)return a;throw Error(`Layout not found for Panel ${t}`)},s=()=>{const a=n().layout[t];if(a!==void 0)return a;throw Error(`Layout not found for Panel ${t}`)},o=a=>{const l=s();if(a===l)return;const{defaultLayoutDeferred:d,derivedPanelConstraints:h,group:p,groupSize:m,layout:v,separatorToPanels:b}=n(),x=p.panels.findIndex(w=>w.id===t),S=x===p.panels.length-1,C=Sx({delta:S?l-a:a-l,initialLayout:v,panelConstraints:h,pivotIndices:S?[x-1,x]:[x,x+1],prevLayout:v,trigger:"imperative-api"}),k=dh({layout:C,panelConstraints:h});uh(v,k)||Xc(p,{defaultLayoutDeferred:d,derivedPanelConstraints:h,groupSize:m,layout:k,separatorToPanels:b})};return{collapse:()=>{const{collapsible:a,collapsedSize:l}=r(),{mutableValues:d}=i(),h=s();a&&h!==l&&(d.expandToSize=h,o(l))},expand:()=>{const{collapsible:a,collapsedSize:l,minSize:d}=r(),{mutableValues:h}=i(),p=s();if(a&&p===l){let m=h.expandToSize??d;m===0&&(m=1),o(m)}},getSize:()=>{const{group:a}=n(),l=s(),{element:d}=i(),h=a.orientation==="horizontal"?d.offsetWidth:d.offsetHeight;return{asPercentage:l,inPixels:h}},isCollapsed:()=>{const{collapsible:a,collapsedSize:l}=r(),d=s();return a&&Cs(l,d)},resize:a=>{const{group:l}=n(),{element:d}=i(),h=Hm({group:l}),p=Fv({groupSize:h,panelElement:d,styleProp:a}),m=Xs(p/h*100);o(m)}}}function mF(e){if(e.defaultPrevented)return;const t=Ih();eL(e,t).forEach(n=>{if(n.separator){const r=n.panels.find(i=>i.panelConstraints.defaultSize!==void 0);if(r){const i=r.panelConstraints.defaultSize,s=GJ({groupId:n.group.id,panelId:r.id});s&&i!==void 0&&(s.resize(i),e.preventDefault())}}})}function MS(e){const t=Ih();for(const[n]of t)if(n.separators.some(r=>r.element===e))return n;throw Error("Could not find parent Group for separator element")}function qJ({groupId:e}){const t=()=>{const n=Ih();for(const[r,i]of n)if(r.id===e)return{group:r,...i};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){const{defaultLayoutDeferred:n,layout:r}=t();return n?{}:r},setLayout(n){const{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:s,groupSize:o,layout:a,separatorToPanels:l}=t(),d=dh({layout:n,panelConstraints:i});return r?a:(uh(a,d)||Xc(s,{defaultLayoutDeferred:r,derivedPanelConstraints:i,groupSize:o,layout:d,separatorToPanels:l}),d)}}}function uf(e,t){const n=MS(e),r=gd(n.id,!0),i=n.separators.find(h=>h.element===e);ar(i,"Matching separator not found");const s=r.separatorToPanels.get(i);ar(s,"Matching panels not found");const o=s.map(h=>n.panels.indexOf(h)),a=qJ({groupId:n.id}).getLayout(),l=Sx({delta:t,initialLayout:a,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:a,trigger:"keyboard"}),d=dh({layout:l,panelConstraints:r.derivedPanelConstraints});uh(a,d)||Xc(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:d,separatorToPanels:r.separatorToPanels})}function gF(e){if(e.defaultPrevented)return;const t=e.currentTarget,n=MS(t);if(!n.disabled)switch(e.key){case"ArrowDown":{e.preventDefault(),n.orientation==="vertical"&&uf(t,5);break}case"ArrowLeft":{e.preventDefault(),n.orientation==="horizontal"&&uf(t,-5);break}case"ArrowRight":{e.preventDefault(),n.orientation==="horizontal"&&uf(t,5);break}case"ArrowUp":{e.preventDefault(),n.orientation==="vertical"&&uf(t,-5);break}case"End":{e.preventDefault(),uf(t,100);break}case"Enter":{e.preventDefault();const r=MS(t),i=gd(r.id,!0),{derivedPanelConstraints:s,layout:o,separatorToPanels:a}=i,l=r.separators.find(m=>m.element===t);ar(l,"Matching separator not found");const d=a.get(l);ar(d,"Matching panels not found");const h=d[0],p=s.find(m=>m.panelId===h.id);if(ar(p,"Panel metadata not found"),p.collapsible){const m=o[h.id],v=p.collapsedSize===m?r.mutableState.expandedPanelSizes[h.id]??p.minSize:p.collapsedSize;uf(t,v-m)}break}case"F6":{e.preventDefault();const r=MS(t).separators.map(o=>o.element),i=Array.from(r).findIndex(o=>o===e.currentTarget);ar(i!==null,"Index not found");const s=e.shiftKey?i>0?i-1:r.length-1:i+1<r.length?i+1:0;r[s].focus({preventScroll:!0});break}case"Home":{e.preventDefault(),uf(t,-100);break}}}let mm={cursorFlags:0,state:"inactive"};const tL=new WJ;function fh(){return mm}function $je(e){return tL.addListener("change",e)}function zje(e){const t=mm,n={...mm};n.cursorFlags=e,mm=n,tL.emit("change",{prev:t,next:n})}function gm(e){const t=mm;mm=e,tL.emit("change",{prev:t,next:e})}function vF(e){if(e.defaultPrevented||e.pointerType==="mouse"&&e.button>0)return;const t=Ih(),n=eL(e,t),r=new Map;let i=!1;n.forEach(s=>{s.separator&&(i||(i=!0,s.separator.element.focus({preventScroll:!0})));const o=t.get(s.group);o&&r.set(s.group,o.layout)}),gm({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}const Bje=e=>e,RT=()=>{},YJ=1,XJ=2,JJ=4,ZJ=8,bF=3,xF=12;let M0;function yF(){return M0===void 0&&(M0=!1,typeof window<"u"&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(M0=!0)),M0}function Fje({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case"active":case"hover":t.forEach(s=>{if(!s.mutableState.disableCursor)switch(s.orientation){case"horizontal":{r++;break}case"vertical":{i++;break}}})}if(!(r===0&&i===0)){switch(n){case"active":{if(e&&yF()){const s=(e&YJ)!==0,o=(e&XJ)!==0,a=(e&JJ)!==0,l=(e&ZJ)!==0;if(s)return a?"se-resize":l?"ne-resize":"e-resize";if(o)return a?"sw-resize":l?"nw-resize":"w-resize";if(a)return"s-resize";if(l)return"n-resize"}break}}return yF()?r>0&&i>0?"move":r>0?"ew-resize":"ns-resize":r>0&&i>0?"grab":r>0?"col-resize":"row-resize"}}const _F=new WeakMap;function nL(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=_F.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));const r=fh();switch(r.state){case"active":case"hover":{const i=Fje({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(o=>o.group),state:r.state}),s=`*, *:hover {cursor: ${i} !important; }`;if(t===s)return;t=s,i?n.cssRules.length===0?n.insertRule(s):n.replaceSync(s):n.cssRules.length===1&&n.deleteRule(0);break}case"inactive":{t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}}_F.set(e,{prevStyle:t,styleSheet:n})}function QJ({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:s,prevCursorFlags:o}){let a=0;n.forEach(d=>{const{group:h,groupSize:p}=d,{orientation:m,panels:v}=h,{disableCursor:b}=h.mutableState;let x=0;s?m==="horizontal"?x=(t.clientX-s.x)/p*100:x=(t.clientY-s.y)/p*100:m==="horizontal"?x=t.clientX<0?-100:100:x=t.clientY<0?-100:100;const S=r.get(h),C=i.get(h);if(!S||!C)return;const{defaultLayoutDeferred:k,derivedPanelConstraints:w,groupSize:N,layout:A,separatorToPanels:T}=C;if(w&&A&&T){const M=Sx({delta:x,initialLayout:S,panelConstraints:w,pivotIndices:d.panels.map(j=>v.indexOf(j)),prevLayout:A,trigger:"mouse-or-touch"});if(uh(M,A)){if(x!==0&&!b)switch(m){case"horizontal":{a|=x<0?YJ:XJ;break}case"vertical":{a|=x<0?JJ:ZJ;break}}}else Xc(d.group,{defaultLayoutDeferred:k,derivedPanelConstraints:w,groupSize:N,layout:M,separatorToPanels:T})}});let l=0;t.movementX===0?l|=o&bF:l|=a&bF,t.movementY===0?l|=o&xF:l|=a&xF,zje(l),nL(e)}function SF(e){const t=Ih(),n=fh();switch(n.state){case"active":QJ({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function wF(e){if(e.defaultPrevented)return;const t=fh(),n=Ih();switch(t.state){case"active":{if(e.buttons===0){gm({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(r=>{const i=gd(r.group.id,!0);Xc(r.group,i)});return}QJ({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break}default:{const r=eL(e,n);r.length===0?t.state!=="inactive"&&gm({cursorFlags:0,state:"inactive"}):gm({cursorFlags:0,hitRegions:r,state:"hover"}),nL(e.currentTarget);break}}}function CF(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(fh().state){case"hover":gm({cursorFlags:0,state:"inactive"})}}function kF(e){if(e.defaultPrevented||e.pointerType==="mouse"&&e.button>0)return;const t=fh();switch(t.state){case"active":gm({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(nL(e.currentTarget),t.hitRegions.forEach(n=>{const r=gd(n.group.id,!0);Xc(n.group,r)}),e.preventDefault())}}function EF(e){let t=0,n=0;const r={};for(const s of e)if(s.defaultSize!==void 0){t++;const o=Xs(s.defaultSize);n+=o,r[s.panelId]=o}else r[s.panelId]=void 0;const i=e.length-t;if(i!==0){const s=Xs((100-n)/i);for(const o of e)o.defaultSize===void 0&&(r[o.panelId]=s)}return r}function Uje(e,t,n){if(!n[0])return;const r=e.panels.find(l=>l.element===t);if(!r||!r.onResize)return;const i=Hm({group:e}),s=e.orientation==="horizontal"?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,a={asPercentage:Xs(s/i*100),inPixels:s};r.mutableValues.prevSize=a,r.onResize(a,r.id,o)}function Hje(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function Wje({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,s=0,o=!1;const a=new Map,l=[];for(const p of e.panels){const m=r[p.id]??0;switch(p.panelConstraints.groupResizeBehavior){case"preserve-pixel-size":{o=!0;const v=m/100*n,b=Xs(v/t*100);a.set(p.id,b),i+=b;break}case"preserve-relative-size":default:{l.push(p.id),s+=m;break}}}if(!o||l.length===0)return r;const d=100-i,h={...r};if(a.forEach((p,m)=>{h[m]=p}),s>0)for(const p of l){const m=r[p]??0;h[p]=Xs(m/s*d)}else{const p=Xs(d/l.length);for(const m of l)h[m]=p}return h}function Vje(e,t){const n=e.map(i=>i.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(const i of n)if(!r.includes(i))return!1;return!0}const Ep=new Map;function Kje(e){let t=!0;ar(e.element.ownerDocument.defaultView,"Cannot register an unmounted Group");const n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,s=new n(b=>{for(const x of b){const{borderBoxSize:S,target:C}=x;if(C===e.element){if(t){const k=Hm({group:e});if(k===0)return;const w=gd(e.id);if(!w)return;const N=FR(e),A=w.defaultLayoutDeferred?EF(N):w.layout,T=Wje({group:e,nextGroupSize:k,prevGroupSize:w.groupSize,prevLayout:A}),M=dh({layout:T,panelConstraints:N});if(!w.defaultLayoutDeferred&&uh(w.layout,M)&&Hje(w.derivedPanelConstraints,N)&&w.groupSize===k)return;Xc(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:N,groupSize:k,layout:M,separatorToPanels:w.separatorToPanels})}}else Uje(e,C,S)}});s.observe(e.element),e.panels.forEach(b=>{ar(!r.has(b.id),`Panel ids must be unique; id "${b.id}" was used more than once`),r.add(b.id),b.onResize&&s.observe(b.element)});const o=Hm({group:e}),a=FR(e),l=e.panels.map(({id:b})=>b).join(",");let d=e.mutableState.defaultLayout;d&&(Vje(e.panels,d)||(d=void 0));const h=e.mutableState.layouts[l]??d??EF(a),p=dh({layout:h,panelConstraints:a}),m=e.element.ownerDocument;Ep.set(m,(Ep.get(m)??0)+1);const v=new Map;return HJ(e).forEach(b=>{b.separator&&v.set(b.separator,b.panels)}),Xc(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:a,groupSize:o,layout:p,separatorToPanels:v}),e.separators.forEach(b=>{ar(!i.has(b.id),`Separator ids must be unique; id "${b.id}" was used more than once`),i.add(b.id),b.element.addEventListener("keydown",gF)}),Ep.get(m)===1&&(m.addEventListener("dblclick",mF,!0),m.addEventListener("pointerdown",vF,!0),m.addEventListener("pointerleave",SF),m.addEventListener("pointermove",wF),m.addEventListener("pointerout",CF),m.addEventListener("pointerup",kF,!0)),function(){t=!1,Ep.set(m,Math.max(0,(Ep.get(m)??0)-1)),Tje(e),e.separators.forEach(b=>{b.element.removeEventListener("keydown",gF)}),Ep.get(m)||(m.removeEventListener("dblclick",mF,!0),m.removeEventListener("pointerdown",vF,!0),m.removeEventListener("pointerleave",SF),m.removeEventListener("pointermove",wF),m.removeEventListener("pointerout",CF),m.removeEventListener("pointerup",kF,!0)),s.disconnect()}}function Gje(){const[e,t]=_.useState({}),n=_.useCallback(()=>t({}),[]);return[e,n]}function rL(e){const t=_.useId();return`${e??t}`}const Ph=typeof window<"u"?_.useLayoutEffect:_.useEffect;function gb(e){const t=_.useRef(e);return Ph(()=>{t.current=e},[e]),_.useCallback((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[t])}function iL(...e){return gb(t=>{e.forEach(n=>{if(n)switch(typeof n){case"function":{n(t);break}case"object":{n.current=t;break}}})})}function sL(e){const t=_.useRef({...e});return Ph(()=>{for(const n in e)t.current[n]=e[n]},[e]),t.current}const eZ=_.createContext(null);function qje(e,t){const n=_.useRef({getLayout:()=>({}),setLayout:Bje});_.useImperativeHandle(t,()=>n.current,[]),Ph(()=>{Object.assign(n.current,qJ({groupId:e}))})}function tZ({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:s,groupRef:o,id:a,onLayoutChange:l,onLayoutChanged:d,orientation:h="horizontal",resizeTargetMinimumSize:p={coarse:20,fine:10},style:m,...v}){const b=_.useRef({onLayoutChange:{},onLayoutChanged:{}}),x=gb(L=>{uh(b.current.onLayoutChange,L)||(b.current.onLayoutChange=L,l==null||l(L))}),S=gb(L=>{uh(b.current.onLayoutChanged,L)||(b.current.onLayoutChanged=L,d==null||d(L))}),C=rL(a),k=_.useRef(null),[w,N]=Gje(),A=_.useRef({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:p,separators:[]}),T=iL(k,s);qje(C,o);const M=gb((L,I)=>{const $=fh(),H=dF(L),z=gd(L);if(z){let F=!1;switch($.state){case"active":{F=$.hitRegions.some(K=>K.group===H);break}}return{flexGrow:z.layout[I]??1,pointerEvents:F?"none":void 0}}return{flexGrow:(n==null?void 0:n[I])??1}}),j=sL({defaultLayout:n,disableCursor:r}),P=_.useMemo(()=>({get disableCursor(){return!!j.disableCursor},getPanelStyles:M,id:C,orientation:h,registerPanel:L=>{const I=A.current;return I.panels=UR(h,[...I.panels,L]),N(),()=>{I.panels=I.panels.filter($=>$!==L),N()}},registerSeparator:L=>{const I=A.current;return I.separators=UR(h,[...I.separators,L]),N(),()=>{I.separators=I.separators.filter($=>$!==L),N()}},togglePanelDisabled:(L,I)=>{const $=A.current.panels.find(F=>F.id===L);$&&($.panelConstraints.disabled=I);const H=dF(C),z=gd(C);H&&z&&Xc(H,{...z,derivedPanelConstraints:FR(H)})},toggleSeparatorDisabled:(L,I)=>{const $=A.current.separators.find(H=>H.id===L);$&&($.disabled=I)}}),[M,C,N,h,j]),D=_.useRef(null);return Ph(()=>{const L=k.current;if(L===null)return;const I=A.current;let $;if(j.defaultLayout!==void 0&&Object.keys(j.defaultLayout).length===I.panels.length){$={};for(const X of I.panels){const G=j.defaultLayout[X.id];G!==void 0&&($[X.id]=G)}}const H={disabled:!!i,element:L,id:C,mutableState:{defaultLayout:$,disableCursor:!!j.disableCursor,expandedPanelSizes:A.current.lastExpandedPanelSizes,layouts:A.current.layouts},orientation:h,panels:I.panels,resizeTargetMinimumSize:I.resizeTargetMinimumSize,separators:I.separators};D.current=H;const z=Kje(H),{defaultLayoutDeferred:F,derivedPanelConstraints:K,layout:W}=gd(H.id,!0);!F&&K.length>0&&(x(W),S(W));const V=QP(C,X=>{const{defaultLayoutDeferred:G,derivedPanelConstraints:te,layout:oe}=X.next;if(G||te.length===0)return;const ce=H.panels.map(({id:ee})=>ee).join(",");H.mutableState.layouts[ce]=oe,te.forEach(ee=>{if(ee.collapsible){const{layout:ne}=X.prev??{};if(ne){const ie=Cs(ee.collapsedSize,oe[ee.panelId]),ae=Cs(ee.collapsedSize,ne[ee.panelId]);ie&&!ae&&(H.mutableState.expandedPanelSizes[ee.panelId]=ne[ee.panelId])}}});const de=fh().state!=="active";x(oe),de&&S(oe)});return()=>{D.current=null,z(),V()}},[i,C,S,x,h,w,j]),_.useEffect(()=>{const L=D.current;L&&(L.mutableState.defaultLayout=n,L.mutableState.disableCursor=!!r)}),c.jsx(eZ.Provider,{value:P,children:c.jsx("div",{...v,className:t,"data-group":!0,"data-testid":C,id:C,ref:T,style:{height:"100%",width:"100%",overflow:"hidden",...m,display:"flex",flexDirection:h==="horizontal"?"row":"column",flexWrap:"nowrap",touchAction:h==="horizontal"?"pan-y":"pan-x"},children:e})})}tZ.displayName="Group";function oL(){const e=_.useContext(eZ);return ar(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function Yje(e,t){const{id:n}=oL(),r=_.useRef({collapse:RT,expand:RT,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:RT});_.useImperativeHandle(t,()=>r.current,[]),Ph(()=>{Object.assign(r.current,GJ({groupId:n,panelId:e}))})}function nZ({children:e,className:t,collapsedSize:n="0%",collapsible:r=!1,defaultSize:i,disabled:s,elementRef:o,groupResizeBehavior:a="preserve-relative-size",id:l,maxSize:d="100%",minSize:h="0%",onResize:p,panelRef:m,style:v,...b}){const x=!!l,S=rL(l),C=sL({disabled:s}),k=_.useRef(null),w=iL(k,o),{getPanelStyles:N,id:A,orientation:T,registerPanel:M,togglePanelDisabled:j}=oL(),P=p!==null,D=gb((I,$,H)=>{p==null||p(I,l,H)});Ph(()=>{const I=k.current;if(I!==null){const $={element:I,id:S,idIsStable:x,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:P?D:void 0,panelConstraints:{groupResizeBehavior:a,collapsedSize:n,collapsible:r,defaultSize:i,disabled:C.disabled,maxSize:d,minSize:h}};return M($)}},[a,n,r,i,P,S,x,d,h,D,M,C]),_.useEffect(()=>{j(S,!!s)},[s,S,j]),Yje(S,m);const L=_.useSyncExternalStore(I=>QP(A,I),()=>JSON.stringify(N(A,S)),()=>JSON.stringify(N(A,S)));return c.jsx("div",{...b,"aria-disabled":s||void 0,"data-panel":!0,"data-testid":S,id:S,ref:w,style:{...Xje,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...JSON.parse(L)},children:c.jsx("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...v,touchAction:T==="horizontal"?"pan-y":"pan-x"},children:e})})}nZ.displayName="Panel";const Xje={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function Jje({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,s;const o=e[n],a=t.find(l=>l.panelId===n);if(a){const l=a.maxSize,d=a.collapsible?a.collapsedSize:a.minSize,h=[r,r+1];s=dh({layout:Sx({delta:d-o,initialLayout:e,panelConstraints:t,pivotIndices:h,prevLayout:e}),panelConstraints:t})[n],i=dh({layout:Sx({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:h,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:s,valueNow:o}}function rZ({children:e,className:t,disabled:n,elementRef:r,id:i,style:s,...o}){const a=rL(i),l=sL({disabled:n}),[d,h]=_.useState({}),[p,m]=_.useState("inactive"),v=_.useRef(null),b=iL(v,r),{disableCursor:x,id:S,orientation:C,registerSeparator:k,toggleSeparatorDisabled:w}=oL(),N=C==="horizontal"?"vertical":"horizontal";Ph(()=>{const T=v.current;if(T!==null){const M={disabled:l.disabled,element:T,id:a},j=k(M),P=$je(L=>{m(L.next.state!=="inactive"&&L.next.hitRegions.some(I=>I.separator===M)?L.next.state:"inactive")}),D=QP(S,L=>{const{derivedPanelConstraints:I,layout:$,separatorToPanels:H}=L.next,z=H.get(M);if(z){const F=z[0],K=z.indexOf(F);h(Jje({layout:$,panelConstraints:I,panelId:F.id,panelIndex:K}))}});return()=>{P(),D(),j()}}},[S,a,k,l]),_.useEffect(()=>{w(a,!!n)},[n,a,w]);let A;return n&&!x&&(A="not-allowed"),c.jsx("div",{...o,"aria-controls":d.valueControls,"aria-disabled":n||void 0,"aria-orientation":N,"aria-valuemax":d.valueMax,"aria-valuemin":d.valueMin,"aria-valuenow":d.valueNow,children:e,className:t,"data-separator":n?"disabled":p,"data-testid":a,id:a,ref:b,role:"separator",style:{flexBasis:"auto",cursor:A,...s,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}rZ.displayName="Separator";const aL=({className:e,...t})=>c.jsx(tZ,{className:fe("flex h-full w-full",e),...t}),wx=e=>c.jsx(nZ,{...e}),lL=({withHandle:e,orientation:t,disabled:n,className:r,...i})=>c.jsx(rZ,{disabled:n,className:fe("relative flex items-center justify-center bg-transparent focus-visible:outline-none",t==="vertical"?"h-2 w-full -my-1 cursor-row-resize":"h-full w-2 -mx-1 cursor-col-resize",e&&(t==="vertical"?"before:absolute before:inset-x-0 before:top-1/2 before:h-0.5 before:-translate-y-1/2 before:bg-border":"before:absolute before:inset-y-0 before:left-1/2 before:w-px before:-translate-x-1/2 before:bg-border"),r),...i,children:c.jsx("span",{className:"sr-only",children:t==="vertical"?"Resize rows":"Resize columns"})});function iZ(e,t,n){const r=typeof e.maxTokens=="number"&&Number.isFinite(e.maxTokens)?e.maxTokens:null,i=r&&r>0?Math.min(100,e.usedTokens/r*100):null,s=r!==null?Math.max(0,Math.round(r-e.usedTokens)):null,o=i!==null?Math.max(0,100-i):null;return{...e,compactsAutomatically:e.compactsAutomatically||n,maxTokens:r??void 0,remainingTokens:s,usedPercentage:i,remainingPercentage:o,updatedAt:t}}function Zje(e){const t=e.some(n=>n.kind==="compact_boundary"||n.kind==="compact_summary"||n.kind==="context_cleared");for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(r&&!(r.kind!=="context_window_updated"||r.usage.usedTokens<=0))return iZ(r.usage,new Date(r.createdAt).toISOString(),t)}return null}function Qje(e,t){return!e||t===null||!Number.isFinite(t)||t<=0?e:iZ({...e,maxTokens:t},e.updatedAt,e.compactsAutomatically)}function $u(e){return e===void 0||!Number.isFinite(e)||e<0?0:e}function eIe(e,t){let n=0,r=0,i=0,s=0;for(const a of e){if(a.kind!=="result")continue;const l=a.usage;l&&(n+=$u(l.inputTokens),r+=$u(l.outputTokens),i+=$u(l.cachedInputTokens)),s+=$u(a.costUsd??(l==null?void 0:l.costUsd))}for(const a of t){const l=a.usage;l&&(n+=$u(l.inputTokens),r+=$u(l.outputTokens),i+=$u(l.cachedInputTokens),s+=$u(l.costUsd))}if(n===0&&r===0&&i===0&&s===0)return null;const o=n>0?i/n*100:null;return{inputTokens:n,outputTokens:r,cachedTokens:i,costUsd:s,cacheHitPercentage:o}}function tIe(e){return!Number.isFinite(e)||e<=0?"$0.00":e<.01?"<$0.01":`$${e.toFixed(2)}`}function qs(e){return e==null||!Number.isFinite(e)?"0":e<1e3?`${Math.round(e)}`:e<1e4?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:e<1e6?`${Math.round(e/1e3)}k`:`${(e/1e6).toFixed(1).replace(/\.0$/,"")}m`}const nIe=typeof window>"u"?0:window.innerWidth,Wn=tr()(e=>({typedEmptyStateText:"",isEmptyStateTypingComplete:!1,setTypedEmptyStateText:t=>e({typedEmptyStateText:t}),setIsEmptyStateTypingComplete:t=>e({isEmptyStateTypingComplete:t}),resetEmptyStateTyping:()=>e({typedEmptyStateText:"",isEmptyStateTypingComplete:!1}),isPageFileDragActive:!1,setIsPageFileDragActive:t=>e({isPageFileDragActive:t}),layoutWidth:0,setLayoutWidth:t=>e({layoutWidth:t}),inputHeight:148,setInputHeight:t=>e({inputHeight:t}),viewportWidth:nIe,setViewportWidth:t=>e({viewportWidth:t}),fixedTerminalHeight:0,setFixedTerminalHeight:t=>e({fixedTerminalHeight:t}),showScrollToBottom:!1,setShowScrollToBottom:t=>e({showScrollToBottom:t}),toolGroupExpanded:{},setToolGroupExpanded:t=>e(n=>({toolGroupExpanded:t(n.toolGroupExpanded)})),resetToolGroupExpanded:()=>e({toolGroupExpanded:{}}),localLinkMenuTarget:null,setLocalLinkMenuTarget:t=>e({localLinkMenuTarget:t}),diffRenderMode:"unified",wrapDiffLines:!1,setDiffRenderMode:t=>e({diffRenderMode:t}),setWrapDiffLines:t=>e({wrapDiffLines:t}),terminalFocusRequestVersion:0,incrementTerminalFocusRequestVersion:()=>e(t=>({terminalFocusRequestVersion:t.terminalFocusRequestVersion+1}))})),cL=[68,32];function rIe(){return{isVisible:!1,mainSizes:[...cL],terminals:[],nextTerminalIndex:0}}function iIe(e,t){return e[t]??rIe()}function MT(e){if(e.length===0)return[];const t=e.reduce((n,r)=>n+Math.max(r,0),0);return!Number.isFinite(t)||t<=0?Array.from({length:e.length},()=>100/e.length):e.map(n=>Math.max(n,0)/t*100)}function sIe(e){let t=e,n="";do n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26)-1;while(t>=0);return`Terminal ${n}`}function oIe(e){if(e.length===0)return e;const t=e.length+1;return e.map(n=>({...n,size:n.size*e.length/t}))}function Np(e,t,n){return{...e,[t]:n(iIe(e,t))}}const Gu=tr()(ug(e=>({projects:{},addTerminal:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{var l,d;const s=oIe(i.terminals),o={id:((d=(l=globalThis.crypto)==null?void 0:l.randomUUID)==null?void 0:d.call(l))??`terminal-${Date.now()}-${i.nextTerminalIndex}`,title:sIe(i.nextTerminalIndex),size:100/(s.length+1)},a=n?Math.max(s.findIndex(h=>h.id===n)+1,0):s.length;return{...i,isVisible:!0,nextTerminalIndex:i.nextTerminalIndex+1,terminals:[...s.slice(0,a),o,...s.slice(a)]}})})),removeTerminal:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{const s=i.terminals.filter(a=>a.id!==n);if(s.length===0)return{...i,isVisible:!1,terminals:[]};const o=MT(s.map(a=>a.size));return{...i,terminals:s.map((a,l)=>({...a,size:o[l]??100/s.length}))}})})),toggleVisibility:t=>e(n=>({projects:Np(n.projects,t,r=>({...r,isVisible:r.terminals.length>0?!r.isVisible:!1}))})),resetMainSizes:t=>e(n=>({projects:Np(n.projects,t,r=>({...r,mainSizes:[...cL]}))})),setMainSizes:(t,n)=>e(r=>{if(n.length!==2)return r;const[i=50,s=50]=MT(n),o=[i,s];return{projects:Np(r.projects,t,a=>({...a,mainSizes:o}))}}),setTerminalSizes:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{if(n.length!==i.terminals.length)return i;const s=MT(n);return{...i,terminals:i.terminals.map((o,a)=>({...o,size:s[a]??o.size}))}})})),clearProject:t=>e(n=>{const{[t]:r,...i}=n.projects;return{projects:i}})}),{name:"terminal-layouts",version:1})),aIe={isVisible:!1,mainSizes:[...cL],terminals:[],nextTerminalIndex:0},lIe=35;function cIe(e,t){return!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0?0:e*(t/100)}function uIe(e,t){const n=cIe(e,t);return n>=0&&n<lIe}const D1=350,dIe=[.4,0,.2,1],fIe=8,NF=1e-6;function hIe(e,t,n){const r=1-e;return 3*r*r*e*t+3*r*e*e*n+e*e*e}function pIe(e,t,n){const r=1-e;return 3*r*r*e*t+3*r*e*e*n+e*e*e}function mIe(e,t,n){const r=1-e;return 3*r*r*t+6*r*e*(n-t)+3*e*e*(1-n)}function gIe(e,t,n){let r=e;for(let i=0;i<fIe;i+=1){const s=hIe(r,t,n)-e;if(Math.abs(s)<NF)return r;const o=mIe(r,t,n);if(Math.abs(o)<NF)break;r-=s/o}return r}function vIe(e){if(e<=0)return 0;if(e>=1)return 1;const[t,n,r,i]=dIe,s=gIe(e,t,r);return pIe(s,n,i)}function sZ(e,t,n){const r=vIe(n);return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r]}function bIe({projectId:e,shouldRenderRightSidebarLayout:t,showRightSidebar:n,rightSidebarSize:r}){const i=_.useRef(null),s=_.useRef(null),o=_.useRef(null),a=_.useRef(null),l=_.useRef(null),d=_.useRef(!1),h=_.useRef(null),p=_.useRef(!1),m=_.useRef(!1);return _.useEffect(()=>()=>{a.current!==null&&window.cancelAnimationFrame(a.current),l.current!==null&&window.clearTimeout(l.current)},[]),_.useLayoutEffect(()=>{var M,j,P,D,L,I;if(!t){a.current!==null&&(window.cancelAnimationFrame(a.current),a.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null),d.current=!1;return}const v=i.current;if(!v)return;a.current!==null&&(window.cancelAnimationFrame(a.current),a.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null);const b=h.current,x=b!==null&&b!==e,S=n&&!m.current,C=!p.current,k=n?[100-r,r]:[100,0],w=x||C&&n,N=S||C?[100,0]:[v.getLayout().workspace??k[0],v.getLayout().rightSidebar??k[1]];if(h.current=e,p.current=t,m.current=n,w||Math.abs(N[0]-k[0])<.1&&Math.abs(N[1]-k[1])<.1){v.setLayout({workspace:k[0],rightSidebar:k[1]}),(M=s.current)==null||M.setAttribute("data-right-sidebar-open",n?"true":"false"),(j=o.current)==null||j.setAttribute("data-right-sidebar-open",n?"true":"false"),(P=o.current)==null||P.setAttribute("data-right-sidebar-animated","false");return}d.current=!0,(D=s.current)==null||D.setAttribute("data-right-sidebar-open",n?"true":"false"),(L=o.current)==null||L.setAttribute("data-right-sidebar-open",n?"true":"false"),(I=o.current)==null||I.setAttribute("data-right-sidebar-animated","true"),v.setLayout({workspace:N[0],rightSidebar:N[1]});const A=performance.now(),T=$=>{const H=Math.min(1,($-A)/D1),z=sZ(N,k,H);if(v.setLayout({workspace:z[0],rightSidebar:z[1]}),H<1){a.current=window.requestAnimationFrame(T);return}v.setLayout({workspace:k[0],rightSidebar:k[1]}),a.current=null,l.current=window.setTimeout(()=>{d.current=!1,l.current=null},0)};a.current=window.requestAnimationFrame(T)},[e,r,t,n]),_.useEffect(()=>{t||(p.current=!1,m.current=!1)},[t]),{isAnimating:d,panelGroupRef:i,sidebarPanelRef:s,sidebarVisualRef:o}}function xIe(e){return e.visibilityState==="visible"?e.activeChatId:null}function yIe(e){e.socket.setFocusedChat(xIe({activeChatId:e.activeChatId,visibilityState:e.visibilityState}))}function _Ie({socket:e,activeChatId:t}){_.useEffect(()=>{if(typeof document>"u")return;const n=()=>{yIe({socket:e,activeChatId:t,visibilityState:document.visibilityState})};return n(),document.addEventListener("visibilitychange",n),window.addEventListener("pagehide",n),window.addEventListener("pageshow",n),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("pagehide",n),window.removeEventListener("pageshow",n),e.setFocusedChat(null)}},[e,t])}function SIe({rootRef:e,fallbackRef:t,enabled:n,canCancel:r}){_.useEffect(()=>{if(!n)return;let i=0,s=null;const o=p=>{const m=p instanceof Element?p:null,v=e.current,b=t.current;if(a$({trigger:"pointer",activeElement:document.activeElement,pointerStartTarget:s,pointerEndTarget:m,root:v,fallback:b,hasActiveOverlay:o$(document),hasActiveSelection:vue(window.getSelection())})!=="restore"){s=null;return}b==null||b.focus({preventScroll:!0}),s=null},a=p=>{cancelAnimationFrame(i),s=p.target instanceof Element?p.target:null},l=p=>{cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{o(p.target)})},d=()=>{s=null;const p=t.current;!p||p.disabled||p.focus({preventScroll:!0})},h=p=>{if(p.key!=="Escape")return;const m=t.current;a$({trigger:"escape",activeElement:document.activeElement,fallback:m,hasActiveOverlay:o$(document),canCancel:r,defaultPrevented:p.defaultPrevented})==="escape-focus"&&(p.preventDefault(),m==null||m.focus({preventScroll:!0}))};return window.addEventListener("pointerdown",a,!0),window.addEventListener("pointerup",l,!0),window.addEventListener("keydown",h,!0),window.addEventListener(VS,d),()=>{cancelAnimationFrame(i),window.removeEventListener("pointerdown",a,!0),window.removeEventListener("pointerup",l,!0),window.removeEventListener("keydown",h,!0),window.removeEventListener(VS,d)}},[r,n,t,e])}function wIe(e){const t=e.previousProjectId!==null&&e.previousProjectId!==e.projectId,n=e.previousProjectId===null&&e.projectId!==null;return!t&&!n&&e.showTerminalPane&&!e.wasTerminalVisible}function CIe({previousProjectId:e,projectId:t,previousShouldRenderTerminalLayout:n,previousShowTerminalPane:r,showTerminalPane:i,terminalLayout:s,liveLayout:o}){const a=e!==null&&e!==t,l=i&&!r,d=!n,h=e===null&&t!==null,p=i?s.mainSizes:[100,0];return{currentLayout:l||d?[100,0]:o,shouldSkipAnimation:a||h&&d,targetLayout:p}}function kIe({chatInputRef:e,projectId:t,shouldRenderTerminalLayout:n,showTerminalPane:r,terminalLayout:i}){const s=_.useRef(null),o=_.useRef(null),a=_.useRef(null),l=_.useRef(null),d=_.useRef(null),h=_.useRef(!1),p=_.useRef(null),m=_.useRef(!1),v=_.useRef(!1),b=_.useRef(!1),x=Wn(C=>C.terminalFocusRequestVersion),S=Wn(C=>C.incrementTerminalFocusRequestVersion);return _.useEffect(()=>{var w;const C=p.current,k=b.current;wIe({previousProjectId:C,projectId:t,showTerminalPane:r,wasTerminalVisible:k})&&S(),C!==null&&C===t&&!r&&k&&((w=e.current)==null||w.focus({preventScroll:!0})),b.current=r,p.current=t},[e,S,t,r]),_.useEffect(()=>()=>{l.current!==null&&window.cancelAnimationFrame(l.current),d.current!==null&&window.clearTimeout(d.current)},[]),_.useLayoutEffect(()=>{var j,P,D,L,I,$;if(!n){l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null),d.current!==null&&(window.clearTimeout(d.current),d.current=null),h.current=!1;return}const C=s.current;if(!C)return;l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null),d.current!==null&&(window.clearTimeout(d.current),d.current=null);const k=p.current,{currentLayout:w,shouldSkipAnimation:N,targetLayout:A}=CIe({previousProjectId:k,projectId:t,previousShouldRenderTerminalLayout:m.current,previousShowTerminalPane:v.current,showTerminalPane:r,terminalLayout:i,liveLayout:[C.getLayout().chat??i.mainSizes[0],C.getLayout().terminal??i.mainSizes[1]]});if(m.current=n,v.current=r,N||Math.abs(w[0]-A[0])<.1&&Math.abs(w[1]-A[1])<.1){C.setLayout({chat:A[0],terminal:A[1]}),(j=o.current)==null||j.setAttribute("data-terminal-open",r?"true":"false"),(P=a.current)==null||P.setAttribute("data-terminal-open",r?"true":"false"),(D=a.current)==null||D.setAttribute("data-terminal-animated","false");return}h.current=!0,(L=o.current)==null||L.setAttribute("data-terminal-open",r?"true":"false"),(I=a.current)==null||I.setAttribute("data-terminal-open",r?"true":"false"),($=a.current)==null||$.setAttribute("data-terminal-animated","true"),C.setLayout({chat:w[0],terminal:w[1]});const T=performance.now(),M=H=>{const z=Math.min(1,(H-T)/D1),F=sZ(w,A,z);if(C.setLayout({chat:F[0],terminal:F[1]}),z<1){l.current=window.requestAnimationFrame(M);return}C.setLayout({chat:A[0],terminal:A[1]}),l.current=null,d.current=window.setTimeout(()=>{h.current=!1,d.current=null},0)};l.current=window.requestAnimationFrame(M)},[t,n,r,i]),_.useEffect(()=>{n||(m.current=!1,v.current=!1)},[n]),{isAnimating:h,mainPanelGroupRef:s,terminalFocusRequestVersion:x,terminalPanelRef:o,terminalVisualRef:a}}const TF=e=>Symbol.iterator in e,AF=e=>"entries"in e,RF=(e,t)=>{const n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(const[i,s]of n)if(!r.has(i)||!Object.is(s,r.get(i)))return!1;return!0},EIe=(e,t)=>{const n=e[Symbol.iterator](),r=t[Symbol.iterator]();let i=n.next(),s=r.next();for(;!i.done&&!s.done;){if(!Object.is(i.value,s.value))return!1;i=n.next(),s=r.next()}return!!i.done&&!!s.done};function NIe(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:TF(e)&&TF(t)?AF(e)&&AF(t)?RF(e,t):EIe(e,t):RF({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function vm(e){const t=$n.useRef(void 0);return n=>{const r=e(n);return NIe(t.current,r)?t.current:t.current=r}}function Sv(){var e;return((e=jr.getState().settings)==null?void 0:e.customModels)??[]}const vb="__new__";function Tp(e,t){var o,a;const n=(o=e==null?void 0:e.modelOptions)==null?void 0:o.reasoningEffort;let r;sw(n)?r=n:sw(e==null?void 0:e.effort)?r=e.effort:r=wo.reasoningEffort;const i=Oge(e==null?void 0:e.model,void 0,t),s=sI(i,(a=e==null?void 0:e.modelOptions)==null?void 0:a.contextWindow,t);return{model:i,modelOptions:{reasoningEffort:!BW(i,t)&&r==="max"?"high":r,contextWindow:s},planMode:!!(e!=null&&e.planMode)}}function j0(e,t){var i,s;const n=(i=e==null?void 0:e.modelOptions)==null?void 0:i.reasoningEffort;let r;return ow(n)?r=n:ow(e==null?void 0:e.effort)?r=e.effort:r=hd.reasoningEffort,{model:Dge(e==null?void 0:e.model,void 0,t),modelOptions:{reasoningEffort:r,fastMode:typeof((s=e==null?void 0:e.modelOptions)==null?void 0:s.fastMode)=="boolean"?e.modelOptions.fastMode:hd.fastMode},planMode:!!(e!=null&&e.planMode)}}function TIe(){return{claude:{model:"claude-opus-4-7",modelOptions:{...wo},planMode:!1},codex:{model:"gpt-5.5",modelOptions:{...hd},planMode:!1},openrouter:{model:zC,modelOptions:{},planMode:!1}}}function AIe(e,t){return e.reasoningEffort===t.reasoningEffort&&e.contextWindow===t.contextWindow}function RIe(e,t){return e.reasoningEffort===t.reasoningEffort&&e.fastMode===t.fastMode}function MIe(e,t){return e.claude.model===t.claude.model&&e.claude.planMode===t.claude.planMode&&AIe(e.claude.modelOptions,t.claude.modelOptions)&&e.codex.model===t.codex.model&&e.codex.planMode===t.codex.planMode&&RIe(e.codex.modelOptions,t.codex.modelOptions)&&e.openrouter.model===t.openrouter.model&&e.openrouter.planMode===t.openrouter.planMode}function jIe(e,t){if(t===void 0){Qs.info(`[chat-preferences] ${e}`);return}Qs.info(`[chat-preferences] ${e}`,t)}function bb(e,t){if(e==="claude"){const r=t.claude;return{provider:"claude",model:r.model,modelOptions:{...r.modelOptions},planMode:r.planMode}}if(e==="openrouter"){const r=t.openrouter;return{provider:"openrouter",model:r.model,modelOptions:{...r.modelOptions},planMode:r.planMode}}const n=t.codex;return{provider:"codex",model:n.model,modelOptions:{...n.modelOptions},planMode:n.planMode}}function HR(e){return e.provider==="claude"?{provider:"claude",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}:e.provider==="openrouter"?{provider:"openrouter",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}:{provider:"codex",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}}function oZ(e){return e.providerHint?bb(e.providerHint,e.providerDefaults):e.defaultProvider==="last_used"?e.sourceState?HR(e.sourceState):bb("claude",e.providerDefaults):bb(e.defaultProvider,e.providerDefaults)}function aZ(e,t){const n=e.chatStates[t];return n||oZ({defaultProvider:e.defaultProvider,providerDefaults:e.providerDefaults,legacyComposerState:e.legacyComposerState})}function I0(e,t,n){const r=aZ(e,t);return{chatStates:{...e.chatStates,[t]:n(r)}}}const Ns=tr()(ug((e,t)=>({defaultProvider:"last_used",providerDefaults:TIe(),chatStates:{},legacyComposerState:{provider:"claude",model:"claude-opus-4-7",modelOptions:{...wo},planMode:!1},setDefaultProvider:n=>e({defaultProvider:n}),applyServerDefaults:(n,r)=>e(i=>{if(i.defaultProvider===n&&MIe(i.providerDefaults,r))return{defaultProvider:n,providerDefaults:r};const{[vb]:o,...a}=i.chatStates;return{defaultProvider:n,providerDefaults:r,chatStates:a}}),setProviderDefaultModel:(n,r)=>e(i=>{const s=Sv();return n==="claude"?{providerDefaults:{...i.providerDefaults,[n]:Tp({...i.providerDefaults.claude,model:r},s)}}:n==="openrouter"?{providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults.openrouter,model:r}}}:{providerDefaults:{...i.providerDefaults,[n]:j0({...i.providerDefaults.codex,model:r},s)}}}),setProviderDefaultModelOptions:(n,r)=>e(i=>{const s=Sv();if(n==="claude"){const a=r;return{providerDefaults:{...i.providerDefaults,[n]:Tp({...i.providerDefaults.claude,modelOptions:{...i.providerDefaults.claude.modelOptions,...a}},s)}}}if(n==="openrouter")return{providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults.openrouter,modelOptions:{}}}};const o=r;return{providerDefaults:{...i.providerDefaults,[n]:j0({...i.providerDefaults.codex,modelOptions:{...i.providerDefaults.codex.modelOptions,...o}},s)}}}),setProviderDefaultPlanMode:(n,r)=>e(i=>({providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults[n],planMode:r}}})),getComposerState:n=>HR(aZ(t(),n)),initializeComposerForChat:(n,r)=>e(i=>{if(i.chatStates[n])return i;const s=oZ({defaultProvider:i.defaultProvider,providerDefaults:i.providerDefaults,sourceState:r==null?void 0:r.sourceState,legacyComposerState:i.legacyComposerState,providerHint:r==null?void 0:r.providerHint});return jIe("initializeComposerForChat",{chatId:n,composerState:s}),{chatStates:{...i.chatStates,[n]:s}}}),setComposerState:(n,r)=>e(i=>{const s=Sv();return{chatStates:{...i.chatStates,[n]:r.provider==="claude"?{provider:"claude",model:Tp(r,s).model,modelOptions:Tp(r,s).modelOptions,planMode:r.planMode}:HR(r)}}}),setChatComposerProvider:(n,r)=>e(i=>I0(i,n,()=>bb(r,i.providerDefaults))),setChatComposerModel:(n,r)=>e(i=>I0(i,n,s=>{const o=Sv();if(s.provider==="claude"){const a=Tp({...s,model:r},o);return{provider:"claude",model:a.model,modelOptions:a.modelOptions,planMode:s.planMode}}return s.provider==="openrouter"?{provider:"openrouter",model:r,modelOptions:{},planMode:s.planMode}:{provider:"codex",model:r,modelOptions:j0({...s,model:r},o).modelOptions,planMode:s.planMode}})),setChatComposerModelOptions:(n,r)=>e(i=>I0(i,n,s=>{const o=Sv();if(s.provider==="claude"){const l=r;return{provider:"claude",model:s.model,modelOptions:Tp({...s,modelOptions:{...s.modelOptions,...l}},o).modelOptions,planMode:s.planMode}}if(s.provider==="openrouter")return{provider:"openrouter",model:s.model,modelOptions:{},planMode:s.planMode};const a=r;return{provider:"codex",model:s.model,modelOptions:j0({...s,modelOptions:{...s.modelOptions,...a}},o).modelOptions,planMode:s.planMode}})),setChatComposerPlanMode:(n,r)=>e(i=>I0(i,n,s=>({...s,planMode:r}))),resetChatComposerFromProvider:(n,r)=>e(i=>({chatStates:{...i.chatStates,[n]:bb(r,i.providerDefaults)}}))}),{name:"chat-preferences-state",version:1,partialize:e=>({chatStates:e.chatStates,legacyComposerState:e.legacyComposerState})}));function IIe(e){return e===void 0?null:typeof e=="string"?e?{text:e}:null:e.text||e.lexicalState?e:null}const WR=tr()(ug((e,t)=>({drafts:{},attachmentDrafts:{},setDraft:(n,r,i)=>e(s=>{let o;if(typeof r=="string"){if(!r){const{[n]:a,...l}=s.drafts;return{drafts:l}}o={text:r}}else{const a=i??"";if(!a){const{[n]:l,...d}=s.drafts;return{drafts:d}}o={text:a,lexicalState:r}}return{drafts:{...s.drafts,[n]:o}}}),clearDraft:n=>e(r=>{const{[n]:i,...s}=r.drafts;return{drafts:s}}),getDraft:n=>IIe(t().drafts[n]),setAttachmentDrafts:(n,r)=>e(i=>{if(r.length===0){const{[n]:s,...o}=i.attachmentDrafts;return{attachmentDrafts:o}}return{attachmentDrafts:{...i.attachmentDrafts,[n]:r}}}),clearAttachmentDrafts:n=>e(r=>{const{[n]:i,...s}=r.attachmentDrafts;return{attachmentDrafts:s}}),getAttachmentDrafts:n=>t().attachmentDrafts[n]??[]}),{name:"chat-input-drafts"})),uL=tr()(e=>({byChatId:{},loadingByChatId:{},setForChat:(t,n)=>e(r=>({byChatId:{...r.byChatId,[t]:n}})),setLoadingForChat:(t,n)=>e(r=>(r.loadingByChatId[t]??!1)===n?r:{loadingByChatId:{...r.loadingByChatId,[t]:n}}),clear:t=>e(n=>{const r=t in n.byChatId,i=t in n.loadingByChatId;if(!r&&!i)return n;const{[t]:s,...o}=n.byChatId,{[t]:a,...l}=n.loadingByChatId;return{byChatId:o,loadingByChatId:l}})}));function PIe(e){return{autoResumeOnRateLimit:!!(e!=null&&e.autoResumeOnRateLimit)}}const VR=tr()(ug(e=>({autoResumeOnRateLimit:!1,setAutoResumeOnRateLimit:t=>e({autoResumeOnRateLimit:t})}),{name:"kanna-preferences",version:1,migrate:e=>PIe(e)})),LIe="kanna",OIe=`mcp__${LIe}__preview_file`;function df(e){return Hi(e)?e:null}function wv(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function DIe(e){let t;Hi(e)&&"content"in e&&Array.isArray(e.content)?t=e.content:Array.isArray(e)?t=e:t=[];const n=[];for(const r of t)if(!(!r||typeof r!="object"||!("type"in r))){if(r.type==="text"&&"text"in r&&typeof r.text=="string"){n.push({type:"text",text:r.text});continue}if(r.type==="image"){if("data"in r&&typeof r.data=="string"){n.push({type:"image",data:r.data,mimeType:"mimeType"in r&&typeof r.mimeType=="string"?r.mimeType:void 0});continue}"source"in r&&r.source&&typeof r.source=="object"&&"type"in r.source&&r.source.type==="base64"&&"data"in r.source&&typeof r.source.data=="string"&&n.push({type:"image",data:r.source.data,mimeType:"media_type"in r.source&&typeof r.source.media_type=="string"?r.source.media_type:void 0})}}return n}function P0(e){let t;if(Hi(e)&&"content"in e&&Array.isArray(e.content)?t=e.content:Array.isArray(e)?t=e:t=null,!t)return null;const n=[];for(const r of t)r&&typeof r=="object"&&"type"in r&&r.type==="text"&&"text"in r&&typeof r.text=="string"&&n.push(r.text);return n.length>0?n.join(""):null}function $Ie(e,t){var r;const n=wv(t);switch(e.toolKind){case"ask_user_question":{const i=P0(n),s=i!==null?wv(i):n,o=df(s),a=df(o==null?void 0:o.answers)??(o||{}),l={};for(const[d,h]of Object.entries(a))Array.isArray(h)?l[d]=h.map(p=>String(p)):Hi(h)&&Array.isArray(h.answers)?l[d]=h.answers.map(p=>String(p)):h==null||h===""?l[d]=[]:l[d]=[String(h)];return{answers:l,...(o==null?void 0:o.discarded)===!0?{discarded:!0}:{}}}case"exit_plan_mode":{const i=P0(n),s=i!==null?wv(i):n,o=df(s);return{confirmed:typeof(o==null?void 0:o.confirmed)=="boolean"?o.confirmed:void 0,clearContext:typeof(o==null?void 0:o.clearContext)=="boolean"?o.clearContext:void 0,message:typeof(o==null?void 0:o.message)=="string"?o.message:void 0,...(o==null?void 0:o.discarded)===!0?{discarded:!0}:{}}}case"offer_download":{const i=P0(n),s=i?wv(i):n,o=df(s);let a;return typeof(o==null?void 0:o.displayName)=="string"?a=o.displayName:typeof(o==null?void 0:o.fileName)=="string"?a=o.fileName:a="",{contentUrl:typeof(o==null?void 0:o.contentUrl)=="string"?o.contentUrl:"",relativePath:typeof(o==null?void 0:o.relativePath)=="string"?o.relativePath:"",fileName:typeof(o==null?void 0:o.fileName)=="string"?o.fileName:"",displayName:a,size:typeof(o==null?void 0:o.size)=="number"?o.size:0,...typeof(o==null?void 0:o.mimeType)=="string"?{mimeType:o.mimeType}:{}}}case"preview_file":{const i=P0(n),s=i?wv(i):n,o=df(s);let a;return typeof(o==null?void 0:o.displayName)=="string"?a=o.displayName:typeof(o==null?void 0:o.fileName)=="string"?a=o.fileName:a="",{contentUrl:typeof(o==null?void 0:o.contentUrl)=="string"?o.contentUrl:"",relativePath:typeof(o==null?void 0:o.relativePath)=="string"?o.relativePath:"",fileName:typeof(o==null?void 0:o.fileName)=="string"?o.fileName:"",displayName:a,size:typeof(o==null?void 0:o.size)=="number"?o.size:0,mimeType:typeof(o==null?void 0:o.mimeType)=="string"?o.mimeType:"application/octet-stream"}}case"image_generation":{const i=df(n);return{contentUrl:typeof(i==null?void 0:i.contentUrl)=="string"?i.contentUrl:"",relativePath:typeof(i==null?void 0:i.relativePath)=="string"?i.relativePath:"",fileName:typeof(i==null?void 0:i.fileName)=="string"?i.fileName:""}}case"workflow":{const i=typeof t=="string"?t:"";return{taskId:(r=i.match(/Task ID:\s*(\S+)/))==null?void 0:r[1],text:i}}case"read_file":{if(typeof n=="string")return n;const i=DIe(n);if(i.length>0)return{content:i.flatMap(o=>o.type==="text"?[o.text]:[]).join(""),blocks:i};const s=df(n);return{content:typeof(s==null?void 0:s.content)=="string"?s.content:JSON.stringify(n,null,2)}}default:return n}}function zIe(e){return e.kind==="tool"}function lZ(e){return new Date(e).toISOString()}function Ni(e){return{id:e._id,messageId:e.messageId,timestamp:lZ(e.createdAt),hidden:e.hidden}}function BIe(e){return{id:e._id,messageId:e.messageId,hidden:e.hidden,kind:"tool",toolKind:e.tool.toolKind,toolName:e.tool.toolName,toolId:e.tool.toolId,input:e.tool.input,timestamp:lZ(e.createdAt)}}function FIe(e){if(e.debugRaw)try{const t=JSON.parse(e.debugRaw);return(t==null?void 0:t.tool_use_result)??void 0}catch{return}}function dl(e){return typeof e=="number"?e:void 0}function L0(e){return typeof e=="string"?e:void 0}function UIe(e){if(!Hi(e))return;const t=e,n={readCount:dl(t.readCount),searchCount:dl(t.searchCount),bashCount:dl(t.bashCount),editFileCount:dl(t.editFileCount),linesAdded:dl(t.linesAdded),linesRemoved:dl(t.linesRemoved),otherToolCount:dl(t.otherToolCount)};return Object.values(n).some(r=>r!==void 0)?n:void 0}function HIe(e){if(!e.debugRaw)return;let t;try{t=JSON.parse(e.debugRaw).toolUseResult}catch{return}if(!Hi(t))return;const n=t,r={agentId:L0(n.agentId),agentType:L0(n.agentType),status:L0(n.status),totalTokens:dl(n.totalTokens),totalDurationMs:dl(n.totalDurationMs),totalToolUseCount:dl(n.totalToolUseCount),toolStats:UIe(n.toolStats),content:L0(n.content)};return r.agentId!==void 0||r.agentType!==void 0||r.totalTokens!==void 0||r.totalDurationMs!==void 0||r.status!==void 0?r:void 0}function $1(e){const t=new Map,n=[];for(const r of e)switch(r.kind){case"user_prompt":n.push({...Ni(r),kind:"user_prompt",content:r.content,attachments:r.attachments??[],steered:r.steered,autoContinue:r.autoContinue});break;case"system_init":n.push({...Ni(r),kind:"system_init",provider:r.provider,model:r.model,tools:r.tools,agents:r.agents,slashCommands:r.slashCommands,mcpServers:r.mcpServers,debugRaw:r.debugRaw});break;case"account_info":n.push({...Ni(r),kind:"account_info",accountInfo:r.accountInfo});break;case"assistant_text":n.push({...Ni(r),kind:"assistant_text",text:r.text});break;case"assistant_thinking":n.push({...Ni(r),kind:"assistant_thinking",text:r.text,signature:r.signature});break;case"api_error":n.push({...Ni(r),kind:"api_error",status:r.status,text:r.text,requestId:r.requestId});break;case"policy_refusal":n.push({...Ni(r),kind:"policy_refusal",text:r.text,requestId:r.requestId});break;case"tool_call":{const i=BIe(r);t.set(r.tool.toolId,{hydrated:i,normalized:r.tool}),zIe(i)&&n.push(i);break}case"tool_result":{const i=t.get(r.toolId);if(i){const s=i.normalized.toolKind==="ask_user_question"||i.normalized.toolKind==="exit_plan_mode"?FIe(r)??r.content:r.content;i.normalized.toolKind==="subagent_task"?i.hydrated.result=HIe(r):i.hydrated.result=$Ie(i.normalized,s),i.hydrated.rawResult=s,i.hydrated.isError=r.isError,r.persisted&&(i.hydrated.persisted=r.persisted)}break}case"result":n.push({...Ni(r),kind:"result",success:!r.isError,cancelled:r.subtype==="cancelled",result:r.result,durationMs:r.durationMs,costUsd:r.costUsd});break;case"status":n.push({...Ni(r),kind:"status",status:r.status});break;case"context_window_updated":n.push({...Ni(r),kind:"context_window_updated",usage:r.usage});break;case"compact_boundary":n.push({...Ni(r),kind:"compact_boundary"});break;case"compact_summary":n.push({...Ni(r),kind:"compact_summary",summary:r.summary});break;case"context_cleared":n.push({...Ni(r),kind:"context_cleared"});break;case"interrupted":n.push({...Ni(r),kind:"interrupted"});break;case"memory_loaded":n.push({...Ni(r),kind:"memory_loaded",path:r.path});break;case"auto_continue_prompt":n.push({...Ni(r),kind:"auto_continue_prompt",scheduleId:r.scheduleId});break;case"pending_tool_request":n.push({...Ni(r),kind:"pending_tool_request",toolRequestId:r.toolRequestId,toolName:r.toolName,arguments:r.arguments});break;case"tool_request_resolved":break;default:n.push({...Ni(r),kind:"unknown",json:JSON.stringify(r,null,2)});break}return n}function cZ(e){return e.kind==="tool"}const WIe=["AskUserQuestion","ExitPlanMode","TodoWrite"],VIe=new Set(["TodoWrite"]);function KIe(e,t){for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(cZ(r)&&r.toolName===t&&!r.result)return r.id}return null}function GIe(e,t){for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(cZ(r)&&r.toolName===t)return r.id}return null}function qIe(e){const t={};for(const n of WIe)t[n]=VIe.has(n)?GIe(e,n):KIe(e,n);return t}function YIe(e){return e==="starting"||e==="running"||e==="waiting_for_user"}function XIe(e){return e==="starting"||e==="running"||e==="waiting_for_user"}const dL="pushDeviceId";function uZ(){return typeof localStorage>"u"?null:localStorage.getItem(dL)}function JIe(e){typeof localStorage>"u"||localStorage.setItem(dL,e)}function ZIe(){typeof localStorage>"u"||localStorage.removeItem(dL)}function QIe(){return!(typeof window>"u"||typeof Notification>"u"||!("serviceWorker"in navigator)||typeof Reflect.get(globalThis,"PushManager")>"u")}function ePe(){var t;if(typeof window>"u")return!1;if(window.isSecureContext)return!0;const e=((t=window.location)==null?void 0:t.hostname)??"";return e==="localhost"||e==="127.0.0.1"||e==="::1"}function fL(){if(!QIe())return{state:"unsupported"};if(!ePe())return{state:"insecure-context"};switch(Notification.permission){case"granted":return{state:"granted"};case"denied":return{state:"denied"};default:return{state:"default"}}}function tPe(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64url"));const t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),r=atob(n),i=new Uint8Array(r.length);for(let s=0;s<r.length;s+=1)i[s]=r.charCodeAt(s);return i}function nPe(e){const t=e||"";return/iPhone|iPad/i.test(t)?"iPhone / iPad":/Android/i.test(t)?"Android":/Macintosh/i.test(t)?"Mac":/Windows/i.test(t)?"Windows PC":t||"Browser"}async function rPe(e){const t=fL();if(t.state==="unsupported")throw new Error("Push not supported in this browser");if(t.state==="insecure-context")throw new Error("Push requires a secure context (HTTPS)");if(t.state==="denied")throw new Error("Notification permission previously denied");if(await Notification.requestPermission()!=="granted")throw new Error("Notification permission was not granted");const r=await navigator.serviceWorker.register("/sw.js");await navigator.serviceWorker.ready;const i=await r.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:tPe(e.vapidPublicKey)}),s=i.toJSON(),o=s.endpoint??i.endpoint,a=s.keys??{};if(!o||!a.p256dh||!a.auth)throw new Error("Subscription returned without endpoint or keys");const l=navigator.userAgent??"",{id:d}=await e.sendToServer({subscription:{endpoint:o,keys:{p256dh:a.p256dh,auth:a.auth}},label:nPe(l),userAgent:l});return d}async function iPe(e){const n=await(await navigator.serviceWorker.ready).pushManager.getSubscription();n&&await n.unsubscribe(),await e.sendToServer(e.pushDeviceId)}typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",e=>{const t=e.data;(t==null?void 0:t.type)==="kanna.navigate"&&typeof t.url=="string"&&(window.location.href=t.url)});const sPe=25e3,oPe=15e3,aPe=4e3,MF="kanna:profile-send-to-starting";function jF(){try{return window.sessionStorage.getItem(MF)==="1"||window.localStorage.getItem(MF)==="1"}catch{return!1}}class lPe{constructor(t){U(this,"url");U(this,"ws",null);U(this,"started",!1);U(this,"reconnectTimer",null);U(this,"reconnectDelayMs",750);U(this,"subscriptions",new Map);U(this,"pending",new Map);U(this,"outboundQueue",[]);U(this,"statusListeners",new Set);U(this,"heartbeatTimer",null);U(this,"pingTimeoutTimer",null);U(this,"pingPromise",null);U(this,"lastOpenAt",0);U(this,"lastMessageAt",0);U(this,"reconnectImmediatelyOnClose",!1);U(this,"handleWindowFocus",()=>{this.ensureHealthyConnection()});U(this,"handleVisibilityChange",()=>{if(document.visibilityState==="visible"){this.startHeartbeat(),this.ensureHealthyConnection();return}this.stopHeartbeat()});U(this,"handleOnline",()=>{this.ensureHealthyConnection()});this.url=t}start(){this.started||(this.started=!0,window.addEventListener("focus",this.handleWindowFocus),window.addEventListener("online",this.handleOnline),document.addEventListener("visibilitychange",this.handleVisibilityChange),this.connect())}dispose(){var t;this.started=!1,this.reconnectTimer&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHeartbeat(),this.clearPingState(),window.removeEventListener("focus",this.handleWindowFocus),window.removeEventListener("online",this.handleOnline),document.removeEventListener("visibilitychange",this.handleVisibilityChange),(t=this.ws)==null||t.close(),this.ws=null;for(const n of this.pending.values())n.reject(new Error("Socket disposed"));this.pending.clear()}onStatus(t){return this.statusListeners.add(t),t(this.getStatus()),()=>{this.statusListeners.delete(t)}}subscribe(t,n,r){const i=wf(),s={topic:t,listener:n,eventListener:r};return this.subscriptions.set(i,s),this.enqueue({v:1,type:"subscribe",id:i,topic:t}),()=>{this.subscriptions.delete(i),this.enqueue({v:1,type:"unsubscribe",id:i})}}subscribeTerminal(t,n){const r=wf(),i={type:"terminal",terminalId:t},s={topic:i,listener:n.onSnapshot,eventListener:n.onEvent};return this.subscriptions.set(r,s),this.enqueue({v:1,type:"subscribe",id:r,topic:i}),()=>{this.subscriptions.delete(r),this.enqueue({v:1,type:"unsubscribe",id:r})}}command(t){const n=wf(),r={v:1,type:"command",id:n,command:t};return new Promise((i,s)=>{this.pending.set(n,{resolve:i,reject:s}),this.enqueue(r)})}setFocusedChat(t){const n=wf();this.enqueue({v:1,type:"command",id:n,command:{type:"push.setFocusedChat",chatId:t}})}ensureHealthyConnection(){return!this.ws||this.ws.readyState===WebSocket.CLOSED||this.ws.readyState===WebSocket.CLOSING?(this.reconnectNow(),Promise.resolve()):this.ws.readyState===WebSocket.CONNECTING||!this.isConnectionStale()?Promise.resolve():this.sendPing()}connect(){this.started&&(this.emitStatus("connecting"),this.ws=new WebSocket(this.url),this.ws.addEventListener("open",()=>{this.reconnectDelayMs=750,this.reconnectImmediatelyOnClose=!1,this.lastOpenAt=Date.now(),this.lastMessageAt=this.lastOpenAt,this.emitStatus("connected"),this.startHeartbeat();for(const[n,r]of this.subscriptions.entries())this.sendNow({v:1,type:"subscribe",id:n,topic:r.topic});for(;this.outboundQueue.length>0;){const n=this.outboundQueue.shift();n&&this.sendNow(n)}const t=uZ();t&&this.sendNow({v:1,type:"command",id:wf(),command:{type:"push.identifyDevice",pushDeviceId:t}})}),this.ws.addEventListener("message",t=>{var s,o;this.lastMessageAt=Date.now();const n=performance.now(),r=String(t.data);let i;try{i=JSON.parse(r)}catch{return}if(jF()&&i.type==="snapshot"&&i.snapshot.type==="chat"&&((s=i.snapshot.data)==null?void 0:s.runtime.status)==="starting"&&Qs.debug("[kanna/send->starting][client-ws]",{stage:"socket_message_received",receivedAt:n,payloadBytes:r.length,chatId:i.snapshot.data.runtime.chatId,status:i.snapshot.data.runtime.status,messageCount:i.snapshot.data.messages.length}),jF()&&i.type==="ack"&&Qs.debug("[kanna/send->starting][client-ws]",{stage:"socket_ack_received",receivedAt:n,payloadBytes:r.length,commandId:i.id}),i.type==="snapshot"){const a=this.subscriptions.get(i.id);a==null||a.listener(i.snapshot.data);return}if(i.type==="event"){const a=this.subscriptions.get(i.id);(o=a==null?void 0:a.eventListener)==null||o.call(a,i.event);return}if(i.type==="ack"){const a=this.pending.get(i.id);if(!a)return;this.pending.delete(i.id),a.resolve(i.result);return}if(i.type==="error"){if(!i.id){Qs.error(_fe,i.message);return}const a=this.pending.get(i.id);if(!a)return;this.pending.delete(i.id),a.reject(new Error(i.message))}}),this.ws.addEventListener("close",()=>{if(!this.started)return;const t=this.reconnectImmediatelyOnClose;this.reconnectImmediatelyOnClose=!1,this.stopHeartbeat(),this.clearPingState(),this.emitStatus("disconnected");for(const n of this.pending.values())n.reject(new Error("Disconnected"));if(this.pending.clear(),t){this.connect();return}this.scheduleReconnect()}))}scheduleReconnect(){this.reconnectTimer===null&&(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect(),this.reconnectDelayMs=Math.min(this.reconnectDelayMs*2,5e3)},this.reconnectDelayMs))}getStatus(){var t,n;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN?"connected":((n=this.ws)==null?void 0:n.readyState)===WebSocket.CONNECTING?"connecting":"disconnected"}emitStatus(t){for(const n of this.statusListeners)n(t)}isConnectionStale(){const t=Math.max(this.lastMessageAt,this.lastOpenAt);return t>0&&Date.now()-t>=sPe}sendPing(){if(this.pingPromise)return this.pingPromise;const t=this.command({type:"system.ping"}).then(()=>{this.clearPingState()}).catch(n=>{throw this.clearPingState(),this.reconnectNow(),n});return this.pingTimeoutTimer=window.setTimeout(()=>{this.clearPingState(),this.reconnectNow()},aPe),this.pingPromise=t,t}reconnectNow(){if(this.reconnectTimer!==null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),!this.ws||this.ws.readyState===WebSocket.CLOSED){this.connect();return}this.ws.readyState!==WebSocket.CONNECTING&&(this.reconnectImmediatelyOnClose=!0,this.ws.close())}startHeartbeat(){document.visibilityState==="visible"&&this.heartbeatTimer===null&&(this.heartbeatTimer=window.setInterval(()=>{var t;if(document.visibilityState!=="visible"){this.stopHeartbeat();return}((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN&&this.ensureHealthyConnection()},oPe))}stopHeartbeat(){this.heartbeatTimer!==null&&(window.clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}clearPingState(){this.pingTimeoutTimer!==null&&(window.clearTimeout(this.pingTimeoutTimer),this.pingTimeoutTimer=null),this.pingPromise=null}enqueue(t){var n;if(((n=this.ws)==null?void 0:n.readyState)===WebSocket.OPEN){this.sendNow(t);return}this.outboundQueue.push(t)}sendNow(t){var n;(n=this.ws)==null||n.send(JSON.stringify(t))}}const cPe=[],z1=tr()(e=>({byChat:{},setRuns:(t,n)=>e(r=>({byChat:{...r.byChat,[t]:n}}))}));function hL(e){return t=>t.byChat[e]??cPe}const dZ=[],fZ=tr()(e=>({runs:dZ,setRuns:t=>e({runs:t})}));function uPe(e){return e.runs??dZ}const dPe=[],O0=tr()(e=>({models:dPe,status:"idle",error:null,setLoading:()=>e({status:"loading",error:null}),setModels:t=>e({models:t,status:"ready",error:null}),setError:t=>e({status:"error",error:t})})),fPe=[],hPe=[],pPe={},mPe={starredProjectGroups:[],projectGroups:[],stacks:[]};function gPe(){return typeof window>"u"?null:window.sessionStorage.getItem("kanna:ui-update-restart")}const me=tr()(e=>({sidebarData:mPe,optimisticSidebarProjectOrder:null,localProjects:null,updateSnapshot:null,uiRestartPhase:gPe(),chatSnapshot:null,olderHistoryEntries:hPe,isHistoryLoading:!1,historyCursor:null,hasOlderHistory:!1,projectDiffSnapshots:pPe,keybindings:null,appSettings:null,pushConfig:null,llmProvider:null,connectionStatus:"connecting",sidebarReady:!1,localProjectsReady:!1,chatReady:!1,selectedProjectId:null,sidebarOpen:!1,sidebarCollapsed:!1,addProjectModalOpen:!1,commandError:null,startingLocalPath:null,pendingChatId:null,optimisticUserPrompts:fPe,optimisticProcessing:null,focusEpoch:0,setSidebarData:t=>e({sidebarData:t}),setOptimisticSidebarProjectOrder:t=>e(n=>({optimisticSidebarProjectOrder:typeof t=="function"?t(n.optimisticSidebarProjectOrder):t})),setLocalProjects:t=>e({localProjects:t}),setUpdateSnapshot:t=>e({updateSnapshot:t}),setUiRestartPhase:t=>e({uiRestartPhase:t}),setChatSnapshot:t=>e(n=>({chatSnapshot:typeof t=="function"?t(n.chatSnapshot):t})),setOlderHistoryEntries:t=>e(n=>({olderHistoryEntries:typeof t=="function"?t(n.olderHistoryEntries):t})),setIsHistoryLoading:t=>e({isHistoryLoading:t}),setHistoryCursor:t=>e({historyCursor:t}),setHasOlderHistory:t=>e({hasOlderHistory:t}),setProjectDiffSnapshots:t=>e(n=>({projectDiffSnapshots:typeof t=="function"?t(n.projectDiffSnapshots):t})),setKeybindings:t=>e({keybindings:t}),setAppSettings:t=>e({appSettings:t}),setPushConfig:t=>e({pushConfig:t}),setLlmProvider:t=>e({llmProvider:t}),setConnectionStatus:t=>e({connectionStatus:t}),setSidebarReady:t=>e({sidebarReady:t}),setLocalProjectsReady:t=>e({localProjectsReady:t}),setChatReady:t=>e({chatReady:t}),setSelectedProjectId:t=>e({selectedProjectId:t}),setSidebarOpen:t=>e({sidebarOpen:t}),setSidebarCollapsed:t=>e({sidebarCollapsed:t}),setAddProjectModalOpen:t=>e({addProjectModalOpen:t}),setCommandError:t=>e({commandError:t}),setStartingLocalPath:t=>e({startingLocalPath:t}),setPendingChatId:t=>e({pendingChatId:t}),setOptimisticUserPrompts:t=>e(n=>({optimisticUserPrompts:typeof t=="function"?t(n.optimisticUserPrompts):t})),setOptimisticProcessing:t=>e(n=>({optimisticProcessing:typeof t=="function"?t(n.optimisticProcessing):t})),incrementFocusEpoch:()=>e(t=>({focusEpoch:t.focusEpoch+1}))}));function vPe(e,t){const n=["claude","codex","openrouter"];for(const r of n)if(e[r]!==t[r])return!1;return!0}function bPe(e,t){return e===t?!0:!e||!t?!1:e.chatId===t.chatId&&e.projectId===t.projectId&&e.localPath===t.localPath&&e.title===t.title&&e.status===t.status&&e.isDraining===t.isDraining&&e.provider===t.provider&&e.planMode===t.planMode&&vPe(e.sessionTokensByProvider,t.sessionTokensByProvider)}function xPe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>{var i;return n._id===((i=t[r])==null?void 0:i._id)})}function yPe(e,t){return t.length===0?e:e.map(n=>n.id!=="openrouter"?n:{...n,models:t.map(r=>({id:r.id,label:r.label,supportsEffort:!1}))})}function _Pe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>{var i;return n.id===((i=t[r])==null?void 0:i.id)})}function SPe(e,t){return e===t?!0:!e||!t?!1:e.hasOlder===t.hasOlder&&e.olderCursor===t.olderCursor&&e.recentLimit===t.recentLimit}function wPe(e,t){return e.id===t.id&&e.content===t.content&&e.createdAt===t.createdAt&&e.provider===t.provider&&e.model===t.model&&e.planMode===t.planMode&&JSON.stringify(e.modelOptions)===JSON.stringify(t.modelOptions)&&CPe(e.attachments,t.attachments)}function CPe(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,r)=>{const i=t[r];return!!i&&n.id===i.id&&n.kind===i.kind&&n.displayName===i.displayName&&n.absolutePath===i.absolutePath&&n.relativePath===i.relativePath&&n.contentUrl===i.contentUrl&&n.mimeType===i.mimeType&&n.size===i.size})}function kPe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>wPe(n,t[r]))}function EPe(e,t){var s,o;if(e===t)return!0;if(!e||!t||e.status!==t.status||e.branchName!==t.branchName||e.defaultBranchName!==t.defaultBranchName||e.hasOriginRemote!==t.hasOriginRemote||e.originRepoSlug!==t.originRepoSlug||e.hasUpstream!==t.hasUpstream||e.aheadCount!==t.aheadCount||e.behindCount!==t.behindCount||e.lastFetchedAt!==t.lastFetchedAt)return!1;const n=((s=e.branchHistory)==null?void 0:s.entries)??[],r=((o=t.branchHistory)==null?void 0:o.entries)??[];return n.length!==r.length||!n.every((a,l)=>{const d=r[l];return!!d&&a.sha===d.sha&&a.summary===d.summary&&a.description===d.description&&a.authorName===d.authorName&&a.authoredAt===d.authoredAt&&a.githubUrl===d.githubUrl&&a.tags.length===d.tags.length&&a.tags.every((h,p)=>h===d.tags[p])})||e.files.length!==t.files.length?!1:e.files.every((a,l)=>{const d=t.files[l];return!!d&&a.path===d.path&&a.changeType===d.changeType&&a.isUntracked===d.isUntracked&&a.additions===d.additions&&a.deletions===d.deletions&&a.patchDigest===d.patchDigest&&a.mimeType===d.mimeType&&a.size===d.size})}function NPe(e,t){return!!(e&&e.status!=="unknown"&&t&&t.status==="unknown"&&t.files.length===0)}function TPe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{const s=e[i],o=t[i];return!s||!o?!1:s.state===o.state&&s.scheduledAt===o.scheduledAt&&s.resetAt===o.resetAt&&s.detectedAt===o.detectedAt&&s.tz===o.tz})}function APe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{const s=e[i],o=t[i];return!s||!o?!1:s.state===o.state&&s.url===o.url&&s.error===o.error&&s.port===o.port&&s.activatedAt===o.activatedAt&&s.stoppedAt===o.stoppedAt})}function RPe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{var a,l,d,h,p,m;const s=e[i],o=t[i];return!s||!o?!1:s.status===o.status&&s.entries.length===o.entries.length&&(s.finalText??"")===(o.finalText??"")&&(((a=s.pendingTool)==null?void 0:a.toolUseId)??null)===(((l=o.pendingTool)==null?void 0:l.toolUseId)??null)&&(((d=s.usage)==null?void 0:d.outputTokens)??null)===(((h=o.usage)==null?void 0:h.outputTokens)??null)&&s.finishedAt===o.finishedAt&&(((p=s.error)==null?void 0:p.code)??null)===(((m=o.error)==null?void 0:m.code)??null)})}function MPe(e,t){if(e===t)return!0;if(e.armed!==t.armed||e.rows.length!==t.rows.length||!e.rows.every((s,o)=>{const a=t.rows[o];return a!=null&&s.runId===a.runId&&s.status===a.status&&s.label===a.label}))return!1;const r=e.rateLimit,i=t.rateLimit;return r==null!=(i==null)?!1:r&&i?r.resetAt===i.resetAt&&r.scheduled===i.scheduled:!0}function jPe(e,t){return e===t?!0:!e||!t?!1:bPe(e.runtime,t.runtime)&&kPe(e.queuedMessages,t.queuedMessages)&&xPe(e.messages,t.messages)&&SPe(e.history,t.history)&&_Pe(e.availableProviders,t.availableProviders)&&TPe(e.schedules,t.schedules)&&e.liveScheduleId===t.liveScheduleId&&APe(e.tunnels,t.tunnels)&&e.liveTunnelId===t.liveTunnelId&&RPe(e.subagentRuns,t.subagentRuns)&&MPe(e.loopProgress,t.loopProgress)}function IF(e,t){const n=new Map;for(const r of e)n.set(r._id,r);for(const r of t)n.set(r._id,r);return[...n.values()]}function IPe(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if((n==null?void 0:n.kind)==="user_prompt"&&n.content.trim().length>0)return n.content}return null}const PF="__new_chat__",hZ="lever-theme",pZ="chat-sound-preferences",mZ="terminal-preferences",gZ="chat-preferences";function jT(e){if(typeof window>"u")return null;const t=window.localStorage.getItem(e);if(!t)return null;try{const n=JSON.parse(t);return Hi(n.state)?n.state:null}catch{return null}}function PPe(){if(typeof window>"u")return null;const e={},t=window.localStorage.getItem(hZ);(t==="light"||t==="dark"||t==="system")&&(e.theme=t);const n=jT(pZ);((n==null?void 0:n.chatSoundPreference)==="never"||(n==null?void 0:n.chatSoundPreference)==="unfocused"||(n==null?void 0:n.chatSoundPreference)==="always")&&(e.chatSoundPreference=n.chatSoundPreference),((n==null?void 0:n.chatSoundId)==="blow"||(n==null?void 0:n.chatSoundId)==="bottle"||(n==null?void 0:n.chatSoundId)==="frog"||(n==null?void 0:n.chatSoundId)==="funk"||(n==null?void 0:n.chatSoundId)==="glass"||(n==null?void 0:n.chatSoundId)==="ping"||(n==null?void 0:n.chatSoundId)==="pop"||(n==null?void 0:n.chatSoundId)==="purr"||(n==null?void 0:n.chatSoundId)==="tink")&&(e.chatSoundId=n.chatSoundId);const r=jT(mZ);if(r){e.terminal={},typeof r.scrollbackLines=="number"&&(e.terminal.scrollbackLines=r.scrollbackLines),typeof r.minColumnWidth=="number"&&(e.terminal.minColumnWidth=r.minColumnWidth);const s={};(r.editorPreset==="cursor"||r.editorPreset==="vscode"||r.editorPreset==="xcode"||r.editorPreset==="windsurf"||r.editorPreset==="custom")&&(s.preset=r.editorPreset),typeof r.editorCommandTemplate=="string"&&(s.commandTemplate=r.editorCommandTemplate),Object.keys(s).length>0&&(e.editor=s)}const i=jT(gZ);if(((i==null?void 0:i.defaultProvider)==="last_used"||(i==null?void 0:i.defaultProvider)==="claude"||(i==null?void 0:i.defaultProvider)==="codex")&&(e.defaultProvider=i.defaultProvider),Hi(i==null?void 0:i.providerDefaults)){const s=i.providerDefaults;e.providerDefaults=s}return e.browserSettingsMigrated=!0,Object.keys(e).length>1?e:null}function LPe(){typeof window>"u"||(window.localStorage.removeItem(hZ),window.localStorage.removeItem(pZ),window.localStorage.removeItem(mZ),window.localStorage.removeItem(gZ))}function Cv(e){jr.getState().setFromServer(e);const t=Ss.getState();t.setScrollbackLines(e.terminal.scrollbackLines),t.setMinColumnWidth(e.terminal.minColumnWidth),t.setEditorPreset(e.editor.preset),t.setEditorCommandTemplate(e.editor.commandTemplate);const n=Rf.getState();n.setChatSoundPreference(e.chatSoundPreference),n.setChatSoundId(e.chatSoundId),Ns.getState().applyServerDefaults(e.defaultProvider,e.providerDefaults)}function OPe(e){return JSON.stringify({id:e.id,kind:e.kind,displayName:e.displayName,relativePath:e.relativePath,mimeType:e.mimeType,size:e.size,contentUrl:e.contentUrl})}function pL(e,t=[]){return JSON.stringify({content:e,attachments:t.map(OPe)})}function DPe(e,t){return e.reduce((n,r)=>r.kind!=="user_prompt"?n:n+(pL(r.content,r.attachments??[])===t?1:0),0)}function $Pe(e,t,n){const r=new Map;for(const i of n){if(i.kind!=="user_prompt")continue;const s=pL(i.content,i.attachments??[]);r.set(s,(r.get(s)??0)+1)}return e.filter(i=>i.scopeId!==t?!0:(r.get(i.signature)??0)<i.requiredMatchCount)}function zPe(e,t,n){return e.some(r=>r.id===t)?e.filter(r=>r.id!==t):e}const BPe=200,FPe=500;function LF(e,t){var r;const n=e.find(i=>i.chats.some(s=>s.chatId===t));return n?((r=n.chats.find(i=>i.chatId!==t))==null?void 0:r.chatId)??null:null}function OF(e,t){if(!(t!=null&&t.length)||e.length<=1)return e;const n=new Map(e.map((o,a)=>[o.groupKey,a])),r=new Set,i=t.map(o=>{if(r.has(o))return null;r.add(o);const a=n.get(o);return a===void 0?null:e[a]}).filter(o=>!!o);if(i.length===0)return e;const s=[...i,...e.filter(o=>!r.has(o.groupKey))];return s.every((o,a)=>o===e[a])?e:s}function UPe(e=document){return e.visibilityState==="visible"&&e.hasFocus()}function HPe(){return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}function WPe(){const e=_.useMemo(()=>new lPe(HPe()),[]);return _.useEffect(()=>(e.start(),()=>{e.dispose()}),[e]),e}const DF="kanna:profile-send-to-starting";function VPe(){try{return window.sessionStorage.getItem(DF)==="1"||window.localStorage.getItem(DF)==="1"}catch{return!1}}function vZ(e){return Number((performance.now()-e).toFixed(1))}function zu(e,t,n){!e||!VPe()||Qs.debug("[kanna/send->starting][client]",{traceId:e.traceId,stage:t,elapsedMs:vZ(e.startedAt),serverChatId:e.serverChatId,routeChatIdAtSend:e.routeChatIdAtSend,...n})}function KPe(e){var t,n;return(e==null?void 0:e.provider)==="claude"&&e.model&&((t=e.modelOptions)!=null&&t.claude)?{provider:"claude",model:e.model,modelOptions:{reasoningEffort:e.modelOptions.claude.reasoningEffort??"high",contextWindow:e.modelOptions.claude.contextWindow??"200k"},planMode:!!e.planMode}:(e==null?void 0:e.provider)==="codex"&&e.model&&((n=e.modelOptions)!=null&&n.codex)?{provider:"codex",model:e.model,modelOptions:{reasoningEffort:e.modelOptions.codex.reasoningEffort??"high",fastMode:e.modelOptions.codex.fastMode??!1},planMode:!!e.planMode}:null}function GPe(e,t){var n;return t?((n=e.find(r=>r.chats.some(i=>i.chatId===t)))==null?void 0:n.groupKey)??null:null}function qPe(e,t){return e==="awaiting_disconnect"&&t==="disconnected"?"awaiting_server_ready":"none"}function YPe(e,t){return t==="updating"||t==="restart_pending"?{active:!0,label:"Installing update"}:e==="awaiting_disconnect"||e==="awaiting_server_ready"?{active:!0,label:"Re-deploying Kanna"}:{active:!1,label:""}}const XPe=30,mL="kanna:ui-update-restart",bZ="kanna:last-update-reload-request";function JPe(e){return e+XPe}function ZPe(e,t){return t>0?t:e}function $F(){return window.sessionStorage.getItem(mL)}function QPe(e){window.sessionStorage.setItem(mL,e)}function eLe(){window.sessionStorage.removeItem(mL)}function tLe(e,t){return e?String(e)!==t:!1}function nLe(){return window.sessionStorage.getItem(bZ)}function rLe(e){window.sessionStorage.setItem(bZ,String(e))}function iLe(){return"/auth/status"}async function sLe(e=fetch){return(await e(iLe(),{method:"GET",cache:"no-store",headers:{Accept:"application/json"}})).ok}function oLe(e){const t=e.selectedProjectId??e.sidebarProjectId??null;return t?{kind:"project_id",projectId:t}:e.fallbackLocalProjectPath?{kind:"local_path",localPath:e.fallbackLocalProjectPath}:null}function aLe(e,t){return!e||!t?null:e.runtime.chatId!==t?(e.runtime.chatId,e.runtime.provider,null):e}function lLe(e){var co,$s,ya;const t=Ad(),n=WPe(),r=zx(),i=me(q=>q.sidebarData),s=me(q=>q.optimisticSidebarProjectOrder),o=me(q=>q.localProjects),a=me(q=>q.updateSnapshot),l=me(q=>q.uiRestartPhase),d=_.useCallback(q=>{QPe(q),me.getState().setUiRestartPhase(q)},[]),h=_.useCallback(()=>{eLe(),me.getState().setUiRestartPhase(null)},[]),p=me(q=>q.chatSnapshot),m=me(q=>q.olderHistoryEntries),v=me(q=>q.isHistoryLoading),b=me(q=>q.historyCursor),x=me(q=>q.hasOlderHistory),S=me(q=>q.projectDiffSnapshots),C=me(q=>q.keybindings),k=me(q=>q.appSettings),w=me(q=>q.pushConfig),N=me(q=>q.llmProvider),A=me(q=>q.connectionStatus),T=me(q=>q.sidebarReady),M=me(q=>q.localProjectsReady),j=me(q=>q.chatReady),P=me(q=>q.selectedProjectId),D=me(q=>q.sidebarOpen),L=me(q=>q.sidebarCollapsed),I=me(q=>q.addProjectModalOpen),$=me(q=>q.commandError),H=me(q=>q.startingLocalPath),z=me(q=>q.pendingChatId),F=me(q=>q.optimisticUserPrompts),K=me(q=>q.optimisticProcessing),W=me(q=>q.focusEpoch),V=_.useRef(new Map),X=WR(vm(q=>Object.keys(q.drafts).sort())),G=WR(vm(q=>Object.keys(q.attachmentDrafts).sort())),te=_.useRef(0),oe=_.useRef(null),ce=_.useRef({projectId:null,diffs:null}),de=yve(Ss(q=>q.editorPreset)),ee=_.useMemo(()=>OF(i.projectGroups,s),[s,i.projectGroups]),ne=_.useRef(ee);_.useLayoutEffect(()=>{ne.current=ee});const ie=_.useMemo(()=>ee===i.projectGroups?i:{...i,projectGroups:ee},[i,ee]);_.useEffect(()=>n.onStatus(q=>me.getState().setConnectionStatus(q)),[n]),_.useEffect(()=>n.subscribe({type:"sidebar"},q=>{const J=me.getState();J.setSidebarData(q),J.setOptimisticSidebarProjectOrder(be=>be&&OF(q.projectGroups,be)===q.projectGroups?null:be),J.setSidebarReady(!0),J.setCommandError(null)}),[n]),_.useEffect(()=>{if(A!=="connected")return;const q=[...new Set([...X,...G])].sort();n.command({type:"chat.setDraftProtection",chatIds:q}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))})},[G,A,X,n]),_.useEffect(()=>n.subscribe({type:"local-projects"},q=>{const J=me.getState();J.setLocalProjects(q),J.setLocalProjectsReady(!0),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"update"},q=>{const J=me.getState();J.setUpdateSnapshot(q),J.setCommandError(null)}),[n]),_.useEffect(()=>{A==="connected"&&n.command({type:"update.check",force:!0}).catch(q=>{me.getState().setCommandError(q instanceof Error?q.message:String(q))})},[A,n]),_.useEffect(()=>{const q=a==null?void 0:a.reloadRequestedAt;tLe(q,nLe())&&q&&(rLe(q),d("awaiting_disconnect"))},[d,a==null?void 0:a.reloadRequestedAt]),_.useEffect(()=>{const q=$F();qPe(q,A)==="awaiting_server_ready"&&d("awaiting_server_ready")},[A,d]),_.useEffect(()=>{if($F()!=="awaiting_server_ready")return;let q=!1,J=null;const be=async()=>{try{if(await sLe()){if(q)return;h(),window.location.reload();return}}catch{}q||(J=window.setTimeout(()=>{be()},500))};return be(),()=>{q=!0,J!==null&&window.clearTimeout(J)}},[A,h]),_.useEffect(()=>{function q(){a!=null&&a.lastCheckedAt&&(Date.now()-a.lastCheckedAt<=3600*1e3||n.command({type:"update.check"}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))}))}return window.addEventListener("focus",q),()=>{window.removeEventListener("focus",q)}},[n,a==null?void 0:a.lastCheckedAt]),_.useEffect(()=>n.subscribe({type:"keybindings"},q=>{const J=me.getState();J.setKeybindings(q),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"app-settings"},q=>{const J=me.getState();J.setAppSettings(q),Cv(q),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"push-config"},q=>{me.getState().setPushConfig(q)}),[n]),_.useEffect(()=>n.subscribe({type:"pty-instances"},q=>{kc.getState().applySnapshot(q.instances)},q=>{q.type==="pty-instances.added"?kc.getState().applyDiff({op:"added",instance:q.instance}):q.type==="pty-instances.updated"?kc.getState().applyDiff({op:"updated",instance:q.instance}):kc.getState().applyDiff({op:"removed",chatId:q.chatId})}),[n]);const ae=_.useCallback(async()=>{try{jr.getState().setHydrationStatus("loading");const q=await n.command({type:"settings.readAppSettings"}),J=me.getState();J.setAppSettings(q),Cv(q),J.setCommandError(null)}catch(q){jr.getState().setHydrationStatus("error"),me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[n]),Q=_.useCallback(async(q,J)=>{try{await n.command({type:"chat.setPolicyOverride",chatId:q,policyOverride:J}),me.getState().setCommandError(null)}catch(be){throw me.getState().setCommandError(be instanceof Error?be.message:String(be)),be}},[n]),ke=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch(q);const J=await n.command({type:"settings.writeAppSettingsPatch",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),we=_.useCallback(async q=>{try{await n.command({type:"settings.testMcpServer",id:q}),me.getState().setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),J}},[n]),Ae=_.useCallback(async q=>{try{const J=await n.command({type:"settings.startMcpOAuth",id:q});return me.getState().setCommandError(null),J}catch(J){const be=J instanceof Error?J.message:String(J);return me.getState().setCommandError(be),{ok:!1,error:be}}},[n]),Xe=_.useCallback(async(q,J)=>{try{const be=await n.command({type:"settings.completeMcpOAuth",id:q,callbackUrl:J});return me.getState().setCommandError(null),be}catch(be){const Ze=be instanceof Error?be.message:String(be);return me.getState().setCommandError(Ze),{ok:!1,error:Ze}}},[n]),ft=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch({cloudflareTunnel:q});const J=await n.command({type:"appSettings.setCloudflareTunnel",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),Ct=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch({claudeAuth:q});const J=await n.command({type:"appSettings.setClaudeAuth",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),ln=_.useCallback(async q=>await n.command({type:"appSettings.testOAuthToken",token:q}),[n]),en=_.useCallback(async()=>{try{const q=await n.command({type:"settings.readLlmProvider"}),J=me.getState();J.setLlmProvider(q),J.setCommandError(null)}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[n]),bt=_.useCallback(async q=>{try{const J=await n.command({type:"settings.writeLlmProvider",provider:q.provider,apiKey:q.apiKey,model:q.model,baseUrl:q.baseUrl}),be=me.getState();be.setLlmProvider(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),J}},[n]),fn=_.useCallback(async q=>await n.command({type:"settings.validateLlmProvider",provider:q.provider,apiKey:q.apiKey,model:q.model,baseUrl:q.baseUrl}),[n]);_.useEffect(()=>{A==="connected"&&ae()},[A,ae]),_.useEffect(()=>{if(A!=="connected")return;O0.getState().setLoading(),n.command({type:"settings.listOpenRouterModels"}).then(J=>{O0.getState().setModels(J)}).catch(J=>{const be=J instanceof Error?J.message:String(J);O0.getState().setError(be)})},[A,n]),_.useEffect(()=>{if(A!=="connected"||(k==null?void 0:k.browserSettingsMigrated)!==!1)return;const q=PPe();q&&ke(q).then(LPe).catch(()=>{})},[k==null?void 0:k.browserSettingsMigrated,A,ke]),_.useEffect(()=>{A==="connected"&&en()},[A,en]),_.useEffect(()=>{function q(){me.getState().incrementFocusEpoch()}return window.addEventListener("focus",q),document.addEventListener("visibilitychange",q),()=>{window.removeEventListener("focus",q),document.removeEventListener("visibilitychange",q)}},[]),_.useEffect(()=>{if(!e){me.getState().setChatSnapshot(null),me.getState().setChatReady(!0);return}++te.current,ne.current.length,ne.current.reduce((J,be)=>J+be.chats.length,0),me.getState().setChatSnapshot(null),me.getState().setChatReady(!1);const q=n.subscribe({type:"chat",chatId:e,recentLimit:BPe},J=>{if(J!=null&&J.runtime.chatId){const Ze=[...V.current.values()].filter(hn=>hn.serverChatId===J.runtime.chatId).sort((hn,Ir)=>Ir.startedAt-hn.startedAt)[0];Ze&&Ze.snapshotAt===void 0&&(Ze.snapshotAt=performance.now(),zu(Ze,"chat_snapshot_received",{status:J.runtime.status,messageCount:J.messages.length}))}me.getState().setChatSnapshot(Ze=>{const hn=jPe(Ze,J);return J==null||J.runtime.chatId,J==null||J.runtime.provider,J==null||J.runtime.status,J==null||J.messages.length,hn?Ze:J});const be=me.getState();if(be.setHistoryCursor((J==null?void 0:J.history.olderCursor)??null),be.setHasOlderHistory((J==null?void 0:J.history.hasOlder)??!1),be.setChatReady(!0),be.setCommandError(null),J){const Ze=uL.getState();Ze.setForChat(J.runtime.chatId,J.slashCommands??[]),Ze.setLoadingForChat(J.runtime.chatId,J.slashCommandsLoading??!1)}});return()=>{ne.current.length,ne.current.reduce((J,be)=>J+be.chats.length,0),q()}},[e,n]),_.useEffect(()=>{if(e)return n.subscribe({type:"workflows",chatId:e},q=>{z1.getState().setRuns(q.chatId,q.runs)})},[e,n]),_.useEffect(()=>n.subscribe({type:"orch-runs"},q=>{fZ.getState().setRuns(q.runs)}),[n]),_.useEffect(()=>{if(P)return;const q=ee[0];q&&me.getState().setSelectedProjectId(q.groupKey)},[P,ee]),_.useEffect(()=>{if(!e||!T||!j)return;if(ee.some(J=>J.chats.some(be=>be.chatId===e))){z===e&&me.getState().setPendingChatId(null);return}z!==e&&t("/")},[e,j,t,z,ee,T]),_.useEffect(()=>{p&&(me.getState().setSelectedProjectId(p.runtime.projectId),z===p.runtime.chatId&&me.getState().setPendingChatId(null))},[p,z]),_.useEffect(()=>{if(!e||!T||!UPe())return;const q=ee.flatMap(J=>J.chats).find(J=>J.chatId===e);q!=null&&q.unread&&n.command({type:"chat.markRead",chatId:e}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))})},[e,W,ee,T,n]),_.useEffect(()=>{const q=me.getState();q.setOlderHistoryEntries([]),q.setIsHistoryLoading(!1),q.setHistoryCursor(null),q.setHasOlderHistory(!1)},[e]);const qe=_.useMemo(()=>aLe(p,e),[e,p]),Ht=_.useMemo(()=>(qe==null?void 0:qe.runtime.projectId)??GPe(ee,e)??P,[e,qe==null?void 0:qe.runtime.projectId,P,ee]),cn=_.useMemo(()=>{const q=Ht?S[Ht]??null:null;return Ht&&q?(ce.current={projectId:Ht,diffs:q},q):Ht&&ce.current.projectId===Ht?ce.current.diffs:q},[Ht,S]);_.useEffect(()=>Ht?n.subscribe({type:"project-git",projectId:Ht},J=>{me.getState().setProjectDiffSnapshots(be=>{const Ze=J??null;return NPe(be[Ht]??null,Ze)||EPe(be[Ht]??null,Ze)?be:{...be,[Ht]:Ze}}),me.getState().setCommandError(null)}):void 0,[Ht,n]),_.useEffect(()=>{p==null||p.runtime.chatId,p==null||p.runtime.provider,qe==null||qe.runtime.chatId,qe==null||qe.runtime.provider},[e,qe,p,z]);const wt=_.useMemo(()=>IF(m,(qe==null?void 0:qe.messages)??[]),[qe==null?void 0:qe.messages,m]),zt=e??PF,tn=_.useMemo(()=>F.filter(q=>q.scopeId===zt).map(q=>q.entry),[zt,F]),Yt=_.useMemo(()=>[...wt,...tn],[tn,wt]),Kt=_.useMemo(()=>$1(Yt),[Yt]),sn=_.useMemo(()=>IPe(Kt),[Kt]),Nn=_.useMemo(()=>qIe(Kt),[Kt]),Ue=(qe==null?void 0:qe.runtime)??null,un=(qe==null?void 0:qe.queuedMessages)??[],kt=((K==null?void 0:K.scopeId)===zt&&(!Ue||Ue.status==="idle")?"starting":null)??(Ue==null?void 0:Ue.status)??null,Xt=(qe==null?void 0:qe.availableProviders)??Lb,Ce=O0(vm(q=>q.models)),rt=_.useMemo(()=>yPe(Xt,Ce),[Xt,Ce]),gt=XIe(kt??void 0),it=YIe(kt??void 0),jt=(Ue==null?void 0:Ue.isDraining)??!1,Bt=((co=o==null?void 0:o.projects[0])==null?void 0:co.localPath)??null,Et=(Ue==null?void 0:Ue.localPath)??Bt??(($s=ee[0])==null?void 0:$s.localPath),Lt=!!(P??(Ue==null?void 0:Ue.projectId)??((ya=ee[0])==null?void 0:ya.groupKey)??Bt);_.useEffect(()=>{(K==null?void 0:K.scopeId)===zt&&Ue!=null&&Ue.status&&Ue.status!=="idle"&&me.getState().setOptimisticProcessing(null)},[K,zt,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!(K!=null&&K.ackedAt)||K.scopeId!==zt||Ue!=null&&Ue.status&&Ue.status!=="idle")return;const q=K.ackedAt,J=window.setTimeout(()=>{me.getState().setOptimisticProcessing(be=>(be==null?void 0:be.scopeId)===zt&&be.ackedAt===q?null:be)},300);return()=>window.clearTimeout(J)},[K,zt,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!e||(Ue==null?void 0:Ue.status)!=="starting")return;const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];!q||q.startingStatusAt!==void 0||(q.startingStatusAt=performance.now(),zu(q,"runtime_status_starting",{status:Ue.status}))},[e,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!e||!Ue||Ue.status==="starting")return;const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];!q||q.startingRenderedAt!==void 0||(zu(q,"starting_not_observed",{status:Ue.status}),V.current.delete(q.traceId))},[e,Ue]),_.useLayoutEffect(()=>{if(!e||(Ue==null?void 0:Ue.status)!=="starting"){oe.current=null;return}const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];q&&oe.current!==q.traceId&&(oe.current=q.traceId,q.startingRenderedAt=performance.now(),zu(q,"starting_render_committed",{totalMs:vZ(q.startedAt)}),V.current.delete(q.traceId))},[e,Ue==null?void 0:Ue.status]),_.useEffect(()=>{me.getState().setOptimisticUserPrompts(q=>{const J=$Pe(q,zt,wt);return J.length===q.length&&J.every((be,Ze)=>be===q[Ze])?q:J})},[zt,wt]);const nn=_.useCallback(async()=>{if(!(!e||!b||v||!x)){me.getState().setIsHistoryLoading(!0);try{const q=await n.command({type:"chat.loadHistory",chatId:e,beforeCursor:b,limit:FPe}),J=me.getState();J.setOlderHistoryEntries(be=>IF(q.messages,be)),J.setHistoryCursor(q.olderCursor),J.setHasOlderHistory(q.hasOlder),J.setCommandError(null)}catch(q){const J=q instanceof Error?q.message:String(q);me.getState().setCommandError(J)}finally{me.getState().setIsHistoryLoading(!1)}}},[e,x,b,v,n]),$t=_.useCallback(async q=>{const J=Ns.getState(),be=e?J.getComposerState(e):J.getComposerState(vb),Ze=await n.command({type:"chat.create",projectId:q});J.initializeComposerForChat(Ze.chatId,{sourceState:be});const hn=me.getState();hn.setSelectedProjectId(q),hn.setPendingChatId(Ze.chatId),t(`/chat/${Ze.chatId}`),hn.setSidebarOpen(!1),hn.setCommandError(null)},[e,t,n]),re=_.useCallback(async q=>q.kind==="project_id"?{projectId:q.projectId}:q.kind==="local_path"?{projectId:(await n.command({type:"project.open",localPath:q.localPath})).projectId,localPath:q.localPath}:{projectId:(await n.command(q.project.mode==="new"?{type:"project.create",localPath:q.project.localPath,title:q.project.title}:{type:"project.open",localPath:q.project.localPath})).projectId,localPath:q.project.localPath},[n]),je=_.useCallback(async q=>{try{let J;q.kind==="project_id"?J=null:q.kind==="local_path"?J=q.localPath:J=q.project.localPath,J&&me.getState().setStartingLocalPath(J);const{projectId:be}=await re(q);await $t(be)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}finally{me.getState().setStartingLocalPath(null)}},[$t,re]),ht=_.useCallback(async q=>{await je({kind:"project_id",projectId:q})},[je]),Ne=_.useCallback(async q=>{try{const J=await n.command({type:"chat.fork",chatId:q.chatId}),be=Ns.getState();be.initializeComposerForChat(J.chatId,{sourceState:be.getComposerState(q.chatId)});const Ze=me.getState();Ze.setPendingChatId(J.chatId),t(`/chat/${J.chatId}`),Ze.setSidebarOpen(!1),Ze.setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,n]),We=_.useCallback(async q=>{await je({kind:"local_path",localPath:q})},[je]),Ke=_.useCallback(async q=>{await je({kind:"project_request",project:q})},[je]),Je=_.useCallback(async q=>{try{await n.command({type:"update.check",force:q==null?void 0:q.force}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),pt=_.useCallback(async q=>{d("awaiting_disconnect");try{const J=await n.command({type:"update.install",version:q});if(!J.ok){h(),me.getState().setCommandError(null),await r.alert({title:J.userTitle??"Update failed",description:J.userMessage??"Kanna could not install the update. Try again later.",closeLabel:"OK"});return}if(J.ok&&J.action==="reload"){window.location.reload();return}me.getState().setCommandError(null)}catch(J){h(),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[h,r,d,n]),Ot=_.useCallback(async()=>{d("awaiting_disconnect");try{const q=await n.command({type:"update.reload"});if(!q.ok){h(),me.getState().setCommandError(null),await r.alert({title:q.userTitle??"Re-deploy failed",description:q.userMessage??"Kanna could not re-deploy. Try again later.",closeLabel:"OK"});return}if(q.action==="reload"){window.location.reload();return}me.getState().setCommandError(null)}catch(q){h(),me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[h,r,d,n]),xt=_.useCallback(async()=>{try{const q=await fetch("/auth/logout",{method:"POST",headers:{Accept:"application/json"}});if(!q.ok)throw new Error(`Sign out failed with status ${q.status}`);me.getState().setCommandError(null),window.location.reload()}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[]),Be=_.useCallback(async(q,J)=>{var Fe;const be=(J==null?void 0:J.attachments)??[],Ze=wf(),hn=wf(),Ir=pL(q,be),ki=e??PF;me.getState().setOptimisticProcessing({scopeId:ki,ackedAt:null});const qi={traceId:hn,optimisticId:Ze,startedAt:performance.now(),serverChatId:e,routeChatIdAtSend:e,contentPreview:q.slice(0,80)};V.current.set(hn,qi),zu(qi,"handle_send_called",{optimisticScopeId:ki,attachments:be.length,contentLength:q.length,contentPreview:qi.contentPreview});const Ee=DPe(wt,Ir)+F.filter(B=>B.scopeId===ki&&B.signature===Ir).length+1;me.getState().setOptimisticUserPrompts(B=>[...B,{id:Ze,scopeId:ki,signature:Ir,requiredMatchCount:Ee,entry:{_id:`optimistic:${Ze}`,kind:"user_prompt",content:q,attachments:be,createdAt:Date.now()}}]),zu(qi,"optimistic_prompt_added",{optimisticId:Ze,optimisticScopeId:ki});try{let B=P??((Fe=ee[0])==null?void 0:Fe.groupKey)??null;if(!e&&!B&&Bt&&(B=(await n.command({type:"project.open",localPath:Bt})).projectId,me.getState().setSelectedProjectId(B)),!e&&!B)throw new Error("Open a project first");const ze=VR.getState().autoResumeOnRateLimit,yt=await n.command({type:"chat.send",chatId:e??void 0,projectId:e?void 0:B??void 0,clientTraceId:hn,provider:J==null?void 0:J.provider,content:q,attachments:be,model:J==null?void 0:J.model,modelOptions:J==null?void 0:J.modelOptions,planMode:J==null?void 0:J.planMode,autoResumeOnRateLimit:ze});if(qi.ackAt=performance.now(),qi.serverChatId=yt.chatId??qi.serverChatId,yt.queued?(me.getState().setOptimisticUserPrompts(yr=>zPe(yr,Ze,{queued:!0})),me.getState().setOptimisticProcessing(null)):me.getState().setOptimisticProcessing(yr=>yr&&{scopeId:!e&&yt.chatId?yt.chatId:yr.scopeId,ackedAt:performance.now()}),zu(qi,"chat_send_ack_received",{resultChatId:yt.chatId??null,queued:yt.queued??!1}),!e&&yt.chatId){me.getState().setOptimisticUserPrompts(Fd=>Fd.map(_a=>_a.id===Ze?{..._a,scopeId:yt.chatId}:_a));const yr=Ns.getState();yr.setComposerState(yt.chatId,KPe(J)??yr.getComposerState(vb)),me.getState().setPendingChatId(yt.chatId),t(`/chat/${yt.chatId}`)}me.getState().setCommandError(null)}catch(B){throw me.getState().setOptimisticUserPrompts(ze=>ze.filter(yt=>yt.id!==Ze)),me.getState().setOptimisticProcessing(null),zu(qi,"handle_send_failed",{error:B instanceof Error?B.message:String(B)}),V.current.delete(hn),me.getState().setCommandError(B instanceof Error?B.message:String(B)),B}},[e,Bt,t,F,P,wt,ee,n]),Ft=_.useCallback(async q=>{if(!e)return;const J=e;me.getState().setOptimisticProcessing({scopeId:J,ackedAt:null});try{await n.command({type:"message.steer",chatId:e,queuedMessageId:q}),me.getState().setOptimisticProcessing(be=>(be==null?void 0:be.scopeId)===J?{scopeId:J,ackedAt:performance.now()}:be),me.getState().setCommandError(null)}catch(be){me.getState().setOptimisticProcessing(null),me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,n]),Ln=_.useCallback(async q=>{if(e)try{await n.command({type:"message.dequeue",chatId:e,queuedMessageId:q}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[e,n]),Gt=_.useCallback(async()=>{if(e)try{await n.command({type:"chat.cancel",chatId:e})}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[e,n]),Jt=_.useCallback(async()=>{if(e)try{await n.command({type:"chat.stopDraining",chatId:e})}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[e,n]),xr=_.useCallback(async q=>{const J=await r.prompt({title:"Rename Chat",initialValue:q.title,confirmLabel:"Rename"});if(!(!J||J===q.title))try{await n.command({type:"chat.rename",chatId:q.chatId,title:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[r,n]),In=_.useCallback(async q=>{if(await r.confirm({title:"Delete Chat",description:`Delete "${q.title}"? This cannot be undone.`,confirmLabel:"Delete",confirmVariant:"destructive"}))try{if(await n.command({type:"chat.delete",chatId:q.chatId}),q.chatId===e){const be=LF(ee,q.chatId);t(be?`/chat/${be}`:"/")}}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,r,t,ee,n]),Gn=_.useCallback(async q=>{try{if(await n.command({type:"chat.archive",chatId:q.chatId}),q.chatId===e){const J=LF(ee,q.chatId);t(J?`/chat/${J}`:"/")}me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[e,t,ee,n]),qn=_.useCallback(async q=>{try{me.getState().setPendingChatId(q),await n.command({type:"chat.unarchive",chatId:q}),t(`/chat/${q}`),me.getState().setCommandError(null)}catch(J){me.getState().setPendingChatId(null),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,n]),ye=_.useCallback(async q=>{try{await n.command({type:"project.remove",projectId:q}),Gu.getState().clearProject(q),Ks.getState().clearProject(q),(Ue==null?void 0:Ue.projectId)===q&&t("/"),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,Ue,n]),Qe=_.useCallback(async(q,J)=>{try{await n.command({type:"project.setStar",projectId:q,starred:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),zn=_.useCallback(async q=>{me.getState().setOptimisticSidebarProjectOrder(q);try{await n.command({type:"sidebar.reorderProjectGroups",projectIds:q}),me.getState().setCommandError(null)}catch(J){me.getState().setOptimisticSidebarProjectOrder(null),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),Ur=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.create",title:q,projectIds:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),ue=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.rename",stackId:q,title:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),Ye=_.useCallback(async q=>{try{await n.command({type:"stack.remove",stackId:q}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),ct=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.addProject",stackId:q,projectId:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),at=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.removeProject",stackId:q,projectId:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),Mn=_.useCallback(async(q,J,be)=>{try{const Ze=Ns.getState(),hn=e?Ze.getComposerState(e):Ze.getComposerState(vb),Ir=await n.command({type:"chat.create",projectId:q,stackId:J,stackBindings:be});Ze.initializeComposerForChat(Ir.chatId,{sourceState:hn});const ki=me.getState();ki.setSelectedProjectId(q),ki.setPendingChatId(Ir.chatId),t(`/chat/${Ir.chatId}`),ki.setSidebarOpen(!1),ki.setCommandError(null)}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,t,n]),It=_.useCallback(async q=>{try{const J=await n.command({type:"stack.listWorktrees",projectId:q});return me.getState().setCommandError(null),J.worktrees}catch(J){return me.getState().setCommandError(J instanceof Error?J.message:String(J)),[]}},[n]),Hr=_.useCallback(async()=>await n.command({type:"sessions.importClaude"}),[n]),li=_.useCallback(async q=>{const J=Ss.getState();me.getState().setCommandError(null),await n.command({type:"system.openExternal",...q,editor:q.action==="open_editor"?q.editor??{preset:J.editorPreset,commandTemplate:J.editorCommandTemplate}:void 0})},[n]),$l=_.useCallback(async(q,J)=>{var Ze,hn;const be=(Ue==null?void 0:Ue.localPath)??((Ze=o==null?void 0:o.projects[0])==null?void 0:Ze.localPath)??((hn=ee[0])==null?void 0:hn.localPath);if(be)try{await li({action:q,localPath:be,editor:J})}catch(Ir){me.getState().setCommandError(Ir instanceof Error?Ir.message:String(Ir))}},[o==null?void 0:o.projects,li,Ue==null?void 0:Ue.localPath,ee]),Ds=_.useCallback(async q=>{var J;try{if(typeof navigator>"u"||!((J=navigator.clipboard)!=null&&J.writeText))throw new Error("Clipboard is not available");await navigator.clipboard.writeText(q),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[]),va=_.useCallback(async(q,J="open_editor",be)=>{try{await li({action:J,localPath:q.path,line:q.line,column:q.column,editor:be})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[li]),Po=_.useCallback(async(q,J)=>{try{await li({action:q,localPath:J})}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[li]),Dt=_.useCallback(()=>{var J;const q=oLe({selectedProjectId:P,sidebarProjectId:(J=ee[0])==null?void 0:J.groupKey,fallbackLocalProjectPath:Bt});if(q){je(q);return}t("/")},[Bt,t,P,ee,je]),Tn=_.useCallback(()=>me.getState().setSidebarOpen(!0),[]),Yn=_.useCallback(()=>me.getState().setSidebarOpen(!1),[]),Cn=_.useCallback(()=>me.getState().setSidebarCollapsed(!0),[]),ba=_.useCallback(()=>me.getState().setSidebarCollapsed(!1),[]),zl=_.useCallback(()=>me.getState().setAddProjectModalOpen(!0),[]),Xa=_.useCallback(()=>me.getState().setAddProjectModalOpen(!1),[]),gs=_.useCallback(async(q,J,be)=>{if(e)try{await n.command({type:"chat.respondTool",chatId:e,toolUseId:q,result:{questions:J,answers:be}})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,n]),xa=_.useCallback(async(q,J,be,Ze)=>{if(e){J&&Ns.getState().setChatComposerPlanMode(e,!1);try{await n.command({type:"chat.respondTool",chatId:e,toolUseId:q,result:{confirmed:J,...be?{clearContext:!0}:{},...Ze?{message:Ze}:{}}})}catch(hn){me.getState().setCommandError(hn instanceof Error?hn.message:String(hn))}}},[e,n]),uu=_.useCallback(async(q,J,be,Ze)=>{if(e)try{await n.command({type:"chat.respondSubagentTool",chatId:e,runId:q,toolUseId:J,result:{questions:be,answers:Ze}})}catch(hn){me.getState().setCommandError(hn instanceof Error?hn.message:String(hn))}},[e,n]),ci=_.useCallback(async(q,J,be)=>{if(e)try{await n.command({type:"chat.respondSubagentTool",chatId:e,runId:q,toolUseId:J,result:be})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,n]),Ja=_.useCallback(async(q,J)=>{if(e)try{await n.command({type:"chat.toolRequestAnswer",chatId:e,toolRequestId:q,decision:J})}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,n]),Za=YPe(l,a==null?void 0:a.status);return{socket:n,activeChatId:e,activeProjectId:Ht,sidebarData:ie,localProjects:o,updateSnapshot:a,chatSnapshot:p,chatDiffSnapshot:cn,keybindings:C,appSettings:k,pushConfig:w,llmProvider:N,connectionStatus:A,sidebarReady:T,uiRestartActive:Za.active,uiRestartLabel:Za.label,localProjectsReady:M,commandError:$,startingLocalPath:H,sidebarOpen:D,sidebarCollapsed:L,messages:Kt,queuedMessages:un,previousPrompt:sn,latestToolIds:Nn,runtime:Ue,runtimeStatus:kt,isHistoryLoading:v,hasOlderHistory:x,availableProviders:rt,isProcessing:gt,canCancel:it,isDraining:jt,navbarLocalPath:Et,editorLabel:de,hasSelectedProject:Lt,addProjectModalOpen:I,openSidebar:Tn,closeSidebar:Yn,collapseSidebar:Cn,expandSidebar:ba,openAddProjectModal:zl,closeAddProjectModal:Xa,loadOlderHistory:nn,handleCreateChat:ht,handleForkChat:Ne,handleOpenLocalProject:We,handleCreateProject:Ke,handleCheckForUpdates:Je,handleInstallUpdate:pt,handleForceReload:Ot,handleReadAppSettings:ae,handleWriteAppSettings:ke,handleTestMcpServer:we,handleStartMcpOAuth:Ae,handleCompleteMcpOAuth:Xe,handleSetChatPolicyOverride:Q,handleWriteCloudflareTunnel:ft,handleWriteClaudeAuth:Ct,handleTestOAuthToken:ln,handleReadLlmProvider:en,handleWriteLlmProvider:bt,handleValidateLlmProvider:fn,handleSignOut:xt,handleSend:Be,handleSteerQueuedMessage:Ft,handleRemoveQueuedMessage:Ln,handleCancel:Gt,handleStopDraining:Jt,handleRenameChat:xr,handleArchiveChat:Gn,handleOpenArchivedChat:qn,handleDeleteChat:In,handleHideProject:ye,handleToggleProjectStar:Qe,handleReorderProjectGroups:zn,stacks:ie.stacks,handleCreateStack:Ur,handleRenameStack:ue,handleRemoveStack:Ye,handleAddProjectToStack:ct,handleRemoveProjectFromStack:at,handleCreateStackChat:Mn,handleListStackWorktrees:It,importClaudeSessions:Hr,handleCopyPath:Ds,handleOpenExternal:$l,handleOpenExternalPath:Po,handleOpenLocalLink:va,handleCompose:Dt,handleAskUserQuestion:gs,handleExitPlanMode:xa,handleSubagentAskUserQuestion:uu,handleSubagentExitPlanMode:ci,handleToolRequestAnswer:Ja}}const KR=qt("KannaTranscript",()=>e=>({toolGroupExpanded:{},setToolGroupExpanded:(t,n)=>e(r=>r.toolGroupExpanded[t]===n?r:{toolGroupExpanded:{...r.toolGroupExpanded,[t]:n}})})),cLe=new Set([".c",".cc",".cfg",".conf",".cpp",".cs",".css",".diff",".env",".go",".graphql",".h",".hpp",".html",".ini",".java",".js",".json",".jsonc",".jsx",".kt",".log",".lua",".md",".mjs",".patch",".php",".pl",".properties",".py",".rb",".rs",".scss",".sh",".sql",".swift",".toml",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml",".zsh"]),uLe=new Set([".gitignore",".npmrc",".prettierrc",".python-version",".ruby-version",".tool-versions","Dockerfile","Gemfile","Makefile","Procfile"]);function D0(e){if(!e)return;const t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function zF(e){var r,i;const t=/^(?<path>\/.+?)#L(?<line>\d+)(?:C(?<column>\d+))?$/.exec(e);if((r=t==null?void 0:t.groups)!=null&&r.path)return{path:t.groups.path,line:D0(t.groups.line),column:D0(t.groups.column)};const n=/^(?<path>\/.+?):(?<line>\d+)(?::(?<column>\d+))?$/.exec(e);return(i=n==null?void 0:n.groups)!=null&&i.path?{path:n.groups.path,line:D0(n.groups.line),column:D0(n.groups.column)}:e.startsWith("/")?{path:e}:null}function dLe(e){if(!e)return null;const t=e.trim();if(!t||/^(mailto:|ftp:|file:)/i.test(t))return null;if(/^https?:/i.test(t)){if(typeof window>"u")return null;try{const n=new URL(t);return n.origin!==window.location.origin||!n.pathname.startsWith("/")?null:zF(`${n.pathname}${n.hash}`)}catch{return null}}return zF(t)}function fLe(e){const t=e.split(/[\\/]/);for(;t.length>0&&t[t.length-1]==="";)t.pop();const n=t.length>0?t[t.length-1]:e;if(uLe.has(n))return!0;const r=n.lastIndexOf(".");if(r<0)return!0;const i=n.slice(r).toLowerCase();return cLe.has(i)}const hLe=["/Users/","/home/","/private/","/tmp/","/var/","/opt/","/root/"];function pLe(e){return e?e.startsWith("file://")?!0:hLe.some(t=>e.startsWith(t)):!1}function xZ(e){let t=e;if(t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.slice(7)}return`/api/local-file?path=${encodeURIComponent(t)}`}function ud(e,t){if(!e)return"";if(t){const n=t.endsWith("/")?t:`${t}/`;if(e.startsWith(n))return e.slice(n.length);if(e===t)return""}return e.replace(/^\/home\/user\/workspace\//,"")}const BF=/<thinking>([\s\S]*?)<\/thinking>/gi;function mLe(e){const t=[];let n=0;BF.lastIndex=0;let r;for(;(r=BF.exec(e))!==null;){if(r.index>n){const o=e.slice(n,r.index);o.length>0&&t.push({kind:"text",content:o})}t.push({kind:"thinking",content:r[1]??""}),n=r.index+r[0].length}const i=e.slice(n),s=i.search(/<thinking>/i);if(s!==-1){const o=i.slice(0,s);o.length>0&&t.push({kind:"text",content:o});const a=i.slice(s+10);t.push({kind:"thinking",content:a})}else i.length>0&&t.push({kind:"text",content:i});return gLe(t)}function gLe(e){const t=[];for(const n of e){const r=t[t.length-1];n.kind==="text"&&r&&r.kind==="text"?r.content+=n.content:t.push(n)}return t}const vLe=/^[ \t]*(`{3,}|~{3,})/,bLe=/https?:\/\/[^\s<>)\]'"]+/g,xLe=new RegExp("(?<![a-zA-Z0-9_])((?:PR|pull\\s+request|merge\\s+request|MR|issue|fix(?:es|ed)?|close[sd]?|resolve[sd]?|bug|task|ticket|story)\\s+)?#(\\d+)","gi"),yLe=/[.,;:!?)\]]+$/;function _Le(e){if(!e.includes("#")||!e.includes("http"))return e;const t=e.split(`
|
|
2687
|
+
`:"").join("");return c.jsx(IJ,{source:r,lang:n},Ti())}if(At(e)){const n=e.getListType(),r=Du(e),i=Ti();return n==="number"?c.jsx("ol",{className:"list-decimal ml-5 my-2",children:r},i):c.jsx("ul",{className:"list-disc ml-5 my-2",children:r},i)}if(_n(e)){const n=e.getChecked(),r=Du(e),i=Ti();return n!==void 0?c.jsxs("li",{className:"my-0.5 list-none flex items-start gap-1.5",children:[c.jsx("input",{type:"checkbox",readOnly:!0,checked:n,className:"mt-[3px] shrink-0"}),c.jsx("span",{children:r})]},i):c.jsx("li",{className:"my-0.5",children:r},i)}if(Gs(e)||td(e)){const n=e.getURL();return c.jsx("a",{href:n,className:"transition-all underline decoration-2 text-logo decoration-logo/50 hover:text-logo/70 dark:text-logo dark:decoration-logo/70 dark:hover:text-logo/60 dark:hover:decoration-logo/40",target:"_blank",rel:"noopener noreferrer",children:Du(e)},Ti())}if(hr(e)){const n=e.getChildren(),r=n[0],i=r!==void 0&&ur(r)&&r.getChildren().every(a=>St(a)&&(a.getHeaderStyles()&Rn.ROW)!==0),s=i?r:void 0,o=i?n.slice(1):n;return c.jsx("div",{className:"border border-border rounded-xl overflow-x-auto",children:c.jsxs("table",{className:"table-auto min-w-full divide-y divide-border bg-background",children:[s!==void 0&&c.jsx("thead",{children:c.jsx("tr",{children:s.getChildren().map(a=>c.jsx("th",{className:"text-left text-xs uppercase text-muted-foreground tracking-wider p-2 pl-0 first:pl-3 bg-muted dark:bg-card [&_*]:font-semibold",children:Du(a)},Ti()))})}),c.jsx("tbody",{className:"divide-y divide-border",children:o.map(a=>ur(a)?c.jsx("tr",{children:a.getChildren().map(l=>St(l)?c.jsx("td",{className:"text-left p-2 pl-0 first:pl-3 [&_*]:font-normal",children:Du(l)},Ti()):null)},Ti()):null)})]})},Ti())}if(oi(e))return c.jsx("br",{},Ti());if(Pe(e))return CMe(e);if(Bm(e))return c.jsx("code",{className:"break-all px-1 bg-border/60 py-0.5 rounded text-sm",children:e.getTextContent()},Ti());const t=e.getTextContent();return t?c.jsx("span",{children:t},Ti()):null}function CMe(e){const t=e.getFormat(),n=e.getTextContent(),r=(t&ix)!==0,i=(t&sx)!==0,s=(t&ox)!==0,o=(t&tP)!==0;let a=n;return o?c.jsx("code",{className:"break-all px-1 bg-border/60 py-0.5 rounded text-sm",children:n},Ti()):(s&&(a=c.jsx("del",{className:"line-through",children:a},Ti())),i&&(a=c.jsx("em",{className:"italic",children:a},Ti())),r&&(a=c.jsx("strong",{className:"font-semibold",children:a},Ti())),!r&&!i&&!s?n:a)}function Du(e){return e.getChildren().map(LJ)}function kMe(){PJ=0;const t=Pn().getChildren();return c.jsx(c.Fragment,{children:t.map(LJ)})}function Yc(e,t=RJ){const n=VY(JP({namespace:"kanna-md-renderer",nodes:wMe,editable:!1}));return n.update(()=>{xJ(e,t,void 0,!0)},{discrete:!0}),n.getEditorState().read(()=>kMe())}const AS=new Map;function EMe(e){return`${e.id}|${e.contentUrl}|${e.size??0}`}function NMe(e,t){return t.type==="setLoadState"?{...e,loadState:t.payload}:{lastKey:t.newKey,loadState:AS.get(t.newKey)??{status:"loading"}}}function vy(e){const t=EMe(e),n=AS.get(t),[{loadState:r,lastKey:i},s]=_.useReducer(NMe,{loadState:n??{status:"loading"},lastKey:t}),o=_.useRef(t);return o.current=t,i!==t&&s({type:"resetForKey",newKey:t}),_.useEffect(()=>{if(n&&n.status!=="loading")return;let a=!1;const l=t;return QI(e.contentUrl,QG).then(d=>{if(a||o.current!==l)return;const h={status:"ready",content:d.content,truncated:d.truncated};AS.set(l,h),s({payload:h,type:"setLoadState"})}).catch(d=>{if(a||o.current!==l)return;const p={status:"error",message:d instanceof Error?d.message:"Unable to load preview."};AS.set(l,p),s({payload:p,type:"setLoadState"})}),()=>{a=!0}},[n,t,e.contentUrl]),r}function TMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("div",{className:"prose hidden"})," Loading…"]}):t.status==="error"?c.jsx("div",{className:"p-4 text-sm text-destructive",children:t.message}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("div",{className:"prose prose-sm prose-invert max-w-none rounded-xl border border-border bg-background p-4",children:Yc(t.content)})]})}const $R=qt("TableBody",e=>t=>({state:e.initialState,setState:n=>t({state:n})})),RS=new Map;function OJ(e){return`${e.id}|${e.contentUrl}|${e.size??0}|${e.mimeType}`}function AMe({source:e}){const t=OJ(e),n=RS.get(t),r=$R.useScopedStore(h=>h.state),i=$R.useScopedStore(h=>h.setState),s=_.useRef(t);if(s.current=t,_.useEffect(()=>{if(n&&n.status!=="loading")return;const h=e.mimeType==="text/tab-separated-values"?" ":",";let p=!1;const m=t;return QI(e.contentUrl,QG).then(v=>{if(p||s.current!==m)return;const b={status:"ready",table:cEe(v.content,h),truncated:v.truncated};RS.set(m,b),i(b)}).catch(v=>{if(p||s.current!==m)return;const b={status:"error",message:v instanceof Error?v.message:"Unable to load preview."};RS.set(m,b),i(b)}),()=>{p=!0}},[n,t,e.contentUrl,e.mimeType,i]),r.status==="loading")return c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("table",{className:"sr-only"})," Loading…"]});if(r.status==="error")return c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("table",{className:"sr-only"})," ",r.message]});const{table:o}=r,[a,...l]=o.rows,d=[r.truncated?"Preview truncated to 1024 KB.":null,o.truncatedRows?`Showing first ${o.rows.length} of ${o.rowCount} rows.`:null,o.truncatedColumns?`Showing first ${AA} of ${o.columnCount} columns.`:null].filter(Boolean);return c.jsxs("div",{className:"space-y-2 p-3",children:[d.length?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:d.join(" ")}):null,c.jsx("div",{className:"overflow-x-auto rounded-xl border border-border bg-background",children:c.jsxs("table",{className:"min-w-full border-collapse text-xs",children:[a?c.jsx("thead",{className:"sticky top-0 bg-muted",children:c.jsx("tr",{children:a.map((h,p)=>c.jsx("th",{className:"border-b border-border px-3 py-2 text-left font-medium",children:h||" "},p))})}):null,c.jsx("tbody",{children:l.map((h,p)=>c.jsx("tr",{className:"odd:bg-background even:bg-muted/20",children:h.map((m,v)=>c.jsx("td",{className:"max-w-[320px] border-b border-border px-3 py-2 align-top",children:c.jsx("div",{className:"whitespace-pre-wrap break-words",children:m||" "})},v))},p))})]})})]})}function RMe({source:e}){const t=OJ(e),n=RS.get(t);return c.jsx($R.Provider,{init:{initialState:n??{status:"loading"}},children:c.jsx(AMe,{source:e})})}function MMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx(jMe,{children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:t.content})]})}function jMe({children:e}){return c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:e})}function IMe({source:e}){const t=vy(e),n=_.useMemo(()=>t.status==="ready"?lEe(t.content):"",[t]);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:n})]})}function PMe({source:e}){return c.jsxs("div",{className:"flex h-full flex-col items-stretch justify-center gap-3 p-4",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:e.displayName}),c.jsx("audio",{src:e.contentUrl,controls:!0,preload:"metadata",className:"w-full"})]})}function LMe({source:e}){return c.jsx("div",{className:"flex h-full items-center justify-center bg-black/40 p-2",children:c.jsx("video",{src:e.contentUrl,controls:!0,playsInline:!0,preload:"metadata",className:"max-h-[60dvh] w-full rounded-xl"})})}const zR=qt("CodeBody",()=>e=>({highlighted:null,setHighlighted:t=>e({highlighted:t})})),OMe=200*1024;function DMe(e){const t=e.lastIndexOf(".");if(t<0)return"text";const n=e.slice(t+1).toLowerCase();return{ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",py:"python",go:"go",rs:"rust",java:"java",rb:"ruby",sh:"bash",zsh:"bash",yml:"yaml",yaml:"yaml",css:"css",scss:"scss",html:"html",json:"json",md:"markdown",sql:"sql",cpp:"cpp",c:"c",h:"c",swift:"swift",kt:"kotlin",php:"php",toml:"toml"}[n]??"text"}function $Me({source:e}){const t=vy(e),n=t.status==="ready"&&t.content.length<=OMe,r=n?`${e.id}|${e.contentUrl}|${e.size??0}|${t.content.length}`:null,i=zR.useScopedStore(o=>o.highlighted),s=zR.useScopedStore(o=>o.setHighlighted);return _.useEffect(()=>{if(!n||t.status!=="ready"||r===null)return;let o=!1;const a=r;return Z(()=>Promise.resolve().then(()=>WG),void 0).then(async l=>{if(o)return;const d=await l.codeToHtml(t.content,{lang:DMe(e.fileName),theme:"github-dark"});o||s({key:a,html:d})}).catch(()=>{Qs.warn("[file-preview] Shiki unavailable; falling back to plain text")}),()=>{o=!0}},[n,r,t,e.fileName,s]),t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("pre",{className:"sr-only"})," Loading…"]}):t.status==="error"?c.jsxs("div",{className:"p-4 text-sm text-destructive",children:[c.jsx("pre",{className:"sr-only"})," ",t.message]}):i&&i.key===r?c.jsx("div",{className:"overflow-x-auto p-3 text-xs",dangerouslySetInnerHTML:{__html:i.html}}):c.jsxs("div",{className:"space-y-2 p-3",children:[t.truncated?c.jsx("div",{className:"rounded-xl border border-border bg-background px-3 py-2 text-xs text-muted-foreground",children:"Preview truncated to 1024 KB."}):null,c.jsx("pre",{className:"whitespace-pre-wrap break-words rounded-xl border border-border bg-background p-3 text-xs",children:t.content})]})}function zMe({source:e}){return c.jsx(zR.Provider,{init:void 0,children:c.jsx($Me,{source:e})})}const vf=qt("MermaidZoomModal",()=>e=>({scale:1,offset:{x:0,y:0},drag:null,setScale:t=>e({scale:t}),setOffset:t=>e({offset:t}),setDrag:t=>e({drag:t})}));function BMe({svg:e,onClose:t}){const n=vf.useScopedStore(m=>m.scale),r=vf.useScopedStore(m=>m.offset),i=vf.useScopedStore(m=>m.drag),s=vf.useScopedStore(m=>m.setScale),o=vf.useScopedStore(m=>m.setOffset),a=vf.useScopedStore(m=>m.setDrag);_.useEffect(()=>{const m=v=>{v.key==="Escape"&&t()};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[t]);const l=m=>Math.min(8,Math.max(.25,m)),d=m=>{a({x:m.clientX-r.x,y:m.clientY-r.y})},h=m=>{i&&o({x:m.clientX-i.x,y:m.clientY-i.y})},p=()=>a(null);return As.createPortal(c.jsxs("div",{className:"fixed inset-0 z-[100] flex flex-col bg-background/95",role:"dialog","aria-modal":"true","aria-label":"Diagram zoom view",children:[c.jsxs("div",{className:"flex justify-end gap-1 p-2",children:[c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom out",className:"h-9 w-9",onClick:()=>s(l(n-.25)),children:c.jsx(C7,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom in",className:"h-9 w-9",onClick:()=>s(l(n+.25)),children:c.jsx(ro,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Reset view",className:"h-9 w-9",onClick:()=>{s(1),o({x:0,y:0})},children:c.jsx(tae,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Close",className:"h-9 w-9",onClick:t,children:c.jsx(jo,{className:"h-4 w-4"})})]}),c.jsx("div",{className:"flex-1 overflow-hidden touch-none cursor-grab active:cursor-grabbing",onPointerDown:d,onPointerMove:h,onPointerUp:p,onPointerLeave:p,children:c.jsx("div",{"data-mermaid-stage":!0,className:"w-full h-full flex items-center justify-center",style:{transform:`translate(${r.x}px, ${r.y}px) scale(${n})`},dangerouslySetInnerHTML:{__html:e}})})]}),document.body)}function FMe({svg:e,onClose:t}){return c.jsx(vf.Provider,{init:void 0,children:c.jsx(BMe,{svg:e,onClose:t})})}const fc=qt("MermaidDiagram",()=>e=>({renderState:{status:"loading"},showSource:!1,zoomOpen:!1,copied:!1,setRenderState:t=>e({renderState:t}),setShowSource:t=>e({showSource:t}),setZoomOpen:t=>e({zoomOpen:t}),setCopied:t=>e({copied:t})}));let TT=null;function UMe(){return TT||(TT=Z(()=>import("./mermaid.core-Dl_f2KLc.js").then(e=>e.bm),[]).then(e=>e.default)),TT}function HMe({source:e}){const{resolvedTheme:t}=O1(),n=t==="dark"?"dark":"default",r=fc.useScopedStore(x=>x.renderState),i=fc.useScopedStore(x=>x.showSource),s=fc.useScopedStore(x=>x.zoomOpen),o=fc.useScopedStore(x=>x.copied),a=fc.useScopedStore(x=>x.setRenderState),l=fc.useScopedStore(x=>x.setShowSource),d=fc.useScopedStore(x=>x.setZoomOpen),h=fc.useScopedStore(x=>x.setCopied),m=`mermaid-${_.useId().replace(/[^a-zA-Z0-9_-]/g,"")}`,v=_.useCallback(()=>d(!1),[d]),b=async()=>{await navigator.clipboard.writeText(e),h(!0),setTimeout(()=>h(!1),2e3)};return _.useEffect(()=>{let x=!1;return UMe().then(async S=>{S.initialize({startOnLoad:!1,securityLevel:"strict",theme:n});const{svg:C}=await S.render(m,e);x||a({status:"ready",svg:C})}).catch(()=>{x||a({status:"error"})}),()=>{x=!0}},[e,n,m,a]),r.status==="error"?c.jsx(oT,{source:e}):r.status==="loading"?c.jsx("div",{className:"relative group/mermaid",children:c.jsx(oT,{source:e})}):i?c.jsxs("div",{className:"relative group/mermaid",children:[c.jsx(oT,{source:e}),c.jsx(lF,{showSource:i,onToggleSource:()=>l(!i),onCopy:b,copied:o,onZoom:void 0})]}):c.jsxs("div",{className:"relative group/mermaid my-3",children:[c.jsx("div",{className:"flex justify-center overflow-x-auto",dangerouslySetInnerHTML:{__html:r.svg}}),c.jsx(lF,{showSource:i,onToggleSource:()=>l(!i),onCopy:b,copied:o,onZoom:()=>d(!0)}),s&&c.jsx(FMe,{svg:r.svg,onClose:v})]})}function DJ({source:e}){return c.jsx(fc.Provider,{init:void 0,children:c.jsx(HMe,{source:e})})}function lF({showSource:e,onToggleSource:t,onCopy:n,copied:r,onZoom:i}){return c.jsxs("div",{className:"absolute top-1.5 right-1.5 flex gap-1 opacity-100 md:opacity-0 md:group-hover/mermaid:opacity-100 transition-opacity [@media(hover:none)]:!opacity-100",children:[i&&!e&&c.jsx(Me,{variant:"ghost",size:"icon","aria-label":"Zoom diagram",className:"h-8 w-8 rounded-md text-muted-foreground hover:text-foreground",onClick:i,children:c.jsx(Eoe,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":e?"View rendered diagram":"View diagram source",className:"h-8 w-8 rounded-md text-muted-foreground hover:text-foreground",onClick:t,children:c.jsx(p2,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"icon","aria-label":r?"Copied":"Copy diagram source",className:fe("h-8 w-8 rounded-md text-muted-foreground",!r&&"hover:text-foreground",r&&"hover:!bg-transparent"),onClick:n,children:r?c.jsx(js,{className:"h-4 w-4 text-success"}):c.jsx(Ba,{className:"h-4 w-4"})})]})}function WMe({source:e}){const t=vy(e);return t.status==="loading"?c.jsxs("div",{className:"p-4 text-sm text-muted-foreground",children:[c.jsx("div",{className:"hidden"})," Loading…"]}):t.status==="error"?c.jsx("div",{className:"p-4 text-sm text-destructive",children:t.message}):c.jsx("div",{className:"p-4",children:c.jsx(DJ,{source:t.content})})}async function VMe(e){var n;const t=GMe(e.contentUrl);if("share"in navigator&&typeof navigator.share=="function")try{return await navigator.share({title:e.displayName,url:t}),"shared"}catch(r){if(r instanceof DOMException&&r.name==="AbortError")return"shared"}if((n=navigator.clipboard)!=null&&n.writeText)try{return await navigator.clipboard.writeText(t),"copied"}catch{return"failed"}return"failed"}function KMe(e){const t=document.createElement("a");t.href=e.contentUrl,t.download=e.fileName,t.rel="noopener",document.body.appendChild(t),t.click(),t.remove()}function GMe(e){return typeof window>"u"?e:new URL(e,document.baseURI||window.location.href).toString()}const BR=qt("SheetBody",()=>e=>({dy:0,setDy:t=>e({dy:t})}));function jh({source:e,open:t,onOpenChange:n}){const r=_.useCallback(()=>n(!1),[n]);return c.jsx(To,{open:t&&e!==null,onOpenChange:n,children:c.jsx(io,{size:"lg",className:"inset-0 h-[100dvh] max-h-none w-full max-w-none translate-x-0 translate-y-0 rounded-none p-0 md:inset-auto md:left-1/2 md:top-1/2 md:h-auto md:max-h-[90dvh] md:w-auto md:max-w-3xl md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-2xl",children:e?c.jsx(ZMe,{source:e,onClose:r}):null})})}const qMe=120,YMe=.5;function XMe({startY:e,lastY:t,lastT:n,endY:r,now:i}){const s=r-e,o=Math.max(1,i-n),a=(r-t)/o;return s>qMe||a>YMe}function JMe({source:e,onClose:t}){const n=eje(e),r=BR.useScopedStore(p=>p.dy),i=BR.useScopedStore(p=>p.setDy),s=_.useRef(null),o=_.useCallback(p=>{s.current={y:p.clientY,lastY:p.clientY,lastT:Date.now()};try{p.currentTarget.setPointerCapture(p.pointerId)}catch{}},[]),a=_.useCallback(p=>{if(!s.current)return;const m=p.clientY-s.current.y;m<0||(s.current.lastY=p.clientY,s.current.lastT=Date.now(),i(m))},[i]),l=_.useCallback(p=>{const m=s.current;s.current=null;try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}m&&(XMe({startY:m.y,lastY:m.lastY,lastT:m.lastT,endY:p.clientY,now:Date.now()})?t():i(0))},[t,i]),d=_.useCallback(()=>{VMe(e)},[e]),h=_.useCallback(()=>KMe(e),[e]);return c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",style:r>0?{transform:`translateY(${r}px)`,transition:"none"}:void 0,children:[c.jsxs("div",{onPointerDown:o,onPointerMove:a,onPointerUp:l,onPointerCancel:l,className:"border-b border-border px-4 py-3 touch-none",children:[c.jsx("div",{className:"mx-auto mb-2 h-1 w-12 rounded-full bg-muted md:hidden",role:"button","aria-label":"Drag down to close"}),c.jsx(Ao,{className:"truncate text-base",children:e.displayName}),c.jsx(Qm,{className:"truncate text-xs",children:n})]}),c.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain touch-pan-y [-webkit-overflow-scrolling:touch]",role:"region","aria-label":"File preview",children:_.createElement(QMe(e),{source:e})},e.id),c.jsxs("div",{className:"flex items-center justify-end gap-2 border-t border-border px-4 py-3",children:[c.jsxs(Me,{type:"button",variant:"outline",onClick:d,children:[c.jsx(gae,{className:"mr-2 h-4 w-4"}),"Share"]}),e.origin==="offer_download"?c.jsxs(Me,{type:"button",onClick:h,children:[c.jsx(tj,{className:"mr-2 h-4 w-4"}),"Download"]}):null]})]})}function ZMe({source:e,onClose:t}){return c.jsx(BR.Provider,{init:void 0,children:c.jsx(JMe,{source:e,onClose:t})})}function QMe(e){const t={id:e.id,displayName:e.displayName,mimeType:e.mimeType,size:e.size??0,contentUrl:e.contentUrl,relativePath:e.relativePath??""},n=kh(t);return n==="image"?CEe:n==="pdf"?Yz:n==="audio"?PMe:n==="video"?LMe:n==="table"?RMe:n==="markdown"?TMe:n==="json"?IMe:n==="mermaid"?WMe:n==="code"?zMe:dg(t).kind==="external"?Yz:MMe}function eje(e){const t={id:e.id,displayName:e.displayName,mimeType:e.mimeType,size:e.size??0,contentUrl:e.contentUrl,relativePath:e.relativePath??""},n=kh(t),r=Qx(n,e.mimeType),i=e.size?` · ${Eh(e.size)}`:"";return`${r}${i}`}function xg(e,t){return{id:e.id,contentUrl:e.contentUrl,displayName:e.displayName,fileName:e.displayName,relativePath:e.relativePath,mimeType:e.mimeType,size:e.size,origin:t}}const Al=_.forwardRef(({className:e,...t},n)=>c.jsx("textarea",{"data-gramm":"false","data-gramm_editor":"false","data-enable-grammarly":"false","data-1p-ignore":!0,autoComplete:"off",className:fe("flex w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));Al.displayName="Textarea";const tje=new Set(["changes","history"]),nje=new Set(["public","private"]),rje=new Set(["branches","pull_requests"]);function ije(e){return tje.has(e)}function sje(e){return nje.has(e)}function oje(e){return rje.has(e)}const A0={};function cF(e){return!e.isCollapsed&&!e.hasPreviewAttachment&&e.patch===void 0&&e.patchError===void 0&&!e.isPatchLoading}function aje(e,t){return!e||!t.mimeType||typeof t.size!="number"||t.changeType==="deleted"||!t.mimeType.startsWith("image/")&&t.mimeType!=="application/pdf"?null:{id:`diff:${t.path}`,kind:t.mimeType.startsWith("image/")?"image":"file",displayName:t.path.split("/").pop()??t.path,absolutePath:t.path,relativePath:t.path,contentUrl:`/api/projects/${e}/files/${encodeURIComponent(t.path)}/content`,mimeType:t.mimeType,size:t.size}}function $J(e){return e.isUntracked}function lje(e){return $J(e)?e.path.includes("/"):!1}function AT(e){return c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsx("button",{type:"button","aria-label":e.label,title:e.label,onClick:e.onClick,className:fe("flex h-11 w-11 md:h-7 md:w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",e.active&&"bg-accent text-foreground"),children:e.children})}),c.jsx(Ms,{children:e.label})]})}function zJ({checked:e,mixed:t=!1,label:n,className:r,onClick:i}){let s;return t?s=c.jsx(C7,{className:"h-3 w-3",strokeWidth:3}):e?s=c.jsx(js,{className:"h-3 w-3",strokeWidth:3}):s=null,c.jsx("button",{type:"button","aria-label":n??(e?"Exclude file from commit":"Include file in commit"),"aria-checked":t?"mixed":e,"aria-pressed":t?"mixed":e,onClick:o=>{o.stopPropagation(),i()},className:fe("flex size-4.5 shrink-0 items-center justify-center rounded border transition-colors",e||t?"border-foreground bg-foreground text-background":"border-border bg-background text-transparent",r),children:s})}function ZP(e){const t=Date.parse(e);if(!Number.isFinite(t))return"";const n=Date.now()-t,r=6e4,i=60*r,s=24*i,o=7*s,a=30*s,l=365*s;return n<r?"just now":n<i?`${Math.round(n/r)}m ago`:n<s?`${Math.round(n/i)}hr ago`:n<o?`${Math.round(n/s)}d ago`:n<a?`${Math.round(n/o)}wk ago`:n<l?`${Math.round(n/a)}mo ago`:`${Math.round(n/l)}yr ago`}function cje(e){return e?`Last fetched ${ZP(e)}`:"No local fetch recorded"}function uje({entry:e,isPendingPush:t=!1}){const n=ZP(e.authoredAt),r=!!e.githubUrl;let i;return e.tags.length>0?i=c.jsxs("div",{className:"flex shrink-0 flex-wrap justify-end gap-1",children:[e.tags.map(s=>c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:s},s)),t?c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:c.jsx(Sb,{className:"size-3"})}):null]}):t?i=c.jsx("div",{className:"flex shrink-0 flex-wrap justify-end gap-1",children:c.jsx("span",{className:"inline-flex items-center rounded-full bg-muted border border-border px-2 py-0.5 text-[11px]",children:c.jsx(Sb,{className:"size-3"})})}):i=null,c.jsxs("button",{type:"button",disabled:!r,onClick:()=>{!e.githubUrl||typeof window>"u"||window.open(e.githubUrl,"_blank","noopener,noreferrer")},className:fe("flex w-full items-start gap-3 rounded-lg border border-border bg-background pl-3 pr-2 py-2 text-left transition-colors",r?"hover:bg-accent":"cursor-default opacity-60"),children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.summary}),e.description?c.jsx("div",{className:"mt-1 line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:e.description}):null,c.jsxs("div",{className:"mt-1 flex min-w-0 items-center gap-1 text-xs text-muted-foreground",children:[e.authorName?c.jsx("span",{className:"truncate",children:e.authorName}):null,e.authorName&&n?c.jsx("span",{"aria-hidden":"true",children:"•"}):null,n?c.jsx("span",{children:n}):null]})]}),i]})}function uF(e){switch(e.kind){case"local":return 0;case"pull_request":return 1;case"remote":default:return 2}}function dje(e){const t=new Map;for(const n of e){const r=t.get(n.name);(!r||uF(n)<uF(r))&&t.set(n.name,n)}return t}function fje(e,t){const n=dje([...e.local,...e.pullRequests,...e.remote]);t&&n.delete(t);const r=new Set,i=e.defaultBranchName?n.get(e.defaultBranchName):void 0;i&&r.add(i.name);const s=e.recent.map(a=>n.get(a.name)??a).filter(a=>!!a&&!r.has(a.name));for(const a of s)r.add(a.name);const o=[...n.values()].filter(a=>!r.has(a.name)).sort((a,l)=>a.displayName.localeCompare(l.displayName));return{defaultBranch:i,recent:s,other:o}}function hje({open:e,onOpenChange:t,onGetGitHubPublishInfo:n,onCheckGitHubRepoAvailability:r,onPublish:i}){const s=st(L=>L.publishInfo),o=st(L=>L.isLoadingPublishInfo),a=st(L=>L.publishOwner),l=st(L=>L.publishName),d=st(L=>L.publishVisibility),h=st(L=>L.publishDescription),p=st(L=>L.publishAvailability),m=st(L=>L.isCheckingPublishAvailability),v=st(L=>L.isPublishing),b=st(L=>L.setPublishInfo),x=st(L=>L.setIsLoadingPublishInfo),S=st(L=>L.setPublishOwner),C=st(L=>L.setPublishName),k=st(L=>L.setPublishVisibility),w=st(L=>L.setPublishDescription),N=st(L=>L.setPublishAvailability),A=st(L=>L.setIsCheckingPublishAvailability),T=st(L=>L.setIsPublishing);_.useEffect(()=>{if(!e)return;let L=!1;return x(!0),N(null),n().then(I=>{L||(b(I),S(I.owners[0]??I.activeAccountLogin??""),C(I.suggestedRepoName),k("private"),w(""))}).finally(()=>{L||x(!1)}),()=>{L=!0}},[n,e,N,w,b,x,C,S,k]),_.useEffect(()=>{if(!e||!(s!=null&&s.ghInstalled)||!s.authenticated)return;const L=a.trim(),I=l.trim();if(!L||!I){N(null);return}let $=!1;A(!0);const H=window.setTimeout(()=>{r({owner:L,name:I}).then(z=>{$||N(z)}).finally(()=>{$||A(!1)})},250);return()=>{$=!0,window.clearTimeout(H)}},[s==null?void 0:s.authenticated,s==null?void 0:s.ghInstalled,l,r,e,a,N,A]);async function M(){if(!(!a.trim()||!l.trim())){T(!0);try{const L=await i({owner:a.trim(),name:l.trim(),visibility:d,description:h});Hi(L)&&L.ok&&t(!1)}finally{T(!1)}}}const j=!!(s!=null&&s.ghInstalled&&s.authenticated&&a.trim()&&l.trim()&&(p!=null&&p.available)&&!m&&!v);let P;m?P=c.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-3 flex items-center text-muted-foreground",children:c.jsx(jn,{className:"size-4 animate-spin"})}):p?P=c.jsx("div",{className:"absolute inset-y-0 right-2 flex items-center",children:c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsx("button",{type:"button",tabIndex:-1,"aria-label":p.message,className:fe("flex size-6 items-center justify-center rounded-md",p.available?"text-success":"text-destructive"),children:p.available?c.jsx(js,{className:"size-4"}):c.jsx(xm,{className:"size-4"})})}),c.jsx(Ms,{children:p.message})]})}):P=null;let D;return o?D=c.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-4 animate-spin"}),c.jsx("span",{children:"Checking GitHub CLI…"})]}):s&&!s.ghInstalled?D=c.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[c.jsx("p",{children:"GitHub CLI is not installed."}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"brew install gh"}),c.jsx("p",{children:"Then run:"}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"gh auth login"})]}):s&&!s.authenticated?D=c.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[c.jsx("p",{children:"GitHub CLI is installed but not signed in."}),c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 font-mono text-xs text-foreground",children:"gh auth login"})]}):D=c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"space-y-2",children:c.jsxs(Qo,{value:a,onValueChange:S,children:[c.jsx(Co,{className:"pl-[11px] [&>span]:flex [&>span]:items-center [&>span]:gap-2",children:c.jsx(ja,{placeholder:"Select owner"})}),c.jsx(ko,{children:((s==null?void 0:s.owners)??[]).map(L=>c.jsx(ri,{value:L,children:c.jsxs("span",{className:"flex items-center gap-2",children:[L===(s==null?void 0:s.activeAccountLogin)?c.jsx(vC,{className:"size-4 text-muted-foreground"}):c.jsx(Bie,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:L})]})},L))})]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs("div",{className:"relative",children:[c.jsx(dn,{value:l,onChange:L=>C(L.target.value),placeholder:"my-repo",className:"pl-9 pr-10"}),c.jsx(Hoe,{className:"pointer-events-none absolute inset-y-0 left-3 my-auto size-4 text-muted-foreground"}),P]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs("div",{className:"relative",children:[c.jsx(Ix,{className:"pointer-events-none absolute left-3 top-3 size-4 text-muted-foreground"}),c.jsx(Al,{value:h,onChange:L=>w(L.target.value),rows:3,placeholder:"Optional description",className:"pl-9 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"})]})}),c.jsx("div",{className:"space-y-2",children:c.jsxs(Qo,{value:d,onValueChange:L=>{sje(L)&&k(L)},children:[c.jsx(Co,{className:"pl-[11px] [&>span]:flex [&>span]:items-center [&>span]:gap-2",children:c.jsx(ja,{placeholder:"Select visibility"})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"private",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(Soe,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:"Private"})]})}),c.jsx(ri,{value:"public",children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(aoe,{className:"size-4 text-muted-foreground"}),c.jsx("span",{className:"pl-[1px]",children:"Public"})]})})]})]})})]}),c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",className:"max-w-[min(92vw,475px)]",children:[c.jsxs(la,{className:"space-y-2 px-4 pb-4 pt-4",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx(Ao,{children:"Push to GitHub"}),c.jsx(Qm,{children:"Create a GitHub repository from this local project using GitHub CLI."})]}),D]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{size:"sm",disabled:!j,onClick:()=>void M(),children:v?c.jsxs(c.Fragment,{children:[c.jsx(jn,{className:"mr-1.5 size-3.5 animate-spin"}),"Publishing…"]}):"Push to GitHub"})]})]})})}function BJ({value:e,onChange:t,placeholder:n,disabled:r,trailingAction:i}){return c.jsxs("div",{className:"relative",children:[c.jsx(Jp,{className:"pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),c.jsx(dn,{value:e,onChange:s=>t(s.target.value),placeholder:n,className:fe("h-9 pl-7 text-sm",i?"pr-14":void 0),disabled:r}),i?c.jsx("div",{className:"absolute right-1 top-1/2 -translate-y-1/2",children:i}):null]})}function Df({title:e,entries:t,emptyLabel:n,selectedName:r,disabled:i,stickyTitle:s=!1,onSelect:o}){return t.length===0&&!n?null:c.jsxs("div",{className:"space-y-1",children:[c.jsx("div",{className:fe("px-1 py-1 text-[11px] font-medium uppercase tracking-[0.08em] text-muted-foreground",s&&"sticky top-0 z-10 bg-background"),children:e}),t.length===0?c.jsx("div",{className:"px-1 py-1 text-xs text-muted-foreground",children:n}):t.map(a=>{const l=r===a.name;return c.jsxs("button",{type:"button",disabled:i,onClick:()=>o(a),className:fe("flex w-full items-start gap-2 rounded-lg px-2 py-2 text-left transition-colors disabled:opacity-60",l?"bg-accent text-foreground":"hover:bg-accent"),children:[a.kind==="pull_request"?c.jsx(x7,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}):c.jsx(Cc,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex w-full items-center gap-3",children:[c.jsx("div",{className:"min-w-0 flex-1 overflow-hidden whitespace-nowrap text-sm text-foreground",children:a.displayName}),a.updatedAt?c.jsx("div",{className:"ml-auto shrink-0 text-right text-[11px] text-muted-foreground",children:ZP(a.updatedAt)}):null]}),a.kind==="pull_request"&&a.description||a.headLabel?c.jsx("div",{className:"truncate text-xs text-muted-foreground",children:a.kind==="pull_request"?a.description??a.headLabel??a.name:a.headLabel??void 0}):null]})]},a.id)})]})}function pje({open:e,onOpenChange:t,branchList:n,currentBranchName:r,onPreviewMergeBranch:i,onMergeBranch:s}){const o=st(z=>z.mergeBranchQuery),a=st(z=>z.mergeBranchSelectedName),l=st(z=>z.mergePreview),d=st(z=>z.mergePreviewError),h=st(z=>z.isMergePreviewLoading),p=st(z=>z.isMergeBranching),m=st(z=>z.setMergeBranchQuery),v=st(z=>z.setMergeBranchSelectedName),b=st(z=>z.setMergePreview),x=st(z=>z.setMergePreviewError),S=st(z=>z.setIsMergePreviewLoading),C=st(z=>z.setIsMergeBranching),k=st(z=>z.resetMergeBranchModal),w=st(z=>z.resetMergePreview),N=_.useMemo(()=>n?fje(n,r):{defaultBranch:void 0,recent:[],other:[]},[n,r]),A=o.trim().toLowerCase(),T=_.useCallback(z=>A?[z.displayName,z.name,z.description,z.prTitle,z.headLabel].some(F=>F==null?void 0:F.toLowerCase().includes(A)):!0,[A]),M=N.defaultBranch&&T(N.defaultBranch)?N.defaultBranch:void 0,j=N.recent.filter(T),P=N.other.filter(T),D=_.useMemo(()=>a?[N.defaultBranch,...N.recent,...N.other].find(z=>z!==void 0&&z.name===a)??null:null,[N.defaultBranch,N.other,N.recent,a]);_.useEffect(()=>{e||k()},[e,k]),_.useEffect(()=>{if(!e||!D){w();return}let z=!1;return b(null),x(null),S(!0),i(D).then(F=>{z||b(F)}).catch(F=>{z||x(F instanceof Error?F.message:String(F))}).finally(()=>{z||S(!1)}),()=>{z=!0}},[i,e,w,D,S,b,x]);const L=!D||!l||h||p||l.status!=="mergeable";async function I(){if(!(!D||L)){C(!0);try{const z=await s(D);z!=null&&z.ok&&t(!1)}finally{C(!1)}}}let $;l?l.status==="up_to_date"?$=c.jsx(js,{className:"mt-1 size-3.5 shrink-0 text-success"}):l.status==="conflicts"?$=c.jsx(xm,{className:"mt-1 size-3.5 shrink-0 text-warning"}):l.status==="mergeable"?$=c.jsx(b7,{className:"mt-1 size-3.5 shrink-0 text-muted-foreground"}):$=c.jsx(xm,{className:"mt-1 size-3.5 shrink-0 text-destructive"}):$=null;let H;return D?h?H=c.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-3.5 animate-spin"}),c.jsx("span",{children:"Checking merge preview…"})]}):d?H=c.jsx("div",{className:"text-sm text-destructive",children:d}):l?H=c.jsxs("div",{className:"flex items-start gap-2",children:[$,c.jsxs("div",{className:"min-w-0 space-y-1",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:l.message}),l.detail?c.jsx("div",{className:"line-clamp-2 whitespace-pre-wrap text-xs text-muted-foreground",children:l.detail}):null]})]}):H=c.jsx("div",{className:"text-sm text-muted-foreground",children:"Preview unavailable."}):H=c.jsx("div",{className:"text-sm text-muted-foreground",children:"Select a branch to preview the merge."}),c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",className:"max-w-[min(92vw,475px)]",children:[c.jsxs(la,{className:"flex min-h-0 flex-col gap-3 px-4 pb-4 pt-4",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsxs(Ao,{children:["Merge into ",r??"current branch"]}),c.jsx(Qm,{children:"Choose a branch to continue."})]}),c.jsx(BJ,{value:o,onChange:m,placeholder:"Search branches"}),c.jsxs("div",{className:"max-h-[375px] space-y-3 overflow-y-auto pr-1",children:[c.jsx(Df,{title:"Default Branch",entries:M?[M]:[],emptyLabel:"No default branch available.",selectedName:a,onSelect:z=>v(z.name)}),c.jsx(Df,{title:"Recent Branches",entries:j,emptyLabel:"No recent branches.",selectedName:a,onSelect:z=>v(z.name)}),c.jsx(Df,{title:"Other Branches",entries:P,emptyLabel:"No other branches match this search.",selectedName:a,onSelect:z=>v(z.name)})]}),c.jsx("div",{className:"px-2",children:H})]}),c.jsx(Lc,{children:c.jsxs("div",{className:"flex min-w-0 w-full items-center justify-end gap-2",children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{className:"max-w-full min-w-0",size:"sm",disabled:L,onClick:()=>void I(),children:p?c.jsxs(c.Fragment,{children:[c.jsx(jn,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}),"Merging…"]}):c.jsx("span",{className:"block max-w-full truncate",children:"Merge"})})]})})]})})}function mje({currentBranchName:e,onListBranches:t,onPreviewMergeBranch:n,onMergeBranch:r,onCheckoutBranch:i,onCreateBranch:s}){const o=st(X=>X.branchSwitcherOpen),a=st(X=>X.mergeModalOpen),l=st(X=>X.branchSwitcherIsLoading),d=st(X=>X.branchSwitcherIsMutating),h=st(X=>X.branchSwitcherQuery),p=st(X=>X.branchSwitcherEntryView),m=st(X=>X.branchList),v=st(X=>X.branchSwitcherError),b=st(X=>X.setBranchSwitcherOpen),x=st(X=>X.setMergeModalOpen),S=st(X=>X.setBranchSwitcherIsLoading),C=st(X=>X.setBranchSwitcherIsMutating),k=st(X=>X.setBranchSwitcherQuery),w=st(X=>X.setBranchSwitcherEntryView),N=st(X=>X.setBranchList),A=st(X=>X.setBranchSwitcherError);_.useEffect(()=>{o&&(S(!0),A(null),t().then(X=>N(X)).catch(X=>{A(X instanceof Error?X.message:String(X))}).finally(()=>{S(!1)}))},[t,o,N,A,S]);const T=h.trim().toLowerCase(),M=X=>X.filter(G=>T?[G.displayName,G.name,G.description,G.prTitle,G.headLabel].some(te=>te==null?void 0:te.toLowerCase().includes(T)):!0),j=(m==null?void 0:m.currentBranchName)??e,P=new Set(((m==null?void 0:m.pullRequests)??[]).map(X=>X.headRefName??X.name)),D=M((m==null?void 0:m.recent)??[]).filter(X=>X.name!==j),L=M((m==null?void 0:m.local)??[]).filter(X=>X.name!==j),I=M((m==null?void 0:m.remote)??[]).filter(X=>X.name!==j&&!P.has(X.name)),$=M((m==null?void 0:m.pullRequests)??[]).filter(X=>X.name!==j),H=(m==null?void 0:m.pullRequests.length)??0;async function z(X){C(!0);try{await i(X),b(!1),k(""),w("branches")}finally{C(!1)}}async function F(){C(!0);try{await s(),b(!1),k(""),w("branches")}finally{C(!1)}}function K(){b(!1),x(!0)}let W;(m==null?void 0:m.pullRequestsStatus)==="error"?W=m.pullRequestsError??"Could not load pull requests.":(m==null?void 0:m.pullRequestsStatus)==="unavailable"?W="Pull requests unavailable for this repository.":W="No open pull requests.";let V;return l?V=c.jsxs("div",{className:"flex items-center justify-center gap-2 py-6 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading branches…"})]}):v?V=c.jsx("div",{className:"rounded-lg border border-border px-3 py-2 text-sm text-muted-foreground",children:v}):p==="pull_requests"?V=c.jsx(Df,{title:"Open PRs",entries:$,emptyLabel:W,disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}):V=c.jsxs("div",{className:"space-y-3",children:[c.jsx(Df,{title:"Recent",entries:D,emptyLabel:"No recent branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}),c.jsx(Df,{title:"Local",entries:L,emptyLabel:"No local branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}}),c.jsx(Df,{title:"Remote",entries:I,emptyLabel:"No remote branches.",disabled:d,stickyTitle:!0,onSelect:X=>{z(X)}})]}),c.jsxs(Ld,{open:o,onOpenChange:b,children:[c.jsx(Od,{asChild:!0,children:c.jsxs("button",{type:"button",className:"flex min-w-0 max-w-full items-center gap-1 rounded-md px-1.5 py-1 text-sm transition-colors hover:bg-accent hover:text-foreground","aria-label":"Open branch switcher",children:[c.jsx(Cc,{className:"h-3.5 w-3.5 shrink-0"}),c.jsx("span",{className:"truncate",children:e??"Detached HEAD"}),c.jsx(Xm,{className:"h-3.5 w-3.5 shrink-0"})]})}),c.jsx(eu,{align:"start",className:"w-[320px] p-2",children:c.jsxs("div",{className:"space-y-2",children:[c.jsx(BJ,{value:h,onChange:k,placeholder:p==="pull_requests"?"Search pull requests":"Search branches",disabled:l||d,trailingAction:c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>void F(),disabled:l||d,className:"h-7 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:"+ New"})}),c.jsx(Es,{value:p,onValueChange:X=>{oje(X)&&w(X)},size:"sm",className:"w-full",optionClassName:"flex-1 justify-center",options:[{value:"branches",label:"Branches"},{value:"pull_requests",label:`Open PRs ${H}`}]}),c.jsx("div",{className:"max-h-[420px] overflow-y-auto pr-1.5 -mr-[8px]",children:V}),j?c.jsx(Me,{variant:"default",size:"sm",disabled:l||d||!!v,onClick:K,className:"h-9 w-full justify-center rounded-lg px-3 text-sm",children:c.jsxs("span",{className:"block max-w-full truncate",children:[c.jsx(noe,{className:"mr-1.5 inline h-3.5 w-3.5 shrink-0"}),"Merge branch into ",j,"..."]})}):null]})}),c.jsx(pje,{open:a,onOpenChange:x,branchList:m,currentBranchName:j,onPreviewMergeBranch:n,onMergeBranch:r})]})}function gje({file:e,rootRef:t,projectId:n,isCollapsed:r,isChecked:i,editorLabel:s,diffRenderMode:o,wrapLines:a,onToggleCollapsed:l,onToggleChecked:d,fileActions:h,patch:p,patchError:m,isPatchLoading:v,onLoadPatch:b}){const x=$J(e),S=lje(e),C=TA.useScopedStore(z=>z.selectedAttachmentId),k=TA.useScopedStore(z=>z.setSelectedAttachmentId),w=_.useRef(null),N=_.useRef(null),{sentinelRef:A,isStuck:T}=Zke({rootRef:t,disabled:r}),M=_.useMemo(()=>aje(n,e),[e,n]),j=M!==null,P=cF({isCollapsed:r,hasPreviewAttachment:j,patch:p,patchError:m,isPatchLoading:v});_.useEffect(()=>{if(!P)return;const z=`${e.path}\0${e.patchDigest}`;N.current!==z&&(N.current=z,b(e.path).catch(()=>{}))},[e.patchDigest,e.path,b,P]);function D(z){if(dg(z).openInNewTab){typeof window<"u"&&window.open(new URL(z.contentUrl,window.location.origin).toString(),"_blank","noopener,noreferrer");return}k(z.id)}function L(z){var K;z.preventDefault(),z.stopPropagation();const F=z.currentTarget.getBoundingClientRect();(K=w.current)==null||K.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:F.left+F.width/2,clientY:F.bottom,view:window}))}function I(){if(!r){l();return}if(j||p!==void 0){l();return}if(v)return;if(!(m!==void 0||cF({isCollapsed:!1,hasPreviewAttachment:j,patch:p,patchError:m,isPatchLoading:v}))){l();return}b(e.path).then(()=>{l()}).catch(()=>{})}let $;v&&r&&!M?$=c.jsx(jn,{className:"h-3.5 w-3.5 shrink-0 animate-spin"}):r?$=c.jsx(Xm,{className:"h-3.5 w-3.5 shrink-0"}):$=c.jsx(h7,{className:"h-3.5 w-3.5 shrink-0"});let H;return M?H=c.jsx("div",{className:"flex justify-center p-3",children:M.kind==="image"?c.jsx(l1,{attachment:M,onClick:()=>D(M)}):c.jsx(No,{attachment:M,onClick:()=>D(M)})}):v?H=c.jsxs("div",{className:"flex items-center justify-center px-3 py-8 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading diff..."]}):m?H=c.jsx("div",{className:"px-3 py-4 text-sm text-destructive",children:m}):p!==void 0?H=c.jsx(Xke,{patch:p,options:{diffStyle:o,disableFileHeader:!0,disableBackground:!1,overflow:a?"wrap":"scroll",lineDiffType:"word",diffIndicators:"classic"}}):H=c.jsx("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"Diff unavailable."}),c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsxs("div",{ref:w,className:"relative rounded-lg border border-border bg-background",children:[r?null:c.jsx("div",{ref:A,className:"pointer-events-none absolute inset-x-0 top-0 h-px","aria-hidden":"true"}),c.jsxs("div",{role:"button",tabIndex:0,onClick:I,onKeyDown:z=>{z.key!=="Enter"&&z.key!==" "||(z.preventDefault(),I())},className:fe("group/header sticky top-0 z-20 flex cursor-pointer items-center justify-between gap-3 bg-background pl-[7px] pr-2.5 py-1.5 text-[13px] text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",!r&&!T&&"rounded-t-[calc(theme(borderRadius.lg)-1px)]",r&&"rounded-[calc(theme(borderRadius.lg)-1px)]",!r&&"border-b border-border/50"),children:[c.jsxs("div",{className:"flex min-w-0 items-center",children:[c.jsx(zJ,{checked:i,onClick:d}),c.jsx("div",{className:"min-w-0 truncate select-none ml-2 mr-1",children:e.path})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2 select-none",children:[c.jsxs("span",{className:"whitespace-nowrap text-xs font-mono",children:[e.additions>0?c.jsxs("span",{className:"text-success",children:["+",e.additions]}):null,e.deletions>0?c.jsxs("span",{className:e.additions>0?"ml-2 text-destructive":"text-destructive",children:["-",e.deletions]}):null]}),c.jsx("button",{type:"button","aria-label":`Open actions for ${e.path}`,onClick:L,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:c.jsx(wb,{className:"h-3.5 w-3.5 shrink-0"})}),$]})]}),r?null:c.jsx("div",{className:"kanna-diff-patch overflow-hidden rounded-b-[calc(theme(borderRadius.lg)-1px)] pb-[1px]",children:H}),c.jsx(jh,{source:M&&C===M.id?xg(M,"user_attachment"):null,open:M!==null&&C===M.id,onOpenChange:z=>!z&&k(null)})]},e.path)}),c.jsxs(Id,{children:[c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onOpenFile(e.path)},children:[c.jsx(ej,{className:"h-3.5 w-3.5"}),c.jsxs("span",{className:"text-xs font-medium",children:["Open in ",s]})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onOpenInFinder(e.path)},children:[c.jsx(mC,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Open in Finder"})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onDiscardFile(e.path)},className:"text-destructive hover:bg-destructive/10 focus:bg-destructive/10",children:[c.jsx(Jc,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Discard Changes"})]}),c.jsxs(vr,{disabled:!x,onSelect:z=>{z.stopPropagation(),x&&h.onIgnoreFile(e.path)},children:[c.jsx(M3,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Ignore File"})]}),c.jsxs(vr,{disabled:!S,onSelect:z=>{z.stopPropagation(),S&&h.onIgnoreFolder(e.path)},children:[c.jsx(M3,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Ignore folder..."})]}),c.jsx(rW,{}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onCopyFilePath(e.path)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy File Path"})]}),c.jsxs(vr,{onSelect:z=>{z.stopPropagation(),h.onCopyRelativePath(e.path)},children:[c.jsx(Ba,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"text-xs font-medium",children:"Copy Relative Path"})]})]})]})}function vje({projectId:e,diffs:t,editorLabel:n,diffRenderMode:r,wrapLines:i,onOpenFile:s,onOpenInFinder:o,onDiscardFile:a,onIgnoreFile:l,onIgnoreFolder:d,onCopyFilePath:h,onCopyRelativePath:p,onListBranches:m,onPreviewMergeBranch:v,onMergeBranch:b,onCheckoutBranch:x,onCreateBranch:S,onGenerateCommitMessage:C,onInitializeGit:k,onGetGitHubPublishInfo:w,onCheckGitHubRepoAvailability:N,onSetupGitHub:A,onCommit:T,onSyncWithRemote:M,onLoadPatch:j,onDiffRenderModeChange:P,onWrapLinesChange:D}){var qn;const L=_.useMemo(()=>({onOpenFile:s,onOpenInFinder:o,onDiscardFile:a,onIgnoreFile:l,onIgnoreFolder:d,onCopyFilePath:h,onCopyRelativePath:p}),[s,o,a,l,d,h,p]),I=t.files.length>0,$=st(ye=>ye.isGenerating),H=st(ye=>ye.commitModeInFlight),z=st(ye=>ye.isSyncing),F=st(ye=>ye.isGitHubPublishModalOpen),K=st(ye=>ye.patchesByPath),W=st(ye=>ye.patchErrorsByPath),V=st(ye=>ye.loadingPatchPaths),X=st(ye=>ye.setIsGenerating),G=st(ye=>ye.setCommitModeInFlight),te=st(ye=>ye.setIsSyncing),oe=st(ye=>ye.setIsGitHubPublishModalOpen),ce=st(ye=>ye.reconcilePatches),de=st(ye=>ye.setPatchLoading),ee=st(ye=>ye.clearPatchLoading),ne=st(ye=>ye.clearPatchError),ie=st(ye=>ye.setPatchResult),ae=st(ye=>ye.setPatchError),Q=_.useRef(null),ke=_.useRef(null),we=_.useRef({}),Ae=_.useMemo(()=>t.files.map(ye=>ye.path),[t.files]),Xe=_.useMemo(()=>Ae.join("\0"),[Ae]),ft=I?"changes":"history",Ct=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.viewMode)??ft:ft}),ln=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.collapsedPaths)??A0:A0}),en=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.summary)??"":""}),bt=Ks(ye=>{var Qe;return e?((Qe=ye.projectUi[e])==null?void 0:Qe.description)??"":""}),fn=Ks(ye=>ye.reconcileCollapsedPaths),qe=Ks(ye=>ye.toggleCollapsedPath),Ht=Ks(ye=>ye.setViewMode),cn=Ks(ye=>ye.setCommitDraft),wt=Ks(ye=>ye.clearCommitDraft),zt=m0(ye=>e?ye.checkedPathsByProjectId[e]??A0:A0),tn=m0(ye=>ye.reconcileProject),Yt=m0(ye=>ye.setChecked),Kt=m0(ye=>ye.setAllChecked),sn=_.useRef(I);_.useEffect(()=>{e&&fn(e,Ae)},[Ae,Xe,e,fn]),_.useEffect(()=>{const ye=Object.fromEntries(t.files.map(zn=>[zn.path,zn.patchDigest]));ce(Ae,zn=>we.current[zn]===ye[zn]),we.current=ye},[t.files,Ae,Xe,ce]),_.useEffect(()=>{e&&tn(e,Ae)},[Ae,Xe,e,tn]),_.useEffect(()=>{if(!e)return;if(sn.current!==I){Ht(e,I?"changes":"history"),sn.current=I;return}sn.current=I},[I,e,Ht]);const Nn=_.useMemo(()=>t.files.filter(ye=>zt[ye.path]??!0).map(ye=>ye.path),[zt,t.files]),Ue=Nn.length,un=t.files.length>0&&Ue===t.files.length,wn=Ue>0&&Ue<t.files.length,kt=en.trim(),Xt=kt.length>0,Ce=H!==null,rt=$||Ce,gt=((qn=t.branchHistory)==null?void 0:qn.entries)??[],it=t.behindCount??0,jt=t.aheadCount??0,Bt=t.hasUpstream===!0,Et=t.hasUpstream===!1&&!!t.branchName,Lt=t.hasOriginRemote===!0,nn=t.branchName?t.branchName.split("/").map(ye=>encodeURIComponent(ye)).join("/"):null;let $t;Et?$t="publish":it>0?$t="pull":$t="fetch";const re=t.originRepoSlug&&nn?`https://github.com/${t.originRepoSlug}/compare/${nn}?expand=1`:null,je=!!(Bt&&re&&t.branchName&&t.branchName!==t.defaultBranchName),ht=t.status==="ready"&&Ue>0&&!rt,Ne=t.status==="ready"&&Ue>0&&Xt&&!rt,We=Lt?"commit_and_push":"commit_only",Ke=t.branchName??"current branch";async function Je(ye){if(Ne){G(ye);try{const Qe=await T({paths:Nn,summary:kt,description:bt.trim(),mode:ye});(Qe!=null&&Qe.ok||Qe!=null&&Qe.localCommitCreated)&&e&&wt(e)}finally{G(null)}}}async function pt(){if(ht){X(!0);try{const ye=await C({paths:Nn});e&&cn(e,{summary:ye.subject,description:ye.body})}finally{X(!1)}}}function Ot(ye){if(!(!(ye.metaKey||ye.ctrlKey)||ye.key!=="Enter")){if(ye.preventDefault(),Xt){Je(We);return}pt()}}async function xt(ye=$t){if(!(t.status!=="ready"||z)){te(!0);try{await M(ye)}finally{te(!1)}}}const Be=_.useCallback(async ye=>{var Ur;const{patchesByPath:Qe,loadingPatchPaths:zn}=st.getState();if(Qe[ye]!==void 0||zn[ye])return Qe[ye]??"";de(ye),ne(ye);try{const ue=await j(ye);ie(ye,ue);const Ye=(Ur=t.files.find(ct=>ct.path===ye))==null?void 0:Ur.patchDigest;return Ye&&(we.current={...we.current,[ye]:Ye}),ue}catch(ue){const Ye=ue instanceof Error?ue.message:String(ue);throw ae(ye,Ye),ue}finally{ee(ye)}},[ne,ee,t.files,j,ae,de,ie]),Ft=_.useCallback(ye=>ye.path,[]),Ln=_.useCallback(({item:ye})=>{const Qe=ln[ye.path]??!0,zn=zt[ye.path]??!0;return c.jsx("div",{className:"pb-1.5",children:c.jsx(TA.Provider,{init:void 0,children:c.jsx(gje,{file:ye,rootRef:Q,projectId:e,isCollapsed:Qe,isChecked:zn,editorLabel:n,diffRenderMode:r,wrapLines:i,onToggleCollapsed:()=>{e&&qe(e,ye.path)},onToggleChecked:()=>{e&&Yt(e,ye.path,!zn)},fileActions:L,patch:K[ye.path],patchError:W[ye.path],isPatchLoading:!!V[ye.path],onLoadPatch:Be})})})},[zt,ln,r,n,L,Be,V,W,K,e,Yt,qe,i]);_.useEffect(()=>{var Qe,zn;const ye=(zn=(Qe=ke.current)==null?void 0:Qe.getScrollableNode)==null?void 0:zn.call(Qe);Q.current=ye instanceof HTMLElement?ye:null},[Ct,t.files.length]);let Gt;wn?Gt="Select all files for commit":un?Gt="Unselect all files from commit":Gt="Select all files for commit";let Jt;t.status==="ready"?Lt?$t==="publish"?Jt=c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(Z0,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Publish Branch"})]}):Jt=c.jsxs("div",{className:"flex items-center gap-1",children:[$t==="fetch"?c.jsxs(Js,{delayDuration:0,children:[c.jsx(Zs,{asChild:!0,children:c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(sj,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Fetch"})]})}),c.jsx(Ms,{children:cje(t.lastFetchedAt)})]}):c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>void xt(),disabled:z,className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(tj,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Pull"}),c.jsx("span",{className:"inline-flex min-w-4 items-center justify-center rounded-full bg-muted px-1 text-[10px] text-muted-foreground",children:it})]}),Bt&&jt>0?c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>void xt("push"),disabled:z,className:"h-7 gap-1.5 px-2 text-xs",children:[z?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}):c.jsx(Z0,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Push"}),c.jsx("span",{className:"inline-flex min-w-4 items-center justify-center rounded-full bg-primary-foreground/15 px-1 text-[10px] text-primary-foreground",children:jt})]}):null,je&&re?c.jsxs(Me,{variant:"ghost",size:"sm",onClick:()=>{typeof window>"u"||window.open(re,"_blank","noopener,noreferrer")},className:"h-7 gap-1.5 px-2 text-xs hover:!bg-transparent hover:!border-border/0",children:[c.jsx(x7,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"PR"})]}):null]}):Jt=c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>oe(!0),className:"h-7 gap-1.5 px-3 text-xs",children:[c.jsx(soe,{className:"h-3.5 w-3.5"}),c.jsx("span",{children:"Push to GitHub"})]}):Jt=null;let xr;t.status==="no_repo"?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsxs("div",{className:"flex max-w-[280px] flex-col items-center gap-3",children:[c.jsx("p",{className:"text-sm text-muted-foreground",children:"Initialize git here to start tracking branches, diffs, and history."}),c.jsx(Me,{size:"sm",onClick:()=>void k(),children:"Init Git"})]})}):Ct==="history"?gt.length===0?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsxs("p",{className:"text-sm text-muted-foreground",children:["No recent commits on ",t.branchName??"this branch","."]})}):xr=c.jsx("div",{className:"h-full overflow-y-auto [scrollbar-gutter:stable] space-y-1.5 p-1.5",children:gt.map((ye,Qe)=>c.jsx(uje,{entry:ye,isPendingPush:Qe<jt},ye.sha))}):t.files.length===0?xr=c.jsx("div",{className:"flex h-full items-center justify-center px-6 py-3 text-center",children:c.jsx("p",{className:"text-sm text-muted-foreground",children:"No file changes."})}):xr=null;let In;Xt?Ce?In=c.jsx(jn,{strokeWidth:2.5,className:"size-3 shrink-0 animate-spin"}):We==="commit_and_push"&&t.hasUpstream?In=c.jsx(Z0,{strokeWidth:2.5,className:"size-3 shrink-0"}):We==="commit_and_push"?In=c.jsx(b7,{strokeWidth:2.5,className:"size-3 shrink-0"}):In=c.jsx(js,{strokeWidth:2.5,className:"size-3 shrink-0"}):$?In=c.jsx(jn,{strokeWidth:2.5,className:"size-3 shrink-0 animate-spin"}):In=c.jsx(Foe,{strokeWidth:2.5,className:"size-3 shrink-0"});let Gn;return Xt?Ce?Gn=H==="commit_only"?"Committing...":"Committing & Pushing...":We==="commit_only"?Gn=c.jsxs(c.Fragment,{children:["Commit to ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):t.hasUpstream?Gn=c.jsxs(c.Fragment,{children:["Commit & push to ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):Gn=c.jsxs(c.Fragment,{children:["Commit & publish ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}):$?Gn="Generating...":Gn=c.jsxs(c.Fragment,{children:["Generate message for ",c.jsx(Cc,{strokeWidth:2.5,className:"mr-[4.5px] ml-0.5 inline size-3 "}),Ke]}),c.jsx("div",{className:"h-full min-h-0 border-l border-border bg-background md:min-w-[370px]",children:c.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[c.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border pl-2.5 pr-2 py-2",children:[c.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:c.jsx(mje,{currentBranchName:t.branchName,onListBranches:m,onPreviewMergeBranch:v,onMergeBranch:b,onCheckoutBranch:x,onCreateBranch:S})}),Jt]}),c.jsxs("div",{className:"relative min-h-0 flex-1",children:[c.jsx("div",{className:"sticky top-0 z-30 pl-[14px] pr-[12px] pt-[6px] bg-gradient-to-b from-background to-transparent",children:c.jsx("div",{className:"relative h-[40px] flex min-w-0 items-center justify-center gap-[13px]",children:c.jsxs("div",{className:"flex min-w-0 flex-1 items-center justify-between gap-[13px] relative",children:[Ct==="changes"?c.jsxs("div",{className:"flex items-center gap-2 text-[11px] text-muted-foreground/70",children:[c.jsx(zJ,{checked:un,mixed:wn,label:Gt,onClick:()=>{!e||t.files.length===0||Kt(e,Ae,wn?!0:!un)}}),c.jsxs("span",{children:[Ue," files"]})]}):c.jsx("div",{}),c.jsx("div",{className:"pointer-events-none absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2",children:c.jsx("div",{className:"pointer-events-auto",children:c.jsx(Es,{value:Ct,onValueChange:ye=>{e&&ije(ye)&&Ht(e,ye)},size:"sm",optionClassName:"flex-1 justify-center",options:[{value:"changes",label:"Changes"},{value:"history",label:"History"}]})})}),Ct==="changes"?c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsx(AT,{label:"Unified diff",active:r==="unified",onClick:()=>P("unified"),children:c.jsx(sae,{className:"h-4 w-4"})}),c.jsx(AT,{label:"Side-by-side diff",active:r==="split",onClick:()=>P("split"),children:c.jsx(use,{className:"h-4 w-4"})}),c.jsx(AT,{label:i?"Disable word wrap":"Enable word wrap",active:i,onClick:()=>D(!i),children:c.jsx(Lae,{className:"h-4 w-4"})})]}):c.jsx("div",{})]})})}),c.jsxs("div",{className:"h-full min-h-0",children:[xr,t.status!=="no_repo"&&Ct!=="history"&&t.files.length>0&&c.jsxs("div",{className:"relative h-full min-h-0",children:[c.jsx(dK,{ref:ke,data:t.files,keyExtractor:Ft,renderItem:Ln,extraData:{collapsedPaths:ln,checkedPaths:zt,patchesByPath:K,patchErrorsByPath:W,loadingPatchPaths:V,diffRenderMode:r,wrapLines:i},estimatedItemSize:44,className:"h-full overflow-y-auto [scrollbar-gutter:stable] p-1.5",contentContainerStyle:{paddingBottom:Ct==="changes"?220:40}}),Ct==="changes"?c.jsxs("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 py-1 pb-6 z-30",children:[c.jsx("div",{className:"absolute inset-x-0 bottom-0 top-0 bg-gradient-to-t from-background to-transparent"}),c.jsx("div",{className:"pointer-events-auto relative",children:c.jsxs("div",{className:"space-y-0 rounded-xl mx-auto max-w-[700px]",children:[c.jsx(dn,{value:en,onChange:ye=>{e&&cn(e,{summary:ye.target.value,description:bt})},onKeyDown:Ot,placeholder:"Commit message (override)",className:"rounded-t-xl rounded-b-none px-3",disabled:rt||t.status!=="ready"}),c.jsx(Al,{value:bt,onChange:ye=>{e&&cn(e,{summary:en,description:ye.target.value})},onKeyDown:Ot,placeholder:"Description",rows:5,className:"-mt-px rounded-t-none rounded-b-xl px-3 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background mb-2",disabled:rt||t.status!=="ready"}),c.jsx("div",{className:"w-full flex flex-row",children:c.jsxs(xh,{children:[c.jsx(yh,{asChild:!0,children:c.jsx(Me,{type:"button",className:"-mt-px w-full rounded-xl",disabled:Xt?!Ne:!ht,onClick:()=>{if(Xt){Je(We);return}pt()},children:c.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[In,c.jsx("span",{className:"min-w-0 truncate text-left",children:Gn})]})})}),t.hasUpstream?c.jsx(Id,{children:c.jsx(vr,{disabled:!Xt||!Ne,onSelect:ye=>{ye.stopPropagation(),Je("commit_only")},children:"Commit Only"})}):null]})})]})})]}):null]})]})]}),c.jsx(hje,{open:F,onOpenChange:oe,onGetGitHubPublishInfo:w,onCheckGitHubRepoAvailability:N,onPublish:A})]})})}const bje=_.memo(vje);function xje(e,t){const n=getComputedStyle(e),r=parseFloat(n.fontSize);return t*r}function yje(e,t){const n=getComputedStyle(e.ownerDocument.body),r=parseFloat(n.fontSize);return t*r}function _je(e){return e/100*window.innerHeight}function Sje(e){return e/100*window.innerWidth}function wje(e){switch(typeof e){case"number":return[e,"px"];case"string":{const t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}function Fv({groupSize:e,panelElement:t,styleProp:n}){let r;const[i,s]=wje(n);switch(s){case"%":{r=i/100*e;break}case"px":{r=i;break}case"rem":{r=yje(t,i);break}case"em":{r=xje(t,i);break}case"vh":{r=_je(i);break}case"vw":{r=Sje(i);break}}return r}function Xs(e){return parseFloat(e.toFixed(3))}function Hm({group:e}){const{orientation:t,panels:n}=e;return n.reduce((r,i)=>(r+=t==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,r),0)}function FR(e){const{panels:t}=e,n=Hm({group:e});return n===0?t.map(r=>({groupResizeBehavior:r.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:r.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:r.panelConstraints.disabled,minSize:0,maxSize:100,panelId:r.id})):t.map(r=>{const{element:i,panelConstraints:s}=r;let o=0;if(s.collapsedSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.collapsedSize});o=Xs(h/n*100)}let a;if(s.defaultSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.defaultSize});a=Xs(h/n*100)}let l=0;if(s.minSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.minSize});l=Xs(h/n*100)}let d=100;if(s.maxSize!==void 0){const h=Fv({groupSize:n,panelElement:i,styleProp:s.maxSize});d=Xs(h/n*100)}return{groupResizeBehavior:s.groupResizeBehavior,collapsedSize:o,collapsible:s.collapsible===!0,defaultSize:a,disabled:s.disabled,minSize:l,maxSize:d,panelId:r.id}})}function ar(e,t="Assertion error"){if(!e)throw Error(t)}function UR(e,t){return Array.from(t).sort(e==="horizontal"?Cje:kje)}function Cje(e,t){const n=e.element.offsetLeft-t.element.offsetLeft;return n!==0?n:e.element.offsetWidth-t.element.offsetWidth}function kje(e,t){const n=e.element.offsetTop-t.element.offsetTop;return n!==0?n:e.element.offsetHeight-t.element.offsetHeight}function FJ(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function UJ(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function Eje({orientation:e,rects:t,targetRect:n}){const r={x:n.x+n.width/2,y:n.y+n.height/2};let i,s=Number.MAX_VALUE;for(const o of t){const{x:a,y:l}=UJ(r,o),d=e==="horizontal"?a:l;d<s&&(s=d,i=o)}return ar(i,"No rect found"),i}let R0;function Nje(){return R0===void 0&&(typeof matchMedia=="function"?R0=!!matchMedia("(pointer:coarse)").matches:R0=!1),R0}function HJ(e){const{element:t,orientation:n,panels:r,separators:i}=e,s=UR(n,Array.from(t.children).filter(FJ).map(b=>({element:b}))).map(({element:b})=>b),o=[];let a=!1,l=!1,d=-1,h=-1,p=0,m,v=[];{let b=-1;for(const x of s)x.hasAttribute("data-panel")&&(b++,x.ariaDisabled===null&&(p++,d===-1&&(d=b),h=b))}if(p>1){let b=-1;for(const x of s)if(x.hasAttribute("data-panel")){b++;const S=r.find(C=>C.element===x);if(S){if(m){const C=m.element.getBoundingClientRect(),k=x.getBoundingClientRect();let w;if(l){const N=n==="horizontal"?new DOMRect(C.right,C.top,0,C.height):new DOMRect(C.left,C.bottom,C.width,0),A=n==="horizontal"?new DOMRect(k.left,k.top,0,k.height):new DOMRect(k.left,k.top,k.width,0);switch(v.length){case 0:{w=[N,A];break}case 1:{const T=v[0],M=Eje({orientation:n,rects:[C,k],targetRect:T.element.getBoundingClientRect()});w=[T,M===C?A:N];break}default:{w=v;break}}}else v.length?w=v:w=[n==="horizontal"?new DOMRect(C.right,k.top,k.left-C.right,k.height):new DOMRect(k.left,C.bottom,k.width,k.top-C.bottom)];for(const N of w){let A="width"in N?N:N.element.getBoundingClientRect();const T=Nje()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(A.width<T){const j=T-A.width;A=new DOMRect(A.x-j/2,A.y,A.width+j,A.height)}if(A.height<T){const j=T-A.height;A=new DOMRect(A.x,A.y-j/2,A.width,A.height+j)}const M=b<=d||b>h;!a&&!M&&o.push({group:e,groupSize:Hm({group:e}),panels:[m,S],separator:"width"in N?void 0:N,rect:A}),a=!1}}l=!1,m=S,v=[]}}else if(x.hasAttribute("data-separator")){x.ariaDisabled!==null&&(a=!0);const S=i.find(C=>C.element===x);S?v.push(S):(m=void 0,v=[])}else l=!0}return o}var od,zU;let WJ=(zU=class{constructor(){Pu(this,od,{})}addListener(t,n){const r=di(this,od)[t];return r===void 0?di(this,od)[t]=[n]:r.includes(n)||r.push(n),()=>{this.removeListener(t,n)}}emit(t,n){const r=di(this,od)[t];if(r!==void 0)if(r.length===1)r[0].call(null,n);else{let i=!1,s=null;const o=Array.from(r);for(let a=0;a<o.length;a++){const l=o[a];try{l.call(null,n)}catch(d){s===null&&(i=!0,s=d)}}if(i)throw s}}removeAllListeners(){Ho(this,od,{})}removeListener(t,n){const r=di(this,od)[t];if(r!==void 0){const i=r.indexOf(n);i>=0&&r.splice(i,1)}}},od=new WeakMap,zU),_l=new Map;const VJ=new WJ;function Tje(e){_l=new Map(_l),_l.delete(e)}function dF(e,t){for(const[n]of _l)if(n.id===e)return n}function gd(e,t){for(const[n,r]of _l)if(n.id===e)return r;if(t)throw Error(`Could not find data for Group with id ${e}`)}function Ih(){return _l}function QP(e,t){return VJ.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function Xc(e,t){const n=_l.get(e);_l=new Map(_l),_l.set(e,t),VJ.emit("groupChange",{group:e,prev:n,next:t})}function Aje(e,t,n){let r,i={x:1/0,y:1/0};for(const s of t){const o=UJ(n,s.rect);switch(e){case"horizontal":{o.x<=i.x&&(r=s,i=o);break}case"vertical":{o.y<=i.y&&(r=s,i=o);break}}}return r?{distance:i,hitRegion:r}:void 0}function Rje(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Mje(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:pF(e),b:pF(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();ar(r,"Stacking order can only be calculated for elements with a common ancestor");const i={a:hF(fF(n.a)),b:hF(fF(n.b))};if(i.a===i.b){const s=r.childNodes,o={a:n.a.at(-1),b:n.b.at(-1)};let a=s.length;for(;a--;){const l=s[a];if(l===o.a)return 1;if(l===o.b)return-1}}return Math.sign(i.a-i.b)}const jje=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Ije(e){const t=getComputedStyle(KJ(e)??e).display;return t==="flex"||t==="inline-flex"}function Pje(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||Ije(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||jje.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function fF(e){let t=e.length;for(;t--;){const n=e[t];if(ar(n,"Missing node"),Pje(n))return n}return null}function hF(e){return e&&Number(getComputedStyle(e).zIndex)||0}function pF(e){const t=[];for(;e;)t.push(e),e=KJ(e);return t}function KJ(e){const{parentNode:t}=e;return Rje(t)?t.host:t}function Lje(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Oje({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!FJ(n)||n.contains(e)||e.contains(n))return!0;if(Mje(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Lje(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function eL(e,t){const n=[];return t.forEach((r,i)=>{if(i.disabled)return;const s=HJ(i),o=Aje(i.orientation,s,{x:e.clientX,y:e.clientY});o&&o.distance.x<=0&&o.distance.y<=0&&Oje({groupElement:i.element,hitRegion:o.hitRegion.rect,pointerEventTarget:e.target})&&n.push(o.hitRegion)}),n}function Dje(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function Cs(e,t,n=0){return Math.abs(Xs(e)-Xs(t))<=n}function ul(e,t){return Cs(e,t)?0:e>t?1:-1}function Vp({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){const{collapsedSize:i=0,collapsible:s,disabled:o,maxSize:a=100,minSize:l=0}=t;if(o&&!e)return n;if(ul(r,l)<0)if(s){const d=(i+l)/2;ul(r,d)<0?r=i:r=l}else r=l;return r=Math.min(a,r),r=Xs(r),r}function Sx({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:s}){if(Cs(e,0))return t;const o=s==="imperative-api",a=Object.values(t),l=Object.values(i),d=[...a],[h,p]=r;ar(h!=null,"Invalid first pivot index"),ar(p!=null,"Invalid second pivot index");let m=0;switch(s){case"keyboard":{{const x=e<0?p:h,S=n[x];ar(S,`Panel constraints not found for index ${x}`);const{collapsedSize:C=0,collapsible:k,minSize:w=0}=S;if(k){const N=a[x];if(ar(N!=null,`Previous layout not found for panel index ${x}`),Cs(N,C)){const A=w-N;ul(A,Math.abs(e))>0&&(e=e<0?0-A:A)}}}{const x=e<0?h:p,S=n[x];ar(S,`No panel constraints found for index ${x}`);const{collapsedSize:C=0,collapsible:k,minSize:w=0}=S;if(k){const N=a[x];if(ar(N!=null,`Previous layout not found for panel index ${x}`),Cs(N,w)){const A=N-C;ul(A,Math.abs(e))>0&&(e=e<0?0-A:A)}}}break}default:{const x=e<0?p:h,S=n[x];ar(S,`Panel constraints not found for index ${x}`);const C=a[x],{collapsible:k,collapsedSize:w,minSize:N}=S;if(k&&ul(C,N)<0)if(e>0){const A=N-w,T=A/2,M=C+e;ul(M,N)<0&&(e=ul(e,T)<=0?0:A)}else{const A=N-w,T=100-A/2,M=C-e;ul(M,N)<0&&(e=ul(100+e,T)>0?0:-A)}break}}{const x=e<0?1:-1;let S=e<0?p:h,C=0;for(;;){const w=a[S];ar(w!=null,`Previous layout not found for panel index ${S}`);const N=Vp({overrideDisabledPanels:o,panelConstraints:n[S],prevSize:w,size:100})-w;if(C+=N,S+=x,S<0||S>=n.length)break}const k=Math.min(Math.abs(e),Math.abs(C));e=e<0?0-k:k}{let x=e<0?h:p;for(;x>=0&&x<n.length;){const S=Math.abs(e)-Math.abs(m),C=a[x];ar(C!=null,`Previous layout not found for panel index ${x}`);const k=C-S,w=Vp({overrideDisabledPanels:o,panelConstraints:n[x],prevSize:C,size:k});if(!Cs(C,w)&&(m+=C-w,d[x]=w,m.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?x--:x++}}if(Dje(l,d))return i;{const x=e<0?p:h,S=a[x];ar(S!=null,`Previous layout not found for panel index ${x}`);const C=S+m,k=Vp({overrideDisabledPanels:o,panelConstraints:n[x],prevSize:S,size:C});if(d[x]=k,!Cs(k,C)){let w=C-k,N=e<0?p:h;for(;N>=0&&N<n.length;){const A=d[N];ar(A!=null,`Previous layout not found for panel index ${N}`);const T=A+w,M=Vp({overrideDisabledPanels:o,panelConstraints:n[N],prevSize:A,size:T});if(Cs(A,M)||(w-=M-A,d[N]=M),Cs(w,0))break;e>0?N--:N++}}}const v=Object.values(d).reduce((x,S)=>S+x,0);if(!Cs(v,100,.1))return i;const b=Object.keys(i);return d.reduce((x,S,C)=>(x[b[C]]=S,x),{})}function uh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(t[n]===void 0||ul(e[n],t[n])!==0)return!1;return!0}function dh({layout:e,panelConstraints:t}){const n=Object.values(e),r=[...n],i=r.reduce((a,l)=>a+l,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(a=>`${a}%`).join(", ")}`);if(!Cs(i,100)&&r.length>0)for(let a=0;a<t.length;a++){const l=r[a];ar(l!=null,`No layout data found for index ${a}`);const d=100/i*l;r[a]=d}let s=0;for(let a=0;a<t.length;a++){const l=n[a];ar(l!=null,`No layout data found for index ${a}`);const d=r[a];ar(d!=null,`No layout data found for index ${a}`);const h=Vp({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:l,size:d});d!=h&&(s+=d-h,r[a]=h)}if(!Cs(s,0))for(let a=0;a<t.length;a++){const l=r[a];ar(l!=null,`No layout data found for index ${a}`);const d=l+s,h=Vp({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:l,size:d});if(l!==h&&(s-=h-l,r[a]=h,Cs(s,0)))break}const o=Object.keys(e);return r.reduce((a,l,d)=>(a[o[d]]=l,a),{})}function GJ({groupId:e,panelId:t}){const n=()=>{const a=Ih();for(const[l,{defaultLayoutDeferred:d,derivedPanelConstraints:h,layout:p,groupSize:m,separatorToPanels:v}]of a)if(l.id===e)return{defaultLayoutDeferred:d,derivedPanelConstraints:h,group:l,groupSize:m,layout:p,separatorToPanels:v};throw Error(`Group ${e} not found`)},r=()=>{const a=n().derivedPanelConstraints.find(l=>l.panelId===t);if(a!==void 0)return a;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{const a=n().group.panels.find(l=>l.id===t);if(a!==void 0)return a;throw Error(`Layout not found for Panel ${t}`)},s=()=>{const a=n().layout[t];if(a!==void 0)return a;throw Error(`Layout not found for Panel ${t}`)},o=a=>{const l=s();if(a===l)return;const{defaultLayoutDeferred:d,derivedPanelConstraints:h,group:p,groupSize:m,layout:v,separatorToPanels:b}=n(),x=p.panels.findIndex(w=>w.id===t),S=x===p.panels.length-1,C=Sx({delta:S?l-a:a-l,initialLayout:v,panelConstraints:h,pivotIndices:S?[x-1,x]:[x,x+1],prevLayout:v,trigger:"imperative-api"}),k=dh({layout:C,panelConstraints:h});uh(v,k)||Xc(p,{defaultLayoutDeferred:d,derivedPanelConstraints:h,groupSize:m,layout:k,separatorToPanels:b})};return{collapse:()=>{const{collapsible:a,collapsedSize:l}=r(),{mutableValues:d}=i(),h=s();a&&h!==l&&(d.expandToSize=h,o(l))},expand:()=>{const{collapsible:a,collapsedSize:l,minSize:d}=r(),{mutableValues:h}=i(),p=s();if(a&&p===l){let m=h.expandToSize??d;m===0&&(m=1),o(m)}},getSize:()=>{const{group:a}=n(),l=s(),{element:d}=i(),h=a.orientation==="horizontal"?d.offsetWidth:d.offsetHeight;return{asPercentage:l,inPixels:h}},isCollapsed:()=>{const{collapsible:a,collapsedSize:l}=r(),d=s();return a&&Cs(l,d)},resize:a=>{const{group:l}=n(),{element:d}=i(),h=Hm({group:l}),p=Fv({groupSize:h,panelElement:d,styleProp:a}),m=Xs(p/h*100);o(m)}}}function mF(e){if(e.defaultPrevented)return;const t=Ih();eL(e,t).forEach(n=>{if(n.separator){const r=n.panels.find(i=>i.panelConstraints.defaultSize!==void 0);if(r){const i=r.panelConstraints.defaultSize,s=GJ({groupId:n.group.id,panelId:r.id});s&&i!==void 0&&(s.resize(i),e.preventDefault())}}})}function MS(e){const t=Ih();for(const[n]of t)if(n.separators.some(r=>r.element===e))return n;throw Error("Could not find parent Group for separator element")}function qJ({groupId:e}){const t=()=>{const n=Ih();for(const[r,i]of n)if(r.id===e)return{group:r,...i};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){const{defaultLayoutDeferred:n,layout:r}=t();return n?{}:r},setLayout(n){const{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:s,groupSize:o,layout:a,separatorToPanels:l}=t(),d=dh({layout:n,panelConstraints:i});return r?a:(uh(a,d)||Xc(s,{defaultLayoutDeferred:r,derivedPanelConstraints:i,groupSize:o,layout:d,separatorToPanels:l}),d)}}}function uf(e,t){const n=MS(e),r=gd(n.id,!0),i=n.separators.find(h=>h.element===e);ar(i,"Matching separator not found");const s=r.separatorToPanels.get(i);ar(s,"Matching panels not found");const o=s.map(h=>n.panels.indexOf(h)),a=qJ({groupId:n.id}).getLayout(),l=Sx({delta:t,initialLayout:a,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:a,trigger:"keyboard"}),d=dh({layout:l,panelConstraints:r.derivedPanelConstraints});uh(a,d)||Xc(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:d,separatorToPanels:r.separatorToPanels})}function gF(e){if(e.defaultPrevented)return;const t=e.currentTarget,n=MS(t);if(!n.disabled)switch(e.key){case"ArrowDown":{e.preventDefault(),n.orientation==="vertical"&&uf(t,5);break}case"ArrowLeft":{e.preventDefault(),n.orientation==="horizontal"&&uf(t,-5);break}case"ArrowRight":{e.preventDefault(),n.orientation==="horizontal"&&uf(t,5);break}case"ArrowUp":{e.preventDefault(),n.orientation==="vertical"&&uf(t,-5);break}case"End":{e.preventDefault(),uf(t,100);break}case"Enter":{e.preventDefault();const r=MS(t),i=gd(r.id,!0),{derivedPanelConstraints:s,layout:o,separatorToPanels:a}=i,l=r.separators.find(m=>m.element===t);ar(l,"Matching separator not found");const d=a.get(l);ar(d,"Matching panels not found");const h=d[0],p=s.find(m=>m.panelId===h.id);if(ar(p,"Panel metadata not found"),p.collapsible){const m=o[h.id],v=p.collapsedSize===m?r.mutableState.expandedPanelSizes[h.id]??p.minSize:p.collapsedSize;uf(t,v-m)}break}case"F6":{e.preventDefault();const r=MS(t).separators.map(o=>o.element),i=Array.from(r).findIndex(o=>o===e.currentTarget);ar(i!==null,"Index not found");const s=e.shiftKey?i>0?i-1:r.length-1:i+1<r.length?i+1:0;r[s].focus({preventScroll:!0});break}case"Home":{e.preventDefault(),uf(t,-100);break}}}let mm={cursorFlags:0,state:"inactive"};const tL=new WJ;function fh(){return mm}function $je(e){return tL.addListener("change",e)}function zje(e){const t=mm,n={...mm};n.cursorFlags=e,mm=n,tL.emit("change",{prev:t,next:n})}function gm(e){const t=mm;mm=e,tL.emit("change",{prev:t,next:e})}function vF(e){if(e.defaultPrevented||e.pointerType==="mouse"&&e.button>0)return;const t=Ih(),n=eL(e,t),r=new Map;let i=!1;n.forEach(s=>{s.separator&&(i||(i=!0,s.separator.element.focus({preventScroll:!0})));const o=t.get(s.group);o&&r.set(s.group,o.layout)}),gm({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}const Bje=e=>e,RT=()=>{},YJ=1,XJ=2,JJ=4,ZJ=8,bF=3,xF=12;let M0;function yF(){return M0===void 0&&(M0=!1,typeof window<"u"&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(M0=!0)),M0}function Fje({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case"active":case"hover":t.forEach(s=>{if(!s.mutableState.disableCursor)switch(s.orientation){case"horizontal":{r++;break}case"vertical":{i++;break}}})}if(!(r===0&&i===0)){switch(n){case"active":{if(e&&yF()){const s=(e&YJ)!==0,o=(e&XJ)!==0,a=(e&JJ)!==0,l=(e&ZJ)!==0;if(s)return a?"se-resize":l?"ne-resize":"e-resize";if(o)return a?"sw-resize":l?"nw-resize":"w-resize";if(a)return"s-resize";if(l)return"n-resize"}break}}return yF()?r>0&&i>0?"move":r>0?"ew-resize":"ns-resize":r>0&&i>0?"grab":r>0?"col-resize":"row-resize"}}const _F=new WeakMap;function nL(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=_F.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));const r=fh();switch(r.state){case"active":case"hover":{const i=Fje({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(o=>o.group),state:r.state}),s=`*, *:hover {cursor: ${i} !important; }`;if(t===s)return;t=s,i?n.cssRules.length===0?n.insertRule(s):n.replaceSync(s):n.cssRules.length===1&&n.deleteRule(0);break}case"inactive":{t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}}_F.set(e,{prevStyle:t,styleSheet:n})}function QJ({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:s,prevCursorFlags:o}){let a=0;n.forEach(d=>{const{group:h,groupSize:p}=d,{orientation:m,panels:v}=h,{disableCursor:b}=h.mutableState;let x=0;s?m==="horizontal"?x=(t.clientX-s.x)/p*100:x=(t.clientY-s.y)/p*100:m==="horizontal"?x=t.clientX<0?-100:100:x=t.clientY<0?-100:100;const S=r.get(h),C=i.get(h);if(!S||!C)return;const{defaultLayoutDeferred:k,derivedPanelConstraints:w,groupSize:N,layout:A,separatorToPanels:T}=C;if(w&&A&&T){const M=Sx({delta:x,initialLayout:S,panelConstraints:w,pivotIndices:d.panels.map(j=>v.indexOf(j)),prevLayout:A,trigger:"mouse-or-touch"});if(uh(M,A)){if(x!==0&&!b)switch(m){case"horizontal":{a|=x<0?YJ:XJ;break}case"vertical":{a|=x<0?JJ:ZJ;break}}}else Xc(d.group,{defaultLayoutDeferred:k,derivedPanelConstraints:w,groupSize:N,layout:M,separatorToPanels:T})}});let l=0;t.movementX===0?l|=o&bF:l|=a&bF,t.movementY===0?l|=o&xF:l|=a&xF,zje(l),nL(e)}function SF(e){const t=Ih(),n=fh();switch(n.state){case"active":QJ({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function wF(e){if(e.defaultPrevented)return;const t=fh(),n=Ih();switch(t.state){case"active":{if(e.buttons===0){gm({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(r=>{const i=gd(r.group.id,!0);Xc(r.group,i)});return}QJ({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break}default:{const r=eL(e,n);r.length===0?t.state!=="inactive"&&gm({cursorFlags:0,state:"inactive"}):gm({cursorFlags:0,hitRegions:r,state:"hover"}),nL(e.currentTarget);break}}}function CF(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(fh().state){case"hover":gm({cursorFlags:0,state:"inactive"})}}function kF(e){if(e.defaultPrevented||e.pointerType==="mouse"&&e.button>0)return;const t=fh();switch(t.state){case"active":gm({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(nL(e.currentTarget),t.hitRegions.forEach(n=>{const r=gd(n.group.id,!0);Xc(n.group,r)}),e.preventDefault())}}function EF(e){let t=0,n=0;const r={};for(const s of e)if(s.defaultSize!==void 0){t++;const o=Xs(s.defaultSize);n+=o,r[s.panelId]=o}else r[s.panelId]=void 0;const i=e.length-t;if(i!==0){const s=Xs((100-n)/i);for(const o of e)o.defaultSize===void 0&&(r[o.panelId]=s)}return r}function Uje(e,t,n){if(!n[0])return;const r=e.panels.find(l=>l.element===t);if(!r||!r.onResize)return;const i=Hm({group:e}),s=e.orientation==="horizontal"?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,a={asPercentage:Xs(s/i*100),inPixels:s};r.mutableValues.prevSize=a,r.onResize(a,r.id,o)}function Hje(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0}function Wje({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,s=0,o=!1;const a=new Map,l=[];for(const p of e.panels){const m=r[p.id]??0;switch(p.panelConstraints.groupResizeBehavior){case"preserve-pixel-size":{o=!0;const v=m/100*n,b=Xs(v/t*100);a.set(p.id,b),i+=b;break}case"preserve-relative-size":default:{l.push(p.id),s+=m;break}}}if(!o||l.length===0)return r;const d=100-i,h={...r};if(a.forEach((p,m)=>{h[m]=p}),s>0)for(const p of l){const m=r[p]??0;h[p]=Xs(m/s*d)}else{const p=Xs(d/l.length);for(const m of l)h[m]=p}return h}function Vje(e,t){const n=e.map(i=>i.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(const i of n)if(!r.includes(i))return!1;return!0}const Ep=new Map;function Kje(e){let t=!0;ar(e.element.ownerDocument.defaultView,"Cannot register an unmounted Group");const n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,s=new n(b=>{for(const x of b){const{borderBoxSize:S,target:C}=x;if(C===e.element){if(t){const k=Hm({group:e});if(k===0)return;const w=gd(e.id);if(!w)return;const N=FR(e),A=w.defaultLayoutDeferred?EF(N):w.layout,T=Wje({group:e,nextGroupSize:k,prevGroupSize:w.groupSize,prevLayout:A}),M=dh({layout:T,panelConstraints:N});if(!w.defaultLayoutDeferred&&uh(w.layout,M)&&Hje(w.derivedPanelConstraints,N)&&w.groupSize===k)return;Xc(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:N,groupSize:k,layout:M,separatorToPanels:w.separatorToPanels})}}else Uje(e,C,S)}});s.observe(e.element),e.panels.forEach(b=>{ar(!r.has(b.id),`Panel ids must be unique; id "${b.id}" was used more than once`),r.add(b.id),b.onResize&&s.observe(b.element)});const o=Hm({group:e}),a=FR(e),l=e.panels.map(({id:b})=>b).join(",");let d=e.mutableState.defaultLayout;d&&(Vje(e.panels,d)||(d=void 0));const h=e.mutableState.layouts[l]??d??EF(a),p=dh({layout:h,panelConstraints:a}),m=e.element.ownerDocument;Ep.set(m,(Ep.get(m)??0)+1);const v=new Map;return HJ(e).forEach(b=>{b.separator&&v.set(b.separator,b.panels)}),Xc(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:a,groupSize:o,layout:p,separatorToPanels:v}),e.separators.forEach(b=>{ar(!i.has(b.id),`Separator ids must be unique; id "${b.id}" was used more than once`),i.add(b.id),b.element.addEventListener("keydown",gF)}),Ep.get(m)===1&&(m.addEventListener("dblclick",mF,!0),m.addEventListener("pointerdown",vF,!0),m.addEventListener("pointerleave",SF),m.addEventListener("pointermove",wF),m.addEventListener("pointerout",CF),m.addEventListener("pointerup",kF,!0)),function(){t=!1,Ep.set(m,Math.max(0,(Ep.get(m)??0)-1)),Tje(e),e.separators.forEach(b=>{b.element.removeEventListener("keydown",gF)}),Ep.get(m)||(m.removeEventListener("dblclick",mF,!0),m.removeEventListener("pointerdown",vF,!0),m.removeEventListener("pointerleave",SF),m.removeEventListener("pointermove",wF),m.removeEventListener("pointerout",CF),m.removeEventListener("pointerup",kF,!0)),s.disconnect()}}function Gje(){const[e,t]=_.useState({}),n=_.useCallback(()=>t({}),[]);return[e,n]}function rL(e){const t=_.useId();return`${e??t}`}const Ph=typeof window<"u"?_.useLayoutEffect:_.useEffect;function gb(e){const t=_.useRef(e);return Ph(()=>{t.current=e},[e]),_.useCallback((...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[t])}function iL(...e){return gb(t=>{e.forEach(n=>{if(n)switch(typeof n){case"function":{n(t);break}case"object":{n.current=t;break}}})})}function sL(e){const t=_.useRef({...e});return Ph(()=>{for(const n in e)t.current[n]=e[n]},[e]),t.current}const eZ=_.createContext(null);function qje(e,t){const n=_.useRef({getLayout:()=>({}),setLayout:Bje});_.useImperativeHandle(t,()=>n.current,[]),Ph(()=>{Object.assign(n.current,qJ({groupId:e}))})}function tZ({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:s,groupRef:o,id:a,onLayoutChange:l,onLayoutChanged:d,orientation:h="horizontal",resizeTargetMinimumSize:p={coarse:20,fine:10},style:m,...v}){const b=_.useRef({onLayoutChange:{},onLayoutChanged:{}}),x=gb(L=>{uh(b.current.onLayoutChange,L)||(b.current.onLayoutChange=L,l==null||l(L))}),S=gb(L=>{uh(b.current.onLayoutChanged,L)||(b.current.onLayoutChanged=L,d==null||d(L))}),C=rL(a),k=_.useRef(null),[w,N]=Gje(),A=_.useRef({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:p,separators:[]}),T=iL(k,s);qje(C,o);const M=gb((L,I)=>{const $=fh(),H=dF(L),z=gd(L);if(z){let F=!1;switch($.state){case"active":{F=$.hitRegions.some(K=>K.group===H);break}}return{flexGrow:z.layout[I]??1,pointerEvents:F?"none":void 0}}return{flexGrow:(n==null?void 0:n[I])??1}}),j=sL({defaultLayout:n,disableCursor:r}),P=_.useMemo(()=>({get disableCursor(){return!!j.disableCursor},getPanelStyles:M,id:C,orientation:h,registerPanel:L=>{const I=A.current;return I.panels=UR(h,[...I.panels,L]),N(),()=>{I.panels=I.panels.filter($=>$!==L),N()}},registerSeparator:L=>{const I=A.current;return I.separators=UR(h,[...I.separators,L]),N(),()=>{I.separators=I.separators.filter($=>$!==L),N()}},togglePanelDisabled:(L,I)=>{const $=A.current.panels.find(F=>F.id===L);$&&($.panelConstraints.disabled=I);const H=dF(C),z=gd(C);H&&z&&Xc(H,{...z,derivedPanelConstraints:FR(H)})},toggleSeparatorDisabled:(L,I)=>{const $=A.current.separators.find(H=>H.id===L);$&&($.disabled=I)}}),[M,C,N,h,j]),D=_.useRef(null);return Ph(()=>{const L=k.current;if(L===null)return;const I=A.current;let $;if(j.defaultLayout!==void 0&&Object.keys(j.defaultLayout).length===I.panels.length){$={};for(const X of I.panels){const G=j.defaultLayout[X.id];G!==void 0&&($[X.id]=G)}}const H={disabled:!!i,element:L,id:C,mutableState:{defaultLayout:$,disableCursor:!!j.disableCursor,expandedPanelSizes:A.current.lastExpandedPanelSizes,layouts:A.current.layouts},orientation:h,panels:I.panels,resizeTargetMinimumSize:I.resizeTargetMinimumSize,separators:I.separators};D.current=H;const z=Kje(H),{defaultLayoutDeferred:F,derivedPanelConstraints:K,layout:W}=gd(H.id,!0);!F&&K.length>0&&(x(W),S(W));const V=QP(C,X=>{const{defaultLayoutDeferred:G,derivedPanelConstraints:te,layout:oe}=X.next;if(G||te.length===0)return;const ce=H.panels.map(({id:ee})=>ee).join(",");H.mutableState.layouts[ce]=oe,te.forEach(ee=>{if(ee.collapsible){const{layout:ne}=X.prev??{};if(ne){const ie=Cs(ee.collapsedSize,oe[ee.panelId]),ae=Cs(ee.collapsedSize,ne[ee.panelId]);ie&&!ae&&(H.mutableState.expandedPanelSizes[ee.panelId]=ne[ee.panelId])}}});const de=fh().state!=="active";x(oe),de&&S(oe)});return()=>{D.current=null,z(),V()}},[i,C,S,x,h,w,j]),_.useEffect(()=>{const L=D.current;L&&(L.mutableState.defaultLayout=n,L.mutableState.disableCursor=!!r)}),c.jsx(eZ.Provider,{value:P,children:c.jsx("div",{...v,className:t,"data-group":!0,"data-testid":C,id:C,ref:T,style:{height:"100%",width:"100%",overflow:"hidden",...m,display:"flex",flexDirection:h==="horizontal"?"row":"column",flexWrap:"nowrap",touchAction:h==="horizontal"?"pan-y":"pan-x"},children:e})})}tZ.displayName="Group";function oL(){const e=_.useContext(eZ);return ar(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function Yje(e,t){const{id:n}=oL(),r=_.useRef({collapse:RT,expand:RT,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:RT});_.useImperativeHandle(t,()=>r.current,[]),Ph(()=>{Object.assign(r.current,GJ({groupId:n,panelId:e}))})}function nZ({children:e,className:t,collapsedSize:n="0%",collapsible:r=!1,defaultSize:i,disabled:s,elementRef:o,groupResizeBehavior:a="preserve-relative-size",id:l,maxSize:d="100%",minSize:h="0%",onResize:p,panelRef:m,style:v,...b}){const x=!!l,S=rL(l),C=sL({disabled:s}),k=_.useRef(null),w=iL(k,o),{getPanelStyles:N,id:A,orientation:T,registerPanel:M,togglePanelDisabled:j}=oL(),P=p!==null,D=gb((I,$,H)=>{p==null||p(I,l,H)});Ph(()=>{const I=k.current;if(I!==null){const $={element:I,id:S,idIsStable:x,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:P?D:void 0,panelConstraints:{groupResizeBehavior:a,collapsedSize:n,collapsible:r,defaultSize:i,disabled:C.disabled,maxSize:d,minSize:h}};return M($)}},[a,n,r,i,P,S,x,d,h,D,M,C]),_.useEffect(()=>{j(S,!!s)},[s,S,j]),Yje(S,m);const L=_.useSyncExternalStore(I=>QP(A,I),()=>JSON.stringify(N(A,S)),()=>JSON.stringify(N(A,S)));return c.jsx("div",{...b,"aria-disabled":s||void 0,"data-panel":!0,"data-testid":S,id:S,ref:w,style:{...Xje,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...JSON.parse(L)},children:c.jsx("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...v,touchAction:T==="horizontal"?"pan-y":"pan-x"},children:e})})}nZ.displayName="Panel";const Xje={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function Jje({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,s;const o=e[n],a=t.find(l=>l.panelId===n);if(a){const l=a.maxSize,d=a.collapsible?a.collapsedSize:a.minSize,h=[r,r+1];s=dh({layout:Sx({delta:d-o,initialLayout:e,panelConstraints:t,pivotIndices:h,prevLayout:e}),panelConstraints:t})[n],i=dh({layout:Sx({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:h,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:s,valueNow:o}}function rZ({children:e,className:t,disabled:n,elementRef:r,id:i,style:s,...o}){const a=rL(i),l=sL({disabled:n}),[d,h]=_.useState({}),[p,m]=_.useState("inactive"),v=_.useRef(null),b=iL(v,r),{disableCursor:x,id:S,orientation:C,registerSeparator:k,toggleSeparatorDisabled:w}=oL(),N=C==="horizontal"?"vertical":"horizontal";Ph(()=>{const T=v.current;if(T!==null){const M={disabled:l.disabled,element:T,id:a},j=k(M),P=$je(L=>{m(L.next.state!=="inactive"&&L.next.hitRegions.some(I=>I.separator===M)?L.next.state:"inactive")}),D=QP(S,L=>{const{derivedPanelConstraints:I,layout:$,separatorToPanels:H}=L.next,z=H.get(M);if(z){const F=z[0],K=z.indexOf(F);h(Jje({layout:$,panelConstraints:I,panelId:F.id,panelIndex:K}))}});return()=>{P(),D(),j()}}},[S,a,k,l]),_.useEffect(()=>{w(a,!!n)},[n,a,w]);let A;return n&&!x&&(A="not-allowed"),c.jsx("div",{...o,"aria-controls":d.valueControls,"aria-disabled":n||void 0,"aria-orientation":N,"aria-valuemax":d.valueMax,"aria-valuemin":d.valueMin,"aria-valuenow":d.valueNow,children:e,className:t,"data-separator":n?"disabled":p,"data-testid":a,id:a,ref:b,role:"separator",style:{flexBasis:"auto",cursor:A,...s,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}rZ.displayName="Separator";const aL=({className:e,...t})=>c.jsx(tZ,{className:fe("flex h-full w-full",e),...t}),wx=e=>c.jsx(nZ,{...e}),lL=({withHandle:e,orientation:t,disabled:n,className:r,...i})=>c.jsx(rZ,{disabled:n,className:fe("relative flex items-center justify-center bg-transparent focus-visible:outline-none",t==="vertical"?"h-2 w-full -my-1 cursor-row-resize":"h-full w-2 -mx-1 cursor-col-resize",e&&(t==="vertical"?"before:absolute before:inset-x-0 before:top-1/2 before:h-0.5 before:-translate-y-1/2 before:bg-border":"before:absolute before:inset-y-0 before:left-1/2 before:w-px before:-translate-x-1/2 before:bg-border"),r),...i,children:c.jsx("span",{className:"sr-only",children:t==="vertical"?"Resize rows":"Resize columns"})});function iZ(e,t,n){const r=typeof e.maxTokens=="number"&&Number.isFinite(e.maxTokens)?e.maxTokens:null,i=r&&r>0?Math.min(100,e.usedTokens/r*100):null,s=r!==null?Math.max(0,Math.round(r-e.usedTokens)):null,o=i!==null?Math.max(0,100-i):null;return{...e,compactsAutomatically:e.compactsAutomatically||n,maxTokens:r??void 0,remainingTokens:s,usedPercentage:i,remainingPercentage:o,updatedAt:t}}function Zje(e){const t=e.some(n=>n.kind==="compact_boundary"||n.kind==="compact_summary"||n.kind==="context_cleared");for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(r&&!(r.kind!=="context_window_updated"||r.usage.usedTokens<=0))return iZ(r.usage,new Date(r.createdAt).toISOString(),t)}return null}function Qje(e,t){return!e||t===null||!Number.isFinite(t)||t<=0?e:iZ({...e,maxTokens:t},e.updatedAt,e.compactsAutomatically)}function $u(e){return e===void 0||!Number.isFinite(e)||e<0?0:e}function eIe(e,t){let n=0,r=0,i=0,s=0;for(const a of e){if(a.kind!=="result")continue;const l=a.usage;l&&(n+=$u(l.inputTokens),r+=$u(l.outputTokens),i+=$u(l.cachedInputTokens)),s+=$u(a.costUsd??(l==null?void 0:l.costUsd))}for(const a of t){const l=a.usage;l&&(n+=$u(l.inputTokens),r+=$u(l.outputTokens),i+=$u(l.cachedInputTokens),s+=$u(l.costUsd))}if(n===0&&r===0&&i===0&&s===0)return null;const o=n>0?i/n*100:null;return{inputTokens:n,outputTokens:r,cachedTokens:i,costUsd:s,cacheHitPercentage:o}}function tIe(e){return!Number.isFinite(e)||e<=0?"$0.00":e<.01?"<$0.01":`$${e.toFixed(2)}`}function qs(e){return e==null||!Number.isFinite(e)?"0":e<1e3?`${Math.round(e)}`:e<1e4?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:e<1e6?`${Math.round(e/1e3)}k`:`${(e/1e6).toFixed(1).replace(/\.0$/,"")}m`}const nIe=typeof window>"u"?0:window.innerWidth,Wn=tr()(e=>({typedEmptyStateText:"",isEmptyStateTypingComplete:!1,setTypedEmptyStateText:t=>e({typedEmptyStateText:t}),setIsEmptyStateTypingComplete:t=>e({isEmptyStateTypingComplete:t}),resetEmptyStateTyping:()=>e({typedEmptyStateText:"",isEmptyStateTypingComplete:!1}),isPageFileDragActive:!1,setIsPageFileDragActive:t=>e({isPageFileDragActive:t}),layoutWidth:0,setLayoutWidth:t=>e({layoutWidth:t}),inputHeight:148,setInputHeight:t=>e({inputHeight:t}),viewportWidth:nIe,setViewportWidth:t=>e({viewportWidth:t}),fixedTerminalHeight:0,setFixedTerminalHeight:t=>e({fixedTerminalHeight:t}),showScrollToBottom:!1,setShowScrollToBottom:t=>e({showScrollToBottom:t}),toolGroupExpanded:{},setToolGroupExpanded:t=>e(n=>({toolGroupExpanded:t(n.toolGroupExpanded)})),resetToolGroupExpanded:()=>e({toolGroupExpanded:{}}),localLinkMenuTarget:null,setLocalLinkMenuTarget:t=>e({localLinkMenuTarget:t}),diffRenderMode:"unified",wrapDiffLines:!1,setDiffRenderMode:t=>e({diffRenderMode:t}),setWrapDiffLines:t=>e({wrapDiffLines:t}),terminalFocusRequestVersion:0,incrementTerminalFocusRequestVersion:()=>e(t=>({terminalFocusRequestVersion:t.terminalFocusRequestVersion+1}))})),cL=[68,32];function rIe(){return{isVisible:!1,mainSizes:[...cL],terminals:[],nextTerminalIndex:0}}function iIe(e,t){return e[t]??rIe()}function MT(e){if(e.length===0)return[];const t=e.reduce((n,r)=>n+Math.max(r,0),0);return!Number.isFinite(t)||t<=0?Array.from({length:e.length},()=>100/e.length):e.map(n=>Math.max(n,0)/t*100)}function sIe(e){let t=e,n="";do n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26)-1;while(t>=0);return`Terminal ${n}`}function oIe(e){if(e.length===0)return e;const t=e.length+1;return e.map(n=>({...n,size:n.size*e.length/t}))}function Np(e,t,n){return{...e,[t]:n(iIe(e,t))}}const Gu=tr()(ug(e=>({projects:{},addTerminal:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{var l,d;const s=oIe(i.terminals),o={id:((d=(l=globalThis.crypto)==null?void 0:l.randomUUID)==null?void 0:d.call(l))??`terminal-${Date.now()}-${i.nextTerminalIndex}`,title:sIe(i.nextTerminalIndex),size:100/(s.length+1)},a=n?Math.max(s.findIndex(h=>h.id===n)+1,0):s.length;return{...i,isVisible:!0,nextTerminalIndex:i.nextTerminalIndex+1,terminals:[...s.slice(0,a),o,...s.slice(a)]}})})),removeTerminal:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{const s=i.terminals.filter(a=>a.id!==n);if(s.length===0)return{...i,isVisible:!1,terminals:[]};const o=MT(s.map(a=>a.size));return{...i,terminals:s.map((a,l)=>({...a,size:o[l]??100/s.length}))}})})),toggleVisibility:t=>e(n=>({projects:Np(n.projects,t,r=>({...r,isVisible:r.terminals.length>0?!r.isVisible:!1}))})),resetMainSizes:t=>e(n=>({projects:Np(n.projects,t,r=>({...r,mainSizes:[...cL]}))})),setMainSizes:(t,n)=>e(r=>{if(n.length!==2)return r;const[i=50,s=50]=MT(n),o=[i,s];return{projects:Np(r.projects,t,a=>({...a,mainSizes:o}))}}),setTerminalSizes:(t,n)=>e(r=>({projects:Np(r.projects,t,i=>{if(n.length!==i.terminals.length)return i;const s=MT(n);return{...i,terminals:i.terminals.map((o,a)=>({...o,size:s[a]??o.size}))}})})),clearProject:t=>e(n=>{const{[t]:r,...i}=n.projects;return{projects:i}})}),{name:"terminal-layouts",version:1})),aIe={isVisible:!1,mainSizes:[...cL],terminals:[],nextTerminalIndex:0},lIe=35;function cIe(e,t){return!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0?0:e*(t/100)}function uIe(e,t){const n=cIe(e,t);return n>=0&&n<lIe}const D1=350,dIe=[.4,0,.2,1],fIe=8,NF=1e-6;function hIe(e,t,n){const r=1-e;return 3*r*r*e*t+3*r*e*e*n+e*e*e}function pIe(e,t,n){const r=1-e;return 3*r*r*e*t+3*r*e*e*n+e*e*e}function mIe(e,t,n){const r=1-e;return 3*r*r*t+6*r*e*(n-t)+3*e*e*(1-n)}function gIe(e,t,n){let r=e;for(let i=0;i<fIe;i+=1){const s=hIe(r,t,n)-e;if(Math.abs(s)<NF)return r;const o=mIe(r,t,n);if(Math.abs(o)<NF)break;r-=s/o}return r}function vIe(e){if(e<=0)return 0;if(e>=1)return 1;const[t,n,r,i]=dIe,s=gIe(e,t,r);return pIe(s,n,i)}function sZ(e,t,n){const r=vIe(n);return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r]}function bIe({projectId:e,shouldRenderRightSidebarLayout:t,showRightSidebar:n,rightSidebarSize:r}){const i=_.useRef(null),s=_.useRef(null),o=_.useRef(null),a=_.useRef(null),l=_.useRef(null),d=_.useRef(!1),h=_.useRef(null),p=_.useRef(!1),m=_.useRef(!1);return _.useEffect(()=>()=>{a.current!==null&&window.cancelAnimationFrame(a.current),l.current!==null&&window.clearTimeout(l.current)},[]),_.useLayoutEffect(()=>{var M,j,P,D,L,I;if(!t){a.current!==null&&(window.cancelAnimationFrame(a.current),a.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null),d.current=!1;return}const v=i.current;if(!v)return;a.current!==null&&(window.cancelAnimationFrame(a.current),a.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null);const b=h.current,x=b!==null&&b!==e,S=n&&!m.current,C=!p.current,k=n?[100-r,r]:[100,0],w=x||C&&n,N=S||C?[100,0]:[v.getLayout().workspace??k[0],v.getLayout().rightSidebar??k[1]];if(h.current=e,p.current=t,m.current=n,w||Math.abs(N[0]-k[0])<.1&&Math.abs(N[1]-k[1])<.1){v.setLayout({workspace:k[0],rightSidebar:k[1]}),(M=s.current)==null||M.setAttribute("data-right-sidebar-open",n?"true":"false"),(j=o.current)==null||j.setAttribute("data-right-sidebar-open",n?"true":"false"),(P=o.current)==null||P.setAttribute("data-right-sidebar-animated","false");return}d.current=!0,(D=s.current)==null||D.setAttribute("data-right-sidebar-open",n?"true":"false"),(L=o.current)==null||L.setAttribute("data-right-sidebar-open",n?"true":"false"),(I=o.current)==null||I.setAttribute("data-right-sidebar-animated","true"),v.setLayout({workspace:N[0],rightSidebar:N[1]});const A=performance.now(),T=$=>{const H=Math.min(1,($-A)/D1),z=sZ(N,k,H);if(v.setLayout({workspace:z[0],rightSidebar:z[1]}),H<1){a.current=window.requestAnimationFrame(T);return}v.setLayout({workspace:k[0],rightSidebar:k[1]}),a.current=null,l.current=window.setTimeout(()=>{d.current=!1,l.current=null},0)};a.current=window.requestAnimationFrame(T)},[e,r,t,n]),_.useEffect(()=>{t||(p.current=!1,m.current=!1)},[t]),{isAnimating:d,panelGroupRef:i,sidebarPanelRef:s,sidebarVisualRef:o}}function xIe(e){return e.visibilityState==="visible"?e.activeChatId:null}function yIe(e){e.socket.setFocusedChat(xIe({activeChatId:e.activeChatId,visibilityState:e.visibilityState}))}function _Ie({socket:e,activeChatId:t}){_.useEffect(()=>{if(typeof document>"u")return;const n=()=>{yIe({socket:e,activeChatId:t,visibilityState:document.visibilityState})};return n(),document.addEventListener("visibilitychange",n),window.addEventListener("pagehide",n),window.addEventListener("pageshow",n),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("pagehide",n),window.removeEventListener("pageshow",n),e.setFocusedChat(null)}},[e,t])}function SIe({rootRef:e,fallbackRef:t,enabled:n,canCancel:r}){_.useEffect(()=>{if(!n)return;let i=0,s=null;const o=p=>{const m=p instanceof Element?p:null,v=e.current,b=t.current;if(a$({trigger:"pointer",activeElement:document.activeElement,pointerStartTarget:s,pointerEndTarget:m,root:v,fallback:b,hasActiveOverlay:o$(document),hasActiveSelection:vue(window.getSelection())})!=="restore"){s=null;return}b==null||b.focus({preventScroll:!0}),s=null},a=p=>{cancelAnimationFrame(i),s=p.target instanceof Element?p.target:null},l=p=>{cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{o(p.target)})},d=()=>{s=null;const p=t.current;!p||p.disabled||p.focus({preventScroll:!0})},h=p=>{if(p.key!=="Escape")return;const m=t.current;a$({trigger:"escape",activeElement:document.activeElement,fallback:m,hasActiveOverlay:o$(document),canCancel:r,defaultPrevented:p.defaultPrevented})==="escape-focus"&&(p.preventDefault(),m==null||m.focus({preventScroll:!0}))};return window.addEventListener("pointerdown",a,!0),window.addEventListener("pointerup",l,!0),window.addEventListener("keydown",h,!0),window.addEventListener(VS,d),()=>{cancelAnimationFrame(i),window.removeEventListener("pointerdown",a,!0),window.removeEventListener("pointerup",l,!0),window.removeEventListener("keydown",h,!0),window.removeEventListener(VS,d)}},[r,n,t,e])}function wIe(e){const t=e.previousProjectId!==null&&e.previousProjectId!==e.projectId,n=e.previousProjectId===null&&e.projectId!==null;return!t&&!n&&e.showTerminalPane&&!e.wasTerminalVisible}function CIe({previousProjectId:e,projectId:t,previousShouldRenderTerminalLayout:n,previousShowTerminalPane:r,showTerminalPane:i,terminalLayout:s,liveLayout:o}){const a=e!==null&&e!==t,l=i&&!r,d=!n,h=e===null&&t!==null,p=i?s.mainSizes:[100,0];return{currentLayout:l||d?[100,0]:o,shouldSkipAnimation:a||h&&d,targetLayout:p}}function kIe({chatInputRef:e,projectId:t,shouldRenderTerminalLayout:n,showTerminalPane:r,terminalLayout:i}){const s=_.useRef(null),o=_.useRef(null),a=_.useRef(null),l=_.useRef(null),d=_.useRef(null),h=_.useRef(!1),p=_.useRef(null),m=_.useRef(!1),v=_.useRef(!1),b=_.useRef(!1),x=Wn(C=>C.terminalFocusRequestVersion),S=Wn(C=>C.incrementTerminalFocusRequestVersion);return _.useEffect(()=>{var w;const C=p.current,k=b.current;wIe({previousProjectId:C,projectId:t,showTerminalPane:r,wasTerminalVisible:k})&&S(),C!==null&&C===t&&!r&&k&&((w=e.current)==null||w.focus({preventScroll:!0})),b.current=r,p.current=t},[e,S,t,r]),_.useEffect(()=>()=>{l.current!==null&&window.cancelAnimationFrame(l.current),d.current!==null&&window.clearTimeout(d.current)},[]),_.useLayoutEffect(()=>{var j,P,D,L,I,$;if(!n){l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null),d.current!==null&&(window.clearTimeout(d.current),d.current=null),h.current=!1;return}const C=s.current;if(!C)return;l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null),d.current!==null&&(window.clearTimeout(d.current),d.current=null);const k=p.current,{currentLayout:w,shouldSkipAnimation:N,targetLayout:A}=CIe({previousProjectId:k,projectId:t,previousShouldRenderTerminalLayout:m.current,previousShowTerminalPane:v.current,showTerminalPane:r,terminalLayout:i,liveLayout:[C.getLayout().chat??i.mainSizes[0],C.getLayout().terminal??i.mainSizes[1]]});if(m.current=n,v.current=r,N||Math.abs(w[0]-A[0])<.1&&Math.abs(w[1]-A[1])<.1){C.setLayout({chat:A[0],terminal:A[1]}),(j=o.current)==null||j.setAttribute("data-terminal-open",r?"true":"false"),(P=a.current)==null||P.setAttribute("data-terminal-open",r?"true":"false"),(D=a.current)==null||D.setAttribute("data-terminal-animated","false");return}h.current=!0,(L=o.current)==null||L.setAttribute("data-terminal-open",r?"true":"false"),(I=a.current)==null||I.setAttribute("data-terminal-open",r?"true":"false"),($=a.current)==null||$.setAttribute("data-terminal-animated","true"),C.setLayout({chat:w[0],terminal:w[1]});const T=performance.now(),M=H=>{const z=Math.min(1,(H-T)/D1),F=sZ(w,A,z);if(C.setLayout({chat:F[0],terminal:F[1]}),z<1){l.current=window.requestAnimationFrame(M);return}C.setLayout({chat:A[0],terminal:A[1]}),l.current=null,d.current=window.setTimeout(()=>{h.current=!1,d.current=null},0)};l.current=window.requestAnimationFrame(M)},[t,n,r,i]),_.useEffect(()=>{n||(m.current=!1,v.current=!1)},[n]),{isAnimating:h,mainPanelGroupRef:s,terminalFocusRequestVersion:x,terminalPanelRef:o,terminalVisualRef:a}}const TF=e=>Symbol.iterator in e,AF=e=>"entries"in e,RF=(e,t)=>{const n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(const[i,s]of n)if(!r.has(i)||!Object.is(s,r.get(i)))return!1;return!0},EIe=(e,t)=>{const n=e[Symbol.iterator](),r=t[Symbol.iterator]();let i=n.next(),s=r.next();for(;!i.done&&!s.done;){if(!Object.is(i.value,s.value))return!1;i=n.next(),s=r.next()}return!!i.done&&!!s.done};function NIe(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:TF(e)&&TF(t)?AF(e)&&AF(t)?RF(e,t):EIe(e,t):RF({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function vm(e){const t=$n.useRef(void 0);return n=>{const r=e(n);return NIe(t.current,r)?t.current:t.current=r}}function Sv(){var e;return((e=jr.getState().settings)==null?void 0:e.customModels)??[]}const vb="__new__";function Tp(e,t){var o,a;const n=(o=e==null?void 0:e.modelOptions)==null?void 0:o.reasoningEffort;let r;sw(n)?r=n:sw(e==null?void 0:e.effort)?r=e.effort:r=wo.reasoningEffort;const i=Oge(e==null?void 0:e.model,void 0,t),s=sI(i,(a=e==null?void 0:e.modelOptions)==null?void 0:a.contextWindow,t);return{model:i,modelOptions:{reasoningEffort:!BW(i,t)&&r==="max"?"high":r,contextWindow:s},planMode:!!(e!=null&&e.planMode)}}function j0(e,t){var i,s;const n=(i=e==null?void 0:e.modelOptions)==null?void 0:i.reasoningEffort;let r;return ow(n)?r=n:ow(e==null?void 0:e.effort)?r=e.effort:r=hd.reasoningEffort,{model:Dge(e==null?void 0:e.model,void 0,t),modelOptions:{reasoningEffort:r,fastMode:typeof((s=e==null?void 0:e.modelOptions)==null?void 0:s.fastMode)=="boolean"?e.modelOptions.fastMode:hd.fastMode},planMode:!!(e!=null&&e.planMode)}}function TIe(){return{claude:{model:"claude-opus-4-7",modelOptions:{...wo},planMode:!1},codex:{model:"gpt-5.5",modelOptions:{...hd},planMode:!1},openrouter:{model:zC,modelOptions:{},planMode:!1}}}function AIe(e,t){return e.reasoningEffort===t.reasoningEffort&&e.contextWindow===t.contextWindow}function RIe(e,t){return e.reasoningEffort===t.reasoningEffort&&e.fastMode===t.fastMode}function MIe(e,t){return e.claude.model===t.claude.model&&e.claude.planMode===t.claude.planMode&&AIe(e.claude.modelOptions,t.claude.modelOptions)&&e.codex.model===t.codex.model&&e.codex.planMode===t.codex.planMode&&RIe(e.codex.modelOptions,t.codex.modelOptions)&&e.openrouter.model===t.openrouter.model&&e.openrouter.planMode===t.openrouter.planMode}function jIe(e,t){if(t===void 0){Qs.info(`[chat-preferences] ${e}`);return}Qs.info(`[chat-preferences] ${e}`,t)}function bb(e,t){if(e==="claude"){const r=t.claude;return{provider:"claude",model:r.model,modelOptions:{...r.modelOptions},planMode:r.planMode}}if(e==="openrouter"){const r=t.openrouter;return{provider:"openrouter",model:r.model,modelOptions:{...r.modelOptions},planMode:r.planMode}}const n=t.codex;return{provider:"codex",model:n.model,modelOptions:{...n.modelOptions},planMode:n.planMode}}function HR(e){return e.provider==="claude"?{provider:"claude",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}:e.provider==="openrouter"?{provider:"openrouter",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}:{provider:"codex",model:e.model,modelOptions:{...e.modelOptions},planMode:e.planMode}}function oZ(e){return e.providerHint?bb(e.providerHint,e.providerDefaults):e.defaultProvider==="last_used"?e.sourceState?HR(e.sourceState):bb("claude",e.providerDefaults):bb(e.defaultProvider,e.providerDefaults)}function aZ(e,t){const n=e.chatStates[t];return n||oZ({defaultProvider:e.defaultProvider,providerDefaults:e.providerDefaults,legacyComposerState:e.legacyComposerState})}function I0(e,t,n){const r=aZ(e,t);return{chatStates:{...e.chatStates,[t]:n(r)}}}const Ns=tr()(ug((e,t)=>({defaultProvider:"last_used",providerDefaults:TIe(),chatStates:{},legacyComposerState:{provider:"claude",model:"claude-opus-4-7",modelOptions:{...wo},planMode:!1},setDefaultProvider:n=>e({defaultProvider:n}),applyServerDefaults:(n,r)=>e(i=>{if(i.defaultProvider===n&&MIe(i.providerDefaults,r))return{defaultProvider:n,providerDefaults:r};const{[vb]:o,...a}=i.chatStates;return{defaultProvider:n,providerDefaults:r,chatStates:a}}),setProviderDefaultModel:(n,r)=>e(i=>{const s=Sv();return n==="claude"?{providerDefaults:{...i.providerDefaults,[n]:Tp({...i.providerDefaults.claude,model:r},s)}}:n==="openrouter"?{providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults.openrouter,model:r}}}:{providerDefaults:{...i.providerDefaults,[n]:j0({...i.providerDefaults.codex,model:r},s)}}}),setProviderDefaultModelOptions:(n,r)=>e(i=>{const s=Sv();if(n==="claude"){const a=r;return{providerDefaults:{...i.providerDefaults,[n]:Tp({...i.providerDefaults.claude,modelOptions:{...i.providerDefaults.claude.modelOptions,...a}},s)}}}if(n==="openrouter")return{providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults.openrouter,modelOptions:{}}}};const o=r;return{providerDefaults:{...i.providerDefaults,[n]:j0({...i.providerDefaults.codex,modelOptions:{...i.providerDefaults.codex.modelOptions,...o}},s)}}}),setProviderDefaultPlanMode:(n,r)=>e(i=>({providerDefaults:{...i.providerDefaults,[n]:{...i.providerDefaults[n],planMode:r}}})),getComposerState:n=>HR(aZ(t(),n)),initializeComposerForChat:(n,r)=>e(i=>{if(i.chatStates[n])return i;const s=oZ({defaultProvider:i.defaultProvider,providerDefaults:i.providerDefaults,sourceState:r==null?void 0:r.sourceState,legacyComposerState:i.legacyComposerState,providerHint:r==null?void 0:r.providerHint});return jIe("initializeComposerForChat",{chatId:n,composerState:s}),{chatStates:{...i.chatStates,[n]:s}}}),setComposerState:(n,r)=>e(i=>{const s=Sv();return{chatStates:{...i.chatStates,[n]:r.provider==="claude"?{provider:"claude",model:Tp(r,s).model,modelOptions:Tp(r,s).modelOptions,planMode:r.planMode}:HR(r)}}}),setChatComposerProvider:(n,r)=>e(i=>I0(i,n,()=>bb(r,i.providerDefaults))),setChatComposerModel:(n,r)=>e(i=>I0(i,n,s=>{const o=Sv();if(s.provider==="claude"){const a=Tp({...s,model:r},o);return{provider:"claude",model:a.model,modelOptions:a.modelOptions,planMode:s.planMode}}return s.provider==="openrouter"?{provider:"openrouter",model:r,modelOptions:{},planMode:s.planMode}:{provider:"codex",model:r,modelOptions:j0({...s,model:r},o).modelOptions,planMode:s.planMode}})),setChatComposerModelOptions:(n,r)=>e(i=>I0(i,n,s=>{const o=Sv();if(s.provider==="claude"){const l=r;return{provider:"claude",model:s.model,modelOptions:Tp({...s,modelOptions:{...s.modelOptions,...l}},o).modelOptions,planMode:s.planMode}}if(s.provider==="openrouter")return{provider:"openrouter",model:s.model,modelOptions:{},planMode:s.planMode};const a=r;return{provider:"codex",model:s.model,modelOptions:j0({...s,modelOptions:{...s.modelOptions,...a}},o).modelOptions,planMode:s.planMode}})),setChatComposerPlanMode:(n,r)=>e(i=>I0(i,n,s=>({...s,planMode:r}))),resetChatComposerFromProvider:(n,r)=>e(i=>({chatStates:{...i.chatStates,[n]:bb(r,i.providerDefaults)}}))}),{name:"chat-preferences-state",version:1,partialize:e=>({chatStates:e.chatStates,legacyComposerState:e.legacyComposerState})}));function IIe(e){return e===void 0?null:typeof e=="string"?e?{text:e}:null:e.text||e.lexicalState?e:null}const WR=tr()(ug((e,t)=>({drafts:{},attachmentDrafts:{},setDraft:(n,r,i)=>e(s=>{let o;if(typeof r=="string"){if(!r){const{[n]:a,...l}=s.drafts;return{drafts:l}}o={text:r}}else{const a=i??"";if(!a){const{[n]:l,...d}=s.drafts;return{drafts:d}}o={text:a,lexicalState:r}}return{drafts:{...s.drafts,[n]:o}}}),clearDraft:n=>e(r=>{const{[n]:i,...s}=r.drafts;return{drafts:s}}),getDraft:n=>IIe(t().drafts[n]),setAttachmentDrafts:(n,r)=>e(i=>{if(r.length===0){const{[n]:s,...o}=i.attachmentDrafts;return{attachmentDrafts:o}}return{attachmentDrafts:{...i.attachmentDrafts,[n]:r}}}),clearAttachmentDrafts:n=>e(r=>{const{[n]:i,...s}=r.attachmentDrafts;return{attachmentDrafts:s}}),getAttachmentDrafts:n=>t().attachmentDrafts[n]??[]}),{name:"chat-input-drafts"})),uL=tr()(e=>({byChatId:{},loadingByChatId:{},setForChat:(t,n)=>e(r=>({byChatId:{...r.byChatId,[t]:n}})),setLoadingForChat:(t,n)=>e(r=>(r.loadingByChatId[t]??!1)===n?r:{loadingByChatId:{...r.loadingByChatId,[t]:n}}),clear:t=>e(n=>{const r=t in n.byChatId,i=t in n.loadingByChatId;if(!r&&!i)return n;const{[t]:s,...o}=n.byChatId,{[t]:a,...l}=n.loadingByChatId;return{byChatId:o,loadingByChatId:l}})}));function PIe(e){return{autoResumeOnRateLimit:!!(e!=null&&e.autoResumeOnRateLimit)}}const VR=tr()(ug(e=>({autoResumeOnRateLimit:!1,setAutoResumeOnRateLimit:t=>e({autoResumeOnRateLimit:t})}),{name:"kanna-preferences",version:1,migrate:e=>PIe(e)})),LIe="kanna",OIe=`mcp__${LIe}__preview_file`;function df(e){return Hi(e)?e:null}function wv(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function DIe(e){let t;Hi(e)&&"content"in e&&Array.isArray(e.content)?t=e.content:Array.isArray(e)?t=e:t=[];const n=[];for(const r of t)if(!(!r||typeof r!="object"||!("type"in r))){if(r.type==="text"&&"text"in r&&typeof r.text=="string"){n.push({type:"text",text:r.text});continue}if(r.type==="image"){if("data"in r&&typeof r.data=="string"){n.push({type:"image",data:r.data,mimeType:"mimeType"in r&&typeof r.mimeType=="string"?r.mimeType:void 0});continue}"source"in r&&r.source&&typeof r.source=="object"&&"type"in r.source&&r.source.type==="base64"&&"data"in r.source&&typeof r.source.data=="string"&&n.push({type:"image",data:r.source.data,mimeType:"media_type"in r.source&&typeof r.source.media_type=="string"?r.source.media_type:void 0})}}return n}function P0(e){let t;if(Hi(e)&&"content"in e&&Array.isArray(e.content)?t=e.content:Array.isArray(e)?t=e:t=null,!t)return null;const n=[];for(const r of t)r&&typeof r=="object"&&"type"in r&&r.type==="text"&&"text"in r&&typeof r.text=="string"&&n.push(r.text);return n.length>0?n.join(""):null}function $Ie(e,t){var r;const n=wv(t);switch(e.toolKind){case"ask_user_question":{const i=P0(n),s=i!==null?wv(i):n,o=df(s),a=df(o==null?void 0:o.answers)??(o||{}),l={};for(const[d,h]of Object.entries(a))Array.isArray(h)?l[d]=h.map(p=>String(p)):Hi(h)&&Array.isArray(h.answers)?l[d]=h.answers.map(p=>String(p)):h==null||h===""?l[d]=[]:l[d]=[String(h)];return{answers:l,...(o==null?void 0:o.discarded)===!0?{discarded:!0}:{}}}case"exit_plan_mode":{const i=P0(n),s=i!==null?wv(i):n,o=df(s);return{confirmed:typeof(o==null?void 0:o.confirmed)=="boolean"?o.confirmed:void 0,clearContext:typeof(o==null?void 0:o.clearContext)=="boolean"?o.clearContext:void 0,message:typeof(o==null?void 0:o.message)=="string"?o.message:void 0,...(o==null?void 0:o.discarded)===!0?{discarded:!0}:{}}}case"offer_download":{const i=P0(n),s=i?wv(i):n,o=df(s);let a;return typeof(o==null?void 0:o.displayName)=="string"?a=o.displayName:typeof(o==null?void 0:o.fileName)=="string"?a=o.fileName:a="",{contentUrl:typeof(o==null?void 0:o.contentUrl)=="string"?o.contentUrl:"",relativePath:typeof(o==null?void 0:o.relativePath)=="string"?o.relativePath:"",fileName:typeof(o==null?void 0:o.fileName)=="string"?o.fileName:"",displayName:a,size:typeof(o==null?void 0:o.size)=="number"?o.size:0,...typeof(o==null?void 0:o.mimeType)=="string"?{mimeType:o.mimeType}:{}}}case"preview_file":{const i=P0(n),s=i?wv(i):n,o=df(s);let a;return typeof(o==null?void 0:o.displayName)=="string"?a=o.displayName:typeof(o==null?void 0:o.fileName)=="string"?a=o.fileName:a="",{contentUrl:typeof(o==null?void 0:o.contentUrl)=="string"?o.contentUrl:"",relativePath:typeof(o==null?void 0:o.relativePath)=="string"?o.relativePath:"",fileName:typeof(o==null?void 0:o.fileName)=="string"?o.fileName:"",displayName:a,size:typeof(o==null?void 0:o.size)=="number"?o.size:0,mimeType:typeof(o==null?void 0:o.mimeType)=="string"?o.mimeType:"application/octet-stream"}}case"image_generation":{const i=df(n);return{contentUrl:typeof(i==null?void 0:i.contentUrl)=="string"?i.contentUrl:"",relativePath:typeof(i==null?void 0:i.relativePath)=="string"?i.relativePath:"",fileName:typeof(i==null?void 0:i.fileName)=="string"?i.fileName:""}}case"workflow":{const i=typeof t=="string"?t:"";return{taskId:(r=i.match(/Task ID:\s*(\S+)/))==null?void 0:r[1],text:i}}case"read_file":{if(typeof n=="string")return n;const i=DIe(n);if(i.length>0)return{content:i.flatMap(o=>o.type==="text"?[o.text]:[]).join(""),blocks:i};const s=df(n);return{content:typeof(s==null?void 0:s.content)=="string"?s.content:JSON.stringify(n,null,2)}}default:return n}}function zIe(e){return e.kind==="tool"}function lZ(e){return new Date(e).toISOString()}function Ni(e){return{id:e._id,messageId:e.messageId,timestamp:lZ(e.createdAt),hidden:e.hidden}}function BIe(e){return{id:e._id,messageId:e.messageId,hidden:e.hidden,kind:"tool",toolKind:e.tool.toolKind,toolName:e.tool.toolName,toolId:e.tool.toolId,input:e.tool.input,timestamp:lZ(e.createdAt)}}function FIe(e){if(e.debugRaw)try{const t=JSON.parse(e.debugRaw);return(t==null?void 0:t.tool_use_result)??void 0}catch{return}}function dl(e){return typeof e=="number"?e:void 0}function L0(e){return typeof e=="string"?e:void 0}function UIe(e){if(!Hi(e))return;const t=e,n={readCount:dl(t.readCount),searchCount:dl(t.searchCount),bashCount:dl(t.bashCount),editFileCount:dl(t.editFileCount),linesAdded:dl(t.linesAdded),linesRemoved:dl(t.linesRemoved),otherToolCount:dl(t.otherToolCount)};return Object.values(n).some(r=>r!==void 0)?n:void 0}function HIe(e){if(!e.debugRaw)return;let t;try{t=JSON.parse(e.debugRaw).toolUseResult}catch{return}if(!Hi(t))return;const n=t,r={agentId:L0(n.agentId),agentType:L0(n.agentType),status:L0(n.status),totalTokens:dl(n.totalTokens),totalDurationMs:dl(n.totalDurationMs),totalToolUseCount:dl(n.totalToolUseCount),toolStats:UIe(n.toolStats),content:L0(n.content)};return r.agentId!==void 0||r.agentType!==void 0||r.totalTokens!==void 0||r.totalDurationMs!==void 0||r.status!==void 0?r:void 0}function $1(e){const t=new Map,n=[];for(const r of e)switch(r.kind){case"user_prompt":n.push({...Ni(r),kind:"user_prompt",content:r.content,attachments:r.attachments??[],steered:r.steered,autoContinue:r.autoContinue});break;case"system_init":n.push({...Ni(r),kind:"system_init",provider:r.provider,model:r.model,tools:r.tools,agents:r.agents,slashCommands:r.slashCommands,mcpServers:r.mcpServers,debugRaw:r.debugRaw});break;case"account_info":n.push({...Ni(r),kind:"account_info",accountInfo:r.accountInfo});break;case"assistant_text":n.push({...Ni(r),kind:"assistant_text",text:r.text});break;case"assistant_thinking":n.push({...Ni(r),kind:"assistant_thinking",text:r.text,signature:r.signature});break;case"api_error":n.push({...Ni(r),kind:"api_error",status:r.status,text:r.text,requestId:r.requestId});break;case"policy_refusal":n.push({...Ni(r),kind:"policy_refusal",text:r.text,requestId:r.requestId});break;case"tool_call":{const i=BIe(r);t.set(r.tool.toolId,{hydrated:i,normalized:r.tool}),zIe(i)&&n.push(i);break}case"tool_result":{const i=t.get(r.toolId);if(i){const s=i.normalized.toolKind==="ask_user_question"||i.normalized.toolKind==="exit_plan_mode"?FIe(r)??r.content:r.content;i.normalized.toolKind==="subagent_task"?i.hydrated.result=HIe(r):i.hydrated.result=$Ie(i.normalized,s),i.hydrated.rawResult=s,i.hydrated.isError=r.isError,r.persisted&&(i.hydrated.persisted=r.persisted)}break}case"result":n.push({...Ni(r),kind:"result",success:!r.isError,cancelled:r.subtype==="cancelled",result:r.result,durationMs:r.durationMs,costUsd:r.costUsd});break;case"status":n.push({...Ni(r),kind:"status",status:r.status});break;case"context_window_updated":n.push({...Ni(r),kind:"context_window_updated",usage:r.usage});break;case"compact_boundary":n.push({...Ni(r),kind:"compact_boundary"});break;case"compact_summary":n.push({...Ni(r),kind:"compact_summary",summary:r.summary});break;case"context_cleared":n.push({...Ni(r),kind:"context_cleared"});break;case"interrupted":n.push({...Ni(r),kind:"interrupted"});break;case"memory_loaded":n.push({...Ni(r),kind:"memory_loaded",path:r.path});break;case"auto_continue_prompt":n.push({...Ni(r),kind:"auto_continue_prompt",scheduleId:r.scheduleId});break;case"pending_tool_request":n.push({...Ni(r),kind:"pending_tool_request",toolRequestId:r.toolRequestId,toolName:r.toolName,arguments:r.arguments});break;case"tool_request_resolved":break;default:n.push({...Ni(r),kind:"unknown",json:JSON.stringify(r,null,2)});break}return n}function cZ(e){return e.kind==="tool"}const WIe=["AskUserQuestion","ExitPlanMode","TodoWrite"],VIe=new Set(["TodoWrite"]);function KIe(e,t){for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(cZ(r)&&r.toolName===t&&!r.result)return r.id}return null}function GIe(e,t){for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(cZ(r)&&r.toolName===t)return r.id}return null}function qIe(e){const t={};for(const n of WIe)t[n]=VIe.has(n)?GIe(e,n):KIe(e,n);return t}function YIe(e){return e==="starting"||e==="running"||e==="waiting_for_user"}function XIe(e){return e==="starting"||e==="running"||e==="waiting_for_user"}const dL="pushDeviceId";function uZ(){return typeof localStorage>"u"?null:localStorage.getItem(dL)}function JIe(e){typeof localStorage>"u"||localStorage.setItem(dL,e)}function ZIe(){typeof localStorage>"u"||localStorage.removeItem(dL)}function QIe(){return!(typeof window>"u"||typeof Notification>"u"||!("serviceWorker"in navigator)||typeof Reflect.get(globalThis,"PushManager")>"u")}function ePe(){var t;if(typeof window>"u")return!1;if(window.isSecureContext)return!0;const e=((t=window.location)==null?void 0:t.hostname)??"";return e==="localhost"||e==="127.0.0.1"||e==="::1"}function fL(){if(!QIe())return{state:"unsupported"};if(!ePe())return{state:"insecure-context"};switch(Notification.permission){case"granted":return{state:"granted"};case"denied":return{state:"denied"};default:return{state:"default"}}}function tPe(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64url"));const t="=".repeat((4-e.length%4)%4),n=(e+t).replace(/-/g,"+").replace(/_/g,"/"),r=atob(n),i=new Uint8Array(r.length);for(let s=0;s<r.length;s+=1)i[s]=r.charCodeAt(s);return i}function nPe(e){const t=e||"";return/iPhone|iPad/i.test(t)?"iPhone / iPad":/Android/i.test(t)?"Android":/Macintosh/i.test(t)?"Mac":/Windows/i.test(t)?"Windows PC":t||"Browser"}async function rPe(e){const t=fL();if(t.state==="unsupported")throw new Error("Push not supported in this browser");if(t.state==="insecure-context")throw new Error("Push requires a secure context (HTTPS)");if(t.state==="denied")throw new Error("Notification permission previously denied");if(await Notification.requestPermission()!=="granted")throw new Error("Notification permission was not granted");const r=await navigator.serviceWorker.register("/sw.js");await navigator.serviceWorker.ready;const i=await r.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:tPe(e.vapidPublicKey)}),s=i.toJSON(),o=s.endpoint??i.endpoint,a=s.keys??{};if(!o||!a.p256dh||!a.auth)throw new Error("Subscription returned without endpoint or keys");const l=navigator.userAgent??"",{id:d}=await e.sendToServer({subscription:{endpoint:o,keys:{p256dh:a.p256dh,auth:a.auth}},label:nPe(l),userAgent:l});return d}async function iPe(e){const n=await(await navigator.serviceWorker.ready).pushManager.getSubscription();n&&await n.unsubscribe(),await e.sendToServer(e.pushDeviceId)}typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",e=>{const t=e.data;(t==null?void 0:t.type)==="kanna.navigate"&&typeof t.url=="string"&&(window.location.href=t.url)});const sPe=25e3,oPe=15e3,aPe=4e3,MF="kanna:profile-send-to-starting";function jF(){try{return window.sessionStorage.getItem(MF)==="1"||window.localStorage.getItem(MF)==="1"}catch{return!1}}class lPe{constructor(t){U(this,"url");U(this,"ws",null);U(this,"started",!1);U(this,"reconnectTimer",null);U(this,"reconnectDelayMs",750);U(this,"subscriptions",new Map);U(this,"pending",new Map);U(this,"outboundQueue",[]);U(this,"statusListeners",new Set);U(this,"heartbeatTimer",null);U(this,"pingTimeoutTimer",null);U(this,"pingPromise",null);U(this,"lastOpenAt",0);U(this,"lastMessageAt",0);U(this,"reconnectImmediatelyOnClose",!1);U(this,"handleWindowFocus",()=>{this.ensureHealthyConnection()});U(this,"handleVisibilityChange",()=>{if(document.visibilityState==="visible"){this.startHeartbeat(),this.ensureHealthyConnection();return}this.stopHeartbeat()});U(this,"handleOnline",()=>{this.ensureHealthyConnection()});this.url=t}start(){this.started||(this.started=!0,window.addEventListener("focus",this.handleWindowFocus),window.addEventListener("online",this.handleOnline),document.addEventListener("visibilitychange",this.handleVisibilityChange),this.connect())}dispose(){var t;this.started=!1,this.reconnectTimer&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopHeartbeat(),this.clearPingState(),window.removeEventListener("focus",this.handleWindowFocus),window.removeEventListener("online",this.handleOnline),document.removeEventListener("visibilitychange",this.handleVisibilityChange),(t=this.ws)==null||t.close(),this.ws=null;for(const n of this.pending.values())n.reject(new Error("Socket disposed"));this.pending.clear()}onStatus(t){return this.statusListeners.add(t),t(this.getStatus()),()=>{this.statusListeners.delete(t)}}subscribe(t,n,r){const i=wf(),s={topic:t,listener:n,eventListener:r};return this.subscriptions.set(i,s),this.enqueue({v:1,type:"subscribe",id:i,topic:t}),()=>{this.subscriptions.delete(i),this.enqueue({v:1,type:"unsubscribe",id:i})}}subscribeTerminal(t,n){const r=wf(),i={type:"terminal",terminalId:t},s={topic:i,listener:n.onSnapshot,eventListener:n.onEvent};return this.subscriptions.set(r,s),this.enqueue({v:1,type:"subscribe",id:r,topic:i}),()=>{this.subscriptions.delete(r),this.enqueue({v:1,type:"unsubscribe",id:r})}}command(t){const n=wf(),r={v:1,type:"command",id:n,command:t};return new Promise((i,s)=>{this.pending.set(n,{resolve:i,reject:s}),this.enqueue(r)})}setFocusedChat(t){const n=wf();this.enqueue({v:1,type:"command",id:n,command:{type:"push.setFocusedChat",chatId:t}})}ensureHealthyConnection(){return!this.ws||this.ws.readyState===WebSocket.CLOSED||this.ws.readyState===WebSocket.CLOSING?(this.reconnectNow(),Promise.resolve()):this.ws.readyState===WebSocket.CONNECTING||!this.isConnectionStale()?Promise.resolve():this.sendPing()}connect(){this.started&&(this.emitStatus("connecting"),this.ws=new WebSocket(this.url),this.ws.addEventListener("open",()=>{this.reconnectDelayMs=750,this.reconnectImmediatelyOnClose=!1,this.lastOpenAt=Date.now(),this.lastMessageAt=this.lastOpenAt,this.emitStatus("connected"),this.startHeartbeat();for(const[n,r]of this.subscriptions.entries())this.sendNow({v:1,type:"subscribe",id:n,topic:r.topic});for(;this.outboundQueue.length>0;){const n=this.outboundQueue.shift();n&&this.sendNow(n)}const t=uZ();t&&this.sendNow({v:1,type:"command",id:wf(),command:{type:"push.identifyDevice",pushDeviceId:t}})}),this.ws.addEventListener("message",t=>{var s,o;this.lastMessageAt=Date.now();const n=performance.now(),r=String(t.data);let i;try{i=JSON.parse(r)}catch{return}if(jF()&&i.type==="snapshot"&&i.snapshot.type==="chat"&&((s=i.snapshot.data)==null?void 0:s.runtime.status)==="starting"&&Qs.debug("[kanna/send->starting][client-ws]",{stage:"socket_message_received",receivedAt:n,payloadBytes:r.length,chatId:i.snapshot.data.runtime.chatId,status:i.snapshot.data.runtime.status,messageCount:i.snapshot.data.messages.length}),jF()&&i.type==="ack"&&Qs.debug("[kanna/send->starting][client-ws]",{stage:"socket_ack_received",receivedAt:n,payloadBytes:r.length,commandId:i.id}),i.type==="snapshot"){const a=this.subscriptions.get(i.id);a==null||a.listener(i.snapshot.data);return}if(i.type==="event"){const a=this.subscriptions.get(i.id);(o=a==null?void 0:a.eventListener)==null||o.call(a,i.event);return}if(i.type==="ack"){const a=this.pending.get(i.id);if(!a)return;this.pending.delete(i.id),a.resolve(i.result);return}if(i.type==="error"){if(!i.id){Qs.error(_fe,i.message);return}const a=this.pending.get(i.id);if(!a)return;this.pending.delete(i.id),a.reject(new Error(i.message))}}),this.ws.addEventListener("close",()=>{if(!this.started)return;const t=this.reconnectImmediatelyOnClose;this.reconnectImmediatelyOnClose=!1,this.stopHeartbeat(),this.clearPingState(),this.emitStatus("disconnected");for(const n of this.pending.values())n.reject(new Error("Disconnected"));if(this.pending.clear(),t){this.connect();return}this.scheduleReconnect()}))}scheduleReconnect(){this.reconnectTimer===null&&(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect(),this.reconnectDelayMs=Math.min(this.reconnectDelayMs*2,5e3)},this.reconnectDelayMs))}getStatus(){var t,n;return((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN?"connected":((n=this.ws)==null?void 0:n.readyState)===WebSocket.CONNECTING?"connecting":"disconnected"}emitStatus(t){for(const n of this.statusListeners)n(t)}isConnectionStale(){const t=Math.max(this.lastMessageAt,this.lastOpenAt);return t>0&&Date.now()-t>=sPe}sendPing(){if(this.pingPromise)return this.pingPromise;const t=this.command({type:"system.ping"}).then(()=>{this.clearPingState()}).catch(n=>{throw this.clearPingState(),this.reconnectNow(),n});return this.pingTimeoutTimer=window.setTimeout(()=>{this.clearPingState(),this.reconnectNow()},aPe),this.pingPromise=t,t}reconnectNow(){if(this.reconnectTimer!==null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),!this.ws||this.ws.readyState===WebSocket.CLOSED){this.connect();return}this.ws.readyState!==WebSocket.CONNECTING&&(this.reconnectImmediatelyOnClose=!0,this.ws.close())}startHeartbeat(){document.visibilityState==="visible"&&this.heartbeatTimer===null&&(this.heartbeatTimer=window.setInterval(()=>{var t;if(document.visibilityState!=="visible"){this.stopHeartbeat();return}((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN&&this.ensureHealthyConnection()},oPe))}stopHeartbeat(){this.heartbeatTimer!==null&&(window.clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}clearPingState(){this.pingTimeoutTimer!==null&&(window.clearTimeout(this.pingTimeoutTimer),this.pingTimeoutTimer=null),this.pingPromise=null}enqueue(t){var n;if(((n=this.ws)==null?void 0:n.readyState)===WebSocket.OPEN){this.sendNow(t);return}this.outboundQueue.push(t)}sendNow(t){var n;(n=this.ws)==null||n.send(JSON.stringify(t))}}const cPe=[],z1=tr()(e=>({byChat:{},setRuns:(t,n)=>e(r=>({byChat:{...r.byChat,[t]:n}}))}));function hL(e){return t=>t.byChat[e]??cPe}const dZ=[],fZ=tr()(e=>({runs:dZ,setRuns:t=>e({runs:t})}));function uPe(e){return e.runs??dZ}const dPe=[],O0=tr()(e=>({models:dPe,status:"idle",error:null,setLoading:()=>e({status:"loading",error:null}),setModels:t=>e({models:t,status:"ready",error:null}),setError:t=>e({status:"error",error:t})})),fPe=[],hPe=[],pPe={},mPe={starredProjectGroups:[],projectGroups:[],stacks:[]};function gPe(){return typeof window>"u"?null:window.sessionStorage.getItem("kanna:ui-update-restart")}const me=tr()(e=>({sidebarData:mPe,optimisticSidebarProjectOrder:null,localProjects:null,updateSnapshot:null,uiRestartPhase:gPe(),chatSnapshot:null,olderHistoryEntries:hPe,isHistoryLoading:!1,historyCursor:null,hasOlderHistory:!1,projectDiffSnapshots:pPe,keybindings:null,appSettings:null,pushConfig:null,llmProvider:null,connectionStatus:"connecting",sidebarReady:!1,localProjectsReady:!1,chatReady:!1,selectedProjectId:null,sidebarOpen:!1,sidebarCollapsed:!1,addProjectModalOpen:!1,commandError:null,startingLocalPath:null,pendingChatId:null,optimisticUserPrompts:fPe,optimisticProcessing:null,focusEpoch:0,setSidebarData:t=>e({sidebarData:t}),setOptimisticSidebarProjectOrder:t=>e(n=>({optimisticSidebarProjectOrder:typeof t=="function"?t(n.optimisticSidebarProjectOrder):t})),setLocalProjects:t=>e({localProjects:t}),setUpdateSnapshot:t=>e({updateSnapshot:t}),setUiRestartPhase:t=>e({uiRestartPhase:t}),setChatSnapshot:t=>e(n=>({chatSnapshot:typeof t=="function"?t(n.chatSnapshot):t})),setOlderHistoryEntries:t=>e(n=>({olderHistoryEntries:typeof t=="function"?t(n.olderHistoryEntries):t})),setIsHistoryLoading:t=>e({isHistoryLoading:t}),setHistoryCursor:t=>e({historyCursor:t}),setHasOlderHistory:t=>e({hasOlderHistory:t}),setProjectDiffSnapshots:t=>e(n=>({projectDiffSnapshots:typeof t=="function"?t(n.projectDiffSnapshots):t})),setKeybindings:t=>e({keybindings:t}),setAppSettings:t=>e({appSettings:t}),setPushConfig:t=>e({pushConfig:t}),setLlmProvider:t=>e({llmProvider:t}),setConnectionStatus:t=>e({connectionStatus:t}),setSidebarReady:t=>e({sidebarReady:t}),setLocalProjectsReady:t=>e({localProjectsReady:t}),setChatReady:t=>e({chatReady:t}),setSelectedProjectId:t=>e({selectedProjectId:t}),setSidebarOpen:t=>e({sidebarOpen:t}),setSidebarCollapsed:t=>e({sidebarCollapsed:t}),setAddProjectModalOpen:t=>e({addProjectModalOpen:t}),setCommandError:t=>e({commandError:t}),setStartingLocalPath:t=>e({startingLocalPath:t}),setPendingChatId:t=>e({pendingChatId:t}),setOptimisticUserPrompts:t=>e(n=>({optimisticUserPrompts:typeof t=="function"?t(n.optimisticUserPrompts):t})),setOptimisticProcessing:t=>e(n=>({optimisticProcessing:typeof t=="function"?t(n.optimisticProcessing):t})),incrementFocusEpoch:()=>e(t=>({focusEpoch:t.focusEpoch+1}))}));function vPe(e,t){const n=["claude","codex","openrouter"];for(const r of n)if(e[r]!==t[r])return!1;return!0}function bPe(e,t){return e===t?!0:!e||!t?!1:e.chatId===t.chatId&&e.projectId===t.projectId&&e.localPath===t.localPath&&e.title===t.title&&e.status===t.status&&e.isDraining===t.isDraining&&e.provider===t.provider&&e.planMode===t.planMode&&vPe(e.sessionTokensByProvider,t.sessionTokensByProvider)}function xPe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>{var i;return n._id===((i=t[r])==null?void 0:i._id)})}function yPe(e,t){return t.length===0?e:e.map(n=>n.id!=="openrouter"?n:{...n,models:t.map(r=>({id:r.id,label:r.label,supportsEffort:!1}))})}function _Pe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>{var i;return n.id===((i=t[r])==null?void 0:i.id)})}function SPe(e,t){return e===t?!0:!e||!t?!1:e.hasOlder===t.hasOlder&&e.olderCursor===t.olderCursor&&e.recentLimit===t.recentLimit}function wPe(e,t){return e.id===t.id&&e.content===t.content&&e.createdAt===t.createdAt&&e.provider===t.provider&&e.model===t.model&&e.planMode===t.planMode&&JSON.stringify(e.modelOptions)===JSON.stringify(t.modelOptions)&&CPe(e.attachments,t.attachments)}function CPe(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,r)=>{const i=t[r];return!!i&&n.id===i.id&&n.kind===i.kind&&n.displayName===i.displayName&&n.absolutePath===i.absolutePath&&n.relativePath===i.relativePath&&n.contentUrl===i.contentUrl&&n.mimeType===i.mimeType&&n.size===i.size})}function kPe(e,t){return e===t?!0:!e||!t||e.length!==t.length?!1:e.every((n,r)=>wPe(n,t[r]))}function EPe(e,t){var s,o;if(e===t)return!0;if(!e||!t||e.status!==t.status||e.branchName!==t.branchName||e.defaultBranchName!==t.defaultBranchName||e.hasOriginRemote!==t.hasOriginRemote||e.originRepoSlug!==t.originRepoSlug||e.hasUpstream!==t.hasUpstream||e.aheadCount!==t.aheadCount||e.behindCount!==t.behindCount||e.lastFetchedAt!==t.lastFetchedAt)return!1;const n=((s=e.branchHistory)==null?void 0:s.entries)??[],r=((o=t.branchHistory)==null?void 0:o.entries)??[];return n.length!==r.length||!n.every((a,l)=>{const d=r[l];return!!d&&a.sha===d.sha&&a.summary===d.summary&&a.description===d.description&&a.authorName===d.authorName&&a.authoredAt===d.authoredAt&&a.githubUrl===d.githubUrl&&a.tags.length===d.tags.length&&a.tags.every((h,p)=>h===d.tags[p])})||e.files.length!==t.files.length?!1:e.files.every((a,l)=>{const d=t.files[l];return!!d&&a.path===d.path&&a.changeType===d.changeType&&a.isUntracked===d.isUntracked&&a.additions===d.additions&&a.deletions===d.deletions&&a.patchDigest===d.patchDigest&&a.mimeType===d.mimeType&&a.size===d.size})}function NPe(e,t){return!!(e&&e.status!=="unknown"&&t&&t.status==="unknown"&&t.files.length===0)}function TPe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{const s=e[i],o=t[i];return!s||!o?!1:s.state===o.state&&s.scheduledAt===o.scheduledAt&&s.resetAt===o.resetAt&&s.detectedAt===o.detectedAt&&s.tz===o.tz})}function APe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{const s=e[i],o=t[i];return!s||!o?!1:s.state===o.state&&s.url===o.url&&s.error===o.error&&s.port===o.port&&s.activatedAt===o.activatedAt&&s.stoppedAt===o.stoppedAt})}function RPe(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>{var a,l,d,h,p,m;const s=e[i],o=t[i];return!s||!o?!1:s.status===o.status&&s.entries.length===o.entries.length&&(s.finalText??"")===(o.finalText??"")&&(((a=s.pendingTool)==null?void 0:a.toolUseId)??null)===(((l=o.pendingTool)==null?void 0:l.toolUseId)??null)&&(((d=s.usage)==null?void 0:d.outputTokens)??null)===(((h=o.usage)==null?void 0:h.outputTokens)??null)&&s.finishedAt===o.finishedAt&&(((p=s.error)==null?void 0:p.code)??null)===(((m=o.error)==null?void 0:m.code)??null)})}function MPe(e,t){if(e===t)return!0;if(e.armed!==t.armed||e.rows.length!==t.rows.length||!e.rows.every((s,o)=>{const a=t.rows[o];return a!=null&&s.runId===a.runId&&s.status===a.status&&s.label===a.label}))return!1;const r=e.rateLimit,i=t.rateLimit;return r==null!=(i==null)?!1:r&&i?r.resetAt===i.resetAt&&r.scheduled===i.scheduled:!0}function jPe(e,t){return e===t?!0:!e||!t?!1:bPe(e.runtime,t.runtime)&&kPe(e.queuedMessages,t.queuedMessages)&&xPe(e.messages,t.messages)&&SPe(e.history,t.history)&&_Pe(e.availableProviders,t.availableProviders)&&TPe(e.schedules,t.schedules)&&e.liveScheduleId===t.liveScheduleId&&APe(e.tunnels,t.tunnels)&&e.liveTunnelId===t.liveTunnelId&&RPe(e.subagentRuns,t.subagentRuns)&&MPe(e.loopProgress,t.loopProgress)}function IF(e,t){const n=new Map;for(const r of e)n.set(r._id,r);for(const r of t)n.set(r._id,r);return[...n.values()]}function IPe(e){for(let t=e.length-1;t>=0;t-=1){const n=e[t];if((n==null?void 0:n.kind)==="user_prompt"&&n.content.trim().length>0)return n.content}return null}const PF="__new_chat__",hZ="lever-theme",pZ="chat-sound-preferences",mZ="terminal-preferences",gZ="chat-preferences";function jT(e){if(typeof window>"u")return null;const t=window.localStorage.getItem(e);if(!t)return null;try{const n=JSON.parse(t);return Hi(n.state)?n.state:null}catch{return null}}function PPe(){if(typeof window>"u")return null;const e={},t=window.localStorage.getItem(hZ);(t==="light"||t==="dark"||t==="system")&&(e.theme=t);const n=jT(pZ);((n==null?void 0:n.chatSoundPreference)==="never"||(n==null?void 0:n.chatSoundPreference)==="unfocused"||(n==null?void 0:n.chatSoundPreference)==="always")&&(e.chatSoundPreference=n.chatSoundPreference),((n==null?void 0:n.chatSoundId)==="blow"||(n==null?void 0:n.chatSoundId)==="bottle"||(n==null?void 0:n.chatSoundId)==="frog"||(n==null?void 0:n.chatSoundId)==="funk"||(n==null?void 0:n.chatSoundId)==="glass"||(n==null?void 0:n.chatSoundId)==="ping"||(n==null?void 0:n.chatSoundId)==="pop"||(n==null?void 0:n.chatSoundId)==="purr"||(n==null?void 0:n.chatSoundId)==="tink")&&(e.chatSoundId=n.chatSoundId);const r=jT(mZ);if(r){e.terminal={},typeof r.scrollbackLines=="number"&&(e.terminal.scrollbackLines=r.scrollbackLines),typeof r.minColumnWidth=="number"&&(e.terminal.minColumnWidth=r.minColumnWidth);const s={};(r.editorPreset==="cursor"||r.editorPreset==="vscode"||r.editorPreset==="xcode"||r.editorPreset==="windsurf"||r.editorPreset==="custom")&&(s.preset=r.editorPreset),typeof r.editorCommandTemplate=="string"&&(s.commandTemplate=r.editorCommandTemplate),Object.keys(s).length>0&&(e.editor=s)}const i=jT(gZ);if(((i==null?void 0:i.defaultProvider)==="last_used"||(i==null?void 0:i.defaultProvider)==="claude"||(i==null?void 0:i.defaultProvider)==="codex")&&(e.defaultProvider=i.defaultProvider),Hi(i==null?void 0:i.providerDefaults)){const s=i.providerDefaults;e.providerDefaults=s}return e.browserSettingsMigrated=!0,Object.keys(e).length>1?e:null}function LPe(){typeof window>"u"||(window.localStorage.removeItem(hZ),window.localStorage.removeItem(pZ),window.localStorage.removeItem(mZ),window.localStorage.removeItem(gZ))}function Cv(e){jr.getState().setFromServer(e);const t=Ss.getState();t.setScrollbackLines(e.terminal.scrollbackLines),t.setMinColumnWidth(e.terminal.minColumnWidth),t.setEditorPreset(e.editor.preset),t.setEditorCommandTemplate(e.editor.commandTemplate);const n=Rf.getState();n.setChatSoundPreference(e.chatSoundPreference),n.setChatSoundId(e.chatSoundId),Ns.getState().applyServerDefaults(e.defaultProvider,e.providerDefaults)}function OPe(e){return JSON.stringify({id:e.id,kind:e.kind,displayName:e.displayName,relativePath:e.relativePath,mimeType:e.mimeType,size:e.size,contentUrl:e.contentUrl})}function pL(e,t=[]){return JSON.stringify({content:e,attachments:t.map(OPe)})}function DPe(e,t){return e.reduce((n,r)=>r.kind!=="user_prompt"?n:n+(pL(r.content,r.attachments??[])===t?1:0),0)}function $Pe(e,t,n){const r=new Map;for(const i of n){if(i.kind!=="user_prompt")continue;const s=pL(i.content,i.attachments??[]);r.set(s,(r.get(s)??0)+1)}return e.filter(i=>i.scopeId!==t?!0:(r.get(i.signature)??0)<i.requiredMatchCount)}function zPe(e,t,n){return e.some(r=>r.id===t)?e.filter(r=>r.id!==t):e}const BPe=200,FPe=500;function LF(e,t){var r;const n=e.find(i=>i.chats.some(s=>s.chatId===t));return n?((r=n.chats.find(i=>i.chatId!==t))==null?void 0:r.chatId)??null:null}function OF(e,t){if(!(t!=null&&t.length)||e.length<=1)return e;const n=new Map(e.map((o,a)=>[o.groupKey,a])),r=new Set,i=t.map(o=>{if(r.has(o))return null;r.add(o);const a=n.get(o);return a===void 0?null:e[a]}).filter(o=>!!o);if(i.length===0)return e;const s=[...i,...e.filter(o=>!r.has(o.groupKey))];return s.every((o,a)=>o===e[a])?e:s}function UPe(e=document){return e.visibilityState==="visible"&&e.hasFocus()}function HPe(){return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}function WPe(){const e=_.useMemo(()=>new lPe(HPe()),[]);return _.useEffect(()=>(e.start(),()=>{e.dispose()}),[e]),e}const DF="kanna:profile-send-to-starting";function VPe(){try{return window.sessionStorage.getItem(DF)==="1"||window.localStorage.getItem(DF)==="1"}catch{return!1}}function vZ(e){return Number((performance.now()-e).toFixed(1))}function zu(e,t,n){!e||!VPe()||Qs.debug("[kanna/send->starting][client]",{traceId:e.traceId,stage:t,elapsedMs:vZ(e.startedAt),serverChatId:e.serverChatId,routeChatIdAtSend:e.routeChatIdAtSend,...n})}function KPe(e){var t,n;return(e==null?void 0:e.provider)==="claude"&&e.model&&((t=e.modelOptions)!=null&&t.claude)?{provider:"claude",model:e.model,modelOptions:{reasoningEffort:e.modelOptions.claude.reasoningEffort??"high",contextWindow:e.modelOptions.claude.contextWindow??"200k"},planMode:!!e.planMode}:(e==null?void 0:e.provider)==="codex"&&e.model&&((n=e.modelOptions)!=null&&n.codex)?{provider:"codex",model:e.model,modelOptions:{reasoningEffort:e.modelOptions.codex.reasoningEffort??"high",fastMode:e.modelOptions.codex.fastMode??!1},planMode:!!e.planMode}:null}function GPe(e,t){var n;return t?((n=e.find(r=>r.chats.some(i=>i.chatId===t)))==null?void 0:n.groupKey)??null:null}function qPe(e,t){return e==="awaiting_disconnect"&&t==="disconnected"?"awaiting_server_ready":"none"}function YPe(e,t){return t==="updating"||t==="restart_pending"?{active:!0,label:"Installing update"}:e==="awaiting_disconnect"||e==="awaiting_server_ready"?{active:!0,label:"Re-deploying Kanna"}:{active:!1,label:""}}const XPe=30,mL="kanna:ui-update-restart",bZ="kanna:last-update-reload-request";function JPe(e){return e+XPe}function ZPe(e,t){return t>0?t:e}function $F(){return window.sessionStorage.getItem(mL)}function QPe(e){window.sessionStorage.setItem(mL,e)}function eLe(){window.sessionStorage.removeItem(mL)}function tLe(e,t){return e?String(e)!==t:!1}function nLe(){return window.sessionStorage.getItem(bZ)}function rLe(e){window.sessionStorage.setItem(bZ,String(e))}function iLe(){return"/auth/status"}async function sLe(e=fetch){return(await e(iLe(),{method:"GET",cache:"no-store",headers:{Accept:"application/json"}})).ok}function oLe(e){const t=e.selectedProjectId??e.sidebarProjectId??null;return t?{kind:"project_id",projectId:t}:e.fallbackLocalProjectPath?{kind:"local_path",localPath:e.fallbackLocalProjectPath}:null}function aLe(e,t){return!e||!t?null:e.runtime.chatId!==t?(e.runtime.chatId,e.runtime.provider,null):e}function lLe(e){var co,$s,ya;const t=Ad(),n=WPe(),r=zx(),i=me(q=>q.sidebarData),s=me(q=>q.optimisticSidebarProjectOrder),o=me(q=>q.localProjects),a=me(q=>q.updateSnapshot),l=me(q=>q.uiRestartPhase),d=_.useCallback(q=>{QPe(q),me.getState().setUiRestartPhase(q)},[]),h=_.useCallback(()=>{eLe(),me.getState().setUiRestartPhase(null)},[]),p=me(q=>q.chatSnapshot),m=me(q=>q.olderHistoryEntries),v=me(q=>q.isHistoryLoading),b=me(q=>q.historyCursor),x=me(q=>q.hasOlderHistory),S=me(q=>q.projectDiffSnapshots),C=me(q=>q.keybindings),k=me(q=>q.appSettings),w=me(q=>q.pushConfig),N=me(q=>q.llmProvider),A=me(q=>q.connectionStatus),T=me(q=>q.sidebarReady),M=me(q=>q.localProjectsReady),j=me(q=>q.chatReady),P=me(q=>q.selectedProjectId),D=me(q=>q.sidebarOpen),L=me(q=>q.sidebarCollapsed),I=me(q=>q.addProjectModalOpen),$=me(q=>q.commandError),H=me(q=>q.startingLocalPath),z=me(q=>q.pendingChatId),F=me(q=>q.optimisticUserPrompts),K=me(q=>q.optimisticProcessing),W=me(q=>q.focusEpoch),V=_.useRef(new Map),X=WR(vm(q=>Object.keys(q.drafts).sort())),G=WR(vm(q=>Object.keys(q.attachmentDrafts).sort())),te=_.useRef(0),oe=_.useRef(null),ce=_.useRef({projectId:null,diffs:null}),de=yve(Ss(q=>q.editorPreset)),ee=_.useMemo(()=>OF(i.projectGroups,s),[s,i.projectGroups]),ne=_.useRef(ee);_.useLayoutEffect(()=>{ne.current=ee});const ie=_.useMemo(()=>ee===i.projectGroups?i:{...i,projectGroups:ee},[i,ee]);_.useEffect(()=>n.onStatus(q=>me.getState().setConnectionStatus(q)),[n]),_.useEffect(()=>n.subscribe({type:"sidebar"},q=>{const J=me.getState();J.setSidebarData(q),J.setOptimisticSidebarProjectOrder(be=>be&&OF(q.projectGroups,be)===q.projectGroups?null:be),J.setSidebarReady(!0),J.setCommandError(null)}),[n]),_.useEffect(()=>{if(A!=="connected")return;const q=[...new Set([...X,...G])].sort();n.command({type:"chat.setDraftProtection",chatIds:q}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))})},[G,A,X,n]),_.useEffect(()=>n.subscribe({type:"local-projects"},q=>{const J=me.getState();J.setLocalProjects(q),J.setLocalProjectsReady(!0),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"update"},q=>{const J=me.getState();J.setUpdateSnapshot(q),J.setCommandError(null)}),[n]),_.useEffect(()=>{A==="connected"&&n.command({type:"update.check",force:!0}).catch(q=>{me.getState().setCommandError(q instanceof Error?q.message:String(q))})},[A,n]),_.useEffect(()=>{const q=a==null?void 0:a.reloadRequestedAt;tLe(q,nLe())&&q&&(rLe(q),d("awaiting_disconnect"))},[d,a==null?void 0:a.reloadRequestedAt]),_.useEffect(()=>{const q=$F();qPe(q,A)==="awaiting_server_ready"&&d("awaiting_server_ready")},[A,d]),_.useEffect(()=>{if($F()!=="awaiting_server_ready")return;let q=!1,J=null;const be=async()=>{try{if(await sLe()){if(q)return;h(),window.location.reload();return}}catch{}q||(J=window.setTimeout(()=>{be()},500))};return be(),()=>{q=!0,J!==null&&window.clearTimeout(J)}},[A,h]),_.useEffect(()=>{function q(){a!=null&&a.lastCheckedAt&&(Date.now()-a.lastCheckedAt<=3600*1e3||n.command({type:"update.check"}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))}))}return window.addEventListener("focus",q),()=>{window.removeEventListener("focus",q)}},[n,a==null?void 0:a.lastCheckedAt]),_.useEffect(()=>n.subscribe({type:"keybindings"},q=>{const J=me.getState();J.setKeybindings(q),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"app-settings"},q=>{const J=me.getState();J.setAppSettings(q),Cv(q),J.setCommandError(null)}),[n]),_.useEffect(()=>n.subscribe({type:"push-config"},q=>{me.getState().setPushConfig(q)}),[n]),_.useEffect(()=>n.subscribe({type:"pty-instances"},q=>{kc.getState().applySnapshot(q.instances)},q=>{q.type==="pty-instances.added"?kc.getState().applyDiff({op:"added",instance:q.instance}):q.type==="pty-instances.updated"?kc.getState().applyDiff({op:"updated",instance:q.instance}):kc.getState().applyDiff({op:"removed",chatId:q.chatId})}),[n]);const ae=_.useCallback(async()=>{try{jr.getState().setHydrationStatus("loading");const q=await n.command({type:"settings.readAppSettings"}),J=me.getState();J.setAppSettings(q),Cv(q),J.setCommandError(null)}catch(q){jr.getState().setHydrationStatus("error"),me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[n]),Q=_.useCallback(async(q,J)=>{try{await n.command({type:"chat.setPolicyOverride",chatId:q,policyOverride:J}),me.getState().setCommandError(null)}catch(be){throw me.getState().setCommandError(be instanceof Error?be.message:String(be)),be}},[n]),ke=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch(q);const J=await n.command({type:"settings.writeAppSettingsPatch",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),we=_.useCallback(async q=>{try{await n.command({type:"settings.testMcpServer",id:q}),me.getState().setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),J}},[n]),Ae=_.useCallback(async q=>{try{const J=await n.command({type:"settings.startMcpOAuth",id:q});return me.getState().setCommandError(null),J}catch(J){const be=J instanceof Error?J.message:String(J);return me.getState().setCommandError(be),{ok:!1,error:be}}},[n]),Xe=_.useCallback(async(q,J)=>{try{const be=await n.command({type:"settings.completeMcpOAuth",id:q,callbackUrl:J});return me.getState().setCommandError(null),be}catch(be){const Ze=be instanceof Error?be.message:String(be);return me.getState().setCommandError(Ze),{ok:!1,error:Ze}}},[n]),ft=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch({cloudflareTunnel:q});const J=await n.command({type:"appSettings.setCloudflareTunnel",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),Ct=_.useCallback(async q=>{try{jr.getState().applyOptimisticPatch({claudeAuth:q});const J=await n.command({type:"appSettings.setClaudeAuth",patch:q}),be=me.getState();be.setAppSettings(J),Cv(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),await ae(),J}},[ae,n]),ln=_.useCallback(async q=>await n.command({type:"appSettings.testOAuthToken",token:q}),[n]),en=_.useCallback(async()=>{try{const q=await n.command({type:"settings.readLlmProvider"}),J=me.getState();J.setLlmProvider(q),J.setCommandError(null)}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[n]),bt=_.useCallback(async q=>{try{const J=await n.command({type:"settings.writeLlmProvider",provider:q.provider,apiKey:q.apiKey,model:q.model,baseUrl:q.baseUrl}),be=me.getState();be.setLlmProvider(J),be.setCommandError(null)}catch(J){throw me.getState().setCommandError(J instanceof Error?J.message:String(J)),J}},[n]),fn=_.useCallback(async q=>await n.command({type:"settings.validateLlmProvider",provider:q.provider,apiKey:q.apiKey,model:q.model,baseUrl:q.baseUrl}),[n]);_.useEffect(()=>{A==="connected"&&ae()},[A,ae]),_.useEffect(()=>{if(A!=="connected")return;O0.getState().setLoading(),n.command({type:"settings.listOpenRouterModels"}).then(J=>{O0.getState().setModels(J)}).catch(J=>{const be=J instanceof Error?J.message:String(J);O0.getState().setError(be)})},[A,n]),_.useEffect(()=>{if(A!=="connected"||(k==null?void 0:k.browserSettingsMigrated)!==!1)return;const q=PPe();q&&ke(q).then(LPe).catch(()=>{})},[k==null?void 0:k.browserSettingsMigrated,A,ke]),_.useEffect(()=>{A==="connected"&&en()},[A,en]),_.useEffect(()=>{function q(){me.getState().incrementFocusEpoch()}return window.addEventListener("focus",q),document.addEventListener("visibilitychange",q),()=>{window.removeEventListener("focus",q),document.removeEventListener("visibilitychange",q)}},[]),_.useEffect(()=>{if(!e){me.getState().setChatSnapshot(null),me.getState().setChatReady(!0);return}++te.current,ne.current.length,ne.current.reduce((J,be)=>J+be.chats.length,0),me.getState().setChatSnapshot(null),me.getState().setChatReady(!1);const q=n.subscribe({type:"chat",chatId:e,recentLimit:BPe},J=>{if(J!=null&&J.runtime.chatId){const Ze=[...V.current.values()].filter(hn=>hn.serverChatId===J.runtime.chatId).sort((hn,Ir)=>Ir.startedAt-hn.startedAt)[0];Ze&&Ze.snapshotAt===void 0&&(Ze.snapshotAt=performance.now(),zu(Ze,"chat_snapshot_received",{status:J.runtime.status,messageCount:J.messages.length}))}me.getState().setChatSnapshot(Ze=>{const hn=jPe(Ze,J);return J==null||J.runtime.chatId,J==null||J.runtime.provider,J==null||J.runtime.status,J==null||J.messages.length,hn?Ze:J});const be=me.getState();if(be.setHistoryCursor((J==null?void 0:J.history.olderCursor)??null),be.setHasOlderHistory((J==null?void 0:J.history.hasOlder)??!1),be.setChatReady(!0),be.setCommandError(null),J){const Ze=uL.getState();Ze.setForChat(J.runtime.chatId,J.slashCommands??[]),Ze.setLoadingForChat(J.runtime.chatId,J.slashCommandsLoading??!1)}});return()=>{ne.current.length,ne.current.reduce((J,be)=>J+be.chats.length,0),q()}},[e,n]),_.useEffect(()=>{if(e)return n.subscribe({type:"workflows",chatId:e},q=>{z1.getState().setRuns(q.chatId,q.runs)})},[e,n]),_.useEffect(()=>n.subscribe({type:"orch-runs"},q=>{fZ.getState().setRuns(q.runs)}),[n]),_.useEffect(()=>{if(P)return;const q=ee[0];q&&me.getState().setSelectedProjectId(q.groupKey)},[P,ee]),_.useEffect(()=>{if(!e||!T||!j)return;if(ee.some(J=>J.chats.some(be=>be.chatId===e))){z===e&&me.getState().setPendingChatId(null);return}z!==e&&t("/")},[e,j,t,z,ee,T]),_.useEffect(()=>{p&&(me.getState().setSelectedProjectId(p.runtime.projectId),z===p.runtime.chatId&&me.getState().setPendingChatId(null))},[p,z]),_.useEffect(()=>{if(!e||!T||!UPe())return;const q=ee.flatMap(J=>J.chats).find(J=>J.chatId===e);q!=null&&q.unread&&n.command({type:"chat.markRead",chatId:e}).catch(J=>{me.getState().setCommandError(J instanceof Error?J.message:String(J))})},[e,W,ee,T,n]),_.useEffect(()=>{const q=me.getState();q.setOlderHistoryEntries([]),q.setIsHistoryLoading(!1),q.setHistoryCursor(null),q.setHasOlderHistory(!1)},[e]);const qe=_.useMemo(()=>aLe(p,e),[e,p]),Ht=_.useMemo(()=>(qe==null?void 0:qe.runtime.projectId)??GPe(ee,e)??P,[e,qe==null?void 0:qe.runtime.projectId,P,ee]),cn=_.useMemo(()=>{const q=Ht?S[Ht]??null:null;return Ht&&q?(ce.current={projectId:Ht,diffs:q},q):Ht&&ce.current.projectId===Ht?ce.current.diffs:q},[Ht,S]);_.useEffect(()=>Ht?n.subscribe({type:"project-git",projectId:Ht},J=>{me.getState().setProjectDiffSnapshots(be=>{const Ze=J??null;return NPe(be[Ht]??null,Ze)||EPe(be[Ht]??null,Ze)?be:{...be,[Ht]:Ze}}),me.getState().setCommandError(null)}):void 0,[Ht,n]),_.useEffect(()=>{p==null||p.runtime.chatId,p==null||p.runtime.provider,qe==null||qe.runtime.chatId,qe==null||qe.runtime.provider},[e,qe,p,z]);const wt=_.useMemo(()=>IF(m,(qe==null?void 0:qe.messages)??[]),[qe==null?void 0:qe.messages,m]),zt=e??PF,tn=_.useMemo(()=>F.filter(q=>q.scopeId===zt).map(q=>q.entry),[zt,F]),Yt=_.useMemo(()=>[...wt,...tn],[tn,wt]),Kt=_.useMemo(()=>$1(Yt),[Yt]),sn=_.useMemo(()=>IPe(Kt),[Kt]),Nn=_.useMemo(()=>qIe(Kt),[Kt]),Ue=(qe==null?void 0:qe.runtime)??null,un=(qe==null?void 0:qe.queuedMessages)??[],kt=((K==null?void 0:K.scopeId)===zt&&(!Ue||Ue.status==="idle")?"starting":null)??(Ue==null?void 0:Ue.status)??null,Xt=(qe==null?void 0:qe.availableProviders)??Lb,Ce=O0(vm(q=>q.models)),rt=_.useMemo(()=>yPe(Xt,Ce),[Xt,Ce]),gt=XIe(kt??void 0),it=YIe(kt??void 0),jt=(Ue==null?void 0:Ue.isDraining)??!1,Bt=((co=o==null?void 0:o.projects[0])==null?void 0:co.localPath)??null,Et=(Ue==null?void 0:Ue.localPath)??Bt??(($s=ee[0])==null?void 0:$s.localPath),Lt=!!(P??(Ue==null?void 0:Ue.projectId)??((ya=ee[0])==null?void 0:ya.groupKey)??Bt);_.useEffect(()=>{(K==null?void 0:K.scopeId)===zt&&Ue!=null&&Ue.status&&Ue.status!=="idle"&&me.getState().setOptimisticProcessing(null)},[K,zt,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!(K!=null&&K.ackedAt)||K.scopeId!==zt||Ue!=null&&Ue.status&&Ue.status!=="idle")return;const q=K.ackedAt,J=window.setTimeout(()=>{me.getState().setOptimisticProcessing(be=>(be==null?void 0:be.scopeId)===zt&&be.ackedAt===q?null:be)},300);return()=>window.clearTimeout(J)},[K,zt,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!e||(Ue==null?void 0:Ue.status)!=="starting")return;const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];!q||q.startingStatusAt!==void 0||(q.startingStatusAt=performance.now(),zu(q,"runtime_status_starting",{status:Ue.status}))},[e,Ue==null?void 0:Ue.status]),_.useEffect(()=>{if(!e||!Ue||Ue.status==="starting")return;const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];!q||q.startingRenderedAt!==void 0||(zu(q,"starting_not_observed",{status:Ue.status}),V.current.delete(q.traceId))},[e,Ue]),_.useLayoutEffect(()=>{if(!e||(Ue==null?void 0:Ue.status)!=="starting"){oe.current=null;return}const q=[...V.current.values()].filter(J=>J.serverChatId===e).sort((J,be)=>be.startedAt-J.startedAt)[0];q&&oe.current!==q.traceId&&(oe.current=q.traceId,q.startingRenderedAt=performance.now(),zu(q,"starting_render_committed",{totalMs:vZ(q.startedAt)}),V.current.delete(q.traceId))},[e,Ue==null?void 0:Ue.status]),_.useEffect(()=>{me.getState().setOptimisticUserPrompts(q=>{const J=$Pe(q,zt,wt);return J.length===q.length&&J.every((be,Ze)=>be===q[Ze])?q:J})},[zt,wt]);const nn=_.useCallback(async()=>{if(!(!e||!b||v||!x)){me.getState().setIsHistoryLoading(!0);try{const q=await n.command({type:"chat.loadHistory",chatId:e,beforeCursor:b,limit:FPe}),J=me.getState();J.setOlderHistoryEntries(be=>IF(q.messages,be)),J.setHistoryCursor(q.olderCursor),J.setHasOlderHistory(q.hasOlder),J.setCommandError(null)}catch(q){const J=q instanceof Error?q.message:String(q);me.getState().setCommandError(J)}finally{me.getState().setIsHistoryLoading(!1)}}},[e,x,b,v,n]),$t=_.useCallback(async q=>{const J=Ns.getState(),be=e?J.getComposerState(e):J.getComposerState(vb),Ze=await n.command({type:"chat.create",projectId:q});J.initializeComposerForChat(Ze.chatId,{sourceState:be});const hn=me.getState();hn.setSelectedProjectId(q),hn.setPendingChatId(Ze.chatId),t(`/chat/${Ze.chatId}`),hn.setSidebarOpen(!1),hn.setCommandError(null)},[e,t,n]),re=_.useCallback(async q=>q.kind==="project_id"?{projectId:q.projectId}:q.kind==="local_path"?{projectId:(await n.command({type:"project.open",localPath:q.localPath})).projectId,localPath:q.localPath}:{projectId:(await n.command(q.project.mode==="new"?{type:"project.create",localPath:q.project.localPath,title:q.project.title}:{type:"project.open",localPath:q.project.localPath})).projectId,localPath:q.project.localPath},[n]),je=_.useCallback(async q=>{try{let J;q.kind==="project_id"?J=null:q.kind==="local_path"?J=q.localPath:J=q.project.localPath,J&&me.getState().setStartingLocalPath(J);const{projectId:be}=await re(q);await $t(be)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}finally{me.getState().setStartingLocalPath(null)}},[$t,re]),ht=_.useCallback(async q=>{await je({kind:"project_id",projectId:q})},[je]),Ne=_.useCallback(async q=>{try{const J=await n.command({type:"chat.fork",chatId:q.chatId}),be=Ns.getState();be.initializeComposerForChat(J.chatId,{sourceState:be.getComposerState(q.chatId)});const Ze=me.getState();Ze.setPendingChatId(J.chatId),t(`/chat/${J.chatId}`),Ze.setSidebarOpen(!1),Ze.setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,n]),We=_.useCallback(async q=>{await je({kind:"local_path",localPath:q})},[je]),Ke=_.useCallback(async q=>{await je({kind:"project_request",project:q})},[je]),Je=_.useCallback(async q=>{try{await n.command({type:"update.check",force:q==null?void 0:q.force}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),pt=_.useCallback(async q=>{d("awaiting_disconnect");try{const J=await n.command({type:"update.install",version:q});if(!J.ok){h(),me.getState().setCommandError(null),await r.alert({title:J.userTitle??"Update failed",description:J.userMessage??"Kanna could not install the update. Try again later.",closeLabel:"OK"});return}if(J.ok&&J.action==="reload"){window.location.reload();return}me.getState().setCommandError(null)}catch(J){h(),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[h,r,d,n]),Ot=_.useCallback(async()=>{d("awaiting_disconnect");try{const q=await n.command({type:"update.reload"});if(!q.ok){h(),me.getState().setCommandError(null),await r.alert({title:q.userTitle??"Re-deploy failed",description:q.userMessage??"Kanna could not re-deploy. Try again later.",closeLabel:"OK"});return}if(q.action==="reload"){window.location.reload();return}me.getState().setCommandError(null)}catch(q){h(),me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[h,r,d,n]),xt=_.useCallback(async()=>{try{const q=await fetch("/auth/logout",{method:"POST",headers:{Accept:"application/json"}});if(!q.ok)throw new Error(`Sign out failed with status ${q.status}`);me.getState().setCommandError(null),window.location.reload()}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[]),Be=_.useCallback(async(q,J)=>{var Fe;const be=(J==null?void 0:J.attachments)??[],Ze=wf(),hn=wf(),Ir=pL(q,be),ki=e??PF;me.getState().setOptimisticProcessing({scopeId:ki,ackedAt:null});const qi={traceId:hn,optimisticId:Ze,startedAt:performance.now(),serverChatId:e,routeChatIdAtSend:e,contentPreview:q.slice(0,80)};V.current.set(hn,qi),zu(qi,"handle_send_called",{optimisticScopeId:ki,attachments:be.length,contentLength:q.length,contentPreview:qi.contentPreview});const Ee=DPe(wt,Ir)+F.filter(B=>B.scopeId===ki&&B.signature===Ir).length+1;me.getState().setOptimisticUserPrompts(B=>[...B,{id:Ze,scopeId:ki,signature:Ir,requiredMatchCount:Ee,entry:{_id:`optimistic:${Ze}`,kind:"user_prompt",content:q,attachments:be,createdAt:Date.now()}}]),zu(qi,"optimistic_prompt_added",{optimisticId:Ze,optimisticScopeId:ki});try{let B=P??((Fe=ee[0])==null?void 0:Fe.groupKey)??null;if(!e&&!B&&Bt&&(B=(await n.command({type:"project.open",localPath:Bt})).projectId,me.getState().setSelectedProjectId(B)),!e&&!B)throw new Error("Open a project first");const ze=VR.getState().autoResumeOnRateLimit,yt=await n.command({type:"chat.send",chatId:e??void 0,projectId:e?void 0:B??void 0,clientTraceId:hn,provider:J==null?void 0:J.provider,content:q,attachments:be,model:J==null?void 0:J.model,modelOptions:J==null?void 0:J.modelOptions,planMode:J==null?void 0:J.planMode,autoResumeOnRateLimit:ze});if(qi.ackAt=performance.now(),qi.serverChatId=yt.chatId??qi.serverChatId,yt.queued?(me.getState().setOptimisticUserPrompts(yr=>zPe(yr,Ze,{queued:!0})),me.getState().setOptimisticProcessing(null)):me.getState().setOptimisticProcessing(yr=>yr&&{scopeId:!e&&yt.chatId?yt.chatId:yr.scopeId,ackedAt:performance.now()}),zu(qi,"chat_send_ack_received",{resultChatId:yt.chatId??null,queued:yt.queued??!1}),!e&&yt.chatId){me.getState().setOptimisticUserPrompts(Fd=>Fd.map(_a=>_a.id===Ze?{..._a,scopeId:yt.chatId}:_a));const yr=Ns.getState();yr.setComposerState(yt.chatId,KPe(J)??yr.getComposerState(vb)),me.getState().setPendingChatId(yt.chatId),t(`/chat/${yt.chatId}`)}me.getState().setCommandError(null)}catch(B){throw me.getState().setOptimisticUserPrompts(ze=>ze.filter(yt=>yt.id!==Ze)),me.getState().setOptimisticProcessing(null),zu(qi,"handle_send_failed",{error:B instanceof Error?B.message:String(B)}),V.current.delete(hn),me.getState().setCommandError(B instanceof Error?B.message:String(B)),B}},[e,Bt,t,F,P,wt,ee,n]),Ft=_.useCallback(async q=>{if(!e)return;const J=e;me.getState().setOptimisticProcessing({scopeId:J,ackedAt:null});try{await n.command({type:"message.steer",chatId:e,queuedMessageId:q}),me.getState().setOptimisticProcessing(be=>(be==null?void 0:be.scopeId)===J?{scopeId:J,ackedAt:performance.now()}:be),me.getState().setCommandError(null)}catch(be){me.getState().setOptimisticProcessing(null),me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,n]),Ln=_.useCallback(async q=>{if(e)try{await n.command({type:"message.dequeue",chatId:e,queuedMessageId:q}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[e,n]),Gt=_.useCallback(async()=>{if(e)try{await n.command({type:"chat.cancel",chatId:e})}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[e,n]),Jt=_.useCallback(async()=>{if(e)try{await n.command({type:"chat.stopDraining",chatId:e})}catch(q){me.getState().setCommandError(q instanceof Error?q.message:String(q))}},[e,n]),xr=_.useCallback(async q=>{const J=await r.prompt({title:"Rename Chat",initialValue:q.title,confirmLabel:"Rename"});if(!(!J||J===q.title))try{await n.command({type:"chat.rename",chatId:q.chatId,title:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[r,n]),In=_.useCallback(async q=>{if(await r.confirm({title:"Delete Chat",description:`Delete "${q.title}"? This cannot be undone.`,confirmLabel:"Delete",confirmVariant:"destructive"}))try{if(await n.command({type:"chat.delete",chatId:q.chatId}),q.chatId===e){const be=LF(ee,q.chatId);t(be?`/chat/${be}`:"/")}}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,r,t,ee,n]),Gn=_.useCallback(async q=>{try{if(await n.command({type:"chat.archive",chatId:q.chatId}),q.chatId===e){const J=LF(ee,q.chatId);t(J?`/chat/${J}`:"/")}me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[e,t,ee,n]),qn=_.useCallback(async q=>{try{me.getState().setPendingChatId(q),await n.command({type:"chat.unarchive",chatId:q}),t(`/chat/${q}`),me.getState().setCommandError(null)}catch(J){me.getState().setPendingChatId(null),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,n]),ye=_.useCallback(async q=>{try{await n.command({type:"project.remove",projectId:q}),Gu.getState().clearProject(q),Ks.getState().clearProject(q),(Ue==null?void 0:Ue.projectId)===q&&t("/"),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[t,Ue,n]),Qe=_.useCallback(async(q,J)=>{try{await n.command({type:"project.setStar",projectId:q,starred:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),zn=_.useCallback(async q=>{me.getState().setOptimisticSidebarProjectOrder(q);try{await n.command({type:"sidebar.reorderProjectGroups",projectIds:q}),me.getState().setCommandError(null)}catch(J){me.getState().setOptimisticSidebarProjectOrder(null),me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),Ur=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.create",title:q,projectIds:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),ue=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.rename",stackId:q,title:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),Ye=_.useCallback(async q=>{try{await n.command({type:"stack.remove",stackId:q}),me.getState().setCommandError(null)}catch(J){me.getState().setCommandError(J instanceof Error?J.message:String(J))}},[n]),ct=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.addProject",stackId:q,projectId:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),at=_.useCallback(async(q,J)=>{try{await n.command({type:"stack.removeProject",stackId:q,projectId:J}),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[n]),Mn=_.useCallback(async(q,J,be)=>{try{const Ze=Ns.getState(),hn=e?Ze.getComposerState(e):Ze.getComposerState(vb),Ir=await n.command({type:"chat.create",projectId:q,stackId:J,stackBindings:be});Ze.initializeComposerForChat(Ir.chatId,{sourceState:hn});const ki=me.getState();ki.setSelectedProjectId(q),ki.setPendingChatId(Ir.chatId),t(`/chat/${Ir.chatId}`),ki.setSidebarOpen(!1),ki.setCommandError(null)}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,t,n]),It=_.useCallback(async q=>{try{const J=await n.command({type:"stack.listWorktrees",projectId:q});return me.getState().setCommandError(null),J.worktrees}catch(J){return me.getState().setCommandError(J instanceof Error?J.message:String(J)),[]}},[n]),Hr=_.useCallback(async()=>await n.command({type:"sessions.importClaude"}),[n]),li=_.useCallback(async q=>{const J=Ss.getState();me.getState().setCommandError(null),await n.command({type:"system.openExternal",...q,editor:q.action==="open_editor"?q.editor??{preset:J.editorPreset,commandTemplate:J.editorCommandTemplate}:void 0})},[n]),$l=_.useCallback(async(q,J)=>{var Ze,hn;const be=(Ue==null?void 0:Ue.localPath)??((Ze=o==null?void 0:o.projects[0])==null?void 0:Ze.localPath)??((hn=ee[0])==null?void 0:hn.localPath);if(be)try{await li({action:q,localPath:be,editor:J})}catch(Ir){me.getState().setCommandError(Ir instanceof Error?Ir.message:String(Ir))}},[o==null?void 0:o.projects,li,Ue==null?void 0:Ue.localPath,ee]),Ds=_.useCallback(async q=>{var J;try{if(typeof navigator>"u"||!((J=navigator.clipboard)!=null&&J.writeText))throw new Error("Clipboard is not available");await navigator.clipboard.writeText(q),me.getState().setCommandError(null)}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[]),va=_.useCallback(async(q,J="open_editor",be)=>{try{await li({action:J,localPath:q.path,line:q.line,column:q.column,editor:be})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[li]),Po=_.useCallback(async(q,J)=>{try{await li({action:q,localPath:J})}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[li]),Dt=_.useCallback(()=>{var J;const q=oLe({selectedProjectId:P,sidebarProjectId:(J=ee[0])==null?void 0:J.groupKey,fallbackLocalProjectPath:Bt});if(q){je(q);return}t("/")},[Bt,t,P,ee,je]),Tn=_.useCallback(()=>me.getState().setSidebarOpen(!0),[]),Yn=_.useCallback(()=>me.getState().setSidebarOpen(!1),[]),Cn=_.useCallback(()=>me.getState().setSidebarCollapsed(!0),[]),ba=_.useCallback(()=>me.getState().setSidebarCollapsed(!1),[]),zl=_.useCallback(()=>me.getState().setAddProjectModalOpen(!0),[]),Xa=_.useCallback(()=>me.getState().setAddProjectModalOpen(!1),[]),gs=_.useCallback(async(q,J,be)=>{if(e)try{await n.command({type:"chat.respondTool",chatId:e,toolUseId:q,result:{questions:J,answers:be}})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,n]),xa=_.useCallback(async(q,J,be,Ze)=>{if(e){J&&Ns.getState().setChatComposerPlanMode(e,!1);try{await n.command({type:"chat.respondTool",chatId:e,toolUseId:q,result:{confirmed:J,...be?{clearContext:!0}:{},...Ze?{message:Ze}:{}}})}catch(hn){me.getState().setCommandError(hn instanceof Error?hn.message:String(hn))}}},[e,n]),uu=_.useCallback(async(q,J,be,Ze)=>{if(e)try{await n.command({type:"chat.respondSubagentTool",chatId:e,runId:q,toolUseId:J,result:{questions:be,answers:Ze}})}catch(hn){me.getState().setCommandError(hn instanceof Error?hn.message:String(hn))}},[e,n]),ci=_.useCallback(async(q,J,be)=>{if(e)try{await n.command({type:"chat.respondSubagentTool",chatId:e,runId:q,toolUseId:J,result:be})}catch(Ze){me.getState().setCommandError(Ze instanceof Error?Ze.message:String(Ze))}},[e,n]),Ja=_.useCallback(async(q,J)=>{if(e)try{await n.command({type:"chat.toolRequestAnswer",chatId:e,toolRequestId:q,decision:J})}catch(be){me.getState().setCommandError(be instanceof Error?be.message:String(be))}},[e,n]),Za=YPe(l,a==null?void 0:a.status);return{socket:n,activeChatId:e,activeProjectId:Ht,sidebarData:ie,localProjects:o,updateSnapshot:a,chatSnapshot:p,chatDiffSnapshot:cn,keybindings:C,appSettings:k,pushConfig:w,llmProvider:N,connectionStatus:A,sidebarReady:T,uiRestartActive:Za.active,uiRestartLabel:Za.label,localProjectsReady:M,commandError:$,startingLocalPath:H,sidebarOpen:D,sidebarCollapsed:L,messages:Kt,queuedMessages:un,previousPrompt:sn,latestToolIds:Nn,runtime:Ue,runtimeStatus:kt,isHistoryLoading:v,hasOlderHistory:x,availableProviders:rt,isProcessing:gt,canCancel:it,isDraining:jt,navbarLocalPath:Et,editorLabel:de,hasSelectedProject:Lt,addProjectModalOpen:I,openSidebar:Tn,closeSidebar:Yn,collapseSidebar:Cn,expandSidebar:ba,openAddProjectModal:zl,closeAddProjectModal:Xa,loadOlderHistory:nn,handleCreateChat:ht,handleForkChat:Ne,handleOpenLocalProject:We,handleCreateProject:Ke,handleCheckForUpdates:Je,handleInstallUpdate:pt,handleForceReload:Ot,handleReadAppSettings:ae,handleWriteAppSettings:ke,handleTestMcpServer:we,handleStartMcpOAuth:Ae,handleCompleteMcpOAuth:Xe,handleSetChatPolicyOverride:Q,handleWriteCloudflareTunnel:ft,handleWriteClaudeAuth:Ct,handleTestOAuthToken:ln,handleReadLlmProvider:en,handleWriteLlmProvider:bt,handleValidateLlmProvider:fn,handleSignOut:xt,handleSend:Be,handleSteerQueuedMessage:Ft,handleRemoveQueuedMessage:Ln,handleCancel:Gt,handleStopDraining:Jt,handleRenameChat:xr,handleArchiveChat:Gn,handleOpenArchivedChat:qn,handleDeleteChat:In,handleHideProject:ye,handleToggleProjectStar:Qe,handleReorderProjectGroups:zn,stacks:ie.stacks,handleCreateStack:Ur,handleRenameStack:ue,handleRemoveStack:Ye,handleAddProjectToStack:ct,handleRemoveProjectFromStack:at,handleCreateStackChat:Mn,handleListStackWorktrees:It,importClaudeSessions:Hr,handleCopyPath:Ds,handleOpenExternal:$l,handleOpenExternalPath:Po,handleOpenLocalLink:va,handleCompose:Dt,handleAskUserQuestion:gs,handleExitPlanMode:xa,handleSubagentAskUserQuestion:uu,handleSubagentExitPlanMode:ci,handleToolRequestAnswer:Ja}}const KR=qt("KannaTranscript",()=>e=>({toolGroupExpanded:{},setToolGroupExpanded:(t,n)=>e(r=>r.toolGroupExpanded[t]===n?r:{toolGroupExpanded:{...r.toolGroupExpanded,[t]:n}})})),cLe=new Set([".c",".cc",".cfg",".conf",".cpp",".cs",".css",".diff",".env",".go",".graphql",".h",".hpp",".html",".ini",".java",".js",".json",".jsonc",".jsx",".kt",".log",".lua",".md",".mjs",".patch",".php",".pl",".properties",".py",".rb",".rs",".scss",".sh",".sql",".swift",".toml",".ts",".tsx",".txt",".vue",".xml",".yaml",".yml",".zsh"]),uLe=new Set([".gitignore",".npmrc",".prettierrc",".python-version",".ruby-version",".tool-versions","Dockerfile","Gemfile","Makefile","Procfile"]);function D0(e){if(!e)return;const t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function zF(e){var r,i;const t=/^(?<path>\/.+?)#L(?<line>\d+)(?:C(?<column>\d+))?$/.exec(e);if((r=t==null?void 0:t.groups)!=null&&r.path)return{path:t.groups.path,line:D0(t.groups.line),column:D0(t.groups.column)};const n=/^(?<path>\/.+?):(?<line>\d+)(?::(?<column>\d+))?$/.exec(e);return(i=n==null?void 0:n.groups)!=null&&i.path?{path:n.groups.path,line:D0(n.groups.line),column:D0(n.groups.column)}:e.startsWith("/")?{path:e}:null}function dLe(e){if(!e)return null;const t=e.trim();if(!t||/^(mailto:|ftp:|file:)/i.test(t))return null;if(/^https?:/i.test(t)){if(typeof window>"u")return null;try{const n=new URL(t);return n.origin!==window.location.origin||!n.pathname.startsWith("/")?null:zF(`${n.pathname}${n.hash}`)}catch{return null}}return zF(t)}function fLe(e){const t=e.split(/[\\/]/);for(;t.length>0&&t[t.length-1]==="";)t.pop();const n=t.length>0?t[t.length-1]:e;if(uLe.has(n))return!0;const r=n.lastIndexOf(".");if(r<0)return!0;const i=n.slice(r).toLowerCase();return cLe.has(i)}const hLe=["/Users/","/home/","/private/","/tmp/","/var/","/opt/","/root/"];function pLe(e){return e?e.startsWith("file://")?!0:hLe.some(t=>e.startsWith(t)):!1}function xZ(e){let t=e;if(t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.slice(7)}return`/api/local-file?path=${encodeURIComponent(t)}`}function ud(e,t){if(!e)return"";if(t){const n=t.endsWith("/")?t:`${t}/`;if(e.startsWith(n))return e.slice(n.length);if(e===t)return""}return e.replace(/^\/home\/user\/workspace\//,"")}const BF=/<thinking>([\s\S]*?)<\/thinking>/gi;function mLe(e){const t=[];let n=0;BF.lastIndex=0;let r;for(;(r=BF.exec(e))!==null;){if(r.index>n){const o=e.slice(n,r.index);o.length>0&&t.push({kind:"text",content:o})}t.push({kind:"thinking",content:r[1]??""}),n=r.index+r[0].length}const i=e.slice(n),s=i.search(/<thinking>/i);if(s!==-1){const o=i.slice(0,s);o.length>0&&t.push({kind:"text",content:o});const a=i.slice(s+10);t.push({kind:"thinking",content:a})}else i.length>0&&t.push({kind:"text",content:i});return gLe(t)}function gLe(e){const t=[];for(const n of e){const r=t[t.length-1];n.kind==="text"&&r&&r.kind==="text"?r.content+=n.content:t.push(n)}return t}const vLe=/^[ \t]*(`{3,}|~{3,})/,bLe=/https?:\/\/[^\s<>)\]'"]+/g,xLe=new RegExp("(?<![a-zA-Z0-9_])((?:PR|pull\\s+request|merge\\s+request|MR|issue|fix(?:es|ed)?|close[sd]?|resolve[sd]?|bug|task|ticket|story)\\s+)?#(\\d+)","gi"),yLe=/[.,;:!?)\]]+$/;function _Le(e){if(!e.includes("#")||!e.includes("http"))return e;const t=e.split(`
|
|
2688
2688
|
`);let n=!1,r=!1;const i=[];for(const s of t){if(vLe.test(s)){n=!n,i.push(s);continue}if(n){i.push(s);continue}const o=SLe(s);o!==s&&(r=!0),i.push(o)}return r?i.join(`
|
|
2689
2689
|
`):e}function SLe(e){if(!e.includes("#")||!e.includes("http"))return e;const t=[],n=new RegExp(bLe.source,"g");let r;for(;(r=n.exec(e))!==null;){let d=r[0];const h=d.match(yLe);h&&(d=d.slice(0,-h[0].length)),t.push({start:r.index,end:r.index+d.length,url:d})}if(t.length===0)return e;const i=[],s=new RegExp(xLe.source,"gi");for(;(r=s.exec(e))!==null;){const d=e.slice(0,r.index);d.lastIndexOf("[")>d.lastIndexOf("]")||i.push({start:r.index,end:r.index+r[0].length,full:r[0],num:r[2]??""})}if(i.length===0)return e;const o=new Map;for(const d of i){const h=t.find(m=>{try{const{pathname:v,search:b}=new URL(m.url),x=v+b;return new RegExp(`(?:/|\\.|-|=)${d.num}(?:[/?&#]|$)`).test(x)}catch{return!1}});if(h){o.set(d.start,h.url);continue}const p=t.find(m=>m.start>d.end);if(p){const m=e.slice(d.end,p.start);!/[.!?]\s/.test(m)&&m.length<200&&o.set(d.start,p.url)}}if(o.size===0)return e;const a=i.filter(d=>o.has(d.start)).sort((d,h)=>h.start-d.start);let l=e;for(const d of a){const h=o.get(d.start);l=`${l.slice(0,d.start)}[${d.full}](${h})${l.slice(d.end)}`}return l}const GR=qt("ThinkingBlock",()=>e=>({expanded:!1,setExpanded:t=>e({expanded:t})}));function wLe({content:e}){const t=GR.useScopedStore(i=>i.expanded),n=GR.useScopedStore(i=>i.setExpanded),r=e.trim();return r.length===0?null:c.jsxs("div",{className:"my-3 first:mt-0 last:mb-0",children:[c.jsxs("button",{type:"button",onClick:()=>n(!t),"aria-expanded":t,className:"group/thinking flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors cursor-pointer",children:[c.jsx(J0,{className:"h-3.5 w-3.5"}),c.jsx("span",{className:"font-medium uppercase tracking-wider",children:"Thinking"}),c.jsx(aa,{className:fe("h-3.5 w-3.5 transition-transform duration-200",t&&"rotate-90")})]}),t&&c.jsx("div",{className:"mt-2 border-l-2 border-muted-foreground/20 pl-3 text-sm text-muted-foreground italic prose prose-sm dark:prose-invert max-w-[70ch]",children:Yc(r)})]})}const B1=_.memo(({content:e})=>c.jsx(GR.Provider,{init:void 0,children:c.jsx(wLe,{content:e})}));class Cx extends iu{constructor(n,r,i,s){super(s);U(this,"__mentionKind");U(this,"__value");U(this,"__label");this.__mentionKind=n,this.__value=r,this.__label=i}static getType(){return"kanna-mention"}static clone(n){return new Cx(n.__mentionKind,n.__value,n.__label,n.__key)}static importJSON(n){return qR({mentionKind:n.mentionKind,value:n.value,label:n.label})}exportJSON(){return{type:Cx.getType(),version:1,mentionKind:this.__mentionKind,value:this.__value,label:this.__label}}createDOM(n,r){const i=document.createElement("span");return i.dataset.lexicalDecorator="true",i}updateDOM(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}getTextContent(){return this.__mentionKind==="agent"?`@agent/${this.__value}`:`@${this.__value}`}decorate(n,r){const i=this.__label;return this.__mentionKind==="agent"?c.jsx("span",{className:fe("inline-flex items-center rounded px-1 text-sm","bg-primary/10 text-primary border border-primary/20"),children:i}):c.jsx("span",{className:fe("inline-flex items-center rounded px-1 text-sm","bg-muted text-muted-foreground border border-border"),children:i})}}function qR(e){return ai(new Cx(e.mentionKind,e.value,e.label))}class kx extends iu{constructor(n,r,i){super(i);U(this,"__commandName");U(this,"__hasArgument");this.__commandName=n,this.__hasArgument=r}static getType(){return"kanna-slash-command"}static clone(n){return new kx(n.__commandName,n.__hasArgument,n.__key)}static importJSON(n){return yZ({commandName:n.commandName,hasArgument:n.hasArgument})}exportJSON(){return{type:kx.getType(),version:1,commandName:this.__commandName,hasArgument:this.__hasArgument}}createDOM(n,r){const i=document.createElement("span");return i.dataset.lexicalDecorator="true",i}updateDOM(){return!1}isInline(){return!0}isKeyboardSelectable(){return!0}getTextContent(){return this.__hasArgument?`/${this.__commandName} `:`/${this.__commandName}`}decorate(n,r){return c.jsx("span",{className:fe("inline-flex items-center rounded px-1 text-sm font-mono","bg-muted text-muted-foreground border border-border"),children:`/${this.__commandName}`})}}function yZ(e){return ai(new kx(e.commandName,e.hasArgument))}class Wm extends iu{constructor(n,r){super(r);U(this,"__attachment");this.__attachment=n}static getType(){return"kanna-attachment"}static clone(n){return new Wm(n.__attachment,n.__key)}static importJSON(n){return gL(n.attachment)}getAttachment(){return this.getLatest().__attachment}isInline(){return!0}isKeyboardSelectable(){return!0}getTextContent(){return""}createDOM(n,r){return document.createElement("span")}updateDOM(){return!1}exportJSON(){return{type:Wm.getType(),version:1,attachment:this.__attachment}}decorate(n,r){const i=this.getLatest().__attachment;return i.kind==="image"&&i.contentUrl?c.jsx(l1,{attachment:i,size:"composer"}):c.jsx(No,{attachment:i})}}function gL(e){return ai(new Wm(e))}function CLe(){return BNe(Wm)}class Nd extends iu{constructor(n,r){super(r);U(this,"__source");this.__source=n}static getType(){return"kanna-mermaid"}static clone(n){return new Nd(n.__source,n.__key)}static importJSON(n){return _Z(n.source)}exportJSON(){return{type:Nd.getType(),version:1,source:this.__source}}createDOM(n,r){return document.createElement("div")}updateDOM(){return!1}isInline(){return!1}getTextContent(){return this.__source}decorate(n,r){return c.jsx(DJ,{source:this.__source})}}function _Z(e){return ai(new Nd(e))}function kLe(e){return e instanceof Nd}function ELe(e,t=28){if(e.length<=t)return e;const n="…",r=e.lastIndexOf("."),i=r>0&&e.length-r<=6,s=i?e.slice(r):"",o=i?e.slice(0,r):e,a=t-n.length-s.length;if(a<=2){const h=t-n.length,p=Math.ceil(h/2),m=Math.floor(h/2);return`${e.slice(0,p)}${n}${e.slice(e.length-m)}`}const l=Math.ceil(a/2),d=a-l;return`${o.slice(0,l)}${n}${o.slice(o.length-d)}${s}`}const Uv=qt("LocalFileLinkCard",()=>e=>({probe:{kind:"loading"},previewOpen:!1,setProbe:t=>e({probe:t}),setPreviewOpen:t=>e({previewOpen:t})}));function NLe(e){const t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function TLe({path:e,linkText:t}){const n=_.useMemo(()=>xZ(e),[e]),r=Uv.useScopedStore(T=>T.probe),i=Uv.useScopedStore(T=>T.previewOpen),s=Uv.useScopedStore(T=>T.setProbe),o=Uv.useScopedStore(T=>T.setPreviewOpen);_.useEffect(()=>{const T=new AbortController;return fetch(n,{method:"HEAD",signal:T.signal}).then(M=>{var D,L;if(T.signal.aborted)return;if(!M.ok){s({kind:M.status===404?"missing":"error"});return}const j=((L=(D=M.headers.get("Content-Type"))==null?void 0:D.split(";")[0])==null?void 0:L.trim())||"application/octet-stream",P=Number.parseInt(M.headers.get("Content-Length")??"0",10)||0;s({kind:"ready",mimeType:j,size:P})}).catch(()=>{T.signal.aborted||s({kind:"error"})}),()=>T.abort()},[n,s]);const a=NLe(e),l=t||a,d=ELe(l,28),h=r.kind==="ready"?r.mimeType:"application/octet-stream",p=r.kind==="ready"?r.size:0,m={id:`local-file-${n}`,kind:"file",displayName:d,absolutePath:e,relativePath:e,contentUrl:n,mimeType:h,size:p};if(r.kind==="missing")return c.jsx("span",{className:"inline-flex align-bottom","data-testid":"local-file-link",children:c.jsx(No,{attachment:m,disabledReason:"File no longer available"})});const v=kh(m),b=Qx(v,h),x=p>0?Eh(p):null,S=r.kind==="loading",C=r.kind==="error";let k;S?k=c.jsx("span",{className:"text-muted-foreground",children:"Fetching…"}):C?k=c.jsx("span",{className:"text-muted-foreground",children:"Unable to load"}):k=c.jsxs(c.Fragment,{children:[b,x?c.jsxs(c.Fragment,{children:[" · ",c.jsx("span",{className:"tabular-nums",children:x})]}):null]});const w=r.kind==="ready"?dg(m):null,N=w!==null&&!w.openInNewTab,A=[N?"Preview":"Download",l,b,x].filter(T=>!!T);return N?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"inline-flex align-bottom","data-testid":"local-file-link",children:c.jsx(No,{attachment:m,onClick:()=>o(!0),meta:k,ariaLabel:A.join(", ")})}),c.jsx(jh,{source:i?xg(m,"local_file_link"):null,open:i,onOpenChange:o})]}):c.jsx("span",{className:"inline-flex align-bottom","data-testid":"local-file-link",children:c.jsx(No,{attachment:m,href:n,download:a,meta:k,ariaLabel:A.join(", ")})})}function ALe({path:e,linkText:t}){return c.jsx(Uv.Provider,{init:void 0,children:c.jsx(TLe,{path:e,linkText:t})})}class Td extends iu{constructor(n,r,i,s){super(s);U(this,"__path");U(this,"__line");U(this,"__column");this.__path=n,this.__line=r,this.__column=i}static getType(){return"kanna-local-file-link"}static clone(n){return new Td(n.__path,n.__line,n.__column,n.__key)}static importJSON(n){return SZ({path:n.path,line:n.line,column:n.column})}exportJSON(){const n={type:Td.getType(),version:1,path:this.__path};return this.__line!==void 0&&(n.line=this.__line),this.__column!==void 0&&(n.column=this.__column),n}createDOM(n,r){return document.createElement("span")}updateDOM(){return!1}isInline(){return!0}getTextContent(){return this.__path}decorate(n,r){const i=this.__line!==void 0?`${this.__path}:${this.__line}${this.__column!==void 0?`:${this.__column}`:""}`:void 0;return c.jsx(ALe,{path:this.__path,linkText:i})}}function SZ(e){return ai(new Td(e.path,e.line,e.column))}function RLe(e){return e instanceof Td}class Ex extends iu{constructor(n,r){super(r);U(this,"__content");this.__content=n}static getType(){return"kanna-thinking"}static clone(n){return new Ex(n.__content,n.__key)}static importJSON(n){return MLe(n.content)}exportJSON(){return{type:Ex.getType(),version:1,content:this.__content}}createDOM(n,r){return document.createElement("div")}updateDOM(){return!1}isInline(){return!1}getTextContent(){return this.__content}decorate(n,r){return c.jsx(B1,{content:this.__content})}}function MLe(e){return ai(new Ex(e))}const jLe=[Cx,kx,Wm],ILe=[Nd,Td,Ex],PLe=/^[ \t]*(`{3,})[ \t]*mermaid[ \t]*$/i,FF=/^[ \t]*`{3,}[ \t]*$/,LLe={type:"multiline-element",dependencies:[Nd],regExpStart:PLe,regExpEnd:{optional:!0,regExp:FF},handleImportAfterStartMatch({lines:e,rootNode:t,startLineIndex:n,startMatch:r}){const s=(r[1]??"```").length,o=new RegExp(`^[ \\t]\`{${s},}[ \\t]*$`),a=[];let l=n;for(let p=n+1;p<e.length;p++){const m=e[p];if(m===void 0)break;if(FF.test(m)||o.test(m)){l=p;break}a.push(m),l=p}const d=a.join(`
|
|
2690
2690
|
`),h=_Z(d);return t.append(h),[!0,l]},replace(e,t,n,r,i,s){return!1},export(e){return e instanceof Nd?`\`\`\`mermaid
|
|
@@ -2766,7 +2766,7 @@ ${Q.detail}`:""}`,closeLabel:"OK"})}catch(Q){await r.alert({title:"Checkout fail
|
|
|
2766
2766
|
|
|
2767
2767
|
${ie.detail}`:""}`,closeLabel:"OK"}),ie}catch(ie){return await r.alert({title:"Merge failed",description:ie instanceof Error?ie.message:String(ie),closeLabel:"OK"}),null}},[r,C,e.socket]),te=_.useCallback(async()=>{const ee=p.current;if(!ee)return;const ne=await r.prompt({title:"New Branch",description:"Enter a branch name.",placeholder:"feature/my-branch",confirmLabel:"Create"});if(!ne)return;const ie=await W(),ae=ie.currentBranchName,Q=ie.defaultBranchName;let ke=Q;Q&&ae&&Q!==ae&&(ke=await r.confirm({title:"Branch Base",description:`Create "${ne}" from ${ae} instead of ${Q}?`,confirmLabel:`From ${ae}`,cancelLabel:`From ${Q}`})?ae:Q);try{const we=await e.socket.command({type:"chat.createBranch",chatId:ee,name:ne,baseBranchName:ke});we.snapshotChanged&&C(),we.ok||await r.alert({title:we.title,description:`${we.message}${we.detail?`
|
|
2768
2768
|
|
|
2769
|
-
${we.detail}`:""}`,closeLabel:"OK"})}catch(we){await r.alert({title:"Create branch failed",description:we instanceof Error?we.message:String(we),closeLabel:"OK"})}},[r,W,C,e.socket]);return _.useEffect(()=>{if(!t||!n)return;const ee=window.setInterval(()=>{C()},V3e);return()=>window.clearInterval(ee)},[t,C,n]),_.useEffect(()=>{!t||!n||C()},[t,C,n]),_.useEffect(()=>{!t||!e.activeChatId||h.current!==t&&(h.current=t,S())},[t,S,e.activeChatId]),_.useEffect(()=>{if(!t||!n)return;function ee(){document.visibilityState==="visible"&&C()}return window.addEventListener("focus",ee),document.addEventListener("visibilitychange",ee),()=>{window.removeEventListener("focus",ee),document.removeEventListener("visibilitychange",ee)}},[t,C,n]),_.useEffect(()=>{n&&d.current&&!e.isProcessing&&C(),d.current=e.isProcessing},[C,n,e.isProcessing]),_.useEffect(()=>()=>{l.current!==null&&window.clearTimeout(l.current)},[]),_.useEffect(()=>{n||l.current!==null&&(window.clearTimeout(l.current),l.current=null)},[t,n]),{diffRenderMode:i,wrapDiffLines:s,setDiffRenderMode:o,setWrapDiffLines:a,scheduleTerminalDiffRefresh:k,handleOpenDiffFile:w,handleCopyDiffFilePath:N,handleCopyDiffRelativePath:A,handleLoadDiffPatch:T,handleDiscardDiffFile:M,handleIgnoreDiffFile:j,handleIgnoreDiffFolder:P,handleOpenDiffInFinder:D,handleCommitDiffs:L,handleSyncBranch:I,handleGenerateCommitMessage:$,handleInitializeGit:H,handleGetGitHubPublishInfo:z,handleCheckGitHubRepoAvailability:F,handleSetupGitHub:K,handleListBranches:W,handleCheckoutBranch:V,handlePreviewMergeBranch:X,handleMergeBranch:G,handleCreateBranch:te}}const u6e="flex-1 flex flex-col min-h-0 min-w-0 relative",pee={"--terminal-toggle-duration":`${D1}ms`};function d6e(e,t){const n=Wn(a=>a.typedEmptyStateText),r=Wn(a=>a.isEmptyStateTypingComplete),i=Wn(a=>a.setTypedEmptyStateText),s=Wn(a=>a.setIsEmptyStateTypingComplete),o=Wn(a=>a.resetEmptyStateTyping);return _.useEffect(()=>{if(!e)return;o();let a=0;const l=window.setInterval(()=>{a+=1,i(tC.slice(0,a)),a>=tC.length&&(window.clearInterval(l),s(!0))},H3e);return()=>window.clearInterval(l)},[e,t,o,i,s]),{typedEmptyStateText:n,isEmptyStateTypingComplete:r}}function f6e(e){const t=Wn(d=>d.isPageFileDragActive),n=Wn(d=>d.setIsPageFileDragActive),r=_.useRef(0),i=_.useCallback(d=>{var h;return G3e(((h=d.dataTransfer)==null?void 0:h.types)??[])},[]),s=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current+=1,n(!0))},[e.hasSelectedProject,i,n]),o=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),d.dataTransfer.dropEffect="copy",t||n(!0))},[e.hasSelectedProject,i,t,n]),a=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current=Math.max(0,r.current-1),r.current===0&&n(!1))},[e.hasSelectedProject,i,n]),l=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current=0,n(!1),e.onFilesDropped([...d.dataTransfer.files]))},[e,i,n]);return{isPageFileDragActive:t,handleTranscriptDragEnter:s,handleTranscriptDragOver:o,handleTranscriptDragLeave:a,handleTranscriptDrop:l}}function h6e(e){const t=Wn(r=>r.layoutWidth),n=Wn(r=>r.setLayoutWidth);return _.useLayoutEffect(()=>{const r=e.current;if(!r)return;const i=()=>{const o=r.clientWidth,a=Wn.getState().layoutWidth;Math.abs(a-o)>=1&&n(o)},s=new ResizeObserver(i);return s.observe(r),i(),()=>s.disconnect()},[e,n]),t}function p6e(){const e=_.useRef(null),t=Wn(i=>i.inputHeight),n=Wn(i=>i.setInputHeight),r=_.useCallback(()=>{const i=e.current;if(!i)return;const s=i.getBoundingClientRect().height,o=Wn.getState().inputHeight,a=ZPe(o,s);a!==o&&n(a)},[n]);return _.useLayoutEffect(()=>{const i=e.current;if(!i)return;const s=new ResizeObserver(()=>{r()});return s.observe(i),r(),()=>s.disconnect()},[r]),{inputRef:e,syncInputHeight:r,transcriptPaddingBottom:JPe(t)}}const m6e=768;function g6e(e){return e>0&&e<m6e}function v6e(){const e=Wn(n=>n.viewportWidth),t=Wn(n=>n.setViewportWidth);return _.useEffect(()=>{if(typeof window>"u")return;const n=()=>t(window.innerWidth);return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[t]),g6e(e)}function b6e(e){const t=Wn(r=>r.fixedTerminalHeight),n=Wn(r=>r.setFixedTerminalHeight);return _.useEffect(()=>{const r=e.layoutRootRef.current;if(!r)return;const i=()=>{const o=r.getBoundingClientRect().height;if(!e.shouldRenderTerminalLayout||o<=0)return;const a=o*(e.terminalMainSizes[1]/100);if(a<=0)return;const l=Wn.getState().fixedTerminalHeight;Math.abs(l-a)>=1&&n(a)},s=new ResizeObserver(i);return s.observe(r),i(),()=>s.disconnect()},[e.layoutRootRef,e.shouldRenderTerminalLayout,e.terminalMainSizes,n]),t}const pU=_.memo(e=>c.jsx(bje,{...e,diffs:e.diffs??cQ})),x6e=_.memo(({showRightSidebar:e,sizePercent:t,sidebarPanelRef:n,sidebarVisualRef:r,content:i})=>c.jsx(wx,{id:"rightSidebar",defaultSize:`${t}%`,className:"min-h-0 min-w-0",elementRef:n,children:c.jsx("div",{ref:r,className:"h-full min-h-0 overflow-hidden","data-right-sidebar-open":e?"true":"false","data-right-sidebar-animated":"false","data-right-sidebar-visual":!0,style:pee,children:i})})),y6e=_.memo(({projectId:e,showRightSidebar:t,sidebarVisualRef:n,onClose:r,content:i})=>e?c.jsxs("div",{className:fe("absolute inset-0 z-40 transition-opacity duration-300 ease-out",t?"pointer-events-auto opacity-100":"pointer-events-none opacity-0"),"aria-hidden":t?void 0:!0,"data-mobile-right-sidebar-overlay":!0,children:[c.jsx("button",{type:"button",className:"absolute inset-0 bg-black/45 backdrop-blur-[1px]","aria-label":"Close changes sidebar",onClick:r}),c.jsx("div",{ref:n,className:fe("absolute inset-y-0 right-0 flex w-[min(92vw,30rem)] max-w-full min-h-0 flex-col overflow-hidden border-l border-border bg-background shadow-2xl transition-transform duration-300 ease-out","pt-[max(env(safe-area-inset-top),0px)] pb-[max(env(safe-area-inset-bottom),0px)]",t?"translate-x-0":"translate-x-full"),"data-right-sidebar-open":t?"true":"false","data-right-sidebar-animated":"false","data-right-sidebar-visual":!0,children:i})]}):null);function _6e({chatCard:e,projectId:t,shouldRenderTerminalLayout:n,showTerminalPane:r,terminalLayout:i,mainPanelGroupRef:s,terminalPanelRef:o,terminalVisualRef:a,fixedTerminalHeight:l,terminalFocusRequestVersion:d,addTerminal:h,socket:p,connectionStatus:m,scrollback:v,minColumnWidth:b,splitTerminalShortcut:x,onTerminalCommandSent:S,onRemoveTerminal:C,onTerminalLayout:k,onLayoutChanged:w}){return n?c.jsxs(aL,{groupRef:s,orientation:"vertical",className:"flex-1 min-h-0",onLayoutChanged:w,children:[c.jsx(wx,{id:"chat",defaultSize:`${i.mainSizes[0]}%`,minSize:"25%",className:"min-h-0",children:e}),c.jsx(lL,{withHandle:!0,orientation:"vertical",disabled:!r,className:fe(!r&&"pointer-events-none opacity-0")}),c.jsx(wx,{id:"terminal",defaultSize:`${i.mainSizes[1]}%`,minSize:"0%",className:"min-h-0",elementRef:o,children:c.jsx("div",{ref:a,className:"h-full min-h-0 overflow-hidden relative","data-terminal-open":r?"true":"false","data-terminal-animated":"false","data-terminal-visual":!0,style:pee,children:c.jsx(l6e,{projectId:t,fixedTerminalHeight:l,terminalLayout:i,addTerminal:h,socket:p,connectionStatus:m,scrollback:v,minColumnWidth:b,splitTerminalShortcut:x,focusRequestVersion:d,onTerminalCommandSent:S,onRemoveTerminal:C,onTerminalLayout:k})})})]},t):c.jsx(c.Fragment,{children:e})}function S6e(){var ba,zl,Xa,gs,xa,uu,ci,Ja,Za,co,$s,ya,q,J,be,Ze,hn,Ir,ki,qi;const e=dC(),{handleCancel:t,handleOpenExternal:n}=e,r=zx(),i=_.useRef(null),s=_.useRef(null),o=_.useRef(!0),a=_.useRef(null),l=_.useRef(null),d=_.useRef(null),h=_.useRef(null),{inputRef:p,syncInputHeight:m,transcriptPaddingBottom:v}=p6e(),b=Wn(Ee=>Ee.showScrollToBottom),x=Wn(Ee=>Ee.setShowScrollToBottom),S=Ad(),C=_.useCallback(Ee=>{S(`/chat/${Ee}`)},[S]),k=e.messages.length===0&&((ba=e.runtime)==null?void 0:ba.title)==="New Chat",w=e.activeProjectId,A=Gu(Ee=>w?Ee.projects[w]:void 0)??aIe,M=Ks(Ee=>w?Ee.projects[w]:void 0)??iEe,j=Ks(Ee=>Ee.size),P=Gu(Ee=>Ee.addTerminal),D=Gu(Ee=>Ee.removeTerminal),L=Gu(Ee=>Ee.toggleVisibility),I=Gu(Ee=>Ee.resetMainSizes),$=Gu(Ee=>Ee.setMainSizes),H=Gu(Ee=>Ee.setTerminalSizes),z=Ks(Ee=>Ee.toggleVisibility),F=Ks(Ee=>Ee.setSize),K=Ss(Ee=>Ee.scrollbackLines),W=Ss(Ee=>Ee.minColumnWidth),V=Ss(Ee=>Ee.editorPreset),X=Ss(Ee=>Ee.editorCommandTemplate),G=_.useMemo(()=>oI(e.keybindings),[e.keybindings]),te=_.useMemo(()=>{var Ee;return Zje(((Ee=e.chatSnapshot)==null?void 0:Ee.messages)??[])},[(zl=e.chatSnapshot)==null?void 0:zl.messages]),oe=_.useMemo(()=>{var Ee,Fe;return eIe(((Ee=e.chatSnapshot)==null?void 0:Ee.messages)??[],Object.values(((Fe=e.chatSnapshot)==null?void 0:Fe.subagentRuns)??{}))},[(Xa=e.chatSnapshot)==null?void 0:Xa.messages,(gs=e.chatSnapshot)==null?void 0:gs.subagentRuns]),ce=A.terminals.length>0,de=!!(w&&A.isVisible&&ce),ee=!!(w&&ce),ne=!!(w&&M.isVisible),ie=!!w,ae=v6e(),Q=ie&&!ae,ke=h6e(i),we=_.useCallback((Ee,Fe)=>{if(!Number.isFinite(Ee))return j;const B=Fe??ke,ze=B>0?tEe/B*100:EA;return Math.max(EA,ze,Ee)},[j,ke]),Ae=we(j??om),Xe=b6e({layoutRootRef:i,shouldRenderTerminalLayout:ee,terminalMainSizes:A.mainSizes}),{isAnimating:ft,mainPanelGroupRef:Ct,terminalFocusRequestVersion:ln,terminalPanelRef:en,terminalVisualRef:bt}=kIe({showTerminalPane:de,shouldRenderTerminalLayout:ee,projectId:w,terminalLayout:A,chatInputRef:d}),{isAnimating:fn,panelGroupRef:qe,sidebarPanelRef:Ht,sidebarVisualRef:cn}=bIe({projectId:w,shouldRenderRightSidebarLayout:Q,showRightSidebar:ne,rightSidebarSize:Ae}),{diffRenderMode:wt,wrapDiffLines:zt,setDiffRenderMode:tn,setWrapDiffLines:Yt,scheduleTerminalDiffRefresh:Kt,handleOpenDiffFile:sn,handleCopyDiffFilePath:Nn,handleCopyDiffRelativePath:Ue,handleLoadDiffPatch:un,handleDiscardDiffFile:wn,handleIgnoreDiffFile:kt,handleIgnoreDiffFolder:Xt,handleOpenDiffInFinder:Ce,handleCommitDiffs:rt,handleSyncBranch:gt,handleGenerateCommitMessage:it,handleInitializeGit:jt,handleGetGitHubPublishInfo:Bt,handleCheckGitHubRepoAvailability:Et,handleSetupGitHub:Lt,handleListBranches:nn,handleCheckoutBranch:$t,handlePreviewMergeBranch:re,handleMergeBranch:je,handleCreateBranch:ht}=c6e({state:e,projectId:w,showRightSidebar:ne}),{typedEmptyStateText:Ne,isEmptyStateTypingComplete:We}=d6e(k,e.activeChatId);SIe({rootRef:l,fallbackRef:d,enabled:e.hasSelectedProject,canCancel:e.canCancel}),_Ie({socket:e.socket,activeChatId:e.activeChatId});const Ke=_.useCallback(Ee=>{var Fe;!e.hasSelectedProject||Ee.length===0||(Fe=h.current)==null||Fe.enqueueFiles(Ee)},[e.hasSelectedProject]),{isPageFileDragActive:Je,handleTranscriptDragEnter:pt,handleTranscriptDragOver:Ot,handleTranscriptDragLeave:xt,handleTranscriptDrop:Be}=f6e({hasSelectedProject:e.hasSelectedProject,onFilesDropped:Ke}),Ft=_.useCallback(()=>{if(w){if(ce){L(w);return}P(w)}},[P,ce,w,L]),Ln=_.useCallback(Ee=>{var yt;if(!w||!de||ft.current)return;const Fe=Ee.chat,B=Ee.terminal;if(!Number.isFinite(Fe)||!Number.isFinite(B))return;const ze=((yt=i.current)==null?void 0:yt.getBoundingClientRect().height)??0;if(uIe(ze,B)){I(w),L(w);return}$(w,[Fe,B])},[ft,w,I,$,de,L]),Gt=_.useCallback(()=>{w&&z(w)},[w,z]),Jt=_.useCallback(()=>{var Ee;if(w){if(ne){z(w);return}if(((Ee=e.chatDiffSnapshot)==null?void 0:Ee.status)==="no_repo"){(async()=>{if(!await r.confirm({title:"Initialize Git?",description:"Initialize a local git repository in this project?",confirmLabel:"Init Git",cancelLabel:"Cancel"}))return;const B=await jt();B!=null&&B.ok&&!ne&&z(w)})();return}z(w)}},[r,jt,w,ne,(xa=e.chatDiffSnapshot)==null?void 0:xa.status,z]),xr=_.useCallback((Ee,Fe)=>{e.socket.command({type:"terminal.close",terminalId:Fe}).catch(()=>{}),D(Ee,Fe)},[D,e.socket]),In=_.useCallback(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null)},[]),Gn=_.useCallback(Ee=>{if(o.current!==Ee){if(o.current=Ee,Ee){In(),x(!1);return}In(),a.current=window.setTimeout(()=>{x(!0),a.current=null},150)}},[In,x]),qn=_.useCallback(()=>{var Fe,B;const Ee=(B=(Fe=s.current)==null?void 0:Fe.getState)==null?void 0:B.call(Fe);Ee&&Gn(Ee.isAtEnd)},[Gn]),ye=_.useCallback(async(Ee=!0)=>{var Fe,B;o.current=!0,In(),x(!1),await((B=(Fe=s.current)==null?void 0:Fe.scrollToEnd)==null?void 0:B.call(Fe,{animated:Ee}))},[In,x]),Qe=_.useCallback(async(Ee,Fe)=>{await ye(!1),await e.handleSend(Ee,Fe)},[ye,e]),zn=_.useCallback((Ee,Fe)=>{const B=e.activeChatId;B&&e.socket.command({type:"autoContinue.accept",chatId:B,scheduleId:Ee,scheduledAt:Fe}).catch(()=>{})},[e.activeChatId,e.socket]),Ur=_.useCallback((Ee,Fe)=>{const B=e.activeChatId;B&&e.socket.command({type:"autoContinue.reschedule",chatId:B,scheduleId:Ee,scheduledAt:Fe}).catch(()=>{})},[e.activeChatId,e.socket]),ue=_.useCallback(Ee=>{const Fe=e.activeChatId;Fe&&e.socket.command({type:"autoContinue.cancel",chatId:Fe,scheduleId:Ee}).catch(()=>{})},[e.activeChatId,e.socket]),Ye=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.accept",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),ct=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.stop",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),at=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.retry",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),Mn=_.useCallback((Ee,Fe)=>{e.socket.command({type:"chat.cancelSubagentRun",chatId:Ee,runId:Fe}).catch(()=>{})},[e.socket]),It=z1(vm(hL(e.activeChatId??""))),Hr=_.useCallback(async Ee=>{const Fe=e.activeChatId;return Fe?e.socket.command({type:"workflows.getRun",chatId:Fe,runId:Ee}):null},[e.activeChatId,e.socket]),li=_.useCallback(async Ee=>{const Fe=e.activeChatId;return Fe?e.socket.command({type:"subagents.getRun",chatId:Fe,agentId:Ee}):[]},[e.activeChatId,e.socket]),$l=DT(Ee=>Ee.listForChat(e.activeChatId??"")),Ds=DT(Ee=>Ee.addShare),va=DT(Ee=>Ee.removeShare),Po=_.useCallback(async Ee=>{const Fe=await e.socket.command({type:"share.mint",payload:{chatId:Ee}});Fe.ok&&Fe.kind==="mint"&&Ds(Ee,Fe.data.summary)},[Ds,e.socket]),Dt=_.useCallback(async Ee=>{const Fe=e.activeChatId;if(!Fe)return;(await e.socket.command({type:"share.revoke",payload:{tokenId:Ee}})).ok&&va(Fe,Ee)},[va,e.activeChatId,e.socket]);_.useEffect(()=>()=>In(),[In]),_.useEffect(()=>{o.current=!0,In(),x(!1)},[In,x,e.activeChatId]),_.useEffect(()=>{function Ee(Fe){if(w){if(hv(G,"toggleEmbeddedTerminal",Fe)){Fe.preventDefault(),Ft();return}if(hv(G,"toggleRightSidebar",Fe)){Fe.preventDefault(),Jt();return}if(hv(G,"openInFinder",Fe)){Fe.preventDefault(),n("open_finder");return}if(hv(G,"openInEditor",Fe)){Fe.preventDefault(),n("open_editor");return}hv(G,"addSplitTerminal",Fe)&&(Fe.preventDefault(),P(w))}}return window.addEventListener("keydown",Ee),()=>window.removeEventListener("keydown",Ee)},[P,n,Ft,Jt,w,G]),_.useEffect(()=>{const Ee=window.requestAnimationFrame(()=>{qn()}),Fe=window.setTimeout(()=>{qn()},D1);return()=>{window.cancelAnimationFrame(Ee),window.clearTimeout(Fe)}},[ee,de,qn]),_.useEffect(()=>{function Ee(){qn()}return window.addEventListener("resize",Ee),()=>window.removeEventListener("resize",Ee)},[qn]),_.useEffect(()=>{if(!ne||!ae)return;const Ee=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=Ee}},[ae,ne]),_.useEffect(()=>{if(!ne||!ae)return;function Ee(Fe){Fe.key==="Escape"&&(Fe.preventDefault(),Gt())}return window.addEventListener("keydown",Ee),()=>window.removeEventListener("keydown",Ee)},[Gt,ae,ne]),_.useEffect(()=>{if(!o.current)return;let Ee=null;const Fe=window.requestAnimationFrame(()=>{var B,ze;(ze=(B=s.current)==null?void 0:B.scrollToEnd)==null||ze.call(B,{animated:!1}),Ee=window.requestAnimationFrame(()=>{var yt,yr;(yr=(yt=s.current)==null?void 0:yt.scrollToEnd)==null||yr.call(yt,{animated:!1})})});return()=>{window.cancelAnimationFrame(Fe),Ee!==null&&window.cancelAnimationFrame(Ee)}},[e.commandError,e.isDraining,e.isProcessing,e.messages.length,e.queuedMessages.length,e.runtimeStatus]),_.useLayoutEffect(()=>{var B,ze;if(!ne||ae||ke<=0||fn.current)return;const Ee=we(j,ke),Fe=(B=qe.current)==null?void 0:B.getLayout();Fe&&(Math.abs((Fe.rightSidebar??0)-Ee)<.1||(ze=qe.current)==null||ze.setLayout({workspace:100-Ee,rightSidebar:Ee}))},[we,j,fn,ke,qe,ne,ae]);const Tn=c.jsxs(Mj,{ref:l,className:"bg-background h-full flex flex-col overflow-hidden border-0 rounded-none relative",onDragEnter:pt,onDragOver:Ot,onDragLeave:xt,onDrop:Be,children:[c.jsxs(Ij,{className:"flex flex-1 min-h-0 flex-col overflow-hidden p-0 relative",children:[c.jsx(Mbe,{sidebarCollapsed:e.sidebarCollapsed,onOpenSidebar:e.openSidebar,onExpandSidebar:e.expandSidebar,onNewChat:e.handleCompose,localPath:e.navbarLocalPath,embeddedTerminalVisible:de,onToggleEmbeddedTerminal:w?Ft:void 0,rightSidebarVisible:ne,onToggleRightSidebar:w?Jt:void 0,onOpenExternal:n,editorPreset:V,editorCommandTemplate:X,platform:(uu=e.localProjects)==null?void 0:uu.machine.platform,finderShortcut:G.bindings.openInFinder,editorShortcut:G.bindings.openInEditor,terminalShortcut:G.bindings.toggleEmbeddedTerminal,rightSidebarShortcut:G.bindings.toggleRightSidebar,branchName:(ci=e.chatDiffSnapshot)==null?void 0:ci.branchName,homeDir:(Ja=e.localProjects)==null?void 0:Ja.machine.homeDir,hasGitRepo:((Za=e.chatDiffSnapshot)==null?void 0:Za.status)!=="no_repo",gitStatus:(co=e.chatDiffSnapshot)==null?void 0:co.status,timings:($s=e.runtime)==null?void 0:$s.timings,status:(ya=e.runtime)==null?void 0:ya.status,socket:e.socket,onOpenPtyChat:C,currentChatId:e.activeChatId??void 0,shareShares:$l,onShareMint:Po,onShareRevoke:Dt}),c.jsx(c$e,{activeChatId:e.activeChatId,listRef:s,messages:e.messages,queuedMessages:e.queuedMessages,transcriptPaddingBottom:v,localPath:(q=e.runtime)==null?void 0:q.localPath,latestToolIds:e.latestToolIds,isHistoryLoading:e.isHistoryLoading,hasOlderHistory:e.hasOlderHistory,isProcessing:e.isProcessing,runtimeStatus:e.runtimeStatus,isDraining:e.isDraining,commandError:e.commandError,loadOlderHistory:e.loadOlderHistory,onStopDraining:e.handleStopDraining,onSteerQueuedMessage:e.handleSteerQueuedMessage,onRemoveQueuedMessage:e.handleRemoveQueuedMessage,onOpenLocalLink:e.handleOpenLocalLink,editorPreset:V,editorCommandTemplate:X,platform:(J=e.localProjects)==null?void 0:J.machine.platform,onAskUserQuestionSubmit:e.handleAskUserQuestion,onExitPlanModeConfirm:e.handleExitPlanMode,onToolRequestAnswer:e.handleToolRequestAnswer,onSubagentAskUserQuestionSubmit:e.handleSubagentAskUserQuestion,onSubagentExitPlanModeSubmit:e.handleSubagentExitPlanMode,schedules:((be=e.chatSnapshot)==null?void 0:be.schedules)??qZ,onAutoContinueAccept:zn,onAutoContinueReschedule:Ur,onAutoContinueCancel:ue,tunnels:(Ze=e.chatSnapshot)==null?void 0:Ze.tunnels,liveTunnelId:(hn=e.chatSnapshot)==null?void 0:hn.liveTunnelId,onTunnelAccept:Ye,onTunnelStop:ct,onTunnelRetry:at,subagentRuns:(Ir=e.chatSnapshot)==null?void 0:Ir.subagentRuns,onCancelSubagentRun:Mn,loopProgress:(ki=e.chatSnapshot)==null?void 0:ki.loopProgress,workflowRuns:It.length>0?It:void 0,getWorkflowRunDetail:Hr,orchestrationPanel:c.jsx(E$e,{socket:e.socket,chatId:e.activeChatId}),getSubagentTranscript:li,showScrollButton:b&&e.messages.length>0,onIsAtEndChange:Gn,scrollToBottom:()=>ye(!0),typedEmptyStateText:Ne,isEmptyStateTypingComplete:We,isPageFileDragActive:Je,showEmptyState:k})]}),c.jsx(O3e,{inputRef:p,onLayoutChange:m,chatInputRef:h,chatInputElementRef:d,activeChatId:e.activeChatId,previousPrompt:e.previousPrompt,hasSelectedProject:e.hasSelectedProject,canCancel:e.canCancel,projectId:w,activeProvider:((qi=e.runtime)==null?void 0:qi.provider)??null,availableProviders:e.availableProviders,contextWindowSnapshot:te,sessionTotals:oe,onSubmit:Qe,onCancel:t})]}),Yn=w?c.jsx(_6e,{chatCard:Tn,projectId:w,shouldRenderTerminalLayout:ee,showTerminalPane:de,terminalLayout:A,mainPanelGroupRef:Ct,terminalPanelRef:en,terminalVisualRef:bt,fixedTerminalHeight:Xe,terminalFocusRequestVersion:ln,addTerminal:P,socket:e.socket,connectionStatus:e.connectionStatus,scrollback:K,minColumnWidth:W,splitTerminalShortcut:G.bindings.addSplitTerminal,onTerminalCommandSent:Kt,onRemoveTerminal:xr,onTerminalLayout:H,onLayoutChanged:Ln}):Tn,Cn=_.useMemo(()=>w?{projectId:w,diffs:e.chatDiffSnapshot??cQ,editorLabel:e.editorLabel,diffRenderMode:wt,wrapLines:zt,onOpenFile:sn,onOpenInFinder:Ce,onDiscardFile:wn,onIgnoreFile:kt,onIgnoreFolder:Xt,onCopyFilePath:Nn,onCopyRelativePath:Ue,onLoadPatch:un,onListBranches:nn,onPreviewMergeBranch:re,onMergeBranch:je,onCheckoutBranch:$t,onCreateBranch:ht,onGenerateCommitMessage:it,onInitializeGit:jt,onGetGitHubPublishInfo:Bt,onCheckGitHubRepoAvailability:Et,onSetupGitHub:Lt,onCommit:rt,onSyncWithRemote:gt,onDiffRenderModeChange:tn,onWrapLinesChange:Yt,onClose:Gt}:null,[wt,Et,$t,Gt,rt,Nn,Ue,ht,wn,it,Bt,kt,Xt,jt,nn,un,je,sn,Ce,re,Lt,gt,w,tn,Yt,e.chatDiffSnapshot,e.editorLabel,zt]);return c.jsxs("div",{ref:i,className:u6e,children:[Q&&w?c.jsxs(aL,{groupRef:qe,orientation:"horizontal",className:"flex-1 min-h-0",onLayoutChange:Ee=>{var B;if(!ne||fn.current)return;const Fe=we(Ee.rightSidebar);Math.abs(Fe-Ee.rightSidebar)<.1||(B=qe.current)==null||B.setLayout({workspace:100-Fe,rightSidebar:Fe})},onLayoutChanged:Ee=>{!ne||fn.current||F(we(Ee.rightSidebar))},children:[c.jsx(wx,{id:"workspace",defaultSize:`${100-Ae}%`,minSize:"20%",className:"min-h-0 min-w-0",children:Yn}),c.jsx(lL,{withHandle:!1,orientation:"horizontal",disabled:!ne,className:fe(!ne&&"pointer-events-none opacity-0")}),c.jsx(x6e,{showRightSidebar:ne,sizePercent:Ae,sidebarPanelRef:Ht,sidebarVisualRef:cn,content:Cn?c.jsx(pU,{...Cn}):null})]},`${w}-right-sidebar`):Yn,ae?c.jsx(y6e,{projectId:w,showRightSidebar:ne,sidebarVisualRef:cn,onClose:Gt,content:Cn?c.jsx(pU,{...Cn}):null}):null]})}const HM=qt("CopyButton",()=>e=>({copied:!1,setCopied:t=>e({copied:t})}));function mU({narrow:e=!1,title:t,subtitle:n,icon:r=ij}){return c.jsxs("div",{className:fe("w-full",e?"max-w-2xl px-6 pt-16 mx-auto":"px-6 pt-16 mb-10"),children:[c.jsxs("div",{className:fe("flex items-center gap-1 mb-2",e&&"justify-center"),children:[c.jsx("div",{className:"p-2 pl-0 rounded-lg",children:c.jsx(r,{className:"h-6 w-6 text-muted-foreground"})}),c.jsx("h1",{className:"text-2xl font-semibold text-foreground",children:t})]}),n&&c.jsx("p",{className:fe("text-muted-foreground",e&&"mb-10 text-center"),children:n})]})}const zf=tr()(e=>({tab:"new",name:"",existingPath:"",setTab:t=>e({tab:t}),setName:t=>e({name:t}),setExistingPath:t=>e({existingPath:t}),resetForOpen:()=>e({tab:"new",name:"",existingPath:""})})),w6e=()=>zf(e=>e.tab),C6e=()=>zf(e=>e.name),k6e=()=>zf(e=>e.existingPath);function E6e(e){return e.toLowerCase().replace(/[\s_]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-+/g,"-").replace(/^-|-$/g,"")}function N6e({open:e,onOpenChange:t,onConfirm:n}){const r=w6e(),i=C6e(),s=k6e(),o=zf(C=>C.setTab),a=zf(C=>C.setName),l=zf(C=>C.setExistingPath),d=zf(C=>C.resetForOpen),h=_.useRef(null),p=_.useRef(null);_.useEffect(()=>{e&&(d(),setTimeout(()=>{var C;return(C=h.current)==null?void 0:C.focus()},0))},[e,d]),_.useEffect(()=>{e&&setTimeout(()=>{var C,k;r==="new"?(C=h.current)==null||C.focus():(k=p.current)==null||k.focus()},0)},[r,e]);const m=E6e(i),v=m?`${Sfe}/${m}`:"",b=s.trim(),x=r==="new"?!!m:!!b,S=()=>{if(x){if(r==="new")n({mode:"new",localPath:v,title:i.trim()});else{const C=b.split("/").pop()||b;n({mode:"existing",localPath:b,title:C})}t(!1)}};return c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Add Project"}),c.jsx(Es,{value:r,onValueChange:o,options:[{value:"new",label:"New Folder"},{value:"existing",label:"Existing Path"}],className:"w-full mb-2",optionClassName:"flex-1 justify-center"}),r==="new"?c.jsxs("div",{className:"space-y-2",children:[c.jsx(dn,{ref:h,type:"text",value:i,onChange:C=>a(C.target.value),onKeyDown:C=>{C.key==="Enter"&&S(),C.key==="Escape"&&t(!1)},placeholder:"Project name"}),v&&c.jsx("p",{className:"text-xs text-muted-foreground font-mono",children:v})]}):c.jsxs("div",{className:"space-y-2",children:[c.jsx(dn,{ref:p,type:"text",value:s,onChange:C=>l(C.target.value),onKeyDown:C=>{C.key==="Enter"&&S(),C.key==="Escape"&&t(!1)},placeholder:"~/Projects/my-app"}),c.jsx("p",{className:"text-xs text-muted-foreground",children:"The folder will be created if it doesn't exist."})]})]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{variant:"secondary",size:"sm",onClick:S,disabled:!x,children:"Create"})]})]})})}function T6e({text:e}){const t=HM.useScopedStore(i=>i.copied),n=HM.useScopedStore(i=>i.setCopied);async function r(){await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),2e3)}return c.jsx(Me,{variant:"ghost",size:"icon-mobile","aria-label":t?"Copied":"Copy to clipboard",className:"text-muted-foreground hover:text-foreground",onClick:()=>void r(),children:t?c.jsx(js,{className:"h-4 w-4 text-success"}):c.jsx(Ba,{className:"h-4 w-4"})})}function A6e({text:e}){return c.jsx(HM.Provider,{init:{},children:c.jsx(T6e,{text:e})})}function gU({children:e}){return c.jsxs("div",{className:"grid grid-cols-[1fr_auto] items-center group bg-background border border-border text-foreground rounded-xl p-1.5 pl-3 font-mono text-sm",children:[c.jsxs("pre",{className:"inline-flex items-center gap-2 overflow-x-auto",children:[c.jsx(aa,{className:"inline h-4 w-4 opacity-40"}),c.jsx("code",{children:e})]}),c.jsx(A6e,{text:e})]})}function q0({children:e}){return c.jsx("div",{className:"bg-card border border-border rounded-2xl p-4",children:e})}function n2({children:e}){return c.jsx("h2",{className:"text-[13px] font-medium text-muted-foreground uppercase tracking-wider mb-3",children:e})}function r2({icon:e,title:t,subtitle:n,iconClassName:r}){return c.jsxs("div",{className:"flex flex-col items-start gap-1.5 min-w-0",children:[c.jsx(e,{className:r||"h-5 w-5 text-muted-foreground"}),c.jsx("span",{className:"text-sm font-medium text-foreground",children:t}),c.jsx("span",{className:"text-xs text-muted-foreground leading-tight",children:n})]})}function vU(){return c.jsx("div",{"aria-hidden":!0,className:"mt-5 h-px w-6 shrink-0 bg-border"})}function bU({number:e,title:t,children:n}){return c.jsx("div",{className:"flex gap-4",children:c.jsxs("div",{className:"flex-1 min-w-0",children:[c.jsxs("div",{className:"grid grid-cols-[auto_1fr] items-baseline gap-3",children:[c.jsxs("div",{className:"flex-shrink-0 flex items-center justify-center font-medium text-logo",children:[e,"."]}),c.jsx("h3",{className:"font-medium text-foreground mb-2",children:t})]}),c.jsx("div",{className:"text-muted-foreground text-sm space-y-3",children:n})]})})}function R6e({localPath:e,loading:t,onClick:n}){return c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("button",{className:fe("border border-border hover:border-primary/30 group rounded-lg bg-card px-4 py-3 flex items-center gap-3 w-full text-left hover:bg-muted/50 transition-colors",t&&"opacity-50 cursor-not-allowed"),disabled:t,onClick:n,children:[c.jsx(v7,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),c.jsx("span",{className:"font-medium text-foreground truncate flex-1",children:Lj(e)}),t?c.jsx(jn,{className:"h-4 w-4 text-muted-foreground group-hover:text-primary animate-spin flex-shrink-0"}):c.jsx(aj,{className:"h-4 w-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]})}),c.jsx(Ms,{children:c.jsx("p",{children:e})})]})}function M6e({connectionStatus:e,ready:t,snapshot:n,startingLocalPath:r,commandError:i,newProjectOpen:s,onNewProjectOpenChange:o,onOpenProject:a,onCreateProject:l}){const d=_.useMemo(()=>(n==null?void 0:n.projects)??[],[n==null?void 0:n.projects]),h=e==="connecting"||!t,p=e==="connected"&&t;return c.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-background overflow-y-auto",children:[p?c.jsxs(c.Fragment,{children:[c.jsx(mU,{title:(n==null?void 0:n.machine.displayName)??"Local Projects",subtitle:`${$r} is connected, choose a project below to get started.`}),c.jsxs("div",{className:"w-full px-6 mb-10",children:[c.jsxs("div",{className:"flex items-baseline justify-between mb-3",children:[c.jsx("h2",{className:"text-[13px] font-medium text-muted-foreground uppercase tracking-wider",children:"Projects"}),c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>o(!0),children:[c.jsx(ro,{className:"h-4 w-4 mr-1.5"}),"Add Project"]})]}),d.length>0?c.jsx("div",{className:"grid gap-2 [grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr))]",children:d.map(m=>c.jsx(R6e,{localPath:m.localPath,loading:r===m.localPath,onClick:()=>{a(m.localPath)}},m.localPath))}):c.jsx(q0,{children:c.jsx("p",{className:"text-sm text-muted-foreground",children:"No local projects discovered yet. Open one with Claude or Codex, or create a new project here."})}),i?c.jsx("div",{className:"text-sm text-destructive border border-destructive/20 bg-destructive/5 rounded-xl px-4 py-3 mt-4",children:i}):null]})]}):c.jsxs(c.Fragment,{children:[c.jsx(mU,{narrow:!0,icon:p2,title:h?`Connecting ${$r}`:`Connect ${$r}`,subtitle:h?`${$r} is starting up and loading your local projects.`:`Run ${$r} directly on your machine with full access to your local files and agent project history.`}),c.jsxs("div",{className:"max-w-2xl w-full mx-auto pb-12 px-6",children:[c.jsx(n2,{children:"Status"}),c.jsx("div",{className:"mb-8",children:c.jsx(q0,{children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 text-muted-foreground animate-spin"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:h?`Connecting to your local ${$r} server...`:c.jsxs(c.Fragment,{children:["Not connected. Run ",c.jsx("code",{className:"bg-background border border-border rounded-md mx-0.5 p-1 font-mono text-xs text-foreground",children:U_()})," from any terminal on this machine."]})})]})})}),h?null:c.jsxs("div",{className:"mb-10",children:[c.jsx(n2,{children:"How it works"}),c.jsx(q0,{children:c.jsxs("div",{className:"flex items-start gap-4 py-2 px-2",children:[c.jsx(r2,{icon:gC,title:`${$r} CLI`,subtitle:"On Your Machine"}),c.jsx(vU,{}),c.jsx(r2,{icon:ij,title:`${$r} Server`,subtitle:"Local WebSocket"}),c.jsx(vU,{}),c.jsx(r2,{icon:p2,title:`${$r} UI`,subtitle:"Project Chat"})]})})]}),h?null:c.jsxs("div",{className:"mb-10",children:[c.jsx(n2,{children:"Setup"}),c.jsx(q0,{children:c.jsxs("div",{className:"space-y-4",children:[c.jsxs(bU,{number:1,title:`Start ${$r}`,children:[c.jsx("p",{children:"Run this command in your terminal:"}),c.jsx(gU,{children:U_()})]}),c.jsxs(bU,{number:2,title:"Open the local UI",children:[c.jsxs("p",{children:[$r," serves the app locally and opens the Local Projects page in an app-style browser window."]}),c.jsx(gU,{children:"http://localhost:3210/local"})]}),c.jsxs("div",{className:"mt-8",children:[c.jsx("h3",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider mb-4",children:"Notes"}),c.jsxs("div",{className:"space-y-3 text-sm",children:[c.jsxs("div",{className:"flex gap-4",children:[c.jsx("code",{className:"font-mono text-foreground whitespace-nowrap",children:U_("").trim()}),c.jsx("span",{className:"text-muted-foreground",children:"Start in the current directory"})]}),c.jsxs("div",{className:"flex gap-4",children:[c.jsx("code",{className:"font-mono text-foreground whitespace-nowrap",children:U_("--no-open")}),c.jsx("span",{className:"text-muted-foreground",children:"Start the server without opening the browser"})]})]})]})]})})]})]})]}),c.jsx(N6e,{open:s,onOpenChange:o,onConfirm:m=>{l(m)}}),c.jsx("div",{className:"py-4 text-center",children:c.jsxs("span",{className:"text-xs text-muted-foreground/50",children:["v",Pj.split("/")[1]]})})]})}function j6e(){const e=dC();return c.jsx("div",{className:"flex-1 flex flex-col min-w-0 min-h-0 relative",children:c.jsx(M6e,{connectionStatus:e.connectionStatus,ready:e.localProjectsReady,snapshot:e.localProjects,startingLocalPath:e.startingLocalPath,commandError:e.commandError,newProjectOpen:e.addProjectModalOpen,onNewProjectOpenChange:t=>{if(t){e.openAddProjectModal();return}e.closeAddProjectModal()},onOpenProject:e.handleOpenLocalProject,onCreateProject:e.handleCreateProject})})}const I6e=["app_launch","project_opened","project_created","project_removed","chat_created","chat_deleted","message_sent","update_checked","update_installed","update_failed","analytics_enabled","analytics_disabled"],P6e=["current_version","environment","latest_version","custom_port_enabled","no_open_enabled","password_enabled","strict_port_enabled","remote_enabled","host_enabled","share_quick_enabled","share_token_enabled"];function L6e(){return{name:"",provider:"claude",model:$c("claude").defaultModel,modelOptions:{...wo},systemPrompt:"",contextScope:"previous-assistant-reply",triggerMode:"auto"}}function O6e(){return{draft:L6e(),error:null,pending:!1,confirmDelete:!1}}const _o=tr()(e=>({editing:{kind:"list"},form:O6e(),timeoutDraft:"",loopError:null,setEditing:t=>e({editing:t}),resetForm:t=>e({form:{draft:t,error:null,pending:!1,confirmDelete:!1}}),setFormDraft:t=>e(n=>({form:{...n.form,draft:t}})),patchFormDraft:t=>e(n=>({form:{...n.form,draft:{...n.form.draft,...t}}})),setFormError:t=>e(n=>({form:{...n.form,error:t}})),setFormPending:t=>e(n=>({form:{...n.form,pending:t}})),setFormConfirmDelete:t=>e(n=>({form:{...n.form,confirmDelete:t}})),setTimeoutDraft:t=>e({timeoutDraft:t}),setLoopError:t=>e({loopError:t})}));function i2(e){return"contextWindow"in e}function xU(e){return"fastMode"in e}function D6e(e){const t=e.editing,n=_.useMemo(()=>t.kind!=="edit"?null:e.subagents.find(o=>o.id===t.id)??null,[t,e.subagents]),r=t.kind,i=r!=="list",s=e.subagents.length===0;return s&&!i?c.jsx($6e,{onStartCreate:e.onStartCreate}):c.jsxs("div",{className:"flex flex-col gap-6 md:flex-row md:items-start md:gap-8",children:[s?null:c.jsx(B6e,{subagents:e.subagents,editing:e.editing,onSelect:e.onSelect,onStartCreate:e.onStartCreate}),i?c.jsx(V6e,{mode:r,subject:r==="edit"?n:null,providerDefaults:e.providerDefaults,availableProviders:e.availableProviders,handlers:e.handlers,onCancelEditing:e.onCancelEditing},r==="edit"?(n==null?void 0:n.id)??"edit":"create"):c.jsx(z6e,{})]})}function $6e(e){return c.jsxs("div",{className:"flex w-full flex-col items-center gap-4 rounded-lg border border-dashed border-border px-6 py-14 text-center","data-testid":"subagent-empty",children:[c.jsx("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:c.jsx(mh,{className:"size-5","aria-hidden":!0})}),c.jsx("p",{className:"text-sm font-medium text-foreground",children:"No subagents yet"}),c.jsxs(Me,{variant:"default",size:"sm",onClick:e.onStartCreate,children:[c.jsx(ro,{className:"mr-1.5 size-4"})," Create subagent"]})]})}function z6e(){return c.jsx("div",{className:"hidden flex-1 items-center justify-center rounded-lg border border-dashed border-border px-6 py-12 text-center text-sm text-muted-foreground md:flex",children:"Select a subagent to edit, or create a new one."})}function B6e(e){const t=e.editing.kind==="edit"?e.editing.id:null;return c.jsxs("aside",{className:"flex w-full flex-col gap-2 md:w-64 md:flex-shrink-0",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsxs("span",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",style:{fontVariantNumeric:"tabular-nums"},children:[e.subagents.length," ",e.subagents.length===1?"agent":"agents"]}),c.jsxs(Me,{variant:"ghost",size:"sm",onClick:e.onStartCreate,"data-testid":"subagent-create",children:[c.jsx(ro,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Create subagent"})]})]}),c.jsx("ul",{className:"flex flex-col gap-0.5",children:e.subagents.map(n=>{var i;const r=((i=n.description)==null?void 0:i.trim())||(n.contextScope==="previous-assistant-reply"?"Last reply":"Full transcript");return c.jsx("li",{children:c.jsxs("button",{type:"button","data-testid":`subagent-row:${n.id}`,onClick:()=>e.onSelect(n.id),className:fe("flex w-full flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-muted",t===n.id&&"bg-muted"),children:[c.jsxs("span",{className:"flex w-full items-center justify-between gap-2",children:[c.jsx("span",{className:"truncate text-sm font-medium text-foreground",children:n.name}),c.jsx(F6e,{provider:n.provider})]}),c.jsx("span",{className:"w-full truncate text-xs text-muted-foreground",children:r})]})},n.id)})})]})}function F6e({provider:e}){const t=$c(e).label;return c.jsxs("span",{className:"inline-flex items-center gap-1 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:[c.jsx(mh,{className:"size-3"})," ",t]})}const U6e=[{value:"claude",label:"Claude"},{value:"codex",label:"Codex"}],H6e=[{value:"previous-assistant-reply",label:"Last reply"},{value:"full-transcript",label:"Full transcript"}],W6e=[{value:"auto",label:"Auto"},{value:"manual",label:"Manual"}];function V6e(e){var L;const t=_.useMemo(()=>e.mode==="edit"&&e.subject?Z6e(e.subject):yU("claude",e.providerDefaults,e.availableProviders),[e.mode,e.subject,e.providerDefaults,e.availableProviders]),n=_o(I=>I.resetForm),r=_o(I=>I.form),i=_o(I=>I.patchFormDraft),s=_o(I=>I.setFormDraft),o=_o(I=>I.setFormError),a=_o(I=>I.setFormPending),l=_o(I=>I.setFormConfirmDelete);_.useEffect(()=>{n(t)},[]);const{draft:d,error:h,pending:p,confirmDelete:m}=r,v=(h==null?void 0:h.field)==="name"?h.message:null,b=(h==null?void 0:h.field)==="general"?h.message:null,x=eFe(d,t),S=d.name.trim().length>0&&(e.mode==="create"||x);function C(I){i(I),(h==null?void 0:h.field)==="name"&&"name"in I&&o(null)}function k(I){if(I===d.provider)return;const $=yU(I,e.providerDefaults,e.availableProviders);s({...d,provider:I,model:$.model,modelOptions:$.modelOptions})}function w(I){if(d.provider!=="claude")return;const $=i2(d.modelOptions)?d.modelOptions:wo;i({modelOptions:{...wo,...$,reasoningEffort:I}})}function N(I){if(d.provider!=="claude")return;const $=i2(d.modelOptions)?d.modelOptions:wo;i({modelOptions:{...wo,...$,contextWindow:I}})}function A(I){if(d.provider!=="codex")return;const $=xU(d.modelOptions)?d.modelOptions:hd;i({modelOptions:{...hd,...$,reasoningEffort:I}})}async function T(){if(!(!S||p)){a(!0),o(null);try{const I=e.mode==="create"?await e.handlers.onCreate(d):await e.handlers.onUpdate(e.subject.id,d);I.ok||o(nFe(I.error))}finally{a(!1)}}}async function M(){if(!(e.mode!=="edit"||!e.subject)){if(!m){l(!0);return}a(!0);try{await e.handlers.onDelete(e.subject.id)}finally{a(!1),l(!1)}}}const j=d.provider==="claude"?{...wo,...i2(d.modelOptions)?d.modelOptions:{}}:null,P=d.provider==="codex"?{...hd,...xU(d.modelOptions)?d.modelOptions:{}}:null,D=e.availableProviders.find(I=>I.id===d.provider)??$c(d.provider);return c.jsxs("section",{className:"flex w-full flex-1 flex-col gap-4",children:[c.jsxs("header",{className:"flex flex-col gap-1",children:[c.jsx("h3",{className:"text-base font-medium text-foreground",children:e.mode==="create"?"New subagent":d.name||"Subagent"}),c.jsxs("p",{className:"text-sm text-muted-foreground",children:["Mention with ",c.jsxs("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:["@agent/",d.name||"<name>"]})," in chat."]})]}),b?c.jsx("div",{className:"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-sm text-destructive",children:b}):null,c.jsx(_s,{label:"Name",hint:v,hintTone:v?"destructive":"muted",children:c.jsx(dn,{"data-testid":"subagent-form-name",value:d.name,onChange:I=>C({name:rFe(I.target.value)}),maxLength:mee,placeholder:"reviewer",className:"font-mono"})}),c.jsx(_s,{label:"Description",hint:"Optional. Shown next to the name.",children:c.jsx(dn,{"data-testid":"subagent-form-description",value:d.description??"",onChange:I=>C({description:I.target.value}),placeholder:"Reviews diffs against the repo style"})}),c.jsx(_s,{label:"Provider",children:c.jsx(Es,{value:d.provider,onValueChange:I=>{UW(I)&&k(I)},options:U6e,size:"sm"})}),c.jsx(_s,{label:"Model",children:c.jsxs(Qo,{value:d.model,onValueChange:I=>C({model:I}),children:[c.jsx(Co,{"data-testid":"subagent-form-model",className:"w-full md:w-72",children:c.jsx(ja,{placeholder:"Select a model"})}),c.jsx(ko,{children:D.models.map(I=>c.jsx(ri,{value:I.id,children:I.label},I.id))})]})}),j?c.jsxs(c.Fragment,{children:[c.jsx(_s,{label:"Reasoning effort",children:c.jsx(Es,{value:j.reasoningEffort,onValueChange:I=>{sw(I)&&w(I)},options:Pb.map(I=>({value:I.id,label:I.label})),size:"sm"})}),c.jsx(_s,{label:"Context window",children:c.jsx(Es,{value:j.contextWindow,onValueChange:I=>{DW(I)&&N(I)},options:Mf.map(I=>({value:I.id,label:I.label})),size:"sm"})})]}):null,P?c.jsx(_s,{label:"Reasoning effort",children:c.jsx(Es,{value:P.reasoningEffort,onValueChange:I=>{ow(I)&&A(I)},options:iw.map(I=>({value:I.id,label:I.label})),size:"sm"})}):null,c.jsx(_s,{label:"Context scope",children:c.jsx(Es,{value:d.contextScope,onValueChange:I=>{Gge(I)&&C({contextScope:I})},options:H6e,size:"sm"})}),c.jsx(_s,{label:"Trigger",hint:"Auto: the main agent may delegate on its own. Manual: only runs when you @-mention it.",children:c.jsx(Es,{value:d.triggerMode??"auto",onValueChange:I=>{qge(I)&&C({triggerMode:I})},options:W6e,size:"sm"})}),c.jsx(_s,{label:"System prompt",hint:"What this persona should focus on. Plain text.",children:c.jsx(Al,{"data-testid":"subagent-form-system-prompt",value:d.systemPrompt,onChange:I=>C({systemPrompt:I.target.value}),placeholder:"You are a careful code reviewer...",rows:6,className:"min-h-32"})}),c.jsx(_s,{label:"Max turns",hint:"Optional. Caps the agentic turns per run (like Claude Code's per-agent maxTurns). Empty = unbounded. Claude SDK runs stop gracefully at the limit; PTY/Codex runs are aborted.",children:c.jsx(dn,{"data-testid":"subagent-form-max-turns",type:"number",min:1,step:1,value:((L=d.maxTurns)==null?void 0:L.toString())??"",onChange:I=>{const $=Number.parseInt(I.target.value,10);C({maxTurns:Number.isInteger($)&&$>0?$:void 0})},placeholder:"unbounded",className:"w-36"})}),d.provider==="claude"?c.jsxs(c.Fragment,{children:[c.jsx(_s,{label:"Working directory",hint:"Optional. Relative to the parent chat cwd. Restricts the subagent's filesystem access to this subtree.",children:c.jsx(dn,{"data-testid":"subagent-form-working-dir",value:d.workingDir??"",onChange:I=>{const $=I.target.value;C({workingDir:$.length>0?$:void 0})},placeholder:"docs"})}),c.jsx(_s,{label:"Allowed paths",hint:"Optional. Newline-separated, relative to the parent chat cwd. When set, file tools can only read/write inside these roots.",children:c.jsx(Al,{"data-testid":"subagent-form-allowed-paths",value:(d.allowedPaths??[]).join(`
|
|
2769
|
+
${we.detail}`:""}`,closeLabel:"OK"})}catch(we){await r.alert({title:"Create branch failed",description:we instanceof Error?we.message:String(we),closeLabel:"OK"})}},[r,W,C,e.socket]);return _.useEffect(()=>{if(!t||!n)return;const ee=window.setInterval(()=>{C()},V3e);return()=>window.clearInterval(ee)},[t,C,n]),_.useEffect(()=>{!t||!n||C()},[t,C,n]),_.useEffect(()=>{!t||!e.activeChatId||h.current!==t&&(h.current=t,S())},[t,S,e.activeChatId]),_.useEffect(()=>{if(!t||!n)return;function ee(){document.visibilityState==="visible"&&C()}return window.addEventListener("focus",ee),document.addEventListener("visibilitychange",ee),()=>{window.removeEventListener("focus",ee),document.removeEventListener("visibilitychange",ee)}},[t,C,n]),_.useEffect(()=>{n&&d.current&&!e.isProcessing&&C(),d.current=e.isProcessing},[C,n,e.isProcessing]),_.useEffect(()=>()=>{l.current!==null&&window.clearTimeout(l.current)},[]),_.useEffect(()=>{n||l.current!==null&&(window.clearTimeout(l.current),l.current=null)},[t,n]),{diffRenderMode:i,wrapDiffLines:s,setDiffRenderMode:o,setWrapDiffLines:a,scheduleTerminalDiffRefresh:k,handleOpenDiffFile:w,handleCopyDiffFilePath:N,handleCopyDiffRelativePath:A,handleLoadDiffPatch:T,handleDiscardDiffFile:M,handleIgnoreDiffFile:j,handleIgnoreDiffFolder:P,handleOpenDiffInFinder:D,handleCommitDiffs:L,handleSyncBranch:I,handleGenerateCommitMessage:$,handleInitializeGit:H,handleGetGitHubPublishInfo:z,handleCheckGitHubRepoAvailability:F,handleSetupGitHub:K,handleListBranches:W,handleCheckoutBranch:V,handlePreviewMergeBranch:X,handleMergeBranch:G,handleCreateBranch:te}}const u6e="flex-1 flex flex-col min-h-0 min-w-0 relative",pee={"--terminal-toggle-duration":`${D1}ms`};function d6e(e,t){const n=Wn(a=>a.typedEmptyStateText),r=Wn(a=>a.isEmptyStateTypingComplete),i=Wn(a=>a.setTypedEmptyStateText),s=Wn(a=>a.setIsEmptyStateTypingComplete),o=Wn(a=>a.resetEmptyStateTyping);return _.useEffect(()=>{if(!e)return;o();let a=0;const l=window.setInterval(()=>{a+=1,i(tC.slice(0,a)),a>=tC.length&&(window.clearInterval(l),s(!0))},H3e);return()=>window.clearInterval(l)},[e,t,o,i,s]),{typedEmptyStateText:n,isEmptyStateTypingComplete:r}}function f6e(e){const t=Wn(d=>d.isPageFileDragActive),n=Wn(d=>d.setIsPageFileDragActive),r=_.useRef(0),i=_.useCallback(d=>{var h;return G3e(((h=d.dataTransfer)==null?void 0:h.types)??[])},[]),s=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current+=1,n(!0))},[e.hasSelectedProject,i,n]),o=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),d.dataTransfer.dropEffect="copy",t||n(!0))},[e.hasSelectedProject,i,t,n]),a=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current=Math.max(0,r.current-1),r.current===0&&n(!1))},[e.hasSelectedProject,i,n]),l=_.useCallback(d=>{!i(d)||!e.hasSelectedProject||(d.preventDefault(),r.current=0,n(!1),e.onFilesDropped([...d.dataTransfer.files]))},[e,i,n]);return{isPageFileDragActive:t,handleTranscriptDragEnter:s,handleTranscriptDragOver:o,handleTranscriptDragLeave:a,handleTranscriptDrop:l}}function h6e(e){const t=Wn(r=>r.layoutWidth),n=Wn(r=>r.setLayoutWidth);return _.useLayoutEffect(()=>{const r=e.current;if(!r)return;const i=()=>{const o=r.clientWidth,a=Wn.getState().layoutWidth;Math.abs(a-o)>=1&&n(o)},s=new ResizeObserver(i);return s.observe(r),i(),()=>s.disconnect()},[e,n]),t}function p6e(){const e=_.useRef(null),t=Wn(i=>i.inputHeight),n=Wn(i=>i.setInputHeight),r=_.useCallback(()=>{const i=e.current;if(!i)return;const s=i.getBoundingClientRect().height,o=Wn.getState().inputHeight,a=ZPe(o,s);a!==o&&n(a)},[n]);return _.useLayoutEffect(()=>{const i=e.current;if(!i)return;const s=new ResizeObserver(()=>{r()});return s.observe(i),r(),()=>s.disconnect()},[r]),{inputRef:e,syncInputHeight:r,transcriptPaddingBottom:JPe(t)}}const m6e=768;function g6e(e){return e>0&&e<m6e}function v6e(){const e=Wn(n=>n.viewportWidth),t=Wn(n=>n.setViewportWidth);return _.useEffect(()=>{if(typeof window>"u")return;const n=()=>t(window.innerWidth);return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[t]),g6e(e)}function b6e(e){const t=Wn(r=>r.fixedTerminalHeight),n=Wn(r=>r.setFixedTerminalHeight);return _.useEffect(()=>{const r=e.layoutRootRef.current;if(!r)return;const i=()=>{const o=r.getBoundingClientRect().height;if(!e.shouldRenderTerminalLayout||o<=0)return;const a=o*(e.terminalMainSizes[1]/100);if(a<=0)return;const l=Wn.getState().fixedTerminalHeight;Math.abs(l-a)>=1&&n(a)},s=new ResizeObserver(i);return s.observe(r),i(),()=>s.disconnect()},[e.layoutRootRef,e.shouldRenderTerminalLayout,e.terminalMainSizes,n]),t}const pU=_.memo(e=>c.jsx(bje,{...e,diffs:e.diffs??cQ})),x6e=_.memo(({showRightSidebar:e,sizePercent:t,sidebarPanelRef:n,sidebarVisualRef:r,content:i})=>c.jsx(wx,{id:"rightSidebar",defaultSize:`${t}%`,className:"min-h-0 min-w-0",elementRef:n,children:c.jsx("div",{ref:r,className:"h-full min-h-0 overflow-hidden","data-right-sidebar-open":e?"true":"false","data-right-sidebar-animated":"false","data-right-sidebar-visual":!0,style:pee,children:i})})),y6e=_.memo(({projectId:e,showRightSidebar:t,sidebarVisualRef:n,onClose:r,content:i})=>e?c.jsxs("div",{className:fe("absolute inset-0 z-40 transition-opacity duration-300 ease-out",t?"pointer-events-auto opacity-100":"pointer-events-none opacity-0"),"aria-hidden":t?void 0:!0,"data-mobile-right-sidebar-overlay":!0,children:[c.jsx("button",{type:"button",className:"absolute inset-0 bg-black/45 backdrop-blur-[1px]","aria-label":"Close changes sidebar",onClick:r}),c.jsx("div",{ref:n,className:fe("absolute inset-y-0 right-0 flex w-[min(92vw,30rem)] max-w-full min-h-0 flex-col overflow-hidden border-l border-border bg-background shadow-2xl transition-transform duration-300 ease-out","pt-[max(env(safe-area-inset-top),0px)] pb-[max(env(safe-area-inset-bottom),0px)]",t?"translate-x-0":"translate-x-full"),"data-right-sidebar-open":t?"true":"false","data-right-sidebar-animated":"false","data-right-sidebar-visual":!0,children:i})]}):null);function _6e({chatCard:e,projectId:t,shouldRenderTerminalLayout:n,showTerminalPane:r,terminalLayout:i,mainPanelGroupRef:s,terminalPanelRef:o,terminalVisualRef:a,fixedTerminalHeight:l,terminalFocusRequestVersion:d,addTerminal:h,socket:p,connectionStatus:m,scrollback:v,minColumnWidth:b,splitTerminalShortcut:x,onTerminalCommandSent:S,onRemoveTerminal:C,onTerminalLayout:k,onLayoutChanged:w}){return n?c.jsxs(aL,{groupRef:s,orientation:"vertical",className:"flex-1 min-h-0",onLayoutChanged:w,children:[c.jsx(wx,{id:"chat",defaultSize:`${i.mainSizes[0]}%`,minSize:"25%",className:"min-h-0",children:e}),c.jsx(lL,{withHandle:!0,orientation:"vertical",disabled:!r,className:fe(!r&&"pointer-events-none opacity-0")}),c.jsx(wx,{id:"terminal",defaultSize:`${i.mainSizes[1]}%`,minSize:"0%",className:"min-h-0",elementRef:o,children:c.jsx("div",{ref:a,className:"h-full min-h-0 overflow-hidden relative","data-terminal-open":r?"true":"false","data-terminal-animated":"false","data-terminal-visual":!0,style:pee,children:c.jsx(l6e,{projectId:t,fixedTerminalHeight:l,terminalLayout:i,addTerminal:h,socket:p,connectionStatus:m,scrollback:v,minColumnWidth:b,splitTerminalShortcut:x,focusRequestVersion:d,onTerminalCommandSent:S,onRemoveTerminal:C,onTerminalLayout:k})})})]},t):c.jsx(c.Fragment,{children:e})}function S6e(){var ba,zl,Xa,gs,xa,uu,ci,Ja,Za,co,$s,ya,q,J,be,Ze,hn,Ir,ki,qi;const e=dC(),{handleCancel:t,handleOpenExternal:n}=e,r=zx(),i=_.useRef(null),s=_.useRef(null),o=_.useRef(!0),a=_.useRef(null),l=_.useRef(null),d=_.useRef(null),h=_.useRef(null),{inputRef:p,syncInputHeight:m,transcriptPaddingBottom:v}=p6e(),b=Wn(Ee=>Ee.showScrollToBottom),x=Wn(Ee=>Ee.setShowScrollToBottom),S=Ad(),C=_.useCallback(Ee=>{S(`/chat/${Ee}`)},[S]),k=e.messages.length===0&&((ba=e.runtime)==null?void 0:ba.title)==="New Chat",w=e.activeProjectId,A=Gu(Ee=>w?Ee.projects[w]:void 0)??aIe,M=Ks(Ee=>w?Ee.projects[w]:void 0)??iEe,j=Ks(Ee=>Ee.size),P=Gu(Ee=>Ee.addTerminal),D=Gu(Ee=>Ee.removeTerminal),L=Gu(Ee=>Ee.toggleVisibility),I=Gu(Ee=>Ee.resetMainSizes),$=Gu(Ee=>Ee.setMainSizes),H=Gu(Ee=>Ee.setTerminalSizes),z=Ks(Ee=>Ee.toggleVisibility),F=Ks(Ee=>Ee.setSize),K=Ss(Ee=>Ee.scrollbackLines),W=Ss(Ee=>Ee.minColumnWidth),V=Ss(Ee=>Ee.editorPreset),X=Ss(Ee=>Ee.editorCommandTemplate),G=_.useMemo(()=>oI(e.keybindings),[e.keybindings]),te=_.useMemo(()=>{var Ee;return Zje(((Ee=e.chatSnapshot)==null?void 0:Ee.messages)??[])},[(zl=e.chatSnapshot)==null?void 0:zl.messages]),oe=_.useMemo(()=>{var Ee,Fe;return eIe(((Ee=e.chatSnapshot)==null?void 0:Ee.messages)??[],Object.values(((Fe=e.chatSnapshot)==null?void 0:Fe.subagentRuns)??{}))},[(Xa=e.chatSnapshot)==null?void 0:Xa.messages,(gs=e.chatSnapshot)==null?void 0:gs.subagentRuns]),ce=A.terminals.length>0,de=!!(w&&A.isVisible&&ce),ee=!!(w&&ce),ne=!!(w&&M.isVisible),ie=!!w,ae=v6e(),Q=ie&&!ae,ke=h6e(i),we=_.useCallback((Ee,Fe)=>{if(!Number.isFinite(Ee))return j;const B=Fe??ke,ze=B>0?tEe/B*100:EA;return Math.max(EA,ze,Ee)},[j,ke]),Ae=we(j??om),Xe=b6e({layoutRootRef:i,shouldRenderTerminalLayout:ee,terminalMainSizes:A.mainSizes}),{isAnimating:ft,mainPanelGroupRef:Ct,terminalFocusRequestVersion:ln,terminalPanelRef:en,terminalVisualRef:bt}=kIe({showTerminalPane:de,shouldRenderTerminalLayout:ee,projectId:w,terminalLayout:A,chatInputRef:d}),{isAnimating:fn,panelGroupRef:qe,sidebarPanelRef:Ht,sidebarVisualRef:cn}=bIe({projectId:w,shouldRenderRightSidebarLayout:Q,showRightSidebar:ne,rightSidebarSize:Ae}),{diffRenderMode:wt,wrapDiffLines:zt,setDiffRenderMode:tn,setWrapDiffLines:Yt,scheduleTerminalDiffRefresh:Kt,handleOpenDiffFile:sn,handleCopyDiffFilePath:Nn,handleCopyDiffRelativePath:Ue,handleLoadDiffPatch:un,handleDiscardDiffFile:wn,handleIgnoreDiffFile:kt,handleIgnoreDiffFolder:Xt,handleOpenDiffInFinder:Ce,handleCommitDiffs:rt,handleSyncBranch:gt,handleGenerateCommitMessage:it,handleInitializeGit:jt,handleGetGitHubPublishInfo:Bt,handleCheckGitHubRepoAvailability:Et,handleSetupGitHub:Lt,handleListBranches:nn,handleCheckoutBranch:$t,handlePreviewMergeBranch:re,handleMergeBranch:je,handleCreateBranch:ht}=c6e({state:e,projectId:w,showRightSidebar:ne}),{typedEmptyStateText:Ne,isEmptyStateTypingComplete:We}=d6e(k,e.activeChatId);SIe({rootRef:l,fallbackRef:d,enabled:e.hasSelectedProject,canCancel:e.canCancel}),_Ie({socket:e.socket,activeChatId:e.activeChatId});const Ke=_.useCallback(Ee=>{var Fe;!e.hasSelectedProject||Ee.length===0||(Fe=h.current)==null||Fe.enqueueFiles(Ee)},[e.hasSelectedProject]),{isPageFileDragActive:Je,handleTranscriptDragEnter:pt,handleTranscriptDragOver:Ot,handleTranscriptDragLeave:xt,handleTranscriptDrop:Be}=f6e({hasSelectedProject:e.hasSelectedProject,onFilesDropped:Ke}),Ft=_.useCallback(()=>{if(w){if(ce){L(w);return}P(w)}},[P,ce,w,L]),Ln=_.useCallback(Ee=>{var yt;if(!w||!de||ft.current)return;const Fe=Ee.chat,B=Ee.terminal;if(!Number.isFinite(Fe)||!Number.isFinite(B))return;const ze=((yt=i.current)==null?void 0:yt.getBoundingClientRect().height)??0;if(uIe(ze,B)){I(w),L(w);return}$(w,[Fe,B])},[ft,w,I,$,de,L]),Gt=_.useCallback(()=>{w&&z(w)},[w,z]),Jt=_.useCallback(()=>{var Ee;if(w){if(ne){z(w);return}if(((Ee=e.chatDiffSnapshot)==null?void 0:Ee.status)==="no_repo"){(async()=>{if(!await r.confirm({title:"Initialize Git?",description:"Initialize a local git repository in this project?",confirmLabel:"Init Git",cancelLabel:"Cancel"}))return;const B=await jt();B!=null&&B.ok&&!ne&&z(w)})();return}z(w)}},[r,jt,w,ne,(xa=e.chatDiffSnapshot)==null?void 0:xa.status,z]),xr=_.useCallback((Ee,Fe)=>{e.socket.command({type:"terminal.close",terminalId:Fe}).catch(()=>{}),D(Ee,Fe)},[D,e.socket]),In=_.useCallback(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null)},[]),Gn=_.useCallback(Ee=>{if(o.current!==Ee){if(o.current=Ee,Ee){In(),x(!1);return}In(),a.current=window.setTimeout(()=>{x(!0),a.current=null},150)}},[In,x]),qn=_.useCallback(()=>{var Fe,B;const Ee=(B=(Fe=s.current)==null?void 0:Fe.getState)==null?void 0:B.call(Fe);Ee&&Gn(Ee.isAtEnd)},[Gn]),ye=_.useCallback(async(Ee=!0)=>{var Fe,B;o.current=!0,In(),x(!1),await((B=(Fe=s.current)==null?void 0:Fe.scrollToEnd)==null?void 0:B.call(Fe,{animated:Ee}))},[In,x]),Qe=_.useCallback(async(Ee,Fe)=>{await ye(!1),await e.handleSend(Ee,Fe)},[ye,e]),zn=_.useCallback((Ee,Fe)=>{const B=e.activeChatId;B&&e.socket.command({type:"autoContinue.accept",chatId:B,scheduleId:Ee,scheduledAt:Fe}).catch(()=>{})},[e.activeChatId,e.socket]),Ur=_.useCallback((Ee,Fe)=>{const B=e.activeChatId;B&&e.socket.command({type:"autoContinue.reschedule",chatId:B,scheduleId:Ee,scheduledAt:Fe}).catch(()=>{})},[e.activeChatId,e.socket]),ue=_.useCallback(Ee=>{const Fe=e.activeChatId;Fe&&e.socket.command({type:"autoContinue.cancel",chatId:Fe,scheduleId:Ee}).catch(()=>{})},[e.activeChatId,e.socket]),Ye=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.accept",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),ct=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.stop",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),at=_.useCallback(async Ee=>{const Fe=e.activeChatId;Fe&&await e.socket.command({type:"tunnel.retry",chatId:Fe,tunnelId:Ee})},[e.activeChatId,e.socket]),Mn=_.useCallback((Ee,Fe)=>{e.socket.command({type:"chat.cancelSubagentRun",chatId:Ee,runId:Fe}).catch(()=>{})},[e.socket]),It=z1(vm(hL(e.activeChatId??""))),Hr=_.useCallback(async Ee=>{const Fe=e.activeChatId;return Fe?e.socket.command({type:"workflows.getRun",chatId:Fe,runId:Ee}):null},[e.activeChatId,e.socket]),li=_.useCallback(async Ee=>{const Fe=e.activeChatId;return Fe?e.socket.command({type:"subagents.getRun",chatId:Fe,agentId:Ee}):[]},[e.activeChatId,e.socket]),$l=DT(Ee=>Ee.listForChat(e.activeChatId??"")),Ds=DT(Ee=>Ee.addShare),va=DT(Ee=>Ee.removeShare),Po=_.useCallback(async Ee=>{const Fe=await e.socket.command({type:"share.mint",payload:{chatId:Ee}});Fe.ok&&Fe.kind==="mint"&&Ds(Ee,Fe.data.summary)},[Ds,e.socket]),Dt=_.useCallback(async Ee=>{const Fe=e.activeChatId;if(!Fe)return;(await e.socket.command({type:"share.revoke",payload:{tokenId:Ee}})).ok&&va(Fe,Ee)},[va,e.activeChatId,e.socket]);_.useEffect(()=>()=>In(),[In]),_.useEffect(()=>{o.current=!0,In(),x(!1)},[In,x,e.activeChatId]),_.useEffect(()=>{function Ee(Fe){if(w){if(hv(G,"toggleEmbeddedTerminal",Fe)){Fe.preventDefault(),Ft();return}if(hv(G,"toggleRightSidebar",Fe)){Fe.preventDefault(),Jt();return}if(hv(G,"openInFinder",Fe)){Fe.preventDefault(),n("open_finder");return}if(hv(G,"openInEditor",Fe)){Fe.preventDefault(),n("open_editor");return}hv(G,"addSplitTerminal",Fe)&&(Fe.preventDefault(),P(w))}}return window.addEventListener("keydown",Ee),()=>window.removeEventListener("keydown",Ee)},[P,n,Ft,Jt,w,G]),_.useEffect(()=>{const Ee=window.requestAnimationFrame(()=>{qn()}),Fe=window.setTimeout(()=>{qn()},D1);return()=>{window.cancelAnimationFrame(Ee),window.clearTimeout(Fe)}},[ee,de,qn]),_.useEffect(()=>{function Ee(){qn()}return window.addEventListener("resize",Ee),()=>window.removeEventListener("resize",Ee)},[qn]),_.useEffect(()=>{if(!ne||!ae)return;const Ee=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=Ee}},[ae,ne]),_.useEffect(()=>{if(!ne||!ae)return;function Ee(Fe){Fe.key==="Escape"&&(Fe.preventDefault(),Gt())}return window.addEventListener("keydown",Ee),()=>window.removeEventListener("keydown",Ee)},[Gt,ae,ne]),_.useEffect(()=>{if(!o.current)return;let Ee=null;const Fe=window.requestAnimationFrame(()=>{var B,ze;(ze=(B=s.current)==null?void 0:B.scrollToEnd)==null||ze.call(B,{animated:!1}),Ee=window.requestAnimationFrame(()=>{var yt,yr;(yr=(yt=s.current)==null?void 0:yt.scrollToEnd)==null||yr.call(yt,{animated:!1})})});return()=>{window.cancelAnimationFrame(Fe),Ee!==null&&window.cancelAnimationFrame(Ee)}},[e.commandError,e.isDraining,e.isProcessing,e.messages.length,e.queuedMessages.length,e.runtimeStatus]),_.useLayoutEffect(()=>{var B,ze;if(!ne||ae||ke<=0||fn.current)return;const Ee=we(j,ke),Fe=(B=qe.current)==null?void 0:B.getLayout();Fe&&(Math.abs((Fe.rightSidebar??0)-Ee)<.1||(ze=qe.current)==null||ze.setLayout({workspace:100-Ee,rightSidebar:Ee}))},[we,j,fn,ke,qe,ne,ae]);const Tn=c.jsxs(Mj,{ref:l,className:"bg-background h-full flex flex-col overflow-hidden border-0 rounded-none relative",onDragEnter:pt,onDragOver:Ot,onDragLeave:xt,onDrop:Be,children:[c.jsxs(Ij,{className:"flex flex-1 min-h-0 flex-col overflow-hidden p-0 relative",children:[c.jsx(Mbe,{sidebarCollapsed:e.sidebarCollapsed,onOpenSidebar:e.openSidebar,onExpandSidebar:e.expandSidebar,onNewChat:e.handleCompose,localPath:e.navbarLocalPath,embeddedTerminalVisible:de,onToggleEmbeddedTerminal:w?Ft:void 0,rightSidebarVisible:ne,onToggleRightSidebar:w?Jt:void 0,onOpenExternal:n,editorPreset:V,editorCommandTemplate:X,platform:(uu=e.localProjects)==null?void 0:uu.machine.platform,finderShortcut:G.bindings.openInFinder,editorShortcut:G.bindings.openInEditor,terminalShortcut:G.bindings.toggleEmbeddedTerminal,rightSidebarShortcut:G.bindings.toggleRightSidebar,branchName:(ci=e.chatDiffSnapshot)==null?void 0:ci.branchName,homeDir:(Ja=e.localProjects)==null?void 0:Ja.machine.homeDir,hasGitRepo:((Za=e.chatDiffSnapshot)==null?void 0:Za.status)!=="no_repo",gitStatus:(co=e.chatDiffSnapshot)==null?void 0:co.status,timings:($s=e.runtime)==null?void 0:$s.timings,status:(ya=e.runtime)==null?void 0:ya.status,socket:e.socket,onOpenPtyChat:C,currentChatId:e.activeChatId??void 0,shareShares:$l,onShareMint:Po,onShareRevoke:Dt}),c.jsx(c$e,{activeChatId:e.activeChatId,listRef:s,messages:e.messages,queuedMessages:e.queuedMessages,transcriptPaddingBottom:v,localPath:(q=e.runtime)==null?void 0:q.localPath,latestToolIds:e.latestToolIds,isHistoryLoading:e.isHistoryLoading,hasOlderHistory:e.hasOlderHistory,isProcessing:e.isProcessing,runtimeStatus:e.runtimeStatus,isDraining:e.isDraining,commandError:e.commandError,loadOlderHistory:e.loadOlderHistory,onStopDraining:e.handleStopDraining,onSteerQueuedMessage:e.handleSteerQueuedMessage,onRemoveQueuedMessage:e.handleRemoveQueuedMessage,onOpenLocalLink:e.handleOpenLocalLink,editorPreset:V,editorCommandTemplate:X,platform:(J=e.localProjects)==null?void 0:J.machine.platform,onAskUserQuestionSubmit:e.handleAskUserQuestion,onExitPlanModeConfirm:e.handleExitPlanMode,onToolRequestAnswer:e.handleToolRequestAnswer,onSubagentAskUserQuestionSubmit:e.handleSubagentAskUserQuestion,onSubagentExitPlanModeSubmit:e.handleSubagentExitPlanMode,schedules:((be=e.chatSnapshot)==null?void 0:be.schedules)??qZ,onAutoContinueAccept:zn,onAutoContinueReschedule:Ur,onAutoContinueCancel:ue,tunnels:(Ze=e.chatSnapshot)==null?void 0:Ze.tunnels,liveTunnelId:(hn=e.chatSnapshot)==null?void 0:hn.liveTunnelId,onTunnelAccept:Ye,onTunnelStop:ct,onTunnelRetry:at,subagentRuns:(Ir=e.chatSnapshot)==null?void 0:Ir.subagentRuns,onCancelSubagentRun:Mn,loopProgress:(ki=e.chatSnapshot)==null?void 0:ki.loopProgress,workflowRuns:It.length>0?It:void 0,getWorkflowRunDetail:Hr,orchestrationPanel:c.jsx(E$e,{socket:e.socket,chatId:e.activeChatId}),getSubagentTranscript:li,showScrollButton:b&&e.messages.length>0,onIsAtEndChange:Gn,scrollToBottom:()=>ye(!0),typedEmptyStateText:Ne,isEmptyStateTypingComplete:We,isPageFileDragActive:Je,showEmptyState:k})]}),c.jsx(O3e,{inputRef:p,onLayoutChange:m,chatInputRef:h,chatInputElementRef:d,activeChatId:e.activeChatId,previousPrompt:e.previousPrompt,hasSelectedProject:e.hasSelectedProject,canCancel:e.canCancel,projectId:w,activeProvider:((qi=e.runtime)==null?void 0:qi.provider)??null,availableProviders:e.availableProviders,contextWindowSnapshot:te,sessionTotals:oe,onSubmit:Qe,onCancel:t})]}),Yn=w?c.jsx(_6e,{chatCard:Tn,projectId:w,shouldRenderTerminalLayout:ee,showTerminalPane:de,terminalLayout:A,mainPanelGroupRef:Ct,terminalPanelRef:en,terminalVisualRef:bt,fixedTerminalHeight:Xe,terminalFocusRequestVersion:ln,addTerminal:P,socket:e.socket,connectionStatus:e.connectionStatus,scrollback:K,minColumnWidth:W,splitTerminalShortcut:G.bindings.addSplitTerminal,onTerminalCommandSent:Kt,onRemoveTerminal:xr,onTerminalLayout:H,onLayoutChanged:Ln}):Tn,Cn=_.useMemo(()=>w?{projectId:w,diffs:e.chatDiffSnapshot??cQ,editorLabel:e.editorLabel,diffRenderMode:wt,wrapLines:zt,onOpenFile:sn,onOpenInFinder:Ce,onDiscardFile:wn,onIgnoreFile:kt,onIgnoreFolder:Xt,onCopyFilePath:Nn,onCopyRelativePath:Ue,onLoadPatch:un,onListBranches:nn,onPreviewMergeBranch:re,onMergeBranch:je,onCheckoutBranch:$t,onCreateBranch:ht,onGenerateCommitMessage:it,onInitializeGit:jt,onGetGitHubPublishInfo:Bt,onCheckGitHubRepoAvailability:Et,onSetupGitHub:Lt,onCommit:rt,onSyncWithRemote:gt,onDiffRenderModeChange:tn,onWrapLinesChange:Yt,onClose:Gt}:null,[wt,Et,$t,Gt,rt,Nn,Ue,ht,wn,it,Bt,kt,Xt,jt,nn,un,je,sn,Ce,re,Lt,gt,w,tn,Yt,e.chatDiffSnapshot,e.editorLabel,zt]);return c.jsxs("div",{ref:i,className:u6e,children:[Q&&w?c.jsxs(aL,{groupRef:qe,orientation:"horizontal",className:"flex-1 min-h-0",onLayoutChange:Ee=>{var B;if(!ne||fn.current)return;const Fe=we(Ee.rightSidebar);Math.abs(Fe-Ee.rightSidebar)<.1||(B=qe.current)==null||B.setLayout({workspace:100-Fe,rightSidebar:Fe})},onLayoutChanged:Ee=>{!ne||fn.current||F(we(Ee.rightSidebar))},children:[c.jsx(wx,{id:"workspace",defaultSize:`${100-Ae}%`,minSize:"20%",className:"min-h-0 min-w-0",children:Yn}),c.jsx(lL,{withHandle:!1,orientation:"horizontal",disabled:!ne,className:fe(!ne&&"pointer-events-none opacity-0")}),c.jsx(x6e,{showRightSidebar:ne,sizePercent:Ae,sidebarPanelRef:Ht,sidebarVisualRef:cn,content:Cn?c.jsx(pU,{...Cn}):null})]},`${w}-right-sidebar`):Yn,ae?c.jsx(y6e,{projectId:w,showRightSidebar:ne,sidebarVisualRef:cn,onClose:Gt,content:Cn?c.jsx(pU,{...Cn}):null}):null]})}const HM=qt("CopyButton",()=>e=>({copied:!1,setCopied:t=>e({copied:t})}));function mU({narrow:e=!1,title:t,subtitle:n,icon:r=ij}){return c.jsxs("div",{className:fe("w-full",e?"max-w-2xl px-6 pt-16 mx-auto":"px-6 pt-16 mb-10"),children:[c.jsxs("div",{className:fe("flex items-center gap-1 mb-2",e&&"justify-center"),children:[c.jsx("div",{className:"p-2 pl-0 rounded-lg",children:c.jsx(r,{className:"h-6 w-6 text-muted-foreground"})}),c.jsx("h1",{className:"text-2xl font-semibold text-foreground",children:t})]}),n&&c.jsx("p",{className:fe("text-muted-foreground",e&&"mb-10 text-center"),children:n})]})}const zf=tr()(e=>({tab:"new",name:"",existingPath:"",setTab:t=>e({tab:t}),setName:t=>e({name:t}),setExistingPath:t=>e({existingPath:t}),resetForOpen:()=>e({tab:"new",name:"",existingPath:""})})),w6e=()=>zf(e=>e.tab),C6e=()=>zf(e=>e.name),k6e=()=>zf(e=>e.existingPath);function E6e(e){return e.toLowerCase().replace(/[\s_]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-+/g,"-").replace(/^-|-$/g,"")}function N6e({open:e,onOpenChange:t,onConfirm:n}){const r=w6e(),i=C6e(),s=k6e(),o=zf(C=>C.setTab),a=zf(C=>C.setName),l=zf(C=>C.setExistingPath),d=zf(C=>C.resetForOpen),h=_.useRef(null),p=_.useRef(null);_.useEffect(()=>{e&&(d(),setTimeout(()=>{var C;return(C=h.current)==null?void 0:C.focus()},0))},[e,d]),_.useEffect(()=>{e&&setTimeout(()=>{var C,k;r==="new"?(C=h.current)==null||C.focus():(k=p.current)==null||k.focus()},0)},[r,e]);const m=E6e(i),v=m?`${Sfe}/${m}`:"",b=s.trim(),x=r==="new"?!!m:!!b,S=()=>{if(x){if(r==="new")n({mode:"new",localPath:v,title:i.trim()});else{const C=b.split("/").pop()||b;n({mode:"existing",localPath:b,title:C})}t(!1)}};return c.jsx(To,{open:e,onOpenChange:t,children:c.jsxs(io,{size:"sm",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Add Project"}),c.jsx(Es,{value:r,onValueChange:o,options:[{value:"new",label:"New Folder"},{value:"existing",label:"Existing Path"}],className:"w-full mb-2",optionClassName:"flex-1 justify-center"}),r==="new"?c.jsxs("div",{className:"space-y-2",children:[c.jsx(dn,{ref:h,type:"text",value:i,onChange:C=>a(C.target.value),onKeyDown:C=>{C.key==="Enter"&&S(),C.key==="Escape"&&t(!1)},placeholder:"Project name"}),v&&c.jsx("p",{className:"text-xs text-muted-foreground font-mono",children:v})]}):c.jsxs("div",{className:"space-y-2",children:[c.jsx(dn,{ref:p,type:"text",value:s,onChange:C=>l(C.target.value),onKeyDown:C=>{C.key==="Enter"&&S(),C.key==="Escape"&&t(!1)},placeholder:"~/Projects/my-app"}),c.jsx("p",{className:"text-xs text-muted-foreground",children:"The folder will be created if it doesn't exist."})]})]}),c.jsxs(Lc,{children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>t(!1),children:"Cancel"}),c.jsx(Me,{variant:"secondary",size:"sm",onClick:S,disabled:!x,children:"Create"})]})]})})}function T6e({text:e}){const t=HM.useScopedStore(i=>i.copied),n=HM.useScopedStore(i=>i.setCopied);async function r(){await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),2e3)}return c.jsx(Me,{variant:"ghost",size:"icon-mobile","aria-label":t?"Copied":"Copy to clipboard",className:"text-muted-foreground hover:text-foreground",onClick:()=>void r(),children:t?c.jsx(js,{className:"h-4 w-4 text-success"}):c.jsx(Ba,{className:"h-4 w-4"})})}function A6e({text:e}){return c.jsx(HM.Provider,{init:{},children:c.jsx(T6e,{text:e})})}function gU({children:e}){return c.jsxs("div",{className:"grid grid-cols-[1fr_auto] items-center group bg-background border border-border text-foreground rounded-xl p-1.5 pl-3 font-mono text-sm",children:[c.jsxs("pre",{className:"inline-flex items-center gap-2 overflow-x-auto",children:[c.jsx(aa,{className:"inline h-4 w-4 opacity-40"}),c.jsx("code",{children:e})]}),c.jsx(A6e,{text:e})]})}function q0({children:e}){return c.jsx("div",{className:"bg-card border border-border rounded-2xl p-4",children:e})}function n2({children:e}){return c.jsx("h2",{className:"text-[13px] font-medium text-muted-foreground uppercase tracking-wider mb-3",children:e})}function r2({icon:e,title:t,subtitle:n,iconClassName:r}){return c.jsxs("div",{className:"flex flex-col items-start gap-1.5 min-w-0",children:[c.jsx(e,{className:r||"h-5 w-5 text-muted-foreground"}),c.jsx("span",{className:"text-sm font-medium text-foreground",children:t}),c.jsx("span",{className:"text-xs text-muted-foreground leading-tight",children:n})]})}function vU(){return c.jsx("div",{"aria-hidden":!0,className:"mt-5 h-px w-6 shrink-0 bg-border"})}function bU({number:e,title:t,children:n}){return c.jsx("div",{className:"flex gap-4",children:c.jsxs("div",{className:"flex-1 min-w-0",children:[c.jsxs("div",{className:"grid grid-cols-[auto_1fr] items-baseline gap-3",children:[c.jsxs("div",{className:"flex-shrink-0 flex items-center justify-center font-medium text-logo",children:[e,"."]}),c.jsx("h3",{className:"font-medium text-foreground mb-2",children:t})]}),c.jsx("div",{className:"text-muted-foreground text-sm space-y-3",children:n})]})})}function R6e({localPath:e,loading:t,onClick:n}){return c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("button",{className:fe("border border-border hover:border-primary/30 group rounded-lg bg-card px-4 py-3 flex items-center gap-3 w-full text-left hover:bg-muted/50 transition-colors",t&&"opacity-50 cursor-not-allowed"),disabled:t,onClick:n,children:[c.jsx(v7,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),c.jsx("span",{className:"font-medium text-foreground truncate flex-1",children:Lj(e)}),t?c.jsx(jn,{className:"h-4 w-4 text-muted-foreground group-hover:text-primary animate-spin flex-shrink-0"}):c.jsx(aj,{className:"h-4 w-4 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]})}),c.jsx(Ms,{children:c.jsx("p",{children:e})})]})}function M6e({connectionStatus:e,ready:t,snapshot:n,startingLocalPath:r,commandError:i,newProjectOpen:s,onNewProjectOpenChange:o,onOpenProject:a,onCreateProject:l}){const d=_.useMemo(()=>(n==null?void 0:n.projects)??[],[n==null?void 0:n.projects]),h=e==="connecting"||!t,p=e==="connected"&&t;return c.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-background overflow-y-auto",children:[p?c.jsxs(c.Fragment,{children:[c.jsx(mU,{title:(n==null?void 0:n.machine.displayName)??"Local Projects",subtitle:`${$r} is connected, choose a project below to get started.`}),c.jsxs("div",{className:"w-full px-6 mb-10",children:[c.jsxs("div",{className:"flex items-baseline justify-between mb-3",children:[c.jsx("h2",{className:"text-[13px] font-medium text-muted-foreground uppercase tracking-wider",children:"Projects"}),c.jsxs(Me,{variant:"default",size:"sm",onClick:()=>o(!0),children:[c.jsx(ro,{className:"h-4 w-4 mr-1.5"}),"Add Project"]})]}),d.length>0?c.jsx("div",{className:"grid gap-2 [grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr))]",children:d.map(m=>c.jsx(R6e,{localPath:m.localPath,loading:r===m.localPath,onClick:()=>{a(m.localPath)}},m.localPath))}):c.jsx(q0,{children:c.jsx("p",{className:"text-sm text-muted-foreground",children:"No local projects discovered yet. Open one with Claude or Codex, or create a new project here."})}),i?c.jsx("div",{className:"text-sm text-destructive border border-destructive/20 bg-destructive/5 rounded-xl px-4 py-3 mt-4",children:i}):null]})]}):c.jsxs(c.Fragment,{children:[c.jsx(mU,{narrow:!0,icon:p2,title:h?`Connecting ${$r}`:`Connect ${$r}`,subtitle:h?`${$r} is starting up and loading your local projects.`:`Run ${$r} directly on your machine with full access to your local files and agent project history.`}),c.jsxs("div",{className:"max-w-2xl w-full mx-auto pb-12 px-6",children:[c.jsx(n2,{children:"Status"}),c.jsx("div",{className:"mb-8",children:c.jsx(q0,{children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 text-muted-foreground animate-spin"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:h?`Connecting to your local ${$r} server...`:c.jsxs(c.Fragment,{children:["Not connected. Run ",c.jsx("code",{className:"bg-background border border-border rounded-md mx-0.5 p-1 font-mono text-xs text-foreground",children:U_()})," from any terminal on this machine."]})})]})})}),h?null:c.jsxs("div",{className:"mb-10",children:[c.jsx(n2,{children:"How it works"}),c.jsx(q0,{children:c.jsxs("div",{className:"flex items-start gap-4 py-2 px-2",children:[c.jsx(r2,{icon:gC,title:`${$r} CLI`,subtitle:"On Your Machine"}),c.jsx(vU,{}),c.jsx(r2,{icon:ij,title:`${$r} Server`,subtitle:"Local WebSocket"}),c.jsx(vU,{}),c.jsx(r2,{icon:p2,title:`${$r} UI`,subtitle:"Project Chat"})]})})]}),h?null:c.jsxs("div",{className:"mb-10",children:[c.jsx(n2,{children:"Setup"}),c.jsx(q0,{children:c.jsxs("div",{className:"space-y-4",children:[c.jsxs(bU,{number:1,title:`Start ${$r}`,children:[c.jsx("p",{children:"Run this command in your terminal:"}),c.jsx(gU,{children:U_()})]}),c.jsxs(bU,{number:2,title:"Open the local UI",children:[c.jsxs("p",{children:[$r," serves the app locally and opens the Local Projects page in an app-style browser window."]}),c.jsx(gU,{children:"http://localhost:3210/local"})]}),c.jsxs("div",{className:"mt-8",children:[c.jsx("h3",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider mb-4",children:"Notes"}),c.jsxs("div",{className:"space-y-3 text-sm",children:[c.jsxs("div",{className:"flex gap-4",children:[c.jsx("code",{className:"font-mono text-foreground whitespace-nowrap",children:U_("").trim()}),c.jsx("span",{className:"text-muted-foreground",children:"Start in the current directory"})]}),c.jsxs("div",{className:"flex gap-4",children:[c.jsx("code",{className:"font-mono text-foreground whitespace-nowrap",children:U_("--no-open")}),c.jsx("span",{className:"text-muted-foreground",children:"Start the server without opening the browser"})]})]})]})]})})]})]})]}),c.jsx(N6e,{open:s,onOpenChange:o,onConfirm:m=>{l(m)}}),c.jsx("div",{className:"py-4 text-center",children:c.jsxs("span",{className:"text-xs text-muted-foreground/50",children:["v",Pj.split("/")[1]]})})]})}function j6e(){const e=dC();return c.jsx("div",{className:"flex-1 flex flex-col min-w-0 min-h-0 relative",children:c.jsx(M6e,{connectionStatus:e.connectionStatus,ready:e.localProjectsReady,snapshot:e.localProjects,startingLocalPath:e.startingLocalPath,commandError:e.commandError,newProjectOpen:e.addProjectModalOpen,onNewProjectOpenChange:t=>{if(t){e.openAddProjectModal();return}e.closeAddProjectModal()},onOpenProject:e.handleOpenLocalProject,onCreateProject:e.handleCreateProject})})}const I6e=["app_launch","project_opened","project_created","project_removed","chat_created","chat_deleted","message_sent","update_checked","update_installed","update_failed","analytics_enabled","analytics_disabled"],P6e=["current_version","environment","latest_version","custom_port_enabled","no_open_enabled","password_enabled","strict_port_enabled","remote_enabled","host_enabled","share_quick_enabled","share_token_enabled"];function L6e(){return{name:"",provider:"claude",model:$c("claude").defaultModel,modelOptions:{...wo},systemPrompt:"",contextScope:"previous-assistant-reply",triggerMode:"auto"}}function O6e(){return{draft:L6e(),error:null,pending:!1,confirmDelete:!1}}const _o=tr()(e=>({editing:{kind:"list"},form:O6e(),timeoutDraft:"",loopError:null,setEditing:t=>e({editing:t}),resetForm:t=>e({form:{draft:t,error:null,pending:!1,confirmDelete:!1}}),setFormDraft:t=>e(n=>({form:{...n.form,draft:t}})),patchFormDraft:t=>e(n=>({form:{...n.form,draft:{...n.form.draft,...t}}})),setFormError:t=>e(n=>({form:{...n.form,error:t}})),setFormPending:t=>e(n=>({form:{...n.form,pending:t}})),setFormConfirmDelete:t=>e(n=>({form:{...n.form,confirmDelete:t}})),setTimeoutDraft:t=>e({timeoutDraft:t}),setLoopError:t=>e({loopError:t})}));function i2(e){return"contextWindow"in e}function xU(e){return"fastMode"in e}function D6e(e){const t=e.editing,n=_.useMemo(()=>t.kind!=="edit"?null:e.subagents.find(o=>o.id===t.id)??null,[t,e.subagents]),r=t.kind,i=r!=="list",s=e.subagents.length===0;return s&&!i?c.jsx($6e,{onStartCreate:e.onStartCreate}):c.jsxs("div",{className:"flex flex-col gap-6 md:flex-row md:items-start md:gap-8",children:[s?null:c.jsx(B6e,{subagents:e.subagents,editing:e.editing,onSelect:e.onSelect,onStartCreate:e.onStartCreate}),i?c.jsx(V6e,{mode:r,subject:r==="edit"?n:null,providerDefaults:e.providerDefaults,availableProviders:e.availableProviders,handlers:e.handlers,onCancelEditing:e.onCancelEditing},r==="edit"?(n==null?void 0:n.id)??"edit":"create"):c.jsx(z6e,{})]})}function $6e(e){return c.jsxs("div",{className:"flex w-full flex-col items-center gap-4 rounded-lg border border-dashed border-border px-6 py-14 text-center","data-testid":"subagent-empty",children:[c.jsx("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:c.jsx(mh,{className:"size-5","aria-hidden":!0})}),c.jsx("p",{className:"text-sm font-medium text-foreground",children:"No subagents yet"}),c.jsxs(Me,{variant:"default",size:"sm",onClick:e.onStartCreate,children:[c.jsx(ro,{className:"mr-1.5 size-4"})," Create subagent"]})]})}function z6e(){return c.jsx("div",{className:"hidden flex-1 items-center justify-center rounded-lg border border-dashed border-border px-6 py-12 text-center text-sm text-muted-foreground md:flex",children:"Select a subagent to edit, or create a new one."})}function B6e(e){const t=e.editing.kind==="edit"?e.editing.id:null;return c.jsxs("aside",{className:"flex w-full flex-col gap-2 md:w-64 md:flex-shrink-0",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c.jsxs("span",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",style:{fontVariantNumeric:"tabular-nums"},children:[e.subagents.length," ",e.subagents.length===1?"agent":"agents"]}),c.jsxs(Me,{variant:"ghost",size:"sm",onClick:e.onStartCreate,"data-testid":"subagent-create",children:[c.jsx(ro,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Create subagent"})]})]}),c.jsx("ul",{className:"flex flex-col gap-0.5",children:e.subagents.map(n=>{var i;const r=((i=n.description)==null?void 0:i.trim())||(n.contextScope==="previous-assistant-reply"?"Last reply":"Full transcript");return c.jsx("li",{children:c.jsxs("button",{type:"button","data-testid":`subagent-row:${n.id}`,onClick:()=>e.onSelect(n.id),className:fe("flex w-full flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-muted",t===n.id&&"bg-muted"),children:[c.jsxs("span",{className:"flex w-full items-center justify-between gap-2",children:[c.jsx("span",{className:"truncate text-sm font-medium text-foreground",children:n.name}),c.jsx(F6e,{provider:n.provider})]}),c.jsx("span",{className:"w-full truncate text-xs text-muted-foreground",children:r})]})},n.id)})})]})}function F6e({provider:e}){const t=$c(e).label;return c.jsxs("span",{className:"inline-flex items-center gap-1 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:[c.jsx(mh,{className:"size-3"})," ",t]})}const U6e=[{value:"claude",label:"Claude"},{value:"codex",label:"Codex"}],H6e=[{value:"previous-assistant-reply",label:"Last reply"},{value:"full-transcript",label:"Full transcript"}],W6e=[{value:"auto",label:"Auto"},{value:"manual",label:"Manual"}];function V6e(e){var L;const t=_.useMemo(()=>e.mode==="edit"&&e.subject?Z6e(e.subject):yU("claude",e.providerDefaults,e.availableProviders),[e.mode,e.subject,e.providerDefaults,e.availableProviders]),n=_o(I=>I.resetForm),r=_o(I=>I.form),i=_o(I=>I.patchFormDraft),s=_o(I=>I.setFormDraft),o=_o(I=>I.setFormError),a=_o(I=>I.setFormPending),l=_o(I=>I.setFormConfirmDelete);_.useEffect(()=>{n(t)},[]);const{draft:d,error:h,pending:p,confirmDelete:m}=r,v=(h==null?void 0:h.field)==="name"?h.message:null,b=(h==null?void 0:h.field)==="general"?h.message:null,x=eFe(d,t),S=d.name.trim().length>0&&(e.mode==="create"||x);function C(I){i(I),(h==null?void 0:h.field)==="name"&&"name"in I&&o(null)}function k(I){if(I===d.provider)return;const $=yU(I,e.providerDefaults,e.availableProviders);s({...d,provider:I,model:$.model,modelOptions:$.modelOptions})}function w(I){if(d.provider!=="claude")return;const $=i2(d.modelOptions)?d.modelOptions:wo;i({modelOptions:{...wo,...$,reasoningEffort:I}})}function N(I){if(d.provider!=="claude")return;const $=i2(d.modelOptions)?d.modelOptions:wo;i({modelOptions:{...wo,...$,contextWindow:I}})}function A(I){if(d.provider!=="codex")return;const $=xU(d.modelOptions)?d.modelOptions:hd;i({modelOptions:{...hd,...$,reasoningEffort:I}})}async function T(){if(!(!S||p)){a(!0),o(null);try{const I=e.mode==="create"?await e.handlers.onCreate(d):await e.handlers.onUpdate(e.subject.id,d);I.ok||o(nFe(I.error))}finally{a(!1)}}}async function M(){if(!(e.mode!=="edit"||!e.subject)){if(!m){l(!0);return}a(!0);try{await e.handlers.onDelete(e.subject.id)}finally{a(!1),l(!1)}}}const j=d.provider==="claude"?{...wo,...i2(d.modelOptions)?d.modelOptions:{}}:null,P=d.provider==="codex"?{...hd,...xU(d.modelOptions)?d.modelOptions:{}}:null,D=e.availableProviders.find(I=>I.id===d.provider)??$c(d.provider);return c.jsxs("section",{className:"flex w-full flex-1 flex-col gap-4",children:[c.jsxs("header",{className:"flex flex-col gap-1",children:[c.jsx("h3",{className:"text-base font-medium text-foreground",children:e.mode==="create"?"New subagent":d.name||"Subagent"}),c.jsxs("p",{className:"text-sm text-muted-foreground",children:["Mention with ",c.jsxs("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:["@agent/",d.name||"<name>"]})," in chat."]})]}),b?c.jsx("div",{className:"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-sm text-destructive",children:b}):null,c.jsx(_s,{label:"Name",hint:v,hintTone:v?"destructive":"muted",children:c.jsx(dn,{"data-testid":"subagent-form-name",value:d.name,onChange:I=>C({name:rFe(I.target.value)}),maxLength:mee,placeholder:"reviewer",className:"font-mono"})}),c.jsx(_s,{label:"Description",hint:"Optional. Shown next to the name.",children:c.jsx(dn,{"data-testid":"subagent-form-description",value:d.description??"",onChange:I=>C({description:I.target.value}),placeholder:"Reviews diffs against the repo style"})}),c.jsx(_s,{label:"Provider",children:c.jsx(Es,{value:d.provider,onValueChange:I=>{UW(I)&&k(I)},options:U6e,size:"sm"})}),c.jsx(_s,{label:"Model",children:c.jsxs(Qo,{value:d.model,onValueChange:I=>C({model:I}),children:[c.jsx(Co,{"data-testid":"subagent-form-model",className:"w-full md:w-72",children:c.jsx(ja,{placeholder:"Select a model"})}),c.jsx(ko,{children:D.models.map(I=>c.jsx(ri,{value:I.id,children:I.label},I.id))})]})}),j?c.jsxs(c.Fragment,{children:[c.jsx(_s,{label:"Reasoning effort",children:c.jsx(Es,{value:j.reasoningEffort,onValueChange:I=>{sw(I)&&w(I)},options:Pb.map(I=>({value:I.id,label:I.label})),size:"sm"})}),c.jsx(_s,{label:"Context window",children:c.jsx(Es,{value:j.contextWindow,onValueChange:I=>{DW(I)&&N(I)},options:Mf.map(I=>({value:I.id,label:I.label})),size:"sm"})})]}):null,P?c.jsx(_s,{label:"Reasoning effort",children:c.jsx(Es,{value:P.reasoningEffort,onValueChange:I=>{ow(I)&&A(I)},options:iw.map(I=>({value:I.id,label:I.label})),size:"sm"})}):null,c.jsx(_s,{label:"Context scope",children:c.jsx(Es,{value:d.contextScope,onValueChange:I=>{Fge(I)&&C({contextScope:I})},options:H6e,size:"sm"})}),c.jsx(_s,{label:"Trigger",hint:"Auto: the main agent may delegate on its own. Manual: only runs when you @-mention it.",children:c.jsx(Es,{value:d.triggerMode??"auto",onValueChange:I=>{Uge(I)&&C({triggerMode:I})},options:W6e,size:"sm"})}),c.jsx(_s,{label:"System prompt",hint:"What this persona should focus on. Plain text.",children:c.jsx(Al,{"data-testid":"subagent-form-system-prompt",value:d.systemPrompt,onChange:I=>C({systemPrompt:I.target.value}),placeholder:"You are a careful code reviewer...",rows:6,className:"min-h-32"})}),c.jsx(_s,{label:"Max turns",hint:"Optional. Caps the agentic turns per run (like Claude Code's per-agent maxTurns). Empty = unbounded. Claude SDK runs stop gracefully at the limit; PTY/Codex runs are aborted.",children:c.jsx(dn,{"data-testid":"subagent-form-max-turns",type:"number",min:1,step:1,value:((L=d.maxTurns)==null?void 0:L.toString())??"",onChange:I=>{const $=Number.parseInt(I.target.value,10);C({maxTurns:Number.isInteger($)&&$>0?$:void 0})},placeholder:"unbounded",className:"w-36"})}),d.provider==="claude"?c.jsxs(c.Fragment,{children:[c.jsx(_s,{label:"Working directory",hint:"Optional. Relative to the parent chat cwd. Restricts the subagent's filesystem access to this subtree.",children:c.jsx(dn,{"data-testid":"subagent-form-working-dir",value:d.workingDir??"",onChange:I=>{const $=I.target.value;C({workingDir:$.length>0?$:void 0})},placeholder:"docs"})}),c.jsx(_s,{label:"Allowed paths",hint:"Optional. Newline-separated, relative to the parent chat cwd. When set, file tools can only read/write inside these roots.",children:c.jsx(Al,{"data-testid":"subagent-form-allowed-paths",value:(d.allowedPaths??[]).join(`
|
|
2770
2770
|
`),onChange:I=>{const $=I.target.value.split(/\r?\n/).map(H=>H.trim()).filter(H=>H.length>0);C({allowedPaths:$.length>0?$:void 0})},placeholder:`docs
|
|
2771
2771
|
wiki`,rows:3})})]}):null,c.jsxs("footer",{className:"flex flex-wrap items-center justify-end gap-2 pt-2",children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:e.onCancelEditing,children:"Cancel"}),e.mode==="edit"?c.jsx(Me,{variant:"destructive",size:"sm","data-testid":"subagent-form-delete",disabled:p,onClick:M,children:m?"Confirm delete":"Delete"}):null,c.jsx(Me,{variant:"default",size:"sm","data-testid":"subagent-form-save",disabled:!S||p,onClick:T,children:p?"Saving…":"Save"})]})]})}function _s(e){return c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:e.label}),e.children,e.hint?c.jsx("span",{className:fe("text-xs",e.hintTone==="destructive"?"text-destructive":"text-muted-foreground"),children:e.hint}):null]})}const K6e=[],G6e={claude:{model:$c("claude").defaultModel,modelOptions:{...wo},planMode:!1},codex:{model:$c("codex").defaultModel,modelOptions:{...hd},planMode:!1},openrouter:{model:zC,modelOptions:{},planMode:!1}};function q6e(e){const t=jr(p=>{var m;return((m=p.settings)==null?void 0:m.subagents)??K6e}),n=jr(p=>{var m;return((m=p.settings)==null?void 0:m.providerDefaults)??G6e}),r=jr(gy),i=_.useMemo(()=>rI([...Lb],r),[r]),s=_o(p=>p.editing),o=_o(p=>p.setEditing),a=_.useMemo(()=>({onCreate:async p=>{const m=await e.state.socket.command({type:"subagent.create",input:p});return m.ok&&o({kind:"edit",id:m.subagent.id}),m},onUpdate:async(p,m)=>await e.state.socket.command({type:"subagent.update",id:p,patch:{...m,maxTurns:m.maxTurns??null}}),onDelete:async p=>{await e.state.socket.command({type:"subagent.delete",id:p}),o({kind:"list"})}}),[e.state.socket,o]),l=_.useCallback(p=>{o({kind:"edit",id:p})},[o]),d=_.useCallback(()=>{o({kind:"create"})},[o]),h=_.useCallback(()=>{o({kind:"list"})},[o]);return c.jsxs("div",{className:"flex flex-col gap-6 px-6 py-6",children:[c.jsx(X6e,{subagents:t,handleWriteAppSettings:e.state.handleWriteAppSettings}),c.jsx(D6e,{subagents:t,providerDefaults:n,availableProviders:i,editing:s,onSelect:l,onStartCreate:d,onCancelEditing:h,handlers:a})]})}const s2="__none__",o2=30,a2=86400,Y6e=600;function X6e(e){const t=jr(h=>{var p;return(p=h.settings)==null?void 0:p.subagentRuntime}),n=t?Math.round(t.runTimeoutMs/1e3):Y6e,r=(t==null?void 0:t.defaultLoopSubagentId)??null,i=_o(h=>h.timeoutDraft),s=_o(h=>h.setTimeoutDraft),o=_o(h=>h.loopError),a=_o(h=>h.setLoopError);_.useEffect(()=>{s(String(n))},[n]);function l(){const h=Number(i);if(!Number.isInteger(h)||h<o2||h>a2){s(String(n)),a(`Timeout must be a whole number of seconds between ${o2} and ${a2}.`);return}a(null),h!==n&&e.handleWriteAppSettings({subagentRuntime:{runTimeoutMs:h*1e3}}).catch(p=>a(p instanceof Error?p.message:"Unable to save subagent runtime settings."))}function d(h){a(null);const p=h===s2?null:h;e.handleWriteAppSettings({subagentRuntime:{defaultLoopSubagentId:p}}).catch(m=>a(m instanceof Error?m.message:"Unable to save default loop subagent."))}return c.jsxs("section",{className:"flex flex-col gap-4 rounded-lg border border-border/60 bg-card/40 p-4",children:[c.jsxs("header",{className:"flex flex-col gap-1",children:[c.jsx("h3",{className:"text-sm font-medium text-foreground",children:"Loop & runtime"}),c.jsxs("p",{className:"text-xs text-muted-foreground",children:["Applies to background subagent runs and the autonomous ",c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono",children:"/loop"}),"."]})]}),o?c.jsx("div",{className:"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive",children:o}):null,c.jsx(_s,{label:"Stall timeout (seconds)",hint:"A subagent run is aborted only after this long with no streamed activity — not a total wall-clock cap. A steadily-working run is never killed.",children:c.jsx(dn,{type:"number",inputMode:"numeric",min:o2,max:a2,value:i,onChange:h=>s(h.target.value),onBlur:l,onKeyDown:h=>{h.key==="Enter"&&(l(),h.currentTarget.blur())},className:"w-full md:w-48 tabular-nums"})}),c.jsx(_s,{label:"Default loop subagent",hint:"The subagent setup_loop delegates each chunk to when no explicit id is given.",children:c.jsxs(Qo,{value:r??s2,onValueChange:d,children:[c.jsx(Co,{className:"w-full md:w-72",children:c.jsx(ja,{placeholder:"None"})}),c.jsxs(ko,{children:[c.jsx(ri,{value:s2,children:"None (require explicit id)"}),e.subagents.map(h=>c.jsx(ri,{value:h.id,children:h.name},h.id))]})]})})]})}const mee=64,J6e=new Set(["EMPTY_NAME","INVALID_CHAR","RESERVED_NAME","DUPLICATE_NAME","TOO_LONG"]);function yU(e,t,n){var o,a;if(e==="claude"){const l=t==null?void 0:t.claude,d=(l==null?void 0:l.model)??((o=n==null?void 0:n.find(p=>p.id==="claude"))==null?void 0:o.defaultModel)??$c("claude").defaultModel,h=(l==null?void 0:l.modelOptions)??{...wo};return{name:"",provider:e,model:d,modelOptions:{...h},systemPrompt:"",contextScope:"previous-assistant-reply",triggerMode:"auto"}}const r=t==null?void 0:t.codex,i=(r==null?void 0:r.model)??((a=n==null?void 0:n.find(l=>l.id==="codex"))==null?void 0:a.defaultModel)??$c("codex").defaultModel,s=(r==null?void 0:r.modelOptions)??{...hd};return{name:"",provider:e,model:i,modelOptions:{...s},systemPrompt:"",contextScope:"previous-assistant-reply",triggerMode:"auto"}}function Z6e(e){return{name:e.name,description:e.description,provider:e.provider,model:e.model,modelOptions:e.modelOptions,systemPrompt:e.systemPrompt,contextScope:e.contextScope,triggerMode:e.triggerMode,workingDir:e.workingDir,allowedPaths:e.allowedPaths,maxTurns:e.maxTurns}}const Q6e=(e,t)=>{if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0};function eFe(e,t){return e.name!==t.name||(e.description??"")!==(t.description??"")||e.provider!==t.provider||e.model!==t.model||e.systemPrompt!==t.systemPrompt||e.contextScope!==t.contextScope||(e.triggerMode??"auto")!==(t.triggerMode??"auto")||(e.workingDir??"")!==(t.workingDir??"")||!Q6e(e.allowedPaths,t.allowedPaths)||(e.maxTurns??null)!==(t.maxTurns??null)?!0:!tFe(e.modelOptions,t.modelOptions)}function tFe(e,t){if(!Hi(e)||!Hi(t))return!1;const n=new Set([...Object.keys(e),...Object.keys(t)]);for(const r of n)if(e[r]!==t[r])return!1;return!0}function nFe(e){return J6e.has(e.code)?{field:"name",message:e.message}:{field:"general",message:e.message}}function rFe(e){return e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").slice(0,mee)}const _U=new Set;function SU(e){var t;return{name:(e==null?void 0:e.name)??"",transport:(e==null?void 0:e.transport)??"stdio",command:(e==null?void 0:e.transport)==="stdio"?e.command:"",argsText:(e==null?void 0:e.transport)==="stdio"?e.args.join(`
|
|
2772
2772
|
`):"",envText:(e==null?void 0:e.transport)==="stdio"?Object.entries(e.env).map(([n,r])=>`${n}=${r}`).join(`
|
|
@@ -2774,4 +2774,4 @@ wiki`,rows:3})})]}):null,c.jsxs("footer",{className:"flex flex-wrap items-center
|
|
|
2774
2774
|
`):"",error:null,submitting:!1,oauthEnabled:e!==null&&e.transport!=="stdio"?((t=e.oauth)==null?void 0:t.enabled)??!1:!1,authFlowUrl:null,callbackInput:"",oauthError:null,authenticating:!1,completing:!1}}const Or=tr()(e=>({editing:{kind:"list"},testingServerIds:_U,editorForm:SU(null),setEditing:t=>e({editing:t}),setServerTesting:(t,n)=>e(r=>{const i=new Set(r.testingServerIds);return n?i.add(t):i.delete(t),{testingServerIds:i.size===0?_U:i}}),resetEditorForm:t=>e({editorForm:SU(t)}),setEditorName:t=>e(n=>({editorForm:{...n.editorForm,name:t}})),setEditorTransport:t=>e(n=>({editorForm:{...n.editorForm,transport:t}})),setEditorCommand:t=>e(n=>({editorForm:{...n.editorForm,command:t}})),setEditorArgsText:t=>e(n=>({editorForm:{...n.editorForm,argsText:t}})),setEditorEnvText:t=>e(n=>({editorForm:{...n.editorForm,envText:t}})),setEditorCwd:t=>e(n=>({editorForm:{...n.editorForm,cwd:t}})),setEditorUrl:t=>e(n=>({editorForm:{...n.editorForm,url:t}})),setEditorHeadersText:t=>e(n=>({editorForm:{...n.editorForm,headersText:t}})),setEditorError:t=>e(n=>({editorForm:{...n.editorForm,error:t}})),setEditorSubmitting:t=>e(n=>({editorForm:{...n.editorForm,submitting:t}})),setEditorOauthEnabled:t=>e(n=>({editorForm:{...n.editorForm,oauthEnabled:t}})),setEditorAuthFlowUrl:t=>e(n=>({editorForm:{...n.editorForm,authFlowUrl:t}})),setEditorCallbackInput:t=>e(n=>({editorForm:{...n.editorForm,callbackInput:t}})),setEditorOauthError:t=>e(n=>({editorForm:{...n.editorForm,oauthError:t}})),setEditorAuthenticating:t=>e(n=>({editorForm:{...n.editorForm,authenticating:t}})),setEditorCompleting:t=>e(n=>({editorForm:{...n.editorForm,completing:t}}))})),iFe=new Set(["stdio","http","sse","ws"]);function sFe(e){return iFe.has(e)}function oFe(e){return e.editing.kind!=="list"?c.jsx(uFe,{initial:e.editing.kind==="edit"?e.servers.find(t=>e.editing.kind==="edit"&&t.id===e.editing.id)??null:null,existingNames:e.servers.map(t=>({id:t.id,name:t.name})),onCancel:e.onCancelEditing,handlers:e.handlers}):e.servers.length===0?c.jsxs("div",{className:"flex flex-col items-center justify-center px-6 py-16 text-center",children:[c.jsx(k7,{className:"mb-4 h-10 w-10 text-muted-foreground","aria-hidden":!0}),c.jsx("h2",{className:"text-lg font-medium",children:"No custom MCP servers"}),c.jsx("p",{className:"mt-2 max-w-md text-sm text-muted-foreground",children:"Install MCP servers to extend the model's tool surface. Supports stdio, http, sse, and ws transports."}),c.jsxs(Me,{className:"mt-6",onClick:e.onStartCreate,children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add server"]})]}):c.jsxs("div",{className:"flex flex-col gap-3 px-6 py-6",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx("h2",{className:"text-base font-medium",children:"Custom MCP servers"}),c.jsxs(Me,{size:"sm",onClick:e.onStartCreate,children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add server"]})]}),c.jsx("ul",{className:"flex flex-col divide-y rounded-md border",children:e.servers.map(t=>c.jsx(aFe,{server:t,handlers:e.handlers,onEdit:()=>e.onSelect(t.id)},t.id))})]})}function aFe({server:e,handlers:t,onEdit:n}){const r=Or(o=>o.testingServerIds.has(e.id)),i=Or(o=>o.setServerTesting),s=_.useCallback(async()=>{i(e.id,!0);try{await t.onTest(e.id)}finally{i(e.id,!1)}},[t,e.id,i]);return c.jsxs("li",{className:"flex items-center gap-3 px-4 py-3",children:[c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"font-medium",children:e.name}),c.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.jsx(lFe,{transport:e.transport}),c.jsx("span",{className:"ml-2",children:e.transport==="stdio"?e.command:e.url})]})]}),c.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[c.jsx(cFe,{result:e.lastTest,pending:r}),e.transport!=="stdio"&&c.jsx(gee,{oauth:e.oauth}),c.jsxs("label",{className:"inline-flex cursor-pointer items-center gap-1 text-xs text-muted-foreground",children:[c.jsx("input",{type:"checkbox",checked:e.enabled,onChange:o=>{t.onSetEnabled(e.id,o.target.checked)},"aria-label":"Enabled"}),c.jsx("span",{children:"On"})]}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>{s()},title:"Test connection",children:c.jsx(sj,{className:fe("h-4 w-4",r&&"animate-spin")})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:n,title:"Edit",children:c.jsx(Rd,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>{window.confirm(`Delete MCP server "${e.name}"?`)&&t.onDelete(e.id)},title:"Delete",children:c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function lFe({transport:e}){return c.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase",children:e})}function cFe({result:e,pending:t}){if(t||e.status==="pending")return c.jsx("span",{className:"text-xs text-muted-foreground",children:"Testing…"});switch(e.status){case"ok":return c.jsxs("span",{className:"text-xs text-green-600",children:["OK · ",e.toolCount," tools"]});case"error":return c.jsx("span",{className:"text-xs text-red-600",title:e.message,children:"Failed"});case"untested":default:return c.jsx("span",{className:"text-xs text-muted-foreground",children:"Untested"})}}function gee({oauth:e}){if(!(e!=null&&e.enabled))return null;switch(e.status){case"authenticated":return c.jsx("span",{className:"text-xs text-green-600",children:"OAuth ✓"});case"error":return c.jsx("span",{className:"text-xs text-red-600",title:e.errorMessage,children:"OAuth error"});default:return c.jsx("span",{className:"text-xs text-muted-foreground",children:"OAuth: unauth"})}}function uFe({initial:e,existingNames:t,onCancel:n,handlers:r}){const i=Or(Q=>Q.editorForm),s=Or(Q=>Q.resetEditorForm),o=Or(Q=>Q.setEditorName),a=Or(Q=>Q.setEditorTransport),l=Or(Q=>Q.setEditorCommand),d=Or(Q=>Q.setEditorArgsText),h=Or(Q=>Q.setEditorEnvText),p=Or(Q=>Q.setEditorCwd),m=Or(Q=>Q.setEditorUrl),v=Or(Q=>Q.setEditorHeadersText),b=Or(Q=>Q.setEditorError),x=Or(Q=>Q.setEditorSubmitting),S=Or(Q=>Q.setEditorOauthEnabled),C=Or(Q=>Q.setEditorAuthFlowUrl),k=Or(Q=>Q.setEditorCallbackInput),w=Or(Q=>Q.setEditorOauthError),N=Or(Q=>Q.setEditorAuthenticating),A=Or(Q=>Q.setEditorCompleting),{name:T,transport:M,command:j,argsText:P,envText:D,cwd:L,url:I,headersText:$,error:H,submitting:z,oauthEnabled:F,authFlowUrl:K,callbackInput:W,oauthError:V,authenticating:X,completing:G}=i,te=_.useRef(e);_.useEffect(()=>{s(te.current)},[s]);const oe=e!==null&&e.transport!=="stdio"?e.oauth:void 0,ce=_.useCallback(async Q=>{S(Q),Q||(C(null),k(""),w(null)),e&&await r.onUpdate(e.id,{oauth:{...oe??{status:"unauthenticated"},enabled:Q}})},[e,oe,r,S,C,k,w]),de=_.useCallback(async()=>{if(e){N(!0),w(null);try{const Q=await r.onStartMcpOAuth(e.id);Q.ok&&Q.authorizationUrl?C(Q.authorizationUrl):Q.ok&&Q.alreadyAuthenticated?C(null):w(Q.error??"Failed to start OAuth flow")}finally{N(!1)}}},[e,r,N,w,C]),ee=_.useCallback(async()=>{if(e){A(!0),w(null);try{const Q=await r.onCompleteMcpOAuth(e.id,W);Q.ok?(C(null),k("")):w(Q.error??"Failed to complete OAuth flow")}finally{A(!1)}}},[e,W,r,A,w,C,k]),ne=_.useMemo(()=>T.length===0?null:/^[a-zA-Z][a-zA-Z0-9_-]{0,31}$/.test(T)?T==="kanna"?"'kanna' is reserved.":t.find(ke=>ke.name===T&&ke.id!==(e==null?void 0:e.id))?"Name already taken.":null:"Name must start with a letter and contain only letters, digits, '_' or '-' (max 32 chars).",[T,t,e==null?void 0:e.id]),ie=_.useCallback(async()=>{if(!ne){x(!0),b(null);try{const Q=P.split(`
|
|
2775
2775
|
`).map(Ae=>Ae.trim()).filter(Ae=>Ae.length>0),ke={};for(const Ae of D.split(`
|
|
2776
2776
|
`)){const Xe=Ae.indexOf("=");Xe>0&&(ke[Ae.slice(0,Xe).trim()]=Ae.slice(Xe+1))}const we={};for(const Ae of $.split(`
|
|
2777
|
-
`)){const Xe=Ae.indexOf(":");Xe>0&&(we[Ae.slice(0,Xe).trim()]=Ae.slice(Xe+1).trim())}if(e){const Ae=M==="stdio"?{name:T,transport:M,command:j,args:Q,env:ke,cwd:L||void 0}:{name:T,transport:M,url:I,headers:we};await r.onUpdate(e.id,Ae)}else{const Ae=M==="stdio"?{name:T,transport:"stdio",command:j,args:Q,env:ke,cwd:L||void 0}:{name:T,transport:M,url:I,headers:we};await r.onCreate(Ae)}n()}catch(Q){b(Q instanceof Error?Q.message:String(Q))}finally{x(!1)}}},[P,j,L,D,r,$,e,T,ne,n,M,I,x,b]);let ae;return z?ae="Saving…":e?ae="Save changes":ae="Add server",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6 max-w-2xl",children:[c.jsx("h2",{className:"text-base font-medium",children:e?"Edit MCP server":"Add MCP server"}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Name"}),c.jsx(dn,{value:T,onChange:Q=>o(Q.target.value),placeholder:"fs"}),ne&&c.jsx("p",{className:"text-xs text-red-600",children:ne})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Transport"}),c.jsxs(Qo,{value:M,onValueChange:Q=>{sFe(Q)&&a(Q)},children:[c.jsx(Co,{children:c.jsx(ja,{})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"stdio",children:"stdio (spawn local command)"}),c.jsx(ri,{value:"http",children:"http (Streamable HTTP)"}),c.jsx(ri,{value:"sse",children:"sse (Server-Sent Events)"}),c.jsx(ri,{value:"ws",children:"ws (WebSocket)"})]})]})]}),M==="stdio"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Command"}),c.jsx(dn,{value:j,onChange:Q=>l(Q.target.value),placeholder:"/usr/local/bin/mcp-filesystem"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Args (one per line)"}),c.jsx(Al,{value:P,onChange:Q=>d(Q.target.value),rows:3,className:"font-mono text-sm"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Env (KEY=value, one per line)"}),c.jsx(Al,{value:D,onChange:Q=>h(Q.target.value),rows:3,className:"font-mono text-sm"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"cwd (optional)"}),c.jsx(dn,{value:L,onChange:Q=>p(Q.target.value),placeholder:"/optional/working/dir"})]})]}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"URL"}),c.jsx(dn,{value:I,onChange:Q=>m(Q.target.value),placeholder:M==="ws"?"wss://example.com/mcp":"https://example.com/mcp"})]}),M==="ws"?c.jsx("p",{className:"text-xs text-muted-foreground",children:"Headers are not supported on the ws transport."}):c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Headers (Key: value, one per line)"}),c.jsx(Al,{value:$,onChange:Q=>v(Q.target.value),rows:3,className:"font-mono text-sm",disabled:F}),F&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Authorization header is managed by OAuth when enabled."})]}),(M==="http"||M==="sse")&&c.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(y7,{className:"h-4 w-4 text-muted-foreground","aria-hidden":!0}),c.jsx("span",{className:"text-xs font-medium",children:"OAuth 2.1"}),c.jsxs("label",{className:"ml-auto flex cursor-pointer items-center gap-1 text-xs text-muted-foreground",children:[c.jsx("input",{type:"checkbox",checked:F,onChange:Q=>{ce(Q.target.checked)},"aria-label":"Enable OAuth"}),c.jsx("span",{children:"Enable"})]})]}),F&&!e&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Save the server first, then authenticate."}),F&&e&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(gee,{oauth:oe}),(oe==null?void 0:oe.status)==="authenticated"&&c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>{de()},disabled:X,children:"Re-authenticate"})]}),((oe==null?void 0:oe.status)!=="authenticated"||K)&&(K?c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsxs("a",{href:K,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1 text-xs text-blue-600 underline",children:["Open authorization URL",c.jsx(nj,{className:"h-3 w-3"})]}),c.jsx("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(K)},className:"ml-1 text-muted-foreground hover:text-foreground",title:"Copy URL","aria-label":"Copy authorization URL",children:c.jsx(Ba,{className:"h-3 w-3"})})]}),c.jsxs("div",{className:"grid gap-1",children:[c.jsx("span",{className:"text-xs text-muted-foreground",children:"After authorizing, paste the callback URL here:"}),c.jsx(dn,{value:W,onChange:Q=>k(Q.target.value),placeholder:"http://localhost:…/callback?code=…",className:"font-mono text-xs"})]}),c.jsx(Me,{variant:"outline",size:"sm",className:"w-fit",onClick:()=>{ee()},disabled:G||W.length===0,children:G?"Completing…":"Complete"})]}):c.jsx(Me,{variant:"outline",size:"sm",className:"w-fit",onClick:()=>{de()},disabled:X,children:X?"Starting…":"Authenticate"})),V&&c.jsx("p",{className:"text-xs text-red-600",children:V})]})]})]}),H&&c.jsx("p",{className:"text-xs text-red-600",children:H}),c.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[c.jsx(Me,{variant:"ghost",onClick:n,disabled:z,children:"Cancel"}),c.jsx(Me,{onClick:()=>{ie()},disabled:z||!!ne||T.length===0,children:ae})]})]})}function dFe(e){const t=jr(oMe),n=Or(s=>s.editing),r=Or(s=>s.setEditing),i=_.useMemo(()=>({onCreate:async s=>{const o={customMcpServers:{create:s}};await e.state.handleWriteAppSettings(o)},onUpdate:async(s,o)=>{const a={customMcpServers:{update:{id:s,patch:o}}};await e.state.handleWriteAppSettings(a)},onDelete:async s=>{const o={customMcpServers:{delete:{id:s}}};await e.state.handleWriteAppSettings(o),r({kind:"list"})},onSetEnabled:async(s,o)=>{const a={customMcpServers:{setEnabled:{id:s,enabled:o}}};await e.state.handleWriteAppSettings(a)},onTest:async s=>{await e.state.handleTestMcpServer(s)},onStartMcpOAuth:async s=>e.state.handleStartMcpOAuth(s),onCompleteMcpOAuth:async(s,o)=>e.state.handleCompleteMcpOAuth(s,o)}),[e.state,r]);return c.jsx(oFe,{servers:t,editing:n,onSelect:s=>r({kind:"edit",id:s}),onStartCreate:()=>r({kind:"create"}),onCancelEditing:()=>r({kind:"list"}),handlers:i})}function wU(e,t,n,r){return{id:e,label:t,modelProvider:n,supportsEffort:r,submitting:!1,error:null}}const fl=tr()(e=>({editing:{kind:"list"},editorForm:wU("","","claude",!1),setEditing:t=>e({editing:t}),resetEditorForm:(t,n,r,i)=>e({editorForm:wU(t,n,r,i)}),setEditorId:t=>e(n=>({editorForm:{...n.editorForm,id:t}})),setEditorLabel:t=>e(n=>({editorForm:{...n.editorForm,label:t}})),setEditorModelProvider:t=>e(n=>({editorForm:{...n.editorForm,modelProvider:t}})),setEditorSupportsEffort:t=>e(n=>({editorForm:{...n.editorForm,supportsEffort:t}})),setEditorSubmitting:t=>e(n=>({editorForm:{...n.editorForm,submitting:t}})),setEditorError:t=>e(n=>({editorForm:{...n.editorForm,error:t}}))})),fFe=new Set(["claude","codex"]);function hFe(e){return fFe.has(e)}const CU={claude:"Claude",codex:"Codex"};function pFe({models:e,handlers:t}){const n=fl(o=>o.editing),r=fl(o=>o.setEditing),i=fl(o=>o.resetEditorForm);function s(o){if(o.kind==="create")i("","",o.provider,!1);else if(o.kind==="edit"){const a=e.find(l=>l.id===o.id)??null;a&&i(a.id,a.label,a.provider,a.supportsEffort??!1)}r(o)}if(n.kind!=="list"){const o=n.kind==="edit"?e.find(a=>a.id===n.id)??null:null;return c.jsx(gFe,{initial:o,existing:e.map(a=>({id:a.id,provider:a.provider})),handlers:t,onDone:()=>r({kind:"list"})})}return c.jsx("div",{className:"flex flex-col gap-6 px-6 py-6",children:["claude","codex"].map(o=>{const a=e.filter(l=>l.provider===o);return c.jsxs("div",{className:"flex flex-col gap-3",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("h2",{className:"text-base font-medium",children:[CU[o]," models"]}),c.jsxs(Me,{size:"sm",onClick:()=>s({kind:"create",provider:o}),children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add model"]})]}),a.length===0?c.jsxs("div",{className:"flex flex-col items-center justify-center rounded-md border border-dashed px-6 py-10 text-center",children:[c.jsx(p7,{className:"mb-3 h-8 w-8 text-muted-foreground","aria-hidden":!0}),c.jsxs("p",{className:"text-sm text-muted-foreground",children:["No ",CU[o]," models configured."]})]}):c.jsx("ul",{className:"flex flex-col divide-y rounded-md border",children:a.map(l=>c.jsx(mFe,{model:l,onEdit:()=>s({kind:"edit",id:l.id}),onDelete:()=>{window.confirm(`Delete model "${l.label}"?`)&&t.onDelete(l.id)}},l.id))})]},o)})})}function mFe({model:e,onEdit:t,onDelete:n}){return c.jsxs("li",{className:"flex items-center gap-3 px-4 py-3",children:[c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"font-medium",children:e.label}),c.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:e.id})]}),c.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[e.supportsEffort&&c.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase",children:"effort"}),e.supportsMaxReasoningEffort&&c.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase",children:"max"}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:t,"aria-label":`Edit ${e.label}`,children:c.jsx(Rd,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:n,"aria-label":`Delete ${e.label}`,children:c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function gFe({initial:e,existing:t,handlers:n,onDone:r}){const i=fl(T=>T.editorForm),s=fl(T=>T.setEditorId),o=fl(T=>T.setEditorLabel),a=fl(T=>T.setEditorModelProvider),l=fl(T=>T.setEditorSupportsEffort),d=fl(T=>T.setEditorSubmitting),h=fl(T=>T.setEditorError),{id:p,label:m,modelProvider:v,supportsEffort:b,submitting:x,error:S}=i,C=e!==null,k=_.useMemo(()=>!C&&t.some(T=>T.id===p.trim()&&T.provider===v),[t,p,C,v]),w=p.trim().length>0&&m.trim().length>0&&!k&&!x,N=async()=>{d(!0),h(null);try{C&&e?await n.onUpdate(e.id,{label:m.trim(),supportsEffort:b}):await n.onCreate({id:p.trim(),label:m.trim(),provider:v,supportsEffort:b}),r()}catch(T){h(T instanceof Error?T.message:"Failed to save model")}finally{d(!1)}};let A;return x?A="Saving…":C?A="Save changes":A="Add model",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsx("h2",{className:"text-base font-medium",children:C?"Edit model":"Add model"}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Provider"}),c.jsxs(Qo,{value:v,onValueChange:T=>{hFe(T)&&a(T)},disabled:C,children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"claude",children:"Claude"}),c.jsx(ri,{value:"codex",children:"Codex"})]})]})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Model ID"}),c.jsx(dn,{value:p,onChange:T=>s(T.target.value),placeholder:"claude-opus-4-9",disabled:C,className:"font-mono"}),k&&c.jsx("span",{className:"text-xs text-red-600",children:"A model with this id already exists."})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Label"}),c.jsx(dn,{value:m,onChange:T=>o(T.target.value),placeholder:"Opus 4.9"})]}),c.jsxs("label",{className:"inline-flex cursor-pointer items-center gap-2 text-sm",children:[c.jsx("input",{type:"checkbox",checked:b,onChange:T=>l(T.target.checked)}),c.jsx("span",{children:"Supports reasoning effort"})]}),S&&c.jsx("span",{className:"text-xs text-red-600",children:S}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Me,{onClick:()=>{N()},disabled:!w,children:A}),c.jsx(Me,{variant:"ghost",onClick:r,disabled:x,children:"Cancel"})]})]})}function vFe(e){const t=jr(gy),n=_.useMemo(()=>({onCreate:async r=>{const i={customModels:{create:r}};await e.state.handleWriteAppSettings(i)},onUpdate:async(r,i)=>{const s={customModels:{update:{id:r,patch:i}}};await e.state.handleWriteAppSettings(s)},onDelete:async r=>{const i={customModels:{delete:{id:r}}};await e.state.handleWriteAppSettings(i)}}),[e.state]);return c.jsx(pFe,{models:t,handlers:n})}function kU(e,t){return{shortcut:e,expansion:t,submitting:!1,error:null}}const rd=tr()(e=>({editing:{kind:"list"},editorForm:kU("",""),setEditing:t=>e({editing:t}),resetEditorForm:(t,n)=>e({editorForm:kU(t,n)}),setEditorShortcut:t=>e(n=>({editorForm:{...n.editorForm,shortcut:t}})),setEditorExpansion:t=>e(n=>({editorForm:{...n.editorForm,expansion:t}})),setEditorSubmitting:t=>e(n=>({editorForm:{...n.editorForm,submitting:t}})),setEditorError:t=>e(n=>({editorForm:{...n.editorForm,error:t}}))})),bFe=/^\S{1,32}$/;function xFe({snippets:e,handlers:t}){const n=rd(o=>o.editing),r=rd(o=>o.setEditing),i=rd(o=>o.resetEditorForm);function s(o){if(o.kind==="create")i("","");else if(o.kind==="edit"){const a=e.find(l=>l.id===o.id)??null;a&&i(a.shortcut,a.expansion)}r(o)}if(n.kind!=="list"){const o=n.kind==="edit"?e.find(a=>a.id===n.id)??null:null;return c.jsx(_Fe,{initial:o,existing:e.map(a=>({id:a.id,shortcut:a.shortcut})),handlers:t,onDone:()=>r({kind:"list"})})}return c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("h2",{className:"text-base font-medium",children:"Text snippets"}),c.jsx("p",{className:"max-w-[65ch] text-sm text-muted-foreground",children:"Type a shortcut in the chat composer and press Tab to expand it into the full text. Handy for prompts you send often."})]}),c.jsxs(Me,{size:"sm",onClick:()=>s({kind:"create"}),children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add snippet"]})]}),e.length===0?c.jsxs("div",{className:"flex flex-col items-center justify-center rounded-md border border-dashed px-6 py-10 text-center",children:[c.jsx(T7,{className:"mb-3 h-8 w-8 text-muted-foreground","aria-hidden":!0}),c.jsx("p",{className:"text-sm text-muted-foreground",children:"No snippets yet. Add one to expand a shortcut with Tab."})]}):c.jsx("ul",{className:"flex flex-col divide-y rounded-md border",children:e.map(o=>c.jsx(yFe,{snippet:o,onEdit:()=>s({kind:"edit",id:o.id}),onDelete:()=>{window.confirm(`Delete snippet "${o.shortcut}"?`)&&t.onDelete(o.id)}},o.id))})]})}function yFe({snippet:e,onEdit:t,onDelete:n}){return c.jsxs("li",{className:"flex items-center gap-3 px-4 py-3",children:[c.jsxs("div",{className:"flex min-w-0 flex-col gap-0.5",children:[c.jsx("span",{className:"font-mono text-sm",children:e.shortcut}),c.jsx("span",{className:"truncate text-xs text-muted-foreground",children:e.expansion})]}),c.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:t,"aria-label":`Edit ${e.shortcut}`,children:c.jsx(Rd,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:n,"aria-label":`Delete ${e.shortcut}`,children:c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function _Fe({initial:e,existing:t,handlers:n,onDone:r}){const i=rd(N=>N.editorForm),s=rd(N=>N.setEditorShortcut),o=rd(N=>N.setEditorExpansion),a=rd(N=>N.setEditorSubmitting),l=rd(N=>N.setEditorError),{shortcut:d,expansion:h,submitting:p,error:m}=i,v=e!==null,b=d.trim(),x=bFe.test(b),S=_.useMemo(()=>t.some(N=>N.shortcut===b&&N.id!==(e==null?void 0:e.id)),[t,b,e==null?void 0:e.id]),C=x&&!S&&h.length>0&&!p,k=async()=>{a(!0),l(null);try{v&&e?await n.onUpdate(e.id,{shortcut:b,expansion:h}):await n.onCreate({shortcut:b,expansion:h}),r()}catch(N){l(N instanceof Error?N.message:"Failed to save snippet")}finally{a(!1)}};let w;return p?w="Saving…":v?w="Save changes":w="Add snippet",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsx("h2",{className:"text-base font-medium",children:v?"Edit snippet":"Add snippet"}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Shortcut"}),c.jsx(dn,{value:d,onChange:N=>s(N.target.value),placeholder:"pgm",className:"font-mono",autoFocus:!0}),d.length>0&&!x&&c.jsx("span",{className:"text-xs text-destructive",children:"Shortcut must be 1-32 characters with no spaces."}),S&&c.jsx("span",{className:"text-xs text-destructive",children:"A snippet with this shortcut already exists."})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Expands to"}),c.jsx(Al,{value:h,onChange:N=>o(N.target.value),placeholder:"pull request green then merge",rows:4})]}),m&&c.jsx("span",{className:"text-xs text-destructive",children:m}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Me,{onClick:()=>{k()},disabled:!C,children:w}),c.jsx(Me,{variant:"ghost",onClick:r,disabled:p,children:"Cancel"})]})]})}function SFe(e){const t=jr(MJ),n=_.useMemo(()=>({onCreate:async r=>{const i={textSnippets:{create:r}};await e.state.handleWriteAppSettings(i)},onUpdate:async(r,i)=>{const s={textSnippets:{update:{id:r,patch:i}}};await e.state.handleWriteAppSettings(s)},onDelete:async r=>{const i={textSnippets:{delete:{id:r}}};await e.state.handleWriteAppSettings(i)}}),[e.state]);return c.jsx(xFe,{snippets:t,handlers:n})}function wFe(e){if(!e)return"—";const t=e.trim();if(!t)return"—";const n=t.slice(-4);return`${t.startsWith("sk-ant-")?"sk-ant-":""}…${n}`}const hl=tr()(e=>({addLabel:"",addToken:"",addSubmitting:!1,tokenRowStates:{},setAddLabel:t=>e({addLabel:t}),setAddToken:t=>e({addToken:t}),setAddSubmitting:t=>e({addSubmitting:t}),resetAddForm:()=>e({addLabel:"",addToken:""}),setTokenRowTesting:(t,n)=>e(r=>({tokenRowStates:{...r.tokenRowStates,[t]:{...r.tokenRowStates[t]??{testResult:null,testing:!1},testing:n}}})),setTokenRowTestResult:(t,n)=>e(r=>({tokenRowStates:{...r.tokenRowStates,[t]:{...r.tokenRowStates[t]??{testResult:null,testing:!1},testResult:n}}})),clearTokenRowState:t=>e(n=>{const{[t]:r,...i}=n.tokenRowStates;return{tokenRowStates:i}})}));function CFe(e){if(e<=0)return"reset now";const t=Math.ceil(e/1e3),n=Math.floor(t/60),r=t%60;if(n<60)return`reset in ${n}m ${r.toString().padStart(2,"0")}s`;const i=Math.floor(n/60),s=n%60;return`reset in ${i}h ${s.toString().padStart(2,"00")}m`}function vee(e){if(!Number.isFinite(e))return Fge;const t=Math.round(e);return t<Ob?Ob:t>Db?Db:t}function kFe({entry:e,now:t}){if(e.status==="active")return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-muted-foreground/50","aria-hidden":"true"}),"Active"]});if(e.status==="limited"){const r=e.limitedUntil!==null?CFe(e.limitedUntil-t):null;return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-amber-600 dark:text-amber-400",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-amber-500","aria-hidden":"true"}),"Limited",r!==null&&c.jsxs(c.Fragment,{children:[" ","(",c.jsx("span",{className:"tabular-nums",children:r}),")"]})]})}if(e.status==="disabled")return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground/60",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-muted-foreground/30","aria-hidden":"true"}),"Disabled"]});const n=e.lastErrorMessage??"Unknown error";return c.jsx(Aj,{children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("span",{className:"inline-flex cursor-default items-center gap-1.5 text-xs text-destructive",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-destructive","aria-hidden":"true"}),"Error",c.jsx("span",{className:"sr-only",children:n})]})}),c.jsx(Ms,{"aria-hidden":"true",children:n})]})})}function EFe({entry:e,now:t,isCurrent:n,concurrencyDefault:r,onRemove:i,onToggleDisabled:s,onTest:o,onChangeMaxConcurrent:a}){const l=hl(C=>C.tokenRowStates),d=hl(C=>C.setTokenRowTesting),h=hl(C=>C.setTokenRowTestResult),p=l[e.id],m=(p==null?void 0:p.testResult)??null,v=(p==null?void 0:p.testing)??!1,b=async()=>{d(e.id,!0),h(e.id,null);try{const C=await o(e.token),k=C.ok?"OK":C.error??"Error";h(e.id,k),setTimeout(()=>h(e.id,null),3e3)}catch{h(e.id,"Error"),setTimeout(()=>h(e.id,null),3e3)}finally{d(e.id,!1)}},x=e.status==="disabled",S=e.maxConcurrent??r;return c.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border py-3",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("span",{className:`text-sm font-medium ${x?"text-muted-foreground/60":"text-foreground"}`,children:e.label}),c.jsx("code",{className:"text-xs font-mono text-muted-foreground",children:wFe(e.token)}),n&&c.jsx("span",{className:"inline-flex shrink-0 items-center whitespace-nowrap rounded-full border border-primary/40 bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-primary",children:"In use"})]}),c.jsx("div",{className:"mt-0.5",children:c.jsx(kFe,{entry:e,now:t})})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[c.jsxs("label",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",title:"Maximum concurrent chats sharing this OAuth token. Higher = risks Anthropic rate limits.",children:[c.jsx("span",{children:"Concurrent"}),c.jsx(dn,{type:"number",value:S,onChange:C=>a(e.id,vee(Number(C.target.value))),min:Ob,max:Db,"aria-label":"Max concurrent chats",className:"h-7 w-14 text-xs",disabled:x})]}),m!==null&&c.jsx("span",{className:"text-xs text-muted-foreground",children:m}),c.jsxs("button",{type:"button","aria-label":"Test",onClick:b,disabled:v||x,className:"inline-flex items-center gap-1 rounded px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[c.jsx(Kse,{className:"size-3","aria-hidden":"true"}),"Test"]}),c.jsx(Aj,{children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("button",{type:"button","aria-label":x?"Enable":"Disable",onClick:s,className:"rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[x?c.jsx(Xoe,{className:"size-3.5","aria-hidden":"true"}):c.jsx(qoe,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:x?"Enable":"Disable"})]})}),c.jsx(Ms,{children:x?"Enable":"Disable"})]})}),c.jsxs("button",{type:"button","aria-label":"Remove",onClick:i,className:"rounded p-1 text-muted-foreground transition-colors hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[c.jsx(Jc,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:"Remove"})]})]})]})}function NFe({tokens:e,onWrite:t}){const n=hl(p=>p.addLabel),r=hl(p=>p.addToken),i=hl(p=>p.addSubmitting),s=hl(p=>p.setAddLabel),o=hl(p=>p.setAddToken),a=hl(p=>p.setAddSubmitting),l=hl(p=>p.resetAddForm),d=n.trim().length>0&&r.trim().length>0&&!i,h=async()=>{if(d){a(!0);try{const p={id:crypto.randomUUID(),label:n.trim(),token:r.trim(),status:"active",limitedUntil:null,lastUsedAt:null,lastErrorAt:null,lastErrorMessage:null,addedAt:Date.now()};await t({tokens:[...e,p]}),l()}finally{a(!1)}}};return c.jsx("div",{className:"border-t border-border pt-4",children:c.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end sm:gap-3",children:[c.jsx("div",{className:"flex-1",children:c.jsx(dn,{value:n,onChange:p=>s(p.target.value),placeholder:"e.g. personal",maxLength:64,className:"text-sm","aria-label":"Token label"})}),c.jsx("div",{className:"flex-[2]",children:c.jsx(dn,{value:r,onChange:p=>o(p.target.value),type:"password",placeholder:"sk-ant-...",maxLength:1024,className:"text-sm font-mono","aria-label":"OAuth token"})}),c.jsx("button",{type:"button",onClick:h,disabled:!d,className:"inline-flex shrink-0 items-center rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:"Add token"})]})})}function TFe({tokens:e,concurrencyDefault:t,onWrite:n,onTest:r,now:i}){var p;const s=i??Date.now(),o=((p=e.reduce((m,v)=>v.lastUsedAt!==null&&(m===null||v.lastUsedAt>(m.lastUsedAt??0))?v:m,null))==null?void 0:p.id)??null,a=m=>{n({tokens:e.filter(v=>v.id!==m)})},l=m=>{n({tokens:e.map(v=>v.id===m?{...v,status:v.status==="disabled"?"active":"disabled"}:v)})},d=(m,v)=>{n({tokens:e.map(b=>b.id===m?{...b,maxConcurrent:v}:b)})},h=m=>{n({concurrencyDefault:vee(m)})};return c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center justify-between gap-3 pb-3",children:[c.jsxs("label",{className:"flex flex-col gap-0.5 text-sm",title:"Default concurrent-chat cap applied to any OAuth token whose row does not override it. Sharing across N chats burns Anthropic quota and risks 429s.",children:[c.jsx("span",{className:"font-medium text-foreground",children:"Default concurrency per token"}),c.jsxs("span",{className:"text-xs text-muted-foreground",children:["Cap for tokens without an explicit per-row override. Range ",Ob,"–",Db,"."]})]}),c.jsx(dn,{type:"number",value:t,onChange:m=>h(Number(m.target.value)),min:Ob,max:Db,"aria-label":"Default concurrency per token",className:"h-8 w-16 text-sm"})]}),e.map(m=>c.jsx(EFe,{entry:m,now:s,isCurrent:m.id===o,concurrencyDefault:t,onRemove:()=>a(m.id),onToggleDisabled:()=>l(m.id),onTest:r,onChangeMaxConcurrent:d},m.id)),c.jsx(NFe,{tokens:e,onWrite:n})]})}function bm({children:e,className:t,icon:n,type:r="button",variant:i="outline",...s}){return c.jsxs("button",{type:r,className:fe(dj({variant:i,size:"sm"}),"h-auto gap-1.5 px-3 py-1.5",t),...s,children:[n,c.jsx("span",{children:e})]})}const EU="inline-flex items-center justify-center rounded-lg border border-border bg-background px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted",AFe="inline-flex items-center justify-center rounded-lg bg-foreground px-3 py-1.5 text-sm font-medium text-background transition-colors hover:bg-foreground/90",NU="rounded bg-muted px-1 py-0.5 font-mono text-[12px] text-foreground",TU="text-[11px] font-medium uppercase tracking-wide text-muted-foreground";function RFe(e){const{permissionState:t}=e;if(t==="unsupported")return c.jsx("p",{className:"text-sm text-muted-foreground",children:"Push notifications are not supported in this browser."});if(t==="insecure-context")return c.jsxs("p",{className:"text-sm text-muted-foreground",children:["Push requires HTTPS. Run ",c.jsx("code",{className:NU,children:"kanna --share"})," or open Kanna over a tunnel, then enable on this device."]});if(t==="denied")return c.jsx("p",{className:"text-sm text-muted-foreground",children:"You blocked notifications for this site. Re-enable them in your browser settings, then reload."});if(!(t==="granted"&&e.config.devices.some(i=>i.id===e.currentDeviceId)))return c.jsx("button",{type:"button",onClick:()=>void e.onEnable(),className:AFe,children:"Enable on this device"});const r=new Set(e.config.preferences.mutedProjectPaths);return c.jsxs("div",{className:"flex w-full min-w-0 flex-col gap-5 md:w-[440px]",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-border bg-card/40 px-3 py-1 text-xs font-medium text-foreground",children:[c.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Enabled on this device"]}),c.jsx("button",{type:"button",onClick:()=>void e.onTest(),className:EU,children:"Send test"}),c.jsx("button",{type:"button",onClick:()=>void e.onDisable(),className:EU,children:"Disable"})]}),c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx("div",{className:TU,children:"Devices"}),c.jsx("ul",{className:"flex flex-col gap-1.5",children:e.config.devices.map(i=>c.jsxs("li",{className:"flex items-start justify-between gap-3 rounded-lg border border-border bg-card/40 px-3 py-2",children:[c.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[c.jsx("span",{className:"truncate text-sm font-medium text-foreground",children:i.label}),c.jsx("span",{className:"line-clamp-2 break-all text-[11px] leading-snug text-muted-foreground",children:i.userAgent})]}),!i.isCurrentDevice&&c.jsx("button",{type:"button",onClick:()=>void e.onRemoveDevice(i.id),"aria-label":`Remove ${i.label}`,className:"shrink-0 rounded-md border border-border bg-background px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:"Remove"})]},i.id))})]}),c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx("div",{className:TU,children:"Per-project"}),c.jsx("ul",{className:"flex flex-col",children:e.projects.map(i=>c.jsx("li",{children:c.jsxs("label",{className:"flex cursor-pointer items-center gap-3 rounded-md px-2 py-1.5 transition-colors hover:bg-muted/50",children:[c.jsx("input",{type:"checkbox",checked:!r.has(i.localPath),onChange:s=>void e.onMuteToggle(i.localPath,!s.target.checked),className:"h-4 w-4 shrink-0 rounded border-border accent-foreground"}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-foreground",title:i.localPath,children:i.localPath})]})},i.localPath))})]}),c.jsxs("p",{className:"text-xs leading-relaxed text-muted-foreground",children:["Phone setup: this page must be reachable over HTTPS. Run"," ",c.jsx("code",{className:NU,children:"kanna --share"})," or open Kanna over your tunnel on the phone, then enable on that device."]})]})}function MFe(e){return e==="openai"?Ige:e==="openrouter"?zC:""}function jFe(e,t){return{...e,provider:t,model:MFe(t),baseUrl:t==="custom"?e.baseUrl:""}}const IFe=[],PFe=[],LFe=[],OFe={},DFe={},Ve=tr()((e,t)=>({changelogPendingAction:null,skillQuery:"",skillResults:IFe,skillSearchLoading:!1,skillSearchError:null,installedSkills:PFe,installedSkillIds:new Set,installedLoading:!1,installedError:null,skillOperationError:null,installingSkillId:null,uninstallingSkillId:null,installMessages:DFe,globalInstructionsDraft:"",globalInstructionsPersistedAtMount:"",globalInstructionsSaving:!1,globalInstructionsError:null,changelogStatus:"idle",signingOut:!1,authEnabled:!1,releases:LFe,changelogError:null,pushPermissionState:fL().state,pushDeviceId:uZ(),scrollbackDraft:"",minColumnWidthDraft:"",uploadMaxFileSizeDraft:"",claudeIdleMinutesDraft:"",claudeMaxConcurrentDraft:"",editorCommandDraft:"",keybindingDrafts:OFe,keybindingsError:null,appSettingsError:null,analyticsDialogOpen:!1,tunnelError:null,cloudflaredPathDraft:"",shareDefaultTtlDraft:"",llmProviderDraft:{provider:"openai",apiKey:"",model:"",baseUrl:""},llmProviderError:null,llmValidationStatus:"idle",llmValidationError:null,llmValidationDialogOpen:!1,setChangelogPendingAction:n=>e({changelogPendingAction:n}),setSkillQuery:n=>e({skillQuery:n}),setSkillResults:n=>e({skillResults:n}),setSkillSearchLoading:n=>e({skillSearchLoading:n}),setSkillSearchError:n=>e({skillSearchError:n}),setInstalledSkills:n=>e({installedSkills:n}),setInstalledSkillIds:n=>e({installedSkillIds:n}),addInstalledSkillId:n=>{const r=t().installedSkillIds,i=new Set(r);i.add(n),e({installedSkillIds:i})},removeInstalledSkillId:n=>{const r=t().installedSkillIds,i=new Set(r);i.delete(n),e({installedSkillIds:i})},setInstalledLoading:n=>e({installedLoading:n}),setInstalledError:n=>e({installedError:n}),setSkillOperationError:n=>e({skillOperationError:n}),setInstallingSkillId:n=>e({installingSkillId:n}),setUninstallingSkillId:n=>e({uninstallingSkillId:n}),setInstallMessages:n=>e({installMessages:n}),setInstallMessage:(n,r)=>{const i=t().installMessages;e({installMessages:{...i,[n]:r}})},clearInstallMessage:n=>{const i={...t().installMessages};delete i[n],e({installMessages:i})},clearInstallMessagesForSkill:n=>{const i={...t().installMessages};for(const s of Object.keys(i))(s.endsWith(`/${n}`)||s===n)&&delete i[s];e({installMessages:i})},setGlobalInstructionsDraft:n=>e({globalInstructionsDraft:n}),setGlobalInstructionsPersistedAtMount:n=>e({globalInstructionsPersistedAtMount:n}),setGlobalInstructionsSaving:n=>e({globalInstructionsSaving:n}),setGlobalInstructionsError:n=>e({globalInstructionsError:n}),setChangelogStatus:n=>e({changelogStatus:n}),setSigningOut:n=>e({signingOut:n}),setAuthEnabled:n=>e({authEnabled:n}),setReleases:n=>e({releases:n}),setChangelogError:n=>e({changelogError:n}),setPushPermissionState:n=>e({pushPermissionState:n}),setPushDeviceId:n=>e({pushDeviceId:n}),setScrollbackDraft:n=>e({scrollbackDraft:n}),setMinColumnWidthDraft:n=>e({minColumnWidthDraft:n}),setUploadMaxFileSizeDraft:n=>e({uploadMaxFileSizeDraft:n}),setClaudeIdleMinutesDraft:n=>e({claudeIdleMinutesDraft:n}),setClaudeMaxConcurrentDraft:n=>e({claudeMaxConcurrentDraft:n}),setEditorCommandDraft:n=>e({editorCommandDraft:n}),setKeybindingDrafts:n=>e({keybindingDrafts:n}),setKeybindingsError:n=>e({keybindingsError:n}),setAppSettingsError:n=>e({appSettingsError:n}),setAnalyticsDialogOpen:n=>e({analyticsDialogOpen:n}),setTunnelError:n=>e({tunnelError:n}),setCloudflaredPathDraft:n=>e({cloudflaredPathDraft:n}),setShareDefaultTtlDraft:n=>e({shareDefaultTtlDraft:n}),setLlmProviderDraft:n=>e({llmProviderDraft:n}),setLlmProviderError:n=>e({llmProviderError:n}),setLlmValidationStatus:n=>e({llmValidationStatus:n}),setLlmValidationError:n=>e({llmValidationError:n}),setLlmValidationDialogOpen:n=>e({llmValidationDialogOpen:n})})),Zv=[{id:"general",label:"General",icon:pae,subtitle:"Manage appearance, editor behavior, and embedded terminal defaults."},{id:"skills",label:"Skills",icon:j3,subtitle:"Manage globally installed agent skills from the active skill lock file."},{id:"providers",label:"Providers",icon:O3,subtitle:"Manage the default chat provider and saved model defaults for Claude Code and Codex."},{id:"models",label:"Models",icon:p7,subtitle:"Add, edit, and remove Claude and Codex models available in the model picker."},{id:"subagents",label:"Subagents",icon:mh,subtitle:"Define reusable agent personas. Mention them in chat with @agent/<name>."},{id:"mcp-servers",label:"MCP servers",icon:k7,subtitle:"Install custom MCP servers (stdio, http, sse, ws) and connect-test them."},{id:"snippets",label:"Text snippets",icon:T7,subtitle:"Define shortcuts that expand to full text in the chat composer with Tab."},{id:"instructions",label:"Instructions",icon:O3,subtitle:"Global instructions appended to every Claude and Codex turn (main + subagents)."},{id:"keybindings",label:"Keybindings",icon:fse,subtitle:"Edit global app shortcuts stored in the active keybindings file."},{id:"changelog",label:"Changelog",icon:j3,subtitle:"Release notes pulled from the public GitHub releases feed."}];function AU(e){var t;return e?((t=Zv.find(n=>n.id===e))==null?void 0:t.id)??null:null}const $Fe=[{value:"light",label:"Light",icon:jae},{value:"dark",label:"Dark",icon:Poe},{value:"system",label:"System",icon:ij}],zFe=[{value:"never",label:"Never"},{value:"unfocused",label:"When Unfocused"},{value:"always",label:"Always"}],BFe=[{value:"disabled",label:"Off"},{value:"enabled",label:"On"}],FFe=[{value:"disabled",label:"Off"},{value:"enabled",label:"On"}],UFe=[{value:"always-ask",label:"Always ask"},{value:"auto-expose",label:"Auto-expose"}],HFe=[{value:"openai",label:"OpenAI"},{value:"openrouter",label:"OpenRouter"},{value:"custom",label:"Custom"}],WFe=300*1e3;let Yp=null;function VFe(e){return`Edit global app shortcuts stored in ${e}.`}function RU(e,t){return e!==t}function KFe(){return Yp?Date.now()>=Yp.expiresAt?(Yp=null,null):Yp.releases:null}function GFe(e){Yp={releases:e,expiresAt:Date.now()+WFe}}async function MU(e,t){const n=t!=null&&t.force?null:KFe();if(n)return n;const r=await e();return GFe(r),r}function jU(e,t){const n=o=>o.trim().replace(/^v/i,"").split("-")[0].split(".").map(a=>Number.parseInt(a,10)).filter(a=>Number.isFinite(a)),r=n(e),i=n(t),s=Math.max(r.length,i.length);for(let o=0;o<s;o+=1){const a=r[o]??0,l=i[o]??0;if(a!==l)return a<l?-1:1}return 0}function qFe(e){if(!e)return"Unpublished";const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",year:"numeric"}).format(t)}const IU="__redeploy__";function YFe({status:e,releases:t,error:n,onRetry:r,updateSnapshot:i,currentVersion:s,onInstallUpdate:o,onCheckForUpdates:a,onForceReload:l}){var T;const d=Ve(M=>M.changelogPendingAction),h=Ve(M=>M.setChangelogPendingAction),p=(i==null?void 0:i.latestVersion)??((T=t[0])==null?void 0:T.tag_name)??"Unknown",m=(i==null?void 0:i.currentVersion)??s,v=(i==null?void 0:i.status)==="checking",b=(i==null?void 0:i.status)==="updating"||(i==null?void 0:i.status)==="restart_pending",x=b||d!==null,S=(i==null?void 0:i.updateAvailable)===!0,C=p.replace(/^v/i,""),k=m.replace(/^v/i,""),w=_.useCallback(async M=>{h(M);try{await o(M)}finally{h(null)}},[o,h]),N=_.useCallback(async()=>{h(IU);try{await l()}finally{h(null)}},[l,h]),A=d===IU||b;return c.jsxs("div",{className:"space-y-4",children:[e==="loading"||e==="idle"?c.jsx("div",{className:"flex min-h-[180px] items-center justify-center rounded-2xl border border-border bg-card/40 px-6 py-8 text-sm text-muted-foreground",children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading release notes…"})]})}):null,e==="error"?c.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 px-6 py-5",children:c.jsxs("div",{className:"flex items-start justify-between gap-4",children:[c.jsxs("div",{children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Could not load changelog"}),c.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:n??"Unable to load changelog."})]}),c.jsx("button",{type:"button",onClick:r,className:"rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground transition-colors hover:bg-muted",children:"Retry"})]})}):null,e==="success"&&t.length===0?c.jsxs("div",{className:"rounded-lg border border-border bg-card/30 px-6 py-8",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"No releases yet"}),c.jsx("div",{className:"mt-2 text-sm text-muted-foreground",children:"GitHub did not return any published releases for this repository."})]}):null,e==="success"?c.jsxs("div",{className:"flex justify-end gap-2",children:[c.jsx(bm,{variant:"outline",onClick:()=>{N()},disabled:x,children:A?c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}),"Re-deploying…"]}):"Re-deploy"}),c.jsx(bm,{variant:"outline",onClick:a,disabled:v||x,children:v?c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}),"Checking…"]}):"Check for updates"})]}):null,e==="success"&&t.length>0?t.map(M=>{var L,I;const j=M.tag_name.replace(/^v/i,""),P=j===C,D=j===k;return c.jsxs("article",{className:fe("rounded-xl border bg-card/30 pl-6 pr-4 py-4",P?"border-border bg-muted":"border-border"),children:[c.jsxs("div",{className:"flex flex-row items-center min-w-0 flex-1 gap-3 ",children:[c.jsxs("div",{className:"flex flex-row items-center min-w-0 flex-1 gap-2 ",children:[c.jsx("div",{className:"text-lg font-semibold tracking-[-0.2px] text-foreground",children:((L=M.name)==null?void 0:L.trim())||M.tag_name}),c.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 text-sm text-muted-foreground",children:[c.jsx("span",{children:qFe(M.published_at)}),M.prerelease?c.jsx("span",{className:"rounded-full border border-border px-2.5 py-1 uppercase tracking-wide",children:"Prerelease"}):null]})]}),c.jsxs("div",{className:"flex flex-row items-center justify-end min-w-0 flex-1 gap-2 ",children:[c.jsx("a",{href:M.html_url,target:"_blank",rel:"noopener noreferrer","aria-label":"View release on GitHub",className:fe(dj({variant:"ghost",size:"icon-sm"}),"h-11 w-11 md:h-8 md:w-8 shrink-0 rounded-md hover:!bg-transparent hover:border-border/0"),children:c.jsx(XFe,{className:"h-4 w-4"})}),D?c.jsx("span",{className:fe("bg-transparent border border-border text-secondary-foreground","h-9 rounded-full px-3 text-sm","h-auto gap-1.5 px-3 py-1.5"),children:"Current"}):null,P&&S||!P&&!D?(()=>{const $=d===M.tag_name||b&&d===null;let H;P?H="Update":jU(j,k)<0?H="Rollback":H="Install";let z;return P?z="Updating…":jU(j,k)<0?z="Rolling back…":z="Installing…",c.jsx(bm,{variant:"default",className:"",onClick:()=>{w(M.tag_name)},disabled:x,children:c.jsxs("div",{className:"flex flex-row items-center justify-center gap-2",children:[$?c.jsx(jn,{className:"size-4 animate-spin"}):c.jsx(ose,{className:"size-4"}),$?z:H]})})})():null]})]}),(I=M.body)!=null&&I.trim()?c.jsx("div",{className:"prose prose-sm mt-5 max-w-none text-foreground dark:prose-invert",children:Yc(M.body)}):c.jsx("div",{className:"mt-5 text-sm text-muted-foreground",children:"No release notes were provided."})]},M.id)}):null]})}function XFe({className:e}){return c.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",className:e,children:c.jsx("path",{d:"M12 .5C5.649.5.5 5.649.5 12A11.5 11.5 0 0 0 8.36 22.04c.575.106.785-.25.785-.556 0-.274-.01-1-.015-1.962-3.181.691-3.853-1.532-3.853-1.532-.52-1.322-1.27-1.674-1.27-1.674-1.038-.71.08-.695.08-.695 1.148.08 1.752 1.178 1.752 1.178 1.02 1.748 2.676 1.243 3.328.95.103-.738.399-1.243.725-1.53-2.54-.289-5.211-1.27-5.211-5.65 0-1.248.446-2.27 1.177-3.07-.118-.288-.51-1.45.112-3.024 0 0 .96-.307 3.145 1.173A10.91 10.91 0 0 1 12 6.03c.973.004 1.954.132 2.87.387 2.182-1.48 3.14-1.173 3.14-1.173.625 1.573.233 2.736.115 3.024.734.8 1.175 1.822 1.175 3.07 0 4.39-2.676 5.358-5.224 5.642.41.353.776 1.05.776 2.117 0 1.528-.014 2.761-.014 3.136 0 .309.207.668.79.555A11.502 11.502 0 0 0 23.5 12C23.5 5.649 18.351.5 12 .5Z"})})}function JFe(e){return!e||e<=0?"0 installs":e>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M installs`:e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}K installs`:`${e} install${e===1?"":"s"}`}function ZFe({message:e}){return c.jsx("pre",{className:"max-w-full overflow-x-auto whitespace-pre-wrap rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-xs text-destructive",children:e})}function QFe({skill:e,uninstalling:t,onUninstall:n}){const r=e.source?`https://skills.sh/${e.source}/${e.name}`:null;return c.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3 rounded-lg border border-border bg-card/30 p-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),c.jsx("div",{className:"truncate text-xs text-muted-foreground",children:e.source||"Unknown source"})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[r?c.jsx("a",{href:r,target:"_blank",rel:"noreferrer","aria-label":`View ${e.name} on skills.sh`,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(nj,{className:"h-4 w-4"})}):null,c.jsx("button",{type:"button","aria-label":`Uninstall ${e.name}`,disabled:t,onClick:n,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-50",children:t?c.jsx(jn,{className:"h-4 w-4 animate-spin"}):c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function e8e({skill:e,installing:t,installed:n,message:r,onInstall:i}){let s;return n?s="Installed":t?s="Installing":s="Get",c.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3 rounded-lg border border-border bg-card/30 p-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),c.jsxs("div",{className:"truncate text-xs text-muted-foreground",children:[e.source," · ",JFe(e.installs)]}),n&&r?c.jsx("div",{className:"mt-1 truncate text-xs text-emerald-500",children:r}):null]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[c.jsx("a",{href:`https://skills.sh/${e.id}`,target:"_blank",rel:"noreferrer","aria-label":`View ${e.name} on skills.sh`,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(nj,{className:"h-4 w-4"})}),c.jsxs(Me,{type:"button",size:"sm",variant:n?"secondary":"default",disabled:t||n,onClick:i,className:"h-6 rounded-full px-2 text-xs",children:[t?c.jsx(jn,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):null,s]})]})]})}function t8e({state:e}){const t=e.socket,n=e.connectionStatus,r=Ve(V=>V.skillQuery),i=Ve(V=>V.setSkillQuery),s=Ve(V=>V.skillResults),o=Ve(V=>V.setSkillResults),a=Ve(V=>V.skillSearchLoading),l=Ve(V=>V.setSkillSearchLoading),d=Ve(V=>V.skillSearchError),h=Ve(V=>V.setSkillSearchError),p=Ve(V=>V.installedSkills),m=Ve(V=>V.setInstalledSkills),v=Ve(V=>V.installedSkillIds),b=Ve(V=>V.setInstalledSkillIds),x=Ve(V=>V.addInstalledSkillId),S=Ve(V=>V.removeInstalledSkillId),C=Ve(V=>V.installedLoading),k=Ve(V=>V.setInstalledLoading),w=Ve(V=>V.installedError),N=Ve(V=>V.setInstalledError),A=Ve(V=>V.skillOperationError),T=Ve(V=>V.setSkillOperationError),M=Ve(V=>V.installingSkillId),j=Ve(V=>V.setInstallingSkillId),P=Ve(V=>V.uninstallingSkillId),D=Ve(V=>V.setUninstallingSkillId),L=Ve(V=>V.installMessages),I=Ve(V=>V.setInstallMessage),$=Ve(V=>V.clearInstallMessage),H=Ve(V=>V.clearInstallMessagesForSkill),z=_.useCallback(async()=>{if(n!=="connected"){m([]),b(new Set),N(null),k(!1);return}try{k(!0),N(null);const V=await t.command({type:"skills.listInstalled"});m(V.skills),b(new Set(V.skills.map(X=>X.name)))}catch(V){m([]),b(new Set),N(V instanceof Error?V.message:"Unable to read installed skills.")}finally{k(!1)}},[n,t,m,b,N,k]);_.useEffect(()=>{z()},[n,z,t]),_.useEffect(()=>{const V=r.trim();if(V.length<2){o([]),h(null),l(!1);return}if(n!=="connected"){o([]),l(!1),h("Backend connection required.");return}let X=!1;l(!0),h(null);const G=window.setTimeout(()=>{t.command({type:"skills.search",query:V,limit:100}).then(te=>{X||o(te.skills)}).catch(te=>{X||(o([]),h(te instanceof Error?te.message:"Unable to search skills."))}).finally(()=>{X||l(!1)})},250);return()=>{X=!0,window.clearTimeout(G)}},[n,r,t,o,h,l]);async function F(V){if(n!=="connected"){T("Backend connection required.");return}try{j(V.id),T(null),$(V.id),await t.command({type:"skills.install",source:V.source,skillId:V.skillId}),x(V.skillId),I(V.id,"Installed globally"),z()}catch(X){T(X instanceof Error?X.message:"Install failed.")}finally{j(null)}}async function K(V){if(n!=="connected"){T("Backend connection required.");return}try{D(V.name),T(null),await t.command({type:"skills.uninstall",skillId:V.name}),m(p.filter(X=>X.name!==V.name)),S(V.name),H(V.name),z()}catch(X){T(X instanceof Error?X.message:"Uninstall failed.")}finally{D(null)}}let W;return p.length>0?W=c.jsx("div",{className:"grid gap-3 md:grid-cols-2",children:p.map(V=>c.jsx(QFe,{skill:V,uninstalling:P===V.name,onUninstall:()=>{K(V)}},`${V.source}/${V.name}`))}):C?W=null:W=c.jsx("div",{className:"rounded-lg border border-border bg-card/30 p-3 text-sm text-muted-foreground",children:"No global skills installed."}),c.jsxs("div",{className:"flex flex-col gap-6",children:[A?c.jsx(ZFe,{message:A}):null,c.jsxs("section",{className:"flex flex-col gap-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Installed"}),C?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground"}):null]}),w?c.jsx("div",{className:"text-xs text-destructive",children:w}):null,W]}),c.jsxs("section",{className:"flex flex-col gap-3",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Discover"}),c.jsxs("div",{className:"flex h-10 items-center gap-2 rounded-lg border border-border bg-card/30 px-3",children:[c.jsx(Jp,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("input",{type:"text",role:"searchbox",value:r,onChange:V=>i(V.target.value),placeholder:"Search skills",className:"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground"}),r?c.jsx("button",{type:"button","aria-label":"Clear skills search",onClick:()=>i(""),className:"touch-manipulation inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(jo,{className:"h-3.5 w-3.5"})}):null,a?c.jsx(jn,{className:"h-4 w-4 shrink-0 animate-spin text-muted-foreground"}):null]}),d?c.jsx("div",{className:"text-xs text-destructive",children:d}):null,c.jsx("div",{className:"grid gap-3 md:grid-cols-2",children:s.map(V=>c.jsx(e8e,{skill:V,installing:M===V.id,installed:v.has(V.skillId),message:L[V.id],onInstall:()=>{F(V)}},V.id))}),!a&&!d&&r.trim().length>=2&&s.length===0?c.jsx("div",{className:"rounded-lg border border-border bg-card/30 p-3 text-sm text-muted-foreground",children:"No skills found."}):null]})]})}function wr({title:e,description:t,children:n,bordered:r=!0,alignStart:i=!1}){return c.jsx("div",{className:r?"border-t border-border":void 0,children:c.jsxs("div",{className:fe("flex flex-col gap-4 py-5 md:flex-row md:justify-between md:gap-8",i?"md:items-start":"md:items-center"),children:[c.jsxs("div",{className:"min-w-0 max-w-xl",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:e}),c.jsx("div",{className:"mt-1 text-[13px] text-muted-foreground",children:t})]}),c.jsx("div",{className:"flex items-center justify-start md:shrink-0 md:justify-end",children:n})]})})}function n8e({checked:e,onChange:t}){return c.jsxs("label",{className:"inline-flex items-center gap-2",children:[c.jsx("input",{type:"checkbox",checked:e,onChange:n=>t(n.target.checked)}),"Enabled"]})}function r8e({state:e}){var x;const t=((x=e.appSettings)==null?void 0:x.globalPromptAppend)??"",n=Ve(S=>S.globalInstructionsDraft),r=Ve(S=>S.setGlobalInstructionsDraft),i=Ve(S=>S.globalInstructionsPersistedAtMount),s=Ve(S=>S.globalInstructionsSaving),o=Ve(S=>S.setGlobalInstructionsSaving),a=Ve(S=>S.globalInstructionsError),l=Ve(S=>S.setGlobalInstructionsError);_.useEffect(()=>{t!==i&&Ve.setState({globalInstructionsPersistedAtMount:t,globalInstructionsDraft:t})},[t,i]);const d=n.replace(/\s+$/u,""),h=d.length>V$,p=d!==t,m=s||h||!p,v=_.useCallback(async()=>{if(!m){l(null),o(!0);try{await e.handleWriteAppSettings({globalPromptAppend:d})}catch(S){l(S instanceof Error?S.message:String(S))}finally{o(!1)}}},[m,e,d,l,o]);let b;return s?b="Saving…":p?b="Save":b="Saved",c.jsx("div",{className:"border-b border-border",children:c.jsx(wr,{title:"Global Instructions",description:"Appended to every Claude and Codex turn — including subagent turns. Kanna does not read CLAUDE.md or AGENTS.md from disk; paste your global instructions here. Leave blank to disable.",bordered:!1,alignStart:!0,children:c.jsxs("div",{className:"flex w-full flex-col gap-2 md:w-[420px]",children:[c.jsx("textarea",{value:n,onChange:S=>r(S.target.value),placeholder:"e.g. Always write tests before implementation. Prefer Tailwind classes over inline styles.",rows:8,"aria-label":"Global instructions",className:fe("min-h-[160px] w-full resize-y rounded-md border bg-background px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",h?"border-destructive":"border-input"),disabled:s}),c.jsxs("div",{className:"flex items-center justify-between text-xs",children:[c.jsxs("span",{className:h?"text-destructive":"text-muted-foreground",children:[d.length," / ",V$," characters",h?" — over limit":""]}),c.jsx(Me,{type:"button",size:"sm",onClick:()=>{v()},disabled:m,children:b})]}),a?c.jsx("div",{className:"text-xs text-destructive",children:a}):null]})})})}function i8e(){var qi,Ee,Fe;const e=Ad(),{sectionId:t}=fC(),n=dC(),{theme:r,setTheme:i}=O1(),s=Ve(B=>B.changelogStatus),o=Ve(B=>B.setChangelogStatus),a=Ve(B=>B.signingOut),l=Ve(B=>B.setSigningOut),d=Ve(B=>B.authEnabled),h=Ve(B=>B.setAuthEnabled),p=Ve(B=>B.releases),m=Ve(B=>B.setReleases),v=Ve(B=>B.changelogError),b=Ve(B=>B.setChangelogError),x=AU(t)??"general",S=n.connectionStatus==="connecting"||!n.localProjectsReady,C=((qi=n.localProjects)==null?void 0:qi.machine.displayName)??"Unavailable",k=((Ee=n.localProjects)==null?void 0:Ee.projects.length)??0,w=Pj.split("/")[1]??"unknown",N=Ss(B=>B.scrollbackLines),A=Ss(B=>B.minColumnWidth),T=Ss(B=>B.editorPreset),M=Ss(B=>B.editorCommandTemplate),j=Ss(B=>B.setScrollbackLines),P=Ss(B=>B.setMinColumnWidth),D=Ss(B=>B.setEditorPreset),L=Ss(B=>B.setEditorCommandTemplate),I=Rf(B=>B.chatSoundPreference),$=Rf(B=>B.chatSoundId),H=Rf(B=>B.setChatSoundPreference),z=Rf(B=>B.setChatSoundId),F=n.keybindings,K=n.appSettings,W=n.llmProvider,V=VR(B=>B.autoResumeOnRateLimit),X=VR(B=>B.setAutoResumeOnRateLimit),G=Ns(B=>B.defaultProvider),te=Ns(B=>B.providerDefaults),oe=Ns(B=>B.setDefaultProvider),ce=Ns(B=>B.setProviderDefaultModel),de=Ns(B=>B.setProviderDefaultModelOptions),ee=Ns(B=>B.setProviderDefaultPlanMode),ne=jr(gy),ie=_.useMemo(()=>rI([...Lb],ne),[ne]),ae=_.useMemo(()=>oI(F),[F]),Q=ae.filePathDisplay||Efe(),ke=Ve(B=>B.pushPermissionState),we=Ve(B=>B.setPushPermissionState),Ae=Ve(B=>B.pushDeviceId),Xe=Ve(B=>B.setPushDeviceId),ft=Ve(B=>B.scrollbackDraft),Ct=Ve(B=>B.setScrollbackDraft),ln=Ve(B=>B.minColumnWidthDraft),en=Ve(B=>B.setMinColumnWidthDraft),bt=(K==null?void 0:K.uploads.maxFileSizeMb)??W$.maxFileSizeMb,fn=Ve(B=>B.uploadMaxFileSizeDraft),qe=Ve(B=>B.setUploadMaxFileSizeDraft),Ht=(K==null?void 0:K.claudeDriver.preference)??K$.preference,cn=Math.round(((K==null?void 0:K.claudeDriver.lifecycle.idleTimeoutMs)??iS.idleTimeoutMs)/6e4),wt=(K==null?void 0:K.claudeDriver.lifecycle.maxConcurrent)??iS.maxConcurrent,zt=Ve(B=>B.claudeIdleMinutesDraft),tn=Ve(B=>B.setClaudeIdleMinutesDraft),Yt=Ve(B=>B.claudeMaxConcurrentDraft),Kt=Ve(B=>B.setClaudeMaxConcurrentDraft),sn=Ve(B=>B.editorCommandDraft),Nn=Ve(B=>B.setEditorCommandDraft),Ue=Ve(B=>B.keybindingDrafts),un=Ve(B=>B.setKeybindingDrafts),wn=Ve(B=>B.keybindingsError),kt=Ve(B=>B.setKeybindingsError),Xt=Ve(B=>B.appSettingsError),Ce=Ve(B=>B.setAppSettingsError),rt=Ve(B=>B.analyticsDialogOpen),gt=Ve(B=>B.setAnalyticsDialogOpen),it=Ve(B=>B.tunnelError),jt=Ve(B=>B.setTunnelError),Bt=Ve(B=>B.cloudflaredPathDraft),Et=Ve(B=>B.setCloudflaredPathDraft),Lt=(K==null?void 0:K.shareDefaultTtlHours)??24,nn=Ve(B=>B.shareDefaultTtlDraft),$t=Ve(B=>B.setShareDefaultTtlDraft),re=Ve(B=>B.llmProviderDraft),je=Ve(B=>B.setLlmProviderDraft),ht=Ve(B=>B.llmProviderError),Ne=Ve(B=>B.setLlmProviderError),We=Ve(B=>B.llmValidationStatus),Ke=Ve(B=>B.setLlmValidationStatus),Je=Ve(B=>B.llmValidationError),pt=Ve(B=>B.setLlmValidationError),Ot=Ve(B=>B.llmValidationDialogOpen),xt=Ve(B=>B.setLlmValidationDialogOpen),Be=n.updateSnapshot,Ft=n.handleWriteAppSettings,Ln=n.handleWriteCloudflareTunnel,Gt=n.handleWriteClaudeAuth,Jt=n.handleTestOAuthToken,xr=n.handleReadLlmProvider,In=n.handleWriteLlmProvider,Gn=n.handleValidateLlmProvider;let qn;(Be==null?void 0:Be.status)==="checking"?qn="Checking for updates…":(Be==null?void 0:Be.status)==="updating"?qn="Installing update…":(Be==null?void 0:Be.status)==="restart_pending"?qn="Restarting Kanna…":(Be==null?void 0:Be.status)==="available"?qn=`Update available${Be.latestVersion?`: ${Be.latestVersion}`:""}`:(Be==null?void 0:Be.status)==="up_to_date"?qn="Up to date":(Be==null?void 0:Be.status)==="error"?qn="Update check failed":qn="Not checked yet",_.useEffect(()=>{Ct(String(N))},[N,Ct]),_.useEffect(()=>{en(String(A))},[A,en]),_.useEffect(()=>{qe(String(bt))},[bt,qe]),_.useEffect(()=>{tn(String(cn))},[cn,tn]),_.useEffect(()=>{Kt(String(wt))},[wt,Kt]),_.useEffect(()=>{const B=()=>we(fL().state);return window.addEventListener("focus",B),()=>window.removeEventListener("focus",B)},[we]),_.useEffect(()=>{Nn(M)},[M,Nn]),_.useEffect(()=>{un(Object.fromEntries(G$.map(B=>[B,SN(ae.bindings[B])])))},[ae,un]),_.useEffect(()=>{W&&je({provider:W.provider,apiKey:W.apiKey,model:W.model,baseUrl:W.baseUrl})},[W,je]),_.useEffect(()=>{Ke("idle"),pt(null)},[re.provider,re.apiKey,re.model,re.baseUrl,Ke,pt]),_.useEffect(()=>{t&&(AU(t)||e("/settings/general",{replace:!0}))},[e,t]),_.useEffect(()=>{K&&Et(K.cloudflareTunnel.cloudflaredPath)},[K,Et]),_.useEffect(()=>{let B=!1;return fetch("/auth/status",{method:"GET",cache:"no-store",headers:{Accept:"application/json"}}).then(async ze=>ze.ok?await ze.json():{enabled:!1}).then(ze=>{B||h(ze.enabled===!0)}).catch(()=>{B||h(!1)}),()=>{B=!0}},[h]),_.useEffect(()=>{x!=="providers"||S||xr()},[xr,S,x]);const ye=_.useCallback(()=>n.socket.command({type:"settings.getChangelog"}),[n.socket]);_.useEffect(()=>{if(x!=="changelog"||S)return;let B=!1;return o("loading"),b(null),MU(ye).then(ze=>{B||(m(ze),o("success"))}).catch(ze=>{B||(b(ze instanceof Error?ze.message:"Unable to load changelog."),o("error"))}),()=>{B=!0}},[S,x,o,b,m,ye]);function Qe(){const B=Number(ft);if(!Number.isFinite(B)){Ct(String(N));return}j(B),Ft({terminal:{scrollbackLines:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save terminal settings.")})}function zn(){const B=Number(ln);if(!Number.isFinite(B)){en(String(A));return}P(B),Ft({terminal:{minColumnWidth:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save terminal settings.")})}function Ur(){const B=Number(fn);if(!Number.isFinite(B)||B<K_||B>G_){qe(String(bt)),Ce(`Max file size must be between ${K_} and ${G_} MB.`);return}if(Math.round(B)===bt){qe(String(bt));return}Ft({uploads:{maxFileSizeMb:Math.round(B)}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save upload settings.")})}function ue(B){B!==Ht&&Ft({claudeDriver:{preference:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save Claude driver preference.")})}function Ye(){const B=Number(zt),ze=Math.round(yN/6e4),yt=Math.round(_N/6e4);if(!Number.isFinite(B)||B<ze||B>yt){tn(String(cn)),Ce(`Idle timeout must be between ${ze} and ${yt} minutes.`);return}if(Math.round(B)===cn){tn(String(cn));return}Ft({claudeDriver:{lifecycle:{idleTimeoutMs:Math.round(B)*6e4}}}).catch(yr=>{Ce(yr instanceof Error?yr.message:"Unable to save Claude lifecycle settings.")})}function ct(){const B=Number(Yt);if(!Number.isFinite(B)||B<q_||B>Y_){Kt(String(wt)),Ce(`Max concurrent sessions must be between ${q_} and ${Y_}.`);return}if(Math.round(B)===wt){Kt(String(wt));return}Ft({claudeDriver:{lifecycle:{maxConcurrent:Math.round(B)}}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save Claude lifecycle settings.")})}function at(){const B=Number(nn);if(!Number.isInteger(B)||B<1){$t(String(Lt)),Ce("Default share link expiry must be a whole number of hours >= 1.");return}if(B===Lt){$t(String(Lt));return}Ft({shareDefaultTtlHours:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save share settings.")})}function Mn(B,ze){B.key==="Enter"&&(ze(),B.currentTarget.blur())}function It(B,ze){B.key==="Enter"&&(ze(),B.currentTarget.blur())}function Hr(){L(sn),Ft({editor:{commandTemplate:sn}}).catch(B=>{Ce(B instanceof Error?B.message:"Unable to save editor settings.")})}function li(B){i(B),Ft({theme:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save theme settings.")})}function $l(B){D(B);const ze=B==="custom"?M:Cm(B);Ft({editor:{preset:B,commandTemplate:ze}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save editor settings.")})}function Ds(B){RU(I,B)&&(H(B),Ft({chatSoundPreference:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save chat sound settings.")}),C2($,1).catch(()=>{}))}function va(B){RU($,B)&&(z(B),Ft({chatSoundId:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save chat sound settings.")}),C2(B,1).catch(()=>{}))}async function Po(B){try{Ce(null),await Ft({analyticsEnabled:B==="enabled"})}catch(ze){Ce(ze instanceof Error?ze.message:"Unable to save analytics settings.")}}async function Dt(B){try{jt(null),await Ln(B)}catch(ze){jt(ze instanceof Error?ze.message:"Unable to save Cloudflare Tunnel settings.")}}function Tn(B){oe(B),Ft({defaultProvider:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save provider settings.")})}function Yn(B,ze){ce(B,ze),Ft({providerDefaults:{[B]:{model:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}function Cn(B,ze){de(B,ze),Ft({providerDefaults:{[B]:{modelOptions:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}function ba(B,ze){ee(B,ze),Ft({providerDefaults:{[B]:{planMode:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}async function zl(){try{kt(null),await n.socket.command({type:"settings.writeKeybindings",bindings:PU(Ue)})}catch(B){kt(B instanceof Error?B.message:"Unable to save keybindings.")}}async function Xa(B){const ze={...Ue,[B]:SN($b[B])};un(ze);try{kt(null),await n.socket.command({type:"settings.writeKeybindings",bindings:PU(ze)})}catch(yt){kt(yt instanceof Error?yt.message:"Unable to save keybindings.")}}async function gs(B=re){try{Ne(null),await In(B);const ze=await Gn(B);Ke(ze.ok?"valid":"invalid"),pt(ze.error)}catch(ze){const yt=ze instanceof Error?{name:ze.name,message:ze.message}:ze;Ke("invalid"),pt(yt),Ne(ze instanceof Error?ze.message:"Unable to save quick response provider settings.")}}function xa(B){const ze=jFe(re,B);je(ze),gs(ze)}function uu(){Yp=null,o("loading"),b(null),MU(ye,{force:!0}).then(B=>{m(B),o("success")}).catch(B=>{b(B instanceof Error?B.message:"Unable to load changelog."),o("error")})}const ci=sn.replaceAll("{path}","/Users/jake/Projects/kanna/src/client/app/App.tsx").replaceAll("{line}","12").replaceAll("{column}","1"),Ja=I6e,Za=(K==null?void 0:K.analyticsEnabled)===!1?"disabled":"enabled",co=(K==null?void 0:K.cloudflareTunnel)??Hge,$s=co.enabled?"enabled":"disabled",ya=Zv.find(B=>B.id===x)??Zv[0],q=x==="keybindings"?VFe(Q):ya.subtitle,J=!S,be=Je?JSON.stringify(Je,null,2):"";let Ze;We==="valid"?Ze="text-success":We==="invalid"?Ze="text-destructive":Ze="hidden";let hn;We==="valid"?hn="Credentials valid & saved":We==="invalid"?hn=c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Credentials invalid."}),Je?c.jsxs(c.Fragment,{children:[" ",c.jsx("button",{type:"button",onClick:()=>xt(!0),className:"underline underline-offset-2",children:"See error"})]}):null]}):hn=null;const Ir=c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:["Use an OpenAI-compatible API for title and commit message generation before Claude and Codex. Stored in ",(W==null?void 0:W.filePathDisplay)??"the active llm-provider.json file","."]}),c.jsx("span",{className:fe("mt-2 block text-sm font-medium",Ze),children:hn})]});async function ki(){if(!a){l(!0);try{await n.handleSignOut()}finally{l(!1)}}}return c.jsxs("div",{className:"relative flex h-full flex-1 min-w-0 bg-background",children:[c.jsxs("div",{className:"flex min-w-0 flex-1",children:[c.jsx("aside",{className:`hidden w-[200px] shrink-0 md:block ${J?"pb-[89px]":""}`,children:c.jsxs("div",{className:"flex flex-col gap-1 px-4 py-6",children:[c.jsx("div",{className:"px-3 pb-5 text-[22px] font-extrabold tracking-[-0.5px] text-foreground",children:"Settings"}),Zv.map(B=>{const ze=B.id==="changelog"&&(Be==null?void 0:Be.updateAvailable)===!0;return c.jsx("button",{type:"button",onClick:()=>e(`/settings/${B.id}`),className:`cursor-pointer rounded-lg px-3 py-2 text-sm ${B.id===x?"bg-muted font-medium text-foreground":"text-muted-foreground hover:bg-muted/50 hover:text-foreground"}`,children:c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(B.icon,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:B.label}),ze?c.jsx("span",{className:"ml-auto inline-flex items-center rounded-full bg-logo/20 px-2 py-0.5 text-[10px] font-bold tracking-wider text-logo",children:"UPDATE"}):null]})},B.label)}),d?c.jsx("button",{type:"button",onClick:()=>{ki()},disabled:a,className:"cursor-pointer rounded-lg px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",children:c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(P3,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:a?"Signing out...":"Sign out"})]})}):null]})}),c.jsxs("div",{className:"min-w-0 flex-1 overflow-y-auto",children:[c.jsx("div",{className:"border-b border-border py-2 md:hidden",children:c.jsx("div",{className:"overflow-x-auto pr-4 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:c.jsxs("div",{className:"flex min-w-max items-center gap-2",children:[c.jsx("div",{className:" sticky left-0 bg-gradient-to-r from-background via-background/80 to-transparent px-2 py-1",children:c.jsx("button",{type:"button",onClick:n.openSidebar,className:"flex shrink-0 items-center p-2 text-sm text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground","aria-label":"Open sidebar",title:"Open sidebar",children:c.jsx(rj,{className:"h-4 w-4 shrink-0"})})}),Zv.map(B=>c.jsxs("button",{type:"button",onClick:()=>e(`/settings/${B.id}`),className:fe("flex shrink-0 items-center gap-2 rounded-full border px-3 py-2 text-sm transition-colors",B.id===x?"border-transparent bg-muted font-medium text-foreground":"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground"),children:[c.jsx(B.icon,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{className:"whitespace-nowrap",children:B.label})]},B.label)),d?c.jsxs("button",{type:"button",onClick:()=>{ki()},disabled:a,className:fe("flex shrink-0 items-center gap-2 rounded-full border px-3 py-2 text-sm transition-colors","border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground","disabled:cursor-not-allowed disabled:opacity-50"),children:[c.jsx(P3,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{className:"whitespace-nowrap",children:a?"Signing out...":"Sign out"})]}):null]})})}),c.jsxs("div",{className:"w-full px-4 pb-32 pt-8 md:px-6 md:pt-16",children:[S?c.jsx("div",{className:"flex min-h-[240px] items-center justify-center rounded-2xl border border-border bg-card/40 px-4 py-6 text-sm text-muted-foreground",children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading machine settings…"})]})}):c.jsxs("div",{className:"mx-auto max-w-4xl",children:[c.jsxs("div",{className:"pb-6",children:[c.jsxs("div",{className:"flex items-center justify-between gap-4 min-h-[34px]",children:[c.jsx("div",{className:"text-lg font-semibold tracking-[-0.2px] text-foreground",children:ya.label}),x==="general"?c.jsx(bm,{variant:"outline",onClick:()=>e("/settings/changelog"),children:"Check for updates"}):null,x==="keybindings"?c.jsxs(bm,{onClick:()=>{n.handleOpenExternalPath("open_editor",Q)},icon:c.jsx(ej,{className:"h-4 w-4"}),children:["Open in ",n.editorLabel]}):null]}),c.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:q})]}),x==="general"&&c.jsxs(c.Fragment,{children:[Xt?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:Xt}):null,c.jsxs("div",{className:"border-b border-border",children:[c.jsx(wr,{title:"Application Update",description:c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:[qn,"."]}),Be!=null&&Be.lastCheckedAt?c.jsxs("span",{children:[" Last checked ",new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(Be.lastCheckedAt),"."]}):null,Be!=null&&Be.error?c.jsxs("span",{children:[" ",Be.error]}):null]}),bordered:!1,children:c.jsxs("div",{className:"text-right text-sm text-foreground",children:[c.jsxs("div",{children:["Current: ",(Be==null?void 0:Be.currentVersion)??w]}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Latest: ",(Be==null?void 0:Be.latestVersion)??"Unknown"]})]})}),c.jsx(wr,{title:"Theme",description:"Choose between light, dark, or system appearance",children:c.jsx(Es,{value:r,onValueChange:li,options:$Fe,size:"sm"})}),c.jsx(wr,{title:"Chat Sounds",description:"Play a pop when a chat starts waiting on you or the unread chat count increases",children:c.jsxs(Qo,{value:I,onValueChange:B=>{Wge(B)&&Ds(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:zFe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]})}),c.jsx(wr,{title:"Chat Sound",description:"The bundled sound used for chat notification playback and previews",children:c.jsxs(Qo,{value:$,onValueChange:B=>{Vge(B)&&va(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:Nfe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]})}),c.jsx(wr,{title:"Default Editor",description:"Used when opening transcript links or files from the git diff menu",alignStart:!0,children:c.jsxs(Qo,{value:T,onValueChange:B=>{FW(B)&&$l(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:FC.map(B=>c.jsx(ri,{value:B.value,children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(YW,{preset:B.value,className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:B.label})]})},B.value))})})]})}),T==="custom"?c.jsx("div",{className:"border-t border-border",children:c.jsxs("div",{className:"flex justify-between gap-8 py-5 pl-6",children:[c.jsxs("div",{className:"min-w-0 max-w-xl",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Command Template"}),c.jsxs("div",{className:"mt-1 text-[13px] text-muted-foreground",children:["Include ","{path}"," and optionally ","{line}"," and ","{column}"," in your command."]})]}),c.jsxs("div",{className:"flex min-w-0 max-w-[420px] flex-1 flex-col items-stretch gap-2",children:[c.jsx(dn,{type:"text",value:sn,onChange:B=>Nn(B.target.value),onBlur:Hr,onKeyDown:B=>It(B,Hr),className:"font-mono"}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Preview: ",c.jsx("span",{className:"font-mono",children:ci})]})]})]})}):null,c.jsx(wr,{title:"Terminal Scrollback",description:"Lines retained for embedded terminal history",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:z2,max:B2,step:100,value:ft,onChange:B=>Ct(B.target.value),onBlur:Qe,onKeyDown:B=>Mn(B,Qe),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[z2,"-",B2," lines",N===aI?" (default)":""]})]})}),c.jsx(wr,{title:"Terminal Min Column Width",description:"Minimum width for each terminal pane",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:F2,max:U2,step:10,value:ln,onChange:B=>en(B.target.value),onBlur:zn,onKeyDown:B=>Mn(B,zn),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[F2,"-",U2," px",A===lI?" (default)":""]})]})}),c.jsx(wr,{title:"Max upload file size",description:"Largest single file the chat upload endpoint accepts.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-1.5 md:w-auto md:items-end",children:[c.jsxs("div",{className:"flex items-center gap-2 md:justify-end",children:[c.jsx(dn,{type:"number",min:K_,max:G_,step:1,value:fn,onChange:B=>qe(B.target.value),onBlur:Ur,onKeyDown:B=>Mn(B,Ur),className:"hide-number-steppers w-full text-left font-mono tabular-nums md:w-24 md:text-right","aria-label":"Max upload file size in megabytes"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:"MB"})]}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground tabular-nums md:text-right",children:[K_,"–",G_," MB · default ",W$.maxFileSizeMb]})]})}),c.jsx(wr,{title:"Auto-resume on rate limit",description:'When you hit a rate limit, automatically schedule "continue" at the reset time instead of asking. You can still cancel each one from the chat.',children:c.jsx(n8e,{checked:V,onChange:X})}),n.pushConfig?c.jsx(wr,{title:"Push notifications",description:"Get notified when a chat is waiting for you, finishes, or fails. Works on iPhone (after Add to Home Screen), Android, and desktop browsers.",bordered:!1,alignStart:!0,children:c.jsx(RFe,{permissionState:ke,config:n.pushConfig,projects:((Fe=n.localProjects)==null?void 0:Fe.projects)??[],currentDeviceId:Ae,onEnable:async()=>{if(!n.pushConfig)return;const B=await rPe({vapidPublicKey:n.pushConfig.vapidPublicKey,sendToServer:async ze=>{const yt=await n.socket.command({type:"push.subscribe",subscription:ze.subscription,label:ze.label,userAgent:ze.userAgent});return JIe(yt.id),{id:yt.id}}});Xe(B)},onDisable:async()=>{Ae&&(await iPe({pushDeviceId:Ae,sendToServer:async B=>{await n.socket.command({type:"push.unsubscribe",pushDeviceId:B})}}),ZIe(),Xe(null))},onTest:async()=>{await n.socket.command({type:"push.test"})},onMuteToggle:async(B,ze)=>{await n.socket.command({type:"push.setProjectMute",localPath:B,muted:ze})},onRemoveDevice:async B=>{await n.socket.command({type:"push.unsubscribe",pushDeviceId:B})}})}):null,c.jsx(wr,{title:"Anonymous Analytics",description:c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Help improve Kanna with anonymous product analytics. Kanna sends tracked event names plus a small set of event properties like current version, environment, update version info, and launch flags. No message content, prompts, file paths, or provider credentials are sent."}),c.jsxs("span",{className:"mt-1 block",children:["Stored in ",(K==null?void 0:K.filePathDisplay)??"~/.kanna/data/settings.json","."," ",c.jsx("button",{type:"button",onClick:()=>gt(!0),className:"underline underline-offset-2 text-foreground hover:text-foreground/80",children:"View tracked events"})]}),K!=null&&K.warning?c.jsx("span",{className:"mt-1 block",children:K.warning}):null]}),children:c.jsx(Es,{value:Za,onValueChange:B=>{Po(B)},options:BFe,size:"sm"})})]}),c.jsxs("div",{className:"border-b border-border",children:[it?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:it}):null,c.jsx(wr,{title:"Cloudflare Tunnel",description:c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:["When enabled, Claude can call the ",c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:"expose_port"})," tool to expose a local port via Cloudflare Tunnel. The mode below controls whether each call requires your approval or is exposed automatically. Requires"," ",c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:"cloudflared"})," ","to be installed."]}),c.jsxs("span",{className:"mt-1 block",children:["Stored in ",(K==null?void 0:K.filePathDisplay)??"~/.kanna/data/settings.json","."]})]}),bordered:!1,children:c.jsx(Es,{value:$s,onValueChange:B=>{Dt({enabled:B==="enabled"})},options:FFe,size:"sm"})}),co.enabled&&c.jsxs(c.Fragment,{children:[c.jsx(wr,{title:"Tool mode",description:"Always ask: each expose_port call shows an accept card. Auto-expose: expose_port calls spawn cloudflared immediately without prompting.",children:c.jsx(Es,{value:co.mode,onValueChange:B=>{Dt({mode:B})},options:UFe,size:"sm"})}),c.jsx(wr,{title:"cloudflared path",description:"Path to the cloudflared binary. Defaults to the one found on $PATH.",children:c.jsx(dn,{value:Bt,onChange:B=>Et(B.target.value),onBlur:()=>{Dt({cloudflaredPath:Bt})},placeholder:"cloudflared",className:"w-full font-mono md:w-64"})})]})]}),c.jsx("div",{className:"border-b border-border",children:c.jsx(wr,{title:"Public share links",description:"Default expiry for read-only chat share links. Owners can revoke any link manually at any time.",bordered:!1,children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsxs("div",{className:"flex items-center gap-2 md:justify-end",children:[c.jsx(dn,{type:"number",min:1,step:1,value:nn,onChange:B=>$t(B.target.value),onBlur:at,onKeyDown:B=>Mn(B,at),className:"hide-number-steppers w-full text-left font-mono tabular-nums md:w-24 md:text-right","aria-label":"Default share link expiry in hours"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:"hours"})]}),c.jsx("div",{className:"text-left text-xs text-muted-foreground tabular-nums md:text-right",children:"Minimum 1 hour · default 24"})]})})})]}),x==="providers"&&c.jsxs("div",{className:"border-b border-border",children:[c.jsx(wr,{title:"Claude OAuth tokens",description:"Manage multiple Claude OAuth tokens. Kanna switches automatically when one hits its rate limit.",bordered:!1,alignStart:!0,children:c.jsx("div",{className:"w-full md:w-[420px]",children:c.jsx(TFe,{tokens:(K==null?void 0:K.claudeAuth.tokens)??[],concurrencyDefault:(K==null?void 0:K.claudeAuth.concurrencyDefault)??1,onWrite:Gt,onTest:Jt})})}),c.jsx(wr,{title:"Claude driver",description:"SDK uses the @anthropic-ai/claude-agent-sdk programmatic API (billed at API rates). PTY launches the `claude` CLI under a pseudo-terminal — preserves Pro/Max subscription billing. Requires an OAuth-pool token configured in Kanna settings and ANTHROPIC_API_KEY to be unset. macOS/Linux only.",children:c.jsx(Es,{value:Ht,onValueChange:B=>{Uge(B)&&ue(B)},options:[{value:"sdk",label:"SDK (API)"},{value:"pty",label:"PTY (subscription)"}]})}),c.jsx(wr,{title:"PTY idle timeout",description:"Stop a Claude PTY session after this many minutes without user activity. Lower values free subscription quota faster; higher values keep cold-start latency low.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:Math.round(yN/6e4),max:Math.round(_N/6e4),step:1,value:zt,onChange:B=>tn(B.target.value),onBlur:Ye,onKeyDown:B=>Mn(B,Ye),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[Math.round(yN/6e4),"–",Math.round(_N/6e4)," min · default ",Math.round(iS.idleTimeoutMs/6e4)]})]})}),c.jsx(wr,{title:"PTY max concurrent sessions",description:"Hard cap on resident Claude PTY processes. Excess sessions are evicted LRU; their next activation cold-starts.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:q_,max:Y_,step:1,value:Yt,onChange:B=>Kt(B.target.value),onBlur:ct,onKeyDown:B=>Mn(B,ct),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[q_,"–",Y_," · default ",K$.lifecycle.maxConcurrent]})]})}),c.jsx(wr,{title:"Default Provider",description:"The default harness used for new chats before a provider is locked by an existing session.",children:c.jsxs(Qo,{value:G,onValueChange:B=>{(B==="last_used"||UW(B))&&Tn(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsxs(jp,{children:[c.jsx(ri,{value:"last_used",children:"Last Used"}),Lb.map(B=>c.jsx(ri,{value:B.id,children:B.label},B.id))]})})]})}),c.jsx(wr,{title:"Claude Code Defaults",description:"Saved defaults when using Claude Code.",alignStart:!0,children:c.jsx("div",{className:"max-w-[420px]",children:c.jsx(rM,{availableProviders:ie,selectedProvider:"claude",showProviderPicker:!1,model:te.claude.model,modelOptions:te.claude.modelOptions,onModelChange:(B,ze)=>{Yn("claude",ze)},onModelOptionChange:B=>{B.type==="claudeReasoningEffort"?Cn("claude",{reasoningEffort:B.effort}):B.type==="contextWindow"&&Cn("claude",{contextWindow:B.contextWindow})},planMode:te.claude.planMode,onPlanModeChange:B=>ba("claude",B),includePlanMode:!0,className:"justify-start flex-wrap"})})}),c.jsx(wr,{title:"Codex Defaults",description:"Saved defaults when using Codex.",alignStart:!0,children:c.jsx("div",{className:"max-w-[420px]",children:c.jsx(rM,{availableProviders:ie,selectedProvider:"codex",showProviderPicker:!1,model:te.codex.model,modelOptions:te.codex.modelOptions,onModelChange:(B,ze)=>{Yn("codex",ze)},onModelOptionChange:B=>{B.type==="codexReasoningEffort"?Cn("codex",{reasoningEffort:B.effort}):B.type==="fastMode"&&Cn("codex",{fastMode:B.fastMode})},planMode:te.codex.planMode,onPlanModeChange:B=>ba("codex",B),includePlanMode:!0,className:"justify-start flex-wrap"})})}),c.jsx(wr,{title:"Quick Response SDK",description:Ir,alignStart:!0,children:c.jsxs("div",{className:"flex w-full max-w-[420px] flex-col gap-3",children:[ht?c.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:ht}):null,W!=null&&W.warning?c.jsx("div",{className:"rounded-lg border border-border bg-card/30 px-4 py-3 text-sm text-muted-foreground",children:W.warning}):null,c.jsxs(Qo,{value:re.provider,onValueChange:B=>{Kge(B)&&xa(B)},children:[c.jsx(Co,{className:"w-full",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:HFe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]}),re.provider==="custom"?c.jsx(dn,{value:re.baseUrl,onChange:B=>je({...re,baseUrl:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"https://your-provider.example/v1"}):null,c.jsx(dn,{type:"password",value:re.apiKey,onChange:B=>je({...re,apiKey:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"API key"}),c.jsx(dn,{value:re.model,onChange:B=>je({...re,model:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"Model id"})]})})]}),x==="keybindings"&&c.jsxs("div",{className:"border-b border-border",children:[wn?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:wn}):null,ae.warning?c.jsx("div",{className:"mb-4 rounded-lg border border-border bg-card/30 px-4 py-3 text-sm text-muted-foreground",children:ae.warning}):null,G$.map((B,ze)=>{const yt=SN($b[B]),yr=Ue[B]??"",Fd=yr!==yt;return c.jsx(wr,{title:Yge[B],description:c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Comma-separated shortcuts."}),Fd?c.jsxs(c.Fragment,{children:[c.jsx("span",{children:" "}),c.jsxs("button",{type:"button",onClick:()=>{Xa(B)},className:"inline rounded text-foreground hover:text-foreground/80",children:["Restore: ",yt]})]}):null]}),bordered:ze!==0,children:c.jsx("div",{className:"flex min-w-0 max-w-[420px] flex-1 flex-col items-stretch gap-2",children:c.jsx(dn,{type:"text",value:yr,onChange:_a=>{const wy=_a.target.value;un({...Ue,[B]:wy})},onBlur:()=>{zl()},onKeyDown:_a=>It(_a,()=>{zl()}),className:"font-mono"})})},B)})]}),x==="skills"&&c.jsx(t8e,{state:n}),x==="subagents"&&c.jsx(q6e,{state:n}),x==="models"&&c.jsx(vFe,{state:n}),x==="mcp-servers"&&c.jsx(dFe,{state:n}),x==="snippets"&&c.jsx(SFe,{state:n}),x==="instructions"&&c.jsx(r8e,{state:n}),!["general","providers","keybindings","skills","subagents","models","mcp-servers","snippets","instructions"].includes(x)&&c.jsx(YFe,{status:s,releases:p,error:v,onRetry:uu,updateSnapshot:Be,currentVersion:w,onInstallUpdate:B=>n.handleInstallUpdate(B),onCheckForUpdates:()=>{n.handleCheckForUpdates({force:!0})},onForceReload:()=>n.handleForceReload()})]}),n.commandError?c.jsxs("div",{className:"mx-auto mt-4 flex max-w-4xl items-start gap-3 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:[c.jsx(doe,{className:"mt-0.5 h-4 w-4 flex-shrink-0"}),c.jsx("span",{children:n.commandError})]}):null]})]})]}),J?c.jsx("div",{className:"absolute bottom-0 left-0 right-0 border-t border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80",children:c.jsx("div",{className:"px-6 py-[14.25px]",children:c.jsxs("div",{className:"grid gap-3 text-xs text-muted-foreground grid-cols-2 lg:grid-cols-4",children:[c.jsxs("div",{children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Machine"}),c.jsx("div",{className:"text-foreground/80",children:C})]}),c.jsxs("div",{className:"hidden md:block",children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Connection"}),c.jsx("div",{className:"text-foreground/80",children:n.connectionStatus})]}),c.jsxs("div",{className:"hidden md:block",children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Projects Indexed"}),c.jsx("div",{className:"text-foreground/80",children:k})]}),c.jsxs("div",{children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"App Version"}),c.jsx("div",{className:"text-foreground/80",children:w})]})]})})}):null,c.jsx(To,{open:rt,onOpenChange:gt,children:c.jsxs(io,{size:"lg",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Tracked Events"}),c.jsx("div",{className:"text-sm text-muted-foreground",children:"Kanna sends these event names plus the limited property keys below, depending on the event type."}),c.jsxs("div",{className:"max-h-[60vh] overflow-auto rounded-lg border border-border bg-muted/40 p-3",children:[c.jsx("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Event Names"}),c.jsx("ul",{className:"mt-3 space-y-2 text-sm",children:Ja.map(B=>c.jsx("li",{className:"font-mono text-foreground",children:B},B))}),c.jsx("div",{className:"mt-6 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Property Keys"}),c.jsx("ul",{className:"mt-3 space-y-2 text-sm",children:P6e.map(B=>c.jsx("li",{className:"font-mono text-foreground",children:B},B))})]})]}),c.jsx(Lc,{children:c.jsx(Me,{variant:"secondary",size:"sm",onClick:()=>gt(!1),children:"Close"})})]})}),c.jsx(To,{open:Ot,onOpenChange:xt,children:c.jsxs(io,{size:"lg",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Validation Error"}),c.jsx("pre",{className:"max-h-[60vh] overflow-auto rounded-lg border border-border bg-muted p-3 text-xs font-mono whitespace-pre-wrap break-words",children:be})]}),c.jsx(Lc,{children:c.jsx(Me,{variant:"secondary",size:"sm",onClick:()=>xt(!1),children:"Close"})})]})})]})}function PU(e){return{toggleEmbeddedTerminal:ka(e.toggleEmbeddedTerminal??""),toggleRightSidebar:ka(e.toggleRightSidebar??""),openInFinder:ka(e.openInFinder??""),openInEditor:ka(e.openInEditor??""),addSplitTerminal:ka(e.addSplitTerminal??""),jumpToSidebarChat:ka(e.jumpToSidebarChat??""),createChatInCurrentProject:ka(e.createChatInCurrentProject??""),openAddProject:ka(e.openAddProject??""),newStack:ka(e.newStack??""),newStackChat:ka(e.newStackChat??""),jumpToStacks:ka(e.jumpToStacks??"")}}const qu=qt("WorkflowsPageView",()=>e=>({selectedRunId:null,selectedRun:null,selectedAgentId:null,setSelectedRunId:t=>e({selectedRunId:t}),setSelectedRun:t=>e({selectedRun:t}),setSelectedAgentId:t=>e({selectedAgentId:t}),clearSelection:()=>e({selectedRunId:null,selectedRun:null,selectedAgentId:null})})),s8e=[],Yu=qt("WorkflowAgentTranscript",()=>e=>({loadState:"loading",messages:s8e,error:null,reloadNonce:0,setLoaded:t=>e({loadState:"loaded",messages:t}),setError:t=>e({loadState:"error",error:t}),refresh:()=>e(t=>({loadState:"loading",error:null,reloadNonce:t.reloadNonce+1}))}));function o8e({runId:e,agentId:t,agentLabel:n,promptPreview:r,agentIsRunning:i=!1,onClose:s,getTranscript:o}){const a=Yu.useScopedStore(x=>x.loadState),l=Yu.useScopedStore(x=>x.messages),d=Yu.useScopedStore(x=>x.error),h=Yu.useScopedStore(x=>x.reloadNonce),p=Yu.useScopedStore(x=>x.setLoaded),m=Yu.useScopedStore(x=>x.setError),v=Yu.useScopedStore(x=>x.refresh);_.useEffect(()=>{let x=!1;return o(e,t).then(S=>{x||p($1(S))}).catch(S=>{x||m(S instanceof Error?S.message:"Failed to load agent transcript")}),()=>{x=!0}},[e,t,o,h,p,m]);const b=_.useCallback(()=>{v()},[v]);return c.jsxs("div",{className:"flex min-h-0 flex-col gap-3","data-testid":"workflow-agent-transcript-panel",children:[c.jsxs("div",{className:"flex items-center gap-2 border-b border-border pb-2.5",children:[c.jsx("button",{type:"button",onClick:s,"aria-label":"Back to run",className:"inline-flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(f2,{className:"size-4","aria-hidden":!0})}),c.jsx("span",{className:"truncate text-sm font-semibold text-foreground",children:n}),c.jsx("span",{className:"shrink-0 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Transcript"}),i?c.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide",children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block size-1.5 animate-pulse rounded-full bg-emerald-500 dark:bg-emerald-400"}),c.jsx("span",{className:"text-emerald-500 dark:text-emerald-400",children:"Running"})]}):null,c.jsx("button",{type:"button",onClick:b,"aria-label":"Refresh transcript",className:"ml-auto inline-flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(sj,{className:a==="loading"?"size-3.5 animate-spin":"size-3.5","aria-hidden":!0})})]}),i?c.jsx("p",{className:"rounded-md border border-amber-500/20 bg-amber-500/5 px-2.5 py-1.5 text-[11px] text-amber-600 dark:text-amber-400",children:"This agent is still running — the transcript may be incomplete. Refresh to update."}):null,r?c.jsxs("div",{className:"rounded-md border border-border/50 bg-muted/40 px-2.5 py-1.5",children:[c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Prompt (preview)"}),c.jsx("p",{className:"whitespace-pre-wrap break-words text-xs text-muted-foreground/90",children:r})]}):null,c.jsx(AZ,{value:null,children:c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 overflow-auto",children:[a==="loading"?c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[c.jsx(jn,{className:"size-3 animate-spin","aria-label":"Loading"}),"Loading transcript…"]}):null,a==="error"?c.jsx("div",{className:"text-xs text-destructive",children:d}):null,a==="loaded"&&l.length===0?c.jsx("div",{className:"text-xs text-muted-foreground",children:"No transcript recorded yet."}):null,l.map(x=>c.jsx(vL,{message:x,localPath:""},x.id))]})})]})}function a8e(e){return c.jsx(Yu.Provider,{init:void 0,children:c.jsx(o8e,{...e})})}function l8e({runs:e,getRunDetail:t,getAgentTranscript:n,onBackToChat:r}){const i=qu.useScopedStore(w=>w.selectedRunId),s=qu.useScopedStore(w=>w.selectedRun),o=qu.useScopedStore(w=>w.selectedAgentId),a=qu.useScopedStore(w=>w.setSelectedRunId),l=qu.useScopedStore(w=>w.setSelectedRun),d=qu.useScopedStore(w=>w.setSelectedAgentId),h=qu.useScopedStore(w=>w.clearSelection),p=_.useRef(null),m=_.useRef(0),v=_.useCallback(async w=>{p.current=e,a(w),d(null),l("loading");const N=++m.current,A=await t(w);m.current===N&&l(A??"not-found")},[t,e,a,d,l]),b=_.useCallback(()=>{h(),p.current=null},[h]);_.useEffect(()=>{if(i===null||e===p.current)return;const w=e.find(T=>T.runId===i);if(!w||w.status!=="running")return;let N=!1;const A=++m.current;return t(i).then(T=>{N||m.current!==A||T===null||o!==null&&!T.agents.some(M=>M.agentId===o)||l(T)}),()=>{N=!0}},[e,i,o,t,l]);const x=s!=="loading"&&s!=="not-found"?s:null,S=o!==null&&x?x.agents.find(w=>w.agentId===o):void 0,C=i!==null;let k;return s==="loading"?k=c.jsxs("div",{className:"flex h-full items-center justify-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-4 animate-spin","aria-label":"Loading"}),"Loading run…"]}):s==="not-found"?k=c.jsx(LU,{text:"Run not found or no longer available."}):S&&x?k=c.jsx(a8e,{runId:x.runId,agentId:S.agentId,agentLabel:S.label,promptPreview:S.promptPreview,agentIsRunning:S.state==="running"||S.state==="progress",onClose:()=>d(null),getTranscript:n},o??""):x?k=c.jsx(pQ,{run:x,title:x.workflowName??x.runId,onSelectAgent:w=>d(w)}):k=c.jsx(LU,{text:"Select a run to view its phases and agents."}),c.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[c.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-4 py-3 md:px-6",children:[c.jsx(lj,{className:"size-5 shrink-0 text-muted-foreground","aria-hidden":!0}),c.jsx("h1",{className:"text-lg font-semibold text-foreground",children:"Workflows"}),e.length>0?c.jsxs("span",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground tabular-nums",style:{fontVariantNumeric:"tabular-nums"},children:[e.length," ",e.length===1?"run":"runs"]}):null,r?c.jsx(bm,{"aria-label":"Back to chat",className:"ml-auto",icon:c.jsx(f2,{className:"size-3.5","aria-hidden":!0}),onClick:r,children:"Back to chat"}):null]}),c.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[c.jsx("div",{className:fe("w-full shrink-0 overflow-auto p-3 md:w-80 md:border-r md:border-border",C&&"hidden md:block"),children:c.jsx(hQ,{runs:e,selectedRunId:i,onSelectRun:w=>{v(w)}})}),c.jsxs("div",{className:fe("min-w-0 flex-1 overflow-auto px-4 py-4 md:px-6",!C&&"hidden md:block"),children:[C?c.jsxs("button",{type:"button",onClick:b,"aria-label":"Back to runs",className:"mb-3 inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground md:hidden",children:[c.jsx(f2,{className:"size-3.5","aria-hidden":!0}),"All runs"]}):null,k]})]})]})}function c8e(e){return c.jsx(qu.Provider,{init:void 0,children:c.jsx(l8e,{...e})})}function LU({text:e}){return c.jsx("div",{className:"flex h-full items-center justify-center",children:c.jsxs("div",{className:"flex flex-col items-center gap-3 rounded-lg border border-dashed border-border px-8 py-10 text-center",children:[c.jsx("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:c.jsx(lj,{className:"size-5","aria-hidden":!0})}),c.jsx("p",{className:"text-sm text-muted-foreground",children:e})]})})}function u8e(){const e=dC(),t=Ad(),{chatId:n}=fC(),r=z1(vm(hL(n??""))),i=_.useCallback(async a=>n?e.socket.command({type:"workflows.getRun",chatId:n,runId:a}):null,[n,e.socket]),s=_.useCallback(async(a,l)=>n?e.socket.command({type:"workflows.getAgentTranscript",chatId:n,runId:a,agentId:l}):[],[n,e.socket]),o=_.useCallback(()=>{n&&t(`/chat/${n}`)},[n,t]);return n?c.jsx(c8e,{runs:r,getRunDetail:i,getAgentTranscript:s,onBackToChat:o}):c.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Open a chat to view its workflows."})}function d8e({label:e="Preparing workspace"}){return c.jsx("div",{role:"status","aria-live":"polite","aria-busy":"true",className:"flex min-h-[100dvh] w-full items-center justify-center bg-background px-6 animate-fade-in",children:c.jsxs("div",{className:"flex flex-col items-center gap-6",children:[c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(fd,{className:"size-6 text-logo","aria-hidden":!0}),c.jsx("span",{className:"font-logo text-lg tracking-tight text-foreground",children:$r})]}),c.jsxs("div",{className:"flex w-[220px] flex-col items-center gap-3",children:[c.jsx("div",{className:"relative h-px w-full overflow-hidden rounded-full bg-border/60",children:c.jsx("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 block h-full w-1/3 bg-foreground/70 motion-safe:animate-kanna-bootstrap-sweep motion-reduce:left-0 motion-reduce:w-full motion-reduce:opacity-40"})}),c.jsxs("p",{className:"text-[12px] tabular-nums text-muted-foreground",children:[e,"…"]})]})]})})}const WM=_.memo(d8e);function f8e(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function h8e(e){if(typeof e=="string")return e;if(e==null)return"";try{return JSON.stringify(e,null,2)}catch{return String(e)}}function p8e({message:e}){switch(e.kind){case"user_prompt":return c.jsx("div",{className:"flex justify-end",children:c.jsx("div",{className:"max-w-[85%] sm:max-w-[80%] rounded-[20px] border border-border bg-muted px-3.5 py-1.5 text-primary prose prose-sm prose-invert [&_p]:whitespace-pre-line",children:Yc(e.text)})});case"assistant_text":return c.jsx("div",{className:"text-pretty prose prose-sm dark:prose-invert w-full max-w-[70ch] space-y-4",children:Yc(e.text)});case"assistant_thinking":return c.jsx("div",{className:"w-full max-w-[70ch]",children:c.jsx(B1,{content:e.text})});case"tool_call":return c.jsxs("div",{className:"rounded-lg border border-border bg-card/40 overflow-hidden",children:[c.jsx("div",{className:"flex items-center gap-2 px-3 py-1.5 text-xs font-mono text-muted-foreground border-b border-border bg-muted/40",children:c.jsx("span",{className:"font-semibold text-foreground",children:e.name})}),c.jsx(Bv,{source:f8e(e.input),lang:"json"})]});case"tool_result":{const t=h8e(e.output);return t?c.jsxs("div",{className:`rounded-lg border overflow-hidden ${e.isError?"border-destructive/40 bg-destructive/5":"border-border bg-muted/30"}`,children:[c.jsx("div",{className:"px-3 py-1 text-[11px] font-mono uppercase tracking-wide text-muted-foreground",children:e.isError?"tool error":"tool result"}),c.jsx(Bv,{source:t,lang:"json"})]}):null}case"diff":return c.jsxs("div",{className:"rounded-lg border border-border overflow-hidden",children:[c.jsx("div",{className:"px-3 py-1 text-xs font-mono text-muted-foreground border-b border-border bg-muted/40",children:e.path}),c.jsx(Bv,{source:e.patch,lang:"diff"})]});case"terminal_chunk":return c.jsx("div",{className:"rounded-lg border border-border overflow-hidden",children:c.jsx(Bv,{source:e.chunk,lang:"bash"})});case"omitted":return c.jsxs("div",{className:"text-center text-xs italic text-muted-foreground",children:["[content omitted: ",e.reason,"]"]})}}function m8e({snapshot:e}){const{chatMeta:t,messages:n}=e;return c.jsx(bOe,{value:{readonly:!0,localLinkMode:"text"},children:c.jsxs("main",{className:"h-[100dvh] overflow-y-auto overscroll-contain bg-background text-foreground",children:[c.jsx("header",{className:"sticky top-0 z-10 border-b border-border bg-background/95 backdrop-blur",children:c.jsxs("div",{className:"mx-auto flex w-full max-w-[800px] items-center gap-3 px-4 py-3 sm:px-6",children:[c.jsx(fd,{className:"h-5 w-5 text-logo shrink-0","aria-hidden":!0}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("h1",{className:"truncate text-sm font-semibold text-foreground",children:t.title}),c.jsxs("p",{className:"truncate text-xs text-muted-foreground",children:["Read-only · model ",t.model]})]}),c.jsx("span",{className:"shrink-0 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Shared"})]})}),c.jsxs("ol",{className:"mx-auto flex w-full max-w-[800px] flex-col gap-6 px-4 py-8 sm:px-6",children:[n.map(r=>c.jsx("li",{className:"contents",children:c.jsx(p8e,{message:r})},r.id)),n.length===0?c.jsx("li",{className:"text-center text-sm text-muted-foreground",children:"This shared chat has no messages."}):null]})]})})}const VM=qt("SharePage",()=>e=>({loadState:{kind:"loading"},setLoadState:t=>e({loadState:t})}));function g8e(e){switch(e.kind){case"not_found":return"Share not found";case"revoked":return"Share revoked";case"expired":return"Share expired";case"snapshot_read_failed":return"Share temporarily unavailable";default:return"Share error"}}function v8e(e){switch(e.kind){case"not_found":return"This share link does not exist.";case"revoked":return"The owner has revoked this share.";case"expired":return`This share expired on ${new Date(e.expiredAt).toISOString()}.`;case"snapshot_read_failed":return"Try again later.";default:return"Unexpected error."}}function b8e({token:e}){const t=VM.useScopedStore(r=>r.loadState),n=VM.useScopedStore(r=>r.setLoadState);return _.useEffect(()=>{let r=!1;const i=new AbortController;return fetch(`/api/share/${encodeURIComponent(e)}`,{signal:i.signal}).then(async s=>{const o=await s.json();r||(o.ok?n({kind:"ok",snapshot:o.snapshot}):n({kind:"error",error:o.error,status:s.status}))}).catch(s=>{r||s instanceof Error&&s.name==="AbortError"||n({kind:"error",error:{kind:"snapshot_read_failed",message:String(s)},status:0})}),()=>{r=!0,i.abort()}},[e,n]),t.kind==="loading"?c.jsx("main",{className:"kanna-share-view","data-state":"loading",children:c.jsx("p",{children:"Loading shared chat…"})}):t.kind==="error"?c.jsxs("main",{className:"kanna-share-view","data-state":"error",children:[c.jsx("h1",{children:g8e(t.error)}),c.jsx("p",{children:v8e(t.error)})]}):c.jsx(m8e,{snapshot:t.snapshot})}function x8e(){const t=fC().token??"";return c.jsx(VM.Provider,{init:{},children:c.jsx(b8e,{token:t})})}const bee=768,y8e=0,xee=60,_8e=60,S8e=1.5,w8e=500,C8e=8;function k8e(e,t,n){if(n.viewportWidth>=bee)return null;const r=t.x-e.x,i=t.y-e.y;return t.t-e.t>w8e||Math.abs(r)<_8e||Math.abs(r)<Math.abs(i)*S8e?null:!n.sidebarOpen&&r>0?e.x<y8e||e.x>xee?null:"open":n.sidebarOpen&&r<0?"close":null}function E8e(e,t,n){if(n.viewportWidth>=bee)return!1;const r=t.x-e.x,i=t.y-e.y;return Math.abs(r)<C8e||Math.abs(r)<=Math.abs(i)?!1:n.sidebarOpen?r<0:r>0&&e.x<=xee}function N8e({sidebarOpen:e,onOpen:t,onClose:n}){_.useEffect(()=>{if(typeof window>"u")return;let r=null;function i(l){if(l.touches.length!==1){r=null;return}const d=l.touches[0];d&&(r={x:d.clientX,y:d.clientY,t:l.timeStamp})}function s(l){const d=r;if(!d||l.touches.length!==1)return;const h=l.touches[0];if(!h)return;E8e(d,{x:h.clientX,y:h.clientY,t:l.timeStamp},{sidebarOpen:e,viewportWidth:window.innerWidth})&&l.cancelable&&l.preventDefault()}function o(l){const d=r;if(r=null,!d)return;const h=l.changedTouches[0];if(!h)return;const p=k8e(d,{x:h.clientX,y:h.clientY,t:l.timeStamp},{sidebarOpen:e,viewportWidth:window.innerWidth});p==="open"?t():p==="close"&&n()}function a(){r=null}return window.addEventListener("touchstart",i,{passive:!0}),window.addEventListener("touchmove",s,{passive:!1}),window.addEventListener("touchend",o,{passive:!0}),window.addEventListener("touchcancel",a,{passive:!0}),()=>{window.removeEventListener("touchstart",i),window.removeEventListener("touchmove",s),window.removeEventListener("touchend",o),window.removeEventListener("touchcancel",a)}},[e,t,n])}const Xp=tr()(e=>({authStatus:{status:"checking"},permissionsChatId:null,setAuthStatus:t=>e({authStatus:t}),setPermissionsChatId:t=>e({permissionsChatId:t})})),Qv=qt("PasswordScreen",()=>e=>({password:"",submitting:!1,setPassword:t=>e({password:t}),setSubmitting:t=>e({submitting:t})})),OU="kanna:last-seen-version",DU=500;function T8e(e){return!e.enabled||e.authenticated?{status:"ready"}:{status:"locked",error:null}}function A8e(e){return e!==!0}function R8e({error:e,onSubmit:t}){const n=Qv.useScopedStore(a=>a.password),r=Qv.useScopedStore(a=>a.submitting),i=Qv.useScopedStore(a=>a.setPassword),s=Qv.useScopedStore(a=>a.setSubmitting);async function o(a){if(a.preventDefault(),!(!n||r)){s(!0);try{await t(n),i("")}finally{s(!1)}}}return c.jsx("div",{className:"flex min-h-[100dvh] items-center justify-center bg-background px-6 py-10",children:c.jsxs(Mj,{className:"w-full max-w-md rounded-3xl border border-border bg-card shadow-sm",children:[c.jsxs(jj,{className:"flex flex-col p-2 space-y-3 px-6 pt-6 pb-5 pl-[28px]",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(fd,{className:"h-5 w-5 text-logo"}),c.jsx("div",{children:c.jsx(u9,{className:"font-logo text-xl uppercase text-foreground",children:$r})})]}),c.jsx(d9,{className:"leading-6",children:"Enter your password to continue."})]}),c.jsx(Ij,{className:"px-6 pb-6",children:c.jsxs("form",{className:"space-y-4",onSubmit:a=>void o(a),children:[e?c.jsx("div",{className:"rounded-2xl border border-destructive/20 bg-destructive/10 px-4 py-3 text-sm text-foreground",children:e}):null,c.jsx(dn,{id:"kanna-password",type:"password",autoComplete:"current-password",value:n,onChange:a=>i(a.target.value),placeholder:"Password",disabled:r,className:"h-11 rounded-2xl bg-background"}),c.jsx(Me,{type:"submit",disabled:r||n.length===0,className:"h-11 w-full",children:r?"Unlocking...":"Unlock"})]})})]})})}function M8e({error:e,onSubmit:t}){return c.jsx(Qv.Provider,{init:{},children:c.jsx(R8e,{error:e,onSubmit:t})})}function j8e(){const e=Xp(s=>s.authStatus),t=_.useRef(null),n=_.useRef(async()=>{}),r=_.useCallback(async()=>{t.current!==null&&(window.clearTimeout(t.current),t.current=null);const{authStatus:s,setAuthStatus:o}=Xp.getState();o(s.status==="ready"?s:{status:"checking"});let a;try{a=await fetch("/auth/status",{method:"GET",cache:"no-store",headers:{Accept:"application/json"}})}catch{t.current=window.setTimeout(()=>{n.current()},DU);return}if(A8e(a.ok)){t.current=window.setTimeout(()=>{n.current()},DU);return}const l=await a.json();Xp.getState().setAuthStatus(T8e(l))},[]);_.useLayoutEffect(()=>{n.current=r}),_.useEffect(()=>(r(),()=>{t.current!==null&&window.clearTimeout(t.current)}),[r]);const i=_.useCallback(async s=>{if(!(await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({password:s,next:window.location.pathname+window.location.search})})).ok){Xp.getState().setAuthStatus({status:"locked",error:"Incorrect password. Try again."});return}await r()},[r]);return{state:e,submitPassword:i}}function I8e(e,t,n){return e==="/"&&!!t&&n!==t}function P8e(e,t,n=document){return!!e&&Ife(t,n)}function L8e(){var ne,ie,ae;const e=qa(),t=Ad(),n=fC(),r=lLe(n.chatId??null),i=zx(),s=Rf(Q=>Q.chatSoundPreference),o=Rf(Q=>Q.chatSoundId),a=e.pathname==="/",l=Pj.split("/")[1]??"unknown";N8e({sidebarOpen:r.sidebarOpen,onOpen:r.openSidebar,onClose:r.closeSidebar});const d=_.useRef(null),{handleCreateChat:h,handleForkChat:p,handleRenameChat:m,handleArchiveChat:v,handleOpenArchivedChat:b,openAddProjectModal:x,handleDeleteChat:S,handleCopyPath:C,handleOpenExternalPath:k,handleHideProject:w,handleToggleProjectStar:N,handleReorderProjectGroups:A,importClaudeSessions:T}=r,M=_.useCallback(Q=>{h(Q)},[h]),j=_.useCallback(Q=>{p(Q)},[p]),P=_.useCallback(Q=>{m(Q)},[m]),D=_.useCallback(Q=>{v(Q)},[v]),L=_.useCallback(Q=>{b(Q)},[b]),I=_.useCallback(()=>{x()},[x]),$=_.useCallback(Q=>{S(Q)},[S]),H=_.useCallback(Q=>{C(Q)},[C]),z=_.useCallback((Q,ke)=>{k(Q,ke)},[k]),F=_.useCallback(Q=>{w(Q)},[w]),K=_.useCallback((Q,ke)=>{N(Q,ke)},[N]),W=_.useCallback(Q=>{A(Q)},[A]),V=_.useCallback(async()=>{try{const Q=await T(),ke=[`Imported ${Q.imported}`,`updated ${Q.updated}`,`skipped ${Q.skipped}`,`failed ${Q.failed}`],we=Q.newProjects>0?` (${Q.newProjects} new projects)`:"";await i.alert({title:"Import complete",description:`${ke.join(", ")}.${we}`})}catch(Q){Qs.error("[kanna/import] failed",String(Q)),await i.alert({title:"Import failed",description:"See console for details."})}},[i,T]),X=Xp(Q=>Q.permissionsChatId),G=Xp(Q=>Q.setPermissionsChatId),te=_.useCallback(Q=>{G(Q),r.activeChatId!==Q&&t(`/chat/${Q}`)},[t,G,r.activeChatId]),oe=((ne=r.chatSnapshot)==null?void 0:ne.runtime.title)??"Chat",ce=((ie=r.chatSnapshot)==null?void 0:ie.runtime.policyOverride)??null,de=_.useMemo(()=>c.jsx(dve,{data:r.sidebarData,activeChatId:r.activeChatId,connectionStatus:r.connectionStatus,open:r.sidebarOpen,collapsed:r.sidebarCollapsed,showMobileOpenButton:a,onOpen:r.openSidebar,onClose:r.closeSidebar,onCollapse:r.collapseSidebar,onExpand:r.expandSidebar,onCreateChat:M,onForkChat:j,currentProjectId:r.activeProjectId,keybindings:r.keybindings,onRenameChat:P,onArchiveChat:D,onOpenArchivedChat:L,onDeleteChat:$,onEditChatPermissions:te,onOpenAddProjectModal:I,onImportClaudeSessions:V,onCopyPath:H,onOpenExternalPath:z,onHideProject:F,onToggleStar:K,onReorderProjectGroups:W,onCreateStack:r.handleCreateStack,onRenameStack:r.handleRenameStack,onRemoveStack:r.handleRemoveStack,onCreateStackChat:r.handleCreateStackChat,onListStackWorktrees:r.handleListStackWorktrees,editorLabel:r.editorLabel,updateSnapshot:r.updateSnapshot}),[I,V,H,M,D,$,L,j,z,P,te,W,F,K,a,r.activeChatId,r.activeProjectId,r.keybindings,r.closeSidebar,r.collapseSidebar,r.connectionStatus,r.editorLabel,r.expandSidebar,r.openSidebar,r.sidebarCollapsed,r.sidebarData,r.sidebarOpen,r.updateSnapshot,r.handleCreateStack,r.handleRenameStack,r.handleRemoveStack,r.handleCreateStackChat,r.handleListStackWorktrees]);_.useEffect(()=>{const Q=window.localStorage.getItem(OU),ke=I8e(e.pathname,l,Q);window.localStorage.setItem(OU,l),ke&&t("/settings/changelog",{replace:!0})},[l,e.pathname,t]),_.useLayoutEffect(()=>{document.title=$r},[e.key]),_.useEffect(()=>{function Q(){document.title=$r}function ke(){document.title=$r}return window.addEventListener("pageshow",Q),window.addEventListener("pagehide",ke),()=>{window.removeEventListener("pageshow",Q),window.removeEventListener("pagehide",ke)}},[]),_.useEffect(()=>{const Q=Pfe(r.sidebarData);document.title=Q>0?`[${Q}] ${$r}`:$r},[r.sidebarData]),_.useEffect(()=>{const Q=Lfe(d.current,r.sidebarData);d.current=r.sidebarData,!(Q<=0)&&P8e(r.appSettings,s)&&C2(o,Q).catch(()=>{})},[o,s,r.appSettings,r.sidebarData]);const ee=((ae=r.appSettings)==null?void 0:ae.claudeDriver.preference)==="pty";return r.uiRestartActive?c.jsx(WM,{label:r.uiRestartLabel}):r.sidebarReady?c.jsxs("div",{className:"flex flex-col h-[100dvh] min-h-[100dvh] overflow-hidden",children:[ee?c.jsxs(dfe,{variant:"warning",children:[c.jsx("span",{className:"font-medium text-foreground",children:"PTY driver active."}),c.jsxs("span",{className:"text-muted-foreground",children:["Tools run under the ",c.jsx("code",{className:"font-mono",children:"claude"})," CLI with subscription billing. Use a worktree for risky tasks."]})]}):null,c.jsxs("div",{className:"flex flex-1 min-h-0 overflow-hidden",children:[de,c.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:c.jsx(Pre,{context:r})})]}),c.jsx(ife,{open:X!=null&&X===r.activeChatId,chatTitle:oe,baseline:afe,current:ce,onCancel:()=>G(null),onApply:Q=>{X&&(r.handleSetChatPolicyOverride(X,Q).catch(()=>{}),G(null))}})]}):c.jsx(WM,{label:"Connecting to workspace"})}function O8e(){const e=j8e();return e.state.status==="checking"?c.jsx(WM,{label:"Checking session"}):e.state.status==="locked"?c.jsx(M8e,{error:e.state.error,onSubmit:e.submitPassword}):c.jsx(o7,{children:c.jsxs(vc,{element:c.jsx(L8e,{}),children:[c.jsx(vc,{path:"/",element:c.jsx(j6e,{})}),c.jsx(vc,{path:"/settings",element:c.jsx(Ire,{to:"/settings/general",replace:!0})}),c.jsx(vc,{path:"/settings/:sectionId",element:c.jsx(i8e,{})}),c.jsx(vc,{path:"/chat/:chatId",element:c.jsx(S6e,{})}),c.jsx(vc,{path:"/workflows/:chatId",element:c.jsx(u8e,{})})]})})}function D8e(){return c.jsx(Aj,{children:c.jsxs(lfe,{children:[c.jsxs(o7,{children:[c.jsx(vc,{path:"/share/:token",element:c.jsx(x8e,{})}),c.jsx(vc,{path:"*",element:c.jsx(O8e,{})})]}),c.jsx(mfe,{})]})})}const yee=document.getElementById("root");if(!yee)throw new Error("Missing #root");One.createRoot(yee).render(c.jsx(_.StrictMode,{children:c.jsx(sie,{children:c.jsx(fMe,{children:c.jsx(D8e,{})})})}));export{$n as R,Z as _,d7 as a,HU as g};
|
|
2777
|
+
`)){const Xe=Ae.indexOf(":");Xe>0&&(we[Ae.slice(0,Xe).trim()]=Ae.slice(Xe+1).trim())}if(e){const Ae=M==="stdio"?{name:T,transport:M,command:j,args:Q,env:ke,cwd:L||void 0}:{name:T,transport:M,url:I,headers:we};await r.onUpdate(e.id,Ae)}else{const Ae=M==="stdio"?{name:T,transport:"stdio",command:j,args:Q,env:ke,cwd:L||void 0}:{name:T,transport:M,url:I,headers:we};await r.onCreate(Ae)}n()}catch(Q){b(Q instanceof Error?Q.message:String(Q))}finally{x(!1)}}},[P,j,L,D,r,$,e,T,ne,n,M,I,x,b]);let ae;return z?ae="Saving…":e?ae="Save changes":ae="Add server",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6 max-w-2xl",children:[c.jsx("h2",{className:"text-base font-medium",children:e?"Edit MCP server":"Add MCP server"}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Name"}),c.jsx(dn,{value:T,onChange:Q=>o(Q.target.value),placeholder:"fs"}),ne&&c.jsx("p",{className:"text-xs text-red-600",children:ne})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Transport"}),c.jsxs(Qo,{value:M,onValueChange:Q=>{sFe(Q)&&a(Q)},children:[c.jsx(Co,{children:c.jsx(ja,{})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"stdio",children:"stdio (spawn local command)"}),c.jsx(ri,{value:"http",children:"http (Streamable HTTP)"}),c.jsx(ri,{value:"sse",children:"sse (Server-Sent Events)"}),c.jsx(ri,{value:"ws",children:"ws (WebSocket)"})]})]})]}),M==="stdio"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Command"}),c.jsx(dn,{value:j,onChange:Q=>l(Q.target.value),placeholder:"/usr/local/bin/mcp-filesystem"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Args (one per line)"}),c.jsx(Al,{value:P,onChange:Q=>d(Q.target.value),rows:3,className:"font-mono text-sm"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Env (KEY=value, one per line)"}),c.jsx(Al,{value:D,onChange:Q=>h(Q.target.value),rows:3,className:"font-mono text-sm"})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"cwd (optional)"}),c.jsx(dn,{value:L,onChange:Q=>p(Q.target.value),placeholder:"/optional/working/dir"})]})]}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"URL"}),c.jsx(dn,{value:I,onChange:Q=>m(Q.target.value),placeholder:M==="ws"?"wss://example.com/mcp":"https://example.com/mcp"})]}),M==="ws"?c.jsx("p",{className:"text-xs text-muted-foreground",children:"Headers are not supported on the ws transport."}):c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-foreground",children:"Headers (Key: value, one per line)"}),c.jsx(Al,{value:$,onChange:Q=>v(Q.target.value),rows:3,className:"font-mono text-sm",disabled:F}),F&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Authorization header is managed by OAuth when enabled."})]}),(M==="http"||M==="sse")&&c.jsxs("div",{className:"flex flex-col gap-3 rounded-md border p-3",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(y7,{className:"h-4 w-4 text-muted-foreground","aria-hidden":!0}),c.jsx("span",{className:"text-xs font-medium",children:"OAuth 2.1"}),c.jsxs("label",{className:"ml-auto flex cursor-pointer items-center gap-1 text-xs text-muted-foreground",children:[c.jsx("input",{type:"checkbox",checked:F,onChange:Q=>{ce(Q.target.checked)},"aria-label":"Enable OAuth"}),c.jsx("span",{children:"Enable"})]})]}),F&&!e&&c.jsx("p",{className:"text-xs text-muted-foreground",children:"Save the server first, then authenticate."}),F&&e&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(gee,{oauth:oe}),(oe==null?void 0:oe.status)==="authenticated"&&c.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>{de()},disabled:X,children:"Re-authenticate"})]}),((oe==null?void 0:oe.status)!=="authenticated"||K)&&(K?c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsxs("div",{className:"flex items-center gap-1",children:[c.jsxs("a",{href:K,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1 text-xs text-blue-600 underline",children:["Open authorization URL",c.jsx(nj,{className:"h-3 w-3"})]}),c.jsx("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(K)},className:"ml-1 text-muted-foreground hover:text-foreground",title:"Copy URL","aria-label":"Copy authorization URL",children:c.jsx(Ba,{className:"h-3 w-3"})})]}),c.jsxs("div",{className:"grid gap-1",children:[c.jsx("span",{className:"text-xs text-muted-foreground",children:"After authorizing, paste the callback URL here:"}),c.jsx(dn,{value:W,onChange:Q=>k(Q.target.value),placeholder:"http://localhost:…/callback?code=…",className:"font-mono text-xs"})]}),c.jsx(Me,{variant:"outline",size:"sm",className:"w-fit",onClick:()=>{ee()},disabled:G||W.length===0,children:G?"Completing…":"Complete"})]}):c.jsx(Me,{variant:"outline",size:"sm",className:"w-fit",onClick:()=>{de()},disabled:X,children:X?"Starting…":"Authenticate"})),V&&c.jsx("p",{className:"text-xs text-red-600",children:V})]})]})]}),H&&c.jsx("p",{className:"text-xs text-red-600",children:H}),c.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[c.jsx(Me,{variant:"ghost",onClick:n,disabled:z,children:"Cancel"}),c.jsx(Me,{onClick:()=>{ie()},disabled:z||!!ne||T.length===0,children:ae})]})]})}function dFe(e){const t=jr(oMe),n=Or(s=>s.editing),r=Or(s=>s.setEditing),i=_.useMemo(()=>({onCreate:async s=>{const o={customMcpServers:{create:s}};await e.state.handleWriteAppSettings(o)},onUpdate:async(s,o)=>{const a={customMcpServers:{update:{id:s,patch:o}}};await e.state.handleWriteAppSettings(a)},onDelete:async s=>{const o={customMcpServers:{delete:{id:s}}};await e.state.handleWriteAppSettings(o),r({kind:"list"})},onSetEnabled:async(s,o)=>{const a={customMcpServers:{setEnabled:{id:s,enabled:o}}};await e.state.handleWriteAppSettings(a)},onTest:async s=>{await e.state.handleTestMcpServer(s)},onStartMcpOAuth:async s=>e.state.handleStartMcpOAuth(s),onCompleteMcpOAuth:async(s,o)=>e.state.handleCompleteMcpOAuth(s,o)}),[e.state,r]);return c.jsx(oFe,{servers:t,editing:n,onSelect:s=>r({kind:"edit",id:s}),onStartCreate:()=>r({kind:"create"}),onCancelEditing:()=>r({kind:"list"}),handlers:i})}function wU(e,t,n,r){return{id:e,label:t,modelProvider:n,supportsEffort:r,submitting:!1,error:null}}const fl=tr()(e=>({editing:{kind:"list"},editorForm:wU("","","claude",!1),setEditing:t=>e({editing:t}),resetEditorForm:(t,n,r,i)=>e({editorForm:wU(t,n,r,i)}),setEditorId:t=>e(n=>({editorForm:{...n.editorForm,id:t}})),setEditorLabel:t=>e(n=>({editorForm:{...n.editorForm,label:t}})),setEditorModelProvider:t=>e(n=>({editorForm:{...n.editorForm,modelProvider:t}})),setEditorSupportsEffort:t=>e(n=>({editorForm:{...n.editorForm,supportsEffort:t}})),setEditorSubmitting:t=>e(n=>({editorForm:{...n.editorForm,submitting:t}})),setEditorError:t=>e(n=>({editorForm:{...n.editorForm,error:t}}))})),fFe=new Set(["claude","codex"]);function hFe(e){return fFe.has(e)}const CU={claude:"Claude",codex:"Codex"};function pFe({models:e,handlers:t}){const n=fl(o=>o.editing),r=fl(o=>o.setEditing),i=fl(o=>o.resetEditorForm);function s(o){if(o.kind==="create")i("","",o.provider,!1);else if(o.kind==="edit"){const a=e.find(l=>l.id===o.id)??null;a&&i(a.id,a.label,a.provider,a.supportsEffort??!1)}r(o)}if(n.kind!=="list"){const o=n.kind==="edit"?e.find(a=>a.id===n.id)??null:null;return c.jsx(gFe,{initial:o,existing:e.map(a=>({id:a.id,provider:a.provider})),handlers:t,onDone:()=>r({kind:"list"})})}return c.jsx("div",{className:"flex flex-col gap-6 px-6 py-6",children:["claude","codex"].map(o=>{const a=e.filter(l=>l.provider===o);return c.jsxs("div",{className:"flex flex-col gap-3",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("h2",{className:"text-base font-medium",children:[CU[o]," models"]}),c.jsxs(Me,{size:"sm",onClick:()=>s({kind:"create",provider:o}),children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add model"]})]}),a.length===0?c.jsxs("div",{className:"flex flex-col items-center justify-center rounded-md border border-dashed px-6 py-10 text-center",children:[c.jsx(p7,{className:"mb-3 h-8 w-8 text-muted-foreground","aria-hidden":!0}),c.jsxs("p",{className:"text-sm text-muted-foreground",children:["No ",CU[o]," models configured."]})]}):c.jsx("ul",{className:"flex flex-col divide-y rounded-md border",children:a.map(l=>c.jsx(mFe,{model:l,onEdit:()=>s({kind:"edit",id:l.id}),onDelete:()=>{window.confirm(`Delete model "${l.label}"?`)&&t.onDelete(l.id)}},l.id))})]},o)})})}function mFe({model:e,onEdit:t,onDelete:n}){return c.jsxs("li",{className:"flex items-center gap-3 px-4 py-3",children:[c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"font-medium",children:e.label}),c.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:e.id})]}),c.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[e.supportsEffort&&c.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase",children:"effort"}),e.supportsMaxReasoningEffort&&c.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase",children:"max"}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:t,"aria-label":`Edit ${e.label}`,children:c.jsx(Rd,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:n,"aria-label":`Delete ${e.label}`,children:c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function gFe({initial:e,existing:t,handlers:n,onDone:r}){const i=fl(T=>T.editorForm),s=fl(T=>T.setEditorId),o=fl(T=>T.setEditorLabel),a=fl(T=>T.setEditorModelProvider),l=fl(T=>T.setEditorSupportsEffort),d=fl(T=>T.setEditorSubmitting),h=fl(T=>T.setEditorError),{id:p,label:m,modelProvider:v,supportsEffort:b,submitting:x,error:S}=i,C=e!==null,k=_.useMemo(()=>!C&&t.some(T=>T.id===p.trim()&&T.provider===v),[t,p,C,v]),w=p.trim().length>0&&m.trim().length>0&&!k&&!x,N=async()=>{d(!0),h(null);try{C&&e?await n.onUpdate(e.id,{label:m.trim(),supportsEffort:b}):await n.onCreate({id:p.trim(),label:m.trim(),provider:v,supportsEffort:b}),r()}catch(T){h(T instanceof Error?T.message:"Failed to save model")}finally{d(!1)}};let A;return x?A="Saving…":C?A="Save changes":A="Add model",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsx("h2",{className:"text-base font-medium",children:C?"Edit model":"Add model"}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Provider"}),c.jsxs(Qo,{value:v,onValueChange:T=>{hFe(T)&&a(T)},disabled:C,children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsxs(ko,{children:[c.jsx(ri,{value:"claude",children:"Claude"}),c.jsx(ri,{value:"codex",children:"Codex"})]})]})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Model ID"}),c.jsx(dn,{value:p,onChange:T=>s(T.target.value),placeholder:"claude-opus-4-9",disabled:C,className:"font-mono"}),k&&c.jsx("span",{className:"text-xs text-red-600",children:"A model with this id already exists."})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Label"}),c.jsx(dn,{value:m,onChange:T=>o(T.target.value),placeholder:"Opus 4.9"})]}),c.jsxs("label",{className:"inline-flex cursor-pointer items-center gap-2 text-sm",children:[c.jsx("input",{type:"checkbox",checked:b,onChange:T=>l(T.target.checked)}),c.jsx("span",{children:"Supports reasoning effort"})]}),S&&c.jsx("span",{className:"text-xs text-red-600",children:S}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Me,{onClick:()=>{N()},disabled:!w,children:A}),c.jsx(Me,{variant:"ghost",onClick:r,disabled:x,children:"Cancel"})]})]})}function vFe(e){const t=jr(gy),n=_.useMemo(()=>({onCreate:async r=>{const i={customModels:{create:r}};await e.state.handleWriteAppSettings(i)},onUpdate:async(r,i)=>{const s={customModels:{update:{id:r,patch:i}}};await e.state.handleWriteAppSettings(s)},onDelete:async r=>{const i={customModels:{delete:{id:r}}};await e.state.handleWriteAppSettings(i)}}),[e.state]);return c.jsx(pFe,{models:t,handlers:n})}function kU(e,t){return{shortcut:e,expansion:t,submitting:!1,error:null}}const rd=tr()(e=>({editing:{kind:"list"},editorForm:kU("",""),setEditing:t=>e({editing:t}),resetEditorForm:(t,n)=>e({editorForm:kU(t,n)}),setEditorShortcut:t=>e(n=>({editorForm:{...n.editorForm,shortcut:t}})),setEditorExpansion:t=>e(n=>({editorForm:{...n.editorForm,expansion:t}})),setEditorSubmitting:t=>e(n=>({editorForm:{...n.editorForm,submitting:t}})),setEditorError:t=>e(n=>({editorForm:{...n.editorForm,error:t}}))})),bFe=/^\S{1,32}$/;function xFe({snippets:e,handlers:t}){const n=rd(o=>o.editing),r=rd(o=>o.setEditing),i=rd(o=>o.resetEditorForm);function s(o){if(o.kind==="create")i("","");else if(o.kind==="edit"){const a=e.find(l=>l.id===o.id)??null;a&&i(a.shortcut,a.expansion)}r(o)}if(n.kind!=="list"){const o=n.kind==="edit"?e.find(a=>a.id===n.id)??null:null;return c.jsx(_Fe,{initial:o,existing:e.map(a=>({id:a.id,shortcut:a.shortcut})),handlers:t,onDone:()=>r({kind:"list"})})}return c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("h2",{className:"text-base font-medium",children:"Text snippets"}),c.jsx("p",{className:"max-w-[65ch] text-sm text-muted-foreground",children:"Type a shortcut in the chat composer and press Tab to expand it into the full text. Handy for prompts you send often."})]}),c.jsxs(Me,{size:"sm",onClick:()=>s({kind:"create"}),children:[c.jsx(ro,{className:"mr-1 h-4 w-4"}),"Add snippet"]})]}),e.length===0?c.jsxs("div",{className:"flex flex-col items-center justify-center rounded-md border border-dashed px-6 py-10 text-center",children:[c.jsx(T7,{className:"mb-3 h-8 w-8 text-muted-foreground","aria-hidden":!0}),c.jsx("p",{className:"text-sm text-muted-foreground",children:"No snippets yet. Add one to expand a shortcut with Tab."})]}):c.jsx("ul",{className:"flex flex-col divide-y rounded-md border",children:e.map(o=>c.jsx(yFe,{snippet:o,onEdit:()=>s({kind:"edit",id:o.id}),onDelete:()=>{window.confirm(`Delete snippet "${o.shortcut}"?`)&&t.onDelete(o.id)}},o.id))})]})}function yFe({snippet:e,onEdit:t,onDelete:n}){return c.jsxs("li",{className:"flex items-center gap-3 px-4 py-3",children:[c.jsxs("div",{className:"flex min-w-0 flex-col gap-0.5",children:[c.jsx("span",{className:"font-mono text-sm",children:e.shortcut}),c.jsx("span",{className:"truncate text-xs text-muted-foreground",children:e.expansion})]}),c.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[c.jsx(Me,{variant:"ghost",size:"sm",onClick:t,"aria-label":`Edit ${e.shortcut}`,children:c.jsx(Rd,{className:"h-4 w-4"})}),c.jsx(Me,{variant:"ghost",size:"sm",onClick:n,"aria-label":`Delete ${e.shortcut}`,children:c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function _Fe({initial:e,existing:t,handlers:n,onDone:r}){const i=rd(N=>N.editorForm),s=rd(N=>N.setEditorShortcut),o=rd(N=>N.setEditorExpansion),a=rd(N=>N.setEditorSubmitting),l=rd(N=>N.setEditorError),{shortcut:d,expansion:h,submitting:p,error:m}=i,v=e!==null,b=d.trim(),x=bFe.test(b),S=_.useMemo(()=>t.some(N=>N.shortcut===b&&N.id!==(e==null?void 0:e.id)),[t,b,e==null?void 0:e.id]),C=x&&!S&&h.length>0&&!p,k=async()=>{a(!0),l(null);try{v&&e?await n.onUpdate(e.id,{shortcut:b,expansion:h}):await n.onCreate({shortcut:b,expansion:h}),r()}catch(N){l(N instanceof Error?N.message:"Failed to save snippet")}finally{a(!1)}};let w;return p?w="Saving…":v?w="Save changes":w="Add snippet",c.jsxs("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c.jsx("h2",{className:"text-base font-medium",children:v?"Edit snippet":"Add snippet"}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Shortcut"}),c.jsx(dn,{value:d,onChange:N=>s(N.target.value),placeholder:"pgm",className:"font-mono",autoFocus:!0}),d.length>0&&!x&&c.jsx("span",{className:"text-xs text-destructive",children:"Shortcut must be 1-32 characters with no spaces."}),S&&c.jsx("span",{className:"text-xs text-destructive",children:"A snippet with this shortcut already exists."})]}),c.jsxs("label",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-sm font-medium",children:"Expands to"}),c.jsx(Al,{value:h,onChange:N=>o(N.target.value),placeholder:"pull request green then merge",rows:4})]}),m&&c.jsx("span",{className:"text-xs text-destructive",children:m}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(Me,{onClick:()=>{k()},disabled:!C,children:w}),c.jsx(Me,{variant:"ghost",onClick:r,disabled:p,children:"Cancel"})]})]})}function SFe(e){const t=jr(MJ),n=_.useMemo(()=>({onCreate:async r=>{const i={textSnippets:{create:r}};await e.state.handleWriteAppSettings(i)},onUpdate:async(r,i)=>{const s={textSnippets:{update:{id:r,patch:i}}};await e.state.handleWriteAppSettings(s)},onDelete:async r=>{const i={textSnippets:{delete:{id:r}}};await e.state.handleWriteAppSettings(i)}}),[e.state]);return c.jsx(xFe,{snippets:t,handlers:n})}function wFe(e){if(!e)return"—";const t=e.trim();if(!t)return"—";const n=t.slice(-4);return`${t.startsWith("sk-ant-")?"sk-ant-":""}…${n}`}const hl=tr()(e=>({addLabel:"",addToken:"",addSubmitting:!1,tokenRowStates:{},setAddLabel:t=>e({addLabel:t}),setAddToken:t=>e({addToken:t}),setAddSubmitting:t=>e({addSubmitting:t}),resetAddForm:()=>e({addLabel:"",addToken:""}),setTokenRowTesting:(t,n)=>e(r=>({tokenRowStates:{...r.tokenRowStates,[t]:{...r.tokenRowStates[t]??{testResult:null,testing:!1},testing:n}}})),setTokenRowTestResult:(t,n)=>e(r=>({tokenRowStates:{...r.tokenRowStates,[t]:{...r.tokenRowStates[t]??{testResult:null,testing:!1},testResult:n}}})),clearTokenRowState:t=>e(n=>{const{[t]:r,...i}=n.tokenRowStates;return{tokenRowStates:i}})}));function CFe(e){if(e<=0)return"reset now";const t=Math.ceil(e/1e3),n=Math.floor(t/60),r=t%60;if(n<60)return`reset in ${n}m ${r.toString().padStart(2,"0")}s`;const i=Math.floor(n/60),s=n%60;return`reset in ${i}h ${s.toString().padStart(2,"00")}m`}function vee(e){if(!Number.isFinite(e))return Hge;const t=Math.round(e);return t<Ob?Ob:t>Db?Db:t}function kFe({entry:e,now:t}){if(e.status==="active")return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-muted-foreground/50","aria-hidden":"true"}),"Active"]});if(e.status==="limited"){const r=e.limitedUntil!==null?CFe(e.limitedUntil-t):null;return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-amber-600 dark:text-amber-400",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-amber-500","aria-hidden":"true"}),"Limited",r!==null&&c.jsxs(c.Fragment,{children:[" ","(",c.jsx("span",{className:"tabular-nums",children:r}),")"]})]})}if(e.status==="disabled")return c.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground/60",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-muted-foreground/30","aria-hidden":"true"}),"Disabled"]});const n=e.lastErrorMessage??"Unknown error";return c.jsx(Aj,{children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("span",{className:"inline-flex cursor-default items-center gap-1.5 text-xs text-destructive",children:[c.jsx("span",{className:"size-1.5 rounded-full bg-destructive","aria-hidden":"true"}),"Error",c.jsx("span",{className:"sr-only",children:n})]})}),c.jsx(Ms,{"aria-hidden":"true",children:n})]})})}function EFe({entry:e,now:t,isCurrent:n,concurrencyDefault:r,onRemove:i,onToggleDisabled:s,onTest:o,onChangeMaxConcurrent:a}){const l=hl(C=>C.tokenRowStates),d=hl(C=>C.setTokenRowTesting),h=hl(C=>C.setTokenRowTestResult),p=l[e.id],m=(p==null?void 0:p.testResult)??null,v=(p==null?void 0:p.testing)??!1,b=async()=>{d(e.id,!0),h(e.id,null);try{const C=await o(e.token),k=C.ok?"OK":C.error??"Error";h(e.id,k),setTimeout(()=>h(e.id,null),3e3)}catch{h(e.id,"Error"),setTimeout(()=>h(e.id,null),3e3)}finally{d(e.id,!1)}},x=e.status==="disabled",S=e.maxConcurrent??r;return c.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border py-3",children:[c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("span",{className:`text-sm font-medium ${x?"text-muted-foreground/60":"text-foreground"}`,children:e.label}),c.jsx("code",{className:"text-xs font-mono text-muted-foreground",children:wFe(e.token)}),n&&c.jsx("span",{className:"inline-flex shrink-0 items-center whitespace-nowrap rounded-full border border-primary/40 bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-primary",children:"In use"})]}),c.jsx("div",{className:"mt-0.5",children:c.jsx(kFe,{entry:e,now:t})})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[c.jsxs("label",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",title:"Maximum concurrent chats sharing this OAuth token. Higher = risks Anthropic rate limits.",children:[c.jsx("span",{children:"Concurrent"}),c.jsx(dn,{type:"number",value:S,onChange:C=>a(e.id,vee(Number(C.target.value))),min:Ob,max:Db,"aria-label":"Max concurrent chats",className:"h-7 w-14 text-xs",disabled:x})]}),m!==null&&c.jsx("span",{className:"text-xs text-muted-foreground",children:m}),c.jsxs("button",{type:"button","aria-label":"Test",onClick:b,disabled:v||x,className:"inline-flex items-center gap-1 rounded px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[c.jsx(Kse,{className:"size-3","aria-hidden":"true"}),"Test"]}),c.jsx(Aj,{children:c.jsxs(Js,{children:[c.jsx(Zs,{asChild:!0,children:c.jsxs("button",{type:"button","aria-label":x?"Enable":"Disable",onClick:s,className:"rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[x?c.jsx(Xoe,{className:"size-3.5","aria-hidden":"true"}):c.jsx(qoe,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:x?"Enable":"Disable"})]})}),c.jsx(Ms,{children:x?"Enable":"Disable"})]})}),c.jsxs("button",{type:"button","aria-label":"Remove",onClick:i,className:"rounded p-1 text-muted-foreground transition-colors hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[c.jsx(Jc,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:"Remove"})]})]})]})}function NFe({tokens:e,onWrite:t}){const n=hl(p=>p.addLabel),r=hl(p=>p.addToken),i=hl(p=>p.addSubmitting),s=hl(p=>p.setAddLabel),o=hl(p=>p.setAddToken),a=hl(p=>p.setAddSubmitting),l=hl(p=>p.resetAddForm),d=n.trim().length>0&&r.trim().length>0&&!i,h=async()=>{if(d){a(!0);try{const p={id:crypto.randomUUID(),label:n.trim(),token:r.trim(),status:"active",limitedUntil:null,lastUsedAt:null,lastErrorAt:null,lastErrorMessage:null,addedAt:Date.now()};await t({tokens:[...e,p]}),l()}finally{a(!1)}}};return c.jsx("div",{className:"border-t border-border pt-4",children:c.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end sm:gap-3",children:[c.jsx("div",{className:"flex-1",children:c.jsx(dn,{value:n,onChange:p=>s(p.target.value),placeholder:"e.g. personal",maxLength:64,className:"text-sm","aria-label":"Token label"})}),c.jsx("div",{className:"flex-[2]",children:c.jsx(dn,{value:r,onChange:p=>o(p.target.value),type:"password",placeholder:"sk-ant-...",maxLength:1024,className:"text-sm font-mono","aria-label":"OAuth token"})}),c.jsx("button",{type:"button",onClick:h,disabled:!d,className:"inline-flex shrink-0 items-center rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:"Add token"})]})})}function TFe({tokens:e,concurrencyDefault:t,onWrite:n,onTest:r,now:i}){var p;const s=i??Date.now(),o=((p=e.reduce((m,v)=>v.lastUsedAt!==null&&(m===null||v.lastUsedAt>(m.lastUsedAt??0))?v:m,null))==null?void 0:p.id)??null,a=m=>{n({tokens:e.filter(v=>v.id!==m)})},l=m=>{n({tokens:e.map(v=>v.id===m?{...v,status:v.status==="disabled"?"active":"disabled"}:v)})},d=(m,v)=>{n({tokens:e.map(b=>b.id===m?{...b,maxConcurrent:v}:b)})},h=m=>{n({concurrencyDefault:vee(m)})};return c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center justify-between gap-3 pb-3",children:[c.jsxs("label",{className:"flex flex-col gap-0.5 text-sm",title:"Default concurrent-chat cap applied to any OAuth token whose row does not override it. Sharing across N chats burns Anthropic quota and risks 429s.",children:[c.jsx("span",{className:"font-medium text-foreground",children:"Default concurrency per token"}),c.jsxs("span",{className:"text-xs text-muted-foreground",children:["Cap for tokens without an explicit per-row override. Range ",Ob,"–",Db,"."]})]}),c.jsx(dn,{type:"number",value:t,onChange:m=>h(Number(m.target.value)),min:Ob,max:Db,"aria-label":"Default concurrency per token",className:"h-8 w-16 text-sm"})]}),e.map(m=>c.jsx(EFe,{entry:m,now:s,isCurrent:m.id===o,concurrencyDefault:t,onRemove:()=>a(m.id),onToggleDisabled:()=>l(m.id),onTest:r,onChangeMaxConcurrent:d},m.id)),c.jsx(NFe,{tokens:e,onWrite:n})]})}function bm({children:e,className:t,icon:n,type:r="button",variant:i="outline",...s}){return c.jsxs("button",{type:r,className:fe(dj({variant:i,size:"sm"}),"h-auto gap-1.5 px-3 py-1.5",t),...s,children:[n,c.jsx("span",{children:e})]})}const EU="inline-flex items-center justify-center rounded-lg border border-border bg-background px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted",AFe="inline-flex items-center justify-center rounded-lg bg-foreground px-3 py-1.5 text-sm font-medium text-background transition-colors hover:bg-foreground/90",NU="rounded bg-muted px-1 py-0.5 font-mono text-[12px] text-foreground",TU="text-[11px] font-medium uppercase tracking-wide text-muted-foreground";function RFe(e){const{permissionState:t}=e;if(t==="unsupported")return c.jsx("p",{className:"text-sm text-muted-foreground",children:"Push notifications are not supported in this browser."});if(t==="insecure-context")return c.jsxs("p",{className:"text-sm text-muted-foreground",children:["Push requires HTTPS. Run ",c.jsx("code",{className:NU,children:"kanna --share"})," or open Kanna over a tunnel, then enable on this device."]});if(t==="denied")return c.jsx("p",{className:"text-sm text-muted-foreground",children:"You blocked notifications for this site. Re-enable them in your browser settings, then reload."});if(!(t==="granted"&&e.config.devices.some(i=>i.id===e.currentDeviceId)))return c.jsx("button",{type:"button",onClick:()=>void e.onEnable(),className:AFe,children:"Enable on this device"});const r=new Set(e.config.preferences.mutedProjectPaths);return c.jsxs("div",{className:"flex w-full min-w-0 flex-col gap-5 md:w-[440px]",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-border bg-card/40 px-3 py-1 text-xs font-medium text-foreground",children:[c.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Enabled on this device"]}),c.jsx("button",{type:"button",onClick:()=>void e.onTest(),className:EU,children:"Send test"}),c.jsx("button",{type:"button",onClick:()=>void e.onDisable(),className:EU,children:"Disable"})]}),c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx("div",{className:TU,children:"Devices"}),c.jsx("ul",{className:"flex flex-col gap-1.5",children:e.config.devices.map(i=>c.jsxs("li",{className:"flex items-start justify-between gap-3 rounded-lg border border-border bg-card/40 px-3 py-2",children:[c.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[c.jsx("span",{className:"truncate text-sm font-medium text-foreground",children:i.label}),c.jsx("span",{className:"line-clamp-2 break-all text-[11px] leading-snug text-muted-foreground",children:i.userAgent})]}),!i.isCurrentDevice&&c.jsx("button",{type:"button",onClick:()=>void e.onRemoveDevice(i.id),"aria-label":`Remove ${i.label}`,className:"shrink-0 rounded-md border border-border bg-background px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:"Remove"})]},i.id))})]}),c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx("div",{className:TU,children:"Per-project"}),c.jsx("ul",{className:"flex flex-col",children:e.projects.map(i=>c.jsx("li",{children:c.jsxs("label",{className:"flex cursor-pointer items-center gap-3 rounded-md px-2 py-1.5 transition-colors hover:bg-muted/50",children:[c.jsx("input",{type:"checkbox",checked:!r.has(i.localPath),onChange:s=>void e.onMuteToggle(i.localPath,!s.target.checked),className:"h-4 w-4 shrink-0 rounded border-border accent-foreground"}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-[12px] text-foreground",title:i.localPath,children:i.localPath})]})},i.localPath))})]}),c.jsxs("p",{className:"text-xs leading-relaxed text-muted-foreground",children:["Phone setup: this page must be reachable over HTTPS. Run"," ",c.jsx("code",{className:NU,children:"kanna --share"})," or open Kanna over your tunnel on the phone, then enable on that device."]})]})}function MFe(e){return e==="openai"?Ige:e==="openrouter"?zC:""}function jFe(e,t){return{...e,provider:t,model:MFe(t),baseUrl:t==="custom"?e.baseUrl:""}}const IFe=[],PFe=[],LFe=[],OFe={},DFe={},Ve=tr()((e,t)=>({changelogPendingAction:null,skillQuery:"",skillResults:IFe,skillSearchLoading:!1,skillSearchError:null,installedSkills:PFe,installedSkillIds:new Set,installedLoading:!1,installedError:null,skillOperationError:null,installingSkillId:null,uninstallingSkillId:null,installMessages:DFe,globalInstructionsDraft:"",globalInstructionsPersistedAtMount:"",globalInstructionsSaving:!1,globalInstructionsError:null,changelogStatus:"idle",signingOut:!1,authEnabled:!1,releases:LFe,changelogError:null,pushPermissionState:fL().state,pushDeviceId:uZ(),scrollbackDraft:"",minColumnWidthDraft:"",uploadMaxFileSizeDraft:"",claudeIdleMinutesDraft:"",claudeMaxConcurrentDraft:"",editorCommandDraft:"",keybindingDrafts:OFe,keybindingsError:null,appSettingsError:null,analyticsDialogOpen:!1,tunnelError:null,cloudflaredPathDraft:"",shareDefaultTtlDraft:"",llmProviderDraft:{provider:"openai",apiKey:"",model:"",baseUrl:""},llmProviderError:null,llmValidationStatus:"idle",llmValidationError:null,llmValidationDialogOpen:!1,setChangelogPendingAction:n=>e({changelogPendingAction:n}),setSkillQuery:n=>e({skillQuery:n}),setSkillResults:n=>e({skillResults:n}),setSkillSearchLoading:n=>e({skillSearchLoading:n}),setSkillSearchError:n=>e({skillSearchError:n}),setInstalledSkills:n=>e({installedSkills:n}),setInstalledSkillIds:n=>e({installedSkillIds:n}),addInstalledSkillId:n=>{const r=t().installedSkillIds,i=new Set(r);i.add(n),e({installedSkillIds:i})},removeInstalledSkillId:n=>{const r=t().installedSkillIds,i=new Set(r);i.delete(n),e({installedSkillIds:i})},setInstalledLoading:n=>e({installedLoading:n}),setInstalledError:n=>e({installedError:n}),setSkillOperationError:n=>e({skillOperationError:n}),setInstallingSkillId:n=>e({installingSkillId:n}),setUninstallingSkillId:n=>e({uninstallingSkillId:n}),setInstallMessages:n=>e({installMessages:n}),setInstallMessage:(n,r)=>{const i=t().installMessages;e({installMessages:{...i,[n]:r}})},clearInstallMessage:n=>{const i={...t().installMessages};delete i[n],e({installMessages:i})},clearInstallMessagesForSkill:n=>{const i={...t().installMessages};for(const s of Object.keys(i))(s.endsWith(`/${n}`)||s===n)&&delete i[s];e({installMessages:i})},setGlobalInstructionsDraft:n=>e({globalInstructionsDraft:n}),setGlobalInstructionsPersistedAtMount:n=>e({globalInstructionsPersistedAtMount:n}),setGlobalInstructionsSaving:n=>e({globalInstructionsSaving:n}),setGlobalInstructionsError:n=>e({globalInstructionsError:n}),setChangelogStatus:n=>e({changelogStatus:n}),setSigningOut:n=>e({signingOut:n}),setAuthEnabled:n=>e({authEnabled:n}),setReleases:n=>e({releases:n}),setChangelogError:n=>e({changelogError:n}),setPushPermissionState:n=>e({pushPermissionState:n}),setPushDeviceId:n=>e({pushDeviceId:n}),setScrollbackDraft:n=>e({scrollbackDraft:n}),setMinColumnWidthDraft:n=>e({minColumnWidthDraft:n}),setUploadMaxFileSizeDraft:n=>e({uploadMaxFileSizeDraft:n}),setClaudeIdleMinutesDraft:n=>e({claudeIdleMinutesDraft:n}),setClaudeMaxConcurrentDraft:n=>e({claudeMaxConcurrentDraft:n}),setEditorCommandDraft:n=>e({editorCommandDraft:n}),setKeybindingDrafts:n=>e({keybindingDrafts:n}),setKeybindingsError:n=>e({keybindingsError:n}),setAppSettingsError:n=>e({appSettingsError:n}),setAnalyticsDialogOpen:n=>e({analyticsDialogOpen:n}),setTunnelError:n=>e({tunnelError:n}),setCloudflaredPathDraft:n=>e({cloudflaredPathDraft:n}),setShareDefaultTtlDraft:n=>e({shareDefaultTtlDraft:n}),setLlmProviderDraft:n=>e({llmProviderDraft:n}),setLlmProviderError:n=>e({llmProviderError:n}),setLlmValidationStatus:n=>e({llmValidationStatus:n}),setLlmValidationError:n=>e({llmValidationError:n}),setLlmValidationDialogOpen:n=>e({llmValidationDialogOpen:n})})),Zv=[{id:"general",label:"General",icon:pae,subtitle:"Manage appearance, editor behavior, and embedded terminal defaults."},{id:"skills",label:"Skills",icon:j3,subtitle:"Manage globally installed agent skills from the active skill lock file."},{id:"providers",label:"Providers",icon:O3,subtitle:"Manage the default chat provider and saved model defaults for Claude Code and Codex."},{id:"models",label:"Models",icon:p7,subtitle:"Add, edit, and remove Claude and Codex models available in the model picker."},{id:"subagents",label:"Subagents",icon:mh,subtitle:"Define reusable agent personas. Mention them in chat with @agent/<name>."},{id:"mcp-servers",label:"MCP servers",icon:k7,subtitle:"Install custom MCP servers (stdio, http, sse, ws) and connect-test them."},{id:"snippets",label:"Text snippets",icon:T7,subtitle:"Define shortcuts that expand to full text in the chat composer with Tab."},{id:"instructions",label:"Instructions",icon:O3,subtitle:"Global instructions appended to every Claude and Codex turn (main + subagents)."},{id:"keybindings",label:"Keybindings",icon:fse,subtitle:"Edit global app shortcuts stored in the active keybindings file."},{id:"changelog",label:"Changelog",icon:j3,subtitle:"Release notes pulled from the public GitHub releases feed."}];function AU(e){var t;return e?((t=Zv.find(n=>n.id===e))==null?void 0:t.id)??null:null}const $Fe=[{value:"light",label:"Light",icon:jae},{value:"dark",label:"Dark",icon:Poe},{value:"system",label:"System",icon:ij}],zFe=[{value:"never",label:"Never"},{value:"unfocused",label:"When Unfocused"},{value:"always",label:"Always"}],BFe=[{value:"disabled",label:"Off"},{value:"enabled",label:"On"}],FFe=[{value:"disabled",label:"Off"},{value:"enabled",label:"On"}],UFe=[{value:"always-ask",label:"Always ask"},{value:"auto-expose",label:"Auto-expose"}],HFe=[{value:"openai",label:"OpenAI"},{value:"openrouter",label:"OpenRouter"},{value:"custom",label:"Custom"}],WFe=300*1e3;let Yp=null;function VFe(e){return`Edit global app shortcuts stored in ${e}.`}function RU(e,t){return e!==t}function KFe(){return Yp?Date.now()>=Yp.expiresAt?(Yp=null,null):Yp.releases:null}function GFe(e){Yp={releases:e,expiresAt:Date.now()+WFe}}async function MU(e,t){const n=t!=null&&t.force?null:KFe();if(n)return n;const r=await e();return GFe(r),r}function jU(e,t){const n=o=>o.trim().replace(/^v/i,"").split("-")[0].split(".").map(a=>Number.parseInt(a,10)).filter(a=>Number.isFinite(a)),r=n(e),i=n(t),s=Math.max(r.length,i.length);for(let o=0;o<s;o+=1){const a=r[o]??0,l=i[o]??0;if(a!==l)return a<l?-1:1}return 0}function qFe(e){if(!e)return"Unpublished";const t=new Date(e);return Number.isNaN(t.getTime())?"Unknown date":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",year:"numeric"}).format(t)}const IU="__redeploy__";function YFe({status:e,releases:t,error:n,onRetry:r,updateSnapshot:i,currentVersion:s,onInstallUpdate:o,onCheckForUpdates:a,onForceReload:l}){var T;const d=Ve(M=>M.changelogPendingAction),h=Ve(M=>M.setChangelogPendingAction),p=(i==null?void 0:i.latestVersion)??((T=t[0])==null?void 0:T.tag_name)??"Unknown",m=(i==null?void 0:i.currentVersion)??s,v=(i==null?void 0:i.status)==="checking",b=(i==null?void 0:i.status)==="updating"||(i==null?void 0:i.status)==="restart_pending",x=b||d!==null,S=(i==null?void 0:i.updateAvailable)===!0,C=p.replace(/^v/i,""),k=m.replace(/^v/i,""),w=_.useCallback(async M=>{h(M);try{await o(M)}finally{h(null)}},[o,h]),N=_.useCallback(async()=>{h(IU);try{await l()}finally{h(null)}},[l,h]),A=d===IU||b;return c.jsxs("div",{className:"space-y-4",children:[e==="loading"||e==="idle"?c.jsx("div",{className:"flex min-h-[180px] items-center justify-center rounded-2xl border border-border bg-card/40 px-6 py-8 text-sm text-muted-foreground",children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading release notes…"})]})}):null,e==="error"?c.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 px-6 py-5",children:c.jsxs("div",{className:"flex items-start justify-between gap-4",children:[c.jsxs("div",{children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Could not load changelog"}),c.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:n??"Unable to load changelog."})]}),c.jsx("button",{type:"button",onClick:r,className:"rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground transition-colors hover:bg-muted",children:"Retry"})]})}):null,e==="success"&&t.length===0?c.jsxs("div",{className:"rounded-lg border border-border bg-card/30 px-6 py-8",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"No releases yet"}),c.jsx("div",{className:"mt-2 text-sm text-muted-foreground",children:"GitHub did not return any published releases for this repository."})]}):null,e==="success"?c.jsxs("div",{className:"flex justify-end gap-2",children:[c.jsx(bm,{variant:"outline",onClick:()=>{N()},disabled:x,children:A?c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}),"Re-deploying…"]}):"Re-deploy"}),c.jsx(bm,{variant:"outline",onClick:a,disabled:v||x,children:v?c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin"}),"Checking…"]}):"Check for updates"})]}):null,e==="success"&&t.length>0?t.map(M=>{var L,I;const j=M.tag_name.replace(/^v/i,""),P=j===C,D=j===k;return c.jsxs("article",{className:fe("rounded-xl border bg-card/30 pl-6 pr-4 py-4",P?"border-border bg-muted":"border-border"),children:[c.jsxs("div",{className:"flex flex-row items-center min-w-0 flex-1 gap-3 ",children:[c.jsxs("div",{className:"flex flex-row items-center min-w-0 flex-1 gap-2 ",children:[c.jsx("div",{className:"text-lg font-semibold tracking-[-0.2px] text-foreground",children:((L=M.name)==null?void 0:L.trim())||M.tag_name}),c.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 text-sm text-muted-foreground",children:[c.jsx("span",{children:qFe(M.published_at)}),M.prerelease?c.jsx("span",{className:"rounded-full border border-border px-2.5 py-1 uppercase tracking-wide",children:"Prerelease"}):null]})]}),c.jsxs("div",{className:"flex flex-row items-center justify-end min-w-0 flex-1 gap-2 ",children:[c.jsx("a",{href:M.html_url,target:"_blank",rel:"noopener noreferrer","aria-label":"View release on GitHub",className:fe(dj({variant:"ghost",size:"icon-sm"}),"h-11 w-11 md:h-8 md:w-8 shrink-0 rounded-md hover:!bg-transparent hover:border-border/0"),children:c.jsx(XFe,{className:"h-4 w-4"})}),D?c.jsx("span",{className:fe("bg-transparent border border-border text-secondary-foreground","h-9 rounded-full px-3 text-sm","h-auto gap-1.5 px-3 py-1.5"),children:"Current"}):null,P&&S||!P&&!D?(()=>{const $=d===M.tag_name||b&&d===null;let H;P?H="Update":jU(j,k)<0?H="Rollback":H="Install";let z;return P?z="Updating…":jU(j,k)<0?z="Rolling back…":z="Installing…",c.jsx(bm,{variant:"default",className:"",onClick:()=>{w(M.tag_name)},disabled:x,children:c.jsxs("div",{className:"flex flex-row items-center justify-center gap-2",children:[$?c.jsx(jn,{className:"size-4 animate-spin"}):c.jsx(ose,{className:"size-4"}),$?z:H]})})})():null]})]}),(I=M.body)!=null&&I.trim()?c.jsx("div",{className:"prose prose-sm mt-5 max-w-none text-foreground dark:prose-invert",children:Yc(M.body)}):c.jsx("div",{className:"mt-5 text-sm text-muted-foreground",children:"No release notes were provided."})]},M.id)}):null]})}function XFe({className:e}){return c.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",className:e,children:c.jsx("path",{d:"M12 .5C5.649.5.5 5.649.5 12A11.5 11.5 0 0 0 8.36 22.04c.575.106.785-.25.785-.556 0-.274-.01-1-.015-1.962-3.181.691-3.853-1.532-3.853-1.532-.52-1.322-1.27-1.674-1.27-1.674-1.038-.71.08-.695.08-.695 1.148.08 1.752 1.178 1.752 1.178 1.02 1.748 2.676 1.243 3.328.95.103-.738.399-1.243.725-1.53-2.54-.289-5.211-1.27-5.211-5.65 0-1.248.446-2.27 1.177-3.07-.118-.288-.51-1.45.112-3.024 0 0 .96-.307 3.145 1.173A10.91 10.91 0 0 1 12 6.03c.973.004 1.954.132 2.87.387 2.182-1.48 3.14-1.173 3.14-1.173.625 1.573.233 2.736.115 3.024.734.8 1.175 1.822 1.175 3.07 0 4.39-2.676 5.358-5.224 5.642.41.353.776 1.05.776 2.117 0 1.528-.014 2.761-.014 3.136 0 .309.207.668.79.555A11.502 11.502 0 0 0 23.5 12C23.5 5.649 18.351.5 12 .5Z"})})}function JFe(e){return!e||e<=0?"0 installs":e>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M installs`:e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}K installs`:`${e} install${e===1?"":"s"}`}function ZFe({message:e}){return c.jsx("pre",{className:"max-w-full overflow-x-auto whitespace-pre-wrap rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-xs text-destructive",children:e})}function QFe({skill:e,uninstalling:t,onUninstall:n}){const r=e.source?`https://skills.sh/${e.source}/${e.name}`:null;return c.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3 rounded-lg border border-border bg-card/30 p-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),c.jsx("div",{className:"truncate text-xs text-muted-foreground",children:e.source||"Unknown source"})]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[r?c.jsx("a",{href:r,target:"_blank",rel:"noreferrer","aria-label":`View ${e.name} on skills.sh`,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(nj,{className:"h-4 w-4"})}):null,c.jsx("button",{type:"button","aria-label":`Uninstall ${e.name}`,disabled:t,onClick:n,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-50",children:t?c.jsx(jn,{className:"h-4 w-4 animate-spin"}):c.jsx(Jc,{className:"h-4 w-4"})})]})]})}function e8e({skill:e,installing:t,installed:n,message:r,onInstall:i}){let s;return n?s="Installed":t?s="Installing":s="Get",c.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-3 rounded-lg border border-border bg-card/30 p-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:e.name}),c.jsxs("div",{className:"truncate text-xs text-muted-foreground",children:[e.source," · ",JFe(e.installs)]}),n&&r?c.jsx("div",{className:"mt-1 truncate text-xs text-emerald-500",children:r}):null]}),c.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[c.jsx("a",{href:`https://skills.sh/${e.id}`,target:"_blank",rel:"noreferrer","aria-label":`View ${e.name} on skills.sh`,className:"touch-manipulation inline-flex h-8 w-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(nj,{className:"h-4 w-4"})}),c.jsxs(Me,{type:"button",size:"sm",variant:n?"secondary":"default",disabled:t||n,onClick:i,className:"h-6 rounded-full px-2 text-xs",children:[t?c.jsx(jn,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):null,s]})]})]})}function t8e({state:e}){const t=e.socket,n=e.connectionStatus,r=Ve(V=>V.skillQuery),i=Ve(V=>V.setSkillQuery),s=Ve(V=>V.skillResults),o=Ve(V=>V.setSkillResults),a=Ve(V=>V.skillSearchLoading),l=Ve(V=>V.setSkillSearchLoading),d=Ve(V=>V.skillSearchError),h=Ve(V=>V.setSkillSearchError),p=Ve(V=>V.installedSkills),m=Ve(V=>V.setInstalledSkills),v=Ve(V=>V.installedSkillIds),b=Ve(V=>V.setInstalledSkillIds),x=Ve(V=>V.addInstalledSkillId),S=Ve(V=>V.removeInstalledSkillId),C=Ve(V=>V.installedLoading),k=Ve(V=>V.setInstalledLoading),w=Ve(V=>V.installedError),N=Ve(V=>V.setInstalledError),A=Ve(V=>V.skillOperationError),T=Ve(V=>V.setSkillOperationError),M=Ve(V=>V.installingSkillId),j=Ve(V=>V.setInstallingSkillId),P=Ve(V=>V.uninstallingSkillId),D=Ve(V=>V.setUninstallingSkillId),L=Ve(V=>V.installMessages),I=Ve(V=>V.setInstallMessage),$=Ve(V=>V.clearInstallMessage),H=Ve(V=>V.clearInstallMessagesForSkill),z=_.useCallback(async()=>{if(n!=="connected"){m([]),b(new Set),N(null),k(!1);return}try{k(!0),N(null);const V=await t.command({type:"skills.listInstalled"});m(V.skills),b(new Set(V.skills.map(X=>X.name)))}catch(V){m([]),b(new Set),N(V instanceof Error?V.message:"Unable to read installed skills.")}finally{k(!1)}},[n,t,m,b,N,k]);_.useEffect(()=>{z()},[n,z,t]),_.useEffect(()=>{const V=r.trim();if(V.length<2){o([]),h(null),l(!1);return}if(n!=="connected"){o([]),l(!1),h("Backend connection required.");return}let X=!1;l(!0),h(null);const G=window.setTimeout(()=>{t.command({type:"skills.search",query:V,limit:100}).then(te=>{X||o(te.skills)}).catch(te=>{X||(o([]),h(te instanceof Error?te.message:"Unable to search skills."))}).finally(()=>{X||l(!1)})},250);return()=>{X=!0,window.clearTimeout(G)}},[n,r,t,o,h,l]);async function F(V){if(n!=="connected"){T("Backend connection required.");return}try{j(V.id),T(null),$(V.id),await t.command({type:"skills.install",source:V.source,skillId:V.skillId}),x(V.skillId),I(V.id,"Installed globally"),z()}catch(X){T(X instanceof Error?X.message:"Install failed.")}finally{j(null)}}async function K(V){if(n!=="connected"){T("Backend connection required.");return}try{D(V.name),T(null),await t.command({type:"skills.uninstall",skillId:V.name}),m(p.filter(X=>X.name!==V.name)),S(V.name),H(V.name),z()}catch(X){T(X instanceof Error?X.message:"Uninstall failed.")}finally{D(null)}}let W;return p.length>0?W=c.jsx("div",{className:"grid gap-3 md:grid-cols-2",children:p.map(V=>c.jsx(QFe,{skill:V,uninstalling:P===V.name,onUninstall:()=>{K(V)}},`${V.source}/${V.name}`))}):C?W=null:W=c.jsx("div",{className:"rounded-lg border border-border bg-card/30 p-3 text-sm text-muted-foreground",children:"No global skills installed."}),c.jsxs("div",{className:"flex flex-col gap-6",children:[A?c.jsx(ZFe,{message:A}):null,c.jsxs("section",{className:"flex flex-col gap-3",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Installed"}),C?c.jsx(jn,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground"}):null]}),w?c.jsx("div",{className:"text-xs text-destructive",children:w}):null,W]}),c.jsxs("section",{className:"flex flex-col gap-3",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Discover"}),c.jsxs("div",{className:"flex h-10 items-center gap-2 rounded-lg border border-border bg-card/30 px-3",children:[c.jsx(Jp,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),c.jsx("input",{type:"text",role:"searchbox",value:r,onChange:V=>i(V.target.value),placeholder:"Search skills",className:"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground"}),r?c.jsx("button",{type:"button","aria-label":"Clear skills search",onClick:()=>i(""),className:"touch-manipulation inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(jo,{className:"h-3.5 w-3.5"})}):null,a?c.jsx(jn,{className:"h-4 w-4 shrink-0 animate-spin text-muted-foreground"}):null]}),d?c.jsx("div",{className:"text-xs text-destructive",children:d}):null,c.jsx("div",{className:"grid gap-3 md:grid-cols-2",children:s.map(V=>c.jsx(e8e,{skill:V,installing:M===V.id,installed:v.has(V.skillId),message:L[V.id],onInstall:()=>{F(V)}},V.id))}),!a&&!d&&r.trim().length>=2&&s.length===0?c.jsx("div",{className:"rounded-lg border border-border bg-card/30 p-3 text-sm text-muted-foreground",children:"No skills found."}):null]})]})}function wr({title:e,description:t,children:n,bordered:r=!0,alignStart:i=!1}){return c.jsx("div",{className:r?"border-t border-border":void 0,children:c.jsxs("div",{className:fe("flex flex-col gap-4 py-5 md:flex-row md:justify-between md:gap-8",i?"md:items-start":"md:items-center"),children:[c.jsxs("div",{className:"min-w-0 max-w-xl",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:e}),c.jsx("div",{className:"mt-1 text-[13px] text-muted-foreground",children:t})]}),c.jsx("div",{className:"flex items-center justify-start md:shrink-0 md:justify-end",children:n})]})})}function n8e({checked:e,onChange:t}){return c.jsxs("label",{className:"inline-flex items-center gap-2",children:[c.jsx("input",{type:"checkbox",checked:e,onChange:n=>t(n.target.checked)}),"Enabled"]})}function r8e({state:e}){var x;const t=((x=e.appSettings)==null?void 0:x.globalPromptAppend)??"",n=Ve(S=>S.globalInstructionsDraft),r=Ve(S=>S.setGlobalInstructionsDraft),i=Ve(S=>S.globalInstructionsPersistedAtMount),s=Ve(S=>S.globalInstructionsSaving),o=Ve(S=>S.setGlobalInstructionsSaving),a=Ve(S=>S.globalInstructionsError),l=Ve(S=>S.setGlobalInstructionsError);_.useEffect(()=>{t!==i&&Ve.setState({globalInstructionsPersistedAtMount:t,globalInstructionsDraft:t})},[t,i]);const d=n.replace(/\s+$/u,""),h=d.length>V$,p=d!==t,m=s||h||!p,v=_.useCallback(async()=>{if(!m){l(null),o(!0);try{await e.handleWriteAppSettings({globalPromptAppend:d})}catch(S){l(S instanceof Error?S.message:String(S))}finally{o(!1)}}},[m,e,d,l,o]);let b;return s?b="Saving…":p?b="Save":b="Saved",c.jsx("div",{className:"border-b border-border",children:c.jsx(wr,{title:"Global Instructions",description:"Appended to every Claude and Codex turn — including subagent turns. Kanna does not read CLAUDE.md or AGENTS.md from disk; paste your global instructions here. Leave blank to disable.",bordered:!1,alignStart:!0,children:c.jsxs("div",{className:"flex w-full flex-col gap-2 md:w-[420px]",children:[c.jsx("textarea",{value:n,onChange:S=>r(S.target.value),placeholder:"e.g. Always write tests before implementation. Prefer Tailwind classes over inline styles.",rows:8,"aria-label":"Global instructions",className:fe("min-h-[160px] w-full resize-y rounded-md border bg-background px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",h?"border-destructive":"border-input"),disabled:s}),c.jsxs("div",{className:"flex items-center justify-between text-xs",children:[c.jsxs("span",{className:h?"text-destructive":"text-muted-foreground",children:[d.length," / ",V$," characters",h?" — over limit":""]}),c.jsx(Me,{type:"button",size:"sm",onClick:()=>{v()},disabled:m,children:b})]}),a?c.jsx("div",{className:"text-xs text-destructive",children:a}):null]})})})}function i8e(){var qi,Ee,Fe;const e=Ad(),{sectionId:t}=fC(),n=dC(),{theme:r,setTheme:i}=O1(),s=Ve(B=>B.changelogStatus),o=Ve(B=>B.setChangelogStatus),a=Ve(B=>B.signingOut),l=Ve(B=>B.setSigningOut),d=Ve(B=>B.authEnabled),h=Ve(B=>B.setAuthEnabled),p=Ve(B=>B.releases),m=Ve(B=>B.setReleases),v=Ve(B=>B.changelogError),b=Ve(B=>B.setChangelogError),x=AU(t)??"general",S=n.connectionStatus==="connecting"||!n.localProjectsReady,C=((qi=n.localProjects)==null?void 0:qi.machine.displayName)??"Unavailable",k=((Ee=n.localProjects)==null?void 0:Ee.projects.length)??0,w=Pj.split("/")[1]??"unknown",N=Ss(B=>B.scrollbackLines),A=Ss(B=>B.minColumnWidth),T=Ss(B=>B.editorPreset),M=Ss(B=>B.editorCommandTemplate),j=Ss(B=>B.setScrollbackLines),P=Ss(B=>B.setMinColumnWidth),D=Ss(B=>B.setEditorPreset),L=Ss(B=>B.setEditorCommandTemplate),I=Rf(B=>B.chatSoundPreference),$=Rf(B=>B.chatSoundId),H=Rf(B=>B.setChatSoundPreference),z=Rf(B=>B.setChatSoundId),F=n.keybindings,K=n.appSettings,W=n.llmProvider,V=VR(B=>B.autoResumeOnRateLimit),X=VR(B=>B.setAutoResumeOnRateLimit),G=Ns(B=>B.defaultProvider),te=Ns(B=>B.providerDefaults),oe=Ns(B=>B.setDefaultProvider),ce=Ns(B=>B.setProviderDefaultModel),de=Ns(B=>B.setProviderDefaultModelOptions),ee=Ns(B=>B.setProviderDefaultPlanMode),ne=jr(gy),ie=_.useMemo(()=>rI([...Lb],ne),[ne]),ae=_.useMemo(()=>oI(F),[F]),Q=ae.filePathDisplay||Efe(),ke=Ve(B=>B.pushPermissionState),we=Ve(B=>B.setPushPermissionState),Ae=Ve(B=>B.pushDeviceId),Xe=Ve(B=>B.setPushDeviceId),ft=Ve(B=>B.scrollbackDraft),Ct=Ve(B=>B.setScrollbackDraft),ln=Ve(B=>B.minColumnWidthDraft),en=Ve(B=>B.setMinColumnWidthDraft),bt=(K==null?void 0:K.uploads.maxFileSizeMb)??W$.maxFileSizeMb,fn=Ve(B=>B.uploadMaxFileSizeDraft),qe=Ve(B=>B.setUploadMaxFileSizeDraft),Ht=(K==null?void 0:K.claudeDriver.preference)??K$.preference,cn=Math.round(((K==null?void 0:K.claudeDriver.lifecycle.idleTimeoutMs)??iS.idleTimeoutMs)/6e4),wt=(K==null?void 0:K.claudeDriver.lifecycle.maxConcurrent)??iS.maxConcurrent,zt=Ve(B=>B.claudeIdleMinutesDraft),tn=Ve(B=>B.setClaudeIdleMinutesDraft),Yt=Ve(B=>B.claudeMaxConcurrentDraft),Kt=Ve(B=>B.setClaudeMaxConcurrentDraft),sn=Ve(B=>B.editorCommandDraft),Nn=Ve(B=>B.setEditorCommandDraft),Ue=Ve(B=>B.keybindingDrafts),un=Ve(B=>B.setKeybindingDrafts),wn=Ve(B=>B.keybindingsError),kt=Ve(B=>B.setKeybindingsError),Xt=Ve(B=>B.appSettingsError),Ce=Ve(B=>B.setAppSettingsError),rt=Ve(B=>B.analyticsDialogOpen),gt=Ve(B=>B.setAnalyticsDialogOpen),it=Ve(B=>B.tunnelError),jt=Ve(B=>B.setTunnelError),Bt=Ve(B=>B.cloudflaredPathDraft),Et=Ve(B=>B.setCloudflaredPathDraft),Lt=(K==null?void 0:K.shareDefaultTtlHours)??24,nn=Ve(B=>B.shareDefaultTtlDraft),$t=Ve(B=>B.setShareDefaultTtlDraft),re=Ve(B=>B.llmProviderDraft),je=Ve(B=>B.setLlmProviderDraft),ht=Ve(B=>B.llmProviderError),Ne=Ve(B=>B.setLlmProviderError),We=Ve(B=>B.llmValidationStatus),Ke=Ve(B=>B.setLlmValidationStatus),Je=Ve(B=>B.llmValidationError),pt=Ve(B=>B.setLlmValidationError),Ot=Ve(B=>B.llmValidationDialogOpen),xt=Ve(B=>B.setLlmValidationDialogOpen),Be=n.updateSnapshot,Ft=n.handleWriteAppSettings,Ln=n.handleWriteCloudflareTunnel,Gt=n.handleWriteClaudeAuth,Jt=n.handleTestOAuthToken,xr=n.handleReadLlmProvider,In=n.handleWriteLlmProvider,Gn=n.handleValidateLlmProvider;let qn;(Be==null?void 0:Be.status)==="checking"?qn="Checking for updates…":(Be==null?void 0:Be.status)==="updating"?qn="Installing update…":(Be==null?void 0:Be.status)==="restart_pending"?qn="Restarting Kanna…":(Be==null?void 0:Be.status)==="available"?qn=`Update available${Be.latestVersion?`: ${Be.latestVersion}`:""}`:(Be==null?void 0:Be.status)==="up_to_date"?qn="Up to date":(Be==null?void 0:Be.status)==="error"?qn="Update check failed":qn="Not checked yet",_.useEffect(()=>{Ct(String(N))},[N,Ct]),_.useEffect(()=>{en(String(A))},[A,en]),_.useEffect(()=>{qe(String(bt))},[bt,qe]),_.useEffect(()=>{tn(String(cn))},[cn,tn]),_.useEffect(()=>{Kt(String(wt))},[wt,Kt]),_.useEffect(()=>{const B=()=>we(fL().state);return window.addEventListener("focus",B),()=>window.removeEventListener("focus",B)},[we]),_.useEffect(()=>{Nn(M)},[M,Nn]),_.useEffect(()=>{un(Object.fromEntries(G$.map(B=>[B,SN(ae.bindings[B])])))},[ae,un]),_.useEffect(()=>{W&&je({provider:W.provider,apiKey:W.apiKey,model:W.model,baseUrl:W.baseUrl})},[W,je]),_.useEffect(()=>{Ke("idle"),pt(null)},[re.provider,re.apiKey,re.model,re.baseUrl,Ke,pt]),_.useEffect(()=>{t&&(AU(t)||e("/settings/general",{replace:!0}))},[e,t]),_.useEffect(()=>{K&&Et(K.cloudflareTunnel.cloudflaredPath)},[K,Et]),_.useEffect(()=>{let B=!1;return fetch("/auth/status",{method:"GET",cache:"no-store",headers:{Accept:"application/json"}}).then(async ze=>ze.ok?await ze.json():{enabled:!1}).then(ze=>{B||h(ze.enabled===!0)}).catch(()=>{B||h(!1)}),()=>{B=!0}},[h]),_.useEffect(()=>{x!=="providers"||S||xr()},[xr,S,x]);const ye=_.useCallback(()=>n.socket.command({type:"settings.getChangelog"}),[n.socket]);_.useEffect(()=>{if(x!=="changelog"||S)return;let B=!1;return o("loading"),b(null),MU(ye).then(ze=>{B||(m(ze),o("success"))}).catch(ze=>{B||(b(ze instanceof Error?ze.message:"Unable to load changelog."),o("error"))}),()=>{B=!0}},[S,x,o,b,m,ye]);function Qe(){const B=Number(ft);if(!Number.isFinite(B)){Ct(String(N));return}j(B),Ft({terminal:{scrollbackLines:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save terminal settings.")})}function zn(){const B=Number(ln);if(!Number.isFinite(B)){en(String(A));return}P(B),Ft({terminal:{minColumnWidth:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save terminal settings.")})}function Ur(){const B=Number(fn);if(!Number.isFinite(B)||B<K_||B>G_){qe(String(bt)),Ce(`Max file size must be between ${K_} and ${G_} MB.`);return}if(Math.round(B)===bt){qe(String(bt));return}Ft({uploads:{maxFileSizeMb:Math.round(B)}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save upload settings.")})}function ue(B){B!==Ht&&Ft({claudeDriver:{preference:B}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save Claude driver preference.")})}function Ye(){const B=Number(zt),ze=Math.round(yN/6e4),yt=Math.round(_N/6e4);if(!Number.isFinite(B)||B<ze||B>yt){tn(String(cn)),Ce(`Idle timeout must be between ${ze} and ${yt} minutes.`);return}if(Math.round(B)===cn){tn(String(cn));return}Ft({claudeDriver:{lifecycle:{idleTimeoutMs:Math.round(B)*6e4}}}).catch(yr=>{Ce(yr instanceof Error?yr.message:"Unable to save Claude lifecycle settings.")})}function ct(){const B=Number(Yt);if(!Number.isFinite(B)||B<q_||B>Y_){Kt(String(wt)),Ce(`Max concurrent sessions must be between ${q_} and ${Y_}.`);return}if(Math.round(B)===wt){Kt(String(wt));return}Ft({claudeDriver:{lifecycle:{maxConcurrent:Math.round(B)}}}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save Claude lifecycle settings.")})}function at(){const B=Number(nn);if(!Number.isInteger(B)||B<1){$t(String(Lt)),Ce("Default share link expiry must be a whole number of hours >= 1.");return}if(B===Lt){$t(String(Lt));return}Ft({shareDefaultTtlHours:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save share settings.")})}function Mn(B,ze){B.key==="Enter"&&(ze(),B.currentTarget.blur())}function It(B,ze){B.key==="Enter"&&(ze(),B.currentTarget.blur())}function Hr(){L(sn),Ft({editor:{commandTemplate:sn}}).catch(B=>{Ce(B instanceof Error?B.message:"Unable to save editor settings.")})}function li(B){i(B),Ft({theme:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save theme settings.")})}function $l(B){D(B);const ze=B==="custom"?M:Cm(B);Ft({editor:{preset:B,commandTemplate:ze}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save editor settings.")})}function Ds(B){RU(I,B)&&(H(B),Ft({chatSoundPreference:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save chat sound settings.")}),C2($,1).catch(()=>{}))}function va(B){RU($,B)&&(z(B),Ft({chatSoundId:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save chat sound settings.")}),C2(B,1).catch(()=>{}))}async function Po(B){try{Ce(null),await Ft({analyticsEnabled:B==="enabled"})}catch(ze){Ce(ze instanceof Error?ze.message:"Unable to save analytics settings.")}}async function Dt(B){try{jt(null),await Ln(B)}catch(ze){jt(ze instanceof Error?ze.message:"Unable to save Cloudflare Tunnel settings.")}}function Tn(B){oe(B),Ft({defaultProvider:B}).catch(ze=>{Ce(ze instanceof Error?ze.message:"Unable to save provider settings.")})}function Yn(B,ze){ce(B,ze),Ft({providerDefaults:{[B]:{model:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}function Cn(B,ze){de(B,ze),Ft({providerDefaults:{[B]:{modelOptions:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}function ba(B,ze){ee(B,ze),Ft({providerDefaults:{[B]:{planMode:ze}}}).catch(yt=>{Ce(yt instanceof Error?yt.message:"Unable to save provider settings.")})}async function zl(){try{kt(null),await n.socket.command({type:"settings.writeKeybindings",bindings:PU(Ue)})}catch(B){kt(B instanceof Error?B.message:"Unable to save keybindings.")}}async function Xa(B){const ze={...Ue,[B]:SN($b[B])};un(ze);try{kt(null),await n.socket.command({type:"settings.writeKeybindings",bindings:PU(ze)})}catch(yt){kt(yt instanceof Error?yt.message:"Unable to save keybindings.")}}async function gs(B=re){try{Ne(null),await In(B);const ze=await Gn(B);Ke(ze.ok?"valid":"invalid"),pt(ze.error)}catch(ze){const yt=ze instanceof Error?{name:ze.name,message:ze.message}:ze;Ke("invalid"),pt(yt),Ne(ze instanceof Error?ze.message:"Unable to save quick response provider settings.")}}function xa(B){const ze=jFe(re,B);je(ze),gs(ze)}function uu(){Yp=null,o("loading"),b(null),MU(ye,{force:!0}).then(B=>{m(B),o("success")}).catch(B=>{b(B instanceof Error?B.message:"Unable to load changelog."),o("error")})}const ci=sn.replaceAll("{path}","/Users/jake/Projects/kanna/src/client/app/App.tsx").replaceAll("{line}","12").replaceAll("{column}","1"),Ja=I6e,Za=(K==null?void 0:K.analyticsEnabled)===!1?"disabled":"enabled",co=(K==null?void 0:K.cloudflareTunnel)??Vge,$s=co.enabled?"enabled":"disabled",ya=Zv.find(B=>B.id===x)??Zv[0],q=x==="keybindings"?VFe(Q):ya.subtitle,J=!S,be=Je?JSON.stringify(Je,null,2):"";let Ze;We==="valid"?Ze="text-success":We==="invalid"?Ze="text-destructive":Ze="hidden";let hn;We==="valid"?hn="Credentials valid & saved":We==="invalid"?hn=c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Credentials invalid."}),Je?c.jsxs(c.Fragment,{children:[" ",c.jsx("button",{type:"button",onClick:()=>xt(!0),className:"underline underline-offset-2",children:"See error"})]}):null]}):hn=null;const Ir=c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:["Use an OpenAI-compatible API for title and commit message generation before Claude and Codex. Stored in ",(W==null?void 0:W.filePathDisplay)??"the active llm-provider.json file","."]}),c.jsx("span",{className:fe("mt-2 block text-sm font-medium",Ze),children:hn})]});async function ki(){if(!a){l(!0);try{await n.handleSignOut()}finally{l(!1)}}}return c.jsxs("div",{className:"relative flex h-full flex-1 min-w-0 bg-background",children:[c.jsxs("div",{className:"flex min-w-0 flex-1",children:[c.jsx("aside",{className:`hidden w-[200px] shrink-0 md:block ${J?"pb-[89px]":""}`,children:c.jsxs("div",{className:"flex flex-col gap-1 px-4 py-6",children:[c.jsx("div",{className:"px-3 pb-5 text-[22px] font-extrabold tracking-[-0.5px] text-foreground",children:"Settings"}),Zv.map(B=>{const ze=B.id==="changelog"&&(Be==null?void 0:Be.updateAvailable)===!0;return c.jsx("button",{type:"button",onClick:()=>e(`/settings/${B.id}`),className:`cursor-pointer rounded-lg px-3 py-2 text-sm ${B.id===x?"bg-muted font-medium text-foreground":"text-muted-foreground hover:bg-muted/50 hover:text-foreground"}`,children:c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(B.icon,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:B.label}),ze?c.jsx("span",{className:"ml-auto inline-flex items-center rounded-full bg-logo/20 px-2 py-0.5 text-[10px] font-bold tracking-wider text-logo",children:"UPDATE"}):null]})},B.label)}),d?c.jsx("button",{type:"button",onClick:()=>{ki()},disabled:a,className:"cursor-pointer rounded-lg px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",children:c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(P3,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:a?"Signing out...":"Sign out"})]})}):null]})}),c.jsxs("div",{className:"min-w-0 flex-1 overflow-y-auto",children:[c.jsx("div",{className:"border-b border-border py-2 md:hidden",children:c.jsx("div",{className:"overflow-x-auto pr-4 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:c.jsxs("div",{className:"flex min-w-max items-center gap-2",children:[c.jsx("div",{className:" sticky left-0 bg-gradient-to-r from-background via-background/80 to-transparent px-2 py-1",children:c.jsx("button",{type:"button",onClick:n.openSidebar,className:"flex shrink-0 items-center p-2 text-sm text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground","aria-label":"Open sidebar",title:"Open sidebar",children:c.jsx(rj,{className:"h-4 w-4 shrink-0"})})}),Zv.map(B=>c.jsxs("button",{type:"button",onClick:()=>e(`/settings/${B.id}`),className:fe("flex shrink-0 items-center gap-2 rounded-full border px-3 py-2 text-sm transition-colors",B.id===x?"border-transparent bg-muted font-medium text-foreground":"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground"),children:[c.jsx(B.icon,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{className:"whitespace-nowrap",children:B.label})]},B.label)),d?c.jsxs("button",{type:"button",onClick:()=>{ki()},disabled:a,className:fe("flex shrink-0 items-center gap-2 rounded-full border px-3 py-2 text-sm transition-colors","border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground","disabled:cursor-not-allowed disabled:opacity-50"),children:[c.jsx(P3,{className:"h-4 w-4 shrink-0"}),c.jsx("span",{className:"whitespace-nowrap",children:a?"Signing out...":"Sign out"})]}):null]})})}),c.jsxs("div",{className:"w-full px-4 pb-32 pt-8 md:px-6 md:pt-16",children:[S?c.jsx("div",{className:"flex min-h-[240px] items-center justify-center rounded-2xl border border-border bg-card/40 px-4 py-6 text-sm text-muted-foreground",children:c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(jn,{className:"h-4 w-4 animate-spin"}),c.jsx("span",{children:"Loading machine settings…"})]})}):c.jsxs("div",{className:"mx-auto max-w-4xl",children:[c.jsxs("div",{className:"pb-6",children:[c.jsxs("div",{className:"flex items-center justify-between gap-4 min-h-[34px]",children:[c.jsx("div",{className:"text-lg font-semibold tracking-[-0.2px] text-foreground",children:ya.label}),x==="general"?c.jsx(bm,{variant:"outline",onClick:()=>e("/settings/changelog"),children:"Check for updates"}):null,x==="keybindings"?c.jsxs(bm,{onClick:()=>{n.handleOpenExternalPath("open_editor",Q)},icon:c.jsx(ej,{className:"h-4 w-4"}),children:["Open in ",n.editorLabel]}):null]}),c.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:q})]}),x==="general"&&c.jsxs(c.Fragment,{children:[Xt?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:Xt}):null,c.jsxs("div",{className:"border-b border-border",children:[c.jsx(wr,{title:"Application Update",description:c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:[qn,"."]}),Be!=null&&Be.lastCheckedAt?c.jsxs("span",{children:[" Last checked ",new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(Be.lastCheckedAt),"."]}):null,Be!=null&&Be.error?c.jsxs("span",{children:[" ",Be.error]}):null]}),bordered:!1,children:c.jsxs("div",{className:"text-right text-sm text-foreground",children:[c.jsxs("div",{children:["Current: ",(Be==null?void 0:Be.currentVersion)??w]}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Latest: ",(Be==null?void 0:Be.latestVersion)??"Unknown"]})]})}),c.jsx(wr,{title:"Theme",description:"Choose between light, dark, or system appearance",children:c.jsx(Es,{value:r,onValueChange:li,options:$Fe,size:"sm"})}),c.jsx(wr,{title:"Chat Sounds",description:"Play a pop when a chat starts waiting on you or the unread chat count increases",children:c.jsxs(Qo,{value:I,onValueChange:B=>{Kge(B)&&Ds(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:zFe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]})}),c.jsx(wr,{title:"Chat Sound",description:"The bundled sound used for chat notification playback and previews",children:c.jsxs(Qo,{value:$,onValueChange:B=>{Gge(B)&&va(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:Nfe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]})}),c.jsx(wr,{title:"Default Editor",description:"Used when opening transcript links or files from the git diff menu",alignStart:!0,children:c.jsxs(Qo,{value:T,onValueChange:B=>{FW(B)&&$l(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:FC.map(B=>c.jsx(ri,{value:B.value,children:c.jsxs("span",{className:"flex items-center gap-2",children:[c.jsx(YW,{preset:B.value,className:"h-4 w-4 shrink-0"}),c.jsx("span",{children:B.label})]})},B.value))})})]})}),T==="custom"?c.jsx("div",{className:"border-t border-border",children:c.jsxs("div",{className:"flex justify-between gap-8 py-5 pl-6",children:[c.jsxs("div",{className:"min-w-0 max-w-xl",children:[c.jsx("div",{className:"text-sm font-medium text-foreground",children:"Command Template"}),c.jsxs("div",{className:"mt-1 text-[13px] text-muted-foreground",children:["Include ","{path}"," and optionally ","{line}"," and ","{column}"," in your command."]})]}),c.jsxs("div",{className:"flex min-w-0 max-w-[420px] flex-1 flex-col items-stretch gap-2",children:[c.jsx(dn,{type:"text",value:sn,onChange:B=>Nn(B.target.value),onBlur:Hr,onKeyDown:B=>It(B,Hr),className:"font-mono"}),c.jsxs("div",{className:"text-xs text-muted-foreground",children:["Preview: ",c.jsx("span",{className:"font-mono",children:ci})]})]})]})}):null,c.jsx(wr,{title:"Terminal Scrollback",description:"Lines retained for embedded terminal history",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:z2,max:B2,step:100,value:ft,onChange:B=>Ct(B.target.value),onBlur:Qe,onKeyDown:B=>Mn(B,Qe),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[z2,"-",B2," lines",N===aI?" (default)":""]})]})}),c.jsx(wr,{title:"Terminal Min Column Width",description:"Minimum width for each terminal pane",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:F2,max:U2,step:10,value:ln,onChange:B=>en(B.target.value),onBlur:zn,onKeyDown:B=>Mn(B,zn),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[F2,"-",U2," px",A===lI?" (default)":""]})]})}),c.jsx(wr,{title:"Max upload file size",description:"Largest single file the chat upload endpoint accepts.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-1.5 md:w-auto md:items-end",children:[c.jsxs("div",{className:"flex items-center gap-2 md:justify-end",children:[c.jsx(dn,{type:"number",min:K_,max:G_,step:1,value:fn,onChange:B=>qe(B.target.value),onBlur:Ur,onKeyDown:B=>Mn(B,Ur),className:"hide-number-steppers w-full text-left font-mono tabular-nums md:w-24 md:text-right","aria-label":"Max upload file size in megabytes"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:"MB"})]}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground tabular-nums md:text-right",children:[K_,"–",G_," MB · default ",W$.maxFileSizeMb]})]})}),c.jsx(wr,{title:"Auto-resume on rate limit",description:'When you hit a rate limit, automatically schedule "continue" at the reset time instead of asking. You can still cancel each one from the chat.',children:c.jsx(n8e,{checked:V,onChange:X})}),n.pushConfig?c.jsx(wr,{title:"Push notifications",description:"Get notified when a chat is waiting for you, finishes, or fails. Works on iPhone (after Add to Home Screen), Android, and desktop browsers.",bordered:!1,alignStart:!0,children:c.jsx(RFe,{permissionState:ke,config:n.pushConfig,projects:((Fe=n.localProjects)==null?void 0:Fe.projects)??[],currentDeviceId:Ae,onEnable:async()=>{if(!n.pushConfig)return;const B=await rPe({vapidPublicKey:n.pushConfig.vapidPublicKey,sendToServer:async ze=>{const yt=await n.socket.command({type:"push.subscribe",subscription:ze.subscription,label:ze.label,userAgent:ze.userAgent});return JIe(yt.id),{id:yt.id}}});Xe(B)},onDisable:async()=>{Ae&&(await iPe({pushDeviceId:Ae,sendToServer:async B=>{await n.socket.command({type:"push.unsubscribe",pushDeviceId:B})}}),ZIe(),Xe(null))},onTest:async()=>{await n.socket.command({type:"push.test"})},onMuteToggle:async(B,ze)=>{await n.socket.command({type:"push.setProjectMute",localPath:B,muted:ze})},onRemoveDevice:async B=>{await n.socket.command({type:"push.unsubscribe",pushDeviceId:B})}})}):null,c.jsx(wr,{title:"Anonymous Analytics",description:c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Help improve Kanna with anonymous product analytics. Kanna sends tracked event names plus a small set of event properties like current version, environment, update version info, and launch flags. No message content, prompts, file paths, or provider credentials are sent."}),c.jsxs("span",{className:"mt-1 block",children:["Stored in ",(K==null?void 0:K.filePathDisplay)??"~/.kanna/data/settings.json","."," ",c.jsx("button",{type:"button",onClick:()=>gt(!0),className:"underline underline-offset-2 text-foreground hover:text-foreground/80",children:"View tracked events"})]}),K!=null&&K.warning?c.jsx("span",{className:"mt-1 block",children:K.warning}):null]}),children:c.jsx(Es,{value:Za,onValueChange:B=>{Po(B)},options:BFe,size:"sm"})})]}),c.jsxs("div",{className:"border-b border-border",children:[it?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:it}):null,c.jsx(wr,{title:"Cloudflare Tunnel",description:c.jsxs(c.Fragment,{children:[c.jsxs("span",{children:["When enabled, Claude can call the ",c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:"expose_port"})," tool to expose a local port via Cloudflare Tunnel. The mode below controls whether each call requires your approval or is exposed automatically. Requires"," ",c.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-xs",children:"cloudflared"})," ","to be installed."]}),c.jsxs("span",{className:"mt-1 block",children:["Stored in ",(K==null?void 0:K.filePathDisplay)??"~/.kanna/data/settings.json","."]})]}),bordered:!1,children:c.jsx(Es,{value:$s,onValueChange:B=>{Dt({enabled:B==="enabled"})},options:FFe,size:"sm"})}),co.enabled&&c.jsxs(c.Fragment,{children:[c.jsx(wr,{title:"Tool mode",description:"Always ask: each expose_port call shows an accept card. Auto-expose: expose_port calls spawn cloudflared immediately without prompting.",children:c.jsx(Es,{value:co.mode,onValueChange:B=>{Dt({mode:B})},options:UFe,size:"sm"})}),c.jsx(wr,{title:"cloudflared path",description:"Path to the cloudflared binary. Defaults to the one found on $PATH.",children:c.jsx(dn,{value:Bt,onChange:B=>Et(B.target.value),onBlur:()=>{Dt({cloudflaredPath:Bt})},placeholder:"cloudflared",className:"w-full font-mono md:w-64"})})]})]}),c.jsx("div",{className:"border-b border-border",children:c.jsx(wr,{title:"Public share links",description:"Default expiry for read-only chat share links. Owners can revoke any link manually at any time.",bordered:!1,children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsxs("div",{className:"flex items-center gap-2 md:justify-end",children:[c.jsx(dn,{type:"number",min:1,step:1,value:nn,onChange:B=>$t(B.target.value),onBlur:at,onKeyDown:B=>Mn(B,at),className:"hide-number-steppers w-full text-left font-mono tabular-nums md:w-24 md:text-right","aria-label":"Default share link expiry in hours"}),c.jsx("span",{className:"text-sm text-muted-foreground",children:"hours"})]}),c.jsx("div",{className:"text-left text-xs text-muted-foreground tabular-nums md:text-right",children:"Minimum 1 hour · default 24"})]})})})]}),x==="providers"&&c.jsxs("div",{className:"border-b border-border",children:[c.jsx(wr,{title:"Claude OAuth tokens",description:"Manage multiple Claude OAuth tokens. Kanna switches automatically when one hits its rate limit.",bordered:!1,alignStart:!0,children:c.jsx("div",{className:"w-full md:w-[420px]",children:c.jsx(TFe,{tokens:(K==null?void 0:K.claudeAuth.tokens)??[],concurrencyDefault:(K==null?void 0:K.claudeAuth.concurrencyDefault)??1,onWrite:Gt,onTest:Jt})})}),c.jsx(wr,{title:"Claude driver",description:"SDK uses the @anthropic-ai/claude-agent-sdk programmatic API (billed at API rates). PTY launches the `claude` CLI under a pseudo-terminal — preserves Pro/Max subscription billing. Requires an OAuth-pool token configured in Kanna settings and ANTHROPIC_API_KEY to be unset. macOS/Linux only.",children:c.jsx(Es,{value:Ht,onValueChange:B=>{Wge(B)&&ue(B)},options:[{value:"sdk",label:"SDK (API)"},{value:"pty",label:"PTY (subscription)"}]})}),c.jsx(wr,{title:"PTY idle timeout",description:"Stop a Claude PTY session after this many minutes without user activity. Lower values free subscription quota faster; higher values keep cold-start latency low.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:Math.round(yN/6e4),max:Math.round(_N/6e4),step:1,value:zt,onChange:B=>tn(B.target.value),onBlur:Ye,onKeyDown:B=>Mn(B,Ye),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[Math.round(yN/6e4),"–",Math.round(_N/6e4)," min · default ",Math.round(iS.idleTimeoutMs/6e4)]})]})}),c.jsx(wr,{title:"PTY max concurrent sessions",description:"Hard cap on resident Claude PTY processes. Excess sessions are evicted LRU; their next activation cold-starts.",children:c.jsxs("div",{className:"flex w-full min-w-0 flex-col items-stretch gap-2 md:w-auto md:items-end",children:[c.jsx(dn,{type:"number",min:q_,max:Y_,step:1,value:Yt,onChange:B=>Kt(B.target.value),onBlur:ct,onKeyDown:B=>Mn(B,ct),className:"hide-number-steppers w-full text-left font-mono md:w-28 md:text-right"}),c.jsxs("div",{className:"text-left text-xs text-muted-foreground md:text-right",children:[q_,"–",Y_," · default ",K$.lifecycle.maxConcurrent]})]})}),c.jsx(wr,{title:"Default Provider",description:"The default harness used for new chats before a provider is locked by an existing session.",children:c.jsxs(Qo,{value:G,onValueChange:B=>{(B==="last_used"||UW(B))&&Tn(B)},children:[c.jsx(Co,{className:"min-w-[180px]",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsxs(jp,{children:[c.jsx(ri,{value:"last_used",children:"Last Used"}),Lb.map(B=>c.jsx(ri,{value:B.id,children:B.label},B.id))]})})]})}),c.jsx(wr,{title:"Claude Code Defaults",description:"Saved defaults when using Claude Code.",alignStart:!0,children:c.jsx("div",{className:"max-w-[420px]",children:c.jsx(rM,{availableProviders:ie,selectedProvider:"claude",showProviderPicker:!1,model:te.claude.model,modelOptions:te.claude.modelOptions,onModelChange:(B,ze)=>{Yn("claude",ze)},onModelOptionChange:B=>{B.type==="claudeReasoningEffort"?Cn("claude",{reasoningEffort:B.effort}):B.type==="contextWindow"&&Cn("claude",{contextWindow:B.contextWindow})},planMode:te.claude.planMode,onPlanModeChange:B=>ba("claude",B),includePlanMode:!0,className:"justify-start flex-wrap"})})}),c.jsx(wr,{title:"Codex Defaults",description:"Saved defaults when using Codex.",alignStart:!0,children:c.jsx("div",{className:"max-w-[420px]",children:c.jsx(rM,{availableProviders:ie,selectedProvider:"codex",showProviderPicker:!1,model:te.codex.model,modelOptions:te.codex.modelOptions,onModelChange:(B,ze)=>{Yn("codex",ze)},onModelOptionChange:B=>{B.type==="codexReasoningEffort"?Cn("codex",{reasoningEffort:B.effort}):B.type==="fastMode"&&Cn("codex",{fastMode:B.fastMode})},planMode:te.codex.planMode,onPlanModeChange:B=>ba("codex",B),includePlanMode:!0,className:"justify-start flex-wrap"})})}),c.jsx(wr,{title:"Quick Response SDK",description:Ir,alignStart:!0,children:c.jsxs("div",{className:"flex w-full max-w-[420px] flex-col gap-3",children:[ht?c.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:ht}):null,W!=null&&W.warning?c.jsx("div",{className:"rounded-lg border border-border bg-card/30 px-4 py-3 text-sm text-muted-foreground",children:W.warning}):null,c.jsxs(Qo,{value:re.provider,onValueChange:B=>{qge(B)&&xa(B)},children:[c.jsx(Co,{className:"w-full",children:c.jsx(ja,{})}),c.jsx(ko,{children:c.jsx(jp,{children:HFe.map(B=>c.jsx(ri,{value:B.value,children:B.label},B.value))})})]}),re.provider==="custom"?c.jsx(dn,{value:re.baseUrl,onChange:B=>je({...re,baseUrl:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"https://your-provider.example/v1"}):null,c.jsx(dn,{type:"password",value:re.apiKey,onChange:B=>je({...re,apiKey:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"API key"}),c.jsx(dn,{value:re.model,onChange:B=>je({...re,model:B.target.value}),onBlur:()=>void gs(),onKeyDown:B=>It(B,()=>void gs()),placeholder:"Model id"})]})})]}),x==="keybindings"&&c.jsxs("div",{className:"border-b border-border",children:[wn?c.jsx("div",{className:"mb-4 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:wn}):null,ae.warning?c.jsx("div",{className:"mb-4 rounded-lg border border-border bg-card/30 px-4 py-3 text-sm text-muted-foreground",children:ae.warning}):null,G$.map((B,ze)=>{const yt=SN($b[B]),yr=Ue[B]??"",Fd=yr!==yt;return c.jsx(wr,{title:Yge[B],description:c.jsxs(c.Fragment,{children:[c.jsx("span",{children:"Comma-separated shortcuts."}),Fd?c.jsxs(c.Fragment,{children:[c.jsx("span",{children:" "}),c.jsxs("button",{type:"button",onClick:()=>{Xa(B)},className:"inline rounded text-foreground hover:text-foreground/80",children:["Restore: ",yt]})]}):null]}),bordered:ze!==0,children:c.jsx("div",{className:"flex min-w-0 max-w-[420px] flex-1 flex-col items-stretch gap-2",children:c.jsx(dn,{type:"text",value:yr,onChange:_a=>{const wy=_a.target.value;un({...Ue,[B]:wy})},onBlur:()=>{zl()},onKeyDown:_a=>It(_a,()=>{zl()}),className:"font-mono"})})},B)})]}),x==="skills"&&c.jsx(t8e,{state:n}),x==="subagents"&&c.jsx(q6e,{state:n}),x==="models"&&c.jsx(vFe,{state:n}),x==="mcp-servers"&&c.jsx(dFe,{state:n}),x==="snippets"&&c.jsx(SFe,{state:n}),x==="instructions"&&c.jsx(r8e,{state:n}),!["general","providers","keybindings","skills","subagents","models","mcp-servers","snippets","instructions"].includes(x)&&c.jsx(YFe,{status:s,releases:p,error:v,onRetry:uu,updateSnapshot:Be,currentVersion:w,onInstallUpdate:B=>n.handleInstallUpdate(B),onCheckForUpdates:()=>{n.handleCheckForUpdates({force:!0})},onForceReload:()=>n.handleForceReload()})]}),n.commandError?c.jsxs("div",{className:"mx-auto mt-4 flex max-w-4xl items-start gap-3 rounded-lg border border-destructive/20 bg-destructive/5 px-4 py-3 text-sm text-destructive",children:[c.jsx(doe,{className:"mt-0.5 h-4 w-4 flex-shrink-0"}),c.jsx("span",{children:n.commandError})]}):null]})]})]}),J?c.jsx("div",{className:"absolute bottom-0 left-0 right-0 border-t border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80",children:c.jsx("div",{className:"px-6 py-[14.25px]",children:c.jsxs("div",{className:"grid gap-3 text-xs text-muted-foreground grid-cols-2 lg:grid-cols-4",children:[c.jsxs("div",{children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Machine"}),c.jsx("div",{className:"text-foreground/80",children:C})]}),c.jsxs("div",{className:"hidden md:block",children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Connection"}),c.jsx("div",{className:"text-foreground/80",children:n.connectionStatus})]}),c.jsxs("div",{className:"hidden md:block",children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"Projects Indexed"}),c.jsx("div",{className:"text-foreground/80",children:k})]}),c.jsxs("div",{children:[c.jsx("div",{className:"mb-1 uppercase tracking-wide text-[11px] text-muted-foreground/80",children:"App Version"}),c.jsx("div",{className:"text-foreground/80",children:w})]})]})})}):null,c.jsx(To,{open:rt,onOpenChange:gt,children:c.jsxs(io,{size:"lg",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Tracked Events"}),c.jsx("div",{className:"text-sm text-muted-foreground",children:"Kanna sends these event names plus the limited property keys below, depending on the event type."}),c.jsxs("div",{className:"max-h-[60vh] overflow-auto rounded-lg border border-border bg-muted/40 p-3",children:[c.jsx("div",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Event Names"}),c.jsx("ul",{className:"mt-3 space-y-2 text-sm",children:Ja.map(B=>c.jsx("li",{className:"font-mono text-foreground",children:B},B))}),c.jsx("div",{className:"mt-6 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Property Keys"}),c.jsx("ul",{className:"mt-3 space-y-2 text-sm",children:P6e.map(B=>c.jsx("li",{className:"font-mono text-foreground",children:B},B))})]})]}),c.jsx(Lc,{children:c.jsx(Me,{variant:"secondary",size:"sm",onClick:()=>gt(!1),children:"Close"})})]})}),c.jsx(To,{open:Ot,onOpenChange:xt,children:c.jsxs(io,{size:"lg",children:[c.jsxs(la,{className:"space-y-4",children:[c.jsx(Ao,{children:"Validation Error"}),c.jsx("pre",{className:"max-h-[60vh] overflow-auto rounded-lg border border-border bg-muted p-3 text-xs font-mono whitespace-pre-wrap break-words",children:be})]}),c.jsx(Lc,{children:c.jsx(Me,{variant:"secondary",size:"sm",onClick:()=>xt(!1),children:"Close"})})]})})]})}function PU(e){return{toggleEmbeddedTerminal:ka(e.toggleEmbeddedTerminal??""),toggleRightSidebar:ka(e.toggleRightSidebar??""),openInFinder:ka(e.openInFinder??""),openInEditor:ka(e.openInEditor??""),addSplitTerminal:ka(e.addSplitTerminal??""),jumpToSidebarChat:ka(e.jumpToSidebarChat??""),createChatInCurrentProject:ka(e.createChatInCurrentProject??""),openAddProject:ka(e.openAddProject??""),newStack:ka(e.newStack??""),newStackChat:ka(e.newStackChat??""),jumpToStacks:ka(e.jumpToStacks??"")}}const qu=qt("WorkflowsPageView",()=>e=>({selectedRunId:null,selectedRun:null,selectedAgentId:null,setSelectedRunId:t=>e({selectedRunId:t}),setSelectedRun:t=>e({selectedRun:t}),setSelectedAgentId:t=>e({selectedAgentId:t}),clearSelection:()=>e({selectedRunId:null,selectedRun:null,selectedAgentId:null})})),s8e=[],Yu=qt("WorkflowAgentTranscript",()=>e=>({loadState:"loading",messages:s8e,error:null,reloadNonce:0,setLoaded:t=>e({loadState:"loaded",messages:t}),setError:t=>e({loadState:"error",error:t}),refresh:()=>e(t=>({loadState:"loading",error:null,reloadNonce:t.reloadNonce+1}))}));function o8e({runId:e,agentId:t,agentLabel:n,promptPreview:r,agentIsRunning:i=!1,onClose:s,getTranscript:o}){const a=Yu.useScopedStore(x=>x.loadState),l=Yu.useScopedStore(x=>x.messages),d=Yu.useScopedStore(x=>x.error),h=Yu.useScopedStore(x=>x.reloadNonce),p=Yu.useScopedStore(x=>x.setLoaded),m=Yu.useScopedStore(x=>x.setError),v=Yu.useScopedStore(x=>x.refresh);_.useEffect(()=>{let x=!1;return o(e,t).then(S=>{x||p($1(S))}).catch(S=>{x||m(S instanceof Error?S.message:"Failed to load agent transcript")}),()=>{x=!0}},[e,t,o,h,p,m]);const b=_.useCallback(()=>{v()},[v]);return c.jsxs("div",{className:"flex min-h-0 flex-col gap-3","data-testid":"workflow-agent-transcript-panel",children:[c.jsxs("div",{className:"flex items-center gap-2 border-b border-border pb-2.5",children:[c.jsx("button",{type:"button",onClick:s,"aria-label":"Back to run",className:"inline-flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(f2,{className:"size-4","aria-hidden":!0})}),c.jsx("span",{className:"truncate text-sm font-semibold text-foreground",children:n}),c.jsx("span",{className:"shrink-0 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Transcript"}),i?c.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded border border-border bg-card px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide",children:[c.jsx("span",{"aria-hidden":!0,className:"inline-block size-1.5 animate-pulse rounded-full bg-emerald-500 dark:bg-emerald-400"}),c.jsx("span",{className:"text-emerald-500 dark:text-emerald-400",children:"Running"})]}):null,c.jsx("button",{type:"button",onClick:b,"aria-label":"Refresh transcript",className:"ml-auto inline-flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:c.jsx(sj,{className:a==="loading"?"size-3.5 animate-spin":"size-3.5","aria-hidden":!0})})]}),i?c.jsx("p",{className:"rounded-md border border-amber-500/20 bg-amber-500/5 px-2.5 py-1.5 text-[11px] text-amber-600 dark:text-amber-400",children:"This agent is still running — the transcript may be incomplete. Refresh to update."}):null,r?c.jsxs("div",{className:"rounded-md border border-border/50 bg-muted/40 px-2.5 py-1.5",children:[c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Prompt (preview)"}),c.jsx("p",{className:"whitespace-pre-wrap break-words text-xs text-muted-foreground/90",children:r})]}):null,c.jsx(AZ,{value:null,children:c.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 overflow-auto",children:[a==="loading"?c.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[c.jsx(jn,{className:"size-3 animate-spin","aria-label":"Loading"}),"Loading transcript…"]}):null,a==="error"?c.jsx("div",{className:"text-xs text-destructive",children:d}):null,a==="loaded"&&l.length===0?c.jsx("div",{className:"text-xs text-muted-foreground",children:"No transcript recorded yet."}):null,l.map(x=>c.jsx(vL,{message:x,localPath:""},x.id))]})})]})}function a8e(e){return c.jsx(Yu.Provider,{init:void 0,children:c.jsx(o8e,{...e})})}function l8e({runs:e,getRunDetail:t,getAgentTranscript:n,onBackToChat:r}){const i=qu.useScopedStore(w=>w.selectedRunId),s=qu.useScopedStore(w=>w.selectedRun),o=qu.useScopedStore(w=>w.selectedAgentId),a=qu.useScopedStore(w=>w.setSelectedRunId),l=qu.useScopedStore(w=>w.setSelectedRun),d=qu.useScopedStore(w=>w.setSelectedAgentId),h=qu.useScopedStore(w=>w.clearSelection),p=_.useRef(null),m=_.useRef(0),v=_.useCallback(async w=>{p.current=e,a(w),d(null),l("loading");const N=++m.current,A=await t(w);m.current===N&&l(A??"not-found")},[t,e,a,d,l]),b=_.useCallback(()=>{h(),p.current=null},[h]);_.useEffect(()=>{if(i===null||e===p.current)return;const w=e.find(T=>T.runId===i);if(!w||w.status!=="running")return;let N=!1;const A=++m.current;return t(i).then(T=>{N||m.current!==A||T===null||o!==null&&!T.agents.some(M=>M.agentId===o)||l(T)}),()=>{N=!0}},[e,i,o,t,l]);const x=s!=="loading"&&s!=="not-found"?s:null,S=o!==null&&x?x.agents.find(w=>w.agentId===o):void 0,C=i!==null;let k;return s==="loading"?k=c.jsxs("div",{className:"flex h-full items-center justify-center gap-2 text-sm text-muted-foreground",children:[c.jsx(jn,{className:"size-4 animate-spin","aria-label":"Loading"}),"Loading run…"]}):s==="not-found"?k=c.jsx(LU,{text:"Run not found or no longer available."}):S&&x?k=c.jsx(a8e,{runId:x.runId,agentId:S.agentId,agentLabel:S.label,promptPreview:S.promptPreview,agentIsRunning:S.state==="running"||S.state==="progress",onClose:()=>d(null),getTranscript:n},o??""):x?k=c.jsx(pQ,{run:x,title:x.workflowName??x.runId,onSelectAgent:w=>d(w)}):k=c.jsx(LU,{text:"Select a run to view its phases and agents."}),c.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[c.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-4 py-3 md:px-6",children:[c.jsx(lj,{className:"size-5 shrink-0 text-muted-foreground","aria-hidden":!0}),c.jsx("h1",{className:"text-lg font-semibold text-foreground",children:"Workflows"}),e.length>0?c.jsxs("span",{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground tabular-nums",style:{fontVariantNumeric:"tabular-nums"},children:[e.length," ",e.length===1?"run":"runs"]}):null,r?c.jsx(bm,{"aria-label":"Back to chat",className:"ml-auto",icon:c.jsx(f2,{className:"size-3.5","aria-hidden":!0}),onClick:r,children:"Back to chat"}):null]}),c.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[c.jsx("div",{className:fe("w-full shrink-0 overflow-auto p-3 md:w-80 md:border-r md:border-border",C&&"hidden md:block"),children:c.jsx(hQ,{runs:e,selectedRunId:i,onSelectRun:w=>{v(w)}})}),c.jsxs("div",{className:fe("min-w-0 flex-1 overflow-auto px-4 py-4 md:px-6",!C&&"hidden md:block"),children:[C?c.jsxs("button",{type:"button",onClick:b,"aria-label":"Back to runs",className:"mb-3 inline-flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground md:hidden",children:[c.jsx(f2,{className:"size-3.5","aria-hidden":!0}),"All runs"]}):null,k]})]})]})}function c8e(e){return c.jsx(qu.Provider,{init:void 0,children:c.jsx(l8e,{...e})})}function LU({text:e}){return c.jsx("div",{className:"flex h-full items-center justify-center",children:c.jsxs("div",{className:"flex flex-col items-center gap-3 rounded-lg border border-dashed border-border px-8 py-10 text-center",children:[c.jsx("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:c.jsx(lj,{className:"size-5","aria-hidden":!0})}),c.jsx("p",{className:"text-sm text-muted-foreground",children:e})]})})}function u8e(){const e=dC(),t=Ad(),{chatId:n}=fC(),r=z1(vm(hL(n??""))),i=_.useCallback(async a=>n?e.socket.command({type:"workflows.getRun",chatId:n,runId:a}):null,[n,e.socket]),s=_.useCallback(async(a,l)=>n?e.socket.command({type:"workflows.getAgentTranscript",chatId:n,runId:a,agentId:l}):[],[n,e.socket]),o=_.useCallback(()=>{n&&t(`/chat/${n}`)},[n,t]);return n?c.jsx(c8e,{runs:r,getRunDetail:i,getAgentTranscript:s,onBackToChat:o}):c.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Open a chat to view its workflows."})}function d8e({label:e="Preparing workspace"}){return c.jsx("div",{role:"status","aria-live":"polite","aria-busy":"true",className:"flex min-h-[100dvh] w-full items-center justify-center bg-background px-6 animate-fade-in",children:c.jsxs("div",{className:"flex flex-col items-center gap-6",children:[c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(fd,{className:"size-6 text-logo","aria-hidden":!0}),c.jsx("span",{className:"font-logo text-lg tracking-tight text-foreground",children:$r})]}),c.jsxs("div",{className:"flex w-[220px] flex-col items-center gap-3",children:[c.jsx("div",{className:"relative h-px w-full overflow-hidden rounded-full bg-border/60",children:c.jsx("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 block h-full w-1/3 bg-foreground/70 motion-safe:animate-kanna-bootstrap-sweep motion-reduce:left-0 motion-reduce:w-full motion-reduce:opacity-40"})}),c.jsxs("p",{className:"text-[12px] tabular-nums text-muted-foreground",children:[e,"…"]})]})]})})}const WM=_.memo(d8e);function f8e(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function h8e(e){if(typeof e=="string")return e;if(e==null)return"";try{return JSON.stringify(e,null,2)}catch{return String(e)}}function p8e({message:e}){switch(e.kind){case"user_prompt":return c.jsx("div",{className:"flex justify-end",children:c.jsx("div",{className:"max-w-[85%] sm:max-w-[80%] rounded-[20px] border border-border bg-muted px-3.5 py-1.5 text-primary prose prose-sm prose-invert [&_p]:whitespace-pre-line",children:Yc(e.text)})});case"assistant_text":return c.jsx("div",{className:"text-pretty prose prose-sm dark:prose-invert w-full max-w-[70ch] space-y-4",children:Yc(e.text)});case"assistant_thinking":return c.jsx("div",{className:"w-full max-w-[70ch]",children:c.jsx(B1,{content:e.text})});case"tool_call":return c.jsxs("div",{className:"rounded-lg border border-border bg-card/40 overflow-hidden",children:[c.jsx("div",{className:"flex items-center gap-2 px-3 py-1.5 text-xs font-mono text-muted-foreground border-b border-border bg-muted/40",children:c.jsx("span",{className:"font-semibold text-foreground",children:e.name})}),c.jsx(Bv,{source:f8e(e.input),lang:"json"})]});case"tool_result":{const t=h8e(e.output);return t?c.jsxs("div",{className:`rounded-lg border overflow-hidden ${e.isError?"border-destructive/40 bg-destructive/5":"border-border bg-muted/30"}`,children:[c.jsx("div",{className:"px-3 py-1 text-[11px] font-mono uppercase tracking-wide text-muted-foreground",children:e.isError?"tool error":"tool result"}),c.jsx(Bv,{source:t,lang:"json"})]}):null}case"diff":return c.jsxs("div",{className:"rounded-lg border border-border overflow-hidden",children:[c.jsx("div",{className:"px-3 py-1 text-xs font-mono text-muted-foreground border-b border-border bg-muted/40",children:e.path}),c.jsx(Bv,{source:e.patch,lang:"diff"})]});case"terminal_chunk":return c.jsx("div",{className:"rounded-lg border border-border overflow-hidden",children:c.jsx(Bv,{source:e.chunk,lang:"bash"})});case"omitted":return c.jsxs("div",{className:"text-center text-xs italic text-muted-foreground",children:["[content omitted: ",e.reason,"]"]})}}function m8e({snapshot:e}){const{chatMeta:t,messages:n}=e;return c.jsx(bOe,{value:{readonly:!0,localLinkMode:"text"},children:c.jsxs("main",{className:"h-[100dvh] overflow-y-auto overscroll-contain bg-background text-foreground",children:[c.jsx("header",{className:"sticky top-0 z-10 border-b border-border bg-background/95 backdrop-blur",children:c.jsxs("div",{className:"mx-auto flex w-full max-w-[800px] items-center gap-3 px-4 py-3 sm:px-6",children:[c.jsx(fd,{className:"h-5 w-5 text-logo shrink-0","aria-hidden":!0}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("h1",{className:"truncate text-sm font-semibold text-foreground",children:t.title}),c.jsxs("p",{className:"truncate text-xs text-muted-foreground",children:["Read-only · model ",t.model]})]}),c.jsx("span",{className:"shrink-0 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:"Shared"})]})}),c.jsxs("ol",{className:"mx-auto flex w-full max-w-[800px] flex-col gap-6 px-4 py-8 sm:px-6",children:[n.map(r=>c.jsx("li",{className:"contents",children:c.jsx(p8e,{message:r})},r.id)),n.length===0?c.jsx("li",{className:"text-center text-sm text-muted-foreground",children:"This shared chat has no messages."}):null]})]})})}const VM=qt("SharePage",()=>e=>({loadState:{kind:"loading"},setLoadState:t=>e({loadState:t})}));function g8e(e){switch(e.kind){case"not_found":return"Share not found";case"revoked":return"Share revoked";case"expired":return"Share expired";case"snapshot_read_failed":return"Share temporarily unavailable";default:return"Share error"}}function v8e(e){switch(e.kind){case"not_found":return"This share link does not exist.";case"revoked":return"The owner has revoked this share.";case"expired":return`This share expired on ${new Date(e.expiredAt).toISOString()}.`;case"snapshot_read_failed":return"Try again later.";default:return"Unexpected error."}}function b8e({token:e}){const t=VM.useScopedStore(r=>r.loadState),n=VM.useScopedStore(r=>r.setLoadState);return _.useEffect(()=>{let r=!1;const i=new AbortController;return fetch(`/api/share/${encodeURIComponent(e)}`,{signal:i.signal}).then(async s=>{const o=await s.json();r||(o.ok?n({kind:"ok",snapshot:o.snapshot}):n({kind:"error",error:o.error,status:s.status}))}).catch(s=>{r||s instanceof Error&&s.name==="AbortError"||n({kind:"error",error:{kind:"snapshot_read_failed",message:String(s)},status:0})}),()=>{r=!0,i.abort()}},[e,n]),t.kind==="loading"?c.jsx("main",{className:"kanna-share-view","data-state":"loading",children:c.jsx("p",{children:"Loading shared chat…"})}):t.kind==="error"?c.jsxs("main",{className:"kanna-share-view","data-state":"error",children:[c.jsx("h1",{children:g8e(t.error)}),c.jsx("p",{children:v8e(t.error)})]}):c.jsx(m8e,{snapshot:t.snapshot})}function x8e(){const t=fC().token??"";return c.jsx(VM.Provider,{init:{},children:c.jsx(b8e,{token:t})})}const bee=768,y8e=0,xee=60,_8e=60,S8e=1.5,w8e=500,C8e=8;function k8e(e,t,n){if(n.viewportWidth>=bee)return null;const r=t.x-e.x,i=t.y-e.y;return t.t-e.t>w8e||Math.abs(r)<_8e||Math.abs(r)<Math.abs(i)*S8e?null:!n.sidebarOpen&&r>0?e.x<y8e||e.x>xee?null:"open":n.sidebarOpen&&r<0?"close":null}function E8e(e,t,n){if(n.viewportWidth>=bee)return!1;const r=t.x-e.x,i=t.y-e.y;return Math.abs(r)<C8e||Math.abs(r)<=Math.abs(i)?!1:n.sidebarOpen?r<0:r>0&&e.x<=xee}function N8e({sidebarOpen:e,onOpen:t,onClose:n}){_.useEffect(()=>{if(typeof window>"u")return;let r=null;function i(l){if(l.touches.length!==1){r=null;return}const d=l.touches[0];d&&(r={x:d.clientX,y:d.clientY,t:l.timeStamp})}function s(l){const d=r;if(!d||l.touches.length!==1)return;const h=l.touches[0];if(!h)return;E8e(d,{x:h.clientX,y:h.clientY,t:l.timeStamp},{sidebarOpen:e,viewportWidth:window.innerWidth})&&l.cancelable&&l.preventDefault()}function o(l){const d=r;if(r=null,!d)return;const h=l.changedTouches[0];if(!h)return;const p=k8e(d,{x:h.clientX,y:h.clientY,t:l.timeStamp},{sidebarOpen:e,viewportWidth:window.innerWidth});p==="open"?t():p==="close"&&n()}function a(){r=null}return window.addEventListener("touchstart",i,{passive:!0}),window.addEventListener("touchmove",s,{passive:!1}),window.addEventListener("touchend",o,{passive:!0}),window.addEventListener("touchcancel",a,{passive:!0}),()=>{window.removeEventListener("touchstart",i),window.removeEventListener("touchmove",s),window.removeEventListener("touchend",o),window.removeEventListener("touchcancel",a)}},[e,t,n])}const Xp=tr()(e=>({authStatus:{status:"checking"},permissionsChatId:null,setAuthStatus:t=>e({authStatus:t}),setPermissionsChatId:t=>e({permissionsChatId:t})})),Qv=qt("PasswordScreen",()=>e=>({password:"",submitting:!1,setPassword:t=>e({password:t}),setSubmitting:t=>e({submitting:t})})),OU="kanna:last-seen-version",DU=500;function T8e(e){return!e.enabled||e.authenticated?{status:"ready"}:{status:"locked",error:null}}function A8e(e){return e!==!0}function R8e({error:e,onSubmit:t}){const n=Qv.useScopedStore(a=>a.password),r=Qv.useScopedStore(a=>a.submitting),i=Qv.useScopedStore(a=>a.setPassword),s=Qv.useScopedStore(a=>a.setSubmitting);async function o(a){if(a.preventDefault(),!(!n||r)){s(!0);try{await t(n),i("")}finally{s(!1)}}}return c.jsx("div",{className:"flex min-h-[100dvh] items-center justify-center bg-background px-6 py-10",children:c.jsxs(Mj,{className:"w-full max-w-md rounded-3xl border border-border bg-card shadow-sm",children:[c.jsxs(jj,{className:"flex flex-col p-2 space-y-3 px-6 pt-6 pb-5 pl-[28px]",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(fd,{className:"h-5 w-5 text-logo"}),c.jsx("div",{children:c.jsx(u9,{className:"font-logo text-xl uppercase text-foreground",children:$r})})]}),c.jsx(d9,{className:"leading-6",children:"Enter your password to continue."})]}),c.jsx(Ij,{className:"px-6 pb-6",children:c.jsxs("form",{className:"space-y-4",onSubmit:a=>void o(a),children:[e?c.jsx("div",{className:"rounded-2xl border border-destructive/20 bg-destructive/10 px-4 py-3 text-sm text-foreground",children:e}):null,c.jsx(dn,{id:"kanna-password",type:"password",autoComplete:"current-password",value:n,onChange:a=>i(a.target.value),placeholder:"Password",disabled:r,className:"h-11 rounded-2xl bg-background"}),c.jsx(Me,{type:"submit",disabled:r||n.length===0,className:"h-11 w-full",children:r?"Unlocking...":"Unlock"})]})})]})})}function M8e({error:e,onSubmit:t}){return c.jsx(Qv.Provider,{init:{},children:c.jsx(R8e,{error:e,onSubmit:t})})}function j8e(){const e=Xp(s=>s.authStatus),t=_.useRef(null),n=_.useRef(async()=>{}),r=_.useCallback(async()=>{t.current!==null&&(window.clearTimeout(t.current),t.current=null);const{authStatus:s,setAuthStatus:o}=Xp.getState();o(s.status==="ready"?s:{status:"checking"});let a;try{a=await fetch("/auth/status",{method:"GET",cache:"no-store",headers:{Accept:"application/json"}})}catch{t.current=window.setTimeout(()=>{n.current()},DU);return}if(A8e(a.ok)){t.current=window.setTimeout(()=>{n.current()},DU);return}const l=await a.json();Xp.getState().setAuthStatus(T8e(l))},[]);_.useLayoutEffect(()=>{n.current=r}),_.useEffect(()=>(r(),()=>{t.current!==null&&window.clearTimeout(t.current)}),[r]);const i=_.useCallback(async s=>{if(!(await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({password:s,next:window.location.pathname+window.location.search})})).ok){Xp.getState().setAuthStatus({status:"locked",error:"Incorrect password. Try again."});return}await r()},[r]);return{state:e,submitPassword:i}}function I8e(e,t,n){return e==="/"&&!!t&&n!==t}function P8e(e,t,n=document){return!!e&&Ife(t,n)}function L8e(){var ne,ie,ae;const e=qa(),t=Ad(),n=fC(),r=lLe(n.chatId??null),i=zx(),s=Rf(Q=>Q.chatSoundPreference),o=Rf(Q=>Q.chatSoundId),a=e.pathname==="/",l=Pj.split("/")[1]??"unknown";N8e({sidebarOpen:r.sidebarOpen,onOpen:r.openSidebar,onClose:r.closeSidebar});const d=_.useRef(null),{handleCreateChat:h,handleForkChat:p,handleRenameChat:m,handleArchiveChat:v,handleOpenArchivedChat:b,openAddProjectModal:x,handleDeleteChat:S,handleCopyPath:C,handleOpenExternalPath:k,handleHideProject:w,handleToggleProjectStar:N,handleReorderProjectGroups:A,importClaudeSessions:T}=r,M=_.useCallback(Q=>{h(Q)},[h]),j=_.useCallback(Q=>{p(Q)},[p]),P=_.useCallback(Q=>{m(Q)},[m]),D=_.useCallback(Q=>{v(Q)},[v]),L=_.useCallback(Q=>{b(Q)},[b]),I=_.useCallback(()=>{x()},[x]),$=_.useCallback(Q=>{S(Q)},[S]),H=_.useCallback(Q=>{C(Q)},[C]),z=_.useCallback((Q,ke)=>{k(Q,ke)},[k]),F=_.useCallback(Q=>{w(Q)},[w]),K=_.useCallback((Q,ke)=>{N(Q,ke)},[N]),W=_.useCallback(Q=>{A(Q)},[A]),V=_.useCallback(async()=>{try{const Q=await T(),ke=[`Imported ${Q.imported}`,`updated ${Q.updated}`,`skipped ${Q.skipped}`,`failed ${Q.failed}`],we=Q.newProjects>0?` (${Q.newProjects} new projects)`:"";await i.alert({title:"Import complete",description:`${ke.join(", ")}.${we}`})}catch(Q){Qs.error("[kanna/import] failed",String(Q)),await i.alert({title:"Import failed",description:"See console for details."})}},[i,T]),X=Xp(Q=>Q.permissionsChatId),G=Xp(Q=>Q.setPermissionsChatId),te=_.useCallback(Q=>{G(Q),r.activeChatId!==Q&&t(`/chat/${Q}`)},[t,G,r.activeChatId]),oe=((ne=r.chatSnapshot)==null?void 0:ne.runtime.title)??"Chat",ce=((ie=r.chatSnapshot)==null?void 0:ie.runtime.policyOverride)??null,de=_.useMemo(()=>c.jsx(dve,{data:r.sidebarData,activeChatId:r.activeChatId,connectionStatus:r.connectionStatus,open:r.sidebarOpen,collapsed:r.sidebarCollapsed,showMobileOpenButton:a,onOpen:r.openSidebar,onClose:r.closeSidebar,onCollapse:r.collapseSidebar,onExpand:r.expandSidebar,onCreateChat:M,onForkChat:j,currentProjectId:r.activeProjectId,keybindings:r.keybindings,onRenameChat:P,onArchiveChat:D,onOpenArchivedChat:L,onDeleteChat:$,onEditChatPermissions:te,onOpenAddProjectModal:I,onImportClaudeSessions:V,onCopyPath:H,onOpenExternalPath:z,onHideProject:F,onToggleStar:K,onReorderProjectGroups:W,onCreateStack:r.handleCreateStack,onRenameStack:r.handleRenameStack,onRemoveStack:r.handleRemoveStack,onCreateStackChat:r.handleCreateStackChat,onListStackWorktrees:r.handleListStackWorktrees,editorLabel:r.editorLabel,updateSnapshot:r.updateSnapshot}),[I,V,H,M,D,$,L,j,z,P,te,W,F,K,a,r.activeChatId,r.activeProjectId,r.keybindings,r.closeSidebar,r.collapseSidebar,r.connectionStatus,r.editorLabel,r.expandSidebar,r.openSidebar,r.sidebarCollapsed,r.sidebarData,r.sidebarOpen,r.updateSnapshot,r.handleCreateStack,r.handleRenameStack,r.handleRemoveStack,r.handleCreateStackChat,r.handleListStackWorktrees]);_.useEffect(()=>{const Q=window.localStorage.getItem(OU),ke=I8e(e.pathname,l,Q);window.localStorage.setItem(OU,l),ke&&t("/settings/changelog",{replace:!0})},[l,e.pathname,t]),_.useLayoutEffect(()=>{document.title=$r},[e.key]),_.useEffect(()=>{function Q(){document.title=$r}function ke(){document.title=$r}return window.addEventListener("pageshow",Q),window.addEventListener("pagehide",ke),()=>{window.removeEventListener("pageshow",Q),window.removeEventListener("pagehide",ke)}},[]),_.useEffect(()=>{const Q=Pfe(r.sidebarData);document.title=Q>0?`[${Q}] ${$r}`:$r},[r.sidebarData]),_.useEffect(()=>{const Q=Lfe(d.current,r.sidebarData);d.current=r.sidebarData,!(Q<=0)&&P8e(r.appSettings,s)&&C2(o,Q).catch(()=>{})},[o,s,r.appSettings,r.sidebarData]);const ee=((ae=r.appSettings)==null?void 0:ae.claudeDriver.preference)==="pty";return r.uiRestartActive?c.jsx(WM,{label:r.uiRestartLabel}):r.sidebarReady?c.jsxs("div",{className:"flex flex-col h-[100dvh] min-h-[100dvh] overflow-hidden",children:[ee?c.jsxs(dfe,{variant:"warning",children:[c.jsx("span",{className:"font-medium text-foreground",children:"PTY driver active."}),c.jsxs("span",{className:"text-muted-foreground",children:["Tools run under the ",c.jsx("code",{className:"font-mono",children:"claude"})," CLI with subscription billing. Use a worktree for risky tasks."]})]}):null,c.jsxs("div",{className:"flex flex-1 min-h-0 overflow-hidden",children:[de,c.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:c.jsx(Pre,{context:r})})]}),c.jsx(ife,{open:X!=null&&X===r.activeChatId,chatTitle:oe,baseline:afe,current:ce,onCancel:()=>G(null),onApply:Q=>{X&&(r.handleSetChatPolicyOverride(X,Q).catch(()=>{}),G(null))}})]}):c.jsx(WM,{label:"Connecting to workspace"})}function O8e(){const e=j8e();return e.state.status==="checking"?c.jsx(WM,{label:"Checking session"}):e.state.status==="locked"?c.jsx(M8e,{error:e.state.error,onSubmit:e.submitPassword}):c.jsx(o7,{children:c.jsxs(vc,{element:c.jsx(L8e,{}),children:[c.jsx(vc,{path:"/",element:c.jsx(j6e,{})}),c.jsx(vc,{path:"/settings",element:c.jsx(Ire,{to:"/settings/general",replace:!0})}),c.jsx(vc,{path:"/settings/:sectionId",element:c.jsx(i8e,{})}),c.jsx(vc,{path:"/chat/:chatId",element:c.jsx(S6e,{})}),c.jsx(vc,{path:"/workflows/:chatId",element:c.jsx(u8e,{})})]})})}function D8e(){return c.jsx(Aj,{children:c.jsxs(lfe,{children:[c.jsxs(o7,{children:[c.jsx(vc,{path:"/share/:token",element:c.jsx(x8e,{})}),c.jsx(vc,{path:"*",element:c.jsx(O8e,{})})]}),c.jsx(mfe,{})]})})}const yee=document.getElementById("root");if(!yee)throw new Error("Missing #root");One.createRoot(yee).render(c.jsx(_.StrictMode,{children:c.jsx(sie,{children:c.jsx(fMe,{children:c.jsx(D8e,{})})})}));export{$n as R,Z as _,d7 as a,HU as g};
|