@geminilight/mindos 0.6.63 → 0.6.65
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/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +21 -21
- package/_standalone/.next/build-manifest.json +2 -2
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +48 -42
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +2 -2
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +21 -21
- package/_standalone/.next/server/chunks/122.js +222 -0
- package/_standalone/.next/server/chunks/3113.js +52 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +2 -2
- package/_standalone/.next/server/chunks/953.js +3 -3
- package/_standalone/.next/server/chunks/9787.js +2 -0
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/1001-99da82ec8d8c136f.js +1 -0
- package/_standalone/.next/static/chunks/5149-4d828886dda479fa.js +1 -0
- package/_standalone/.next/static/chunks/{5581-82e5db227f8e9393.js → 5581-c671163a2fe1b312.js} +2 -2
- package/_standalone/.next/static/chunks/6636-53238eff89503f03.js +6 -0
- package/_standalone/.next/static/chunks/6757-1c1a89720fdda8f0.js +1 -0
- package/_standalone/.next/static/chunks/7129-20e9d2463a9da646.js +1 -0
- package/_standalone/.next/static/chunks/{3674-be69a8b858ceacdd.js → 7294-cac25d97869afadc.js} +1 -1
- package/_standalone/.next/static/chunks/8225-21e5cebc3731ddf0.js +1 -0
- package/_standalone/.next/static/chunks/8520-b51810e66293ceb8.js +22 -0
- package/_standalone/.next/static/chunks/9207-dc9c31b351a2ed78.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/{page-b0dabe793500383d.js → page-2f5cf97e03dc1cc9.js} +1 -1
- package/_standalone/.next/static/chunks/app/agents/{page-1f1ac330c8177cf6.js → page-50eac58d511dcc6e.js} +1 -1
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-2a00f4686adf3885.js +11 -0
- package/_standalone/.next/static/chunks/app/{layout-50a6b1164ee98ab9.js → layout-2cb7a6602d2e5d5f.js} +62 -58
- package/_standalone/.next/static/chunks/app/{page-73802bd31d7f6c9f.js → page-5ab911b2226f6ff7.js} +1 -1
- package/_standalone/.next/static/chunks/app/setup/page-907b7c57fad2292b.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/page-11a511b065ea84c2.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/{page-808f39963bf04715.js → page-26e47dd4c533a58c.js} +2 -2
- package/_standalone/.next/static/css/67e7918f5ed7d147.css +1 -0
- package/_standalone/.next/trace +65 -65
- package/_standalone/__tests__/api/ask-attachments.test.ts +194 -0
- package/_standalone/__tests__/api/settings.test.ts +16 -12
- package/_standalone/__tests__/api/setup.test.ts +11 -9
- package/_standalone/__tests__/api/test-key.test.ts +0 -10
- package/_standalone/__tests__/components/UpdateToast.test.ts +344 -0
- package/_standalone/__tests__/core/context.test.ts +48 -426
- package/_standalone/__tests__/lib/pi-skills.test.ts +4 -4
- package/_standalone/__tests__/lib/settings-ai-client.test.ts +32 -12
- package/_standalone/__tests__/setup.ts +5 -5
- package/_standalone/components/ask/AskContent.tsx +70 -40
- package/_standalone/components/ask/AskHeader.tsx +8 -1
- package/_standalone/components/ask/MessageList.tsx +37 -3
- package/_standalone/components/ask/ProviderModelCapsule.tsx +51 -129
- package/_standalone/components/settings/AiTab.tsx +270 -347
- package/_standalone/components/settings/CustomProviderFields.tsx +121 -0
- package/_standalone/components/settings/CustomProvidersCard.tsx +2 -2
- package/_standalone/components/settings/KnowledgeTab.tsx +6 -20
- package/_standalone/components/settings/McpAgentInstall.tsx +7 -2
- package/_standalone/components/settings/Primitives.tsx +48 -104
- package/_standalone/components/settings/ProviderModal.tsx +38 -221
- package/_standalone/components/settings/SettingsContent.tsx +5 -12
- package/_standalone/components/settings/TestButton.tsx +64 -0
- package/_standalone/components/settings/types.ts +3 -12
- package/_standalone/components/settings/useCustomProviderForm.ts +132 -0
- package/_standalone/components/setup/StepAI.tsx +3 -3
- package/_standalone/components/shared/ModelInput.tsx +18 -4
- package/_standalone/components/shared/ProviderSelect.tsx +126 -134
- package/_standalone/hooks/useAskChat.ts +97 -13
- package/_standalone/hooks/useAskPanel.ts +17 -1
- package/_standalone/lib/settings-ai-client.ts +17 -8
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/ask/route.ts +124 -44
- package/app/app/api/mcp/agents/route.ts +3 -3
- package/app/app/api/settings/list-models/route.ts +15 -26
- package/app/app/api/settings/route.ts +14 -59
- package/app/app/api/settings/test-key/route.ts +47 -12
- package/app/app/api/setup/route.ts +36 -18
- package/app/app/api/skills/route.ts +1 -1
- package/app/app/layout.tsx +5 -3
- package/app/components/HomeContent.tsx +11 -0
- package/app/components/UpdateToast.tsx +255 -0
- package/app/components/ask/AskContent.tsx +70 -40
- package/app/components/ask/AskHeader.tsx +8 -1
- package/app/components/ask/MessageList.tsx +37 -3
- package/app/components/ask/ProviderModelCapsule.tsx +51 -129
- package/app/components/settings/AiTab.tsx +270 -347
- package/app/components/settings/CustomProviderFields.tsx +121 -0
- package/app/components/settings/CustomProvidersCard.tsx +2 -2
- package/app/components/settings/KnowledgeTab.tsx +6 -20
- package/app/components/settings/McpAgentInstall.tsx +7 -2
- package/app/components/settings/Primitives.tsx +48 -104
- package/app/components/settings/ProviderModal.tsx +38 -221
- package/app/components/settings/SettingsContent.tsx +5 -12
- package/app/components/settings/TestButton.tsx +64 -0
- package/app/components/settings/types.ts +3 -12
- package/app/components/settings/useCustomProviderForm.ts +132 -0
- package/app/components/setup/StepAI.tsx +3 -3
- package/app/components/shared/ModelInput.tsx +18 -4
- package/app/components/shared/ProviderSelect.tsx +126 -134
- package/app/hooks/useAskChat.ts +97 -13
- package/app/hooks/useAskPanel.ts +17 -1
- package/app/lib/agent/context.ts +65 -0
- package/app/lib/agent/providers.ts +25 -0
- package/app/lib/agent/tools.ts +1 -1
- package/app/lib/custom-endpoints.ts +129 -29
- package/app/lib/i18n/modules/settings.ts +20 -0
- package/app/lib/pi-integration/skills.ts +16 -4
- package/app/lib/settings-ai-client.ts +17 -8
- package/app/lib/settings.ts +64 -90
- package/app/lib/types.ts +4 -0
- package/package.json +1 -1
- package/_standalone/.next/server/chunks/530.js +0 -218
- package/_standalone/.next/server/chunks/9007.js +0 -2
- package/_standalone/.next/server/chunks/9137.js +0 -52
- package/_standalone/.next/static/chunks/1309-373ade1b40aea186.js +0 -1
- package/_standalone/.next/static/chunks/3165-9189a38fd9ebf6f2.js +0 -1
- package/_standalone/.next/static/chunks/4587-5d06728133fff222.js +0 -1
- package/_standalone/.next/static/chunks/6261-5ce86db54b19ae46.js +0 -1
- package/_standalone/.next/static/chunks/6636-9bbc90fb3b8731fe.js +0 -6
- package/_standalone/.next/static/chunks/7637-904b0a381dc3ec02.js +0 -1
- package/_standalone/.next/static/chunks/8520-84e607f33c409f91.js +0 -22
- package/_standalone/.next/static/chunks/9207-9a4a1a1ede4f8e6e.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-bc5e104eb7ae6327.js +0 -11
- package/_standalone/.next/static/chunks/app/setup/page-79acb0baf38184c6.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-d040db56863da504.js +0 -1
- package/_standalone/.next/static/css/1287672978833d07.css +0 -1
- package/_standalone/lib/agent/context.ts +0 -403
- /package/_standalone/.next/static/{X86rF8dKEO0InosOw4a2_ → eIlwbGas1iRGonlPyEwj7}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{X86rF8dKEO0InosOw4a2_ → eIlwbGas1iRGonlPyEwj7}/_ssgManifest.js +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8520],{2431:(e,t,r)=>{"use strict";r.d(t,{z:()=>a});var n=r(12115);let s="mindos:acp-detection";function a(){let e=(0,n.useRef)(function(){try{let e=sessionStorage.getItem(s);if(!e)return null;let t=JSON.parse(e);if("number"!=typeof t.ts||Date.now()-t.ts>18e5)return null;return t}catch{return null}}()),[t,r]=(0,n.useState)(e.current?.installed??[]),[a,o]=(0,n.useState)(e.current?.notInstalled??[]),[l,i]=(0,n.useState)(!e.current),[u,d]=(0,n.useState)(null),[c,m]=(0,n.useState)(0),p=(0,n.useRef)(!1),f=(0,n.useRef)(!1),g=(0,n.useCallback)(()=>{try{sessionStorage.removeItem(s)}catch{}e.current=null,f.current=!0,m(e=>e+1)},[]);return(0,n.useEffect)(()=>{let e=()=>g();return window.addEventListener("mindos:settings-changed",e),()=>window.removeEventListener("mindos:settings-changed",e)},[g]),(0,n.useEffect)(()=>{let n=f.current;if(f.current=!1,e.current&&Date.now()-e.current.ts<18e5&&0===c||p.current)return;p.current=!0;let l=t.length>0||a.length>0;l||i(!0),d(null);let u=!1;return fetch(`/api/acp/detect${n?"?force=1":""}`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(t=>{if(u)return;let n=t.installed??[],a=t.notInstalled??[];try{sessionStorage.setItem(s,JSON.stringify({installed:n,notInstalled:a,ts:Date.now()}))}catch{}e.current={installed:n,notInstalled:a,ts:Date.now()},r(n),o(a)}).catch(e=>{!u&&(l||d(e.message))}).finally(()=>{p.current=!1,u||i(!1)}),()=>{u=!0}},[c]),{installedAgents:t,notInstalledAgents:a,loading:l,error:u,refresh:g}}},27318:(e,t,r)=>{"use strict";r.d(t,{KT:()=>d,NH:()=>u});var n=r(12115);let s={open:!1,initialMessage:"",source:"user",acpAgent:null},a=new Set;function o(){a.forEach(e=>e())}function l(e){return a.add(e),()=>{a.delete(e)}}function i(){return s}function u(e="",t="user",r=null){s={open:!0,initialMessage:e,source:t,acpAgent:r},o()}function d(){let e=(0,n.useSyncExternalStore)(l,i,i);return{open:e.open,initialMessage:e.initialMessage,source:e.source,acpAgent:e.acpAgent,openWith:(0,n.useCallback)((e,t="user",r=null)=>u(e,t,r),[]),close:(0,n.useCallback)(()=>void(s={open:!1,initialMessage:"",source:"user",acpAgent:null},o()),[])}}},47376:(e,t,r)=>{"use strict";r.d(t,{Ot:()=>c,T_:()=>s,Ux:()=>d,bf:()=>l,jt:()=>a,rl:()=>o});var n=r(20699);r(87358);let s={anthropic:{id:"anthropic",name:"Anthropic",nameZh:"Anthropic",defaultModel:"claude-sonnet-4-6",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://console.anthropic.com/settings/keys",category:"primary"},openai:{id:"openai",name:"OpenAI",nameZh:"OpenAI",defaultModel:"gpt-5.4",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.openai.com/api-keys",category:"primary"},google:{id:"google",name:"Google Gemini",nameZh:"Google Gemini",defaultModel:"gemini-2.5-flash",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://aistudio.google.com/apikey",category:"primary"},groq:{id:"groq",name:"Groq",nameZh:"Groq",defaultModel:"llama-3.3-70b-versatile",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://console.groq.com/keys",category:"more"},xai:{id:"xai",name:"xAI (Grok)",nameZh:"xAI (Grok)",defaultModel:"grok-3",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},openrouter:{id:"openrouter",name:"OpenRouter",nameZh:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},mistral:{id:"mistral",name:"Mistral",nameZh:"Mistral",defaultModel:"mistral-large-latest",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},deepseek:{id:"deepseek",name:"DeepSeek",nameZh:"DeepSeek",defaultModel:"deepseek-chat",piProviderOverride:"openai",fixedBaseUrl:"https://api.deepseek.com/v1",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.deepseek.com/api_keys",category:"more"},zai:{id:"zai",name:"ZhipuAI (GLM)",nameZh:"智谱 AI (GLM 国际版)",defaultModel:"glm-4-plus",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"zai-cn":{id:"zai-cn",name:"ZhipuAI (GLM China)",nameZh:"智谱 AI (GLM 国内版)",defaultModel:"glm-4-plus",piProviderOverride:"zai",fixedBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://open.bigmodel.cn/",category:"more"},"kimi-coding":{id:"kimi-coding",name:"Kimi Coding",nameZh:"Kimi Coding (月之暗面)",defaultModel:"kimi-k2-thinking",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},cerebras:{id:"cerebras",name:"Cerebras",nameZh:"Cerebras",defaultModel:"llama-4-scout-17b-16e",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},minimax:{id:"minimax",name:"MiniMax",nameZh:"MiniMax (国际版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"minimax-cn":{id:"minimax-cn",name:"MiniMax (China)",nameZh:"MiniMax (国内版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},huggingface:{id:"huggingface",name:"Hugging Face",nameZh:"Hugging Face",defaultModel:"Qwen/Qwen3-235B-A22B-Thinking-2507",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},ollama:{id:"ollama",name:"Ollama",nameZh:"Ollama (本地)",defaultModel:"llama3.2",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:11434/v1",apiKeyFallback:"ollama",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://ollama.com/download",category:"more"}},a=Object.keys(s);function o(e){return e in s}function l(){let e=[],t=[];for(let r of a)"primary"===s[r].category?e.push(r):t.push(r);return t.sort((e,t)=>s[e].name.localeCompare(s[t].name)),{primary:e,more:t}}function i(e){return s[e].piProviderOverride??e}let u={deepseek:"DEEPSEEK_API_KEY"};function d(e){return u[e]?u[e]:m[i(e)]}function c(e){let t=s[e];if(t.fixedBaseUrl)return t.fixedBaseUrl;try{let t=(0,n.zr)(i(e));return t[0]?.baseUrl??""}catch{return""}}let m={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY","azure-openai-responses":"AZURE_OPENAI_API_KEY",google:"GEMINI_API_KEY",groq:"GROQ_API_KEY",cerebras:"CEREBRAS_API_KEY",xai:"XAI_API_KEY",openrouter:"OPENROUTER_API_KEY",zai:"ZAI_API_KEY","zai-cn":"ZAI_API_KEY",mistral:"MISTRAL_API_KEY",minimax:"MINIMAX_API_KEY","minimax-cn":"MINIMAX_API_KEY",huggingface:"HF_TOKEN","kimi-coding":"KIMI_API_KEY"}},48391:(e,t,r)=>{"use strict";r.d(t,{Oo:()=>s,dB:()=>d});var n=r(12115);function s(e){let t=e.replace(/<(thinking|reasoning|scratchpad)>[\s\S]*?<\/\1>/gi,"");return(t=t.replace(/<(?:thinking|reasoning|scratchpad)>[\s\S]*$/gi,"")).trim()}let a=new Set(["create_file","write_file","batch_create_files","append_to_file","insert_after_heading","update_section","edit_lines","delete_file","rename_file","move_file","append_csv"]),o=new Set(["read_file","read_lines","search","list_files"]);function l(e,t){return t&&"object"==typeof t?"string"==typeof t.path?t.path:"string"==typeof t.from_path?t.from_path:"batch_create_files"===e&&Array.isArray(t.files)?t.files.map(e=>e.path??"").filter(Boolean).join(", "):"":""}async function i(e){try{let t=await fetch(`/api/file?path=${encodeURIComponent(e)}&op=read_file`);if(!t.ok)return"";return(await t.json()).content??""}catch{return""}}async function u(e,t,r,n){let u=e.getReader(),d=new TextDecoder,c="",m=[],p=new Map,f="",g=0,x=new Set;try{for(;!n?.aborted;){let{done:e,value:n}=await u.read();if(e)break;let y=(c+=d.decode(n,{stream:!0})).split("\n");for(let e of(c=y.pop()??"",y)){let n,u=e.trim();if(!u.startsWith("data:"))continue;let d=u.slice(5).trim();if(!d)continue;try{n=JSON.parse(d)}catch{continue}let c=n.type;switch(c){case"tool_start":{var h,b,v;let e=n.toolName,s=n.toolCallId,u=n.args;g++;let d=(h=c,b=e,v=u,"text_delta"===h?{stage:"analyzing"}:"tool_start"===h&&b?a.has(b)?{stage:"writing",detail:l(b,v)||void 0}:o.has(b)?{stage:"reading",detail:v&&"object"==typeof v&&"path"in v&&"string"==typeof v.path?v.path:void 0}:{stage:"analyzing"}:null);if(d&&t({stageHint:d}),a.has(e)){let n=l(e,u),a="update";"create_file"===e||"batch_create_files"===e?a="create":("delete_file"===e||"rename_file"===e||"move_file"===e)&&(a="unknown"),"update"===a&&n&&!x.has(n)&&(x.add(n),i(n).then(e=>{e&&r(n,e)})),p.set(s,{name:e,path:n,action:a}),t({currentTool:{name:e,path:n}})}break}case"tool_end":{let e=n.toolCallId,r=!!n.isError,s=p.get(e);if(s){if("batch_create_files"===s.name)for(let t of s.path.split(", ").filter(Boolean))m.push({action:s.action,path:t,toolCallId:e,ok:!r});else m.push({action:s.action,path:s.path,toolCallId:e,ok:!r});p.delete(e),t({changes:[...m],currentTool:null})}break}case"text_delta":f+=n.delta??"",t({stageHint:{stage:"analyzing"},summary:s(f)});break;case"error":throw Error(n.message||"AI organize failed")}}}}finally{u.releaseLock()}return{changes:m,summary:s(f),toolCallCount:g}}function d(){let[e,t]=(0,n.useState)("idle"),[r,s]=(0,n.useState)([]),[a,o]=(0,n.useState)(null),[l,i]=(0,n.useState)(null),[d,c]=(0,n.useState)(""),[m,p]=(0,n.useState)(null),[f,g]=(0,n.useState)(0),x=(0,n.useRef)(null),h=(0,n.useRef)(0),b=(0,n.useRef)(new Map),[v,y]=(0,n.useState)([]),[k,w]=(0,n.useState)("upload"),j=(0,n.useRef)(0),[N,C]=(0,n.useState)(0),S=(0,n.useCallback)(async(e,r,n="upload")=>{t("organizing"),s([]),o(null),i({stage:"connecting"}),c(""),p(null),g(0),y(e.map(e=>e.name)),w(n),j.current=Date.now(),C(0),b.current=new Map,h.current=Date.now();let a=new AbortController;x.current=a;let l=e.map(e=>({name:e.name,content:e.content.length>2e4?e.content.slice(0,2e4)+"\n\n[...truncated to first ~20000 chars]":e.content}));try{let e=await fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:r}],uploadedFiles:l,maxSteps:15,mode:"organize"}),signal:a.signal});if(!e.ok){let t=`Request failed (${e.status})`;try{let r=await e.json();"string"==typeof r?.error?t=r.error:"object"==typeof r?.error&&r.error?.message?t=r.error.message:r?.message&&(t=r.message)}catch{}throw Error(t)}if(!e.body)throw Error("No response body");let n=await u(e.body,e=>{h.current=Date.now(),e.changes&&s(e.changes),void 0!==e.currentTool&&o(e.currentTool),e.stageHint&&i(e.stageHint),void 0!==e.summary&&c(e.summary)},(e,t)=>{b.current.set(e,t)},a.signal);s(n.changes),c(n.summary),g(n.toolCallCount),o(null),C(Date.now()-j.current),t("done")}catch(e){"AbortError"===e.name?t("idle"):(p(e.message),t("error"))}finally{x.current=null}},[]),A=(0,n.useCallback)(()=>{x.current?.abort()},[]),E=(0,n.useCallback)(async e=>{let t=r.find(t=>t.path===e&&t.ok&&!t.undone);if(!t)return!1;try{if("create"===t.action){if(!(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"delete_file",path:t.path})})).ok)return!1}else{if("update"!==t.action)return!1;let r=b.current.get(e);if(!r||!(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"write_file",path:t.path,content:r})})).ok)return!1}return s(t=>t.map(t=>t.path===e&&t.ok&&!t.undone?{...t,undone:!0}:t)),!0}catch{return!1}},[r]),M=(0,n.useCallback)(async()=>{let e=r.filter(e=>e.ok&&!e.undone&&("create"===e.action||"update"===e.action&&b.current.has(e.path))),t=0;for(let r of e)try{if("create"===r.action)(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"delete_file",path:r.path})})).ok&&t++;else if("update"===r.action){let e=b.current.get(r.path);e&&(await fetch("/api/file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({op:"write_file",path:r.path,content:e})})).ok&&t++}}catch{}return t>0&&s(e=>e.map(e=>!e.ok||e.undone?e:"create"===e.action||"update"===e.action&&b.current.has(e.path)?{...e,undone:!0}:e)),t},[r]),_=(0,n.useCallback)(e=>{let t=r.find(t=>t.path===e&&t.ok&&!t.undone);return!!t&&("create"===t.action||"update"===t.action&&b.current.has(e))},[r]),R=r.some(e=>e.ok&&!e.undone&&("create"===e.action||"update"===e.action&&b.current.has(e.path))),T=(0,n.useCallback)(()=>{t("idle"),s([]),o(null),i(null),c(""),p(null),g(0),y([]),w("upload"),C(0),j.current=0,b.current=new Map,h.current=0},[]);return{phase:e,changes:r,currentTool:a,stageHint:l,summary:d,error:m,toolCallCount:f,sourceFileNames:v,source:k,durationMs:N,snapshots:b,start:S,abort:A,undoOne:E,undoAll:M,canUndo:_,hasAnyUndoable:R,reset:T}}},51541:(e,t,r)=>{"use strict";r.d(t,{A:()=>eX});var n=r(95155),s=r(12115),a=r(51914),o=r(48368),l=r(17243),i=r(33210),u=r(46757),d=r(56204),c=r(35581),m=r(47650),p=r(96035),f=r(86901),g=r(94514),x=r(66088);let h="mindos-ask-mode",b=["agent","chat"];function v({mode:e,onChange:t,disabled:r}){let{t:a}=(0,c.Y)(),[o,l]=(0,s.useState)(!1),[i,u]=(0,s.useState)(null),d=(0,s.useRef)(null),v=(0,s.useRef)(null),y=(0,s.useCallback)(()=>{if(!d.current)return;let e=d.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>120?"up":"down";u({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})},[]);(0,s.useEffect)(()=>{o&&y()},[o,y]),(0,s.useEffect)(()=>{if(!o)return;let e=e=>{let t=e.target;d.current&&!d.current.contains(t)&&v.current&&!v.current.contains(t)&&l(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[o]),(0,s.useEffect)(()=>{if(!o)return;let e=e=>{"Escape"===e.key&&l(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]),(0,s.useEffect)(()=>{if(o)return window.addEventListener("scroll",y,!0),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y)}},[o,y]);let k=(0,s.useCallback)(e=>{t(e);try{localStorage.setItem(h,e)}catch{}l(!1)},[t]),w="chat"===e,j=(e,t)=>"chat"===e?(0,n.jsx)(p.A,{size:t,className:"shrink-0"}):(0,n.jsx)(f.A,{size:t,className:"shrink-0"}),N=e=>"chat"===e?a.ask.modeChat:a.ask.modeAgent,C=e=>"chat"===e?a.ask.modeChatHint:a.ask.modeAgentHint,S=o&&i?(0,n.jsx)("div",{ref:v,role:"listbox","aria-label":"Select mode",className:"fixed z-50 min-w-[200px] max-w-[260px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{left:i.left,..."up"===i.direction?{bottom:window.innerHeight-i.top}:{top:i.top}},children:b.map(t=>{let r=e===t;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":r,onClick:()=>k(t),className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:j(t,13)}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("div",{className:"font-medium",children:N(t)}),(0,n.jsx)("div",{className:"text-2xs text-muted-foreground mt-0.5",children:C(t)})]}),r&&(0,n.jsx)(g.A,{size:12,className:"shrink-0 text-[var(--amber)]"})]},t)})}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:d,type:"button",onClick:()=>{r||l(e=>!e)},disabled:r,className:`
|
|
2
|
-
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
3
|
-
text-2xs font-medium transition-colors select-none
|
|
4
|
-
border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
5
|
-
disabled:opacity-40 disabled:cursor-not-allowed
|
|
6
|
-
${w?"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground":"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15"}
|
|
7
|
-
`,title:C(e),"aria-expanded":o,"aria-haspopup":"listbox",children:[j(e,11),(0,n.jsx)("span",{className:"truncate max-w-[80px]",children:N(e)}),(0,n.jsx)(x.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&S&&(0,m.createPortal)(S,document.body)]})}function y(e){let t=Date.now();return{id:`${t}-${Math.random().toString(36).slice(2,8)}`,currentFile:e,createdAt:t,updatedAt:t,messages:[]}}function k(e){if(e.title)return e.title;let t=e.messages.find(e=>"user"===e.role);if(!t)return"(empty session)";let r=t.content.replace(/\s+/g," ").trim();return!r&&t.images&&t.images.length>0?`[${t.images.length} image${t.images.length>1?"s":""}]`:r.length>42?`${r.slice(0,42)}...`:r||"(empty session)"}async function w(){try{let e=await fetch("/api/ask-sessions",{cache:"no-store"});if(!e.ok)return[];let t=await e.json();if(!Array.isArray(t))return[];return t.slice(0,30)}catch{return[]}}async function j(e){try{let t={...e,messages:e.messages.map(e=>e.images&&0!==e.images.length?{...e,images:e.images.map(e=>({...e,data:""}))}:e)};await fetch("/api/ask-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({session:t})})}catch{}}async function N(e){try{await fetch("/api/ask-sessions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e})})}catch{}}async function C(e){try{await fetch("/api/ask-sessions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e})})}catch{}}let S=new Set([".txt",".md",".markdown",".csv",".json",".yaml",".yml",".xml",".html",".htm",".pdf"]);function A(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t).toLowerCase():""}async function E(e){let t=e.name;try{let r=await e.arrayBuffer(),n=function(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,r+32768));return btoa(t)}(new Uint8Array(r)),s=await fetch("/api/extract-pdf",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,dataBase64:n})}),a={};try{a=await s.json()}catch{throw Error("Failed to parse extraction response")}if(!s.ok)throw Error(a.error||`PDF extraction failed (${s.status})`);let o=a.extracted&&a.text||"";if(!o)return{name:t,content:`[PDF: ${t}] Could not extract readable text (possibly scanned/image PDF).`,status:"error",error:"Scanned or image-only PDF — no extractable text"};let l={name:t,content:`[PDF TEXT EXTRACTED: ${t}]
|
|
8
|
-
|
|
9
|
-
${o}`,status:"success"};return a.truncated&&a.totalChars&&(l.truncatedInfo={totalChars:a.totalChars,includedChars:o.length,totalPages:a.pagesParsed??0}),l}catch(e){return{name:t,content:`[PDF: ${t}] Failed to extract text from this PDF.`,status:"error",error:e instanceof Error?e.message:"Unknown error"}}}let M=new Set(["image/png","image/jpeg","image/gif","image/webp"]);async function _(e){let t=e.type;if(e.size<=5242880){let r=new Uint8Array(await e.arrayBuffer()),n="";for(let e=0;e<r.length;e+=32768)n+=String.fromCharCode(...r.subarray(e,e+32768));return{data:btoa(n),mimeType:t}}return new Promise((t,r)=>{let n=new Image;n.onload=()=>{let{width:e,height:s}=n;if(e>1920||s>1920){let t=Math.min(1920/e,1920/s);e=Math.round(e*t),s=Math.round(s*t)}let a=document.createElement("canvas");a.width=e,a.height=s;let o=a.getContext("2d");o?(o.drawImage(n,0,0,e,s),t({data:a.toDataURL("image/jpeg",.85).split(",")[1],mimeType:"image/jpeg"}),URL.revokeObjectURL(n.src)):r(Error("Canvas not supported"))},n.onerror=()=>{r(Error("Failed to load image")),URL.revokeObjectURL(n.src)},n.src=URL.createObjectURL(e)})}function R(e){let t=[];for(let r of Array.from(e))if("file"===r.kind&&M.has(r.type)){let e=r.getAsFile();e&&t.push(e)}return t}var T=r(67635),z=r(53961),L=r(6296),I=r(32967),P=r(59511),D=r(61878),$=r(37618),O=r(31885),F=r(13545),U=r(84755),B=r(56842),H=r(66804),K=r(32957),Y=r(48391),Z=r(7834),W=r(42129),q=r(97810),J=r(49387),Q=r(93631),G=r(45049),V=r(68459),X=r(48334),ee=r(97233),et=r(50538),er=r(84980),en=r(33078),es=r(21362),ea=r(41585),eo=r(12651),el=r(62791);let ei=new Set(["delete_file","move_file","rename_file","write_file"]),eu=new Set(["write_file","create_file","update_section","insert_after_heading","edit_lines","append_to_file"]),ed={search:D.A,list_files:W.A,read_file:q.A,write_file:J.A,create_file:Q.A,append_to_file:o.A,insert_after_heading:G.A,update_section:J.A,delete_file:V.A,rename_file:o.A,move_file:X.A,get_backlinks:ee.A,get_history:et.A,get_file_at_version:et.A,get_recent:er.A,append_csv:en.A},ec="--- changes ---";function em({part:e}){let t=eu.has(e.toolName),r="done"===e.state,[a,o]=(0,s.useState)(null),l=a??(t&&r),i=ed[e.toolName]??I.A,u=ei.has(e.toolName),d=(0,s.useMemo)(()=>(function(e){if(!e)return{header:"",stats:"",diffLines:[]};let t=e.indexOf(ec);if(-1===t)return{header:e,stats:"",diffLines:[]};let r=e.slice(0,t).trim(),n=e.slice(t+ec.length).trim(),s=r.match(/\((\+\d+\s*−\d+)\)/);return{header:r,stats:s?s[1]:"",diffLines:n.split("\n").map(e=>e.startsWith("+ ")?{prefix:"+",text:e.slice(2)}:e.startsWith("- ")?{prefix:"-",text:e.slice(2)}:e.startsWith(" ")?{prefix:" ",text:e.slice(2)}:{prefix:" ",text:e})}})(e.output),[e.output]),c=(0,s.useMemo)(()=>e.input&&"object"==typeof e.input?e.input.path??"":"",[e.input]),m=c?`${c.split("/").pop()??c}${d.stats?` (${d.stats})`:""}`:function(e){if(!e||"object"!=typeof e)return String(e??"");let t=[];for(let r of Object.values(e))"string"==typeof r?t.push(r.length>60?`${r.slice(0,60)}…`:r):Array.isArray(r)?t.push(`[${r.length} items]`):null!=r&&t.push(String(r));return t.join(", ")}(e.input);return(0,n.jsxs)("div",{className:`my-1.5 rounded-lg border text-xs font-mono ${u?"border-[var(--amber)]/30 bg-background/60":"border-border/40 bg-background/50"}`,children:[(0,n.jsxs)("button",{type:"button",onClick:()=>o(e=>null===e?!l:!e),"aria-expanded":l,className:"w-full flex items-center gap-1.5 px-2.5 py-2 text-left hover:bg-muted/30 transition-colors rounded-lg",children:[l?(0,n.jsx)(x.A,{size:12,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)(es.A,{size:12,className:"shrink-0 text-muted-foreground"}),u&&(0,n.jsx)(ea.A,{size:11,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)(i,{size:12,className:`shrink-0 ${u?"text-[var(--amber)]":"text-muted-foreground"}`}),(0,n.jsx)("span",{className:`font-medium ${u?"text-[var(--amber)]":"text-foreground"}`,children:e.toolName}),(0,n.jsx)("span",{className:"text-muted-foreground truncate flex-1",children:m}),(0,n.jsx)("span",{className:"shrink-0 ml-auto",children:"pending"===e.state||"running"===e.state?(0,n.jsx)(L.A,{size:12,className:"animate-spin text-[var(--amber)]"}):"done"===e.state?(0,n.jsx)(eo.A,{size:12,className:"text-success"}):(0,n.jsx)(el.A,{size:12,className:"text-error"})})]}),l&&(0,n.jsx)("div",{className:"border-t border-border/30",children:t&&r&&d.diffLines.length>0?(0,n.jsx)("div",{className:"max-h-64 overflow-y-auto",children:d.diffLines.map((e,t)=>(0,n.jsxs)("div",{className:`px-2 py-px flex items-start gap-1.5 ${"+"===e.prefix?"bg-success/8":"-"===e.prefix?"bg-error/8":""}`,children:[(0,n.jsx)("span",{className:`select-none w-3 shrink-0 text-right ${"+"===e.prefix?"text-success":"-"===e.prefix?"text-error":"text-muted-foreground/50"}`,children:e.prefix}),(0,n.jsx)("span",{className:`whitespace-pre-wrap break-all flex-1 ${"+"===e.prefix?"text-success":"-"===e.prefix?"text-error":"text-muted-foreground"}`,children:e.text||"\xa0"})]},t))}):(0,n.jsxs)("div",{className:"px-2.5 pb-2.5 pt-1.5 space-y-1.5",children:["running"===e.state&&(0,n.jsxs)("div",{className:"text-muted-foreground/60 text-2xs flex items-center gap-1.5",children:[(0,n.jsx)(L.A,{size:10,className:"animate-spin"})," Running..."]}),(0,n.jsxs)("div",{className:"text-muted-foreground leading-relaxed",children:[(0,n.jsx)("span",{className:"font-semibold text-foreground/70",children:"Input: "}),(0,n.jsx)("span",{className:"break-all whitespace-pre-wrap",children:JSON.stringify(e.input,null,2)})]}),void 0!==e.output&&""!==e.output&&(0,n.jsxs)("div",{className:"text-muted-foreground leading-relaxed",children:[(0,n.jsx)("span",{className:"font-semibold text-foreground/70",children:"Output: "}),(0,n.jsx)("span",{className:"break-all whitespace-pre-wrap",children:e.output.length>500?e.output.slice(0,500)+"…":e.output})]})]})})]})}var ep=r(90718);function ef({text:e,isStreaming:t}){let[r,a]=(0,s.useState)(!1),{t:o}=(0,c.Y)();return e||t?(0,n.jsxs)("div",{className:"my-1.5 rounded-lg border border-border/30 bg-muted/15 text-xs",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>a(e=>!e),"aria-expanded":r,className:"w-full flex items-center gap-1.5 px-2.5 py-2 text-left hover:bg-muted/30 transition-colors rounded-lg",children:[r?(0,n.jsx)(x.A,{size:12,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)(es.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsx)(ep.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsxs)("span",{className:"text-muted-foreground font-medium",children:[o.ask.thinkingLabel,t&&!r&&(0,n.jsx)("span",{className:"ml-1 animate-pulse",children:"..."})]}),!r&&e&&(0,n.jsxs)("span",{className:"text-muted-foreground/50 truncate flex-1 ml-1",children:[e.slice(0,80),e.length>80?"...":""]})]}),r&&(0,n.jsx)("div",{className:"px-2.5 pb-2.5 pt-1 border-t border-border/20",children:(0,n.jsxs)("div",{className:"text-muted-foreground whitespace-pre-wrap leading-relaxed",children:[e,t&&(0,n.jsx)("span",{className:"inline-block w-1 h-3 bg-muted-foreground/40 ml-0.5 align-middle animate-pulse rounded-full"})]})})]}):null}let eg=/^Use the skill ([^:]+):\s*/;function ex({text:e,label:t}){let[r,a]=(0,s.useState)(!1),o=(0,s.useCallback)(()=>{(0,Z.l)(e).then(e=>{e&&(a(!0),setTimeout(()=>a(!1),2e3))})},[e]);return(0,n.jsx)("button",{type:"button",onClick:o,className:"absolute -bottom-1 right-1 p-1 rounded-md bg-card border border-border/60 shadow-sm text-muted-foreground hover:text-foreground opacity-100 md:opacity-0 md:group-hover:opacity-100 transition-opacity",title:t??"Copy",children:r?(0,n.jsx)(g.A,{size:11,className:"text-success"}):(0,n.jsx)(T.A,{size:11})})}function eh({content:e,skillName:t,images:r}){let s=t??e.match(eg)?.[1],a=e.match(eg),o=a?e.slice(a[0].length):e;return(0,n.jsxs)(n.Fragment,{children:[r&&r.length>0&&(0,n.jsx)("div",{className:`flex flex-wrap gap-1.5${e?" mb-2":""}`,children:r.map((e,t)=>e.data?(0,n.jsx)("img",{src:`data:${e.mimeType};base64,${e.data}`,alt:`Image ${t+1}`,className:"max-h-48 max-w-full rounded-md object-contain"},t):(0,n.jsx)("div",{className:"h-12 px-3 rounded-md bg-muted flex items-center gap-1.5 text-xs text-muted-foreground",children:(0,n.jsxs)("span",{children:["[Image ",t+1,"]"]})},t))}),s&&(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-medium bg-white/20 text-white/90 mr-1 align-middle",children:[(0,n.jsx)(z.A,{size:10,className:"shrink-0"}),s]}),s?o:e]})}function eb({content:e,isStreaming:t}){let r=(0,Y.Oo)(e);return r||t?(0,n.jsxs)("div",{className:"prose prose-sm prose-panel dark:prose-invert max-w-none text-foreground prose-p:my-2 prose-p:leading-relaxed prose-headings:font-semibold prose-headings:my-3 prose-h1:text-base prose-h2:text-[15px] prose-h3:text-sm prose-ul:my-1.5 prose-li:my-0.5 prose-ol:my-1.5 prose-code:text-[0.8em] prose-code:bg-muted/80 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-code:before:content-none prose-code:after:content-none prose-code:font-mono prose-pre:bg-muted/60 prose-pre:text-foreground prose-pre:text-xs prose-pre:rounded-lg prose-blockquote:border-l-[var(--amber)] prose-blockquote:text-muted-foreground prose-blockquote:not-italic prose-a:text-[var(--amber)] prose-a:no-underline hover:prose-a:underline prose-strong:text-foreground prose-strong:font-semibold prose-table:text-xs prose-th:py-1.5 prose-td:py-1 ",children:[(0,n.jsx)(H.oz,{remarkPlugins:[K.A],children:r}),t&&(0,n.jsx)("span",{className:"inline-block w-1.5 h-3.5 bg-[var(--amber)] ml-0.5 align-middle animate-pulse rounded-full"})]}):null}function ev({message:e,isStreaming:t}){let r=e.parts;if(!r||0===r.length)return e.content?(0,n.jsx)(eb,{content:e.content,isStreaming:t}):null;let s=r[r.length-1],a=t&&"tool-call"===s.type&&("running"===s.state||"pending"===s.state);return(0,n.jsxs)("div",{children:[r.map((e,s)=>{if("reasoning"===e.type){let a=t&&s===r.length-1;return(0,n.jsx)(ef,{text:e.text,isStreaming:a},`reasoning-${s}`)}if("text"===e.type){let a=t&&s===r.length-1;return e.text?(0,n.jsx)(eb,{content:e.text,isStreaming:a},s):null}return"tool-call"===e.type?(0,n.jsx)(em,{part:e},e.toolCallId):null}),a&&(0,n.jsxs)("div",{className:"flex items-center gap-2 py-1.5 mt-1.5",children:[(0,n.jsx)(L.A,{size:12,className:"animate-spin text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground animate-pulse",children:"Executing tool…"})]})]})}function ey({parts:e}){if(!e)return null;let t=e.filter(e=>"tool-call"===e.type);if(0===t.length)return null;let r=t[t.length-1],s="tool-call"===r.type?r.toolName:"";return(0,n.jsxs)("div",{className:"flex items-center gap-1.5 mt-2 pt-1.5 border-t border-border/15 text-xs text-muted-foreground/60",children:[(0,n.jsx)(I.A,{size:10}),(0,n.jsxs)("span",{className:"font-medium",children:["Step ",t.length,s?` — ${s}`:""]})]})}let ek=(0,s.memo)(function({messages:e,isLoading:t,loadingPhase:r,emptyPrompt:a,emptyHint:o,suggestions:l,onSuggestionClick:i,labels:u}){let d=(0,s.useRef)(null),c=(0,s.useRef)(null),[m,p]=(0,s.useState)(!1),g=(0,s.useCallback)(()=>{let e=c.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]);return(0,s.useEffect)(()=>{g()},[e,g]),(0,s.useEffect)(()=>{let e=c.current;if(!e)return;let t=()=>{let{scrollTop:t,scrollHeight:r,clientHeight:n}=e;p(r-t-n>100)};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[]),(0,n.jsxs)("div",{ref:c,role:"log","aria-live":"polite",className:"relative flex-1 overflow-y-auto overflow-x-hidden px-4 py-5 space-y-5 min-h-0",children:[0===e.length&&(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center flex-1 min-h-[260px] px-6 pt-10 pb-4",children:[(0,n.jsxs)("div",{className:"relative w-12 h-12 rounded-2xl bg-[var(--amber)]/10 flex items-center justify-center mb-6",children:[(0,n.jsx)("div",{className:"absolute inset-0 rounded-2xl bg-[var(--amber)]/5 scale-[1.4]"}),(0,n.jsx)(f.A,{size:22,className:"text-[var(--amber)] relative z-10"})]}),(0,n.jsx)("p",{className:"text-center text-[15px] font-semibold text-foreground tracking-tight mb-2",children:a}),o&&(0,n.jsx)("p",{className:"text-center text-xs text-muted-foreground/80 mb-10 tracking-wide",children:o}),(0,n.jsx)("div",{className:"flex flex-col gap-2.5 max-w-[280px] w-full",children:l.map((e,t)=>{let r=[P.A,D.A,$.A,O.A],s=r[t%r.length];return(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.prompt),className:"group/sug flex items-center gap-3 text-left text-[13px] px-3.5 py-3 rounded-xl border border-border/40 bg-transparent text-muted-foreground hover:text-foreground hover:border-[var(--amber)]/30 hover:bg-[var(--amber)]/5 transition-all leading-snug","aria-label":e.prompt,children:[(0,n.jsx)("span",{className:"shrink-0 w-8 h-8 rounded-lg bg-muted/60 flex items-center justify-center group-hover/sug:bg-[var(--amber)]/10 transition-colors",children:(0,n.jsx)(s,{size:15,className:"text-muted-foreground/70 group-hover/sug:text-[var(--amber)] transition-colors"})}),(0,n.jsx)("span",{className:"flex-1",children:e.label})]},t)})})]}),e.map((s,a)=>(0,n.jsxs)("div",{className:`flex gap-3 animate-[fadeSlideUp_0.22s_ease_both] ${"user"===s.role?"justify-end":"justify-start"}`,children:["assistant"===s.role&&(0,n.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center shrink-0 mt-0.5 bg-[var(--amber)]/8",children:(0,n.jsx)(f.A,{size:13,className:"text-[var(--amber)]"})}),"user"===s.role?(0,n.jsx)("div",{className:"max-w-[85%] px-3.5 py-2.5 rounded-2xl rounded-br-lg text-sm leading-relaxed whitespace-pre-wrap bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm shadow-[var(--amber)]/10",children:(0,n.jsx)(eh,{content:s.content,skillName:s.skillName,images:s.images})}):s.content.startsWith("__error__")?(0,n.jsx)("div",{className:"max-w-[85%] px-3.5 py-3 rounded-2xl rounded-bl-md border border-error/30 bg-error/10 text-sm shadow-sm",children:(0,n.jsxs)("div",{className:"flex items-start gap-2.5 text-error",children:[(0,n.jsx)(F.A,{size:15,className:"shrink-0 mt-0.5"}),(0,n.jsx)("span",{className:"leading-relaxed font-medium",children:s.content.slice(9)})]})}):(0,n.jsx)("div",{className:"group relative max-w-[85%] px-3.5 py-2.5 rounded-2xl rounded-bl-lg bg-card border border-border/30 shadow-sm text-foreground text-sm",children:s.parts&&s.parts.length>0||(0,Y.Oo)(s.content)?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ev,{message:s,isStreaming:t&&a===e.length-1}),t&&a===e.length-1&&(0,n.jsx)(ey,{parts:s.parts}),!(t&&a===e.length-1)&&(0,Y.Oo)(s.content)&&(0,n.jsx)(ex,{text:(0,Y.Oo)(s.content),label:u.copyMessage})]}):t&&a===e.length-1?(0,n.jsxs)("div",{className:"flex items-center gap-2.5 py-1",children:["reconnecting"===r?(0,n.jsx)(U.A,{size:14,className:"text-[var(--amber)] animate-pulse"}):(0,n.jsx)(L.A,{size:14,className:"animate-spin text-[var(--amber)]"}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,n.jsxs)("span",{className:"inline-flex items-center gap-1",children:["reconnecting"===r?u.reconnecting??"Reconnecting...":"connecting"===r?u.connecting:"thinking"===r?u.thinking:u.generating,(0,n.jsxs)("span",{className:"inline-flex gap-0.5",children:[(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:0ms]"}),(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:150ms]"}),(0,n.jsx)("span",{className:"w-1 h-1 rounded-full bg-[var(--amber)] animate-bounce [animation-delay:300ms]"})]})]})})]}):null})]},a)),(0,n.jsx)("div",{ref:d}),m&&e.length>0&&(0,n.jsx)("button",{type:"button",onClick:g,className:"sticky bottom-2 left-1/2 -translate-x-1/2 z-10 p-2 rounded-full border border-border/60 bg-card shadow-md text-muted-foreground hover:text-foreground hover:bg-muted transition-all hover:shadow-lg",title:"Scroll to bottom",children:(0,n.jsx)(B.A,{size:14})})]})});function ew({text:e,query:t}){if(!t)return(0,n.jsx)(n.Fragment,{children:e});let r=e.toLowerCase().indexOf(t.toLowerCase());return -1===r?(0,n.jsx)(n.Fragment,{children:e}):(0,n.jsxs)(n.Fragment,{children:[e.slice(0,r),(0,n.jsx)("span",{className:"text-[var(--amber)] font-semibold",children:e.slice(r,r+t.length)}),e.slice(r+t.length)]})}function ej({results:e,selectedIndex:t,query:r,onSelect:a}){let l=(0,s.useRef)(null),i=(0,s.useRef)(null),[u,d]=(0,s.useState)(280);return((0,s.useEffect)(()=>{let e=i.current;e&&d(Math.max(120,Math.min(320,Math.min(e.getBoundingClientRect().top-8,.5*window.innerHeight)-80)))},[e.length]),(0,s.useEffect)(()=>{let e=l.current;if(!e)return;let r=e.children[t];r?.scrollIntoView({block:"nearest"})},[t]),0===e.length)?null:(0,n.jsxs)("div",{ref:i,className:"border border-border rounded-lg bg-card shadow-lg overflow-hidden",children:[(0,n.jsxs)("div",{className:"px-3 py-1.5 border-b border-border flex items-center gap-1.5",children:[(0,n.jsx)(W.A,{size:11,className:"text-muted-foreground/50"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground/70 uppercase tracking-wider",children:"Files"}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 ml-auto",children:e.length})]}),(0,n.jsx)("div",{ref:l,className:"overflow-y-auto",style:{maxHeight:u},children:e.map((e,s)=>{let l=e.split("/").pop()??e,i=e.split("/").slice(0,-1).join("/"),u=l.endsWith(".csv");return(0,n.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),a(e)},className:`w-full flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${s===t?"bg-accent text-foreground":"text-muted-foreground hover:bg-muted"}`,children:[u?(0,n.jsx)(en.A,{size:13,className:"text-success shrink-0"}):(0,n.jsx)(o.A,{size:13,className:"text-muted-foreground shrink-0"}),(0,n.jsx)("span",{className:"truncate font-medium flex-1",title:l,children:(0,n.jsx)(ew,{text:l,query:r})}),i&&(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 truncate max-w-[140px] shrink-0",title:i,children:(0,n.jsx)(ew,{text:i,query:r})})]},e)})}),(0,n.jsxs)("div",{className:"px-3 py-1.5 border-t border-border flex gap-3 text-2xs text-muted-foreground/40 shrink-0",children:[(0,n.jsx)("span",{children:"↑↓ navigate"}),(0,n.jsx)("span",{children:"↵ select"}),(0,n.jsx)("span",{children:"ESC dismiss"})]})]})}function eN({results:e,selectedIndex:t,query:r,onSelect:a}){let o=(0,s.useRef)(null),l=(0,s.useRef)(null),[i,u]=(0,s.useState)(280);return((0,s.useEffect)(()=>{let e=l.current;e&&u(Math.max(120,Math.min(320,Math.min(e.getBoundingClientRect().top-8,.5*window.innerHeight)-80)))},[e.length]),(0,s.useEffect)(()=>{let e=o.current;if(!e)return;let r=e.children[t];r?.scrollIntoView({block:"nearest"})},[t]),0===e.length)?null:(0,n.jsxs)("div",{ref:l,className:"border border-border rounded-lg bg-card shadow-lg overflow-hidden",children:[(0,n.jsxs)("div",{className:"px-3 py-1.5 border-b border-border flex items-center gap-1.5",children:[(0,n.jsx)(z.A,{size:11,className:"text-[var(--amber)]/50"}),(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground/70 uppercase tracking-wider",children:"Skills"}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/40 ml-auto",children:e.length})]}),(0,n.jsx)("div",{ref:o,className:"overflow-y-auto",style:{maxHeight:i},children:e.map((e,s)=>(0,n.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),a(e)},className:`w-full flex items-center gap-2.5 px-3 py-2 text-left transition-colors ${s===t?"bg-accent text-foreground":"text-muted-foreground hover:bg-muted"}`,children:[(0,n.jsx)(z.A,{size:13,className:"text-[var(--amber)] shrink-0"}),(0,n.jsxs)("span",{className:"text-sm font-medium shrink-0",children:["/",(0,n.jsx)(ew,{text:e.name,query:r})]}),e.description&&(0,n.jsx)("span",{className:"text-2xs text-muted-foreground/50 truncate min-w-0 flex-1",title:e.description,children:e.description})]},e.name))}),(0,n.jsxs)("div",{className:"px-3 py-1.5 border-t border-border flex gap-3 text-2xs text-muted-foreground/40 shrink-0",children:[(0,n.jsx)("span",{children:"↑↓ navigate"}),(0,n.jsx)("span",{children:"↵ / Tab select"}),(0,n.jsx)("span",{children:"ESC dismiss"})]})]})}var eC=r(36261);function eS({sessions:e,activeSessionId:t,onLoad:r,onDelete:a,onRename:o,onTogglePin:l,onClearAll:i,labels:u}){let[d,c]=(0,s.useState)(!1),m=(0,s.useRef)(void 0),[p,f]=(0,s.useState)(null),[g,x]=(0,s.useState)(""),h=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>{m.current&&clearTimeout(m.current)},[]),(0,s.useEffect)(()=>{p&&h.current&&(h.current.focus(),h.current.select())},[p]);let b=(0,s.useCallback)(e=>{f(e.id),x(k(e))},[]),v=(0,s.useCallback)(()=>{p&&(o(p,g),f(null))},[p,g,o]),y=(0,s.useCallback)(()=>{f(null)},[]);return(0,n.jsxs)("div",{className:"border-b border-border/40 px-4 py-3 max-h-[220px] overflow-y-auto",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-2.5",children:[(0,n.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:u.title}),e.length>1&&(0,n.jsx)("button",{type:"button",onClick:()=>{if(!d){c(!0),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>c(!1),3e3);return}m.current&&clearTimeout(m.current),i(),c(!1)},className:`text-2xs px-2 py-0.5 rounded-md transition-colors ${d?"bg-error/10 text-error font-medium":"text-muted-foreground/60 hover:text-error hover:bg-muted"}`,children:d?u.confirmClear:u.clearAll})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-1",children:[0===e.length&&(0,n.jsx)("div",{className:"text-xs text-muted-foreground/50 py-2 text-center",children:u.noSessions}),e.map(e=>{let s=t===e.id;return(0,n.jsxs)("div",{className:"group flex items-center gap-0.5",children:[e.pinned&&(0,n.jsx)(G.A,{size:10,className:"shrink-0 text-[var(--amber)]/50 -rotate-45 ml-1"}),(0,n.jsxs)("button",{type:"button",onClick:()=>r(e.id),onDoubleClick:()=>b(e),className:`flex-1 text-left px-2.5 py-2 rounded-lg text-xs transition-colors min-w-0 ${s?"bg-[var(--amber)]/8 text-foreground border border-[var(--amber)]/15":"text-muted-foreground hover:bg-muted hover:text-foreground border border-transparent"}`,children:[p===e.id?(0,n.jsx)("input",{ref:h,type:"text",value:g,onChange:e=>x(e.target.value),onBlur:v,onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),v()),"Escape"===e.key&&(e.preventDefault(),y())},onClick:e=>e.stopPropagation(),className:"w-full bg-transparent border-b border-[var(--amber)] outline-none text-xs text-foreground"}):(0,n.jsx)("div",{className:"truncate font-medium",children:k(e)}),p!==e.id&&(0,n.jsx)("div",{className:"text-2xs text-muted-foreground/50 mt-0.5",children:function(e){let t=Math.floor((Date.now()-e.getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let r=Math.floor(t/60);if(r<24)return`${r}h ago`;let n=Math.floor(r/24);return n<7?`${n}d ago`:e.toLocaleDateString(void 0,{month:"short",day:"numeric"})}(new Date(e.updatedAt))})]}),(0,n.jsx)("button",{type:"button",onClick:()=>l(e.id),className:`p-1.5 rounded-lg transition-opacity opacity-0 group-hover:opacity-100 ${e.pinned?"text-[var(--amber)] hover:text-muted-foreground":"text-muted-foreground hover:text-[var(--amber)]"}`,title:e.pinned?"Unpin":"Pin",children:e.pinned?(0,n.jsx)(eC.A,{size:11}):(0,n.jsx)(G.A,{size:11})}),(0,n.jsx)("button",{type:"button",onClick:()=>b(e),className:"p-1.5 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted opacity-0 group-hover:opacity-100 transition-opacity",title:u.rename,children:(0,n.jsx)(J.A,{size:11})}),(0,n.jsx)("button",{type:"button",onClick:()=>a(e.id),className:"p-1.5 rounded-lg text-muted-foreground hover:text-error hover:bg-error/5 opacity-0 group-hover:opacity-100 transition-opacity",title:"Delete session",children:(0,n.jsx)(V.A,{size:11})})]},e.id)})]})]})}var eA=r(89823),eE=r(60241),eM=r(24371),e_=r(52335),eR=r(94852);let eT=(0,s.memo)(function({isPanel:e,showHistory:t,onToggleHistory:r,onReset:a,isLoading:o,maximized:l,onMaximize:u,askMode:d,onModeSwitch:p,onClose:h,hideTitle:b,sessions:v,activeSessionId:y,onLoadSession:w,onDeleteSession:j,onRenameSession:N,onTogglePinSession:C}){let{t:S}=(0,c.Y)(),A=v&&v.length>=1,E=v?.find(e=>e.id===y),M=E?k(E):null,[_,R]=(0,s.useState)(!1),T=(0,s.useRef)(null),z=(0,s.useRef)(null),[L,I]=(0,s.useState)(null),[P,D]=(0,s.useState)(""),$=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!_)return;let e=e=>{let t=e.target;T.current&&!T.current.contains(t)&&z.current&&!z.current.contains(t)&&(R(!1),I(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[_]),(0,s.useEffect)(()=>{if(!_)return;let e=e=>{"Escape"===e.key&&(L?I(null):R(!1))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[_,L]),(0,s.useEffect)(()=>{L&&setTimeout(()=>$.current?.focus(),0)},[L]);let O=(0,s.useCallback)(e=>{w?.(e),R(!1)},[w]),F=(0,s.useCallback)((e,t)=>{I(e),D("(empty session)"===t?"":t)},[]),U=(0,s.useCallback)(()=>{L&&N&&P.trim()&&N(L,P.trim()),I(null)},[L,P,N]),[B,H]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!_||!T.current)return;let e=T.current.getBoundingClientRect();H({top:e.bottom+4,left:e.left,width:Math.max(e.width,240)})},[_]);let K=_&&B&&v?(0,m.createPortal)((0,n.jsx)("div",{ref:z,className:"fixed z-50 rounded-xl border border-border/50 bg-card shadow-lg py-1 animate-in fade-in-0 slide-in-from-top-1 duration-100",style:{top:B.top,left:B.left,minWidth:B.width,maxWidth:320},role:"listbox",children:v.map(e=>{let t=e.id===y,r=k(e),s="(empty session)"===r?S.hints?.newChat??"New chat":r;return L===e.id?(0,n.jsx)("div",{className:"flex items-center gap-1 px-2 py-1.5",children:(0,n.jsx)("input",{ref:$,type:"text",value:P,onChange:e=>D(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&I(null)},onBlur:U,className:"flex-1 min-w-0 px-2 py-1 text-xs rounded-md border border-border bg-background text-foreground outline-none focus:border-[var(--amber)]/50",placeholder:"Session name..."})},e.id):(0,n.jsxs)("div",{className:"group/item flex items-center",children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":t,onClick:()=>O(e.id),className:`flex-1 min-w-0 flex items-center gap-2 px-3 py-2 text-xs text-left transition-colors ${t?"text-foreground font-medium":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[e.pinned&&(0,n.jsx)(G.A,{size:10,className:"shrink-0 text-[var(--amber)]/60 -rotate-45"}),t&&!e.pinned&&(0,n.jsx)(g.A,{size:11,className:"shrink-0 text-[var(--amber)]"}),(0,n.jsx)("span",{className:"truncate",children:s})]}),(0,n.jsxs)("div",{className:"shrink-0 flex items-center gap-0.5 mr-1 opacity-0 group-hover/item:opacity-100 transition-opacity",children:[C&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),C(e.id)},className:`p-1.5 rounded-md transition-colors ${e.pinned?"text-[var(--amber)] hover:text-muted-foreground hover:bg-muted/60":"text-muted-foreground/40 hover:text-[var(--amber)] hover:bg-[var(--amber)]/5"}`,"aria-label":e.pinned?"Unpin":"Pin",children:e.pinned?(0,n.jsx)(eC.A,{size:10}):(0,n.jsx)(G.A,{size:10})}),N&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),F(e.id,r)},className:"p-1.5 rounded-md text-muted-foreground/40 hover:text-foreground hover:bg-muted/60","aria-label":`Rename: ${s}`,children:(0,n.jsx)(J.A,{size:10})}),v.length>1&&j&&(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),j(e.id)},className:"p-1.5 rounded-md text-muted-foreground/40 hover:text-error hover:bg-error/5","aria-label":`Delete: ${s}`,children:(0,n.jsx)(V.A,{size:10})})]})]},e.id)})}),document.body):null;return(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 shrink-0",children:[!e&&(0,n.jsx)("div",{className:"absolute top-2 left-1/2 -translate-x-1/2 w-8 h-1 rounded-full bg-muted-foreground/20 md:hidden"}),!b&&(0,n.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,n.jsx)("div",{className:"w-6 h-6 rounded-lg bg-[var(--amber)]/10 flex items-center justify-center shrink-0",children:(0,n.jsx)(f.A,{size:13,className:"text-[var(--amber)]"})}),A&&M?(0,n.jsxs)("button",{ref:T,type:"button",onClick:()=>{v&&v.length>=2?R(e=>!e):r()},className:"flex items-center gap-1 min-w-0 text-sm font-medium text-[var(--amber)] hover:text-[var(--amber)]/80 transition-colors","aria-expanded":_,"aria-haspopup":"listbox",children:[(0,n.jsx)("span",{className:"truncate max-w-[180px]",children:"(empty session)"===M?S.hints?.newChat??"New chat":M}),(0,n.jsx)(x.A,{size:12,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${_?"rotate-180":""}`})]}):M?(0,n.jsx)("span",{className:"text-sm font-medium text-muted-foreground/60 truncate max-w-[180px]",children:"(empty session)"===M?S.hints?.newChat??"New chat":M}):(0,n.jsx)("span",{className:"text-sm font-medium text-muted-foreground/40",children:S.hints?.newChat??"New chat"})]}),b&&(0,n.jsx)("div",{}),(0,n.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),r()},"aria-pressed":t,className:`p-2 rounded-lg transition-colors ${t?"bg-[var(--amber)]/10 text-[var(--amber)]":"text-muted-foreground hover:text-foreground hover:bg-muted"}`,title:S.hints.sessionHistory,children:(0,n.jsx)(et.A,{size:14})}),(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),a()},disabled:o,className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors disabled:opacity-40",title:S.hints.newSession,children:(0,n.jsx)(eA.A,{size:14})}),u&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),u()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:l?S.hints.restorePanel:S.hints.maximizePanel,children:l?(0,n.jsx)(eE.A,{size:14}):(0,n.jsx)(eM.A,{size:14})}),p&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),p()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:"popup"===d?S.hints.dockToSide:S.hints.openAsPopup,children:"popup"===d?(0,n.jsx)(e_.A,{size:14}):(0,n.jsx)(eR.A,{size:14})}),h&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),h()},className:"p-2 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",title:S.hints.closePanel,"aria-label":"Close",children:(0,n.jsx)(i.A,{size:14})})]}),"u">typeof document&&K]})});var ez=r(56558),eL=r(49619),eI=r(38798);let eP={kb:{icon:o.A,cls:"text-muted-foreground"},upload:{icon:ez.A,cls:"text-muted-foreground"},image:{icon:l.A,cls:"text-muted-foreground"},skill:{icon:z.A,cls:"text-[var(--amber)]"},agent:{icon:eL.A,cls:"text-muted-foreground"}},eD={kb:"border-border bg-muted text-foreground",upload:"border-border bg-muted text-foreground",image:"border-border bg-muted text-foreground",skill:"border-[var(--amber)]/25 bg-[var(--amber)]/10 text-foreground",agent:"border-[var(--amber)]/25 bg-[var(--amber)]/10 text-foreground"};function e$({path:e,onRemove:t,variant:r="kb",imageData:a,imageMime:o,status:l,error:u,truncatedInfo:d}){let[c,p]=(0,s.useState)(!1),[f,g]=(0,s.useState)(!1),[x,h]=(0,s.useState)(!1),b=(0,s.useRef)(null),[v,y]=(0,s.useState)(null),[k,w]=(0,s.useState)(null);(0,s.useEffect)(()=>h(!0),[]);let j="kb"===r&&e.endsWith("/"),N=j?e.slice(0,-1):e,C=N.split("/").pop()??N,S="kb"===r&&!j&&C.endsWith(".csv"),{icon:A,cls:E}=j?{icon:eI.A,cls:"text-yellow-400"}:S?{icon:en.A,cls:"text-success"}:eP[r],M=!!d,_=null,R="";"loading"===l?(_=L.A,R="text-muted-foreground animate-spin"):"error"===l?(_=F.A,R="text-destructive"):M?(_=ea.A,R="text-amber-500"):"success"===l&&(_=eo.A,R="text-emerald-500");let T="error"===l?"border-destructive/30 bg-destructive/5 text-foreground":M?"border-amber-500/30 bg-amber-500/5 text-foreground":eD[r],z=null;if("error"===l&&u)z=u;else if(M){let e=d.totalChars>0?Math.round(d.includedChars/d.totalChars*100):0;z=`Document truncated — only ${e}% included (${Math.round(d.includedChars/1e3)}K / ${Math.round(d.totalChars/1e3)}K chars, ${d.totalPages} pages total)`}(0,s.useEffect)(()=>{if(!c||!b.current)return void y(null);let e=b.current.getBoundingClientRect();y({top:e.top-8,left:e.left})},[c]),(0,s.useEffect)(()=>{if(!f||!b.current)return void w(null);let e=b.current.getBoundingClientRect();w({top:e.top-8,left:e.left})},[f]);let I=c&&v&&a&&o?(0,n.jsx)("div",{className:"fixed z-50 p-1 rounded-lg border border-border bg-card shadow-lg pointer-events-none",style:{left:v.left,bottom:window.innerHeight-v.top},children:(0,n.jsx)("img",{src:`data:${o};base64,${a}`,alt:C,className:"max-h-48 max-w-64 rounded object-contain"})}):null,P=f&&k&&z?(0,n.jsx)("div",{className:`fixed z-50 px-2.5 py-1.5 rounded-lg border bg-card text-xs shadow-lg pointer-events-none max-w-[280px] ${"error"===l?"border-destructive/20 text-destructive":"border-amber-500/20 text-amber-600 dark:text-amber-400"}`,style:{left:k.left,bottom:window.innerHeight-k.top},children:z}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{ref:b,className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs border max-w-[220px] ${T}`,onMouseEnter:()=>{a&&p(!0),z&&g(!0)},onMouseLeave:()=>{p(!1),g(!1)},children:[(0,n.jsx)(A,{size:11,className:`${E} shrink-0`}),(0,n.jsx)("span",{className:"truncate",title:j?N:e,children:C}),_&&(0,n.jsx)(_,{size:10,className:`${R} shrink-0`}),(0,n.jsx)("button",{type:"button",onClick:t,"aria-label":`Remove ${C}`,className:"p-0.5 -mr-1 rounded hover:text-foreground transition-colors shrink-0 text-muted-foreground",children:(0,n.jsx)(i.A,{size:10})})]}),x&&I&&(0,m.createPortal)(I,document.body),x&&P&&(0,m.createPortal)(P,document.body)]})}function eO({selectedAgent:e,onSelect:t,installedAgents:r,loading:a=!1}){let{t:o}=(0,c.Y)(),l=o.panels.agents,[u,d]=(0,s.useState)(!1),[p,f]=(0,s.useState)(null),h=(0,s.useRef)(null),b=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!u||!h.current)return;let e=h.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>200?"up":"down";f({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})},[u]),(0,s.useEffect)(()=>{if(!u)return;let e=e=>{let t=e.target;h.current&&!h.current.contains(t)&&b.current&&!b.current.contains(t)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[u]),(0,s.useEffect)(()=>{if(!u)return;let e=e=>{"Escape"===e.key&&d(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u]),(0,s.useEffect)(()=>{if(!u||!h.current)return;let e=()=>{if(!h.current)return;let e=h.current.getBoundingClientRect(),t=e.top,r=t>window.innerHeight-e.bottom&&t>200?"up":"down";f({left:e.left,top:"up"===r?e.top-6:e.bottom+6,direction:r})};return window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),()=>{window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)}},[u]);let v=(0,s.useCallback)(()=>{t(null),d(!1)},[t]),y=(0,s.useCallback)(e=>{t({id:e.id,name:e.name}),d(!1)},[t]),k=(0,s.useCallback)(e=>{e.stopPropagation(),t(null)},[t]),w=!e,j=e?.name??l.acpDefaultAgent;if(!a&&0===r.length&&!e)return null;let N=u&&p?(0,n.jsxs)("div",{ref:b,role:"listbox","aria-label":l.acpSelectAgent,className:"fixed z-50 min-w-[180px] max-w-[240px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{left:p.left,..."up"===p.direction?{bottom:window.innerHeight-p.top}:{top:p.top}},children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":w,onClick:v,className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)(eL.A,{size:12,className:"shrink-0 text-muted-foreground"}),(0,n.jsx)("span",{className:"flex-1 truncate font-medium",children:l.acpDefaultAgent}),w&&(0,n.jsx)(g.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]}),r.length>0&&(0,n.jsx)("div",{className:"mx-2 my-1 border-t border-border/60"}),r.map(t=>{let r=e?.id===t.id;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":r,onClick:()=>y(t),className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-left transition-colors hover:bg-muted",children:[(0,n.jsx)("span",{className:"w-2 h-2 rounded-full bg-[var(--success)] shrink-0"}),(0,n.jsx)("span",{className:"flex-1 truncate",children:t.name}),r&&(0,n.jsx)(g.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]},t.id)})]}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:h,type:"button",onClick:()=>d(e=>!e),className:`
|
|
10
|
-
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
11
|
-
text-2xs font-medium transition-colors
|
|
12
|
-
border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
13
|
-
${w?"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground":"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15"}
|
|
14
|
-
`,title:l.acpChangeAgent,"aria-expanded":u,"aria-haspopup":"listbox",children:[w?(0,n.jsx)(eL.A,{size:11,className:"shrink-0 text-muted-foreground"}):(0,n.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-[var(--success)] shrink-0"}),(0,n.jsx)("span",{className:"truncate max-w-[120px]",children:j}),e?(0,n.jsx)("span",{role:"button",tabIndex:0,onClick:k,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),k(e))},className:"p-0.5 -mr-1 rounded-full text-muted-foreground hover:text-foreground transition-colors","aria-label":`Remove ${e.name}`,children:(0,n.jsx)(i.A,{size:9})}):(0,n.jsx)(x.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&N&&(0,m.createPortal)(N,document.body)]})}var eF=r(91958),eU=r(65576),eB=r(47376),eH=r(60112);let eK="mindos-provider-model";function eY(e,t){try{e||t?localStorage.setItem(eK,JSON.stringify({provider:e,model:t})):localStorage.removeItem(eK),localStorage.removeItem("mindos-provider-override")}catch{}}function eZ({providerValue:e,onProviderChange:t,modelValue:r,onModelChange:a,disabled:o=!1}){let{t:l,locale:i}=(0,c.Y)(),[u,d]=(0,s.useState)(!1),p=(0,s.useRef)(null),f=(0,s.useRef)(null),h=(0,s.useRef)(null),b=(0,s.useRef)(null),v=(0,s.useRef)(null),[y,k]=(0,s.useState)(null),w=(0,s.useRef)(null),j=(0,s.useRef)(null),[N,C]=(0,s.useState)(null),[S,A]=(0,s.useState)({}),[E,M]=(0,s.useState)(null),[_,R]=(0,s.useState)(!1),[T,z]=(0,s.useState)(""),[I,P]=(0,s.useState)(""),[$,O]=(0,s.useState)(-1),F=(0,s.useRef)(0),U=(0,s.useRef)({}),B=(0,s.useRef)(void 0),H=(0,s.useRef)(void 0),K=(0,s.useCallback)(()=>{B.current&&(clearTimeout(B.current),B.current=void 0)},[]),Y=(0,s.useCallback)(()=>{K(),B.current=setTimeout(()=>{C(null),P("")},300)},[K]);(0,s.useEffect)(()=>()=>{B.current&&clearTimeout(B.current),H.current&&clearTimeout(H.current),en.current&&clearTimeout(en.current)},[]),(0,s.useEffect)(()=>{let e=!1,t=()=>{fetch("/api/settings",{cache:"no-store"}).then(e=>e.json()).then(t=>{e||k(t)}).catch(()=>{})};t();let r=()=>{"visible"===document.visibilityState&&t()},n=()=>t();return document.addEventListener("visibilitychange",r),window.addEventListener("mindos:settings-changed",n),()=>{e=!0,document.removeEventListener("visibilitychange",r),window.removeEventListener("mindos:settings-changed",n)}},[]);let Z=y?.ai?.provider&&(0,eB.rl)(y.ai.provider)?y.ai.provider:"anthropic",W=(0,s.useMemo)(()=>y?function(e){let t=[],r=e.ai?.providers??{},n=e.customProviders??[],s=e.envOverrides??{};for(let n of eB.jt){let a=eB.T_[n],o=r[n]?.apiKey==="***set***",l=(0,eB.Ux)(n),i=!!l&&!!s[l];if(o||i)t.push(n);else if(a.apiKeyFallback){let s=r[n];(e.ai?.provider===n||s&&(s.model||s.baseUrl))&&t.push(n)}}for(let e of n)t.push(e.id);return t}(y):[],[y]);(0,s.useEffect)(()=>{y&&e&&(W.includes(e)||(t(null),a(null),eY(null,null)))},[y,e,W,t,a]);let q=e??Z,J=(0,eH.yx)(String(q)),Q=J?(0,eH.CY)(y?.customProviders??[],String(q)):null,G=J?null:eB.T_[q],V=Q?.model||y?.ai?.providers?.[q]?.model||G?.defaultModel||"",X=r||V,ee=Q?.name||(G?"zh"===i?G.nameZh:G.name:String(q)),[et,er]=(0,s.useState)({}),en=(0,s.useRef)(void 0),ea=(0,s.useCallback)(()=>{if(!p.current)return;let e=p.current.getBoundingClientRect(),t=e.top>window.innerHeight-e.bottom&&e.top>280;er({position:"fixed",left:Math.min(e.left,window.innerWidth-230),...t?{bottom:window.innerHeight-e.top+6}:{top:e.bottom+6},zIndex:50})},[]),eo=(0,s.useCallback)(()=>{en.current&&clearTimeout(en.current),en.current=setTimeout(()=>{ea()},0)},[ea]);(0,s.useEffect)(()=>{u&&ea()},[u,ea]),(0,s.useEffect)(()=>{if(u)return window.addEventListener("scroll",eo,!0),window.addEventListener("resize",eo),()=>{window.removeEventListener("scroll",eo,!0),window.removeEventListener("resize",eo),en.current&&clearTimeout(en.current)}},[u,eo]),(0,s.useEffect)(()=>{if(!u)return;let e=e=>{let t=e.target;p.current?.contains(t)||f.current?.contains(t)||h.current?.contains(t)||(d(!1),C(null))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[u]),(0,s.useEffect)(()=>{if(!u)return;let e=e=>{"Escape"===e.key&&(N?(C(null),P("")):d(!1))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,N]);let el=(0,s.useCallback)(async(e,t=!1)=>{if(!t&&U.current[e]){M(U.current[e]),R(!1);return}t&&delete U.current[e],R(!0),z(""),M(null);let r=++F.current;try{let t=(0,eH.yx)(String(e)),n=await fetch("/api/settings/list-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t?{customProviderId:e}:{provider:e})});if(r!==F.current)return;let s=await n.json();if(r!==F.current)return;s.ok&&Array.isArray(s.models)?(U.current[e]=s.models,M(s.models)):z(s.error||"Failed")}catch{r===F.current&&z("Network error")}finally{r===F.current&&R(!1)}},[]),ei=(0,s.useCallback)(e=>!!(0,eH.yx)(e)&&!!(0,eH.CY)(y?.customProviders??[],e),[y]),eu=(0,s.useCallback)(e=>(0,eH.yx)(String(e))?ei(String(e)):eB.T_[e]?.supportsListModels??!1,[ei]),ed=(0,s.useCallback)(()=>{let e=w.current,t=j.current;if(!e||!t)return;let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),s=r.right+4,a=n.top;window.innerHeight-a<320&&(a=Math.max(8,n.bottom-320)),A({position:"fixed",left:s+220>window.innerWidth-8?r.left-220-4:s,top:a,zIndex:51})},[]),ec=(0,s.useCallback)(e=>{K(),H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{if(!eu(e)){C(null),P("");return}C(e),P(""),O(-1),z(""),M(U.current[e]??null),U.current[e]||el(e),requestAnimationFrame(()=>{ed(),setTimeout(()=>b.current?.focus(),50)})},80)},[K,el,ed,eu]),em=(0,s.useCallback)(()=>{K(),H.current&&(clearTimeout(H.current),H.current=void 0),C(null),P("")},[K]),ep=(0,s.useCallback)(e=>{t(e),a(null),eY(e,null),d(!1),C(null),P("")},[t,a]),ef=(0,s.useCallback)((e,r)=>{t(e),a(r),eY(e,r),d(!1),C(null),P("")},[t,a]),eg=(0,s.useMemo)(()=>{if(!E)return[];if(!I.trim())return E;let e=I.toLowerCase();return E.filter(t=>t.toLowerCase().includes(e))},[E,I]);(0,s.useEffect)(()=>{O(-1)},[eg]);let ex=(0,s.useCallback)(e=>{eg.length&&("ArrowDown"===e.key?(e.preventDefault(),O(e=>(e+1)%eg.length)):"ArrowUp"===e.key?(e.preventDefault(),O(e=>(e-1+eg.length)%eg.length)):"Enter"===e.key&&$>=0&&$<eg.length&&N?(e.preventDefault(),ef(N,eg[$])):"Escape"===e.key&&(e.preventDefault(),C(null),P("")))},[eg,$,N,ef]);if((0,s.useEffect)(()=>{if($<0||!v.current)return;let e=v.current.querySelectorAll("[data-model-item]");e[$]?.scrollIntoView({block:"nearest"})},[$]),!y||0===W.length)return null;let eh=(X||"").length>24?(X||"").slice(0,22)+"...":X,eb=W.filter(e=>!(0,eH.yx)(String(e))),ev=W.filter(e=>(0,eH.yx)(String(e))),ey=!!(r&&r!==V),ek=u?(0,n.jsx)("div",{ref:f,style:et,children:(0,n.jsxs)("div",{ref:w,role:"listbox","aria-label":l.ask?.providerCapsule??"Provider",className:"w-[220px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",style:{maxHeight:"70vh",overflowY:"auto"},children:[eb.map(t=>{let s=eB.T_[t],a="zh"===i?s.nameZh:s.name,o=r&&e===t?r:y?.ai?.providers?.[t]?.model||s.defaultModel,u=e===t||!e&&Z===t,d=N===t,c=eu(t);return(0,n.jsx)("div",{ref:d?j:void 0,onMouseEnter:()=>c?ec(t):em(),onMouseLeave:Y,children:(0,n.jsxs)("div",{className:`flex w-full items-center text-xs transition-colors ${d?"bg-accent/60":"hover:bg-muted/60"}`,children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":u,onClick:()=>ep(t),className:"flex flex-1 items-center gap-2 px-3 py-1.5 min-w-0",children:[(0,n.jsxs)("div",{className:"flex-1 min-w-0 truncate",children:[(0,n.jsx)("span",{className:`text-xs ${u?"font-medium text-foreground":"text-foreground/80"}`,children:a}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground ml-1.5",children:o})]}),u&&(0,n.jsx)(g.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]}),c&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),N===t?em():ec(t)},className:`shrink-0 px-1.5 py-1.5 mr-1 rounded transition-colors ${d?"text-foreground":"text-muted-foreground/40 hover:text-muted-foreground"}`,title:l.ask?.selectModel??"Select model",children:(0,n.jsx)(es.A,{size:11})})]})},t)}),ev.map(t=>{let s=(0,eH.CY)(y?.customProviders??[],String(t));if(!s)return null;let a=r&&e===t?r:s.model,o=e===t,i=N===t,u=eu(t);return(0,n.jsx)("div",{ref:i?j:void 0,onMouseEnter:()=>u?ec(t):em(),onMouseLeave:Y,children:(0,n.jsxs)("div",{className:`flex w-full items-center text-xs transition-colors ${i?"bg-accent/60":"hover:bg-muted/60"}`,children:[(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":o,onClick:()=>ep(t),className:"flex flex-1 items-center gap-2 px-3 py-1.5 min-w-0",children:[(0,n.jsxs)("div",{className:"flex-1 min-w-0 truncate",children:[(0,n.jsx)("span",{className:`text-xs ${o?"font-medium text-foreground":"text-foreground/80"}`,children:s.name}),(0,n.jsx)("span",{className:"text-2xs text-muted-foreground ml-1.5",children:a})]}),o&&(0,n.jsx)(g.A,{size:11,className:"shrink-0 text-[var(--amber)]"})]}),u&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),N===t?em():ec(t)},className:`shrink-0 px-1.5 py-1.5 mr-1 rounded transition-colors ${i?"text-foreground":"text-muted-foreground/40 hover:text-muted-foreground"}`,title:l.ask?.selectModel??"Select model",children:(0,n.jsx)(es.A,{size:11})})]})},t)})]})}):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:p,type:"button",onClick:()=>{!o&&(d(e=>!e),u&&(C(null),P("")))},disabled:o,className:`
|
|
15
|
-
inline-flex items-center gap-1 rounded-full px-2.5 py-0.5
|
|
16
|
-
text-2xs font-medium transition-colors select-none
|
|
17
|
-
border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
18
|
-
disabled:opacity-40 disabled:cursor-not-allowed
|
|
19
|
-
${e||ey?"bg-[var(--amber)]/10 border-[var(--amber)]/25 text-foreground hover:bg-[var(--amber)]/15":"bg-muted/50 border-border/50 text-muted-foreground hover:bg-muted hover:text-foreground"}
|
|
20
|
-
`,title:l.ask?.providerCapsule??"Provider","aria-expanded":u,"aria-haspopup":"listbox",children:[(0,n.jsx)(eU.A,{size:11,className:"shrink-0"}),(0,n.jsxs)("span",{className:"truncate max-w-[160px]",children:[ee,(0,n.jsx)("span",{className:"text-muted-foreground",children:" \xb7 "}),(0,n.jsx)("span",{className:ey?"text-[var(--amber)]":"text-muted-foreground",children:eh})]}),(0,n.jsx)(x.A,{size:10,className:"shrink-0 text-muted-foreground"})]}),"u">typeof document&&ek&&(0,m.createPortal)(ek,document.body),"u">typeof document&&u&&(()=>{if(!N)return null;let t=(0,eH.yx)(String(N)),s=t?null:eB.T_[N],a=t?(0,eH.CY)(y?.customProviders??[],String(N)):null,o=a?.name||(s?"zh"===i?s.nameZh:s.name:String(N));return(0,m.createPortal)((0,n.jsxs)("div",{ref:h,style:S,className:"w-[220px] rounded-lg border border-border bg-card shadow-lg py-1 animate-in fade-in-0 zoom-in-95 duration-100",onMouseEnter:K,onMouseLeave:Y,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 border-b border-border/40",children:[(0,n.jsx)("span",{className:"text-2xs font-medium text-muted-foreground",children:o}),(0,n.jsx)("button",{type:"button",onClick:()=>el(N,!0),disabled:_,className:"p-1 text-muted-foreground/50 hover:text-foreground transition-colors disabled:opacity-30",title:"Refresh",children:(0,n.jsx)(eF.A,{size:10,className:_?"animate-spin":""})})]}),(0,n.jsx)("div",{className:"px-2 pt-1.5 pb-1",children:(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(D.A,{size:10,className:"absolute left-2 top-1/2 -translate-y-1/2 text-muted-foreground/40"}),(0,n.jsx)("input",{ref:b,type:"text",value:I,onChange:e=>P(e.target.value),onKeyDown:ex,placeholder:l.ask?.searchModels??"Search...",className:"w-full text-2xs pl-6 pr-2 py-1 rounded border border-border/50 bg-transparent text-foreground placeholder:text-muted-foreground/40 focus:outline-none focus:border-[var(--amber)]/50",autoComplete:"off"})]})}),(0,n.jsxs)("div",{ref:v,className:"max-h-[240px] overflow-y-auto px-1 pb-1",children:[_&&!E&&(0,n.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-3 text-2xs text-muted-foreground justify-center",children:[(0,n.jsx)(L.A,{size:10,className:"animate-spin"}),l.ask?.loadingModels??"Loading..."]}),T&&!_&&(0,n.jsx)("div",{className:"px-2 py-3 text-2xs text-destructive text-center",children:T}),!_&&!T&&0===eg.length&&null!==E&&(0,n.jsx)("div",{className:"px-2 py-3 text-2xs text-muted-foreground text-center",children:I?"No matches":"No models"}),eg.map((t,a)=>{let o=e===N&&r===t,l=y?.ai?.providers?.[N]?.model||s?.defaultModel;return(0,n.jsxs)("button",{type:"button","data-model-item":!0,onClick:()=>ef(N,t),className:`w-full text-left px-2 py-1 text-2xs rounded transition-colors flex items-center gap-1 ${o?"bg-[var(--amber)]/12 text-foreground font-medium":a===$?"bg-accent":"hover:bg-accent/60"}`,children:[o?(0,n.jsx)(g.A,{size:9,className:"shrink-0 text-[var(--amber)]"}):(0,n.jsx)("span",{className:"w-[9px] shrink-0"}),(0,n.jsx)("span",{className:"truncate",children:t}),t===l&&!o&&(0,n.jsx)("span",{className:"ml-auto text-[9px] text-muted-foreground/30 shrink-0",children:"default"})]},t)})]})]}),document.body)})()]})}var eW=r(68589);let eq=new Set([401,403,429]),eJ=[/api.?key/i,/model.*not.?found/i,/authentication/i,/unauthorized/i,/forbidden/i];var eQ=r(91337),eG=r(2431);let eV=new WeakMap;function eX({visible:e,currentFile:t,initialMessage:r,initialAcpAgent:m,onFirstMessage:p,variant:f,onClose:g,maximized:x,onMaximize:b,askMode:k,onModeSwitch:T}){let z="panel"===f,L="home"===f,I=(0,s.useRef)(null),P=(0,s.useRef)(null),{t:D}=(0,c.Y)(),[$,O]=(0,s.useState)(!1);(0,s.useEffect)(()=>O(!0),[]);let[F,U]=(0,s.useState)(""),B=(0,s.useRef)("");B.current=F;let[H,K]=(0,s.useState)([]),Y=(0,s.useRef)(H);Y.current=H;let[Z,W]=(0,s.useState)(!1),[q,J]=(0,s.useState)(!1),[Q,G]=(0,s.useState)(!1),[V,X]=(0,s.useState)(null),ee=(0,s.useRef)(V);ee.current=V;let[et,er]=(0,s.useState)(null),en=(0,s.useRef)(et);en.current=et;let[es,ea]=(0,s.useState)("agent"),[eo,el]=(0,s.useState)(null),[ei,eu]=(0,s.useState)(null);(0,s.useEffect)(()=>{ea(function(){try{let e=localStorage.getItem(h);if("chat"===e||"agent"===e)return e}catch{}return"agent"}());let e=function(){try{let e=localStorage.getItem(eK);if(!e){let e=localStorage.getItem("mindos-provider-override");if(e&&((0,eB.rl)(e)||(0,eH.yx)(e)))return{provider:e,model:null};return{provider:null,model:null}}let t=JSON.parse(e),r=t?.provider&&((0,eB.rl)(t.provider)||(0,eH.yx)(t.provider))?t.provider:null,n="string"==typeof t?.model?t.model:null;return{provider:r,model:n}}catch{return{provider:null,model:null}}}();el(e.provider),eu(e.model)},[]);let ed=function(e){let[t,r]=(0,s.useState)([]),[n,a]=(0,s.useState)([]),[o,l]=(0,s.useState)(null),i=(0,s.useRef)(null),u=(0,s.useCallback)(async()=>{let t=(await w()).sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30),n=t.filter(e=>0===e.messages.length).map(e=>e.id),s=n.length>0?t.filter(e=>!n.includes(e.id)):t;n.length>0&&C(n);let o=y(e),i=e?s.find(t=>t.currentFile===e):s[0];i?(l(i.id),r(i.messages),a([...s])):(l(o.id),r([]),a([o,...s].slice(0,30)))},[e]),d=(0,s.useCallback)((t,r)=>{if(!r||0===t.length)return;let n=null;a(s=>{let a=Date.now(),o=s.find(e=>e.id===r);n=o?{...o,currentFile:e,updatedAt:a,messages:t}:{id:r,currentFile:e,createdAt:a,updatedAt:a,messages:t};let l=s.filter(e=>e.id!==r);return[n,...l].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30)}),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{n&&j(n)},600)},[e]),c=(0,s.useCallback)(()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),m=(0,s.useCallback)(()=>{a(t=>{let n=t.find(e=>e.id===o);if(n&&0===n.messages.length)return t;let s=y(e);return l(s.id),r([]),[s,...t].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,30)})},[e,o]),p=(0,s.useCallback)(e=>{let t=n.find(t=>t.id===e);if(!t)return;let s=o?n.find(e=>e.id===o):null;s&&0===s.messages.length&&s.id!==e&&a(e=>e.filter(e=>e.id!==s.id)),l(t.id),r(t.messages)},[n,o]),f=(0,s.useCallback)(t=>{let s=n.find(e=>e.id===t);s&&s.messages.length>0&&N(t);let i=n.filter(e=>e.id!==t);if(a(i),o===t){let t=y(e);l(t.id),r([]),a([t,...i].slice(0,30))}},[o,e,n]),g=(0,s.useCallback)((e,t)=>{let r=t.trim();a(t=>{let n=t.findIndex(t=>t.id===e);if(n<0)return t;let s={...t[n],title:r||void 0},a=[...t];return a[n]=s,j(s),a})},[]),x=(0,s.useCallback)(e=>{a(t=>{let r=t.findIndex(t=>t.id===e);if(r<0)return t;let n={...t[r],pinned:!t[r].pinned},s=[...t];return s[r]=n,n.messages.length>0&&j(n),s})},[]),h=(0,s.useCallback)(()=>{let t=n.filter(e=>e.messages.length>0).map(e=>e.id);t.length>0&&C(t);let s=y(e);l(s.id),r([]),a([s])},[e,n]);return{messages:t,setMessages:r,sessions:[...n].sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:t.updatedAt-e.updatedAt),activeSessionId:o,initSessions:u,persistSession:d,clearPersistTimer:c,resetSession:m,loadSession:p,deleteSession:f,renameSession:g,togglePinSession:x,clearAllSessions:h}}(t),ec=(0,s.useRef)(ed);ec.current=ed;let em=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(""),a=(0,s.useRef)(null),o=(0,s.useCallback)(async e=>{if(!e||0===e.length)return;let r=Array.from(e).slice(0,8),s=[],a=[];for(let e of r){let t=A(e.name);S.has(t)?s.push(e):a.push(e.name)}a.length>0?n(`Unsupported file type: ${a.join(", ")}`):n("");let o=[],l=[];for(let e of s)".pdf"===A(e.name)?(l.push({name:e.name,content:"",status:"loading"}),o.push(e)):l.push({name:e.name,content:await e.text(),status:"success"});if(t(e=>{let t=[...e];for(let e of l)t.some(t=>t.name===e.name)||t.push(e);return t}),o.length>0){let e=await Promise.all(o.map(E));t(t=>t.map(t=>"loading"!==t.status?t:e.find(e=>e.name===t.name)??t))}},[]),l=(0,s.useCallback)(e=>{t(t=>t.filter((t,r)=>r!==e))},[]);return{localAttachments:e,uploadError:r,uploadInputRef:a,pickFiles:o,removeAttachment:l,clearAttachments:(0,s.useCallback)(()=>{t([]),n("")},[]),injectFiles:(0,s.useCallback)(e=>{t(t=>{let r=[...t];for(let t of e)r.some(e=>e.name===t.name)||r.push(t);return r})},[])}}(),ep=(0,s.useRef)(em);ep.current=em;let ef=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(""),a=(0,s.useCallback)(async e=>{n("");let r=e.slice(0,4),s=[];for(let e of r){var a;if(a=e.type,!M.has(a)){n(`Unsupported image type: ${e.type}`);continue}try{let{data:t,mimeType:r}=await _(e);s.push({type:"image",data:t,mimeType:r,fileName:e.name||void 0})}catch{n(`Failed to process image: ${e.name}`)}}t(e=>{let t=[...e,...s];return t.length>4?(n("Maximum 4 images allowed"),t.slice(0,4)):t})},[]),o=(0,s.useCallback)(async e=>{let t=e.clipboardData?.items;if(!t)return!1;let r=R(t);return 0!==r.length&&(await a(r),!0)},[a]),l=(0,s.useCallback)(async e=>{let t=e.dataTransfer?.items;if(!t)return;let r=R(t);r.length>0&&(e.preventDefault(),await a(r))},[a]),i=(0,s.useCallback)(async e=>{if(!e)return;let t=Array.from(e).filter(e=>{var t;return t=e.type,M.has(t)});await a(t)},[a]);return{images:e,imageError:r,addImages:a,handlePaste:o,handleDrop:l,handleFileSelect:i,removeImage:(0,s.useCallback)(e=>{t(t=>t.filter((t,r)=>r!==e))},[]),clearImages:(0,s.useCallback)(()=>{t([]),n("")},[])}}(),eg=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[l,i]=(0,s.useState)(0),u=(0,s.useCallback)(()=>{fetch("/api/files").then(e=>e.ok?e.json():[]).then(e=>Array.isArray(e)?e:[]).catch(()=>[]).then(t)},[]);(0,s.useEffect)(()=>{u();let e=()=>u();return window.addEventListener("mindos:files-changed",e),()=>window.removeEventListener("mindos:files-changed",e)},[u]);let d=(0,s.useCallback)((t,r)=>{let s=r??t.length,a=t.slice(0,s),l=a.lastIndexOf("@");if(-1===l||l>0&&" "!==a[l-1]&&"\n"!==a[l-1])return void n(null);let u=a.slice(l+1);if(u.includes(" ")||u.includes("\n")){n(null),o([]),i(0);return}let d=u.toLowerCase();if(!d){n(u),o(e.slice(0,30)),i(0);return}let c=e.map(e=>{let t=(e.split("/").pop()??e).toLowerCase(),r=e.toLowerCase(),n=0;return t.startsWith(d)?n=100:t.includes(d)?n=50:r.includes(d)&&(n=10),{path:e,score:n}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).slice(0,30);if(0===c.length){n(null),o([]),i(0);return}n(u),o(c.map(e=>e.path)),i(0)},[e]),c=(0,s.useCallback)(e=>{0!==a.length&&("down"===e?i(e=>Math.min(e+1,a.length-1)):i(e=>Math.max(e-1,0)))},[a.length]);return{mentionQuery:r,mentionResults:a,mentionIndex:l,updateMentionFromInput:d,navigateMention:c,resetMention:(0,s.useCallback)(()=>{n(null),o([]),i(0)},[])}}(),ex=function(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[l,i]=(0,s.useState)(0),u=(0,s.useRef)(!1),d=(0,s.useCallback)(async()=>{t((await fetch("/api/skills").then(e=>e.ok?e.json():{skills:[]}).then(e=>Array.isArray(e?.skills)?e.skills:[]).catch(()=>[])).filter(e=>e.enabled)),u.current=!0},[]);(0,s.useEffect)(()=>{d();let e=()=>d();return window.addEventListener("mindos:skills-changed",e),()=>window.removeEventListener("mindos:skills-changed",e)},[d]);let c=(0,s.useCallback)((t,r)=>{let s=t.slice(0,r),a=s.lastIndexOf("/");if(-1===a||a>0&&" "!==s[a-1]&&"\n"!==s[a-1])return void n(null);let l=s.slice(a+1);if(l.includes(" "))return void n(null);if(!u.current){d(),n(null);return}let c=l.toLowerCase(),m=c?e.map(e=>{let t=e.name.toLowerCase(),r=0;return t.startsWith(c)?r=100:t.includes(c)?r=50:e.description.toLowerCase().includes(c)&&(r=10),{s:e,score:r}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).slice(0,20).map(e=>({type:"skill",name:e.s.name,description:e.s.description})):e.slice(0,20).map(e=>({type:"skill",name:e.name,description:e.description}));if(0===m.length){n(null),o([]),i(0);return}n(l),o(m),i(0)},[e,d]),m=(0,s.useCallback)(e=>{0!==a.length&&("down"===e?i(e=>Math.min(e+1,a.length-1)):i(e=>Math.max(e-1,0)))},[a.length]);return{slashQuery:r,slashResults:a,slashIndex:l,updateSlashFromInput:c,navigateSlash:m,resetSlash:(0,s.useCallback)(()=>{n(null),o([]),i(0)},[])}}(),eh=(0,eG.z)(),eb=(0,s.useRef)(ef);eb.current=ef;let ev=(0,s.useRef)(eg);ev.current=eg;let ey=(0,s.useRef)(ex);ey.current=ex;let ew=(0,s.useCallback)(()=>{U(""),X(null),er(null),K(t?[t]:[])},[t]),eC=(0,s.useRef)({inputValueRef:B,mentionRef:ev,slashRef:ey,imageUploadRef:eb,sessionRef:ec,uploadRef:ep,selectedSkillRef:ee,selectedAcpAgentRef:en,attachedFilesRef:Y}),eA=function({currentFile:e,chatMode:t,providerOverride:r,modelOverride:n,onFirstMessage:a,refs:o,errorLabels:l,resetInputState:i}){let[u,d]=(0,s.useState)(!1),[c,m]=(0,s.useState)("connecting"),[p,f]=(0,s.useState)(0),g=(0,s.useRef)(3),x=(0,s.useRef)(null),h=(0,s.useRef)(!1),b=(0,s.useCallback)(()=>{x.current?.abort()},[]),v=(0,s.useCallback)(async s=>{s.preventDefault();let u=o.mentionRef.current,c=o.slashRef.current,p=o.imageUploadRef.current,b=o.sessionRef.current,v=o.uploadRef.current;if(!u||!c||!p||!b||!v||null!==u.mentionQuery||null!==c.slashQuery)return;let k=o.inputValueRef.current?.trim()??"";if(!k&&0===p.images.length||y.current)return;let w=o.selectedSkillRef.current,j=o.selectedAcpAgentRef.current,N=p.images.length>0?[...p.images]:void 0,C={role:"user",content:k,timestamp:Date.now(),...w&&{skillName:w.name},...N&&{images:N}};p.clearImages();let S=[...b.messages,C];b.setMessages([...S,{role:"assistant",content:"",timestamp:Date.now()}]),i(),a&&!h.current&&(h.current=!0,a()),d(!0),m("connecting"),f(0);let A=new AbortController;x.current=A;let E=3;try{let e=localStorage.getItem("mindos-reconnect-retries");if(null!==e){let t=parseInt(e,10);Number.isFinite(t)&&(E=Math.max(0,Math.min(10,t)))}}catch{}g.current=E;let M=JSON.stringify({messages:S,currentFile:e,attachedFiles:o.attachedFilesRef.current,uploadedFiles:v.localAttachments.filter(e=>"loading"!==e.status).map(e=>({name:e.name,content:e.content.length>8e4?e.content.slice(0,8e4)+"\n\n[...truncated to first ~80000 chars]":e.content})),selectedAcpAgent:j,mode:t,providerOverride:r??void 0,modelOverride:n??void 0}),_=async()=>{let e=await fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:M,signal:A.signal});if(!e.ok){let t=`Request failed (${e.status})`;try{let r=await e.json();"string"==typeof r?.error&&r.error.trim()?t=r.error:"object"==typeof r?.error&&"string"==typeof r.error?.message&&r.error.message.trim()?t=r.error.message:"string"==typeof r?.message&&r.message.trim()&&(t=r.message)}catch(e){console.warn("[useAskChat] error body parse failed:",e)}let r=Error(t);throw r.httpStatus=e.status,r}if(!e.body)throw Error("No response body");return m("thinking"),{finalMessage:await (0,eW.m)(e.body,e=>{m("streaming"),o.sessionRef.current?.setMessages(t=>{let r=[...t];return r[r.length-1]=e,r})},A.signal)}};try{let e=null;for(let t=0;t<=E&&!A.signal.aborted;t++){if(t>0){var R;f(t),m("reconnecting"),o.sessionRef.current?.setMessages(e=>{let t=[...e];return t[t.length-1]={role:"assistant",content:"",timestamp:Date.now()},t}),await function(e,t){return new Promise((r,n)=>{let s=()=>t?.reason??new DOMException("The operation was aborted.","AbortError");if(t?.aborted)return void n(s());let a=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(a),n(s())},{once:!0})})}((R=t-1,Math.min(1e3*2**R,1e4)),A.signal),m("connecting")}try{let{finalMessage:e}=await _();e.content.trim()||e.parts&&0!==e.parts.length||o.sessionRef.current?.setMessages(e=>{let t=[...e];return t[t.length-1]={role:"assistant",content:`__error__${l.noResponse}`},t});return}catch(n){e=n instanceof Error?n:Error(String(n));let r=n.httpStatus;if(!function(e,t){if(e instanceof DOMException&&"AbortError"===e.name||t&&eq.has(t))return!1;if(e instanceof Error){let t=e.message;if(eJ.some(e=>e.test(t)))return!1}return!0}(n,r)||t>=E)break}}if(e)throw e}catch(e){if("AbortError"===e.name)o.sessionRef.current?.setMessages(e=>{let t=[...e],r=t.length-1;if(r>=0&&"assistant"===t[r].role){let e=t[r];e.content.trim()||e.parts&&e.parts.length>0||(t[r]={role:"assistant",content:`__error__${l.stopped}`})}return t});else{let t=e instanceof Error?e.message:"Something went wrong";o.sessionRef.current?.setMessages(e=>{let r=[...e],n=r.length-1;if(n>=0&&"assistant"===r[n].role){let e=r[n];if(!(e.content.trim()||e.parts&&e.parts.length>0))return r[n]={role:"assistant",content:`__error__${t}`},r}return[...r,{role:"assistant",content:`__error__${t}`}]})}}finally{d(!1),f(0),x.current=null}},[e,t,r,l.noResponse,l.stopped,a,o,i]),y=(0,s.useRef)(u);return y.current=u,{isLoading:u,isLoadingRef:y,loadingPhase:c,reconnectAttempt:p,reconnectMaxRef:g,abortRef:x,firstMessageFired:h,submit:v,stop:b}}({currentFile:t,chatMode:es,providerOverride:eo,modelOverride:ei,onFirstMessage:p,refs:eC.current,errorLabels:{noResponse:D.ask.errorNoResponse,stopped:D.ask.stopped},resetInputState:ew}),{isLoading:eE,loadingPhase:eM,reconnectAttempt:e_,reconnectMaxRef:eR}=eA,ez=eA.submit,eL=eA.stop;(0,s.useEffect)(()=>{let e=e=>{let t=e.detail?.files;Array.isArray(t)&&t.length>0&&ep.current.injectFiles(t)};return window.addEventListener("mindos:inject-ask-files",e),()=>window.removeEventListener("mindos:inject-ask-files",e)},[]),(0,s.useEffect)(()=>{if(!L)return;let e=e=>{let t=e.detail?.text;"string"==typeof t&&(U(t),setTimeout(()=>I.current?.focus(),50))};return window.addEventListener("mindos:home-suggestion",e),()=>window.removeEventListener("mindos:home-suggestion",e)},[L]);let eI=(0,s.useRef)(!1),eP=(0,s.useRef)(t);(0,s.useEffect)(()=>{let n="panel"===f||"home"===f?e&&!eI.current:e,s=e&&eI.current&&t!==eP.current;n?(setTimeout(()=>I.current?.focus(),50),ed.initSessions(),U(r||""),eA.firstMessageFired.current=!1,K(t?[t]:[]),em.clearAttachments(),ef.clearImages(),eg.resetMention(),ex.resetSlash(),X(null),er(m??null),W(!1)):s?K(t?[t]:[]):e||"modal"!==f||eA.abortRef.current?.abort(),"home"===f&&e&&!eI.current&&setTimeout(()=>I.current?.focus(),150),eI.current=e,eP.current=t},[e,t]),(0,s.useEffect)(()=>{if(!e||!ed.activeSessionId)return;let t=ed.messages;if(eA.isLoading&&t.length>0){let e=t[t.length-1];if("assistant"===e.role&&!e.content.trim()&&(!e.parts||0===e.parts.length))return}return ed.persistSession(t,ed.activeSessionId),()=>ed.clearPersistTimer()},[e,ed.messages,ed.activeSessionId,eA.isLoading]),(0,s.useEffect)(()=>{if(!e||"home"===f)return;let t="modal"===f,r="panel"===f&&x;if(!t&&!r)return;let n=e=>{if("Escape"===e.key){if(null!==ev.current.mentionQuery)return void ev.current.resetMention();if(null!==ey.current.slashQuery)return void ey.current.resetSlash();if(r&&b)return void b();t&&g&&g()}};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[f,e,g,x,b]),(0,s.useEffect)(()=>{if(!Q)return;let e=()=>G(!1),t=setTimeout(()=>document.addEventListener("click",e),0);return()=>{clearTimeout(t),document.removeEventListener("click",e)}},[Q]);let eD=(0,s.useRef)(null);(0,s.useLayoutEffect)(()=>{if(!e)return;let t=I.current;t&&t instanceof HTMLTextAreaElement&&function(e,t){let r=eV.get(e);if(!r){let t=getComputedStyle(e),n=parseFloat(t.lineHeight),s=parseFloat(t.fontSize),a=Number.isFinite(s)?s:14,o=8*(Number.isFinite(n)?n:1.375*a)+((Number.isFinite(parseFloat(t.paddingTop))?parseFloat(t.paddingTop):0)+(Number.isFinite(parseFloat(t.paddingBottom))?parseFloat(t.paddingBottom):0));if(!Number.isFinite(o)||o<=0)return;r={maxH:o},eV.set(e,r)}let{maxH:n}=r;e.style.height="auto";let s=e.scrollHeight,a=Math.min(s,n);e.style.height=`${a}px`,e.style.overflowY=s>n?"auto":"hidden"}(t,0)},[F,eE,e]),(0,s.useEffect)(()=>{let e=I.current;if(!e)return;let t=()=>eV.delete(e);return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);let eF=(0,s.useRef)(null),eU=(0,s.useRef)(null),eY=(0,s.useCallback)((e,t)=>{U(e);let r=t??e.length;eF.current&&clearTimeout(eF.current),eU.current&&clearTimeout(eU.current),eF.current=setTimeout(()=>ev.current.updateMentionFromInput(e,r),80),eU.current=setTimeout(()=>ey.current.updateSlashFromInput(e,r),80)},[]);(0,s.useEffect)(()=>()=>{eF.current&&clearTimeout(eF.current),eU.current&&clearTimeout(eU.current)},[]);let eX=(0,s.useCallback)(e=>{let t=I.current,r=B.current,n=t?.selectionStart??r.length,s=r.slice(0,n).lastIndexOf("@");U(r.slice(0,s)+r.slice(n)),ev.current.resetMention(),Y.current.includes(e)||K(t=>[...t,e]),setTimeout(()=>{I.current?.focus(),I.current?.setSelectionRange(s,s)},0)},[]),e0=(0,s.useCallback)(e=>{let t=I.current,r=B.current,n=t?.selectionStart??r.length,s=r.slice(0,n).lastIndexOf("/");U(r.slice(0,s)+r.slice(n)),X(e),ey.current.resetSlash(),setTimeout(()=>{I.current?.focus(),I.current?.setSelectionRange(s,s)},0)},[]),e1=(0,s.useRef)(eX);e1.current=eX;let e2=(0,s.useRef)(e0);e2.current=e0;let e5=(0,s.useCallback)(e=>{let t=ev.current,r=ey.current;if(null!==t.mentionQuery){if("Escape"===e.key){e.preventDefault(),t.resetMention();return}if("ArrowDown"===e.key)e.preventDefault(),t.navigateMention("down");else if("ArrowUp"===e.key)e.preventDefault(),t.navigateMention("up");else if("Enter"===e.key||"Tab"===e.key){if("Enter"===e.key&&(e.shiftKey||e.nativeEvent.isComposing))return;t.mentionResults.length>0&&(e.preventDefault(),e1.current(t.mentionResults[t.mentionIndex]))}return}if(null!==r.slashQuery){if("Escape"===e.key){e.preventDefault(),r.resetSlash();return}if("ArrowDown"===e.key)e.preventDefault(),r.navigateSlash("down");else if("ArrowUp"===e.key)e.preventDefault(),r.navigateSlash("up");else if("Enter"===e.key||"Tab"===e.key){if("Enter"===e.key&&(e.shiftKey||e.nativeEvent.isComposing))return;r.slashResults.length>0&&(e.preventDefault(),e2.current(r.slashResults[r.slashIndex]))}return}"Enter"===e.key&&!e.shiftKey&&!e.nativeEvent.isComposing&&!eA.isLoadingRef.current&&(B.current.trim()||eb.current.images.length>0)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},[]),e3=(0,s.useCallback)(()=>{eA.isLoadingRef.current||(ec.current.resetSession(),U(""),K(t?[t]:[]),ep.current.clearAttachments(),eb.current.clearImages(),ev.current.resetMention(),ey.current.resetSlash(),X(null),er(null),W(!1),eA.firstMessageFired.current=!1,setTimeout(()=>I.current?.focus(),0))},[t]),e4=(0,s.useCallback)(e=>{(e.dataTransfer.types.includes("text/mindos-path")||e.dataTransfer.types.includes("Files"))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",J(!0))},[]),e8=(0,s.useCallback)(()=>J(!1),[]),e6=(0,s.useCallback)(async e=>{e.preventDefault(),e.stopPropagation(),J(!1);let t=e.dataTransfer.getData("text/mindos-path");if(t){let r="directory"===e.dataTransfer.getData("text/mindos-type")?t.replace(/\/?$/,"/"):t;Y.current.includes(r)||K(e=>[...e,r]);return}let r=e.dataTransfer.files;if(r.length>0){Array.from(r).some(e=>e.type.startsWith("image/"))&&await eb.current.handleDrop(e);let t=Array.from(r).filter(e=>!e.type.startsWith("image/"));if(t.length>0){let e=new DataTransfer;t.forEach(t=>e.items.add(t)),await ep.current.pickFiles(e.files)}}},[]),e9=(0,s.useCallback)(e=>{let t=e.clipboardData?.items;!t||Array.from(t).some(e=>"file"===e.kind&&e.type.startsWith("image/"))&&(e.preventDefault(),eb.current.handlePaste(e))},[]),e7=(0,s.useCallback)(e=>{ec.current.loadSession(e),W(!1),U(""),K(t?[t]:[]),ep.current.clearAttachments(),eb.current.clearImages(),ev.current.resetMention(),ey.current.resetSlash(),X(null),er(null),setTimeout(()=>I.current?.focus(),0)},[t]),te=(0,s.useCallback)(()=>W(e=>!e),[]),tt=(0,s.useMemo)(()=>({connecting:D.ask.connecting,thinking:D.ask.thinking,generating:D.ask.generating,reconnecting:e_>0?D.ask.reconnecting(e_,eR.current):void 0,copyMessage:D.ask.copyMessage}),[D,e_]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eT,{isPanel:z||L,showHistory:Z,onToggleHistory:te,onReset:e3,isLoading:eE,maximized:x,onMaximize:b,askMode:L?void 0:k,onModeSwitch:L?void 0:T,onClose:L?void 0:g,sessions:ed.sessions,activeSessionId:ed.activeSessionId,onLoadSession:e7,onDeleteSession:ed.deleteSession,onRenameSession:ed.renameSession,onTogglePinSession:ed.togglePinSession}),Z&&(0,n.jsx)(eS,{sessions:ed.sessions,activeSessionId:ed.activeSessionId,onLoad:e7,onDelete:ed.deleteSession,onRename:ed.renameSession,onTogglePin:ed.togglePinSession,onClearAll:ed.clearAllSessions,labels:{title:D.ask.sessionHistory??"Session History",clearAll:D.ask.clearAll??"Clear all",confirmClear:D.ask.confirmClear??"Confirm clear?",noSessions:D.ask.noSessions??"No saved sessions.",rename:D.ask.renameSession??"Rename"}}),!L&&(0,n.jsx)(ek,{messages:ed.messages,isLoading:eE,loadingPhase:eM,emptyPrompt:D.ask.emptyPrompt,emptyHint:D.ask.emptyHint,suggestions:D.ask.suggestions,onSuggestionClick:U,labels:tt}),L&&ed.messages.length>0&&(0,n.jsx)(ek,{messages:ed.messages,isLoading:eE,loadingPhase:eM,emptyPrompt:D.ask.emptyPrompt,emptyHint:D.ask.emptyHint,suggestions:[],onSuggestionClick:U,labels:tt}),null!==eg.mentionQuery&&eg.mentionResults.length>0&&(0,n.jsx)("div",{className:"shrink-0 px-3 pb-1",children:(0,n.jsx)(ej,{results:eg.mentionResults,selectedIndex:eg.mentionIndex,query:eg.mentionQuery??void 0,onSelect:eX})}),null!==ex.slashQuery&&ex.slashResults.length>0&&(0,n.jsx)("div",{className:"shrink-0 px-3 pb-1",children:(0,n.jsx)(eN,{results:ex.slashResults,selectedIndex:ex.slashIndex,query:ex.slashQuery??void 0,onSelect:e0})}),(0,n.jsx)("div",{className:"shrink-0 px-3 pb-2.5 pt-1",children:(0,n.jsxs)("div",{className:(0,eQ.cn)("rounded-xl bg-muted/40 transition-all focus-within:bg-muted/60",q&&"ring-2 ring-[var(--amber)] bg-[var(--amber-dim)]"),onDragOver:e4,onDragLeave:e8,onDrop:e6,children:[(H.length>0||em.localAttachments.length>0||ef.images.length>0||V||et||em.uploadError||ef.imageError)&&(0,n.jsxs)("div",{className:(0,eQ.cn)("px-3 pt-2.5 pb-1",z?"max-h-24 overflow-y-auto":"max-h-28 overflow-y-auto"),children:[(0,n.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[H.map(e=>(0,n.jsx)(e$,{path:e,variant:"kb",onRemove:()=>K(t=>t.filter(t=>t!==e))},e)),em.localAttachments.map((e,t)=>(0,n.jsx)(e$,{path:e.name,variant:"upload",status:e.status,error:e.error,truncatedInfo:e.truncatedInfo,onRemove:()=>em.removeAttachment(t)},`up-${e.name}-${t}`)),ef.images.map((e,t)=>(0,n.jsx)(e$,{path:e.fileName||`Image ${t+1}`,variant:"image",imageData:e.data,imageMime:e.mimeType,onRemove:()=>ef.removeImage(t)},`img-${t}`)),V&&(0,n.jsx)(e$,{path:V.name,variant:"skill",onRemove:()=>{X(null),I.current?.focus()}})]}),(em.uploadError||ef.imageError)&&(0,n.jsx)("div",{className:"mt-1 text-xs text-error",children:em.uploadError||ef.imageError})]}),(0,n.jsxs)("form",{ref:eD,onSubmit:ez,className:"flex items-end gap-1.5 px-3 py-2",children:[(0,n.jsxs)("div",{className:"relative shrink-0",children:[(0,n.jsx)("button",{type:"button",onClick:()=>G(e=>!e),className:"p-2 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted/60 transition-colors",title:D.hints.attachFile,children:(0,n.jsx)(a.A,{size:15})}),Q&&(0,n.jsxs)("div",{className:"absolute bottom-full left-0 mb-1.5 py-1 rounded-xl border border-border/60 bg-card shadow-lg z-50 min-w-[150px] animate-in fade-in-0 slide-in-from-bottom-2 duration-150",children:[(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs hover:bg-muted transition-colors text-left rounded-lg",onClick:()=>{G(!1),em.uploadInputRef.current?.click()},children:[(0,n.jsx)(o.A,{size:12,className:"shrink-0 text-muted-foreground"}),D.ask.attachFileLabel]}),(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-xs hover:bg-muted transition-colors text-left rounded-lg",onClick:()=>{G(!1),P.current?.click()},children:[(0,n.jsx)(l.A,{size:12,className:"shrink-0 text-muted-foreground"}),D.ask.attachImageLabel]})]})]}),(0,n.jsx)("input",{ref:em.uploadInputRef,type:"file",className:"hidden",multiple:!0,accept:".txt,.md,.markdown,.csv,.json,.yaml,.yml,.xml,.html,.htm,.pdf,text/plain,text/markdown,text/csv,application/json,application/pdf",onChange:async e=>{let t=e.currentTarget;await em.pickFiles(t.files),t.value=""}}),(0,n.jsx)("input",{ref:P,type:"file",className:"hidden",multiple:!0,accept:"image/png,image/jpeg,image/gif,image/webp",onChange:async e=>{let t=e.currentTarget;await ef.handleFileSelect(t.files),t.value=""}}),(0,n.jsx)("textarea",{ref:e=>{I.current=e},value:F,onChange:e=>eY(e.target.value,e.target.selectionStart??void 0),onKeyDown:e5,onPaste:e9,placeholder:D.ask.placeholder,rows:1,className:"min-w-0 flex-1 resize-none overflow-y-hidden bg-transparent py-2 text-sm leading-relaxed text-foreground placeholder:text-muted-foreground/50 outline-none focus-visible:ring-0"}),eE?(0,n.jsx)("button",{type:"button",onClick:eL,className:"p-2 rounded-xl transition-colors shrink-0 text-foreground bg-muted hover:bg-muted/80",title:"reconnecting"===eM?D.ask.cancelReconnect:D.ask.stopTitle,children:"reconnecting"===eM?(0,n.jsx)(i.A,{size:15}):(0,n.jsx)(u.A,{size:15})}):(0,n.jsx)("button",{type:"submit",disabled:!F.trim()&&0===ef.images.length,className:"p-2 rounded-xl disabled:opacity-20 disabled:scale-95 disabled:cursor-not-allowed transition-all duration-150 shrink-0 bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm shadow-[var(--amber)]/15 hover:shadow-md hover:shadow-[var(--amber)]/20 active:scale-95",children:(0,n.jsx)(d.A,{size:14})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 pb-2 pt-1.5 border-t border-border/10",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(v,{mode:es,onChange:ea,disabled:eE}),$&&eh.installedAgents.length>0&&(0,n.jsx)(eO,{selectedAgent:et,onSelect:er,installedAgents:eh.installedAgents,loading:eh.loading}),$&&(0,n.jsx)(eZ,{providerValue:eo,onProviderChange:e=>{el(e),eu(null)},modelValue:ei,onModelChange:eu,disabled:eE})]}),(0,n.jsxs)("span",{className:"hidden md:inline text-2xs text-muted-foreground/40 select-none",children:[(0,n.jsx)("kbd",{className:"font-mono",children:"Enter"})," ",D.ask.send," \xb7 ",(0,n.jsx)("kbd",{className:"font-mono",children:"Shift+Enter"})," ",D.ask.newlineHint]})]})]})})]})}},59960:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(95155);function s({id:e,className:t="w-8 h-4"}){return(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 80 40",fill:"none",className:`${t} text-[var(--amber)]`,"aria-hidden":"true",children:[(0,n.jsxs)("defs",{children:[(0,n.jsxs)("linearGradient",{id:`grad-human-${e}`,x1:"35",y1:"20",x2:"5",y2:"20",gradientUnits:"userSpaceOnUse",children:[(0,n.jsx)("stop",{offset:"0%",stopColor:"currentColor",stopOpacity:"0.8"}),(0,n.jsx)("stop",{offset:"100%",stopColor:"currentColor",stopOpacity:"0.3"})]}),(0,n.jsxs)("linearGradient",{id:`grad-agent-${e}`,x1:"35",y1:"20",x2:"75",y2:"20",gradientUnits:"userSpaceOnUse",children:[(0,n.jsx)("stop",{offset:"0%",stopColor:"currentColor",stopOpacity:"0.8"}),(0,n.jsx)("stop",{offset:"100%",stopColor:"currentColor",stopOpacity:"1"})]})]}),(0,n.jsx)("path",{d:"M35,20 C25,35 8,35 8,20 C8,5 25,5 35,20",stroke:`url(#grad-human-${e})`,strokeWidth:"3",strokeDasharray:"2 4",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M35,20 C45,2 75,2 75,20 C75,38 45,38 35,20",stroke:`url(#grad-agent-${e})`,strokeWidth:"4.5",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M35,17.5 Q35,20 37.5,20 Q35,20 35,22.5 Q35,20 32.5,20 Q35,20 35,17.5 Z",fill:"#FEF3C7"})]})}},60112:(e,t,r)=>{"use strict";function n(){return"cp_"+Math.random().toString(36).slice(2,10)}function s(e){return"string"==typeof e&&e.startsWith("cp_")}function a(e,t){return e.find(e=>e.id===t)}r.d(t,{CY:()=>a,rP:()=>n,yx:()=>s}),r(47376)},60392:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=60392,e.exports=t},68589:(e,t,r)=>{"use strict";r.d(t,{m:()=>s});let n=new Set(["write_file","create_file","batch_create_files","update_section","insert_after_heading","delete_file","rename_file","create_space"]);async function s(e,t,r){let s=e.getReader(),a=new TextDecoder,o="",l=[],i=new Map,u=null,d=null,c=Date.now();function m(){let e=l.map(e=>"text"===e.type?{type:"text",text:e.text}:"reasoning"===e.type?{type:"reasoning",text:e.text}:{...e});return{role:"assistant",content:e.filter(e=>"text"===e.type).map(e=>e.text).join(""),parts:e,timestamp:c}}try{for(;!r?.aborted;){let{done:e,value:r}=await s.read();if(e)break;let c=(o+=a.decode(r,{stream:!0})).split("\n");o=c.pop()??"";let p=!1;for(let e of c){let t,r=e.trim(),s=null;if(r.startsWith("data:")&&(s=r.slice(5).trim()),s){try{t=JSON.parse(s)}catch{continue}switch(t.type){case"text_delta":{let e=function(e){if(u===e){let e=l[l.length-1];if(e&&"text"===e.type)return e}let t={type:"text",text:""};return l.push(t),u=e,t}("text");e.text+=t.delta??"",p=!0;break}case"thinking_delta":d||(d={type:"reasoning",text:""},l.push(d),u=null),d.text+=t.delta??"",p=!0;break;case"tool_start":{let e=t.toolCallId,r=t.toolName,n=function(e,t){let r=i.get(e);return r||(r={type:"tool-call",toolCallId:e,toolName:t??"unknown",input:void 0,state:"pending"},i.set(e,r),l.push(r),u=null),r}(e,r);n.input=t.args,n.state="running",p=!0;break}case"tool_end":{let e=t.toolCallId,r=i.get(e);r&&(r.output=t.output??"",r.state=t.isError?"error":"done",p=!0,!t.isError&&n.has(r.toolName)&&window.dispatchEvent(new Event("mindos:files-changed")));break}case"error":{let e=t.message;l.push({type:"text",text:`
|
|
21
|
-
|
|
22
|
-
**Stream Error:** ${e}`}),u=null,p=!0}}}}p&&t(m())}}finally{s.releaseLock()}let p=!1;for(let e of i.values())("running"===e.state||"pending"===e.state)&&(e.state="error",e.output=e.output??"Stream ended before tool completed",p=!0);return p&&t(m()),m()}},76449:(e,t,r)=>{"use strict";r.d(t,{g:()=>n});let n=[{anchor:"files-panel",position:"right"},{anchor:"ask-button",position:"bottom"},{anchor:"agents-panel",position:"right"}]},84825:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=84825,e.exports=t}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9207],{51842:(e,t,r)=>{r.d(t,{A:()=>x});var s=r(95155),o=r(12115),l=r(12651),n=r(66088),a=r(51997),d=r(68459),i=r(51914),c=r(30125),u=r(47376),m=r(35581);function x({value:e,onChange:t,showSkip:r=!1,compact:x=!1,configuredProviders:f,customProviders:h,onAddCustom:p,onEditCustom:b,onDeleteCustom:g}){let{locale:v}=(0,m.Y)(),[y,j]=(0,o.useState)(!1),[N,k]=(0,o.useState)(null),w=(0,u.bf)(),C=r=>{let o=u.T_[r],n="zh"===v?o.nameZh:o.name,a=e===r,d=f?.has(r);return x?(0,s.jsxs)("button",{type:"button",onClick:()=>t(r),className:`flex items-center gap-2 px-3 py-2 rounded-lg border text-left transition-all text-sm ${a?"border-[var(--amber)] bg-[var(--amber-subtle)] shadow-sm":"border-border/50 hover:border-border hover:bg-muted/30"}`,children:[(0,s.jsx)("span",{className:`font-medium ${a?"text-foreground":"text-muted-foreground"}`,children:n}),d&&!a&&(0,s.jsx)(l.A,{size:12,className:"text-success ml-auto shrink-0"}),a&&(0,s.jsx)(l.A,{size:14,className:"ml-auto shrink-0",style:{color:"var(--amber)"}})]},r):(0,s.jsxs)("button",{type:"button",onClick:()=>t(r),className:"flex items-start gap-3 p-4 rounded-xl border text-left transition-all duration-150",style:{background:a?"var(--amber-dim)":"var(--card)",borderColor:a?"var(--amber)":"var(--border)"},children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium",style:{color:"var(--foreground)"},children:n}),(0,s.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--muted-foreground)"},children:o.defaultModel})]}),d&&!a&&(0,s.jsx)(l.A,{size:14,className:"text-success shrink-0 mt-0.5"}),a&&(0,s.jsx)(l.A,{size:16,className:"shrink-0 mt-0.5",style:{color:"var(--amber)"}})]},r)},z=h&&h.length>0,A=null!=p,{primary:$,more:S}=w;return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("div",{className:x?"flex flex-wrap gap-2":"grid grid-cols-1 gap-2",children:$.map(C)}),(S.length>0||A)&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>j(!y),className:"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors py-1",children:[(0,s.jsx)(n.A,{size:12,className:`transition-transform ${y?"rotate-180":""}`}),y?"zh"===v?"收起":"Show less":"zh"===v?`更多${z?` (${S.length+h.length})`:S.length>0?` (${S.length})`:""}`:`More${z?` (${S.length+h.length})`:S.length>0?` (${S.length})`:""}`]}),y&&(0,s.jsxs)("div",{className:"space-y-2",children:[S.length>0&&(0,s.jsx)("div",{className:x?"flex flex-wrap gap-2":"grid grid-cols-1 gap-2",children:S.map(C)}),A&&(0,s.jsxs)("div",{className:"space-y-2",children:[z&&(0,s.jsx)("div",{className:x?"flex flex-wrap gap-2":"grid grid-cols-1 gap-2",children:h.map(e=>(0,s.jsxs)("div",{className:`flex items-center gap-2 rounded-lg border text-left transition-all group ${x?"px-3 py-2 text-sm border-border/50 hover:border-border hover:bg-muted/30":"p-3 border-border/50 hover:border-border"}`,children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("span",{className:"font-medium text-muted-foreground text-sm",children:e.name}),!x&&(0,s.jsx)("span",{className:"text-xs text-muted-foreground/50 ml-2",children:e.model})]}),(0,s.jsxs)("div",{className:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",children:[b&&(0,s.jsx)("button",{type:"button",onClick:()=>b(e.id),className:"p-1 rounded text-muted-foreground/50 hover:text-foreground hover:bg-muted/50 transition-colors",children:(0,s.jsx)(a.A,{size:12})}),g&&(0,s.jsx)("button",{type:"button",onClick:()=>k(e.id),className:"p-1 rounded text-muted-foreground/50 hover:text-destructive hover:bg-destructive/8 transition-colors",children:(0,s.jsx)(d.A,{size:12})})]})]},e.id))}),(0,s.jsxs)("button",{type:"button",onClick:p,className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors py-1",children:[(0,s.jsx)(i.A,{size:12}),"zh"===v?"自定义 Provider":"Custom Provider"]})]})]})]}),r&&(0,s.jsxs)("button",{type:"button",onClick:()=>t("skip"),className:"flex items-center gap-2 px-3 py-2 rounded-lg border text-left transition-all text-sm w-full mt-1",style:{background:"skip"===e?"var(--amber-dim)":"var(--card)",borderColor:"skip"===e?"var(--amber)":"var(--border)"},children:[(0,s.jsx)(c.A,{size:14,className:"shrink-0",style:{color:"skip"===e?"var(--amber)":"var(--muted-foreground)"}}),(0,s.jsx)("span",{className:`font-medium ${"skip"===e?"text-foreground":"text-muted-foreground"}`,children:"zh"===v?"暂时跳过":"Skip for now"}),"skip"===e&&(0,s.jsx)(l.A,{size:14,className:"ml-auto shrink-0",style:{color:"var(--amber)"}})]}),N&&g&&(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg border border-destructive/20 bg-destructive/5",children:[(0,s.jsx)("span",{className:"text-xs text-destructive flex-1",children:"zh"===v?`删除 "${h?.find(e=>e.id===N)?.name}"?`:`Delete "${h?.find(e=>e.id===N)?.name}"?`}),(0,s.jsx)("button",{type:"button",onClick:()=>k(null),className:"text-xs text-muted-foreground hover:text-foreground px-2 py-0.5 rounded transition-colors",children:"zh"===v?"取消":"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>{g(N),k(null)},className:"text-xs text-destructive font-medium hover:bg-destructive/10 px-2 py-0.5 rounded transition-colors",children:"zh"===v?"删除":"Delete"})]})]})}},79704:(e,t,r)=>{r.d(t,{A:()=>i});var s=r(95155),o=r(12115),l=r(6296),n=r(66088),a=r(20171),d=r(47376);function i({value:e,onChange:t,placeholder:r,provider:i,apiKey:c,envKey:u,baseUrl:m,supportsListModels:x,allowNoKey:f,browseLabel:h="Browse",noModelsLabel:p="No models found"}){let[b,g]=(0,o.useState)(null),[v,y]=(0,o.useState)(!1),[j,N]=(0,o.useState)(!1),[k,w]=(0,o.useState)(""),[C,z]=(0,o.useState)(!1),[A,$]=(0,o.useState)(-1),S=(0,o.useRef)(null),E=(0,o.useRef)(null),D=(0,o.useRef)(!1),L=(0,o.useRef)(0),_=(0,o.useRef)(!1),R=f||!!c||!!u||!!d.T_[i]?.apiKeyFallback;(0,o.useEffect)(()=>{D.current=!1,L.current++,g(null)},[i,c,m]);let F=(0,o.useCallback)(async(e=!1)=>{if(_.current)return;_.current=!0,y(!0),e||w("");let t=L.current;try{let r={provider:i};c&&(r.apiKey=c),m&&(r.baseUrl=m);let s=await fetch("/api/settings/list-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(t!==L.current)return;let o=await s.json();if(t!==L.current)return;o.ok&&Array.isArray(o.models)?(g(o.models),D.current=!0,e||N(!0)):e||w(o.error||"Failed to fetch models")}catch{if(t!==L.current)return;e||w("Network error")}finally{_.current=!1,y(!1)}},[i,c,m]),T=(0,o.useCallback)(()=>{z(!0),!D.current&&x&&R&&!_.current&&F(!0)},[x,R,F]),K=(0,o.useMemo)(()=>{if(!b)return[];if(!e.trim())return b;let t=e.toLowerCase();return[...b].sort((e,r)=>{let s=e.toLowerCase(),o=r.toLowerCase(),l=s.includes(t),n=o.includes(t);if(l!==n)return l?-1:1;if(l&&n){let e=s.startsWith(t);if(e!==o.startsWith(t))return e?-1:1;let r=s===t;if(r!==(o===t))return r?-1:1}return e.localeCompare(r)})},[b,e]),M=j||C&&null!==b&&e.trim().length>0&&K.length>0;(0,o.useEffect)(()=>{$(-1)},[K]),(0,o.useEffect)(()=>{if(A<0||!E.current)return;let e=E.current.querySelectorAll("[data-model-item]");e[A]?.scrollIntoView({block:"nearest"})},[A]);let P=(0,o.useCallback)(e=>{let r=M?K:[];r.length&&("ArrowDown"===e.key?(e.preventDefault(),$(e=>(e+1)%r.length)):"ArrowUp"===e.key?(e.preventDefault(),$(e=>(e-1+r.length)%r.length)):"Enter"===e.key&&A>=0&&A<r.length?(e.preventDefault(),t(r[A]),N(!1),z(!1)):"Escape"===e.key&&(N(!1),z(!1)))},[M,K,A,t]);return(0,o.useEffect)(()=>{if(M)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){S.current&&!S.current.contains(e.target)&&(N(!1),z(!1))}},[M]),(0,s.jsxs)("div",{ref:S,className:"relative",children:[(0,s.jsxs)("div",{className:"flex gap-1.5",children:[(0,s.jsx)(a.pd,{value:e,onChange:e=>{t(e.target.value),j||z(!0)},onFocus:T,onKeyDown:P,placeholder:r,className:"flex-1",autoComplete:"off"}),x&&(0,s.jsxs)("button",{type:"button",disabled:!R||v,onClick:()=>F(!1),title:h,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:border-foreground/20 transition-colors disabled:opacity-40 disabled:cursor-not-allowed shrink-0",children:[v?(0,s.jsx)(l.A,{size:12,className:"animate-spin"}):(0,s.jsx)(n.A,{size:12}),h]})]}),k&&(0,s.jsx)("p",{className:"text-xs text-error mt-1",children:k}),M&&K.length>0&&(0,s.jsx)("div",{ref:E,className:"absolute z-50 mt-1 w-full max-h-48 overflow-y-auto rounded-lg border border-border bg-popover shadow-lg",children:K.map((r,o)=>{let l=!e.trim()||r.toLowerCase().includes(e.toLowerCase());return(0,s.jsx)("button",{type:"button","data-model-item":!0,className:`w-full text-left px-3 py-1.5 text-sm transition-colors ${r===e?"bg-accent/60 font-medium":o===A?"bg-accent":"hover:bg-accent"} ${!l?"opacity-50":""}`,onClick:()=>{t(r),N(!1),z(!1)},children:r},r)})}),j&&0===K.length&&(0,s.jsx)("div",{className:"absolute z-50 mt-1 w-full rounded-lg border border-border bg-popover shadow-lg px-3 py-2 text-xs text-muted-foreground",children:p})]})}}}]);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9604],{16518:(e,t,r)=>{"use strict";r.d(t,{AI:()=>n,RS:()=>s});let s=["about-you","continued","daily","past-you","growth"],n={"about-you":"/echo/about-you",continued:"/echo/continued",daily:"/echo/daily","past-you":"/echo/past-you",growth:"/echo/growth"}},22368:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("user-round",[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]])},22721:(e,t,r)=>{"use strict";r.d(t,{default:()=>Y});var s=r(95155),n=r(12115),o=r(22368),a=r(41762),i=r(51900),l=r(50538),d=r(90718),c=r(42268),u=r(94514),p=r(35581),m=r(27318);function h({heroKicker:e,pageTitle:t,lead:r,titleId:n,children:o}){return(0,s.jsxs)("header",{className:"relative overflow-hidden rounded-xl border border-border bg-card px-5 pb-5 pt-6 shadow-sm sm:px-8 sm:pb-6 sm:pt-8",children:[(0,s.jsx)("div",{className:"absolute left-0 top-5 w-[3px] rounded-full bg-[var(--amber)] sm:top-6",style:{bottom:o?"40%":"1.25rem"},"aria-hidden":!0}),(0,s.jsxs)("div",{className:"relative pl-4 sm:pl-5",children:[(0,s.jsx)("p",{className:"mb-4 font-sans text-2xs font-semibold uppercase tracking-[0.2em] text-[var(--amber-text)]",children:e}),(0,s.jsx)("h1",{id:n,className:"text-2xl font-semibold tracking-tight text-foreground md:text-3xl",children:t}),(0,s.jsx)("p",{className:"mt-3 max-w-prose font-sans text-base leading-relaxed text-muted-foreground",children:r})]}),o]})}var g=r(98500),x=r.n(g),f=r(91337),b=r(16518);function y({activeSegment:e}){let{t}=(0,p.Y)(),r=t.panels.echo,n=t.echoPages.segmentNavAria;return(0,s.jsx)("nav",{"aria-label":n,className:"mt-5 border-t border-border/30 pt-4 font-sans",children:(0,s.jsx)("ul",{className:"flex snap-x snap-mandatory gap-1.5 overflow-x-auto pb-0.5 [scrollbar-width:thin]",children:b.RS.map(t=>{let n=b.AI[t],{label:c,icon:u}=function(e,t){switch(e){case"about-you":return{label:t.aboutYouTitle,icon:(0,s.jsx)(o.A,{size:13})};case"continued":return{label:t.continuedTitle,icon:(0,s.jsx)(a.A,{size:13})};case"daily":return{label:t.dailyEchoTitle,icon:(0,s.jsx)(i.A,{size:13})};case"past-you":return{label:t.pastYouTitle,icon:(0,s.jsx)(l.A,{size:13})};case"growth":return{label:t.intentGrowthTitle,icon:(0,s.jsx)(d.A,{size:13})}}}(t,r),p=t===e;return(0,s.jsx)("li",{className:"snap-start shrink-0",children:(0,s.jsxs)(x(),{href:n,"aria-current":p?"page":void 0,className:(0,f.cn)("inline-flex min-h-9 max-w-[11rem] items-center gap-1.5 rounded-full border px-3 py-1.5 text-sm transition-[background-color,border-color,color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",p?"border-[var(--amber)]/45 bg-[var(--amber-dim)]/50 font-medium text-foreground":"border-transparent bg-muted/35 text-muted-foreground hover:bg-muted/55 hover:text-foreground"),children:[(0,s.jsx)("span",{className:"shrink-0","aria-hidden":!0,children:u}),(0,s.jsx)("span",{className:"truncate",children:c})]})},t)})})})}var v=r(86901),k=r(66088),j=r(6296),w=r(66804),N=r(32957),A=r(68589),M=r(47376);function E({title:e,showLabel:t,hideLabel:r,hint:o,generateLabel:a,noAiHint:i,generatingLabel:l,errorPrefix:d,retryLabel:c,userPrompt:u}){let[m,h]=(0,n.useState)(!1),[g,x]=(0,n.useState)(!1),[b,y]=(0,n.useState)(""),[E,T]=(0,n.useState)(""),I=(0,n.useId)(),_=`${I}-btn`,L=(0,n.useRef)(null),{ready:P,loading:S}=function(){let[e,t]=(0,n.useState)(!1),[r,s]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let e=!1,r=()=>{fetch("/api/settings",{cache:"no-store"}).then(e=>e.json()).then(r=>{e||t(function(e){let t=e.ai?.provider,r=t&&(0,M.rl)(t)?t:"anthropic",s=e.envOverrides??{},n=e.ai?.providers?.[r]?.apiKey;if("string"==typeof n&&n.length>0)return!0;let o=(0,M.Ux)(r);return!!o&&!!s[o]}(r))}).catch(()=>{e||t(!1)}).finally(()=>{e||s(!1)})};r();let n=()=>r();return window.addEventListener("mindos:settings-changed",n),()=>{e=!0,window.removeEventListener("mindos:settings-changed",n)}},[]),{ready:e,loading:r}}(),{t:z}=(0,p.Y)();(0,n.useEffect)(()=>()=>L.current?.abort(),[]);let U=(0,n.useCallback)(async()=>{L.current?.abort();let e=new AbortController;L.current=e,T(""),y(""),x(!0);try{let t=await fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:u}],maxSteps:16}),signal:e.signal});if(!t.ok){let e=`HTTP ${t.status}`;try{let r=await t.json();e=r?.error?.message??r?.message??e}catch{}throw Error(e)}if(!t.body)throw Error("No response body");await (0,A.m)(t.body,e=>{y(e.content??"")},e.signal)}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;T(e instanceof Error?e.message:String(e))}finally{x(!1),L.current=null}},[u]),B=S||!P||g;return(0,s.jsxs)("div",{className:"mt-10 overflow-hidden rounded-xl border border-border bg-card shadow-sm transition-[border-color,box-shadow] duration-150 ease-out hover:border-[var(--amber)]/15 hover:shadow",children:[(0,s.jsxs)("button",{id:_,type:"button",className:"flex w-full items-center gap-3 px-5 py-4 text-left transition-colors duration-200 hover:bg-muted/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","aria-expanded":m,"aria-controls":I,onClick:()=>h(e=>!e),children:[(0,s.jsx)("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-[var(--amber-dim)] text-[var(--amber)]","aria-hidden":!0,children:(0,s.jsx)(v.A,{size:17,strokeWidth:1.75})}),(0,s.jsx)("span",{className:"flex-1 font-sans text-sm font-medium text-foreground",children:e}),(0,s.jsx)(k.A,{size:16,className:(0,f.cn)("shrink-0 text-muted-foreground transition-transform duration-200",m&&"rotate-180"),"aria-hidden":!0}),(0,s.jsx)("span",{className:"sr-only",children:m?r:t})]}),(0,s.jsx)("div",{id:I,role:"region","aria-labelledby":_,className:(0,f.cn)("grid transition-[grid-template-rows] duration-250 ease-out",m?"grid-rows-[1fr]":"grid-rows-[0fr]"),children:(0,s.jsx)("div",{className:"overflow-hidden",...!m&&{inert:!0},children:(0,s.jsxs)("div",{className:"border-t border-border/60 px-5 pb-5 pt-4",children:[(0,s.jsx)("p",{className:"font-sans text-sm leading-relaxed text-muted-foreground",children:o}),(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,s.jsxs)("button",{type:"button",disabled:B,title:B?z.hints.aiNotConfigured:void 0,onClick:U,className:"inline-flex items-center gap-2 rounded-lg bg-[var(--amber)] px-3 py-2 font-sans text-sm font-medium text-[var(--amber-foreground)] transition-opacity duration-150 hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[g?(0,s.jsx)(j.A,{size:16,className:"animate-spin shrink-0","aria-hidden":!0}):(0,s.jsx)(v.A,{size:15,className:"shrink-0","aria-hidden":!0}),g?l:a]}),E?(0,s.jsx)("button",{type:"button",onClick:U,disabled:g||!P,title:g||!P?z.hints.generationInProgress:void 0,className:"font-sans text-sm text-[var(--amber)] underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:c}):null]}),S||P?null:(0,s.jsx)("p",{className:"mt-2 font-sans text-2xs text-muted-foreground",children:i}),E?(0,s.jsxs)("p",{className:"mt-3 font-sans text-sm text-error",role:"alert",children:[d," ",E]}):null,b?(0,s.jsxs)("div",{className:(0,f.cn)("prose prose-sm prose-panel dark:prose-invert max-w-none text-foreground prose-p:my-1 prose-p:leading-relaxed prose-headings:font-semibold prose-headings:my-2 prose-headings:text-[13px] prose-ul:my-1 prose-li:my-0.5 prose-ol:my-1 prose-code:text-[0.8em] prose-code:bg-muted prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-code:before:content-none prose-code:after:content-none prose-pre:bg-muted prose-pre:text-foreground prose-pre:text-xs prose-blockquote:border-l-[var(--amber)] prose-blockquote:text-muted-foreground prose-a:text-[var(--amber)] prose-a:no-underline hover:prose-a:underline prose-strong:text-foreground prose-strong:font-semibold","mt-4 border-t border-border/60 pt-4"),children:[(0,s.jsx)(w.oz,{remarkPlugins:[N.A],children:b}),g?(0,s.jsx)("span",{className:"ml-0.5 inline-block h-3.5 w-1 animate-pulse rounded-sm bg-[var(--amber)] align-middle","aria-hidden":!0}):null]}):null]})})})]})}let T=(0,r(90425).A)("library",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]]);var I=r(48368),_=r(12651);function L({headingId:e,heading:t,snapshotBadge:r,emptyTitle:n,emptyBody:o,icon:a,actions:i}){return(0,s.jsxs)("section",{className:"rounded-xl border border-border bg-card p-5 shadow-sm transition-[border-color,box-shadow] duration-150 ease-out hover:border-[var(--amber)]/20 hover:shadow sm:p-6","aria-labelledby":e,children:[(0,s.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-[var(--amber-dim)] text-[var(--amber)]","aria-hidden":!0,children:a??(0,s.jsx)(T,{size:18,strokeWidth:1.75})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{id:e,className:"font-sans text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t}),(0,s.jsx)("p",{className:"mt-2 font-sans font-medium text-foreground",children:n})]})]}),(0,s.jsx)("span",{className:"font-sans text-2xs font-medium uppercase tracking-wide text-[var(--amber-text)] sm:mt-0.5 sm:shrink-0 rounded-md bg-[var(--amber-dim)] px-2 py-1",children:r})]}),(0,s.jsx)("p",{className:"mt-4 border-t border-border/60 pt-4 font-sans text-sm leading-relaxed text-muted-foreground",children:o}),i?(0,s.jsx)("div",{className:"mt-4 border-t border-border/60 pt-4",children:i}):null]})}function P({draftsLabel:e,todosLabel:t,subEmptyHint:r,footer:n}){let o=(e,t)=>(0,s.jsxs)("div",{className:"flex min-h-[5.75rem] flex-col justify-center rounded-xl border border-border/40 bg-card/30 px-4 py-4 transition-colors duration-150 hover:border-[var(--amber)]/25 hover:bg-[var(--amber-dim)]/15",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"shrink-0 text-muted-foreground","aria-hidden":!0,children:t}),(0,s.jsx)("h3",{className:"font-sans text-sm font-medium text-foreground",children:e})]}),(0,s.jsx)("p",{className:"mt-2 font-sans text-2xs leading-relaxed text-muted-foreground",children:r})]});return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[o(e,(0,s.jsx)(I.A,{size:15,strokeWidth:1.75})),o(t,(0,s.jsx)(_.A,{size:15,strokeWidth:1.75}))]}),n?(0,s.jsx)("div",{className:"border-t border-border/60 pt-4",children:n}):null]})}let S="mindos-echo-daily-line",z="mindos-echo-growth-intent",U={"about-you":(0,s.jsx)(o.A,{size:18,strokeWidth:1.75}),continued:(0,s.jsx)(a.A,{size:18,strokeWidth:1.75}),daily:(0,s.jsx)(i.A,{size:18,strokeWidth:1.75}),"past-you":(0,s.jsx)(l.A,{size:18,strokeWidth:1.75}),growth:(0,s.jsx)(d.A,{size:18,strokeWidth:1.75})},B="block font-sans text-2xs font-semibold uppercase tracking-wide text-muted-foreground",C="mt-2 w-full min-h-[5rem] resize-y rounded-lg border border-border bg-background px-3 py-2.5 font-sans text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:border-[var(--amber)]/40",O="rounded-xl border border-border bg-card p-5 shadow-sm transition-[border-color,box-shadow] duration-150 ease-out hover:border-[var(--amber)]/20 hover:shadow sm:p-6";function Y({segment:e}){let{t,locale:r}=(0,p.Y)(),o=t.echoPages,a=function(e,t){switch(e){case"about-you":return t.aboutYouTitle;case"continued":return t.continuedTitle;case"daily":return t.dailyEchoTitle;case"past-you":return t.pastYouTitle;case"growth":return t.intentGrowthTitle}}(e,t.panels.echo),i=function(e,t){switch(e){case"about-you":return t.aboutYouLead;case"continued":return t.continuedLead;case"daily":return t.dailyLead;case"past-you":return t.pastYouLead;case"growth":return t.growthLead}}(e,o),l=(0,n.useId)(),d="echo-page-title",[g,x]=(0,n.useState)(""),[f,b]=(0,n.useState)(""),[v,k]=(0,n.useState)(!1),[j,w]=(0,n.useState)(!1),N=(0,n.useRef)(void 0),A=(0,n.useRef)(void 0);(0,n.useEffect)(()=>()=>{clearTimeout(N.current),clearTimeout(A.current)},[]);let M=(0,n.useMemo)(()=>(function(e,t){switch(e){case"about-you":return{title:t.snapshotAboutYouTitle,body:t.snapshotAboutYouBody};case"continued":return{title:t.snapshotContinuedTitle,body:t.snapshotContinuedBody};case"daily":return{title:t.snapshotDailyTitle,body:t.snapshotDailyBody};case"past-you":return{title:t.snapshotPastYouTitle,body:t.snapshotPastYouBody};case"growth":return{title:t.snapshotGrowthTitle,body:t.snapshotGrowthBody}}})(e,o),[e,o]);(0,n.useEffect)(()=>{try{let e=localStorage.getItem(S);e&&x(e);let t=localStorage.getItem(z);t&&b(t)}catch{}},[]);let T=(0,n.useCallback)(()=>{try{localStorage.setItem(S,g)}catch{}clearTimeout(N.current),k(!0),N.current=setTimeout(()=>k(!1),1800)},[g]),I=(0,n.useCallback)(()=>{try{localStorage.setItem(z,f)}catch{}clearTimeout(A.current),w(!0),A.current=setTimeout(()=>w(!1),1800)},[f]),_=(0,n.useCallback)(()=>{T(),(0,m.NH)(o.dailyAskPrefill(g),"user")},[g,o,T]),Y=(0,n.useCallback)(()=>{(0,m.NH)(`${o.parent} / ${a}
|
|
2
|
-
|
|
3
|
-
`,"user")},[o.parent,a]),K=(0,n.useMemo)(()=>{var t;let s,n,i;return s="zh"===(t={locale:r,segment:e,segmentTitle:a,factsHeading:o.factsHeading,emptyTitle:M.title,emptyBody:M.body,continuedDrafts:o.continuedDrafts,continuedTodos:o.continuedTodos,subEmptyHint:o.subEmptyHint,dailyLineLabel:o.dailyLineLabel,dailyLine:g,growthIntentLabel:o.growthIntentLabel,growthIntent:f}).locale?"Chinese":"English",n=[`Echo section: ${t.segmentTitle}`,`${t.factsHeading}: ${t.emptyTitle}`,t.emptyBody],"continued"===t.segment&&n.push(`${t.continuedDrafts} — ${t.subEmptyHint}`,`${t.continuedTodos} — ${t.subEmptyHint}`),"daily"===t.segment&&t.dailyLine.trim()&&n.push(`${t.dailyLineLabel}: ${t.dailyLine.trim()}`),"growth"===t.segment&&t.growthIntent.trim()&&n.push(`${t.growthIntentLabel}: ${t.growthIntent.trim()}`),i=n.join("\n\n"),`You are a reflective assistant inside MindOS Echo (a personal, local-first notes companion). The user is viewing one Echo section. Below is exactly what they see on screen right now—it may be an empty-state placeholder until indexing fills the list.
|
|
4
|
-
|
|
5
|
-
--- Visible context ---
|
|
6
|
-
${i}
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Write a short insight in ${s} as Markdown (under 220 words). Tone: warm, restrained, "quiet notebook"—not a hype coach. If the context is only generic empty copy, acknowledge that briefly and offer 2–3 reflection prompts instead of inventing files or facts. Do not claim you read their whole library. Prefer answering from this context; avoid unnecessary tool use.`},[r,e,a,o.factsHeading,M,o.continuedDrafts,o.continuedTodos,o.subEmptyHint,o.dailyLineLabel,g,o.growthIntentLabel,f]),H=e=>(0,s.jsxs)("button",{type:"button",onClick:e,className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-4 py-2.5 font-sans text-sm font-medium text-foreground transition-colors duration-150 hover:border-[var(--amber)]/35 hover:bg-[var(--amber-dim)]/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[o.continueAgent,(0,s.jsx)(c.A,{size:14,className:"shrink-0 text-muted-foreground","aria-hidden":!0})]});return(0,s.jsxs)("article",{className:"mx-auto max-w-3xl px-4 py-6 sm:px-6 md:py-11","aria-labelledby":d,children:[(0,s.jsx)(h,{heroKicker:o.heroKicker,pageTitle:a,lead:i,titleId:d,children:(0,s.jsx)(y,{activeSegment:e})}),(0,s.jsxs)("div",{className:"mt-6 space-y-6 sm:mt-8",children:[(0,s.jsx)(L,{headingId:l,heading:o.factsHeading,snapshotBadge:o.snapshotBadge,emptyTitle:M.title,emptyBody:M.body,icon:U[e],actions:"about-you"===e?H(Y):void 0}),"continued"===e?(0,s.jsx)(P,{draftsLabel:o.continuedDrafts,todosLabel:o.continuedTodos,subEmptyHint:o.subEmptyHint,footer:H(Y)}):null]}),"daily"===e?(0,s.jsxs)("section",{className:`${O} mt-6`,children:[(0,s.jsx)("label",{htmlFor:"echo-daily-line",className:B,children:o.dailyLineLabel}),(0,s.jsx)("textarea",{id:"echo-daily-line",value:g,onChange:e=>x(e.target.value),onBlur:T,rows:3,placeholder:o.dailyLinePlaceholder,className:C}),(0,s.jsxs)("p",{className:"mt-3 flex items-center gap-2 font-sans text-2xs text-muted-foreground",children:[(0,s.jsx)("span",{children:o.dailySavedNote}),(0,s.jsx)("span",{className:"inline-flex items-center gap-1 text-[var(--success)]","aria-live":"polite",children:v?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.A,{size:12,"aria-hidden":!0})," ",o.savedFlash]}):null})]}),(0,s.jsx)("div",{className:"mt-4",children:H(_)})]}):null,"growth"===e?(0,s.jsxs)("section",{className:`${O} mt-6`,children:[(0,s.jsx)("label",{htmlFor:"echo-growth-intent",className:B,children:o.growthIntentLabel}),(0,s.jsx)("textarea",{id:"echo-growth-intent",value:f,onChange:e=>b(e.target.value),onBlur:I,rows:4,placeholder:o.growthIntentPlaceholder,className:`${C} min-h-[6.5rem]`}),(0,s.jsxs)("p",{className:"mt-3 flex items-center gap-2 font-sans text-2xs text-muted-foreground",children:[(0,s.jsx)("span",{children:o.growthSavedNote}),(0,s.jsx)("span",{className:"inline-flex items-center gap-1 text-[var(--success)]","aria-live":"polite",children:j?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.A,{size:12,"aria-hidden":!0})," ",o.savedFlash]}):null})]}),(0,s.jsx)("div",{className:"mt-4 border-t border-border/60 pt-4",children:H(Y)})]}):null,"past-you"===e?(0,s.jsxs)("section",{className:`${O} mt-6`,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("span",{className:B,children:o.pastYouDrawLabel}),(0,s.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 font-sans text-2xs font-medium text-muted-foreground",children:o.pastYouComingSoon})]}),(0,s.jsx)("p",{className:"mt-3 font-sans text-sm leading-relaxed text-muted-foreground",children:o.pastYouDisabledHint}),(0,s.jsx)("div",{className:"mt-4 border-t border-border/60 pt-4",children:H(Y)})]}):null,(0,s.jsx)(E,{title:o.insightTitle,showLabel:o.insightShow,hideLabel:o.insightHide,hint:o.insightHint,generateLabel:o.generateInsight,noAiHint:o.generateInsightNoAi,generatingLabel:o.insightGenerating,errorPrefix:o.insightErrorPrefix,retryLabel:o.insightRetry,userPrompt:K})]})}},27318:(e,t,r)=>{"use strict";r.d(t,{KT:()=>c,NH:()=>d});var s=r(12115);let n={open:!1,initialMessage:"",source:"user",acpAgent:null},o=new Set;function a(){o.forEach(e=>e())}function i(e){return o.add(e),()=>{o.delete(e)}}function l(){return n}function d(e="",t="user",r=null){n={open:!0,initialMessage:e,source:t,acpAgent:r},a()}function c(){let e=(0,s.useSyncExternalStore)(i,l,l);return{open:e.open,initialMessage:e.initialMessage,source:e.source,acpAgent:e.acpAgent,openWith:(0,s.useCallback)((e,t="user",r=null)=>d(e,t,r),[]),close:(0,s.useCallback)(()=>void(n={open:!1,initialMessage:"",source:"user",acpAgent:null},a()),[])}}},31683:(e,t,r)=>{Promise.resolve().then(r.bind(r,22721))},41762:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("bookmark",[["path",{d:"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z",key:"oz39mx"}]])},42268:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]])},47376:(e,t,r)=>{"use strict";r.d(t,{Ot:()=>u,T_:()=>n,Ux:()=>c,bf:()=>i,jt:()=>o,rl:()=>a});var s=r(20699);r(87358);let n={anthropic:{id:"anthropic",name:"Anthropic",nameZh:"Anthropic",defaultModel:"claude-sonnet-4-6",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://console.anthropic.com/settings/keys",category:"primary"},openai:{id:"openai",name:"OpenAI",nameZh:"OpenAI",defaultModel:"gpt-5.4",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.openai.com/api-keys",category:"primary"},google:{id:"google",name:"Google Gemini",nameZh:"Google Gemini",defaultModel:"gemini-2.5-flash",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://aistudio.google.com/apikey",category:"primary"},groq:{id:"groq",name:"Groq",nameZh:"Groq",defaultModel:"llama-3.3-70b-versatile",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://console.groq.com/keys",category:"more"},xai:{id:"xai",name:"xAI (Grok)",nameZh:"xAI (Grok)",defaultModel:"grok-3",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},openrouter:{id:"openrouter",name:"OpenRouter",nameZh:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},mistral:{id:"mistral",name:"Mistral",nameZh:"Mistral",defaultModel:"mistral-large-latest",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},deepseek:{id:"deepseek",name:"DeepSeek",nameZh:"DeepSeek",defaultModel:"deepseek-chat",piProviderOverride:"openai",fixedBaseUrl:"https://api.deepseek.com/v1",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.deepseek.com/api_keys",category:"more"},zai:{id:"zai",name:"ZhipuAI (GLM)",nameZh:"智谱 AI (GLM 国际版)",defaultModel:"glm-4-plus",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"zai-cn":{id:"zai-cn",name:"ZhipuAI (GLM China)",nameZh:"智谱 AI (GLM 国内版)",defaultModel:"glm-4-plus",piProviderOverride:"zai",fixedBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://open.bigmodel.cn/",category:"more"},"kimi-coding":{id:"kimi-coding",name:"Kimi Coding",nameZh:"Kimi Coding (月之暗面)",defaultModel:"kimi-k2-thinking",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},cerebras:{id:"cerebras",name:"Cerebras",nameZh:"Cerebras",defaultModel:"llama-4-scout-17b-16e",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},minimax:{id:"minimax",name:"MiniMax",nameZh:"MiniMax (国际版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"minimax-cn":{id:"minimax-cn",name:"MiniMax (China)",nameZh:"MiniMax (国内版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},huggingface:{id:"huggingface",name:"Hugging Face",nameZh:"Hugging Face",defaultModel:"Qwen/Qwen3-235B-A22B-Thinking-2507",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},ollama:{id:"ollama",name:"Ollama",nameZh:"Ollama (本地)",defaultModel:"llama3.2",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:11434/v1",apiKeyFallback:"ollama",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://ollama.com/download",category:"more"}},o=Object.keys(n);function a(e){return e in n}function i(){let e=[],t=[];for(let r of o)"primary"===n[r].category?e.push(r):t.push(r);return t.sort((e,t)=>n[e].name.localeCompare(n[t].name)),{primary:e,more:t}}function l(e){return n[e].piProviderOverride??e}let d={deepseek:"DEEPSEEK_API_KEY"};function c(e){return d[e]?d[e]:p[l(e)]}function u(e){let t=n[e];if(t.fixedBaseUrl)return t.fixedBaseUrl;try{let t=(0,s.zr)(l(e));return t[0]?.baseUrl??""}catch{return""}}let p={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY","azure-openai-responses":"AZURE_OPENAI_API_KEY",google:"GEMINI_API_KEY",groq:"GROQ_API_KEY",cerebras:"CEREBRAS_API_KEY",xai:"XAI_API_KEY",openrouter:"OPENROUTER_API_KEY",zai:"ZAI_API_KEY","zai-cn":"ZAI_API_KEY",mistral:"MISTRAL_API_KEY",minimax:"MINIMAX_API_KEY","minimax-cn":"MINIMAX_API_KEY",huggingface:"HF_TOKEN","kimi-coding":"KIMI_API_KEY"}},51900:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},60392:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=60392,e.exports=t},68589:(e,t,r)=>{"use strict";r.d(t,{m:()=>n});let s=new Set(["write_file","create_file","batch_create_files","update_section","insert_after_heading","delete_file","rename_file","create_space"]);async function n(e,t,r){let n=e.getReader(),o=new TextDecoder,a="",i=[],l=new Map,d=null,c=null,u=Date.now();function p(){let e=i.map(e=>"text"===e.type?{type:"text",text:e.text}:"reasoning"===e.type?{type:"reasoning",text:e.text}:{...e});return{role:"assistant",content:e.filter(e=>"text"===e.type).map(e=>e.text).join(""),parts:e,timestamp:u}}try{for(;!r?.aborted;){let{done:e,value:r}=await n.read();if(e)break;let u=(a+=o.decode(r,{stream:!0})).split("\n");a=u.pop()??"";let m=!1;for(let e of u){let t,r=e.trim(),n=null;if(r.startsWith("data:")&&(n=r.slice(5).trim()),n){try{t=JSON.parse(n)}catch{continue}switch(t.type){case"text_delta":{let e=function(e){if(d===e){let e=i[i.length-1];if(e&&"text"===e.type)return e}let t={type:"text",text:""};return i.push(t),d=e,t}("text");e.text+=t.delta??"",m=!0;break}case"thinking_delta":c||(c={type:"reasoning",text:""},i.push(c),d=null),c.text+=t.delta??"",m=!0;break;case"tool_start":{let e=t.toolCallId,r=t.toolName,s=function(e,t){let r=l.get(e);return r||(r={type:"tool-call",toolCallId:e,toolName:t??"unknown",input:void 0,state:"pending"},l.set(e,r),i.push(r),d=null),r}(e,r);s.input=t.args,s.state="running",m=!0;break}case"tool_end":{let e=t.toolCallId,r=l.get(e);r&&(r.output=t.output??"",r.state=t.isError?"error":"done",m=!0,!t.isError&&s.has(r.toolName)&&window.dispatchEvent(new Event("mindos:files-changed")));break}case"error":{let e=t.message;i.push({type:"text",text:`
|
|
10
|
-
|
|
11
|
-
**Stream Error:** ${e}`}),d=null,m=!0}}}}m&&t(p())}}finally{n.releaseLock()}let m=!1;for(let e of l.values())("running"===e.state||"pending"===e.state)&&(e.state="error",e.output=e.output??"Stream ended before tool completed",m=!0);return m&&t(p()),p()}},84825:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=84825,e.exports=t},91337:(e,t,r)=>{"use strict";r.d(t,{IX:()=>l,KW:()=>i,O0:()=>a,cn:()=>o,vr:()=>d});var s=r(29722),n=r(622);function o(...e){return(0,n.QP)((0,s.$)(e))}function a(e){return e.split("/").map(encodeURIComponent).join("/")}function i(e,t){let r=Date.now()-e,s=Math.floor(r/6e4),n=Math.floor(r/36e5),o=Math.floor(r/864e5);return s<1?t.justNow:s<60?t.minutesAgo(s):n<24?t.hoursAgo(n):o<7?t.daysAgo(o):new Date(e).toLocaleDateString()}function l(e){let t=e.match(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}]+/u);return t?.[0]??""}function d(e){return e.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||e}}},e=>{e.O(0,[4913,9186,8409,1088,5718,5581,8441,3794,7358],()=>e(e.s=31683)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[620],{4235:(e,t,r)=>{"use strict";r.d(t,{B1:()=>l,X8:()=>d,dV:()=>i,oR:()=>u});let s=[],a=[],o=0;function n(){for(let e of a)e()}function l(e){return a=[...a,e],()=>{a=a.filter(t=>t!==e)}}function i(){return s}function d(e){s=s.filter(t=>t.id!==e),n()}function c(e){let t=`toast-${++o}`,r={id:t,message:e.message,type:e.type??"info",duration:e.duration??2e3,action:e.action};s=[...s,r].slice(-3),n(),r.duration>0&&setTimeout(()=>d(t),r.duration)}function u(e,t){c({message:e,...t})}u.success=(e,t)=>c({message:e,type:"success",duration:t}),u.undo=(e,t,r)=>c({message:e,type:"info",duration:r?.duration??5e3,action:{label:r?.label??"Undo",onClick:t}}),u.error=(e,t)=>c({message:e,type:"error",duration:t}),u.copy=(e="Copied")=>c({message:e,type:"success",duration:1500})},7834:(e,t,r)=>{"use strict";async function s(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}}r.d(t,{l:()=>s})},15721:(e,t,r)=>{Promise.resolve().then(r.bind(r,22952))},20171:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>p,Bt:()=>c,D0:()=>l,L7:()=>x,jn:()=>m,l6:()=>d,lM:()=>u,pM:()=>g,pd:()=>i});var s=r(95155),a=r(12115),o=r(66088),n=r(94514);function l({label:e,hint:t,children:r}){return(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium",children:e}),r,t&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]})}function i({className:e="",...t}){return(0,s.jsx)("input",{...t,className:`w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 ${e}`})}function d({value:e,onChange:t,children:r,className:l="",disabled:i}){let d=(0,a.useId)(),[c,u]=(0,a.useState)(!1),[p,m]=(0,a.useState)(-1),x=(0,a.useRef)(null),g=(0,a.useRef)(null),h=(0,a.useMemo)(()=>a.Children.toArray(r).filter(e=>a.isValidElement(e)&&"option"===e.type).map(e=>({value:String(e.props.value??""),label:String(e.props.children??e.props.value??"")})),[r]),f=h.findIndex(t=>t.value===e),b=h[f]?.label??"";(0,a.useEffect)(()=>{if(!c)return;let e=e=>{x.current&&!x.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]),(0,a.useEffect)(()=>{if(c&&g.current&&p>=0){let e=g.current.children[p];e?.scrollIntoView({block:"nearest"})}},[c,p]);let v=(0,a.useCallback)(e=>{e>=0&&e<h.length&&(t?.({target:{value:h[e].value}}),u(!1))},[h,t]),y=(0,a.useCallback)(e=>{if(!c){["Enter"," ","ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),u(!0),m(f>=0?f:0));return}switch(e.key){case"ArrowDown":e.preventDefault(),m(e=>Math.min(e+1,h.length-1));break;case"ArrowUp":e.preventDefault(),m(e=>Math.max(e-1,0));break;case"Enter":case" ":e.preventDefault(),v(p);break;case"Escape":e.preventDefault(),u(!1);break;case"Tab":u(!1)}},[c,h.length,f,p,v]);return(0,s.jsxs)("div",{ref:x,className:`relative ${l}`,children:[(0,s.jsxs)("button",{type:"button",disabled:i,onClick:()=>{u(e=>!e),m(f>=0?f:0)},onKeyDown:y,"aria-haspopup":"listbox","aria-expanded":c,className:"w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground text-left flex items-center justify-between gap-2 outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,s.jsx)("span",{className:`truncate ${b?"":"text-muted-foreground"}`,children:b||"—"}),(0,s.jsx)(o.A,{size:14,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${c?"rotate-180":""}`})]}),c&&(0,s.jsx)("div",{ref:g,role:"listbox","aria-activedescendant":p>=0?`${d}-opt-${p}`:void 0,className:"absolute z-20 w-full mt-1 py-1 border border-border rounded-lg bg-card shadow-lg max-h-60 overflow-auto animate-in fade-in-0 zoom-in-95 duration-100",children:h.map((t,r)=>{let a=t.value===e,o=r===p;return(0,s.jsxs)("button",{id:`${d}-opt-${r}`,role:"option","aria-selected":a,type:"button",onMouseDown:e=>{e.preventDefault(),v(r)},onMouseEnter:()=>m(r),className:`w-full px-3 py-1.5 text-sm text-left flex items-center gap-2 transition-colors ${o?"bg-accent text-accent-foreground":"text-foreground"}`,children:[(0,s.jsx)(n.A,{size:14,className:`shrink-0 ${a?"text-[var(--amber)]":"invisible"}`}),(0,s.jsx)("span",{className:"truncate",children:t.label})]},t.value)})})]})}function c({overridden:e}){return e?(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-mono ml-1.5",children:"env"}):null}function u({checked:e,onChange:t,size:r="md",disabled:a,title:o,onClick:n}){let l="sm"===r;return(0,s.jsx)("button",{type:"button",role:"switch","aria-checked":e,disabled:a,title:o,onClick:n??(()=>t?.(!e)),className:`relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 ${l?"h-4 w-7":"h-5 w-9"} ${e?"bg-[var(--amber)]":"bg-muted"}`,children:(0,s.jsx)("span",{className:`pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform ${l?"h-3 w-3":"h-4 w-4"} ${e?l?"translate-x-3":"translate-x-4":"translate-x-0"}`})})}function p({value:e,onChange:t,placeholder:r,disabled:o,labels:n}){let l="***set***"===e,[i,d]=(0,a.useState)(!1),[c,u]=(0,a.useState)(""),p=(0,a.useRef)(null),m=(0,a.useRef)(e);(0,a.useEffect)(()=>{m.current!==e&&(m.current=e,d(!1),u(""))},[e]);let x=(0,a.useCallback)(()=>{c.trim()&&t(c),d(!1),u("")},[c,t]),g=(0,a.useCallback)(()=>{d(!1),u("")},[]),h=n?.change??"Change",f=n?.cancel??"Cancel";return l&&!i?(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"flex-1 px-3 py-2 text-sm bg-muted/50 border border-border rounded-lg text-muted-foreground select-none tracking-widest",children:"••••••••••••"}),(0,s.jsx)("button",{type:"button",onClick:()=>{u(""),d(!0),requestAnimationFrame(()=>p.current?.focus())},disabled:o,className:"shrink-0 px-3 py-2 text-xs font-medium rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors disabled:opacity-50",children:h})]}):i?(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("input",{ref:p,type:"password",value:c,onChange:e=>u(e.target.value),onKeyDown:e=>{"Enter"===e.key&&x()},onBlur:x,placeholder:r??"sk-...",disabled:o,className:"flex-1 px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"}),(0,s.jsx)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onClick:g,className:"shrink-0 px-3 py-2 text-xs font-medium rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:f})]}):(0,s.jsx)("input",{type:"password",value:e,onChange:e=>t(e.target.value),placeholder:r??"sk-...",disabled:o,className:"w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"})}function m({children:e,disabled:t,onClick:r,type:a="button",className:o="",...n}){return(0,s.jsx)("button",{type:a,onClick:r,disabled:t,className:`px-4 py-2 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] transition-colors disabled:opacity-40 disabled:cursor-not-allowed ${o}`,...n,children:e})}function x({icon:e,title:t,description:r,badge:a,children:o,className:n=""}){return(0,s.jsxs)("div",{className:`rounded-xl border border-border/50 bg-card/50 p-5 ${n}`,children:[(0,s.jsxs)("div",{className:"flex items-start gap-3 mb-4",children:[(0,s.jsx)("div",{className:"w-8 h-8 rounded-lg bg-muted/50 flex items-center justify-center shrink-0 mt-0.5",children:(0,s.jsx)("span",{className:"text-muted-foreground",children:e})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:t}),a]}),r&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 leading-relaxed",children:r})]})]}),(0,s.jsx)("div",{className:"space-y-4 pl-11",children:o})]})}function g({label:e,hint:t,children:r}){return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("div",{className:"text-sm text-foreground",children:e}),t&&(0,s.jsx)("div",{className:"text-xs text-muted-foreground mt-0.5",children:t})]}),(0,s.jsx)("div",{className:"shrink-0",children:r})]})}},22952:(e,t,r)=>{"use strict";r.d(t,{default:()=>J});var s=r(95155),a=r(12115),o=r(86901),n=r(41641),l=r(21362),i=r(6296),d=r(35581),c=r(7834),u=r(4235),p=r(47376),m=r(92451),x=r(97810),g=r(48368);let h=[{id:"en",icon:(0,s.jsx)(m.A,{size:18}),dirs:["Profile/","Connections/","Notes/","Workflows/","Resources/","Projects/"]},{id:"zh",icon:(0,s.jsx)(x.A,{size:18}),dirs:["画像/","关系/","笔记/","流程/","资源/","项目/"]},{id:"empty",icon:(0,s.jsx)(g.A,{size:18}),dirs:["README.md","CONFIG.json","INSTRUCTION.md"]}];var f=r(13545),b=r(20171);function v({state:e,update:t,t:r,homeDir:o}){let n=r.setup,[l,i]=(0,a.useState)(!1),d=o.includes("\\")?"\\":"/",c="~"!==o?[o,"MindOS","mind"].join(d):n.kbPathDefault,[u,p]=(0,a.useState)(null),[m,x]=(0,a.useState)([]),[g,v]=(0,a.useState)(!1),[y,k]=(0,a.useState)(-1),[j,N]=(0,a.useState)(!1),w=(0,a.useRef)(null),S=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(S.current){S.current=!1;return}if(!e.mindRoot.trim())return void x([]);let t=setTimeout(()=>{let t=function(e){if(!e.trim())return"";let t=e.trim();if(t.endsWith("/")||t.endsWith("\\"))return t;let r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return r>=0?t.slice(0,r+1):""}(e.mindRoot)||o;fetch("/api/setup/ls",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})}).then(e=>e.json()).then(r=>{if(!r.dirs?.length)return void x([]);let s=t.endsWith("/")||t.endsWith("\\"),a=t.includes("\\")?"\\":"/",o=s?t:t+a,n=e.mindRoot.trim(),l=r.dirs.map(e=>o+e),i=n.endsWith("/")||n.endsWith("\\")?l:l.filter(e=>e.startsWith(n));x(i.slice(0,20)),v(i.length>0),k(-1)}).catch(e=>{console.warn("[SetupWizard] autocomplete fetch failed:",e),x([])})},300);return()=>clearTimeout(t)},[e.mindRoot,o]),(0,a.useEffect)(()=>{if(!e.mindRoot.trim())return void p(null);let r=setTimeout(()=>{fetch("/api/setup/check-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.mindRoot})}).then(e=>e.json()).then(e=>{p(e),N(!1),e?.exists&&!e.empty&&t("template","")}).catch(e=>{console.warn("[SetupWizard] check-path failed:",e),p(null)})},600);return()=>clearTimeout(r)},[e.mindRoot,t]);let C=()=>{x([]),v(!1),k(-1)},T=e=>{S.current=!0,t("mindRoot",e),C(),w.current?.focus()};return(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)(b.D0,{label:n.kbPath,hint:n.kbPathHint,children:[(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("input",{ref:w,value:e.mindRoot,onChange:e=>{t("mindRoot",e.target.value),v(!0)},onKeyDown:e=>{g&&0!==m.length&&("ArrowDown"===e.key?(e.preventDefault(),k(e=>Math.min(e+1,m.length-1))):"ArrowUp"===e.key?(e.preventDefault(),k(e=>Math.max(e-1,-1))):"Enter"===e.key&&y>=0?(e.preventDefault(),T(m[y])):"Escape"===e.key&&v(!1))},onBlur:()=>setTimeout(()=>C(),150),onFocus:()=>m.length>0&&v(!0),placeholder:c,className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus-visible:ring-1 focus-visible:ring-ring",style:{background:"var(--input, var(--card))",borderColor:"var(--border)",color:"var(--foreground)"}}),g&&m.length>0&&(0,s.jsx)("div",{role:"listbox",className:"absolute z-50 left-0 right-0 top-full mt-1 rounded-lg border overflow-auto",style:{background:"var(--card)",borderColor:"var(--border)",boxShadow:"0 4px 16px rgba(0,0,0,0.12)",maxHeight:"220px"},children:m.map((e,t)=>(0,s.jsx)("button",{type:"button",role:"option","aria-selected":t===y,onMouseDown:()=>T(e),className:"w-full text-left px-3 py-2 text-sm font-mono transition-colors",style:{background:t===y?"var(--muted)":"transparent",color:"var(--foreground)",borderTop:t>0?"1px solid var(--border)":void 0},children:e},e))})]}),e.mindRoot!==c&&c!==n.kbPathDefault&&(0,s.jsx)("button",{type:"button",onClick:()=>t("mindRoot",c),className:"mt-1.5 px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:n.kbPathUseDefault(c)})]}),u&&u.exists&&!u.empty&&!j?(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,s.jsxs)("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--amber)",background:"color-mix(in srgb, var(--amber) 6%, transparent)"},children:[(0,s.jsx)("p",{style:{color:"var(--amber)"},children:n.kbPathHasFiles(u.count)}),(0,s.jsxs)("div",{className:"flex gap-2 mt-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>t("template",""),className:"px-2.5 py-1 text-xs rounded-md border transition-colors",style:{borderColor:"var(--amber)",color:""===e.template?"var(--background)":"var(--amber)",background:""===e.template?"var(--amber)":"transparent"},children:""===e.template?(0,s.jsxs)(s.Fragment,{children:[n.kbTemplateSkip," ✓"]}):n.kbTemplateSkip}),(0,s.jsx)("button",{type:"button",onClick:()=>N(!0),className:"px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:n.kbTemplateMerge})]})]})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:h.map(a=>(0,s.jsxs)("button",{onClick:()=>t("template",a.id),className:"flex flex-col items-start gap-2 p-4 rounded-xl border text-left transition-all duration-150",style:{background:e.template===a.id?"var(--amber-dim)":"var(--card)",borderColor:e.template===a.id?"var(--amber)":"var(--border)"},children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{style:{color:"var(--amber)"},children:a.icon}),(0,s.jsx)("span",{className:"text-sm font-medium",style:{color:"var(--foreground)"},children:r.onboarding.templates[a.id].title})]}),(0,s.jsx)("div",{className:"w-full rounded-lg px-2.5 py-1.5 text-xs leading-relaxed font-display",style:{background:"var(--muted)",color:"var(--muted-foreground)"},children:a.dirs.map(e=>(0,s.jsx)("div",{children:e},e))})]},a.id))})]}),(0,s.jsx)("div",{className:"pt-2 mt-2",style:{borderTop:"1px solid var(--border)"},children:(0,s.jsxs)(b.D0,{label:(0,s.jsxs)(s.Fragment,{children:[n.webPassword," ",(0,s.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),hint:n.webPasswordHint,children:[(0,s.jsx)("input",{type:"password",value:e.webPassword,onChange:e=>{t("webPassword",e.target.value),i(!0)},onBlur:()=>i(!0),placeholder:"••••••••",className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus-visible:ring-1 focus-visible:ring-ring",style:{background:"var(--input, var(--card))",borderColor:l&&!e.webPassword.trim()?"var(--error)":"var(--border)",color:"var(--foreground)"}}),l&&!e.webPassword.trim()&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1 mt-1",style:{color:"var(--error)"},children:[(0,s.jsx)(f.A,{size:11})," ",n.webPasswordRequired]})]})})]})}var y=r(22164),k=r(66088),j=r(67635),N=r(51842),w=r(79704),S=r(41585),C=r(12651),T=r(68822);function A({label:e,hint:t,value:r,onChange:o,status:n,onCheckPort:l,s:d}){let c=(0,a.useRef)(void 0);return(0,a.useEffect)(()=>()=>clearTimeout(c.current),[]),(0,s.jsx)(b.D0,{label:e,hint:t,children:(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)(b.pd,{type:"number",min:1024,max:65535,value:r,onChange:e=>{let t=parseInt(e.target.value,10)||r;o(t),clearTimeout(c.current),t>=1024&&t<=65535&&(c.current=setTimeout(()=>l(t),500))},onBlur:()=>{clearTimeout(c.current),l(r)}}),n.checking&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",role:"status",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:11,className:"animate-spin"})," ",d.portChecking]}),!n.checking&&!1===n.available&&(0,s.jsxs)("div",{className:"flex items-center gap-2",role:"alert",children:[(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--amber)"},children:[(0,s.jsx)(S.A,{size:11})," ",d.portInUse(r)]}),null!==n.suggestion&&(0,s.jsx)("button",{type:"button",onClick:()=>{o(n.suggestion),setTimeout(()=>l(n.suggestion),0)},className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:d.portSuggest(n.suggestion)})]}),!n.checking&&!0===n.available&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--success)"},children:[(0,s.jsx)(C.A,{size:11})," ",n.isSelf?d.portSelf:d.portAvailable]})]})})}function P({state:e,update:t,webPortStatus:r,mcpPortStatus:a,setWebPortStatus:o,setMcpPortStatus:n,checkPort:l,portConflict:i,s:d}){return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsx)(A,{label:d.webPort,hint:d.portHint,value:e.webPort,onChange:e=>{t("webPort",e),o({checking:!1,available:null,isSelf:!1,suggestion:null})},status:r,onCheckPort:e=>l(e,"web"),s:d}),(0,s.jsx)(A,{label:d.mcpPort,hint:d.portHint,value:e.mcpPort,onChange:e=>{t("mcpPort",e),n({checking:!1,available:null,isSelf:!1,suggestion:null})},status:a,onCheckPort:e=>l(e,"mcp"),s:d}),i&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1.5",role:"alert",style:{color:"var(--amber)"},children:[(0,s.jsx)(S.A,{size:12})," ",d.portConflict]}),!i&&(null===r.available||null===a.available)&&!r.checking&&!a.checking&&(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:d.portVerifyHint}),(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1.5",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(T.A,{size:12})," ",d.portRestartWarning]})]})}function M({state:e,update:t,s:r,onCopyToken:o,webPortStatus:n,mcpPortStatus:i,setWebPortStatus:c,setMcpPortStatus:u,checkPort:m,portConflict:x}){let{locale:g}=(0,d.Y)(),[h,f]=(0,a.useState)(!1);(0,a.useEffect)(()=>{!h&&x&&f(!0)},[x,h]);let v="skip"!==e.provider&&(0,p.rl)(e.provider)?e.provider:null,S=v?p.T_[v]:null,C=v?e.providerConfigs[v]??{apiKey:"",model:S?.defaultModel??""}:null,T=r=>{if(!v)return;let s=e.providerConfigs[v]??{apiKey:"",model:S?.defaultModel??""};t("providerConfigs",{...e.providerConfigs,[v]:{...s,...r}})},A=new Set(Object.entries(e.providerConfigs).filter(([e,t])=>t&&(t.apiKey||t.apiKeyMask)||p.T_[e]?.apiKeyFallback).map(([e])=>e));return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsx)(N.A,{value:e.provider,onChange:e=>t("provider",e),showSkip:!0,compact:!0,configuredProviders:A}),v&&S&&C&&(0,s.jsxs)("div",{className:"space-y-4 pt-2",children:[(0,s.jsxs)(b.D0,{label:r.apiKey,children:[(0,s.jsx)(b.Ak,{value:C.apiKey,onChange:e=>T({apiKey:e}),placeholder:C.apiKeyMask||`${(0,p.Ux)(v)??"API Key"}...`}),C.apiKeyMask&&!C.apiKey&&(0,s.jsx)("p",{className:"text-xs mt-1",style:{color:"var(--muted-foreground)"},children:r.apiKeyExisting??"Existing key configured. Leave blank to keep it."}),S.signupUrl&&!C.apiKey&&!C.apiKeyMask&&(0,s.jsxs)("a",{href:S.signupUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs mt-1.5 hover:underline",style:{color:"var(--amber)"},children:[(0,s.jsx)(y.A,{size:10}),S.apiKeyFallback?"zh"===g?`下载 ${S.nameZh}`:`Download ${S.name}`:"zh"===g?`获取 ${S.nameZh} API Key`:`Get ${S.name} API Key`]})]}),S.supportsBaseUrl&&(0,s.jsx)(b.D0,{label:r.baseUrl,hint:r.baseUrlHint,children:(0,s.jsx)(b.pd,{value:C.baseUrl??"",onChange:e=>T({baseUrl:e.target.value}),placeholder:S.fixedBaseUrl||(0,p.Ot)(v)||"https://api.openai.com/v1"})}),(0,s.jsx)(b.D0,{label:r.model,children:(0,s.jsx)(w.A,{value:C.model,onChange:e=>T({model:e}),placeholder:S.defaultModel,provider:v,apiKey:C.apiKey,baseUrl:C.baseUrl,supportsListModels:S.supportsListModels,browseLabel:r.listModels,noModelsLabel:r.noModelsFound})})]}),(0,s.jsxs)("div",{className:"pt-3 mt-1",style:{borderTop:"1px solid var(--border)"},children:[(0,s.jsxs)("button",{type:"button",onClick:()=>f(!h),className:"flex items-center gap-1.5 text-xs font-medium",style:{color:"var(--muted-foreground)"},children:[h?(0,s.jsx)(k.A,{size:12}):(0,s.jsx)(l.A,{size:12}),r.advancedPorts]}),h&&(0,s.jsxs)("div",{className:"mt-3 space-y-5",children:[(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsxs)("p",{className:"text-xs font-medium",style:{color:"var(--foreground)"},children:["\uD83D\uDD11 ",r.tokenSectionTitle]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("code",{className:"flex-1 truncate text-xs font-mono px-3 py-2 rounded-lg",style:{background:"var(--muted)",color:"var(--foreground)"},children:e.authToken}),(0,s.jsxs)("button",{type:"button",onClick:o,className:"flex items-center gap-1 px-2.5 py-2 text-xs rounded-lg border transition-colors hover:bg-muted shrink-0",style:{borderColor:"var(--border)",color:"var(--foreground)"},children:[(0,s.jsx)(j.A,{size:12})," ",r.copyToken]})]}),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:r.tokenSectionHint})]}),(0,s.jsx)(P,{state:e,update:t,webPortStatus:n,mcpPortStatus:i,setWebPortStatus:c,setMcpPortStatus:u,checkPort:m,portConflict:x,s:r})]})]})]})}var z=r(62791),E=r(10762),I=r(68806),O=r(90718);let U={"claude-code":"https://docs.anthropic.com/en/docs/claude-code/overview",cursor:"https://www.cursor.com/",windsurf:"https://codeium.com/windsurf",cline:"https://github.com/cline/cline",trae:"https://www.trae.ai/","gemini-cli":"https://github.com/google-gemini/gemini-cli",augment:"https://www.augmentcode.com/"};function K({agents:e,agentsLoading:t,selectedAgents:r,setSelectedAgents:o,connectionMode:n,setConnectionMode:l,agentTransport:d,setAgentTransport:c,agentScope:u,setAgentScope:p,agentStatuses:m,s:x,settingsMcp:g}){let[h,f]=(0,a.useState)(!1),[v,y]=(0,a.useState)(!1),{detected:j,other:N}=(0,a.useMemo)(()=>({detected:e.filter(e=>e.installed||e.present),other:e.filter(e=>!e.installed&&!e.present)}),[e]),w=(e,t)=>(0,s.jsxs)("label",{className:"flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-muted/50 transition-colors",style:{background:t%2==0?"var(--card)":"transparent",borderTop:t>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("input",{type:"checkbox",checked:r.has(e.key),onChange:()=>{var t;return t=e.key,void o(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"form-check",disabled:m[e.key]?.state==="installing"}),(0,s.jsx)("span",{className:"text-sm flex-1",style:{color:"var(--foreground)"},children:e.name}),n.mcp&&(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded font-mono",style:{background:"color-mix(in srgb, var(--muted-foreground) 8%, transparent)",color:"var(--muted-foreground)"},children:"auto"===d?e.preferredTransport:d}),((e,t)=>{let r=m[e];if(r){if("installing"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:10,className:"animate-spin"})," ",x.agentInstalling]});if("ok"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:[(0,s.jsx)(C.A,{size:10})," ",x.agentStatusOk]});if("error"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)",color:"var(--error)"},children:[(0,s.jsx)(z.A,{size:10})," ",x.agentStatusError,r.message&&(0,s.jsxs)("span",{className:"ml-1 text-2xs",children:["(",r.message,")"]})]})}if(t.installed)return(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:g.installed});if(t.present)return(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"var(--amber-dim)",color:"var(--amber)"},children:x.agentDetected});let a=U[e];return(0,s.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--muted-foreground) 10%, transparent)",color:"var(--muted-foreground)"},children:x.agentNotFound}),a&&(0,s.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"text-2xs hover:underline",style:{color:"var(--amber)"},children:x.agentGetIt})]})})(e.key,e)]},e.key);return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--muted-foreground)"},children:x.connectionModeTitle}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,s.jsxs)("label",{className:"flex items-start gap-3 px-4 py-3 rounded-xl border cursor-pointer transition-all",style:{borderColor:n.cli?"var(--amber)":"var(--border)",background:n.cli?"color-mix(in srgb, var(--amber) 6%, transparent)":"transparent"},children:[(0,s.jsx)("input",{type:"checkbox",checked:n.cli,onChange:()=>l(e=>({...e,cli:!e.cli})),className:"form-check mt-0.5"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[(0,s.jsx)(E.A,{size:13,className:"shrink-0"})," CLI"]}),(0,s.jsx)("p",{className:"text-2xs mt-0.5",style:{color:"var(--muted-foreground)"},children:x.connectionModeCliHint})]})]}),(0,s.jsxs)("label",{className:"flex items-start gap-3 px-4 py-3 rounded-xl border cursor-pointer transition-all",style:{borderColor:n.mcp?"var(--amber)":"var(--border)",background:n.mcp?"color-mix(in srgb, var(--amber) 6%, transparent)":"transparent"},children:[(0,s.jsx)("input",{type:"checkbox",checked:n.mcp,onChange:()=>l(e=>({...e,mcp:!e.mcp})),className:"form-check mt-0.5"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[(0,s.jsx)(I.A,{size:13,className:"shrink-0"})," MCP"]}),(0,s.jsx)("p",{className:"text-2xs mt-0.5",style:{color:"var(--muted-foreground)"},children:x.connectionModeMcpHint})]})]})]})]}),n.cli||n.mcp?(0,s.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:!n.mcp&&n.cli?x.agentToolsHintCliOnly:x.agentToolsHint}):(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2.5 rounded-lg text-xs",style:{background:"color-mix(in srgb, var(--amber) 8%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(O.A,{size:13,className:"shrink-0"}),(0,s.jsx)("span",{children:x.agentToolsHintNone})]}),t?(0,s.jsxs)("div",{className:"flex items-center gap-2 py-4",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:14,className:"animate-spin"}),(0,s.jsx)("span",{className:"text-sm",children:x.agentToolsLoading})]}):0===e.length?(0,s.jsx)("p",{className:"text-sm py-4 text-center",style:{color:"var(--muted-foreground)"},children:x.agentToolsEmpty}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex items-center gap-4 text-2xs",style:{color:"var(--muted-foreground)"},children:[(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--success)"}}),x.badgeInstalled]}),(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--amber)"}}),x.badgeDetected]}),(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--muted-foreground)"}}),x.badgeNotFound]})]}),j.length>0?(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:j.map((e,t)=>w(e,t))}):(0,s.jsx)("p",{className:"text-xs py-2",style:{color:"var(--muted-foreground)"},children:x.agentNoneDetected}),N.length>0&&(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>f(!h),"aria-expanded":h,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(k.A,{size:12,className:`transition-transform ${h?"rotate-180":""}`}),x.agentShowMore(N.length)]}),h&&(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden mt-1",style:{borderColor:"var(--border)"},children:N.map((e,t)=>w(e,t))})]}),n.mcp&&0===r.size&&(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2.5 rounded-lg text-xs",style:{background:"color-mix(in srgb, var(--amber) 8%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(O.A,{size:13,className:"shrink-0"}),(0,s.jsx)("span",{children:x.agentNoneSelected})]}),n.mcp&&(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>y(!v),"aria-expanded":v,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(k.A,{size:12,className:`transition-transform ${v?"rotate-180":""}`}),x.agentAdvanced]}),v&&(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 mt-2",children:[(0,s.jsx)(b.D0,{label:x.agentTransport,children:(0,s.jsxs)(b.l6,{value:d,onChange:e=>c(e.target.value),children:[(0,s.jsx)("option",{value:"auto",children:x.agentTransportAuto}),(0,s.jsx)("option",{value:"stdio",children:g.transportStdio}),(0,s.jsx)("option",{value:"http",children:g.transportHttp})]})}),(0,s.jsx)(b.D0,{label:x.agentScope,children:(0,s.jsxs)(b.l6,{value:u,onChange:e=>p(e.target.value),children:[(0,s.jsx)("option",{value:"global",children:x.agentScopeGlobal}),(0,s.jsx)("option",{value:"project",children:x.agentScopeProject})]})})]})]}),(0,s.jsxs)("div",{className:"flex gap-2 mt-1",children:[(0,s.jsx)("button",{type:"button",onClick:()=>o(new Set(e.filter(e=>e.installed||e.present).map(e=>e.key))),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:x.agentSelectDetected}),(0,s.jsx)("button",{type:"button",onClick:()=>o(new Set),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:x.agentSkipLater})]})]})]})}var R=r(42129),_=r(439),D=r(94514);function $({s:e}){return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"p-3 rounded-lg text-sm flex items-center gap-2",style:{background:"color-mix(in srgb, var(--amber) 10%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(S.A,{size:14})," ",e.restartRequired]}),(0,s.jsxs)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:[e.restartManual," ",(0,s.jsx)("code",{className:"font-mono",children:"mindos start"})]})]})}function L({s:e,newPort:t,webPassword:r}){let[o,n]=(0,a.useState)(!1),[l,d]=(0,a.useState)(!1),c=(0,a.useRef)(void 0),u=(0,a.useRef)(void 0);(0,a.useEffect)(()=>()=>{clearTimeout(u.current),clearInterval(c.current)},[]);let p=async()=>{n(!0);try{let e=await fetch("/api/restart",{method:"POST"});if(!e.ok)throw Error(`restart failed (${e.status})`);d(!0);let s=window.location.hostname||"localhost",a=s.includes(":")?`[${s}]`:s,o=`http://${a}:${t}`,n=()=>{window.location.href=`${o}/?welcome=1`},l=0;clearInterval(c.current),u.current=setTimeout(()=>{c.current=setInterval(async()=>{l++;try{if((await fetch(`${o}/api/health`)).status<500){if(clearInterval(c.current),r)try{await fetch(`${o}/api/auth`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:r}),credentials:"include"})}catch{}n();return}}catch{}l>=30&&(clearInterval(c.current),n())},800)},2e3)}catch(e){console.warn("[SetupWizard] restart request failed:",e),n(!1)}};return l?(0,s.jsxs)("span",{className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg",style:{background:"color-mix(in srgb, var(--success) 15%, transparent)",color:"var(--success)"},children:[(0,s.jsx)(C.A,{size:14})," ",e.restartDone]}):(0,s.jsxs)("button",{type:"button",onClick:p,disabled:o,className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[o?(0,s.jsx)(i.A,{size:13,className:"animate-spin"}):null,o?e.restarting:e.restartNow]})}function B({state:e,selectedAgents:t,agentStatuses:r,onRetryAgent:a,error:o,needsRestart:n,s:l,setupPhase:d,cliEnabled:c,mcpEnabled:u,skillInstallStatus:p="pending"}){let m=Object.entries(r).filter(([,e])=>"error"===e.state),x=c&&u?"CLI + MCP":c?"CLI":u?"MCP":"—",g=[[l.kbPath,e.mindRoot],[l.webPort,`${e.webPort} / ${e.mcpPort}`],[l.agentToolsTitle,u&&t.size>0?`${x} \xb7 ${l.agentCountSummary(t.size)}`:x]],h=u&&t.size>0,f=t.size>0,b=[{key:"saving",label:l.phaseSaving},...h?[{key:"agents",label:l.phaseAgents}]:[],...f?[{key:"skills",label:l.phaseSkill??"Installing skills"}]:[],{key:"done",label:l.phaseDone}],v=b.map(e=>e.key),y=v.indexOf(d);return(0,s.jsxs)("div",{className:"space-y-5",children:["done"!==d&&(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:g.map(([e,t],r)=>(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 text-sm",style:{background:r%2==0?"var(--card)":"transparent",borderTop:r>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("span",{style:{color:"var(--muted-foreground)"},children:e}),(0,s.jsx)("span",{className:"font-mono text-xs truncate ml-4",style:{color:"var(--foreground)"},children:t})]},r))}),"review"===d&&(0,s.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:l.reviewHint}),"review"!==d&&"done"!==d&&(0,s.jsx)("div",{className:"space-y-2 py-2",children:b.map(({key:e,label:t},r)=>{let a=v.indexOf(e),o=y>a,n=d===e;return(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 text-2xs",style:{background:o?"color-mix(in srgb, var(--success) 15%, transparent)":n?"color-mix(in srgb, var(--amber) 15%, transparent)":"var(--muted)",color:o?"var(--success)":n?"var(--amber)":"var(--muted-foreground)"},children:o?(0,s.jsx)(C.A,{size:12}):n?(0,s.jsx)(i.A,{size:12,className:"animate-spin"}):r+1}),(0,s.jsx)("span",{className:"text-sm",style:{color:o?"var(--success)":n?"var(--foreground)":"var(--muted-foreground)",fontWeight:n?500:400,opacity:y<a?.5:1},children:t})]},e)})}),m.length>0&&"done"===d&&(0,s.jsxs)("div",{className:"p-3 rounded-lg space-y-2",style:{background:"color-mix(in srgb, var(--error) 8%, transparent)"},children:[(0,s.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--error)"},children:l.agentFailedCount(m.length)}),m.map(([e,t])=>(0,s.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,s.jsxs)("span",{className:"text-xs flex items-center gap-1",style:{color:"var(--error)"},children:[(0,s.jsx)(z.A,{size:11})," ",e,t.message?` — ${t.message}`:""]}),(0,s.jsx)("button",{type:"button",onClick:()=>a(e),className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--error)",color:"var(--error)"},children:l.retryAgent})]},e)),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:l.agentFailureNote})]}),o&&(0,s.jsxs)("div",{className:"p-3 rounded-lg text-sm text-error",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)"},children:[l.completeFailed,": ",o]}),"done"===d&&(0,s.jsx)(F,{state:e,selectedAgents:t,agentStatuses:r,needsRestart:n,skillInstallStatus:p,s:l})]})}function F({state:e,selectedAgents:t,agentStatuses:r,needsRestart:n,s:l,skillInstallStatus:i="pending"}){let[m,x]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>x(!1),2e3);return()=>clearTimeout(e)},[m]);let g=(0,a.useCallback)(async()=>{!e.authToken||await (0,c.l)(e.authToken)&&(x(!0),u.oR.copy())},[e.authToken]),{locale:h}=(0,d.Y)(),f=!!e.mindRoot,b="skip"!==e.provider,v=Object.values(r).filter(e=>"ok"===e.state).length,y=v>0,k=!!e.authToken,N="",w="";if(b&&(0,p.rl)(e.provider)){let t=p.T_[e.provider];N="zh"===h?t.nameZh:t.name;let r=e.providerConfigs[e.provider];w=r?.model||t.defaultModel}let T=[{ok:f,icon:(0,s.jsx)(R.A,{size:14}),title:l.healthKb??"Knowledge Base",detail:f?e.mindRoot:l.healthKbNone??"Not configured"},{ok:b,icon:(0,s.jsx)(O.A,{size:14}),title:l.healthAi??"AI Provider",detail:b?`${N} (${w||"default"})`:l.healthAiNone??"Not configured — AI features disabled",action:b?void 0:l.healthAiAction??"Add an API key in Settings → AI."},{ok:y,icon:(0,s.jsx)(I.A,{size:14}),title:l.healthAgents??"Agent Connection",detail:y?l.healthAgentsOk?.(v)??`${v} agent(s) configured`:t.size>0?l.healthAgentsPartial??"Configuration in progress...":l.healthAgentsNone??"No agents configured",action:y?void 0:l.healthAgentsAction??"You can add agents later in Settings → Connections."},...t.size>0?[{ok:"ok"===i,icon:(0,s.jsx)(o.A,{size:14}),title:l.healthSkills??"Skills",detail:"ok"===i?l.healthSkillsOk??"Skills installed successfully":"error"===i?l.healthSkillsError??"Skill installation failed":"skipped"===i?l.healthSkillsSkipped??"Skipped":l.healthSkillsInstalling??"Installing skills...",action:"error"===i?l.healthSkillsAction??"You can install skills manually later.":void 0}]:[]];return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:T.map(({ok:e,icon:t,title:r,detail:a,action:o},n)=>(0,s.jsxs)("div",{className:"flex items-start gap-3 px-4 py-3",style:{background:n%2==0?"var(--card)":"transparent",borderTop:n>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 mt-0.5",style:{background:e?"color-mix(in srgb, var(--success) 15%, transparent)":"color-mix(in srgb, var(--amber) 15%, transparent)",color:e?"var(--success)":"var(--amber)"},children:e?(0,s.jsx)(C.A,{size:12}):(0,s.jsx)(S.A,{size:10})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[t," ",r]}),(0,s.jsx)("p",{className:"text-xs mt-0.5 break-words",style:{color:e?"var(--muted-foreground)":"var(--amber-text)"},children:a}),o&&(0,s.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--muted-foreground)"},children:o})]})]},n))}),k&&(0,s.jsxs)("div",{className:"rounded-xl border p-4 space-y-2",style:{borderColor:"var(--border)",background:"var(--card)"},children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium uppercase tracking-wider",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(_.A,{size:11}),l.healthTokenTitle??"Auth Token"]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex items-center px-3 py-2 rounded-lg min-h-[38px]",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:(0,s.jsx)("code",{className:"flex-1 text-xs font-mono break-all select-all leading-relaxed",style:{color:"var(--foreground)"},children:e.authToken})}),(0,s.jsx)("button",{type:"button",onClick:g,className:"shrink-0 p-2 rounded-lg border transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",style:{borderColor:m?"color-mix(in srgb, var(--success) 50%, transparent)":"var(--border)",background:m?"color-mix(in srgb, var(--success) 10%, transparent)":"transparent",color:m?"var(--success)":"var(--muted-foreground)"},title:l.healthTokenCopy??"Copy token",children:m?(0,s.jsx)(D.A,{size:14}):(0,s.jsx)(j.A,{size:14})})]}),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:l.healthTokenHint??"Use this token when connecting AI agents. Also available in Settings → Connections."})]}),n&&(0,s.jsx)($,{s:l})]})}function W({step:e,setStep:t,stepTitles:r,disabled:a,numberedSteps:o}){let{t:n}=(0,d.Y)(),l=o??r.length,i=r.slice(0,l),c=e>=l;return(0,s.jsx)("div",{className:"flex items-center gap-2 mb-8",role:"navigation","aria-label":"Setup steps",children:i.map((r,o)=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[o>0&&(0,s.jsx)("div",{className:"w-8 h-px",style:{background:o<=e||c?"var(--amber)":"var(--border)"}}),(0,s.jsxs)("button",{onClick:()=>t(o),"aria-current":o===e?"step":void 0,"aria-label":r,className:"flex flex-col items-center gap-1 p-1 -m-1 disabled:cursor-not-allowed disabled:opacity-60",disabled:a||o>e,title:a||o>e?n.hints.cannotJumpForward:void 0,children:[(0,s.jsx)("div",{className:"w-6 h-6 rounded-full text-xs font-medium flex items-center justify-center transition-colors",style:{background:o<e||c||o===e?"var(--amber)":"var(--muted)",color:o<=e||c?"var(--amber-foreground)":"var(--muted-foreground)",opacity:o<=e||c?1:.5},children:o<e||c?(0,s.jsx)(C.A,{size:14}):o+1}),(0,s.jsx)("span",{className:"text-[10px] leading-tight hidden sm:inline max-w-[4rem] text-center truncate",style:{color:o!==e||c?"var(--muted-foreground)":"var(--foreground)",opacity:o<=e||c?1:.5},children:r})]})]},o))})}function Z(e,t,r,s){let a=t.find(t=>t.key===e);return{key:e,scope:s,transport:"auto"===r?a?.preferredTransport||"stdio":r}}function H(e){return{state:"ok"===e.status?"ok":"error",message:e.message,transport:e.transport,verified:e.verified,verifyError:e.verifyError}}async function Y(e,t){let r={};if("skip"!==e.provider)for(let[t,s]of Object.entries(e.providerConfigs))s&&(r[t]={apiKey:s.apiKey,model:s.model,...s.baseUrl?{baseUrl:s.baseUrl}:{}});let s={mindRoot:e.mindRoot,template:e.template||void 0,port:e.webPort,mcpPort:e.mcpPort,authToken:e.authToken,webPassword:e.webPassword,ai:"skip"===e.provider?void 0:{provider:e.provider,providers:r},connectionMode:t??{cli:!0,mcp:!1}},a=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}),o=await a.json();if(!a.ok)throw Error(o.error||`HTTP ${a.status}`);return!!o.needsRestart}async function G(e,t,r,s,a,o){let n=e.map(e=>Z(e,t,r,s)),l=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:n,transport:r,url:`http://localhost:${a}/mcp`,token:o||void 0})}),i=await l.json(),d={};if(i.results)for(let e of i.results)d[e.agent]=H(e);return d}async function q(e,t){if(0===t.length)return!0;try{let r=await fetch("/api/mcp/install-skill",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({skill:e,agents:t})}),s=await r.json();return!0===s.ok}catch(e){return console.warn("[SetupWizard] Skill installation failed:",e),!1}}function J(){let{t:e}=(0,d.Y)(),t=e.setup,[r,m]=(0,a.useState)(0),[x,g]=(0,a.useState)({mindRoot:"~/MindOS/mind",template:"en",provider:"anthropic",providerConfigs:{anthropic:{apiKey:"",model:"claude-sonnet-4-6"},openai:{apiKey:"",model:"gpt-5.4",baseUrl:""}},webPort:3456,mcpPort:8781,authToken:"",webPassword:""}),[h,f]=(0,a.useState)("~"),[b,y]=(0,a.useState)(!1),[k,j]=(0,a.useState)(!1),[N,w]=(0,a.useState)(""),[S,C]=(0,a.useState)(!1),[T,A]=(0,a.useState)("pending"),[P,z]=(0,a.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[E,I]=(0,a.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[O,U]=(0,a.useState)([]),[R,_]=(0,a.useState)(!1),[D,$]=(0,a.useState)(!1),[F,J]=(0,a.useState)(new Set),[V,X]=(0,a.useState)("auto"),[Q,ee]=(0,a.useState)("global"),[et,er]=(0,a.useState)({}),[es,ea]=(0,a.useState)({cli:!0,mcp:!1}),[eo,en]=(0,a.useState)("review");(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.homeDir&&f(e.homeDir),g(t=>{let r={...t.providerConfigs};if(e.providerConfigs&&"object"==typeof e.providerConfigs)for(let[t,s]of Object.entries(e.providerConfigs))(0,p.rl)(t)&&s&&(r[t]={apiKey:r[t]?.apiKey??"",model:s.model||p.T_[t].defaultModel,baseUrl:s.baseUrl??"",apiKeyMask:s.apiKeyMask||""});let s=e.provider&&(0,p.rl)(e.provider)?e.provider:t.provider;return{...t,mindRoot:e.mindRoot||t.mindRoot,webPort:"number"==typeof e.port?e.port:t.webPort,mcpPort:"number"==typeof e.mcpPort?e.mcpPort:t.mcpPort,authToken:e.authToken||t.authToken,webPassword:e.webPassword||t.webPassword,provider:s,providerConfigs:r}}),e.authToken||fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&g(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Token generation failed:",e))}).catch(e=>{console.warn("[SetupWizard] Failed to load config, generating token as fallback:",e),fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&g(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Fallback token generation also failed:",e))})},[]),(0,a.useEffect)(()=>{1===r&&(ed(x.webPort,"web",!0),ed(x.mcpPort,"mcp",!0))},[r]),(0,a.useEffect)(()=>{2!==r||D||R||(_(!0),fetch("/api/mcp/agents").then(e=>e.json()).then(e=>{if(e.agents){let t=e.agents.filter(e=>"builtin"!==e.scope);U(t),J(new Set(t.filter(e=>e.installed||e.present).map(e=>e.key)))}$(!0)}).catch(e=>{console.warn("[SetupWizard] Failed to load agents:",e),$(!0)}).finally(()=>_(!1)))},[r,D,R]);let el=(0,a.useCallback)((e,t)=>{g(r=>({...r,[e]:t}))},[]);(0,a.useCallback)(async e=>{try{let t=await fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({seed:e||void 0})}),r=await t.json();r.token&&g(e=>({...e,authToken:r.token}))}catch(e){console.warn("[SetupWizard] generateToken failed:",e)}},[]);let ei=(0,a.useCallback)(()=>{(0,c.l)(x.authToken).then(e=>{e&&u.oR.copy()})},[x.authToken]),ed=(0,a.useCallback)(async(e,t,r=!1)=>{if(e<1024||e>65535)return;let s="web"===t?z:I;s({checking:!0,available:null,isSelf:!1,suggestion:null});try{let a=await fetch("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})}),o=await a.json(),n=o.available??null,l=o.suggestion??null;if(s({checking:!1,available:n,isSelf:!!o.isSelf,suggestion:l}),r&&!1===n&&l){let e="web"===t?"webPort":"mcpPort";g(t=>({...t,[e]:l})),setTimeout(()=>ed(l,t,!1),0)}}catch(e){console.warn("[SetupWizard] checkPort failed:",e),s({checking:!1,available:null,isSelf:!1,suggestion:null})}},[]),ec=x.webPort===x.mcpPort,eu=async()=>{y(!0),w("");let e=Array.from(F),t=x;if(!x.authToken)try{let e=await fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}),r=await e.json();r.token&&(t={...x,authToken:r.token},g(t))}catch{}en("saving");try{await Y(t,es)&&C(!0)}catch(e){w(e instanceof Error?e.message:String(e)),en("review"),y(!1);return}if(es.mcp&&e.length>0){en("agents");let r={};for(let t of e)r[t]={state:"installing"};er(r);try{let r=await G(e,O,V,Q,t.mcpPort,t.authToken);er(r)}catch(r){console.warn("[SetupWizard] agent batch install failed:",r);let t={};for(let r of e)t[r]={state:"error"};er(t)}}if(e.length>0){en("skills"),A("installing");let r="zh"===t.template?"mindos-zh":"mindos";try{let t=await q(r,e);A(t?"ok":"error")}catch(e){console.warn("[SetupWizard] skill install failed:",e),A("error")}}else A("skipped");y(!1),j(!0),en("done")},ep=(0,a.useCallback)(async e=>{er(t=>({...t,[e]:{state:"installing"}}));try{let t=Z(e,O,V,Q),r=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:[t],transport:V,url:`http://localhost:${x.mcpPort}/mcp`,token:x.authToken||void 0})}),s=await r.json();if(s.results?.[0]){let t=s.results[0];er(r=>({...r,[e]:H(t)}))}}catch(t){console.warn("[SetupWizard] retryAgent failed:",t),er(t=>({...t,[e]:{state:"error"}}))}},[O,Q,V,x.mcpPort,x.authToken]);return(0,s.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col overflow-y-auto",role:"dialog","aria-modal":"true","aria-labelledby":"setup-title",style:{background:"var(--background)"},children:[(0,s.jsx)("div",{className:"sticky top-0 z-10 pt-6 pb-3 px-6",style:{background:"var(--background)"},children:(0,s.jsxs)("div",{className:"max-w-xl mx-auto",children:[(0,s.jsx)("div",{className:"text-center mb-3",children:(0,s.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,s.jsx)(o.A,{size:18,style:{color:"var(--amber)"}}),(0,s.jsx)("h1",{id:"setup-title",className:"text-2xl font-brand",style:{color:"var(--foreground)"},children:"MindOS"})]})}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(W,{step:r,setStep:m,stepTitles:t.stepTitles,disabled:b||k,numberedSteps:3})})]})}),(0,s.jsxs)("div",{className:"flex-1 w-full max-w-xl mx-auto px-6 pb-8",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold mb-5",style:{color:"var(--foreground)"},children:3===r?`✓ ${t.stepTitles[r]}`:t.stepTitles[r]}),0===r&&(0,s.jsx)(v,{state:x,update:el,t:e,homeDir:h}),1===r&&(0,s.jsx)(M,{state:x,update:el,s:t,onCopyToken:ei,webPortStatus:P,mcpPortStatus:E,setWebPortStatus:z,setMcpPortStatus:I,checkPort:ed,portConflict:ec}),2===r&&(0,s.jsx)(K,{agents:O,agentsLoading:R,selectedAgents:F,setSelectedAgents:J,connectionMode:es,setConnectionMode:ea,agentTransport:V,setAgentTransport:X,agentScope:Q,setAgentScope:ee,agentStatuses:et,s:t,settingsMcp:e.settings.mcp}),3===r&&(0,s.jsx)(B,{state:x,selectedAgents:F,agentStatuses:et,onRetryAgent:ep,error:N,needsRestart:S,s:t,setupPhase:eo,cliEnabled:es.cli,mcpEnabled:es.mcp,skillInstallStatus:T}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-8 pt-6",style:{borderTop:"1px solid var(--border)"},children:[(0,s.jsxs)("button",{onClick:()=>m(r-1),disabled:0===r||b||k,className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg border border-border hover:bg-muted transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{color:"var(--foreground)"},children:[(0,s.jsx)(n.A,{size:14})," ",t.back]}),r<3?(0,s.jsxs)("button",{onClick:()=>m(r+1),disabled:!(0===r?x.mindRoot.trim().length>0&&x.webPassword.trim().length>0:1===r?!ec&&!P.checking&&!E.checking&&!1!==P.available&&!1!==E.available:2!==r||es.cli||es.mcp),className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.next," ",(0,s.jsx)(l.A,{size:14})]}):k?S?(0,s.jsx)(L,{s:t,newPort:x.webPort,webPassword:x.webPassword}):(0,s.jsxs)("a",{href:"/?welcome=1",className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg transition-colors hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.healthGoHome??"Go to MindOS"," →"]}):(0,s.jsxs)("button",{onClick:eu,disabled:b,className:"flex items-center gap-1 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[b&&(0,s.jsx)(i.A,{size:14,className:"animate-spin"}),b?t.completing:t.complete]})]})]})]})}},47376:(e,t,r)=>{"use strict";r.d(t,{Ot:()=>u,T_:()=>a,Ux:()=>c,bf:()=>l,jt:()=>o,rl:()=>n});var s=r(20699);r(87358);let a={anthropic:{id:"anthropic",name:"Anthropic",nameZh:"Anthropic",defaultModel:"claude-sonnet-4-6",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://console.anthropic.com/settings/keys",category:"primary"},openai:{id:"openai",name:"OpenAI",nameZh:"OpenAI",defaultModel:"gpt-5.4",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.openai.com/api-keys",category:"primary"},google:{id:"google",name:"Google Gemini",nameZh:"Google Gemini",defaultModel:"gemini-2.5-flash",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://aistudio.google.com/apikey",category:"primary"},groq:{id:"groq",name:"Groq",nameZh:"Groq",defaultModel:"llama-3.3-70b-versatile",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://console.groq.com/keys",category:"more"},xai:{id:"xai",name:"xAI (Grok)",nameZh:"xAI (Grok)",defaultModel:"grok-3",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},openrouter:{id:"openrouter",name:"OpenRouter",nameZh:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},mistral:{id:"mistral",name:"Mistral",nameZh:"Mistral",defaultModel:"mistral-large-latest",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},deepseek:{id:"deepseek",name:"DeepSeek",nameZh:"DeepSeek",defaultModel:"deepseek-chat",piProviderOverride:"openai",fixedBaseUrl:"https://api.deepseek.com/v1",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.deepseek.com/api_keys",category:"more"},zai:{id:"zai",name:"ZhipuAI (GLM)",nameZh:"智谱 AI (GLM 国际版)",defaultModel:"glm-4-plus",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"zai-cn":{id:"zai-cn",name:"ZhipuAI (GLM China)",nameZh:"智谱 AI (GLM 国内版)",defaultModel:"glm-4-plus",piProviderOverride:"zai",fixedBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://open.bigmodel.cn/",category:"more"},"kimi-coding":{id:"kimi-coding",name:"Kimi Coding",nameZh:"Kimi Coding (月之暗面)",defaultModel:"kimi-k2-thinking",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},cerebras:{id:"cerebras",name:"Cerebras",nameZh:"Cerebras",defaultModel:"llama-4-scout-17b-16e",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},minimax:{id:"minimax",name:"MiniMax",nameZh:"MiniMax (国际版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"minimax-cn":{id:"minimax-cn",name:"MiniMax (China)",nameZh:"MiniMax (国内版)",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},huggingface:{id:"huggingface",name:"Hugging Face",nameZh:"Hugging Face",defaultModel:"Qwen/Qwen3-235B-A22B-Thinking-2507",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},ollama:{id:"ollama",name:"Ollama",nameZh:"Ollama (本地)",defaultModel:"llama3.2",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:11434/v1",apiKeyFallback:"ollama",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://ollama.com/download",category:"more"}},o=Object.keys(a);function n(e){return e in a}function l(){let e=[],t=[];for(let r of o)"primary"===a[r].category?e.push(r):t.push(r);return t.sort((e,t)=>a[e].name.localeCompare(a[t].name)),{primary:e,more:t}}function i(e){return a[e].piProviderOverride??e}let d={deepseek:"DEEPSEEK_API_KEY"};function c(e){return d[e]?d[e]:p[i(e)]}function u(e){let t=a[e];if(t.fixedBaseUrl)return t.fixedBaseUrl;try{let t=(0,s.zr)(i(e));return t[0]?.baseUrl??""}catch{return""}}let p={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY","azure-openai-responses":"AZURE_OPENAI_API_KEY",google:"GEMINI_API_KEY",groq:"GROQ_API_KEY",cerebras:"CEREBRAS_API_KEY",xai:"XAI_API_KEY",openrouter:"OPENROUTER_API_KEY",zai:"ZAI_API_KEY","zai-cn":"ZAI_API_KEY",mistral:"MISTRAL_API_KEY",minimax:"MINIMAX_API_KEY","minimax-cn":"MINIMAX_API_KEY",huggingface:"HF_TOKEN","kimi-coding":"KIMI_API_KEY"}},60392:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=60392,e.exports=t},84825:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=84825,e.exports=t}},e=>{e.O(0,[4913,5718,1309,5581,9207,8441,3794,7358],()=>e(e.s=15721)),_N_E=e.O()}]);
|