@cosmicstack/mercury-agent 1.1.9 → 1.1.12
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/README.md +101 -1
- package/README.zh-CN.md +265 -140
- package/dist/index.js +4473 -1842
- package/dist/index.js.map +1 -1
- package/dist/web/ui/assets/{Chat-DCFkzIwn.js → Chat-DXSn2dY8.js} +2 -2
- package/dist/web/ui/assets/{Chat-DCFkzIwn.js.map → Chat-DXSn2dY8.js.map} +1 -1
- package/dist/web/ui/assets/{Dashboard-B81ollv8.js → Dashboard-1rlAqQ-Y.js} +2 -2
- package/dist/web/ui/assets/{Dashboard-B81ollv8.js.map → Dashboard-1rlAqQ-Y.js.map} +1 -1
- package/dist/web/ui/assets/{Goals-D0cR8yIP.js → Goals-CgSUAXLH.js} +2 -2
- package/dist/web/ui/assets/{Goals-D0cR8yIP.js.map → Goals-CgSUAXLH.js.map} +1 -1
- package/dist/web/ui/assets/{Graph-C3eHp3_J.js → Graph-DnlOWkay.js} +2 -2
- package/dist/web/ui/assets/{Graph-C3eHp3_J.js.map → Graph-DnlOWkay.js.map} +1 -1
- package/dist/web/ui/assets/{Kanban-DrkTRyni.js → Kanban-DRlNiNRF.js} +2 -2
- package/dist/web/ui/assets/{Kanban-DrkTRyni.js.map → Kanban-DRlNiNRF.js.map} +1 -1
- package/dist/web/ui/assets/{Login-GRQ-LjgN.js → Login-BP5524pC.js} +2 -2
- package/dist/web/ui/assets/{Login-GRQ-LjgN.js.map → Login-BP5524pC.js.map} +1 -1
- package/dist/web/ui/assets/{MarkdownRenderer-Dvh1jwyj.js → MarkdownRenderer-B9KGVD0X.js} +2 -2
- package/dist/web/ui/assets/{MarkdownRenderer-Dvh1jwyj.js.map → MarkdownRenderer-B9KGVD0X.js.map} +1 -1
- package/dist/web/ui/assets/{Memory-dAZsKmWz.js → Memory-BOQEY0H8.js} +2 -2
- package/dist/web/ui/assets/{Memory-dAZsKmWz.js.map → Memory-BOQEY0H8.js.map} +1 -1
- package/dist/web/ui/assets/{Permissions-DCiyUUfI.js → Permissions-jbFH-toa.js} +2 -2
- package/dist/web/ui/assets/{Permissions-DCiyUUfI.js.map → Permissions-jbFH-toa.js.map} +1 -1
- package/dist/web/ui/assets/{PersonDetail-iZgApJog.js → PersonDetail-Ca8B9io8.js} +2 -2
- package/dist/web/ui/assets/{PersonDetail-iZgApJog.js.map → PersonDetail-Ca8B9io8.js.map} +1 -1
- package/dist/web/ui/assets/{Persons-Bs_HhYjC.js → Persons-epdmUeBM.js} +2 -2
- package/dist/web/ui/assets/{Persons-Bs_HhYjC.js.map → Persons-epdmUeBM.js.map} +1 -1
- package/dist/web/ui/assets/{Providers-CL6wMWni.js → Providers-Bm8sZNZo.js} +2 -2
- package/dist/web/ui/assets/{Providers-CL6wMWni.js.map → Providers-Bm8sZNZo.js.map} +1 -1
- package/dist/web/ui/assets/{Schedules-BQwE1hP5.js → Schedules-BZKhm9R7.js} +2 -2
- package/dist/web/ui/assets/{Schedules-BQwE1hP5.js.map → Schedules-BZKhm9R7.js.map} +1 -1
- package/dist/web/ui/assets/{Settings-26SF-okR.js → Settings-Hii-5oku.js} +2 -2
- package/dist/web/ui/assets/{Settings-26SF-okR.js.map → Settings-Hii-5oku.js.map} +1 -1
- package/dist/web/ui/assets/Skills-BHJp2CgD.js +17 -0
- package/dist/web/ui/assets/Skills-BHJp2CgD.js.map +1 -0
- package/dist/web/ui/assets/{Tasks-DbwRozzx.js → Tasks-D36pqkro.js} +2 -2
- package/dist/web/ui/assets/{Tasks-DbwRozzx.js.map → Tasks-D36pqkro.js.map} +1 -1
- package/dist/web/ui/assets/{Usage-i_q6Ri4s.js → Usage-CmjaYrsT.js} +2 -2
- package/dist/web/ui/assets/{Usage-i_q6Ri4s.js.map → Usage-CmjaYrsT.js.map} +1 -1
- package/dist/web/ui/assets/{Workspace-ZR5syf-9.js → Workspace-BYLf-wTJ.js} +2 -2
- package/dist/web/ui/assets/{Workspace-ZR5syf-9.js.map → Workspace-BYLf-wTJ.js.map} +1 -1
- package/dist/web/ui/assets/{activity-CIP1IzSg.js → activity-MOTqH8zM.js} +2 -2
- package/dist/web/ui/assets/{activity-CIP1IzSg.js.map → activity-MOTqH8zM.js.map} +1 -1
- package/dist/web/ui/assets/{alert-dialog-CW-j2nG4.js → alert-dialog-MbYSbZx5.js} +2 -2
- package/dist/web/ui/assets/{alert-dialog-CW-j2nG4.js.map → alert-dialog-MbYSbZx5.js.map} +1 -1
- package/dist/web/ui/assets/{arrow-left-D2YO-iMS.js → arrow-left-CtqQsBC6.js} +2 -2
- package/dist/web/ui/assets/{arrow-left-D2YO-iMS.js.map → arrow-left-CtqQsBC6.js.map} +1 -1
- package/dist/web/ui/assets/{avatar-BLsf3GhK.js → avatar-BIYaY7pR.js} +2 -2
- package/dist/web/ui/assets/{avatar-BLsf3GhK.js.map → avatar-BIYaY7pR.js.map} +1 -1
- package/dist/web/ui/assets/{badge-DfDJNUtd.js → badge-CUJiWF1y.js} +2 -2
- package/dist/web/ui/assets/{badge-DfDJNUtd.js.map → badge-CUJiWF1y.js.map} +1 -1
- package/dist/web/ui/assets/{button-TaFPR-zy.js → button-CNasMlFE.js} +2 -2
- package/dist/web/ui/assets/{button-TaFPR-zy.js.map → button-CNasMlFE.js.map} +1 -1
- package/dist/web/ui/assets/{card-DAYo4Zl5.js → card-BdsEOP7t.js} +2 -2
- package/dist/web/ui/assets/{card-DAYo4Zl5.js.map → card-BdsEOP7t.js.map} +1 -1
- package/dist/web/ui/assets/{chevron-down-CQi0yuay.js → chevron-down-CB9J_vvZ.js} +2 -2
- package/dist/web/ui/assets/{chevron-down-CQi0yuay.js.map → chevron-down-CB9J_vvZ.js.map} +1 -1
- package/dist/web/ui/assets/{circle-check-DweDcOkA.js → circle-check-DvGSe1uZ.js} +2 -2
- package/dist/web/ui/assets/{circle-check-DweDcOkA.js.map → circle-check-DvGSe1uZ.js.map} +1 -1
- package/dist/web/ui/assets/{circle-x-BmL20etA.js → circle-x-CyaGJ_BM.js} +2 -2
- package/dist/web/ui/assets/{circle-x-BmL20etA.js.map → circle-x-CyaGJ_BM.js.map} +1 -1
- package/dist/web/ui/assets/{dialog-DovgkMhT.js → dialog-Bd1rELXb.js} +2 -2
- package/dist/web/ui/assets/{dialog-DovgkMhT.js.map → dialog-Bd1rELXb.js.map} +1 -1
- package/dist/web/ui/assets/{download-_QBatDio.js → download-C8RvlFqO.js} +2 -2
- package/dist/web/ui/assets/{download-_QBatDio.js.map → download-C8RvlFqO.js.map} +1 -1
- package/dist/web/ui/assets/{eye-Wpgtfmgw.js → eye-BJ0NucMz.js} +2 -2
- package/dist/web/ui/assets/{eye-Wpgtfmgw.js.map → eye-BJ0NucMz.js.map} +1 -1
- package/dist/web/ui/assets/{file-text-2EGFNyc1.js → file-text-BWWBuD_N.js} +2 -2
- package/dist/web/ui/assets/{file-text-2EGFNyc1.js.map → file-text-BWWBuD_N.js.map} +1 -1
- package/dist/web/ui/assets/{folder-open-C-OiZn9P.js → folder-open-BwjemFy7.js} +2 -2
- package/dist/web/ui/assets/{folder-open-C-OiZn9P.js.map → folder-open-BwjemFy7.js.map} +1 -1
- package/dist/web/ui/assets/{git-branch-BT9gCKgG.js → git-branch-D9JVASpC.js} +2 -2
- package/dist/web/ui/assets/{git-branch-BT9gCKgG.js.map → git-branch-D9JVASpC.js.map} +1 -1
- package/dist/web/ui/assets/{index-BhxU0YlT.js → index-C3YiF4qv.js} +6 -6
- package/dist/web/ui/assets/index-C3YiF4qv.js.map +1 -0
- package/dist/web/ui/assets/{index-CUT6Fr2C.js → index-CaqLZNof.js} +2 -2
- package/dist/web/ui/assets/{index-CUT6Fr2C.js.map → index-CaqLZNof.js.map} +1 -1
- package/dist/web/ui/assets/index-CuhiuVab.css +1 -0
- package/dist/web/ui/assets/{input-L1uz5xAQ.js → input-CH3dmo9r.js} +2 -2
- package/dist/web/ui/assets/{input-L1uz5xAQ.js.map → input-CH3dmo9r.js.map} +1 -1
- package/dist/web/ui/assets/{loader-circle-BTFgt3hG.js → loader-circle-DbYKk0_Q.js} +2 -2
- package/dist/web/ui/assets/{loader-circle-BTFgt3hG.js.map → loader-circle-DbYKk0_Q.js.map} +1 -1
- package/dist/web/ui/assets/{pencil-uxK07iYy.js → pencil-gNDEMhav.js} +2 -2
- package/dist/web/ui/assets/{pencil-uxK07iYy.js.map → pencil-gNDEMhav.js.map} +1 -1
- package/dist/web/ui/assets/{plus-DcWFYr4m.js → plus-7rbHkByr.js} +2 -2
- package/dist/web/ui/assets/{plus-DcWFYr4m.js.map → plus-7rbHkByr.js.map} +1 -1
- package/dist/web/ui/assets/{power-DVIqVIMj.js → power-BS7gCDWs.js} +2 -2
- package/dist/web/ui/assets/{power-DVIqVIMj.js.map → power-BS7gCDWs.js.map} +1 -1
- package/dist/web/ui/assets/{progress-DMwOdxli.js → progress-ZzhsBV2v.js} +2 -2
- package/dist/web/ui/assets/{progress-DMwOdxli.js.map → progress-ZzhsBV2v.js.map} +1 -1
- package/dist/web/ui/assets/{search-D1OOxb1X.js → search-BZsbhO0B.js} +2 -2
- package/dist/web/ui/assets/{search-D1OOxb1X.js.map → search-BZsbhO0B.js.map} +1 -1
- package/dist/web/ui/assets/{select-Dnx_bUgy.js → select-vRSgBrHz.js} +2 -2
- package/dist/web/ui/assets/{select-Dnx_bUgy.js.map → select-vRSgBrHz.js.map} +1 -1
- package/dist/web/ui/assets/{send-D4uxqmyH.js → send-BkyTIUtJ.js} +2 -2
- package/dist/web/ui/assets/{send-D4uxqmyH.js.map → send-BkyTIUtJ.js.map} +1 -1
- package/dist/web/ui/assets/{sparkles-DLSJA4xU.js → sparkles-DcP24GEL.js} +2 -2
- package/dist/web/ui/assets/{sparkles-DLSJA4xU.js.map → sparkles-DcP24GEL.js.map} +1 -1
- package/dist/web/ui/assets/{switch-CvDDbCUA.js → switch-LRN9wWy2.js} +2 -2
- package/dist/web/ui/assets/{switch-CvDDbCUA.js.map → switch-LRN9wWy2.js.map} +1 -1
- package/dist/web/ui/assets/{terminal-DI3J3W_z.js → terminal-CWG62zdD.js} +2 -2
- package/dist/web/ui/assets/{terminal-DI3J3W_z.js.map → terminal-CWG62zdD.js.map} +1 -1
- package/dist/web/ui/assets/{textarea-CXLsr8tf.js → textarea-CXh3tmJ1.js} +2 -2
- package/dist/web/ui/assets/{textarea-CXLsr8tf.js.map → textarea-CXh3tmJ1.js.map} +1 -1
- package/dist/web/ui/assets/{zap-C-0oH5gt.js → zap-BEfqVtvZ.js} +2 -2
- package/dist/web/ui/assets/{zap-C-0oH5gt.js.map → zap-BEfqVtvZ.js.map} +1 -1
- package/dist/web/ui/index.html +2 -2
- package/package.json +9 -4
- package/dist/web/ui/assets/Skills-DANyYK_d.js +0 -7
- package/dist/web/ui/assets/Skills-DANyYK_d.js.map +0 -1
- package/dist/web/ui/assets/index-BhxU0YlT.js.map +0 -1
- package/dist/web/ui/assets/index-DOw1nKre.css +0 -1
- package/dist/web/ui/sw.js.map +0 -1
- package/dist/web/ui/workbox-0bb07689.js +0 -3
- package/dist/web/ui/workbox-0bb07689.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as e}from"./vendor-motion-Dwx3-JO5.js";import{r as a}from"./vendor-react-C7pctHW3.js";import{I as c}from"./input-
|
|
2
|
-
//# sourceMappingURL=Login-
|
|
1
|
+
import{j as e}from"./vendor-motion-Dwx3-JO5.js";import{r as a}from"./vendor-react-C7pctHW3.js";import{I as c}from"./input-CH3dmo9r.js";import{B as g}from"./button-CNasMlFE.js";import{u as f,c as h,a as b}from"./index-C3YiF4qv.js";import"./vendor-radix-3UdfCgs_.js";import"./index-CaqLZNof.js";import"./vendor-syntax-xZUI6Op9.js";function P(){const[n,m]=a.useState(""),[o,u]=a.useState(""),[l,r]=a.useState(""),[i,d]=a.useState(!1),x=f(s=>s.resolved);async function p(s){s.preventDefault(),r(""),d(!0);try{const t=await b.auth.login(n,o);if(t.type==="opaqueredirect"||t.status===0||t.ok||t.status===302){window.location.href="/";return}t.status===401?r("Invalid username or password."):r(`Login failed (${t.status}). Please try again.`)}catch{r("Unable to reach the server. Please try again.")}finally{d(!1)}}return e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center bg-background overflow-hidden",children:[e.jsx("div",{className:"pointer-events-none absolute inset-0",style:{background:"radial-gradient(ellipse 60% 50% at 50% 40%, rgba(0,212,255,0.06) 0%, transparent 70%)"}}),e.jsxs("div",{className:"relative z-10 w-full max-w-sm px-4",children:[e.jsxs("div",{className:h("rounded-2xl border border-border bg-card p-8 shadow-lg","mercury-glow-sm"),children:[e.jsxs("div",{className:"mb-6 flex flex-col items-center gap-3",children:[e.jsx("img",{src:x==="dark"?"/logo-dark.png":"/logo-light.png",alt:"Mercury",className:"w-16 h-16"}),e.jsx("h1",{className:"text-2xl font-bold tracking-tight text-foreground",children:"Welcome back"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sign in to Mercury"})]}),e.jsxs("form",{onSubmit:p,className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{htmlFor:"username",className:"text-xs font-medium text-muted-foreground",children:"Username"}),e.jsx(c,{id:"username",type:"text",autoComplete:"username",autoFocus:!0,required:!0,value:n,onChange:s=>m(s.target.value),placeholder:"Enter username"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{htmlFor:"password",className:"text-xs font-medium text-muted-foreground",children:"Password"}),e.jsx(c,{id:"password",type:"password",autoComplete:"current-password",required:!0,value:o,onChange:s=>u(s.target.value),placeholder:"Enter password"})]}),l&&e.jsx("p",{className:"text-sm text-destructive leading-snug",children:l}),e.jsx(g,{type:"submit",size:"lg",disabled:i,className:"mt-1 w-full font-semibold",children:i?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"Signing in…"]}):"Sign in"})]})]}),e.jsx("p",{className:"mt-6 text-center text-xs text-muted-foreground/60",children:"Mercury Agent Dashboard"})]})]})}export{P as LoginPage};
|
|
2
|
+
//# sourceMappingURL=Login-BP5524pC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login-
|
|
1
|
+
{"version":3,"file":"Login-BP5524pC.js","sources":["../../src/pages/Login.tsx"],"sourcesContent":["import { useState, type FormEvent } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { useThemeStore } from \"@/stores/theme\";\nimport api from \"@/lib/api\";\n\nexport function LoginPage() {\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const resolved = useThemeStore((s) => s.resolved);\n\n async function handleSubmit(e: FormEvent) {\n e.preventDefault();\n setError(\"\");\n setLoading(true);\n\n try {\n const res = await api.auth.login(username, password);\n\n if (res.type === \"opaqueredirect\" || res.status === 0 || res.ok || res.status === 302) {\n window.location.href = \"/\";\n return;\n }\n\n if (res.status === 401) {\n setError(\"Invalid username or password.\");\n } else {\n setError(`Login failed (${res.status}). Please try again.`);\n }\n } catch {\n setError(\"Unable to reach the server. Please try again.\");\n } finally {\n setLoading(false);\n }\n }\n\n return (\n <div className=\"relative flex min-h-screen items-center justify-center bg-background overflow-hidden\">\n {/* Background glow */}\n <div\n className=\"pointer-events-none absolute inset-0\"\n style={{\n background:\n \"radial-gradient(ellipse 60% 50% at 50% 40%, rgba(0,212,255,0.06) 0%, transparent 70%)\",\n }}\n />\n\n <div className=\"relative z-10 w-full max-w-sm px-4\">\n <div\n className={cn(\n \"rounded-2xl border border-border bg-card p-8 shadow-lg\",\n \"mercury-glow-sm\"\n )}\n >\n {/* Logo */}\n <div className=\"mb-6 flex flex-col items-center gap-3\">\n <img\n src={resolved === \"dark\" ? \"/logo-dark.png\" : \"/logo-light.png\"}\n alt=\"Mercury\"\n className=\"w-16 h-16\"\n />\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">\n Welcome back\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n Sign in to Mercury\n </p>\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-1.5\">\n <label\n htmlFor=\"username\"\n className=\"text-xs font-medium text-muted-foreground\"\n >\n Username\n </label>\n <Input\n id=\"username\"\n type=\"text\"\n autoComplete=\"username\"\n autoFocus\n required\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n placeholder=\"Enter username\"\n />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label\n htmlFor=\"password\"\n className=\"text-xs font-medium text-muted-foreground\"\n >\n Password\n </label>\n <Input\n id=\"password\"\n type=\"password\"\n autoComplete=\"current-password\"\n required\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder=\"Enter password\"\n />\n </div>\n\n {error && (\n <p className=\"text-sm text-destructive leading-snug\">{error}</p>\n )}\n\n <Button\n type=\"submit\"\n size=\"lg\"\n disabled={loading}\n className=\"mt-1 w-full font-semibold\"\n >\n {loading ? (\n <span className=\"flex items-center gap-2\">\n <span className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Signing in…\n </span>\n ) : (\n \"Sign in\"\n )}\n </Button>\n </form>\n </div>\n\n <p className=\"mt-6 text-center text-xs text-muted-foreground/60\">\n Mercury Agent Dashboard\n </p>\n </div>\n </div>\n );\n}\n"],"names":["LoginPage","username","setUsername","useState","password","setPassword","error","setError","loading","setLoading","resolved","useThemeStore","handleSubmit","e","res","api","jsxs","jsx","cn","Input","Button"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{e as g,q as x,a as S,c as f}from"./index-
|
|
1
|
+
import{e as g,q as x,a as S,c as f}from"./index-C3YiF4qv.js";import{r as d}from"./vendor-react-C7pctHW3.js";import{j as t}from"./vendor-motion-Dwx3-JO5.js";import{a as w}from"./chevron-down-CB9J_vvZ.js";import{h as v}from"./vendor-syntax-xZUI6Op9.js";import{M as y,r as C}from"./vendor-markdown-DwTbvico.js";/**
|
|
2
2
|
* @license lucide-react v0.511.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -19,4 +19,4 @@ import{e as g,q as x,a as S,c as f}from"./index-BhxU0YlT.js";import{r as d}from"
|
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
21
|
*/const z=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],J=g("folder",z),u="mercury-chat-active-thread";function R(){return typeof window>"u"?null:localStorage.getItem(u)}const E=x(o=>({messages:[],streamingText:"",isStreaming:!1,waiting:!1,threads:[],activeThreadId:R(),provider:"",model:"",totalSteps:0,completedSteps:0,currentStepTool:"",settings:null,addMessage:e=>o(i=>({messages:[...i.messages,e]})),updateLastAssistantMessage:e=>o(i=>{const l=[...i.messages];for(let a=l.length-1;a>=0;a--)if(l[a].role==="assistant"){l[a]={...l[a],content:e};break}return{messages:l}}),appendStreamingText:e=>o(i=>({streamingText:i.streamingText+e,isStreaming:!0})),clearStreaming:()=>o({streamingText:"",isStreaming:!1}),setStreaming:e=>o({isStreaming:e}),setWaiting:e=>o({waiting:e}),setThreads:e=>o({threads:e}),setActiveThread:e=>{e?localStorage.setItem(u,e):localStorage.removeItem(u),o({activeThreadId:e})},setProvider:e=>o({provider:e}),setModel:e=>o({model:e}),setSteps:(e,i,l)=>o({totalSteps:e,completedSteps:i,currentStepTool:l}),resetSteps:()=>o({totalSteps:0,completedSteps:0,currentStepTool:""}),setSettings:e=>o({settings:e}),clearMessages:()=>o({messages:[],streamingText:"",isStreaming:!1}),threadVersion:0,bumpThreadVersion:()=>o(e=>({threadVersion:e.threadVersion+1}))}));function U(){const[o,e]=d.useState(!1),[i,l]=d.useState(!1),a=d.useRef(null),h=d.useRef(null),r=E,p=d.useCallback(()=>{a.current&&a.current.close();const s=new EventSource("/api/chat/events");a.current=s,s.onopen=()=>{e(!0),l(!1)},s.onerror=()=>{e(!1),s.close(),a.current=null,l(!0),h.current=setTimeout(()=>{p()},3e3)},s.addEventListener("connected",c=>{try{const n=JSON.parse(c.data);r.getState().setProvider(n.provider??""),r.getState().setModel(n.model??"")}catch{}}),s.addEventListener("thinking",()=>{r.getState().setWaiting(!0)}),s.addEventListener("provider",c=>{try{const n=JSON.parse(c.data);r.getState().setProvider(n.provider??""),r.getState().setModel(n.model??"")}catch{}}),s.addEventListener("step_start",c=>{try{const n=JSON.parse(c.data);r.getState().setSteps(n.totalSteps??0,n.stepNumber??0,n.tool??"")}catch{}}),s.addEventListener("step_done",c=>{try{const n=JSON.parse(c.data);r.getState().setSteps(n.totalSteps??0,n.stepNumber??0,n.tool??"")}catch{}}),s.addEventListener("text_delta",c=>{try{const n=JSON.parse(c.data);r.getState().setWaiting(!1),r.getState().appendStreamingText(n.text??"")}catch{}}),s.addEventListener("text_done",c=>{try{const n=c.data,m=JSON.parse(n),b=m.fullText??m.text??n;r.getState().clearStreaming(),r.getState().setWaiting(!1),r.getState().resetSteps(),r.getState().addMessage({id:crypto.randomUUID(),role:"assistant",content:b,timestamp:new Date().toISOString()});const k=r.getState().activeThreadId;k&&S.chat.threads.addMessage(k,"assistant",b).then(()=>r.getState().bumpThreadVersion()).catch(()=>{})}catch{r.getState().clearStreaming(),r.getState().setWaiting(!1),r.getState().resetSteps()}}),s.addEventListener("permission_request",c=>{try{const n=JSON.parse(c.data);r.getState().addMessage({id:n.id??crypto.randomUUID(),role:"system",content:JSON.stringify(n),timestamp:new Date().toISOString()})}catch{}}),s.addEventListener("permission_continue",()=>{}),s.addEventListener("permission_mode",()=>{}),s.addEventListener("loop_warning",()=>{}),s.addEventListener("error",c=>{const n=c.data??"An error occurred";r.getState().setWaiting(!1),r.getState().clearStreaming(),r.getState().resetSteps(),r.getState().addMessage({id:crypto.randomUUID(),role:"system",content:n,timestamp:new Date().toISOString()})})},[r]);return d.useEffect(()=>(p(),()=>{h.current&&clearTimeout(h.current),a.current&&(a.current.close(),a.current=null)}),[p]),{connected:o,reconnecting:i}}const L={'code[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{background:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)",fontFamily:'"Fira Code", "Fira Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace',direction:"ltr",textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",lineHeight:"1.5",MozTabSize:"2",OTabSize:"2",tabSize:"2",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",borderRadius:"0.3em"},'code[class*="language-"]::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::-moz-selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"]::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'code[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},'pre[class*="language-"] *::selection':{background:"hsl(220, 13%, 28%)",color:"inherit",textShadow:"none"},':not(pre) > code[class*="language-"]':{padding:"0.2em 0.3em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},prolog:{color:"hsl(220, 10%, 40%)"},cdata:{color:"hsl(220, 10%, 40%)"},doctype:{color:"hsl(220, 14%, 71%)"},punctuation:{color:"hsl(220, 14%, 71%)"},entity:{color:"hsl(220, 14%, 71%)",cursor:"help"},"attr-name":{color:"hsl(29, 54%, 61%)"},"class-name":{color:"hsl(29, 54%, 61%)"},boolean:{color:"hsl(29, 54%, 61%)"},constant:{color:"hsl(29, 54%, 61%)"},number:{color:"hsl(29, 54%, 61%)"},atrule:{color:"hsl(29, 54%, 61%)"},keyword:{color:"hsl(286, 60%, 67%)"},property:{color:"hsl(355, 65%, 65%)"},tag:{color:"hsl(355, 65%, 65%)"},symbol:{color:"hsl(355, 65%, 65%)"},deleted:{color:"hsl(355, 65%, 65%)"},important:{color:"hsl(355, 65%, 65%)"},selector:{color:"hsl(95, 38%, 62%)"},string:{color:"hsl(95, 38%, 62%)"},char:{color:"hsl(95, 38%, 62%)"},builtin:{color:"hsl(95, 38%, 62%)"},inserted:{color:"hsl(95, 38%, 62%)"},regex:{color:"hsl(95, 38%, 62%)"},"attr-value":{color:"hsl(95, 38%, 62%)"},"attr-value > .token.punctuation":{color:"hsl(95, 38%, 62%)"},variable:{color:"hsl(207, 82%, 66%)"},operator:{color:"hsl(207, 82%, 66%)"},function:{color:"hsl(207, 82%, 66%)"},url:{color:"hsl(187, 47%, 55%)"},"attr-value > .token.punctuation.attr-equals":{color:"hsl(220, 14%, 71%)"},"special-attr > .token.attr-value > .token.value.css":{color:"hsl(220, 14%, 71%)"},".language-css .token.selector":{color:"hsl(355, 65%, 65%)"},".language-css .token.property":{color:"hsl(220, 14%, 71%)"},".language-css .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.function":{color:"hsl(187, 47%, 55%)"},".language-css .token.url > .token.string.url":{color:"hsl(95, 38%, 62%)"},".language-css .token.important":{color:"hsl(286, 60%, 67%)"},".language-css .token.atrule .token.rule":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.operator":{color:"hsl(286, 60%, 67%)"},".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation":{color:"hsl(5, 48%, 51%)"},".language-json .token.operator":{color:"hsl(220, 14%, 71%)"},".language-json .token.null.keyword":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.url":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.operator":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url-reference.url > .token.string":{color:"hsl(220, 14%, 71%)"},".language-markdown .token.url > .token.content":{color:"hsl(207, 82%, 66%)"},".language-markdown .token.url > .token.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.url-reference.url":{color:"hsl(187, 47%, 55%)"},".language-markdown .token.blockquote.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.hr.punctuation":{color:"hsl(220, 10%, 40%)",fontStyle:"italic"},".language-markdown .token.code-snippet":{color:"hsl(95, 38%, 62%)"},".language-markdown .token.bold .token.content":{color:"hsl(29, 54%, 61%)"},".language-markdown .token.italic .token.content":{color:"hsl(286, 60%, 67%)"},".language-markdown .token.strike .token.content":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.strike .token.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.list.punctuation":{color:"hsl(355, 65%, 65%)"},".language-markdown .token.title.important > .token.punctuation":{color:"hsl(355, 65%, 65%)"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"},namespace:{Opacity:"0.8"},"token.tab:not(:empty):before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.cr:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.lf:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"token.space:before":{color:"hsla(220, 14%, 71%, 0.15)",textShadow:"none"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item":{marginRight:"0.4em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 9%, 55%)",padding:"0.1em 0.4em",borderRadius:"0.3em"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus":{background:"hsl(220, 13%, 28%)",color:"hsl(220, 14%, 71%)"},".line-highlight.line-highlight":{background:"hsla(220, 100%, 80%, 0.04)"},".line-highlight.line-highlight:before":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},".line-highlight.line-highlight[data-end]:after":{background:"hsl(220, 13%, 26%)",color:"hsl(220, 14%, 71%)",padding:"0.1em 0.6em",borderRadius:"0.3em",boxShadow:"0 2px 0 0 rgba(0, 0, 0, 0.2)"},"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before":{backgroundColor:"hsla(220, 100%, 80%, 0.04)"},".line-numbers.line-numbers .line-numbers-rows":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".command-line .command-line-prompt":{borderRightColor:"hsla(220, 14%, 71%, 0.15)"},".line-numbers .line-numbers-rows > span:before":{color:"hsl(220, 14%, 45%)"},".command-line .command-line-prompt > span:before":{color:"hsl(220, 14%, 45%)"},".rainbow-braces .token.token.punctuation.brace-level-1":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-5":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-9":{color:"hsl(355, 65%, 65%)"},".rainbow-braces .token.token.punctuation.brace-level-2":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-6":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-10":{color:"hsl(95, 38%, 62%)"},".rainbow-braces .token.token.punctuation.brace-level-3":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-7":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-11":{color:"hsl(207, 82%, 66%)"},".rainbow-braces .token.token.punctuation.brace-level-4":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-8":{color:"hsl(286, 60%, 67%)"},".rainbow-braces .token.token.punctuation.brace-level-12":{color:"hsl(286, 60%, 67%)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)":{backgroundColor:"hsla(353, 100%, 66%, 0.15)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection":{backgroundColor:"hsla(353, 95%, 66%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)":{backgroundColor:"hsla(137, 100%, 55%, 0.15)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection":{backgroundColor:"hsla(135, 73%, 55%, 0.25)"},".prism-previewer.prism-previewer:before":{borderColor:"hsl(224, 13%, 17%)"},".prism-previewer-gradient.prism-previewer-gradient div":{borderColor:"hsl(224, 13%, 17%)",borderRadius:"0.3em"},".prism-previewer-color.prism-previewer-color:before":{borderRadius:"0.3em"},".prism-previewer-easing.prism-previewer-easing:before":{borderRadius:"0.3em"},".prism-previewer.prism-previewer:after":{borderTopColor:"hsl(224, 13%, 17%)"},".prism-previewer-flipped.prism-previewer-flipped.after":{borderBottomColor:"hsl(224, 13%, 17%)"},".prism-previewer-angle.prism-previewer-angle:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-time.prism-previewer-time:before":{background:"hsl(219, 13%, 22%)"},".prism-previewer-easing.prism-previewer-easing":{background:"hsl(219, 13%, 22%)"},".prism-previewer-angle.prism-previewer-angle circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-time.prism-previewer-time circle":{stroke:"hsl(220, 14%, 71%)",strokeOpacity:"1"},".prism-previewer-easing.prism-previewer-easing circle":{stroke:"hsl(220, 14%, 71%)",fill:"transparent"},".prism-previewer-easing.prism-previewer-easing path":{stroke:"hsl(220, 14%, 71%)"},".prism-previewer-easing.prism-previewer-easing line":{stroke:"hsl(220, 14%, 71%)"}};function _({code:o,language:e}){const[i,l]=d.useState(!1),a=d.useCallback(()=>{navigator.clipboard.writeText(o),l(!0),setTimeout(()=>l(!1),2e3)},[o]),h=e||"text";return t.jsxs("div",{className:"group relative my-3 overflow-hidden rounded-lg border border-border bg-[#282c34]",children:[t.jsxs("div",{className:"flex items-center justify-between border-b border-white/10 px-4 py-1.5 text-xs",children:[t.jsx("span",{className:"font-mono text-muted-foreground",children:h}),t.jsx("button",{onClick:a,className:f("inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors","text-muted-foreground hover:bg-white/10 hover:text-foreground"),children:i?t.jsxs(t.Fragment,{children:[t.jsx(w,{className:"h-3.5 w-3.5 text-emerald-400"}),t.jsx("span",{className:"text-emerald-400",children:"Copied!"})]}):t.jsxs(t.Fragment,{children:[t.jsx(M,{className:"h-3.5 w-3.5"}),t.jsx("span",{children:"Copy"})]})})]}),t.jsx(v,{language:e||"text",style:L,customStyle:{margin:0,padding:"1rem",background:"transparent",fontSize:"0.8125rem",lineHeight:"1.6"},showLineNumbers:!1,wrapLongLines:!1,children:o})]})}const O={code({className:o,children:e,...i}){const l=/language-(\w+)/.exec(o||""),a=String(e).replace(/\n$/,"");return l?t.jsx(_,{code:a,language:l[1]}):t.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-[0.8125rem] text-foreground",...i,children:e})},pre({children:o}){return t.jsx(t.Fragment,{children:o})},a({href:o,children:e,...i}){return t.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-mercury-500 underline decoration-mercury-500/40 underline-offset-2 transition-colors hover:text-mercury-400 hover:decoration-mercury-400",...i,children:e})},h1({children:o,...e}){return t.jsx("h1",{className:"mb-2 mt-4 text-lg font-semibold tracking-tight",...e,children:o})},h2({children:o,...e}){return t.jsx("h2",{className:"mb-2 mt-3 text-base font-semibold tracking-tight",...e,children:o})},h3({children:o,...e}){return t.jsx("h3",{className:"mb-1.5 mt-2.5 text-sm font-semibold",...e,children:o})},p({children:o,...e}){return t.jsx("p",{className:"mb-2 leading-relaxed last:mb-0",...e,children:o})},ul({children:o,...e}){return t.jsx("ul",{className:"mb-2 ml-4 list-disc space-y-1 last:mb-0",...e,children:o})},ol({children:o,...e}){return t.jsx("ol",{className:"mb-2 ml-4 list-decimal space-y-1 last:mb-0",...e,children:o})},li({children:o,...e}){return t.jsx("li",{className:"leading-relaxed",...e,children:o})},blockquote({children:o,...e}){return t.jsx("blockquote",{className:"my-2 border-l-2 border-mercury-500/50 pl-3 italic text-muted-foreground",...e,children:o})},table({children:o,...e}){return t.jsx("div",{className:"my-3 overflow-x-auto rounded-lg border border-border",children:t.jsx("table",{className:"w-full text-sm",...e,children:o})})},thead({children:o,...e}){return t.jsx("thead",{className:"border-b border-border bg-muted/50",...e,children:o})},tr({children:o,...e}){return t.jsx("tr",{className:"border-b border-border/50 transition-colors hover:bg-muted/30",...e,children:o})},th({children:o,...e}){return t.jsx("th",{className:"px-3 py-2 text-left font-medium",...e,children:o})},td({children:o,...e}){return t.jsx("td",{className:"px-3 py-2",...e,children:o})},hr(){return t.jsx("hr",{className:"my-4 border-border"})}};function B({content:o,className:e}){return t.jsx("div",{className:f("text-sm",e),children:t.jsx(y,{remarkPlugins:[C],components:O,children:o})})}export{q as A,M as C,J as F,B as M,U as a,W as b,L as o,E as u};
|
|
22
|
-
//# sourceMappingURL=MarkdownRenderer-
|
|
22
|
+
//# sourceMappingURL=MarkdownRenderer-B9KGVD0X.js.map
|
package/dist/web/ui/assets/{MarkdownRenderer-Dvh1jwyj.js.map → MarkdownRenderer-B9KGVD0X.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownRenderer-Dvh1jwyj.js","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../node_modules/lucide-react/dist/esm/icons/copy.js","../../node_modules/lucide-react/dist/esm/icons/folder.js","../../src/stores/chat.ts","../../src/hooks/useSSE.ts","../../node_modules/react-syntax-highlighter/dist/esm/styles/prism/one-dark.js","../../src/components/chat/CodeBlock.tsx","../../src/components/chat/MarkdownRenderer.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"arrow-down\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m5 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n];\nconst ArrowUp = createLucideIcon(\"arrow-up\", __iconNode);\n\nexport { __iconNode, ArrowUp as default };\n//# sourceMappingURL=arrow-up.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.js.map\n","import { create } from \"zustand\";\nimport type { ChatMessage, ChatThread, ChatSettings } from \"@/lib/api\";\n\nexport interface ChatState {\n // Messages\n messages: ChatMessage[];\n streamingText: string;\n isStreaming: boolean;\n waiting: boolean;\n\n // Threads\n threads: ChatThread[];\n activeThreadId: string | null;\n\n // Provider info\n provider: string;\n model: string;\n\n // Tool execution\n totalSteps: number;\n completedSteps: number;\n currentStepTool: string;\n\n // Settings\n settings: ChatSettings | null;\n\n // Actions\n addMessage: (msg: ChatMessage) => void;\n updateLastAssistantMessage: (content: string) => void;\n appendStreamingText: (text: string) => void;\n clearStreaming: () => void;\n setStreaming: (streaming: boolean) => void;\n setWaiting: (waiting: boolean) => void;\n setThreads: (threads: ChatThread[]) => void;\n setActiveThread: (id: string | null) => void;\n setProvider: (provider: string) => void;\n setModel: (model: string) => void;\n setSteps: (total: number, completed: number, tool: string) => void;\n resetSteps: () => void;\n setSettings: (settings: ChatSettings) => void;\n clearMessages: () => void;\n threadVersion: number;\n bumpThreadVersion: () => void;\n}\n\nconst STORAGE_KEY = \"mercury-chat-active-thread\";\n\nfunction getStoredThreadId(): string | null {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(STORAGE_KEY);\n}\n\nexport const useChatStore = create<ChatState>((set) => ({\n messages: [],\n streamingText: \"\",\n isStreaming: false,\n waiting: false,\n\n threads: [],\n activeThreadId: getStoredThreadId(),\n\n provider: \"\",\n model: \"\",\n\n totalSteps: 0,\n completedSteps: 0,\n currentStepTool: \"\",\n\n settings: null,\n\n addMessage: (msg) =>\n set((state) => ({ messages: [...state.messages, msg] })),\n\n updateLastAssistantMessage: (content) =>\n set((state) => {\n const msgs = [...state.messages];\n for (let i = msgs.length - 1; i >= 0; i--) {\n if (msgs[i].role === \"assistant\") {\n msgs[i] = { ...msgs[i], content };\n break;\n }\n }\n return { messages: msgs };\n }),\n\n appendStreamingText: (text) =>\n set((state) => ({\n streamingText: state.streamingText + text,\n isStreaming: true,\n })),\n\n clearStreaming: () => set({ streamingText: \"\", isStreaming: false }),\n\n setStreaming: (streaming) => set({ isStreaming: streaming }),\n\n setWaiting: (waiting) => set({ waiting }),\n\n setThreads: (threads) => set({ threads }),\n\n setActiveThread: (id) => {\n if (id) {\n localStorage.setItem(STORAGE_KEY, id);\n } else {\n localStorage.removeItem(STORAGE_KEY);\n }\n set({ activeThreadId: id });\n },\n\n setProvider: (provider) => set({ provider }),\n\n setModel: (model) => set({ model }),\n\n setSteps: (total, completed, tool) =>\n set({ totalSteps: total, completedSteps: completed, currentStepTool: tool }),\n\n resetSteps: () =>\n set({ totalSteps: 0, completedSteps: 0, currentStepTool: \"\" }),\n\n setSettings: (settings) => set({ settings }),\n\n clearMessages: () => set({ messages: [], streamingText: \"\", isStreaming: false }),\n\n threadVersion: 0,\n bumpThreadVersion: () => set((state) => ({ threadVersion: state.threadVersion + 1 })),\n}));\n","import { useEffect, useRef, useCallback, useState } from \"react\";\nimport { useChatStore } from \"@/stores/chat\";\nimport api from \"@/lib/api\";\n\ninterface SSEResult {\n connected: boolean;\n reconnecting: boolean;\n}\n\nexport function useSSE(): SSEResult {\n const [connected, setConnected] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const esRef = useRef<EventSource | null>(null);\n const reconnectTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const store = useChatStore;\n\n const connect = useCallback(() => {\n if (esRef.current) {\n esRef.current.close();\n }\n\n const es = new EventSource(\"/api/chat/events\");\n esRef.current = es;\n\n es.onopen = () => {\n setConnected(true);\n setReconnecting(false);\n };\n\n es.onerror = () => {\n setConnected(false);\n es.close();\n esRef.current = null;\n\n setReconnecting(true);\n reconnectTimer.current = setTimeout(() => {\n connect();\n }, 3000);\n };\n\n es.addEventListener(\"connected\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setProvider(data.provider ?? \"\");\n store.getState().setModel(data.model ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"thinking\", () => {\n store.getState().setWaiting(true);\n });\n\n es.addEventListener(\"provider\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setProvider(data.provider ?? \"\");\n store.getState().setModel(data.model ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"step_start\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setSteps(\n data.totalSteps ?? 0,\n data.stepNumber ?? 0,\n data.tool ?? \"\"\n );\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"step_done\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setSteps(\n data.totalSteps ?? 0,\n data.stepNumber ?? 0,\n data.tool ?? \"\"\n );\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"text_delta\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setWaiting(false);\n store.getState().appendStreamingText(data.text ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"text_done\", (e) => {\n try {\n const raw = (e as MessageEvent).data;\n const data = JSON.parse(raw);\n const fullText = data.fullText ?? data.text ?? raw;\n store.getState().clearStreaming();\n store.getState().setWaiting(false);\n store.getState().resetSteps();\n store.getState().addMessage({\n id: crypto.randomUUID(),\n role: \"assistant\",\n content: fullText,\n timestamp: new Date().toISOString(),\n });\n\n // Persist assistant message to thread\n const threadId = store.getState().activeThreadId;\n if (threadId) {\n api.chat.threads.addMessage(threadId, \"assistant\", fullText)\n .then(() => store.getState().bumpThreadVersion())\n .catch(() => {});\n }\n } catch {\n // Always reset busy state even if parsing fails\n store.getState().clearStreaming();\n store.getState().setWaiting(false);\n store.getState().resetSteps();\n }\n });\n\n es.addEventListener(\"permission_request\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().addMessage({\n id: data.id ?? crypto.randomUUID(),\n role: \"system\",\n content: JSON.stringify(data),\n timestamp: new Date().toISOString(),\n });\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"permission_continue\", () => {\n // Permission resolved, no special action needed\n });\n\n es.addEventListener(\"permission_mode\", () => {\n // Informational, no action needed\n });\n\n es.addEventListener(\"loop_warning\", () => {\n // Could surface a warning in the future\n });\n\n es.addEventListener(\"error\", (e) => {\n const msg = (e as MessageEvent).data ?? \"An error occurred\";\n store.getState().setWaiting(false);\n store.getState().clearStreaming();\n store.getState().resetSteps();\n store.getState().addMessage({\n id: crypto.randomUUID(),\n role: \"system\",\n content: msg,\n timestamp: new Date().toISOString(),\n });\n });\n }, [store]);\n\n useEffect(() => {\n connect();\n\n return () => {\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n }\n if (esRef.current) {\n esRef.current.close();\n esRef.current = null;\n }\n };\n }, [connect]);\n\n return { connected, reconnecting };\n}\n","export default {\n \"code[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\",\n \"padding\": \"1em\",\n \"margin\": \"0.5em 0\",\n \"overflow\": \"auto\",\n \"borderRadius\": \"0.3em\"\n },\n \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"]::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \":not(pre) > code[class*=\\\"language-\\\"]\": {\n \"padding\": \"0.2em 0.3em\",\n \"borderRadius\": \"0.3em\",\n \"whiteSpace\": \"normal\"\n },\n \"comment\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \"prolog\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"cdata\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"doctype\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"punctuation\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"entity\": {\n \"color\": \"hsl(220, 14%, 71%)\",\n \"cursor\": \"help\"\n },\n \"attr-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"class-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"boolean\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"constant\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"number\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"atrule\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"keyword\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"property\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"tag\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"symbol\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"deleted\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"important\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"selector\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"string\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"char\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"builtin\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"inserted\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"regex\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value > .token.punctuation\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"variable\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"operator\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"function\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \"attr-value > .token.punctuation.attr-equals\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"special-attr > .token.attr-value > .token.value.css\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.selector\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-css .token.property\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.string.url\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-css .token.important\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-css .token.atrule .token.rule\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.operator\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation\": {\n \"color\": \"hsl(5, 48%, 51%)\"\n },\n \".language-json .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-json .token.null.keyword\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.url\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url-reference.url > .token.string\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.content\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".language-markdown .token.url > .token.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.url-reference.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.blockquote.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.hr.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.code-snippet\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-markdown .token.bold .token.content\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.italic .token.content\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-markdown .token.strike .token.content\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.strike .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.list.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.title.important > .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"bold\": {\n \"fontWeight\": \"bold\"\n },\n \"italic\": {\n \"fontStyle\": \"italic\"\n },\n \"namespace\": {\n \"Opacity\": \"0.8\"\n },\n \"token.tab:not(:empty):before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.cr:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.lf:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.space:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item\": {\n \"marginRight\": \"0.4em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".line-highlight.line-highlight\": {\n \"background\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-highlight.line-highlight:before\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \".line-highlight.line-highlight[data-end]:after\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before\": {\n \"backgroundColor\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-numbers.line-numbers .line-numbers-rows\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".command-line .command-line-prompt\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".line-numbers .line-numbers-rows > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".command-line .command-line-prompt > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-1\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-5\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-9\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-2\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-6\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-10\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-3\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-7\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-11\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-4\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-8\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-12\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \".prism-previewer.prism-previewer:before\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-gradient.prism-previewer-gradient div\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\",\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-color.prism-previewer-color:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-easing.prism-previewer-easing:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer.prism-previewer:after\": {\n \"borderTopColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-flipped.prism-previewer-flipped.after\": {\n \"borderBottomColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-time.prism-previewer-time:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-time.prism-previewer-time circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-easing.prism-previewer-easing circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"fill\": \"transparent\"\n },\n \".prism-previewer-easing.prism-previewer-easing path\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing line\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n }\n};","import { useState, useCallback } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/esm/styles/prism\";\nimport { Check, Copy } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n}\n\nexport function CodeBlock({ code, language }: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(() => {\n navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [code]);\n\n const displayLang = language || \"text\";\n\n return (\n <div className=\"group relative my-3 overflow-hidden rounded-lg border border-border bg-[#282c34]\">\n {/* Header bar */}\n <div className=\"flex items-center justify-between border-b border-white/10 px-4 py-1.5 text-xs\">\n <span className=\"font-mono text-muted-foreground\">{displayLang}</span>\n <button\n onClick={handleCopy}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors\",\n \"text-muted-foreground hover:bg-white/10 hover:text-foreground\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"h-3.5 w-3.5 text-emerald-400\" />\n <span className=\"text-emerald-400\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"h-3.5 w-3.5\" />\n <span>Copy</span>\n </>\n )}\n </button>\n </div>\n\n {/* Code */}\n <SyntaxHighlighter\n language={language || \"text\"}\n style={oneDark}\n customStyle={{\n margin: 0,\n padding: \"1rem\",\n background: \"transparent\",\n fontSize: \"0.8125rem\",\n lineHeight: \"1.6\",\n }}\n showLineNumbers={false}\n wrapLongLines={false}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n );\n}\n","import ReactMarkdown, { type Components } from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { cn } from \"@/lib/utils\";\n\ninterface MarkdownRendererProps {\n content: string;\n className?: string;\n}\n\nconst components: Components = {\n code({ className, children, ...props }) {\n const match = /language-(\\w+)/.exec(className || \"\");\n const codeString = String(children).replace(/\\n$/, \"\");\n\n // Fenced code blocks get rendered by CodeBlock\n if (match) {\n return <CodeBlock code={codeString} language={match[1]} />;\n }\n\n // Inline code\n return (\n <code\n className=\"rounded bg-muted px-1.5 py-0.5 font-mono text-[0.8125rem] text-foreground\"\n {...props}\n >\n {children}\n </code>\n );\n },\n\n pre({ children }) {\n // If pre wraps a CodeBlock, just pass through\n return <>{children}</>;\n },\n\n a({ href, children, ...props }) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-mercury-500 underline decoration-mercury-500/40 underline-offset-2 transition-colors hover:text-mercury-400 hover:decoration-mercury-400\"\n {...props}\n >\n {children}\n </a>\n );\n },\n\n h1({ children, ...props }) {\n return (\n <h1 className=\"mb-2 mt-4 text-lg font-semibold tracking-tight\" {...props}>\n {children}\n </h1>\n );\n },\n h2({ children, ...props }) {\n return (\n <h2 className=\"mb-2 mt-3 text-base font-semibold tracking-tight\" {...props}>\n {children}\n </h2>\n );\n },\n h3({ children, ...props }) {\n return (\n <h3 className=\"mb-1.5 mt-2.5 text-sm font-semibold\" {...props}>\n {children}\n </h3>\n );\n },\n\n p({ children, ...props }) {\n return (\n <p className=\"mb-2 leading-relaxed last:mb-0\" {...props}>\n {children}\n </p>\n );\n },\n\n ul({ children, ...props }) {\n return (\n <ul className=\"mb-2 ml-4 list-disc space-y-1 last:mb-0\" {...props}>\n {children}\n </ul>\n );\n },\n ol({ children, ...props }) {\n return (\n <ol className=\"mb-2 ml-4 list-decimal space-y-1 last:mb-0\" {...props}>\n {children}\n </ol>\n );\n },\n li({ children, ...props }) {\n return (\n <li className=\"leading-relaxed\" {...props}>\n {children}\n </li>\n );\n },\n\n blockquote({ children, ...props }) {\n return (\n <blockquote\n className=\"my-2 border-l-2 border-mercury-500/50 pl-3 italic text-muted-foreground\"\n {...props}\n >\n {children}\n </blockquote>\n );\n },\n\n table({ children, ...props }) {\n return (\n <div className=\"my-3 overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full text-sm\" {...props}>\n {children}\n </table>\n </div>\n );\n },\n thead({ children, ...props }) {\n return (\n <thead className=\"border-b border-border bg-muted/50\" {...props}>\n {children}\n </thead>\n );\n },\n tr({ children, ...props }) {\n return (\n <tr className=\"border-b border-border/50 transition-colors hover:bg-muted/30\" {...props}>\n {children}\n </tr>\n );\n },\n th({ children, ...props }) {\n return (\n <th className=\"px-3 py-2 text-left font-medium\" {...props}>\n {children}\n </th>\n );\n },\n td({ children, ...props }) {\n return (\n <td className=\"px-3 py-2\" {...props}>\n {children}\n </td>\n );\n },\n\n hr() {\n return <hr className=\"my-4 border-border\" />;\n },\n};\n\nexport function MarkdownRenderer({ content, className }: MarkdownRendererProps) {\n return (\n <div className={cn(\"text-sm\", className)}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>\n {content}\n </ReactMarkdown>\n </div>\n );\n}\n"],"names":["__iconNode","ArrowDown","createLucideIcon","ArrowUp","Copy","Folder","STORAGE_KEY","getStoredThreadId","useChatStore","create","set","msg","state","content","msgs","i","text","streaming","waiting","threads","id","provider","model","total","completed","tool","settings","useSSE","connected","setConnected","useState","reconnecting","setReconnecting","esRef","useRef","reconnectTimer","store","connect","useCallback","es","e","data","raw","fullText","threadId","api","useEffect","oneDark","CodeBlock","code","language","copied","setCopied","handleCopy","displayLang","jsxs","jsx","cn","Fragment","Check","SyntaxHighlighter","components","className","children","props","match","codeString","href","MarkdownRenderer","ReactMarkdown","remarkGfm"],"mappings":"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mBACb,EACE,QAAW,CACT,MAAS,mBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,QAAW,CACT,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,IAAO,CACL,MAAS,oBACb,EACE,OAAU,CACR,MAAS,oBACb,EACE,QAAW,CACT,MAAS,oBACb,EACE,UAAa,CACX,MAAS,oBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,KAAQ,CACN,MAAS,mBACb,EACE,QAAW,CACT,MAAS,mBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,MAAS,CACP,MAAS,mBACb,EACE,aAAc,CACZ,MAAS,mBACb,EACE,kCAAmC,CACjC,MAAS,mBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,IAAO,CACL,MAAS,oBACb,EACE,8CAA+C,CAC7C,MAAS,oBACb,EACE,sDAAuD,CACrD,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,+CAAgD,CAC9C,MAAS,mBACb,EACE,iCAAkC,CAChC,MAAS,oBACb,EACE,0CAA2C,CACzC,MAAS,oBACb,EACE,uCAAwC,CACtC,MAAS,oBACb,EACE,oHAAqH,CACnH,MAAS,kBACb,EACE,iCAAkC,CAChC,MAAS,oBACb,EACE,qCAAsC,CACpC,MAAS,mBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,8DAA+D,CAC7D,MAAS,oBACb,EACE,iDAAkD,CAChD,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,8CAA+C,CAC7C,MAAS,oBACb,EACE,mDAAoD,CAClD,MAAS,qBACT,UAAa,QACjB,EACE,2CAA4C,CAC1C,MAAS,qBACT,UAAa,QACjB,EACE,yCAA0C,CACxC,MAAS,mBACb,EACE,gDAAiD,CAC/C,MAAS,mBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,sDAAuD,CACrD,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,iEAAkE,CAChE,MAAS,oBACb,EACE,KAAQ,CACN,WAAc,MAClB,EACE,OAAU,CACR,UAAa,QACjB,EACE,UAAa,CACX,QAAW,KACf,EACE,+BAAgC,CAC9B,MAAS,4BACT,WAAc,MAClB,EACE,kBAAmB,CACjB,MAAS,4BACT,WAAc,MAClB,EACE,kBAAmB,CACjB,MAAS,4BACT,WAAc,MAClB,EACE,qBAAsB,CACpB,MAAS,4BACT,WAAc,MAClB,EACE,sDAAuD,CACrD,YAAe,OACnB,EACE,+DAAgE,CAC9D,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,0DAA2D,CACzD,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,6DAA8D,CAC5D,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,qEAAsE,CACpE,WAAc,qBACd,MAAS,oBACb,EACE,qEAAsE,CACpE,WAAc,qBACd,MAAS,oBACb,EACE,gEAAiE,CAC/D,WAAc,qBACd,MAAS,oBACb,EACE,gEAAiE,CAC/D,WAAc,qBACd,MAAS,oBACb,EACE,mEAAoE,CAClE,WAAc,qBACd,MAAS,oBACb,EACE,mEAAoE,CAClE,WAAc,qBACd,MAAS,oBACb,EACE,iCAAkC,CAChC,WAAc,4BAClB,EACE,wCAAyC,CACvC,WAAc,qBACd,MAAS,qBACT,QAAW,cACX,aAAgB,QAChB,UAAa,8BACjB,EACE,iDAAkD,CAChD,WAAc,qBACd,MAAS,qBACT,QAAW,cACX,aAAgB,QAChB,UAAa,8BACjB,EACE,iGAAkG,CAChG,gBAAmB,4BACvB,EACE,gDAAiD,CAC/C,iBAAoB,2BACxB,EACE,qCAAsC,CACpC,iBAAoB,2BACxB,EACE,iDAAkD,CAChD,M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","x_google_ignoreList":[0,1,2,3,6]}
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer-B9KGVD0X.js","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../node_modules/lucide-react/dist/esm/icons/copy.js","../../node_modules/lucide-react/dist/esm/icons/folder.js","../../src/stores/chat.ts","../../src/hooks/useSSE.ts","../../node_modules/react-syntax-highlighter/dist/esm/styles/prism/one-dark.js","../../src/components/chat/CodeBlock.tsx","../../src/components/chat/MarkdownRenderer.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"arrow-down\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m5 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n];\nconst ArrowUp = createLucideIcon(\"arrow-up\", __iconNode);\n\nexport { __iconNode, ArrowUp as default };\n//# sourceMappingURL=arrow-up.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.js.map\n","import { create } from \"zustand\";\nimport type { ChatMessage, ChatThread, ChatSettings } from \"@/lib/api\";\n\nexport interface ChatState {\n // Messages\n messages: ChatMessage[];\n streamingText: string;\n isStreaming: boolean;\n waiting: boolean;\n\n // Threads\n threads: ChatThread[];\n activeThreadId: string | null;\n\n // Provider info\n provider: string;\n model: string;\n\n // Tool execution\n totalSteps: number;\n completedSteps: number;\n currentStepTool: string;\n\n // Settings\n settings: ChatSettings | null;\n\n // Actions\n addMessage: (msg: ChatMessage) => void;\n updateLastAssistantMessage: (content: string) => void;\n appendStreamingText: (text: string) => void;\n clearStreaming: () => void;\n setStreaming: (streaming: boolean) => void;\n setWaiting: (waiting: boolean) => void;\n setThreads: (threads: ChatThread[]) => void;\n setActiveThread: (id: string | null) => void;\n setProvider: (provider: string) => void;\n setModel: (model: string) => void;\n setSteps: (total: number, completed: number, tool: string) => void;\n resetSteps: () => void;\n setSettings: (settings: ChatSettings) => void;\n clearMessages: () => void;\n threadVersion: number;\n bumpThreadVersion: () => void;\n}\n\nconst STORAGE_KEY = \"mercury-chat-active-thread\";\n\nfunction getStoredThreadId(): string | null {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(STORAGE_KEY);\n}\n\nexport const useChatStore = create<ChatState>((set) => ({\n messages: [],\n streamingText: \"\",\n isStreaming: false,\n waiting: false,\n\n threads: [],\n activeThreadId: getStoredThreadId(),\n\n provider: \"\",\n model: \"\",\n\n totalSteps: 0,\n completedSteps: 0,\n currentStepTool: \"\",\n\n settings: null,\n\n addMessage: (msg) =>\n set((state) => ({ messages: [...state.messages, msg] })),\n\n updateLastAssistantMessage: (content) =>\n set((state) => {\n const msgs = [...state.messages];\n for (let i = msgs.length - 1; i >= 0; i--) {\n if (msgs[i].role === \"assistant\") {\n msgs[i] = { ...msgs[i], content };\n break;\n }\n }\n return { messages: msgs };\n }),\n\n appendStreamingText: (text) =>\n set((state) => ({\n streamingText: state.streamingText + text,\n isStreaming: true,\n })),\n\n clearStreaming: () => set({ streamingText: \"\", isStreaming: false }),\n\n setStreaming: (streaming) => set({ isStreaming: streaming }),\n\n setWaiting: (waiting) => set({ waiting }),\n\n setThreads: (threads) => set({ threads }),\n\n setActiveThread: (id) => {\n if (id) {\n localStorage.setItem(STORAGE_KEY, id);\n } else {\n localStorage.removeItem(STORAGE_KEY);\n }\n set({ activeThreadId: id });\n },\n\n setProvider: (provider) => set({ provider }),\n\n setModel: (model) => set({ model }),\n\n setSteps: (total, completed, tool) =>\n set({ totalSteps: total, completedSteps: completed, currentStepTool: tool }),\n\n resetSteps: () =>\n set({ totalSteps: 0, completedSteps: 0, currentStepTool: \"\" }),\n\n setSettings: (settings) => set({ settings }),\n\n clearMessages: () => set({ messages: [], streamingText: \"\", isStreaming: false }),\n\n threadVersion: 0,\n bumpThreadVersion: () => set((state) => ({ threadVersion: state.threadVersion + 1 })),\n}));\n","import { useEffect, useRef, useCallback, useState } from \"react\";\nimport { useChatStore } from \"@/stores/chat\";\nimport api from \"@/lib/api\";\n\ninterface SSEResult {\n connected: boolean;\n reconnecting: boolean;\n}\n\nexport function useSSE(): SSEResult {\n const [connected, setConnected] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const esRef = useRef<EventSource | null>(null);\n const reconnectTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const store = useChatStore;\n\n const connect = useCallback(() => {\n if (esRef.current) {\n esRef.current.close();\n }\n\n const es = new EventSource(\"/api/chat/events\");\n esRef.current = es;\n\n es.onopen = () => {\n setConnected(true);\n setReconnecting(false);\n };\n\n es.onerror = () => {\n setConnected(false);\n es.close();\n esRef.current = null;\n\n setReconnecting(true);\n reconnectTimer.current = setTimeout(() => {\n connect();\n }, 3000);\n };\n\n es.addEventListener(\"connected\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setProvider(data.provider ?? \"\");\n store.getState().setModel(data.model ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"thinking\", () => {\n store.getState().setWaiting(true);\n });\n\n es.addEventListener(\"provider\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setProvider(data.provider ?? \"\");\n store.getState().setModel(data.model ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"step_start\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setSteps(\n data.totalSteps ?? 0,\n data.stepNumber ?? 0,\n data.tool ?? \"\"\n );\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"step_done\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setSteps(\n data.totalSteps ?? 0,\n data.stepNumber ?? 0,\n data.tool ?? \"\"\n );\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"text_delta\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().setWaiting(false);\n store.getState().appendStreamingText(data.text ?? \"\");\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"text_done\", (e) => {\n try {\n const raw = (e as MessageEvent).data;\n const data = JSON.parse(raw);\n const fullText = data.fullText ?? data.text ?? raw;\n store.getState().clearStreaming();\n store.getState().setWaiting(false);\n store.getState().resetSteps();\n store.getState().addMessage({\n id: crypto.randomUUID(),\n role: \"assistant\",\n content: fullText,\n timestamp: new Date().toISOString(),\n });\n\n // Persist assistant message to thread\n const threadId = store.getState().activeThreadId;\n if (threadId) {\n api.chat.threads.addMessage(threadId, \"assistant\", fullText)\n .then(() => store.getState().bumpThreadVersion())\n .catch(() => {});\n }\n } catch {\n // Always reset busy state even if parsing fails\n store.getState().clearStreaming();\n store.getState().setWaiting(false);\n store.getState().resetSteps();\n }\n });\n\n es.addEventListener(\"permission_request\", (e) => {\n try {\n const data = JSON.parse((e as MessageEvent).data);\n store.getState().addMessage({\n id: data.id ?? crypto.randomUUID(),\n role: \"system\",\n content: JSON.stringify(data),\n timestamp: new Date().toISOString(),\n });\n } catch { /* ignore */ }\n });\n\n es.addEventListener(\"permission_continue\", () => {\n // Permission resolved, no special action needed\n });\n\n es.addEventListener(\"permission_mode\", () => {\n // Informational, no action needed\n });\n\n es.addEventListener(\"loop_warning\", () => {\n // Could surface a warning in the future\n });\n\n es.addEventListener(\"error\", (e) => {\n const msg = (e as MessageEvent).data ?? \"An error occurred\";\n store.getState().setWaiting(false);\n store.getState().clearStreaming();\n store.getState().resetSteps();\n store.getState().addMessage({\n id: crypto.randomUUID(),\n role: \"system\",\n content: msg,\n timestamp: new Date().toISOString(),\n });\n });\n }, [store]);\n\n useEffect(() => {\n connect();\n\n return () => {\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n }\n if (esRef.current) {\n esRef.current.close();\n esRef.current = null;\n }\n };\n }, [connect]);\n\n return { connected, reconnecting };\n}\n","export default {\n \"code[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"]\": {\n \"background\": \"hsl(220, 13%, 18%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"textShadow\": \"0 1px rgba(0, 0, 0, 0.3)\",\n \"fontFamily\": \"\\\"Fira Code\\\", \\\"Fira Mono\\\", Menlo, Consolas, \\\"DejaVu Sans Mono\\\", monospace\",\n \"direction\": \"ltr\",\n \"textAlign\": \"left\",\n \"whiteSpace\": \"pre\",\n \"wordSpacing\": \"normal\",\n \"wordBreak\": \"normal\",\n \"lineHeight\": \"1.5\",\n \"MozTabSize\": \"2\",\n \"OTabSize\": \"2\",\n \"tabSize\": \"2\",\n \"WebkitHyphens\": \"none\",\n \"MozHyphens\": \"none\",\n \"msHyphens\": \"none\",\n \"hyphens\": \"none\",\n \"padding\": \"1em\",\n \"margin\": \"0.5em 0\",\n \"overflow\": \"auto\",\n \"borderRadius\": \"0.3em\"\n },\n \"code[class*=\\\"language-\\\"]::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::-moz-selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"]::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"code[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \"pre[class*=\\\"language-\\\"] *::selection\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"inherit\",\n \"textShadow\": \"none\"\n },\n \":not(pre) > code[class*=\\\"language-\\\"]\": {\n \"padding\": \"0.2em 0.3em\",\n \"borderRadius\": \"0.3em\",\n \"whiteSpace\": \"normal\"\n },\n \"comment\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \"prolog\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"cdata\": {\n \"color\": \"hsl(220, 10%, 40%)\"\n },\n \"doctype\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"punctuation\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"entity\": {\n \"color\": \"hsl(220, 14%, 71%)\",\n \"cursor\": \"help\"\n },\n \"attr-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"class-name\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"boolean\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"constant\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"number\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"atrule\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \"keyword\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"property\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"tag\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"symbol\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"deleted\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"important\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"selector\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"string\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"char\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"builtin\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"inserted\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"regex\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"attr-value > .token.punctuation\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \"variable\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"operator\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"function\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \"url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \"attr-value > .token.punctuation.attr-equals\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"special-attr > .token.attr-value > .token.value.css\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.selector\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-css .token.property\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-css .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.function\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-css .token.url > .token.string.url\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-css .token.important\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-css .token.atrule .token.rule\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.operator\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation\": {\n \"color\": \"hsl(5, 48%, 51%)\"\n },\n \".language-json .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-json .token.null.keyword\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.url\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.operator\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url-reference.url > .token.string\": {\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".language-markdown .token.url > .token.content\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".language-markdown .token.url > .token.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.url-reference.url\": {\n \"color\": \"hsl(187, 47%, 55%)\"\n },\n \".language-markdown .token.blockquote.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.hr.punctuation\": {\n \"color\": \"hsl(220, 10%, 40%)\",\n \"fontStyle\": \"italic\"\n },\n \".language-markdown .token.code-snippet\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".language-markdown .token.bold .token.content\": {\n \"color\": \"hsl(29, 54%, 61%)\"\n },\n \".language-markdown .token.italic .token.content\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".language-markdown .token.strike .token.content\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.strike .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.list.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".language-markdown .token.title.important > .token.punctuation\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \"bold\": {\n \"fontWeight\": \"bold\"\n },\n \"italic\": {\n \"fontStyle\": \"italic\"\n },\n \"namespace\": {\n \"Opacity\": \"0.8\"\n },\n \"token.tab:not(:empty):before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.cr:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.lf:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"token.space:before\": {\n \"color\": \"hsla(220, 14%, 71%, 0.15)\",\n \"textShadow\": \"none\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item\": {\n \"marginRight\": \"0.4em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 9%, 55%)\",\n \"padding\": \"0.1em 0.4em\",\n \"borderRadius\": \"0.3em\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \"div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus\": {\n \"background\": \"hsl(220, 13%, 28%)\",\n \"color\": \"hsl(220, 14%, 71%)\"\n },\n \".line-highlight.line-highlight\": {\n \"background\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-highlight.line-highlight:before\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \".line-highlight.line-highlight[data-end]:after\": {\n \"background\": \"hsl(220, 13%, 26%)\",\n \"color\": \"hsl(220, 14%, 71%)\",\n \"padding\": \"0.1em 0.6em\",\n \"borderRadius\": \"0.3em\",\n \"boxShadow\": \"0 2px 0 0 rgba(0, 0, 0, 0.2)\"\n },\n \"pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before\": {\n \"backgroundColor\": \"hsla(220, 100%, 80%, 0.04)\"\n },\n \".line-numbers.line-numbers .line-numbers-rows\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".command-line .command-line-prompt\": {\n \"borderRightColor\": \"hsla(220, 14%, 71%, 0.15)\"\n },\n \".line-numbers .line-numbers-rows > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".command-line .command-line-prompt > span:before\": {\n \"color\": \"hsl(220, 14%, 45%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-1\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-5\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-9\": {\n \"color\": \"hsl(355, 65%, 65%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-2\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-6\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-10\": {\n \"color\": \"hsl(95, 38%, 62%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-3\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-7\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-11\": {\n \"color\": \"hsl(207, 82%, 66%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-4\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-8\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \".rainbow-braces .token.token.punctuation.brace-level-12\": {\n \"color\": \"hsl(286, 60%, 67%)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(353, 100%, 66%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(353, 95%, 66%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)\": {\n \"backgroundColor\": \"hsla(137, 100%, 55%, 0.15)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \"pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection\": {\n \"backgroundColor\": \"hsla(135, 73%, 55%, 0.25)\"\n },\n \".prism-previewer.prism-previewer:before\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-gradient.prism-previewer-gradient div\": {\n \"borderColor\": \"hsl(224, 13%, 17%)\",\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-color.prism-previewer-color:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer-easing.prism-previewer-easing:before\": {\n \"borderRadius\": \"0.3em\"\n },\n \".prism-previewer.prism-previewer:after\": {\n \"borderTopColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-flipped.prism-previewer-flipped.after\": {\n \"borderBottomColor\": \"hsl(224, 13%, 17%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-time.prism-previewer-time:before\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing\": {\n \"background\": \"hsl(219, 13%, 22%)\"\n },\n \".prism-previewer-angle.prism-previewer-angle circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-time.prism-previewer-time circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"strokeOpacity\": \"1\"\n },\n \".prism-previewer-easing.prism-previewer-easing circle\": {\n \"stroke\": \"hsl(220, 14%, 71%)\",\n \"fill\": \"transparent\"\n },\n \".prism-previewer-easing.prism-previewer-easing path\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n },\n \".prism-previewer-easing.prism-previewer-easing line\": {\n \"stroke\": \"hsl(220, 14%, 71%)\"\n }\n};","import { useState, useCallback } from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { oneDark } from \"react-syntax-highlighter/dist/esm/styles/prism\";\nimport { Check, Copy } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface CodeBlockProps {\n code: string;\n language?: string;\n}\n\nexport function CodeBlock({ code, language }: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(() => {\n navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [code]);\n\n const displayLang = language || \"text\";\n\n return (\n <div className=\"group relative my-3 overflow-hidden rounded-lg border border-border bg-[#282c34]\">\n {/* Header bar */}\n <div className=\"flex items-center justify-between border-b border-white/10 px-4 py-1.5 text-xs\">\n <span className=\"font-mono text-muted-foreground\">{displayLang}</span>\n <button\n onClick={handleCopy}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors\",\n \"text-muted-foreground hover:bg-white/10 hover:text-foreground\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"h-3.5 w-3.5 text-emerald-400\" />\n <span className=\"text-emerald-400\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"h-3.5 w-3.5\" />\n <span>Copy</span>\n </>\n )}\n </button>\n </div>\n\n {/* Code */}\n <SyntaxHighlighter\n language={language || \"text\"}\n style={oneDark}\n customStyle={{\n margin: 0,\n padding: \"1rem\",\n background: \"transparent\",\n fontSize: \"0.8125rem\",\n lineHeight: \"1.6\",\n }}\n showLineNumbers={false}\n wrapLongLines={false}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n );\n}\n","import ReactMarkdown, { type Components } from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport { cn } from \"@/lib/utils\";\n\ninterface MarkdownRendererProps {\n content: string;\n className?: string;\n}\n\nconst components: Components = {\n code({ className, children, ...props }) {\n const match = /language-(\\w+)/.exec(className || \"\");\n const codeString = String(children).replace(/\\n$/, \"\");\n\n // Fenced code blocks get rendered by CodeBlock\n if (match) {\n return <CodeBlock code={codeString} language={match[1]} />;\n }\n\n // Inline code\n return (\n <code\n className=\"rounded bg-muted px-1.5 py-0.5 font-mono text-[0.8125rem] text-foreground\"\n {...props}\n >\n {children}\n </code>\n );\n },\n\n pre({ children }) {\n // If pre wraps a CodeBlock, just pass through\n return <>{children}</>;\n },\n\n a({ href, children, ...props }) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-mercury-500 underline decoration-mercury-500/40 underline-offset-2 transition-colors hover:text-mercury-400 hover:decoration-mercury-400\"\n {...props}\n >\n {children}\n </a>\n );\n },\n\n h1({ children, ...props }) {\n return (\n <h1 className=\"mb-2 mt-4 text-lg font-semibold tracking-tight\" {...props}>\n {children}\n </h1>\n );\n },\n h2({ children, ...props }) {\n return (\n <h2 className=\"mb-2 mt-3 text-base font-semibold tracking-tight\" {...props}>\n {children}\n </h2>\n );\n },\n h3({ children, ...props }) {\n return (\n <h3 className=\"mb-1.5 mt-2.5 text-sm font-semibold\" {...props}>\n {children}\n </h3>\n );\n },\n\n p({ children, ...props }) {\n return (\n <p className=\"mb-2 leading-relaxed last:mb-0\" {...props}>\n {children}\n </p>\n );\n },\n\n ul({ children, ...props }) {\n return (\n <ul className=\"mb-2 ml-4 list-disc space-y-1 last:mb-0\" {...props}>\n {children}\n </ul>\n );\n },\n ol({ children, ...props }) {\n return (\n <ol className=\"mb-2 ml-4 list-decimal space-y-1 last:mb-0\" {...props}>\n {children}\n </ol>\n );\n },\n li({ children, ...props }) {\n return (\n <li className=\"leading-relaxed\" {...props}>\n {children}\n </li>\n );\n },\n\n blockquote({ children, ...props }) {\n return (\n <blockquote\n className=\"my-2 border-l-2 border-mercury-500/50 pl-3 italic text-muted-foreground\"\n {...props}\n >\n {children}\n </blockquote>\n );\n },\n\n table({ children, ...props }) {\n return (\n <div className=\"my-3 overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full text-sm\" {...props}>\n {children}\n </table>\n </div>\n );\n },\n thead({ children, ...props }) {\n return (\n <thead className=\"border-b border-border bg-muted/50\" {...props}>\n {children}\n </thead>\n );\n },\n tr({ children, ...props }) {\n return (\n <tr className=\"border-b border-border/50 transition-colors hover:bg-muted/30\" {...props}>\n {children}\n </tr>\n );\n },\n th({ children, ...props }) {\n return (\n <th className=\"px-3 py-2 text-left font-medium\" {...props}>\n {children}\n </th>\n );\n },\n td({ children, ...props }) {\n return (\n <td className=\"px-3 py-2\" {...props}>\n {children}\n </td>\n );\n },\n\n hr() {\n return <hr className=\"my-4 border-border\" />;\n },\n};\n\nexport function MarkdownRenderer({ content, className }: MarkdownRendererProps) {\n return (\n <div className={cn(\"text-sm\", className)}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>\n {content}\n </ReactMarkdown>\n </div>\n );\n}\n"],"names":["__iconNode","ArrowDown","createLucideIcon","ArrowUp","Copy","Folder","STORAGE_KEY","getStoredThreadId","useChatStore","create","set","msg","state","content","msgs","i","text","streaming","waiting","threads","id","provider","model","total","completed","tool","settings","useSSE","connected","setConnected","useState","reconnecting","setReconnecting","esRef","useRef","reconnectTimer","store","connect","useCallback","es","e","data","raw","fullText","threadId","api","useEffect","oneDark","CodeBlock","code","language","copied","setCopied","handleCopy","displayLang","jsxs","jsx","cn","Fragment","Check","SyntaxHighlighter","components","className","children","props","match","codeString","href","MarkdownRenderer","ReactMarkdown","remarkGfm"],"mappings":"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mBACb,EACE,QAAW,CACT,MAAS,mBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,QAAW,CACT,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,IAAO,CACL,MAAS,oBACb,EACE,OAAU,CACR,MAAS,oBACb,EACE,QAAW,CACT,MAAS,oBACb,EACE,UAAa,CACX,MAAS,oBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,OAAU,CACR,MAAS,mBACb,EACE,KAAQ,CACN,MAAS,mBACb,EACE,QAAW,CACT,MAAS,mBACb,EACE,SAAY,CACV,MAAS,mBACb,EACE,MAAS,CACP,MAAS,mBACb,EACE,aAAc,CACZ,MAAS,mBACb,EACE,kCAAmC,CACjC,MAAS,mBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,SAAY,CACV,MAAS,oBACb,EACE,IAAO,CACL,MAAS,oBACb,EACE,8CAA+C,CAC7C,MAAS,oBACb,EACE,sDAAuD,CACrD,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,+CAAgD,CAC9C,MAAS,mBACb,EACE,iCAAkC,CAChC,MAAS,oBACb,EACE,0CAA2C,CACzC,MAAS,oBACb,EACE,uCAAwC,CACtC,MAAS,oBACb,EACE,oHAAqH,CACnH,MAAS,kBACb,EACE,iCAAkC,CAChC,MAAS,oBACb,EACE,qCAAsC,CACpC,MAAS,mBACb,EACE,gCAAiC,CAC/B,MAAS,oBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,8DAA+D,CAC7D,MAAS,oBACb,EACE,iDAAkD,CAChD,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,8CAA+C,CAC7C,MAAS,oBACb,EACE,mDAAoD,CAClD,MAAS,qBACT,UAAa,QACjB,EACE,2CAA4C,CAC1C,MAAS,qBACT,UAAa,QACjB,EACE,yCAA0C,CACxC,MAAS,mBACb,EACE,gDAAiD,CAC/C,MAAS,mBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,kDAAmD,CACjD,MAAS,oBACb,EACE,sDAAuD,CACrD,MAAS,oBACb,EACE,6CAA8C,CAC5C,MAAS,oBACb,EACE,iEAAkE,CAChE,MAAS,oBACb,EACE,KAAQ,CACN,WAAc,MAClB,EACE,OAAU,CACR,UAAa,QACjB,EACE,UAAa,CACX,QAAW,KACf,EACE,+BAAgC,CAC9B,MAAS,4BACT,WAAc,MAClB,EACE,kBAAmB,CACjB,MAAS,4BACT,WAAc,MAClB,EACE,kBAAmB,CACjB,MAAS,4BACT,WAAc,MAClB,EACE,qBAAsB,CACpB,MAAS,4BACT,WAAc,MAClB,EACE,sDAAuD,CACrD,YAAe,OACnB,EACE,+DAAgE,CAC9D,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,0DAA2D,CACzD,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,6DAA8D,CAC5D,WAAc,qBACd,MAAS,oBACT,QAAW,cACX,aAAgB,OACpB,EACE,qEAAsE,CACpE,WAAc,qBACd,MAAS,oBACb,EACE,qEAAsE,CACpE,WAAc,qBACd,MAAS,oBACb,EACE,gEAAiE,CAC/D,WAAc,qBACd,MAAS,oBACb,EACE,gEAAiE,CAC/D,WAAc,qBACd,MAAS,oBACb,EACE,mEAAoE,CAClE,WAAc,qBACd,MAAS,oBACb,EACE,mEAAoE,CAClE,WAAc,qBACd,MAAS,oBACb,EACE,iCAAkC,CAChC,WAAc,4BAClB,EACE,wCAAyC,CACvC,WAAc,qBACd,MAAS,qBACT,QAAW,cACX,aAAgB,QAChB,UAAa,8BACjB,EACE,iDAAkD,CAChD,WAAc,qBACd,MAAS,qBACT,QAAW,cACX,aAAgB,QAChB,UAAa,8BACjB,EACE,iGAAkG,CAChG,gBAAmB,4BACvB,EACE,gDAAiD,CAC/C,iBAAoB,2BACxB,EACE,qCAAsC,CACpC,iBAAoB,2BACxB,EACE,iDAAkD,CAChD,M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","x_google_ignoreList":[0,1,2,3,6]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as e,m as S,A as _}from"./vendor-motion-Dwx3-JO5.js";import{r as a}from"./vendor-react-C7pctHW3.js";import{C as O,c as B}from"./card-
|
|
1
|
+
import{j as e,m as S,A as _}from"./vendor-motion-Dwx3-JO5.js";import{r as a}from"./vendor-react-C7pctHW3.js";import{C as O,c as B}from"./card-BdsEOP7t.js";import{B as w}from"./button-CNasMlFE.js";import{I as k}from"./input-CH3dmo9r.js";import{B as R}from"./badge-CUJiWF1y.js";import{T as ie}from"./textarea-CXh3tmJ1.js";import{D as re,a as le,b as ce,c as oe,d as de,e as me}from"./dialog-Bd1rELXb.js";import{S as ke,a as Te,b as Ee,c as Le,d as ze}from"./select-vRSgBrHz.js";import{A as Fe,h as Oe,T as Be,a as Ie,b as Pe,c as _e,d as Re,e as qe,f as Ve,g as He}from"./alert-dialog-MbYSbZx5.js";import{e as ue,a as v,B as se,c as C,j as Y,g as Ue,h as Z,C as Ye}from"./index-C3YiF4qv.js";import{P as Ze}from"./plus-7rbHkByr.js";import{S as Ge}from"./search-BZsbhO0B.js";import{C as xe}from"./circle-x-CyaGJ_BM.js";import{L as q}from"./loader-circle-DbYKk0_Q.js";import{C as G}from"./chevron-down-CB9J_vvZ.js";import{P as Qe}from"./pencil-gNDEMhav.js";import{C as We}from"./circle-check-DvGSe1uZ.js";import"./vendor-radix-3UdfCgs_.js";import"./index-CaqLZNof.js";import"./vendor-syntax-xZUI6Op9.js";/**
|
|
2
2
|
* @license lucide-react v0.511.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -9,4 +9,4 @@ import{j as e,m as S,A as _}from"./vendor-motion-Dwx3-JO5.js";import{r as a}from
|
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
10
10
|
* See the LICENSE file in the root directory of this source tree.
|
|
11
11
|
*/const Je=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],Ke=ue("pin",Je),he=["identity","preference","goal","project","habit","decision","constraint","relationship","episode","reflection"],pe={identity:"bg-blue-500/15 text-blue-400",preference:"bg-purple-500/15 text-purple-400",goal:"bg-amber-500/15 text-amber-400",project:"bg-cyan-500/15 text-cyan-400",habit:"bg-emerald-500/15 text-emerald-400",decision:"bg-indigo-500/15 text-indigo-400",constraint:"bg-red-500/15 text-red-400",relationship:"bg-pink-500/15 text-pink-400",episode:"bg-orange-500/15 text-orange-400",reflection:"bg-teal-500/15 text-teal-400"},P=30,es={hidden:{opacity:0,y:12},visible:s=>({opacity:1,y:0,transition:{delay:s*.03,duration:.25,ease:"easeOut"}}),exit:{opacity:0,y:-8,transition:{duration:.15}}},te={visible:{transition:{staggerChildren:.03}}};function ss({toasts:s}){return e.jsx("div",{className:"fixed bottom-6 right-6 z-50 flex flex-col gap-2",children:e.jsx(_,{children:s.map(c=>e.jsxs(S.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:40},className:C("flex items-center gap-2 rounded-lg border px-4 py-3 text-sm shadow-lg backdrop-blur-sm",c.type==="success"?"border-emerald-500/30 bg-emerald-500/10 text-emerald-400":"border-destructive/30 bg-destructive/10 text-destructive"),children:[c.type==="success"?e.jsx(We,{className:"h-4 w-4"}):e.jsx(xe,{className:"h-4 w-4"}),c.message]},c.id))})})}function z({className:s}){return e.jsx("div",{className:C("animate-pulse rounded-lg bg-muted",s)})}function ts(){return e.jsx(O,{children:e.jsxs(B,{className:"p-5 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(z,{className:"h-5 w-20 rounded-md"}),e.jsx(z,{className:"h-4 w-full"})]}),e.jsx(z,{className:"h-3 w-3/4"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(z,{className:"h-3 w-16"}),e.jsx(z,{className:"h-3 w-16"}),e.jsx(z,{className:"h-3 w-20"})]})]})})}function as({value:s}){const c=Math.round(s*10);return e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-muted-foreground/70 shrink-0",children:"Imp"}),e.jsx("div",{className:"flex gap-0.5",children:Array.from({length:10}).map((u,d)=>e.jsx("div",{className:C("h-1.5 w-1.5 rounded-full transition-colors",d<c?"bg-[#00d4ff]":"bg-muted-foreground/15")},d))})]})}function ns({scope:s}){return s==="durable"?e.jsx("span",{className:"inline-flex items-center gap-1 text-xs text-amber-400/80",title:"Durable memory",children:e.jsx(Ke,{className:"h-3 w-3"})}):s==="subconscious"?e.jsx("span",{className:"inline-flex items-center gap-1 text-xs text-violet-400/80",title:"Subconscious memory",children:e.jsx(Y,{className:"h-3 w-3"})}):e.jsx("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground/50",title:"Active memory",children:e.jsx(Ye,{className:"h-3 w-3"})})}function ae({memory:s,onDelete:c,onEdit:u,index:d,showLastSeen:h}){const[m,o]=a.useState(!1),f=s.lastSeenAt?Math.round((Date.now()-new Date(s.lastSeenAt).getTime())/(1e3*60*60*24)):null;return e.jsx(S.div,{custom:d,variants:es,initial:"hidden",animate:"visible",exit:"exit",layout:!0,children:e.jsx(O,{className:"group transition-colors hover:border-[#00d4ff]/20",children:e.jsx(B,{className:"p-5",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[e.jsxs("div",{className:"flex items-start gap-2.5",children:[e.jsx("span",{className:C("inline-flex shrink-0 items-center rounded-md px-2 py-0.5 text-xs font-semibold capitalize",pe[s.type]??"bg-muted text-muted-foreground"),children:s.type}),e.jsx(ns,{scope:s.scope}),e.jsx("p",{className:"text-sm font-medium text-foreground leading-relaxed",children:s.summary})]}),s.detail&&e.jsxs("button",{onClick:()=>o(!m),className:"w-full text-left",children:[e.jsx("p",{className:C("text-sm text-muted-foreground leading-relaxed transition-all",!m&&"line-clamp-2"),children:s.detail}),s.detail.length>120&&e.jsx("span",{className:"text-xs text-[#00d4ff]/70 hover:text-[#00d4ff] mt-0.5 inline-block",children:m?"Show less":"Show more"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1.5 pt-1",children:[s.importance!=null&&e.jsx(as,{value:s.importance}),s.confidence!=null&&e.jsxs("span",{className:"text-xs text-muted-foreground/70",children:[Math.round(s.confidence*100),"% conf"]}),s.evidenceCount!=null&&s.evidenceCount>1&&e.jsxs("span",{className:"text-xs text-muted-foreground/50",children:["Seen ",s.evidenceCount,"x"]}),h&&f!=null&&e.jsxs("span",{className:"text-xs text-violet-400/70",children:["Last seen: ",f,"d ago"]}),e.jsx("span",{className:"text-xs text-muted-foreground/50",children:Z(s.createdAt)})]})]}),e.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",children:[e.jsx(w,{size:"sm",variant:"ghost",className:"text-muted-foreground hover:text-[#00d4ff]",onClick:()=>u(s),children:e.jsx(Qe,{className:"h-3.5 w-3.5"})}),e.jsxs(Fe,{children:[e.jsx(Oe,{asChild:!0,children:e.jsx(w,{size:"sm",variant:"ghost",className:"text-muted-foreground hover:text-destructive",children:e.jsx(Be,{className:"h-3.5 w-3.5"})})}),e.jsxs(Ie,{children:[e.jsxs(Pe,{children:[e.jsx(_e,{children:"Delete Memory"}),e.jsx(Re,{children:"Are you sure you want to delete this memory? This action cannot be undone."})]}),e.jsxs(qe,{children:[e.jsx(Ve,{children:"Cancel"}),e.jsx(He,{onClick:()=>c(s.id),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]})]})]})]})]})})})})}function is({memory:s,open:c,onOpenChange:u,onSave:d,saving:h}){const[m,o]=a.useState(""),[f,p]=a.useState(""),[M,b]=a.useState("0.8"),[y,N]=a.useState("0.7");a.useEffect(()=>{s&&(o(s.summary),p(s.detail||""),b(String(s.confidence??.8)),N(String(s.importance??.7)))},[s]);const D=x=>{x.preventDefault(),!(!s||!m.trim())&&d(s.id,{summary:m.trim(),detail:f.trim()||void 0,confidence:parseFloat(M),importance:parseFloat(y)})};if(!s)return null;const A=s.lastSeenAt?Math.round((Date.now()-new Date(s.lastSeenAt).getTime())/(1e3*60*60*24)):null;return e.jsx(re,{open:c,onOpenChange:u,children:e.jsxs(le,{className:"sm:max-w-md",children:[e.jsxs(ce,{children:[e.jsx(oe,{children:"Edit Memory"}),e.jsx(de,{children:"Update this memory entry."})]}),e.jsxs("form",{onSubmit:D,className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:C("inline-flex items-center rounded-md px-2 py-0.5 text-xs font-semibold capitalize",pe[s.type]??"bg-muted text-muted-foreground"),children:s.type}),e.jsx(R,{variant:"secondary",className:"text-xs capitalize",children:s.scope}),A!=null&&s.scope==="subconscious"&&e.jsxs("span",{className:"text-xs text-violet-400/70",children:["Last seen ",A,"d ago"]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("label",{className:"text-sm font-medium text-foreground",children:["Summary ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(k,{value:m,onChange:x=>o(x.target.value),required:!0})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Detail"}),e.jsx(ie,{value:f,onChange:x=>p(x.target.value),rows:3})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Confidence (0-1)"}),e.jsx(k,{type:"number",min:"0",max:"1",step:"0.05",value:M,onChange:x=>b(x.target.value)})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Importance (0-1)"}),e.jsx(k,{type:"number",min:"0",max:"1",step:"0.05",value:y,onChange:x=>N(x.target.value)})]})]}),e.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground/60",children:[e.jsxs("span",{children:["Created: ",Z(s.createdAt)]}),s.updatedAt&&e.jsxs("span",{children:["Updated: ",Z(s.updatedAt)]})]}),e.jsx(me,{children:e.jsx(w,{type:"submit",disabled:h||!m.trim(),children:h?e.jsxs(e.Fragment,{children:[e.jsx(q,{className:"h-4 w-4 animate-spin"}),"Saving..."]}):"Save Changes"})})]})]})})}function rs({open:s,onOpenChange:c,onSubmit:u,submitting:d}){const[h,m]=a.useState("preference"),[o,f]=a.useState(""),[p,M]=a.useState(""),[b,y]=a.useState("0.8"),[N,D]=a.useState("0.7"),A=l=>{l.preventDefault(),o.trim()&&u({type:h,summary:o.trim(),detail:p.trim()||void 0,confidence:parseFloat(b),importance:parseFloat(N),durability:"0.8"})},x=()=>{m("preference"),f(""),M(""),y("0.8"),D("0.7")};return e.jsx(re,{open:s,onOpenChange:l=>{l||x(),c(l)},children:e.jsxs(le,{className:"sm:max-w-md",children:[e.jsxs(ce,{children:[e.jsx(oe,{children:"Add Memory"}),e.jsx(de,{children:"Create a new memory entry in the Second Brain."})]}),e.jsxs("form",{onSubmit:A,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Type"}),e.jsxs(ke,{value:h,onValueChange:m,children:[e.jsx(Te,{children:e.jsx(Ee,{})}),e.jsx(Le,{children:he.map(l=>e.jsx(ze,{value:l,className:"capitalize",children:l},l))})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("label",{className:"text-sm font-medium text-foreground",children:["Summary ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(k,{placeholder:"What should Mercury remember?",value:o,onChange:l=>f(l.target.value),required:!0})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Detail"}),e.jsx(ie,{placeholder:"Additional context or details...",value:p,onChange:l=>M(l.target.value),rows:3})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Confidence (0-1)"}),e.jsx(k,{type:"number",min:"0",max:"1",step:"0.05",value:b,onChange:l=>y(l.target.value)})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-sm font-medium text-foreground",children:"Importance (0-1)"}),e.jsx(k,{type:"number",min:"0",max:"1",step:"0.05",value:N,onChange:l=>D(l.target.value)})]})]}),e.jsx(me,{children:e.jsx(w,{type:"submit",disabled:d||!o.trim(),children:d?e.jsxs(e.Fragment,{children:[e.jsx(q,{className:"h-4 w-4 animate-spin"}),"Saving..."]}):"Add Memory"})})]})]})})}function ne({title:s,icon:c,count:u,defaultOpen:d,children:h,actions:m}){const[o,f]=a.useState(d);return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{onClick:()=>f(!o),className:"flex items-center gap-2 w-full text-left group",children:[o?e.jsx(G,{className:"h-4 w-4 text-muted-foreground transition-transform"}):e.jsx(Ue,{className:"h-4 w-4 text-muted-foreground transition-transform"}),e.jsxs("span",{className:"flex items-center gap-2",children:[c,e.jsx("span",{className:"text-sm font-semibold text-foreground",children:s})]}),e.jsx(R,{variant:"secondary",className:"tabular-nums text-xs",children:u}),m&&e.jsx("div",{className:"ml-auto",onClick:p=>p.stopPropagation(),children:m})]}),e.jsx(_,{children:o&&e.jsx(S.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2},className:"overflow-hidden",children:h})})]})}function As(){const[s,c]=a.useState([]),[u,d]=a.useState([]),[h,m]=a.useState(0),[o,f]=a.useState(0),[p,M]=a.useState(null),[b,y]=a.useState(!0),[N,D]=a.useState(!1),[A,x]=a.useState(!1),[l,Q]=a.useState(null),[j,fe]=a.useState(""),[T,ge]=a.useState(new Set),[je,V]=a.useState(!1),[be,W]=a.useState(!1),[ye,X]=a.useState(null),[Ne,H]=a.useState(!1),[ve,$]=a.useState(!1),[Se,J]=a.useState([]),U=a.useRef(),E=a.useCallback((t,n)=>{const i=Date.now();J(r=>[...r,{id:i,type:t,message:n}]),setTimeout(()=>{J(r=>r.filter(g=>g.id!==i))},3500)},[]),I=a.useCallback(async()=>{try{const t=await v.brain.status();M(t)}catch{}},[]),L=a.useCallback(async(t,n=0,i=!1)=>{try{if(i||y(!0),Q(null),t==="conscious"||t==="both"){i&&D(!0);let r;if(j.trim())r=await v.brain.memory.list({limit:P,offset:t==="conscious"?n:0,q:j.trim(),scope:"conscious"});else{const F=T.size===1?Array.from(T)[0]:void 0;r=await v.brain.memory.list({limit:P,offset:t==="conscious"?n:0,type:F,scope:"conscious"})}let g=r.memories;T.size>1&&!j.trim()&&(g=g.filter(F=>T.has(F.type))),c(i&&t==="conscious"?F=>[...F,...g]:g),m(r.total),D(!1)}if(t==="subconscious"||t==="both"){i&&x(!0);let r;j.trim()?r=await v.brain.memory.list({limit:P,offset:t==="subconscious"?n:0,q:j.trim(),scope:"subconscious"}):r=await v.brain.memory.list({limit:P,offset:t==="subconscious"?n:0,scope:"subconscious"}),d(i&&t==="subconscious"?g=>[...g,...r.memories]:r.memories),f(r.total),x(!1)}}catch(r){Q(r instanceof Error?r.message:"Failed to load memories")}finally{y(!1)}},[j,T]);a.useEffect(()=>{I()},[I]),a.useEffect(()=>(clearTimeout(U.current),U.current=setTimeout(()=>{L("both",0,!1)},300),()=>clearTimeout(U.current)),[L]);const we=t=>{ge(n=>{const i=new Set(n);return i.has(t)?i.delete(t):i.add(t),i})},Ce=async t=>{W(!0);try{await v.brain.memory.create(t),E("success","Memory created"),V(!1),L("both",0,!1),I()}catch(n){E("error",n instanceof Error?n.message:"Failed to create")}finally{W(!1)}},K=async t=>{try{await v.brain.memory.delete(t),c(n=>n.filter(i=>i.id!==t)),d(n=>n.filter(i=>i.id!==t)),E("success","Memory deleted"),I()}catch(n){E("error",n instanceof Error?n.message:"Failed to delete")}},ee=t=>{X(t),H(!0)},Me=async(t,n)=>{$(!0);try{await v.brain.memory.update(t,n),E("success","Memory updated"),H(!1),X(null);const i=r=>r.map(g=>g.id===t?{...g,...n}:g);c(i),d(i)}catch(i){E("error",i instanceof Error?i.message:"Failed to update")}finally{$(!1)}},De=s.length<h,Ae=u.length<o;return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsxs(S.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},transition:{duration:.3},className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-[#00d4ff]/10",children:e.jsx(se,{className:"h-5 w-5 text-[#00d4ff]"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx("h1",{className:"text-2xl font-semibold text-foreground",children:"Memory"}),p&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs(R,{variant:"secondary",className:"tabular-nums",children:[p.total," conscious"]}),e.jsxs(R,{variant:"secondary",className:"tabular-nums text-violet-400",children:[p.subconsciousTotal??0," subconscious"]})]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Browse and manage Mercury's knowledge"})]})]}),e.jsxs(w,{onClick:()=>V(!0),children:[e.jsx(Ze,{className:"h-4 w-4"}),"Add Memory"]})]}),e.jsxs(S.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.05,duration:.3},className:"relative",children:[e.jsx(Ge,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(k,{placeholder:"Search across all memories...",value:j,onChange:t=>fe(t.target.value),className:"pl-9"})]}),p&&e.jsx(S.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.1,duration:.3},className:"flex flex-wrap gap-2",children:he.map(t=>{var r;const n=((r=p.byType)==null?void 0:r[t])??0,i=T.has(t);return e.jsxs("button",{onClick:()=>we(t),className:C("inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium capitalize transition-all",i?"border-[#00d4ff]/40 bg-[#00d4ff]/10 text-[#00d4ff]":"border-border bg-secondary/50 text-muted-foreground hover:border-border hover:bg-secondary"),children:[t,n>0&&e.jsx("span",{className:C("tabular-nums",i?"text-[#00d4ff]/70":"text-muted-foreground/50"),children:n})]},t)})}),l&&e.jsx(O,{className:"border-destructive/30",children:e.jsxs(B,{className:"flex items-center gap-3 p-4 text-sm text-destructive",children:[e.jsx(xe,{className:"h-4 w-4 shrink-0"}),l,e.jsx(w,{size:"sm",variant:"outline",className:"ml-auto",onClick:()=>L("both",0,!1),children:"Retry"})]})}),b&&e.jsx("div",{className:"space-y-3",children:Array.from({length:5}).map((t,n)=>e.jsx(ts,{},n))}),!b&&!l&&e.jsxs("div",{className:"space-y-6",children:[e.jsx(ne,{title:"Conscious",icon:e.jsx(se,{className:"h-4 w-4 text-[#00d4ff]"}),count:h,defaultOpen:!0,children:s.length>0?e.jsxs("div",{className:"space-y-3",children:[e.jsx(S.div,{className:"space-y-3",variants:te,initial:"hidden",animate:"visible",children:e.jsx(_,{mode:"popLayout",children:s.map((t,n)=>e.jsx(ae,{memory:t,onDelete:K,onEdit:ee,index:n},t.id))})}),De&&e.jsx("div",{className:"flex justify-center pt-2",children:e.jsx(w,{variant:"outline",onClick:()=>L("conscious",s.length,!0),disabled:N,children:N?e.jsxs(e.Fragment,{children:[e.jsx(q,{className:"h-4 w-4 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(G,{className:"h-4 w-4"}),"Load More (",s.length," / ",h,")"]})})})]}):e.jsx(O,{children:e.jsxs(B,{className:"flex flex-col items-center justify-center py-10 text-center",children:[e.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-muted mb-3",children:e.jsx($e,{className:"h-6 w-6 text-muted-foreground"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:j.trim()?"No conscious memories match your search.":"No conscious memories yet. Start a conversation or add one manually."})]})})}),e.jsx(ne,{title:"Subconscious",icon:e.jsx(Y,{className:"h-4 w-4 text-violet-400"}),count:o,defaultOpen:!1,children:u.length>0?e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground/70 px-1",children:"Dormant memories not referenced in 30+ days. Automatically recalled when relevant."}),e.jsx(S.div,{className:"space-y-3",variants:te,initial:"hidden",animate:"visible",children:e.jsx(_,{mode:"popLayout",children:u.map((t,n)=>e.jsx(ae,{memory:t,onDelete:K,onEdit:ee,index:n,showLastSeen:!0},t.id))})}),Ae&&e.jsx("div",{className:"flex justify-center pt-2",children:e.jsx(w,{variant:"outline",onClick:()=>L("subconscious",u.length,!0),disabled:A,children:A?e.jsxs(e.Fragment,{children:[e.jsx(q,{className:"h-4 w-4 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(G,{className:"h-4 w-4"}),"Load More (",u.length," / ",o,")"]})})})]}):e.jsx(O,{children:e.jsxs(B,{className:"flex flex-col items-center justify-center py-10 text-center",children:[e.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-muted mb-3",children:e.jsx(Y,{className:"h-6 w-6 text-muted-foreground"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:j.trim()?"No subconscious memories match your search.":"No subconscious memories yet. Memories move here after 30 days of not being referenced."})]})})})]}),e.jsx(rs,{open:je,onOpenChange:V,onSubmit:Ce,submitting:be}),e.jsx(is,{memory:ye,open:Ne,onOpenChange:H,onSave:Me,saving:ve}),e.jsx(ss,{toasts:Se})]})}export{As as MemoryPage};
|
|
12
|
-
//# sourceMappingURL=Memory-
|
|
12
|
+
//# sourceMappingURL=Memory-BOQEY0H8.js.map
|