clawpad 0.4.13 → 0.4.15
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +8 -8
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/ai/write/route.js +4 -3
- package/.next/standalone/.next/server/app/api/ai/write/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/record/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/revert/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/changes/run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/abort/route.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/abort/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/chat/abort/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/route.js +2 -2
- package/.next/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/pages/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/recent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/spaces/[space]/pages/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/spaces/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/files/watch/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/config/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/detect/route.js +4 -3
- package/.next/standalone/.next/server/app/api/gateway/detect/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/events/route.js +3 -2
- package/.next/standalone/.next/server/app/api/gateway/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/gateway/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/features/route.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/features/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/gateway/features/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/history/route.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/gateway/history/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/resolve/route.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/resolve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/gateway/resolve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/sessions/route.js +1 -2
- package/.next/standalone/.next/server/app/api/gateway/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/gateway/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/gateway/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/openclaw/commands/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/search-status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/bootstrap/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/bootstrap-workspace/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route.js +3 -2
- package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/connection/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/connection.html +1 -1
- package/.next/standalone/.next/server/app/settings/connection.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/connection.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/connection.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/connection.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/relay/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/relay.html +1 -1
- package/.next/standalone/.next/server/app/settings/relay.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings/relay.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +1 -1
- package/.next/standalone/.next/server/app/setup.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/waitlist.html +1 -1
- package/.next/standalone/.next/server/app/waitlist.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/waitlist/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/waitlist.segments/waitlist.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/search/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspace/search.html +2 -2
- package/.next/standalone/.next/server/app/workspace/search.rsc +2 -2
- package/.next/standalone/.next/server/app/workspace/search.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/workspace/search.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace/search.segments/workspace.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/workspace.html +2 -2
- package/.next/standalone/.next/server/app/workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/workspace.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspace.segments/workspace.segment.rsc +2 -2
- package/.next/standalone/.next/server/app-paths-manifest.json +8 -8
- package/.next/standalone/.next/server/chunks/1210.js +2 -2
- package/.next/standalone/.next/server/chunks/3251.js +1 -1
- package/.next/standalone/.next/server/chunks/4526.js +3 -0
- package/.next/standalone/.next/server/chunks/8353.js +2 -1
- package/.next/standalone/.next/server/chunks/869.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/static/chunks/7715-4c958974269e11be.js +1 -0
- package/.next/static/chunks/app/workspace/layout-10e6e52da47d81e4.js +6 -0
- package/bin/clawpad.js +31 -54
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/8349.js +0 -2
- package/.next/static/chunks/7715-3855a81c1ea9e972.js +0 -1
- package/.next/static/chunks/app/workspace/layout-04dc788f875531ce.js +0 -6
- /package/.next/static/{Ff7zWI1Fv9QEKb4lMQRBr → Wa475fYq7y8N9jedn5ZlJ}/_buildManifest.js +0 -0
- /package/.next/static/{Ff7zWI1Fv9QEKb4lMQRBr → Wa475fYq7y8N9jedn5ZlJ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1807],{3163:(e,t,n)=>{"use strict";n.d(t,{e:()=>a});var r=n(1934);let s=0,a=(0,r.v)(e=>({items:[],addItem:t=>e(e=>({items:[{...t,id:`activity-${Date.now()}-${++s}`},...e.items].slice(0,20)})),clear:()=>e({items:[]})}))},7814:(e,t,n)=>{"use strict";function r(e){let t=e.replace(/\.md$/,"").split("/").filter(Boolean).map(e=>encodeURIComponent(e));return 0===t.length?"/workspace":`/workspace/${t.join("/")}`}n.d(t,{C:()=>r})},24733:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>nS});var r=n(95155),s=n(12115),a=n(12710),l=n(61878),i=n(51914),o=n(6071),c=n(52799),d=n(89239),u=n(70872),m=n(33210),h=n(19324);function x({...e}){return(0,r.jsx)(h.Root,{"data-slot":"sheet",...e})}function p({...e}){return(0,r.jsx)(h.Portal,{"data-slot":"sheet-portal",...e})}function g({className:e,...t}){return(0,r.jsx)(h.Overlay,{"data-slot":"sheet-overlay",className:(0,c.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function f({className:e,children:t,side:n="right",showCloseButton:s=!0,...a}){return(0,r.jsxs)(p,{children:[(0,r.jsx)(g,{}),(0,r.jsxs)(h.Content,{"data-slot":"sheet-content",className:(0,c.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===n&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===n&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===n&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===n&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...a,children:[t,s&&(0,r.jsxs)(h.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,r.jsx)(m.A,{className:"size-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b({className:e,...t}){return(0,r.jsx)(h.Title,{"data-slot":"sheet-title",className:(0,c.cn)("text-foreground font-semibold",e),...t})}var v=n(98500),w=n.n(v),j=n(73321),y=n(63393),N=n(89363),k=n(21362),C=n(48368),S=n(51900),A=n(36999),E=n(35585);function $({className:e,children:t,...n}){return(0,r.jsxs)(E.Root,{"data-slot":"scroll-area",className:(0,c.cn)("relative",e),...n,children:[(0,r.jsx)(E.Viewport,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&>div]:!block [&>div]:!min-w-0",children:t}),(0,r.jsx)(z,{}),(0,r.jsx)(E.Corner,{})]})}function z({className:e,orientation:t="vertical",...n}){return(0,r.jsx)(E.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,c.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...n,children:(0,r.jsx)(E.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}var R=n(97916),T=n(45160),D=n(86846),_=n(93571),L=n(70460),M=n(18496),K=n(31328),P=n(53536),I=n(60464);function F(e,t){let n={type:"folder",name:"",path:"",children:[]},r=new Map;for(let s of(r.set("",n),e)){let e=function(e,t){let n=e.replace(/\\/g,"/").replace(/\.md$/,"");if(t===I.Sz)return n;let r=`${t}/`;return n.startsWith(r)?n.slice(r.length):n}(s.path,t),a=e.split("/").filter(Boolean);if(0===a.length)continue;let l=a.pop(),i=n,o="";for(let e of a){let t=o?`${o}/${e}`:e,n=r.get(t);n||(n={type:"folder",name:e,path:t,children:[]},r.set(t,n),i.children.push(n)),i=n,o=t}i.children.push({type:"page",name:l,path:e,page:s})}return n.children}var O=n(7814);function W({onNavigate:e}){return(0,r.jsxs)(w(),{href:"/workspace",onClick:()=>e?.(),className:"flex items-center gap-2 text-[13px] font-semibold leading-none transition-colors hover:text-foreground/80",children:[(0,r.jsx)(_.R,{variant:"wordmark",size:26,theme:"light",alt:"ClawPad",className:"-translate-y-[2px]"}),(0,r.jsx)(V,{})]})}function q({onNavigate:e,isSheet:t,showHeader:n=!0}){let a=(0,j.usePathname)(),o=(0,j.useRouter)(),{spaces:c,expandedSpaces:d,expandedFolders:u,toggleSpace:m,toggleFolder:h,pagesBySpace:x,spacesStatus:p,pagesStatusBySpace:g,pagesErrorBySpace:f,recentPages:b,recentStatus:v,loadSpaces:w,loadRecentPages:k,loadPages:C,setActivePage:S}=(0,M.M)();(0,s.useEffect)(()=>{w(),k()},[w,k]),(0,s.useEffect)(()=>{for(let e of c){if(!d.has(e.path)||e.pageCount<=0)continue;let t=x.get(e.path);t&&!(t.length>0)&&"loading"!==(g.get(e.path)??"idle")&&C(e.path,{force:!0,silent:!0})}},[d,C,x,g,c]),(0,s.useEffect)(()=>{a.startsWith("/workspace/")?S(a.replace("/workspace/","")):S(null)},[a,S]);let A=(0,s.useCallback)(t=>{o.push((0,O.C)(t)),e?.()},[o,e]),E=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"document"}})),e?.()},[e]),z=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"space"}})),e?.()},[e]),T=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-command-palette")),e?.()},[e]),_=(0,s.useCallback)(()=>{o.push("/settings"),e?.()},[e,o]);return(0,r.jsxs)("div",{className:"flex h-full w-full flex-col overflow-hidden",children:[n&&(0,r.jsx)("div",{className:"flex h-12 shrink-0 items-center justify-between px-3",children:(0,r.jsx)(W,{onNavigate:e})}),(0,r.jsxs)("div",{className:"shrink-0 space-y-0.5 px-2",children:[(0,r.jsx)(Z,{icon:(0,r.jsx)(l.A,{className:"h-4 w-4"}),label:"Search",shortcut:"⌘K",onClick:T,touchFriendly:t}),(0,r.jsx)(Z,{icon:(0,r.jsx)(i.A,{className:"h-4 w-4"}),label:"New Document",shortcut:"⌘N",onClick:E,touchFriendly:t}),(0,r.jsx)(Z,{icon:(0,r.jsx)(y.A,{className:"h-4 w-4"}),label:"New Space",onClick:z,touchFriendly:t})]}),(0,r.jsx)(R.w,{className:"my-2 shrink-0"}),(0,r.jsx)($,{className:"min-h-0 flex-1 w-full min-w-0 px-2",children:(0,r.jsxs)("div",{className:"w-full py-1",children:[(0,r.jsx)(J,{children:"Spaces"}),"loading"===p&&0===c.length?(0,r.jsxs)("div",{className:"space-y-1 px-2",children:[(0,r.jsx)(D.E,{className:"h-7 w-full"}),(0,r.jsx)(D.E,{className:"h-7 w-full"}),(0,r.jsx)(D.E,{className:"h-7 w-full"})]}):0===c.length?(0,r.jsx)("p",{className:"px-2 py-2 text-xs text-muted-foreground",children:"No spaces yet"}):(0,r.jsx)("div",{className:"space-y-0.5",children:c.map(e=>(0,r.jsx)(U,{space:e,isExpanded:d.has(e.path),expandedFolders:u,pages:x.get(e.path)??[],pageLoadError:f.get(e.path)??null,isLoadingPages:(g.get(e.path)??"idle")==="loading"&&0===(x.get(e.path)??[]).length,pathname:a,touchFriendly:t,onToggle:()=>m(e.path),onToggleFolder:h,onRetryPages:()=>C(e.path,{force:!0}),onNavigate:A},e.path))}),b.length>0&&(0,r.jsxs)("div",{className:"mt-4",children:[(0,r.jsx)(J,{children:"Recent"}),(0,r.jsx)("div",{className:"space-y-0.5",children:b.slice(0,5).map(e=>(0,r.jsx)(H,{page:e,isActive:a===(0,O.C)(e.path),touchFriendly:t,onNavigate:()=>A(e.path)},e.path))})]}),"loading"===v&&0===b.length&&(0,r.jsxs)("div",{className:"mt-4 space-y-1 px-2",children:[(0,r.jsx)(J,{children:"Recent"}),(0,r.jsx)(D.E,{className:"h-6 w-full"}),(0,r.jsx)(D.E,{className:"h-6 w-5/6"})]})]})}),(0,r.jsx)(R.w,{className:"shrink-0"}),(0,r.jsxs)("div",{className:"shrink-0 space-y-0.5 px-2 py-2",children:[(0,r.jsx)(X,{}),(0,r.jsx)(G,{touchFriendly:t}),(0,r.jsx)(Z,{icon:(0,r.jsx)(N.A,{className:"h-4 w-4"}),label:"Settings",onClick:_,touchFriendly:t})]})]})}let U=(0,s.memo)(function({space:e,isExpanded:t,expandedFolders:n,pages:s,pageLoadError:a,isLoadingPages:l,pathname:i,touchFriendly:o,onToggle:d,onToggleFolder:u,onRetryPages:m,onNavigate:h}){let x=F(s,e.path),p=t=>t.map(t=>{if("page"===t.type)return(0,r.jsx)(B,{page:t.page,isActive:i===(0,O.C)(t.page.path),touchFriendly:o,onNavigate:()=>h(t.page.path)},t.page.path);let s=`${e.path}/${t.path}`,a=n.has(s);return(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{type:"button",onClick:()=>u(s),className:(0,c.cn)("relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-1.5 rounded-md px-2 text-[12px] transition-colors","text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground",o?"py-2 min-h-[44px]":"py-1",a&&"text-foreground"),children:[(0,r.jsx)(k.A,{className:(0,c.cn)("h-3 w-3 shrink-0 transition-transform duration-200",a&&"rotate-90")}),(0,r.jsx)("span",{className:"shrink-0 text-xs",children:"\uD83D\uDCC2"}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate text-left",children:t.name})]}),a&&(0,r.jsx)("div",{className:"ml-3 min-w-0 border-l border-border/50 pl-2 py-0.5",children:p(t.children)})]},s)});return(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{type:"button",onClick:d,className:(0,c.cn)("relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-1.5 rounded-md px-2 text-[13px] transition-colors","hover:bg-sidebar-accent",o?"py-2 min-h-[44px]":"py-1",t&&"font-medium"),children:[(0,r.jsx)(k.A,{className:(0,c.cn)("h-3 w-3 shrink-0 text-muted-foreground transition-transform duration-200",t&&"rotate-90")}),(0,r.jsx)("span",{className:"shrink-0 text-sm",children:e.icon??"\uD83D\uDCC1"}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate text-left",children:e.name}),(0,r.jsx)(T.E,{variant:"secondary",className:"h-4 shrink-0 px-1 text-[10px] font-normal",children:e.pageCount})]}),t&&(0,r.jsx)("div",{className:"ml-3 min-w-0 border-l border-border/50 pl-2 py-0.5",children:l?(0,r.jsxs)("div",{className:"space-y-1 py-1",children:[(0,r.jsx)(D.E,{className:"h-6 w-full"}),(0,r.jsx)(D.E,{className:"h-6 w-3/4"})]}):a&&0===x.length?(0,r.jsxs)("div",{className:"px-2 py-1.5",children:[(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Couldn't load pages."}),(0,r.jsx)("button",{type:"button",onClick:m,className:"mt-1 cursor-pointer text-[11px] text-primary hover:underline",children:"Retry"})]}):0===x.length?(0,r.jsx)("p",{className:"py-1.5 px-2 text-[11px] text-muted-foreground",children:"No pages yet. Create your first page."}):p(x)})]})}),B=(0,s.memo)(function({page:e,isActive:t,touchFriendly:n,onNavigate:s}){return(0,r.jsxs)("button",{type:"button",onClick:s,className:(0,c.cn)("relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-1.5 rounded-md px-2 text-[13px] transition-colors pointer-events-auto","text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground",n?"py-2 min-h-[44px]":"py-1",t&&"bg-accent-light text-accent-blue font-medium"),children:[e.icon?(0,r.jsx)("span",{className:"shrink-0 text-xs",children:e.icon}):(0,r.jsx)(C.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate text-left",children:e.title})]})}),H=(0,s.memo)(function({page:e,isActive:t,touchFriendly:n,onNavigate:s}){return(0,r.jsxs)("button",{type:"button",onClick:s,className:(0,c.cn)("relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors overflow-hidden pointer-events-auto","text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground",n?"py-2 min-h-[44px]":"py-1",t&&"bg-accent-light text-accent-blue font-medium"),children:[(0,r.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden",children:[e.icon?(0,r.jsx)("span",{className:"shrink-0 text-xs",children:e.icon}):(0,r.jsx)(C.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,r.jsx)("span",{className:"truncate text-left",children:e.title})]}),(0,r.jsx)("span",{className:"shrink-0 whitespace-nowrap tabular-nums text-[11px] font-medium text-muted-foreground/85",children:(0,P.f)(e.modified)})]})});function Z({icon:e,label:t,shortcut:n,onClick:s,touchFriendly:a}){return(0,r.jsxs)("button",{type:"button",onClick:s,className:(0,c.cn)("relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto","text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground",a?"py-2.5 min-h-[44px]":"py-1.5"),children:[(0,r.jsx)("span",{className:"shrink-0",children:e}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate text-left",children:t}),n&&(0,r.jsx)("kbd",{className:"shrink-0 rounded border border-border/70 bg-muted/70 px-1.5 py-0.5 text-[11px] font-mono font-medium leading-none tracking-tight text-muted-foreground/85",children:n})]})}function J({children:e}){return(0,r.jsx)("h3",{className:"mb-1 px-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:e})}function G({touchFriendly:e}){let{resolvedTheme:t,setTheme:n}=(0,L.D)(),s="dark"===t;return(0,r.jsx)(Z,{icon:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.A,{className:"hidden h-4 w-4 dark:inline"}),(0,r.jsx)(A.A,{className:"inline h-4 w-4 dark:hidden"})]}),label:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"hidden dark:inline",children:"Light Mode"}),(0,r.jsx)("span",{className:"inline dark:hidden",children:"Dark Mode"})]}),onClick:()=>n(s?"light":"dark"),touchFriendly:e})}function V(){let e=(0,K.z)(e=>e.wsStatus),t=(0,K.z)(e=>e.agentStatus),n=(0,K.z)(e=>e.agentName),s=(0,K.z)(e=>e.wsError),a="connected"===e?"thinking"===t||"active"===t?"bg-[color:var(--cp-brand-2)]":"bg-green-400":"connecting"===e||"reconnecting"===e?"bg-yellow-400":"bg-zinc-400",l="connected"===e?"thinking"===t?`${n??"Agent"}: thinking…`:"active"===t?`${n??"Agent"}: working…`:`${n??"Agent"}: online`:"connecting"===e?`Connecting to gateway…${s?` — ${s}`:""}`:"reconnecting"===e?`Reconnecting to gateway…${s?` — ${s}`:""}`:`Disconnected${s?` — ${s}`:""}`;return(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsxs)("span",{className:"relative flex h-2.5 w-2.5",children:[("connecting"===e||"reconnecting"===e||"thinking"===t||"active"===t)&&(0,r.jsx)("span",{className:(0,c.cn)("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75",a)}),(0,r.jsx)("span",{className:(0,c.cn)("relative inline-flex h-2.5 w-2.5 rounded-full ring-1 ring-[color:var(--cp-brand-border)]",a)})]})}),(0,r.jsx)(u.ZI,{children:l})]})}function X(){let e=(0,K.z)(e=>e.wsStatus),t=(0,K.z)(e=>e.agentStatus),n=(0,K.z)(e=>e.agentName),s=(0,K.z)(e=>e.wsError),a=(0,K.z)(e=>e.detect),l=(0,K.z)(e=>e.connect),i="connected"===e?"bg-green-400":"connecting"===e||"reconnecting"===e?"bg-yellow-400":"bg-red-400",o="connected"===e?"thinking"===t?`${n??"Agent"} thinking…`:"active"===t?`${n??"Agent"} working…`:`${n??"Agent"} online`:"connecting"===e?`Connecting…${s?` — ${s}`:""}`:"reconnecting"===e?`Reconnecting…${s?` — ${s}`:""}`:`Disconnected${s?` — ${s}`:""}`;return(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px]",children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[("connecting"===e||"reconnecting"===e)&&(0,r.jsx)("span",{className:(0,c.cn)("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75",i)}),(0,r.jsx)("span",{className:(0,c.cn)("relative inline-flex h-2 w-2 rounded-full",i)})]}),(0,r.jsx)("span",{className:"flex-1 text-[11px] text-muted-foreground",children:o}),"disconnected"===e&&(0,r.jsx)("button",{onClick:()=>{a().then(()=>l())},className:"text-[10px] text-blue-500 hover:text-blue-400 transition-colors",children:"Retry"})]})}function Q(){let e=window.innerWidth;return e<640?"mobile-sm":e<768?"mobile":e<1024?"tablet":"desktop"}function Y(){let[e,t]=(0,s.useState)(()=>Q());return(0,s.useEffect)(()=>{let e=window.matchMedia(`(max-width: ${639}px)`),n=window.matchMedia(`(min-width: 640px) and (max-width: ${767}px)`),r=window.matchMedia(`(min-width: 768px) and (max-width: ${1023}px)`);function s(){t(Q())}return e.addEventListener("change",s),n.addEventListener("change",s),r.addEventListener("change",s),()=>{e.removeEventListener("change",s),n.removeEventListener("change",s),r.removeEventListener("change",s)}},[]),{breakpoint:e,isMobileSm:"mobile-sm"===e,isMobile:"mobile-sm"===e||"mobile"===e,isTablet:"tablet"===e,isDesktop:"desktop"===e}}function ee({className:e,...t}){return(0,r.jsx)("span",{className:(0,c.cn)("absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0","[clip:rect(0,0,0,0)]",e),...t})}function et(){let{sidebarOpen:e,sidebarWidth:t,toggleSidebar:n,setSidebarOpen:m,setSidebarWidth:h}=(0,M.M)(),{isMobile:p,isTablet:g}=Y(),[v,w]=(0,s.useState)(t),[j,y]=(0,s.useState)(!1),N=(0,s.useRef)(null),k=(0,s.useRef)(0),C=(0,s.useRef)(240),S=(0,s.useRef)(240),A=(0,s.useCallback)(e=>Math.max(208,Math.min(e,Math.round(.35*window.innerWidth))),[]);(0,s.useEffect)(()=>{w(t)},[t]),(0,s.useEffect)(()=>{if(p||g)return;let e=()=>{let e=A(S.current);S.current=e,w(e),h(e)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[A,p,g,h]),(0,s.useEffect)(()=>{S.current=v,N.current&&(N.current.style.width=`${v}px`)},[v]),(0,s.useEffect)(()=>{if(!j)return;let e=e=>{let t=e.clientX-k.current,n=A(C.current+t);S.current=n,N.current&&(N.current.style.width=`${n}px`)},t=()=>{y(!1);let e=S.current;w(e),h(e)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t),document.body.style.cursor="",document.body.style.userSelect=""}},[A,j,h]);let E=(0,s.useCallback)(t=>{p||g||!e||(t.preventDefault(),k.current=t.clientX,C.current=S.current,y(!0))},[p,g,e]),$=(0,s.useCallback)(()=>{m(!1)},[m]),z=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-command-palette"))},[]),R=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"document"}}))},[]);return p?null:g?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex h-full w-12 flex-col items-center border-r bg-sidebar py-3 gap-2 shrink-0",children:[(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:n,children:(0,r.jsx)(a.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"Open sidebar (⌘\\)"})]}),(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:z,children:(0,r.jsx)(l.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"Search (⌘K)"})]}),(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:R,children:(0,r.jsx)(i.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"New Document (⌘N)"})]})]}),(0,r.jsx)(x,{open:e,onOpenChange:m,children:(0,r.jsxs)(f,{side:"left",className:"w-72 p-0",showCloseButton:!1,children:[(0,r.jsx)(ee,{children:(0,r.jsx)(b,{children:"Navigation"})}),(0,r.jsx)(q,{onNavigate:$,isSheet:!0})]})})]}):e?(0,r.jsxs)("div",{ref:N,className:"relative flex h-full shrink-0 flex-col border-r bg-sidebar",style:{width:v,minWidth:208,maxWidth:"35vw"},children:[(0,r.jsxs)("div",{className:"flex h-12 shrink-0 items-center justify-between px-3",children:[(0,r.jsx)(W,{}),(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:n,children:(0,r.jsx)(o.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"Close sidebar (⌘\\)"})]})]}),(0,r.jsx)("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden",children:(0,r.jsx)(q,{showHeader:!1})}),(0,r.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize sidebar",onPointerDown:E,className:(0,c.cn)("absolute right-0 top-0 z-20 h-full w-2 cursor-col-resize","group"),children:(0,r.jsx)("div",{className:(0,c.cn)("absolute inset-y-0 right-0 w-px bg-border/70","transition-colors group-hover:bg-[color:var(--cp-brand-2)]",j&&"bg-[color:var(--cp-brand-2)]")})})]}):(0,r.jsxs)("div",{className:"flex h-full w-12 flex-col items-center border-r bg-sidebar py-3 gap-2 shrink-0",children:[(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:n,children:(0,r.jsx)(a.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"Open sidebar (⌘\\)"})]}),(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:z,children:(0,r.jsx)(l.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"Search (⌘K)"})]}),(0,r.jsxs)(u.m_,{children:[(0,r.jsx)(u.k$,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:R,children:(0,r.jsx)(i.A,{className:"h-4 w-4"})})}),(0,r.jsx)(u.ZI,{side:"right",children:"New Document (⌘N)"})]})]})}var en=n(21628),er=n(93631),es=n(84980),ea=n(2647),el=n(86901),ei=n(49387),eo=n(34530),ec=n(42129),ed=n(96035),eu=n(92972),em=n(5810),eh=n(53961),ex=n(2467),ep=n(34738);function eg({...e}){return(0,r.jsx)(h.Root,{"data-slot":"dialog",...e})}function ef({...e}){return(0,r.jsx)(h.Portal,{"data-slot":"dialog-portal",...e})}function eb({className:e,...t}){return(0,r.jsx)(h.Overlay,{"data-slot":"dialog-overlay",className:(0,c.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function ev({className:e,children:t,showCloseButton:n=!0,...s}){return(0,r.jsxs)(ef,{"data-slot":"dialog-portal",children:[(0,r.jsx)(eb,{}),(0,r.jsxs)(h.Content,{"data-slot":"dialog-content",className:(0,c.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",e),...s,children:[t,n&&(0,r.jsxs)(h.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,r.jsx)(m.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function ew({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,c.cn)("flex flex-col gap-2 text-center sm:text-left",e),...t})}function ej({className:e,showCloseButton:t=!1,children:n,...s}){return(0,r.jsxs)("div",{"data-slot":"dialog-footer",className:(0,c.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...s,children:[n,t&&(0,r.jsx)(h.Close,{asChild:!0,children:(0,r.jsx)(d.$,{variant:"outline",children:"Close"})})]})}function ey({className:e,...t}){return(0,r.jsx)(h.Title,{"data-slot":"dialog-title",className:(0,c.cn)("text-lg leading-none font-semibold",e),...t})}function eN({className:e,...t}){return(0,r.jsx)(h.Description,{"data-slot":"dialog-description",className:(0,c.cn)("text-muted-foreground text-sm",e),...t})}function ek({className:e,...t}){return(0,r.jsx)(ep.uB,{"data-slot":"command",className:(0,c.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",e),...t})}function eC({title:e="Command Palette",description:t="Search for a command to run...",children:n,className:s,showCloseButton:a=!0,...l}){return(0,r.jsx)(eg,{...l,children:(0,r.jsxs)(ev,{className:(0,c.cn)("overflow-hidden p-0",s),showCloseButton:a,children:[(0,r.jsxs)(ew,{className:"sr-only",children:[(0,r.jsx)(ey,{children:e}),(0,r.jsx)(eN,{children:t})]}),(0,r.jsx)(ek,{className:"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:n})]})})}function eS({className:e,...t}){return(0,r.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,r.jsx)(l.A,{className:"size-4 shrink-0 opacity-50"}),(0,r.jsx)(ep.uB.Input,{"data-slot":"command-input",className:(0,c.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",e),...t})]})}function eA({className:e,...t}){return(0,r.jsx)(ep.uB.List,{"data-slot":"command-list",className:(0,c.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",e),...t})}function eE({...e}){return(0,r.jsx)(ep.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...e})}function e$({className:e,...t}){return(0,r.jsx)(ep.uB.Group,{"data-slot":"command-group",className:(0,c.cn)("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",e),...t})}function ez({className:e,...t}){return(0,r.jsx)(ep.uB.Separator,{"data-slot":"command-separator",className:(0,c.cn)("bg-border -mx-1 h-px",e),...t})}function eR({className:e,...t}){return(0,r.jsx)(ep.uB.Item,{"data-slot":"command-item",className:(0,c.cn)("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function eT({className:e,...t}){return(0,r.jsx)("span",{"data-slot":"command-shortcut",className:(0,c.cn)("text-muted-foreground ml-auto text-xs tracking-widest",e),...t})}function eD(){let[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(""),[c,d]=(0,s.useState)([]),[u,m]=(0,s.useState)([]),[h,x]=(0,s.useState)(!1),p=(0,j.useRouter)(),{resolvedTheme:g,setTheme:f}=(0,L.D)(),{recentPages:b,spaces:v,toggleChatPanel:w,toggleSidebar:k,createPage:E}=(0,M.M)(),$=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{"k"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),t(!0))},n=()=>t(!0);return document.addEventListener("keydown",e),window.addEventListener("clawpad:open-command-palette",n),()=>{document.removeEventListener("keydown",e),window.removeEventListener("clawpad:open-command-palette",n)}},[]),(0,s.useEffect)(()=>{e&&fetch("/api/files/recent?limit=8").then(e=>e.ok?e.json():[]).then(e=>m(e)).catch(()=>{})},[e]),(0,s.useEffect)(()=>{if(!n.trim()){d([]),x(!1);return}x(!0);let e=setTimeout(async()=>{$.current?.abort();let e=new AbortController;$.current=e;try{let t=await fetch(`/api/files/search?q=${encodeURIComponent(n)}&limit=10`,{signal:e.signal});if(t.ok){let e=await t.json();d(Array.isArray(e)?e:e.results??[])}}catch(e){e.name}finally{e.signal.aborted||x(!1)}},200);return()=>{clearTimeout(e)}},[n]);let z=(0,s.useCallback)(e=>{p.push((0,O.C)(e)),t(!1),o("")},[p]),R=(0,s.useCallback)(async e=>{try{let t=await E(I.Sz,e);z(t)}catch{}},[E,z]),D=(0,s.useCallback)(()=>{t(!1),window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"space"}}))},[]),_=(0,s.useCallback)(()=>{t(!1),window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"document"}}))},[]),K=(0,s.useCallback)(e=>{t(e),e||(o(""),d([]))},[]),P=u.length>0?u:b.slice(0,8),F=n.trim().length>0,W=c.length>0;return(0,r.jsxs)(eC,{open:e,onOpenChange:K,children:[(0,r.jsx)(eS,{placeholder:"Search pages or type a command…",value:n,onValueChange:o}),(0,r.jsxs)(eA,{children:[(0,r.jsx)(eE,{children:h?(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-2",children:[(0,r.jsx)("div",{className:"h-4 w-4 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"}),(0,r.jsx)("span",{className:"text-sm text-muted-foreground",children:"Searching…"})]}):F?"No results found.":null}),W&&(0,r.jsxs)(e$,{heading:"Pages",children:[c.map(e=>(0,r.jsxs)(eR,{value:`search-${e.path}`,onSelect:()=>z(e.path),className:"flex flex-col items-start gap-1 py-3",children:[(0,r.jsxs)("div",{className:"flex w-full items-center gap-2",children:[(0,r.jsx)(C.A,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,r.jsxs)("span",{className:"truncate font-medium",children:[e.icon&&`${e.icon} `,e.title]}),(0,r.jsx)(T.E,{variant:"secondary",className:"ml-auto shrink-0 text-[10px] px-1.5 py-0",children:e.space}),e.modified&&(0,r.jsx)("span",{className:"shrink-0 text-[10px] text-muted-foreground tabular-nums",children:function(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4),s=Math.floor(n/36e5),a=Math.floor(n/864e5);if(r<1)return"just now";if(r<60)return`${r}m ago`;if(s<24)return`${s}h ago`;if(a<7)return`${a}d ago`;return t.toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch{return""}}(e.modified)})]}),e.snippet&&(0,r.jsx)("p",{className:"ml-6 text-xs text-muted-foreground line-clamp-1 max-w-full",children:e.snippet.replace(/^---[\s\S]*?---\s*/m,"").replace(/^#+\s/gm,"").replace(/\n+/g," ").trim()})]},e.path)),(0,r.jsxs)(eR,{value:`view-all-search-${n}`,onSelect:()=>{p.push(`/workspace/search?q=${encodeURIComponent(n.trim())}`),t(!1),o("")},className:"justify-center text-muted-foreground",children:[(0,r.jsx)(l.A,{className:"mr-2 h-3.5 w-3.5"}),(0,r.jsx)("span",{className:"text-xs",children:"View all results"}),(0,r.jsx)(en.A,{className:"ml-1 h-3 w-3"})]})]}),F&&!W&&!h&&(0,r.jsx)(e$,{heading:"Create",children:(0,r.jsxs)(eR,{value:`create-${n}`,onSelect:()=>R(n.trim()),children:[(0,r.jsx)(er.A,{className:"mr-2 h-4 w-4 text-primary"}),(0,r.jsxs)("span",{children:["Create document: ",(0,r.jsx)("strong",{children:n.trim()})]})]})}),!F&&P.length>0&&(0,r.jsx)(e$,{heading:"Recent Pages",children:P.map(e=>(0,r.jsxs)(eR,{value:`recent-${e.path}`,onSelect:()=>z(e.path),children:[(0,r.jsx)(es.A,{className:"mr-2 h-4 w-4 shrink-0 text-muted-foreground"}),(0,r.jsxs)("div",{className:"flex flex-1 items-center gap-2 overflow-hidden",children:[e.icon&&(0,r.jsx)("span",{className:"shrink-0 text-sm",children:e.icon}),(0,r.jsx)("span",{className:"truncate",children:e.title}),(0,r.jsx)(T.E,{variant:"secondary",className:"ml-auto shrink-0 text-[10px] px-1.5 py-0",children:e.space===I.Sz?I.ke:e.space})]})]},e.path))}),(0,r.jsx)(ez,{}),(0,r.jsxs)(e$,{heading:"Create",children:[(0,r.jsxs)(eR,{value:"new-document",onSelect:_,children:[(0,r.jsx)(i.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"New Document"}),(0,r.jsx)(eT,{children:"⌘N"})]}),(0,r.jsxs)(eR,{value:"new-space",onSelect:D,children:[(0,r.jsx)(y.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"New Space"})]}),(0,r.jsxs)(eR,{value:"new-daily-note",onSelect:()=>{t(!1),R(new Date().toISOString().slice(0,10))},children:[(0,r.jsx)(ea.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"New Daily Note"})]})]}),(0,r.jsxs)(e$,{heading:"AI",children:[(0,r.jsxs)(eR,{value:"ask-agent",onSelect:()=>{let e=M.M.getState();e.chatPanelOpen||e.toggleChatPanel(),t(!1)},children:[(0,r.jsx)(el.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Ask Agent"}),(0,r.jsx)(eT,{children:"⌘⇧L"})]}),(0,r.jsxs)(eR,{value:"summarize-page",onSelect:()=>{let e=M.M.getState();e.chatPanelOpen||e.toggleChatPanel(),t(!1),window.dispatchEvent(new CustomEvent("clawpad:ai-action",{detail:{action:"summarize"}}))},children:[(0,r.jsx)(C.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Summarize Page"})]}),(0,r.jsxs)(eR,{value:"improve-writing",onSelect:()=>{let e=M.M.getState();e.chatPanelOpen||e.toggleChatPanel(),t(!1),window.dispatchEvent(new CustomEvent("clawpad:ai-action",{detail:{action:"improve"}}))},children:[(0,r.jsx)(ei.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Improve Writing"})]})]}),(0,r.jsxs)(e$,{heading:"Navigation",children:[(0,r.jsxs)(eR,{value:"search-workspace",onSelect:()=>{let e=n.trim();p.push(e?`/workspace/search?q=${encodeURIComponent(e)}`:"/workspace/search"),t(!1),o("")},children:[(0,r.jsx)(l.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Search Workspace"})]}),(0,r.jsxs)(eR,{value:"go-to-settings",onSelect:()=>{p.push("/settings"),t(!1)},children:[(0,r.jsx)(N.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Go to Settings"})]}),(0,r.jsxs)(eR,{value:"go-to-setup",onSelect:()=>{p.push("/setup"),t(!1)},children:[(0,r.jsx)(eo.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Go to Setup"})]}),v.map(e=>(0,r.jsxs)(eR,{value:`space-${e.path}`,onSelect:()=>{M.M.getState().toggleSpace(e.path),t(!1)},children:[(0,r.jsx)(ec.A,{className:"mr-2 h-4 w-4 text-muted-foreground"}),(0,r.jsxs)("span",{children:[e.icon&&`${e.icon} `,e.name]})]},e.path))]}),(0,r.jsxs)(e$,{heading:"Actions",children:[(0,r.jsxs)(eR,{value:"toggle-chat",onSelect:()=>{w(),t(!1)},children:[(0,r.jsx)(ed.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Toggle Chat"}),(0,r.jsx)(eT,{children:"⌘⇧L"})]}),(0,r.jsxs)(eR,{value:"toggle-sidebar",onSelect:()=>{k(),t(!1)},children:[(0,r.jsx)(a.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Toggle Sidebar"}),(0,r.jsx)(eT,{children:"⌘\\"})]}),(0,r.jsxs)(eR,{value:"toggle-dark-mode",onSelect:()=>{f("dark"===g?"light":"dark"),t(!1)},children:["dark"===g?(0,r.jsx)(S.A,{className:"mr-2 h-4 w-4"}):(0,r.jsx)(A.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Toggle Dark Mode"}),(0,r.jsx)(eT,{children:"⌘⇧D"})]}),(0,r.jsxs)(eR,{value:"theme-light",onSelect:()=>{f("light"),t(!1)},children:[(0,r.jsx)(S.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Theme: Light"})]}),(0,r.jsxs)(eR,{value:"theme-dark",onSelect:()=>{f("dark"),t(!1)},children:[(0,r.jsx)(A.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Theme: Dark"})]}),(0,r.jsxs)(eR,{value:"theme-system",onSelect:()=>{f("system"),t(!1)},children:[(0,r.jsx)(eu.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Theme: System"})]}),(0,r.jsxs)(eR,{value:"focus-editor",onSelect:()=>{let e=document.querySelector(".clawpad-editor [contenteditable]")??document.querySelector(".clawpad-editor");e?.focus(),t(!1)},children:[(0,r.jsx)(em.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Focus Editor"}),(0,r.jsx)(eT,{children:"⌘⇧E"})]}),(0,r.jsxs)(eR,{value:"force-save",onSelect:()=>{window.dispatchEvent(new CustomEvent("clawpad:force-save")),t(!1)},children:[(0,r.jsx)(eh.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Save"}),(0,r.jsx)(eT,{children:"⌘S"})]}),(0,r.jsxs)(eR,{value:"keyboard-shortcuts",onSelect:()=>{window.dispatchEvent(new CustomEvent("clawpad:shortcuts-dialog")),t(!1)},children:[(0,r.jsx)(ex.A,{className:"mr-2 h-4 w-4"}),(0,r.jsx)("span",{children:"Keyboard Shortcuts"}),(0,r.jsx)(eT,{children:"⌘/"})]})]})]})]})}var e_=n(60529),eL=n(66609);let eM="clawpad-create-location-suggestions";function eK(){let[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)("document"),[l,i]=(0,s.useState)(""),[o,c]=(0,s.useState)(""),[u,m]=(0,s.useState)(!1),h=(0,j.useRouter)(),{spaces:x,createPage:p,createSpace:g}=(0,M.M)(),f=(0,s.useMemo)(()=>new Set(x.map(e=>e.path)),[x]);(0,s.useEffect)(()=>{let e=e=>{let n=e?.detail;n?.mode==="space"||n?.mode==="folder"?a("space"):a("document"),"string"==typeof n?.title?i(n.title):i(""),"string"==typeof n?.location?c(n.location):"string"==typeof n?.space&&n.space.trim()?c(n.folderPath?`${n.space}/${n.folderPath}`.replace(/^\/+|\/+$/g,""):n.space):c(""),t(!0)};window.addEventListener("clawpad:open-new-page",e),window.addEventListener("clawpad:new-page",e);let n=e=>{"n"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),a("document"),i(""),c(""),t(!0))};return document.addEventListener("keydown",n),()=>{window.removeEventListener("clawpad:open-new-page",e),window.removeEventListener("clawpad:new-page",e),document.removeEventListener("keydown",n)}},[]),(0,s.useEffect)(()=>{if(!e||"document"!==n||o.trim())return;let t=x.find(e=>e.path!==I.Sz)?.path??x[0]?.path??"";t&&c(t)},[o,n,e,x]);let b=()=>{a("document"),i(""),c(""),m(!1)},v=(0,s.useCallback)(async()=>{let e=l.trim();if(e){m(!0);try{if("space"===n){await g(e),t(!1),b(),eL.oR.success("Space created"),h.push("/workspace");return}let r=function(e,t){let n=e.trim();if(!n)return null;let r=n.replace(/^\/+|\/+$/g,"");if(!r)return null;if(r===I.Sz||"root"===r.toLowerCase()||r.toLowerCase()===I.ke.toLowerCase())return{space:I.Sz};let s=r.split("/").filter(Boolean);if(0===s.length)return null;let[a,...l]=s;return t.has(a)?{space:a,folderPath:l.length>0?l.join("/"):void 0}:null}(o,f);if(!r)throw Error("Choose a valid location (space or space/folder path).");let s=await p(r.space,e,{folderPath:r.folderPath});t(!1),b(),h.push((0,O.C)(s)),eL.oR.success("Document created")}catch(t){let e=t instanceof Error?t.message:"space"===n?"Failed to create space.":"Failed to create document.";eL.oR.error(e)}finally{m(!1)}}},[p,g,f,o,n,h,l]),w=(0,s.useCallback)(e=>{"Enter"!==e.key||u||(e.preventDefault(),v())},[u,v]);return(0,r.jsx)(eg,{open:e,onOpenChange:e=>{t(e),e||b()},children:(0,r.jsxs)(ev,{className:"sm:max-w-[440px]",children:[(0,r.jsxs)(ew,{children:[(0,r.jsx)(ey,{children:"space"===n?"New Space":"New Document"}),(0,r.jsx)(eN,{children:"space"===n?"Create a top-level space in your workspace.":"Create a document in a space or nested folder path."})]}),(0,r.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-2 rounded-lg border bg-muted/30 p-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>a("document"),className:`rounded-md px-2 py-1.5 text-xs ${"document"===n?"bg-background font-medium shadow-sm":"text-muted-foreground"}`,children:"Document"}),(0,r.jsx)("button",{type:"button",onClick:()=>a("space"),className:`rounded-md px-2 py-1.5 text-xs ${"space"===n?"bg-background font-medium shadow-sm":"text-muted-foreground"}`,children:"Space"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("label",{htmlFor:"create-title",className:"text-sm font-medium leading-none",children:"space"===n?"Space Name":"Document Name"}),(0,r.jsx)(e_.p,{id:"create-title",placeholder:"space"===n?"e.g. client-work":"Document title…",value:l,onChange:e=>i(e.target.value),onKeyDown:w,autoFocus:!0})]}),"document"===n&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("label",{htmlFor:"create-location",className:"text-sm font-medium leading-none",children:"Location"}),(0,r.jsx)(e_.p,{id:"create-location",list:eM,placeholder:"space or space/folder/path",value:o,onChange:e=>c(e.target.value),onKeyDown:w}),(0,r.jsx)("datalist",{id:eM,children:x.map(e=>(0,r.jsx)("option",{value:e.path,children:e.name},e.path))}),(0,r.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["Example: ",(0,r.jsx)("code",{children:"projects/q1/roadmap"})]})]})]}),(0,r.jsxs)(ej,{children:[(0,r.jsx)(d.$,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),(0,r.jsx)(d.$,{onClick:()=>void v(),disabled:!l.trim()||u,children:u?"Creating…":"space"===n?"Create Space":"Create Document"})]})]})})}var eP=n(84577),eI=n(86726),eF=n(56558),eO=n(15411),eW=n(7915),eq=n(92018),eU=n(6296),eB=n(13545),eH=n(56842),eZ=n(99815),eJ=n(10762),eG=n(72055),eV=n(95672),eX=n(66088),eQ=n(94514),eY=n(38399),e0=n(41730),e1=n(92451),e5=n(17243),e2=n(74643),e4=n(69260),e3=n(6489),e6=n(65576),e9=n(32967),e8=n(13175),e7=n(76597),te=n(25262),tt=n(52159),tn=n(80642),tr=n(18310),ts=n(3163),ta=n(46794),tl=n(83099);let ti=/<\s*\/?\s*(?:think(?:ing)?|thought|antthinking|final)\b/i,to=/<\s*\/?\s*final\b[^<>]*>/gi,tc=/<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\b[^<>]*>/gi;function td(e){let t=[];for(let n of e.matchAll(/(^|\n)(```|~~~)[^\n]*\n[\s\S]*?(?:\n\2(?:\n|$)|$)/g)){let e=(n.index??0)+n[1].length;t.push({start:e,end:e+n[0].length-n[1].length})}for(let n of e.matchAll(/`+[^`]+`+/g)){let e=n.index??0,r=e+n[0].length;t.some(t=>e>=t.start&&r<=t.end)||t.push({start:e,end:r})}return t.sort((e,t)=>e.start-t.start),t}function tu(e,t){return t.some(t=>e>=t.start&&e<t.end)}var tm=n(9921);function th({status:e}){let t=(0,j.useRouter)(),n=(0,tl.W)(e=>e.activeRun),a=(0,tl.W)(e=>e.activeFiles),l=(0,tl.W)(e=>e.lastFileTouchAt),i=(0,tl.W)(e=>e.changeSets),o=(0,tl.W)(e=>e.openReview),d=(0,tl.W)(e=>e.closeReview),u=(0,K.z)(e=>e.agentStatus),m=i.find(e=>"completed"===e.status),[h,x]=(0,s.useState)(!1),p=a.size,g=!!m,f=e?"status":n&&p>0&&"number"==typeof l&&"idle"!==u?"editing":g?"summary":null,b="editing"===f?p:m?.totals.filesChanged??0,v=m?.totals.additions??0,w=m?.totals.deletions??0,y=0===b?"files":1===b?"1 file":`${b} files`,N="summary"===f&&!!m,k=N&&h;if(!f)return null;let C=e?.kind==="alert",S=e?.tone==="error",A=e?(0,c.cn)("flex w-full items-center gap-2 rounded-lg border px-3 py-1.5 text-xs transition-colors","thinking"===e.kind&&"border-[color:var(--cp-brand-border)] bg-[color:var(--cp-status-thinking-bg)] text-[color:var(--cp-status-thinking-text)]","writing"===e.kind&&"border-[color:var(--cp-brand-border)] bg-[color:var(--cp-status-thinking-bg)] text-[color:var(--cp-status-thinking-text)]","background"===e.kind&&"border-border/60 bg-[color:var(--cp-status-neutral-bg)] text-[color:var(--cp-status-neutral-text)]",C&&(S?"border-red-500/40 bg-[color:var(--cp-status-error-bg)] text-[color:var(--cp-status-error-text)]":"border-amber-500/40 bg-[color:var(--cp-status-alert-bg)] text-[color:var(--cp-status-alert-text)]")):"",E=e?(0,c.cn)("inline-flex h-2 w-2 rounded-full",("thinking"===e.kind||"background"===e.kind||"writing"===e.kind)&&"animate-pulse",("thinking"===e.kind||"writing"===e.kind)&&"bg-[color:var(--cp-status-thinking-text)]","background"===e.kind&&"bg-[color:var(--cp-status-neutral-text)]",C&&(S?"bg-[color:var(--cp-status-error-text)]":"bg-[color:var(--cp-status-alert-text)]")):"";return(0,r.jsxs)("div",{className:"mb-2",children:["status"===f&&e&&(0,r.jsxs)("div",{className:A,role:"status","aria-live":"polite",children:[(0,r.jsx)("span",{className:E}),(0,r.jsx)("span",{className:"text-[11px] font-medium",children:e.label}),e.detail&&(0,r.jsx)("span",{className:"max-w-[240px] truncate text-[10px] text-foreground/70",children:e.detail})]}),("editing"===f||"summary"===f)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{N&&x(e=>!e)},className:(0,c.cn)("flex w-full items-center gap-2 border border-border/60 bg-muted/40 px-3 py-1.5 text-xs text-muted-foreground","rounded-lg",N&&"cursor-pointer hover:bg-muted/60"),children:[(0,r.jsx)("span",{className:"inline-flex h-2 w-2 rounded-full bg-[color:var(--cp-brand-2)] animate-pulse"}),(0,r.jsx)("span",{className:"flex-1 text-left",children:"editing"===f?(0,r.jsxs)(r.Fragment,{children:["Editing ",y,"…"]}):(0,r.jsxs)(r.Fragment,{children:[y," changed"," ",(0,r.jsxs)("span",{className:"text-emerald-600",children:["+",v]})," ",(0,r.jsxs)("span",{className:"text-rose-500",children:["-",w]})]})}),N&&(0,r.jsx)("span",{className:"text-muted-foreground/70",children:h?(0,r.jsx)(tm.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(eX.A,{className:"h-3.5 w-3.5"})})]}),k&&m&&(0,r.jsx)("div",{className:"rounded-b-lg border border-t-0 border-border/60 bg-background/95",children:(0,r.jsx)("div",{className:"divide-y divide-border/70",children:m.files.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2 text-xs",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{var n;return n=e.path,void(m&&(o(m.id,n),t.push((0,O.C)(n))))},className:"rounded-md border border-border/70 px-2 py-0.5 text-[10px] font-medium text-muted-foreground hover:text-foreground",children:"Diff"}),(0,r.jsx)("button",{type:"button",onClick:()=>{var n;return n=e.path,void(d(),t.push((0,O.C)(n)))},className:"flex-1 truncate text-left text-foreground/80 hover:text-foreground",children:e.path}),(0,r.jsxs)("span",{className:"shrink-0 font-mono text-[11px]",children:[(0,r.jsxs)("span",{className:"text-emerald-600",children:["+",e.additions]})," ",(0,r.jsxs)("span",{className:"text-rose-500",children:["-",e.deletions]})]})]},e.path))})})]})]})}let tx={telegram:{icon:"\uD83D\uDCF1",label:"Telegram",color:"bg-sky-100 text-sky-700 dark:bg-sky-900/40 dark:text-sky-300"},whatsapp:{icon:"\uD83D\uDCAC",label:"WhatsApp",color:"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300"},discord:{icon:"\uD83C\uDFAE",label:"Discord",color:"bg-indigo-100 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300"},slack:{icon:"\uD83D\uDCBC",label:"Slack",color:"bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300"},webchat:{icon:"\uD83C\uDF10",label:"Web",color:"bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400"},clawpad:{icon:"\uD83C\uDF10",label:"ClawPad",color:"bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400"},system:{icon:"\uD83E\uDD16",label:"System",color:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300"}},tp=(0,s.memo)(function({channel:e,sessionKey:t,className:n}){let s=e?e.toLowerCase():t?(t.split(":")[2]??"unknown").toLowerCase():"unknown",a=tx[s];return a&&"webchat"!==s&&"clawpad"!==s?(0,r.jsxs)("span",{className:(0,c.cn)("inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-[10px] font-medium leading-none",a.color,n),children:[(0,r.jsx)("span",{className:"text-[10px]",children:a.icon}),a.label]}):null}),tg=["image/png","image/jpeg","image/gif","image/webp"];function tf(e){return(e.split("/").pop()??e).replace(/\.md$/,"").replace(/[-_]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}function tb(e){return{title:e.title?.trim()||tf(e.path),path:e.path,space:e.space,modified:e.modified,snippet:e.snippet}}async function tv(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}async function tw(e){let t=[];for(let n of e){if(!tg.includes(n.type))continue;if(n.size>5242880){console.warn(`[chat] Skipping ${n.name}: exceeds 5 MB`);continue}let e=await tv(n);t.push({id:crypto.randomUUID(),dataUrl:e,name:n.name})}return t}let tj=/^\[([^\]]+)\]\s*/,ty=["WebChat","WhatsApp","Telegram","Signal","Slack","Discord","Google Chat","iMessage","Teams","Matrix","Zalo","Zalo Personal","BlueBubbles"],tN=/^\s*\[message_id:\s*[^\]]+\]\s*$/i,tk=/^\s*\[message_id:\s*([^\]]+)\]\s*$/i;function tC(e){var t;let n=e.match(tj);return n?(t=n[1]??"",/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z\b/.test(t)||/\d{4}-\d{2}-\d{2} \d{2}:\d{2}\b/.test(t)||ty.some(e=>t.startsWith(`${e} `)))?tA(e.slice(n[0].length)):tA(e):tA(e)}function tS(e){return String(e.preview??e.reason??e.status??"Heartbeat").trim()}function tA(e){if(!e.includes("[message_id:"))return e;let t=e.split(/\r?\n/),n=t.filter(e=>!tN.test(e));return n.length===t.length?e:n.join("\n")}function tE(e){return function(e,t){var n;if(!e||!ti.test(e))return e;let r=t?.mode??"strict",s=t?.trim??"both",a=e;if(to.test(a)){to.lastIndex=0;let e=[],t=td(a);for(let n of a.matchAll(to)){let r=n.index??0;e.push({start:r,length:n[0].length,inCode:tu(r,t)})}for(let t=e.length-1;t>=0;t-=1){let n=e[t];n.inCode||(a=a.slice(0,n.start)+a.slice(n.start+n.length))}}else to.lastIndex=0;let l=td(a);tc.lastIndex=0;let i="",o=0,c=!1;for(let e of a.matchAll(tc)){let t=e.index??0,n="/"===e[1];tu(t,l)||(c?n&&(c=!1):(i+=a.slice(o,t),n||(c=!0)),o=t+e[0].length)}return c&&"preserve"!==r||(i+=a.slice(o)),n=i,"none"===s?n:"start"===s?n.trimStart():n.trim()}(e,{mode:"preserve",trim:"start"})}function t$(e){return e.replace(/^\s*\[Context\][\s\S]*?\[\/Context\]\s*/i,"")}function tz(e){return String(e??"").replace(/\s+/g," ").trim()}function tR(e){let t=e.trim();if(!t)return"main";if(!t.includes(":"))return t;let n=t.split(":");return n[1]?.trim()||t}function tT(e){let t=e.role??"",n=e.content;if("string"==typeof n){let e="assistant"===t?tE(n):tC(n);return"user"===t||"User"===t?t$(e):e}if(Array.isArray(n)){let e=n.filter(e=>"text"===e.type&&"string"==typeof e.text).map(e=>e.text);if(e.length>0){let n=e.join("\n"),r="assistant"===t?tE(n):tC(n);return"user"===t||"User"===t?t$(r):r}}if("string"==typeof e.text){let n=e.text,r="assistant"===t?tE(n):tC(n);return"user"===t||"User"===t?t$(r):r}return null}function tD(e){let t=e.role??"",n=e.content;if("string"==typeof n)return"user"===t||"User"===t?t$(n):n;if(Array.isArray(n)){let e=n.filter(e=>"text"===e.type&&"string"==typeof e.text).map(e=>e.text);if(e.length>0){let n=e.join("\n");return"user"===t||"User"===t?t$(n):n}}if("string"==typeof e.text){let n=e.text;return"user"===t||"User"===t?t$(n):n}return null}function t_(e){var t;let n;if(null==e)return;if("number"==typeof e||"boolean"==typeof e)return String(e);if("string"==typeof e)n=e;else if("object"==typeof e)if("string"==typeof e.text)n=e.text;else if(Array.isArray(e.content)){let t=e.content.map(e=>e&&"object"==typeof e&&"text"===e.type&&"string"==typeof e.text?e.text:null).filter(e=>!!e);n=t.length>0?t.join("\n"):""}else try{n=JSON.stringify(e,null,2)}catch{n=String(e)}else n=String(e);if(!n)return;let r=(t=tL(n)??n).length<=12e4?{text:t,truncated:!1,total:t.length}:{text:t.slice(0,12e4),truncated:!0,total:t.length};return r.truncated?`${r.text}
|
|
2
|
+
|
|
3
|
+
… truncated (${r.total} chars, showing first ${r.text.length}).`:r.text}function tL(e){let t=e.trim();if(!t||!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return null}}function tM(e){var t;let n,r,s=e.role??"unknown";(function(e){let t=(e.role??"").toLowerCase();if("toolresult"===t||"tool_result"===t||e.toolCallId||e.tool_call_id||e.toolName||e.tool_name)return!0;let n=Array.isArray(e.content)?e.content:null;return!!n?.some(e=>{let t=(e.type??"").toLowerCase();return"toolresult"===t||"tool_result"===t})})(e)&&(s="toolResult");let a=[];"string"==typeof e.content?a=[{type:"text",text:e.content}]:Array.isArray(e.content)?a=e.content.map(e=>({...e,type:e.type||"text",text:e.text})):"string"==typeof e.text&&(a=[{type:"text",text:e.text}]);let l=tD(e),i=!!l&&function(e,t){let n=e.trim();if(!n)return!1;if(/^HEARTBEAT_OK\b/i.test(n)||/^HEARTBEAT\b/i.test(n))return!0;let r=/^System:/i.test(n),s=/\[NETWORK\]/i.test(n),a=/\bRead HEARTBEAT\.md\b/i.test(n);return!!r&&(!!s||!!a)||"system"===(t??"").toLowerCase()}(l,s),o=i?"system":(n=((t=s)??"").toLowerCase(),"user"===t||"User"===t?"user":"assistant"===t?"assistant":"system"===t?"system":"toolresult"===n||"tool_result"===n||"tool"===n||"function"===n?"tool":"assistant");return"user"===o&&(r=!1,a=a.map(e=>{if(!r&&"text"===e.type&&"string"==typeof e.text){let t=t$(e.text);return(t!==e.text&&(r=!0),t.trim())?{...e,text:t}:null}return e}).filter(Boolean)),{role:o,content:a,timestamp:e.timestamp??Date.now(),id:e.id,channel:e.channel,sessionKey:e.sessionKey,raw:e,displayText:tT(e),toolCards:function(e){let t=[],n=Array.isArray(e.content)?e.content:[];for(let e of n)(["toolcall","tool_call","tooluse","tool_use"].includes((e.type??"").toLowerCase())||"string"==typeof e.name&&null!=e.arguments)&&t.push({kind:"call",name:e.name??"tool",args:function(e){if("string"!=typeof e)return e;let t=e.trim();if(!t||!t.startsWith("{")&&!t.startsWith("["))return e;try{return JSON.parse(t)}catch{return e}}(e.arguments??e.args??e.input)});for(let e of n){let n=(e.type??"").toLowerCase();if("toolresult"!==n&&"tool_result"!==n)continue;let r=e.text??e.content??void 0,s=e.name??"tool";t.push({kind:"result",name:s,text:r})}if(("toolresult"===(e.role??"").toLowerCase()||"tool_result"===(e.role??"").toLowerCase()||e.toolCallId||e.tool_call_id||e.toolName||e.tool_name)&&!t.some(e=>"result"===e.kind)){let n=e.toolName??e.tool_name??"tool",r=tT(e)??void 0;t.push({kind:"result",name:n,text:r})}return t}(e),internal:i}}let tK=[1200,3500,7500];function tP(){return new eI.rL({api:"/api/chat"})}let tI=tP(),tF=new eP.ry({transport:tI});function tO({variant:e="default"}){let t,{chatPanelOpen:n,setChatPanelOpen:a,activePage:l}=(0,M.M)(),o=(0,K.z)(e=>e.connected),u=(0,K.z)(e=>e.wsStatus),h=(0,K.z)(e=>e.reason),x=(0,K.z)(e=>e.wsError),p=(0,K.z)(e=>e.error),g=(0,K.z)(e=>e.agentStatus),f=(0,tl.W)(e=>e.setSessionKey),b=(0,tl.W)(e=>e.loadChangeSets),v=n||"default"!==e,[w,j]=(0,s.useState)("main"),y=(0,s.useRef)("main"),N=(0,s.useRef)(!1),[k,S]=(0,s.useState)(600),[A,E]=(0,s.useState)(!1),$=(0,s.useRef)(0),z=(0,s.useRef)(600),R="default"===e,T=(0,s.useCallback)(e=>Math.max(400,Math.min(e,Math.round(.4*window.innerWidth))),[]);(0,s.useEffect)(()=>{if(!R)return;let e=()=>{S(e=>T(e))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[T,R]),(0,s.useEffect)(()=>{if(!A)return;let e=e=>{let t=$.current-e.clientX;S(T(z.current+t))},t=()=>{E(!1)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t),document.body.style.cursor="",document.body.style.userSelect=""}},[T,A]),(0,s.useEffect)(()=>{y.current=w},[w]),(0,s.useEffect)(()=>{v&&(f(w),b())},[v,w,f,b]),(0,s.useEffect)(()=>{if(!v)return;let e=!1;return fetch("/api/gateway/resolve?key=main").then(e=>e.ok?e.json():null).then(t=>{if(e||!t)return;let n="string"==typeof t.resolved?t.resolved.trim():"";n&&(N.current=!0,n!==y.current&&j(n))}).catch(()=>{}),()=>{e=!0}},[v]);let D=(0,s.useRef)(0),{history:_,loading:L,loadingMore:P,hasMore:I,loadMore:F,refetchHistory:O}=function(e,t,n){let[r,a]=(0,s.useState)([]),[l,i]=(0,s.useState)(300),[o,c]=(0,s.useState)(!0),[d,u]=(0,s.useState)(!1),m=(0,s.useRef)(null),h=(0,s.useRef)(0),x=(0,s.useRef)(0),p=(0,s.useRef)(0),g=(0,s.useCallback)(async e=>{let t=n||"main",r=x.current+1;x.current=r;let s=e?.silent===!0;s||(p.current+=1,c(!0));try{let n=await fetch(`/api/gateway/history?limit=1000&sessionKey=${encodeURIComponent(t)}`,{cache:"no-store"}),s=n.ok?await n.json():{messages:[]};if(r!==x.current)return;let l=Array.isArray(s?.messages)?s.messages:[],i=e?.preserveExistingOnEmpty!==!1;a(e=>i&&0===l.length&&e.length>0?e:l)}catch{}finally{s||(p.current=Math.max(0,p.current-1),0===p.current&&c(!1))}},[n]),f=(0,s.useCallback)(e=>!e?.force&&Date.now()-t.current<5e3?Promise.resolve():g({silent:!0}),[g,t]),b=(0,s.useMemo)(()=>r.length<=l?r:r.slice(r.length-l),[r,l]),v=r.length>l,w=(0,s.useCallback)(()=>{u(!0),setTimeout(()=>{i(e=>Math.min(e+100,r.length)),u(!1)},100)},[r.length]);return(0,s.useEffect)(()=>{m.current!==n&&(m.current=n,h.current=0,i(300),g())},[n,g]),(0,s.useEffect)(()=>{if(e){if(r.length>0){h.current=0;return}o||h.current>=3||(h.current+=1,g())}},[e,r.length,o,g]),{history:b,allMessages:r,loading:o,loadingMore:d,hasMore:v,loadMore:w,refetchHistory:f}}(v,D,w),[W,q]=(0,s.useState)(tF),{messages:U,sendMessage:B,addToolApprovalResponse:H,status:Z,stop:J,error:G}=(0,eP.Y_)({chat:W}),V=(0,s.useRef)(null),X=(0,s.useRef)(null),Q=(0,s.useRef)(null),Y=(0,s.useRef)(null),ee=(0,s.useRef)(null),et=(0,s.useRef)(null),en=(0,s.useRef)(null),er="streaming"===Z||"submitted"===Z,ea=(0,s.useRef)(null),[ei,eo]=(0,s.useState)(null),[ec,ed]=(0,s.useState)(!0),[eu,em]=(0,s.useState)([]),[eh,ex]=(0,s.useState)(!1),[ep,eg]=(0,s.useState)(""),[ef,eb]=(0,s.useState)([]),[ev,ew]=(0,s.useState)(!1),[ej,ey]=(0,s.useState)(0),[eN,ek]=(0,s.useState)([]),[eC,eS]=(0,s.useState)(!1),[eA,eE]=(0,s.useState)(""),[e$,ez]=(0,s.useState)([]),[eR,eT]=(0,s.useState)(!1),[eD,e_]=(0,s.useState)(0),eL="connected"!==u,eM=(t=x?.match(/pairing required\s*\(request\s+([^)]+)\)/i),t?.[1]?.trim()||null),[eK,eI]=(0,s.useState)(!1),eV=eK&&!1,eX=(0,ta.b)(e=>e.events),eQ=(0,ta.b)(e=>e.lastEvent),eY=(0,ts.e)(e=>e.items),[e0,e1]=(0,s.useState)(null),e5=(0,s.useRef)(null),e2=(0,s.useRef)(0),e4=(0,s.useRef)(0),[e3,e6]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{if("idle"===g&&"submitted"!==Z&&"streaming"!==Z)return;let e=setInterval(()=>{e6(Date.now())},1e3);return()=>clearInterval(e)},[g,Z]);let e9=(0,s.useMemo)(()=>{let e=[...U].reverse().find(e=>"assistant"===e.role);return!!e&&t0(e).trim().length>0},[U]),e8=(0,s.useMemo)(()=>{let e=eY.find(e=>"tool-used"===e.type||"sub-agent"===e.type);return e?.timestamp??null},[eY]),e7=(0,s.useMemo)(()=>{if("reconnecting"===u)return{kind:"background",label:"Reconnecting...",detail:x||"Trying to restore the gateway stream"};if("connecting"===u)return{kind:"background",label:"Connecting...",detail:x||"Connecting to the gateway"};if("disconnected"===u)return{kind:"alert",label:"server_unreachable"===h?"ClawPad server unreachable":"Gateway unavailable",detail:x||p||("server_unreachable"===h?"ClawPad is not reachable from this browser.":"OpenClaw gateway is not reachable."),tone:"warn"};let e=eQ&&("alert"===eQ.indicatorType||"error"===eQ.indicatorType)&&!eQ.silent?eQ:null;if(e){let t=tS(e);return{kind:"alert",label:"error"===e.indicatorType?"Background error":"Background alert",detail:t||void 0,tone:"error"===e.indicatorType?"error":"warn"}}return"submitted"===Z?{kind:"thinking",label:"Thinking..."}:"streaming"===Z?e9?{kind:"writing",label:"Writing response..."}:{kind:"thinking",label:"Thinking..."}:"thinking"===g?{kind:"thinking",label:"Thinking..."}:"active"===g&&"number"==typeof e8&&e3-e8<=15e3?{kind:"background",label:"Working on a background task..."}:null},[g,p,h,e9,eQ,e8,Z,e3,x,u]);(0,s.useEffect)(()=>{e5.current&&(clearTimeout(e5.current),e5.current=null);let e=Date.now();if(e7){e4.current=e,e1(t=>!t&&!e7||t&&e7&&t.kind===e7.kind&&t.label===e7.label&&t.detail===e7.detail&&t.tone===e7.tone?t:(e2.current=e,e7));return}if(!e0)return;let t="alert"===e0.kind?5e3:"background"===e0.kind?3e3:1500,n="alert"===e0.kind?6e3:2500,r=Math.max(Math.max(e2.current+t,e4.current+n)-e,0);return 0===r?void e1(null):(e5.current=setTimeout(()=>{e1(null),e5.current=null},r),()=>{e5.current&&(clearTimeout(e5.current),e5.current=null)})},[e7,e0]),(0,s.useEffect)(()=>{if(!l)return void eo(null);let e=!1;return ed(!0),(async()=>{try{let t=await fetch(`/api/files/pages/${encodeURIComponent(l)}`);if(!t.ok)throw Error("Failed to load page");let n=await t.json();if(e)return;let r=n?.meta;if(r?.path)return void eo(tb({title:r.title,path:r.path,space:r.space,modified:r.modified}))}catch{}e||eo(tb({title:tf(l),path:l}))})(),()=>{e=!0}},[l]);let te=(0,s.useCallback)(()=>{let e={};ec&&ei&&(e.activePage=ei);let t=eu.filter(t=>!e.activePage||t.path!==e.activePage.path);return t.length>0?(e.attachedPages=t,e.scope="custom"):e.activePage&&(e.scope="current"),Object.keys(e).length>0?e:null},[ei,eu,ec]),tr=(0,s.useCallback)(()=>{let e=X.current;if(!e)return;let t=e.value,n=e.selectionStart??t.length,r=t.slice(0,n),s=r.lastIndexOf("@");if(-1===s){ex(!1),eg(""),Y.current=null;return}let a=r[s-1],l=!a||/[\s([{]/.test(a),i=r.slice(s+1);if(!l||/\s/.test(i)){ex(!1),eg(""),Y.current=null;return}Y.current={start:s,end:n},eg(i),ex(!0),eS(!1),eE(""),et.current=null},[]),ti=(0,s.useCallback)(async()=>{if(!eR&&!(e$.length>0)){eT(!0);try{let e=await fetch("/api/openclaw/commands"),t=e.ok?await e.json():null,n=Array.isArray(t?.commands)?t.commands.filter(e=>!!(e&&"string"==typeof e.name)).map(e=>({name:e.name,description:e.description??"",disabled:e.disabled})):[];ez(n),e_(0)}catch{ez([])}finally{eT(!1)}}},[e$.length,eR]),to=(0,s.useCallback)(()=>{let e=X.current;if(!e)return;let t=e.value,n=e.selectionStart??t.length,r=t.slice(0,n),s=r.lastIndexOf("/");if(-1===s){eS(!1),eE(""),et.current=null;return}let a=r[s-1],l=!a||/[\s([{]/.test(a),i=r.slice(s+1);if(!l||/\s/.test(i)){eS(!1),eE(""),et.current=null;return}et.current={start:s,end:n},eE(i),eS(!0),ex(!1),eg(""),Y.current=null,ti()},[ti]),tc=(0,s.useCallback)(e=>{let t=X.current,n=et.current;if(!t||!n)return;let r=t.value,s=r.slice(0,n.start),a=r.slice(n.end),l=`/${e}`,i=a.startsWith(" ")?"":" ",o=`${s}${l}${i}${a}`,c=s.length+l.length+i.length;t.value=o,t.setSelectionRange(c,c),t.focus(),eS(!1),eE(""),et.current=null,requestAnimationFrame(()=>{let e=X.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,150)}px`)})},[]),td=(0,s.useCallback)(e=>{let t=X.current,n=Y.current;if(!t||!n)return;let r=t.value,s=r.slice(0,n.start),a=r.slice(n.end),l=`@${e.title}`,i=a.startsWith(" ")?"":" ",o=`${s}${l}${i}${a}`,c=s.length+l.length+i.length;t.value=o,t.setSelectionRange(c,c),t.focus(),em(t=>t.some(t=>t.path===e.path)?t:[...t,e]),ex(!1),eg(""),Y.current=null,requestAnimationFrame(()=>{let e=X.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,150)}px`)})},[]),tu=(0,s.useCallback)(()=>{let e=X.current;if(!e)return;let t=e.value,n=e.selectionStart??t.length,r=e.selectionEnd??n;e.value=`${t.slice(0,n)}@${t.slice(r)}`;let s=n+1;e.setSelectionRange(s,s),e.focus(),tr()},[tr]);(0,s.useEffect)(()=>{if(!eh)return void ew(!1);let e=!1,t=ep.trim();!t&&eN.length>0&&eb(eN);let n=setTimeout(async()=>{if(!e){ew(!0);try{let n=t?`/api/files/search?q=${encodeURIComponent(t)}&limit=8`:"/api/files/recent?limit=8",r=await fetch(n),s=r.ok?await r.json():[];if(e)return;let a=Array.isArray(s)?s.map(e=>tb(e)):[];eb(a),t||ek(a),ey(0)}catch{e||eb([])}finally{e||ew(!1)}}},150);return()=>{e=!0,clearTimeout(n)}},[eh,ep,eN]),(0,s.useEffect)(()=>{v&&ti()},[v,ti]),(0,s.useEffect)(()=>{if(!v)return;let e=!1;return(async()=>{try{let t=await fetch("/api/files/recent?limit=8");if(!t.ok)return;let n=await t.json();if(e)return;let r=Array.isArray(n)?n.map(e=>tb(e)):[];ek(r)}catch{}})(),()=>{e=!0}},[v]),(0,s.useEffect)(()=>{v||(ex(!1),eg(""),Y.current=null,eS(!1),eE(""),et.current=null)},[v]),(0,s.useEffect)(()=>{if(!eh)return;let e=e=>{let t=e.target;ee.current&&!ee.current.contains(t)&&(ex(!1),eg(""),Y.current=null)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[eh]),(0,s.useEffect)(()=>{if(!eC)return;let e=e=>{let t=e.target;en.current&&!en.current.contains(t)&&(eS(!1),eE(""),et.current=null)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[eC]);let[tm,tx]=(0,s.useState)([]),tp=(0,s.useRef)(null),tv=(0,s.useRef)([]),tj=(0,s.useRef)(null),ty=(0,s.useRef)(null),tN=(0,s.useRef)(""),tC=(0,s.useRef)(new Map),tA=(0,s.useRef)([]),tE=(0,s.useRef)(null),t$=(0,s.useRef)(null),[tT,tL]=(0,s.useState)([]),tI=(0,s.useCallback)(()=>{tL(tA.current.map(e=>tC.current.get(e)).filter(e=>!!e))},[]),tO=(0,s.useCallback)((e=!1)=>{if(e){tE.current&&(clearTimeout(tE.current),tE.current=null),tI();return}tE.current||(tE.current=setTimeout(()=>{tE.current=null,tI()},80))},[tI]),tB=(0,s.useCallback)(()=>{tC.current.clear(),tA.current=[],t$.current=null,tE.current&&(clearTimeout(tE.current),tE.current=null),tL([])},[]);(0,s.useEffect)(()=>{let e=tp.current;e&&("streaming"===Z?tx(t=>t.map(t=>t.id===e&&"sending"===t.status?{...t,status:"sent"}:t)):"ready"===Z&&(tx(t=>t.map(t=>t.id===e&&("sending"===t.status||"streaming"===t.status)?{...t,status:"sent"}:t)),tp.current=null))},[Z]),(0,s.useEffect)(()=>{if(G&&tp.current){let e=tp.current;tx(t=>t.map(t=>t.id===e?{...t,status:"error"}:t)),tp.current=null}},[G]);let tJ=(0,s.useRef)(!0),tG=(0,s.useRef)(0),[tV,tX]=(0,s.useState)(0),tY=(0,s.useCallback)((e="smooth")=>{let t=V.current;if(!t)return;let n=t.scrollHeight-t.clientHeight;t.scrollTo({top:n>0?n:0,behavior:e})},[]),t5=(0,s.useCallback)(()=>{let e=V.current;!e||(tJ.current=e.scrollHeight-e.scrollTop-e.clientHeight<100,tJ.current&&tX(0))},[]),t2=(0,s.useCallback)(e=>{if("tool"!==e.stream)return;let t="string"==typeof e.sessionKey?e.sessionKey:void 0,n=y.current||"main";if(N.current&&t&&t!==n)return;let r="string"==typeof e.runId?e.runId:"unknown",s=e.data??{},a="string"==typeof s.toolCallId?s.toolCallId:"";if(!a)return;let l="string"==typeof s.name?s.name:"tool",i="string"==typeof s.phase?s.phase:"unknown",o="start"===i||"update"===i||"result"===i||"error"===i?i:"unknown",c="start"===o?s.args:void 0,d="update"===o?t_(s.partialResult):"result"===o?t_(s.result):"error"===o?t_(s.error??s.result):void 0,u=Date.now();t$.current&&t$.current!==r&&"start"===o&&tB(),t$.current=r;let m=tC.current.get(a);if(m?(m.name=l,m.phase=o,void 0!==c&&(m.args=c),void 0!==d&&(m.output=d),m.updatedAt=u):(m={toolCallId:a,runId:r,sessionKey:t,name:l,args:c,output:d,phase:o,startedAt:"number"==typeof e.ts?e.ts:u,updatedAt:u},tC.current.set(a,m),tA.current.push(a)),tA.current.length>50){let e=tA.current.length-50;for(let t of tA.current.splice(0,e))tC.current.delete(t)}tO("result"===o||"error"===o)},[tB,tO]),t4=(0,s.useMemo)(()=>{let e=[];for(let t of _){let n=tM(t);if(!n.internal)continue;let r=(n.displayText?.trim()??"").replace(/^System:\s*/i,"").trim();if(!r)continue;let{kind:s,tone:a}=function(e){let t=e.toLowerCase(),n=t.startsWith("heartbeat")||t.includes("heartbeat_ok")||t.includes("heartbeat"),r=/error|failed|denied|blocked|timeout|unavailable/i.test(t),s=/\[network\]|warning|alert/i.test(t);return r?{kind:"alert",tone:"error"}:s?{kind:"alert",tone:"warn"}:n?{kind:"heartbeat"}:{kind:"system"}}(r);e.push({id:`sys-${n.timestamp}-${e.length}`,kind:s,tone:a,text:r,timestamp:n.timestamp,source:"system"})}return e},[_]),t3=(0,s.useMemo)(()=>{let e=[];return eX.forEach((t,n)=>{let r=tS(t);if(!r)return;let s="alert"===t.indicatorType||"error"===t.indicatorType;e.push({id:`hb-${t.ts}-${n}`,kind:s?"alert":"heartbeat",tone:"error"===t.indicatorType?"error":s?"warn":void 0,text:r,timestamp:t.ts,source:"heartbeat"})}),e},[eX]),t6=(0,s.useMemo)(()=>{let e=[...t4,...t3].sort((e,t)=>t.timestamp-e.timestamp),t=new Set,n=[];for(let r of e){let e=`${r.source}-${r.timestamp}-${r.text}`;t.has(e)||(t.add(e),n.push(r))}return n},[t4,t3]),t9=(0,s.useMemo)(()=>{var e=function(e,t,n,r,s,a){let l=[],i=new Map;for(let n=0;n<e.length;n+=1){let r=e[n];i.set(r,n);let s=tM(r);!s.internal&&(t||"tool"!==s.role)&&l.push({kind:"message",normalized:s})}for(let t of n){let n=tz(t.text),r=(t.images?.length??0)>0;l.some(s=>{var a,l;if("message"!==s.kind)return!1;let o=s.normalized;if(o.role!==t.role||r&&!(Array.isArray((a=o.raw).content)&&a.content.some(e=>{let t=(e.type??"").toLowerCase();return"input_image"===t||"image"===t})))return!1;let c=tD(o.raw),d=c?function(e){if(!e.includes("[message_id:"))return null;for(let t of e.split(/\r?\n/)){let e=t.match(tk);if(e)return(e[1]??"").trim()||null}return null}(c):null;if(d&&d===t.id)return!0;let u=tz(o.displayText);if(!u||!n||u!==n)return!1;let m="number"==typeof(l=o.raw.timestamp)&&Number.isFinite(l)?l<1e12?1e3*l:l:null;if(null!==m){let e=3e5>Math.abs(m-t.timestamp),n=m>=t.timestamp-5e3;return e&&n}let h=i.get(o.raw);return"number"==typeof h&&h>=e.length-5})||l.push({kind:"optimistic",message:t})}if(t)for(let e of r)l.push({kind:"tool-stream",entry:e});if(a&&s.length>0){let e=s[s.length-1];"assistant"===e.role&&l.push({kind:"stream",message:e,isStreaming:a})}return l}(_,eK,tm,tT,U,er);let t=[],n=null;for(let r of e)if("message"===r.kind)n&&n.role===r.normalized.role?n.messages.push(r.normalized):(n&&t.push(n),n={kind:"group",role:r.normalized.role,messages:[r.normalized],timestamp:r.normalized.timestamp});else if(n&&(t.push(n),n=null),"optimistic"===r.kind)t.push({kind:"optimistic-group",messages:[r.message]});else if("tool-stream"===r.kind){let e=t[t.length-1];e&&"tool-stream-group"===e.kind?e.entries.push(r.entry):t.push({kind:"tool-stream-group",entries:[r.entry]})}else"stream"===r.kind?t.push({kind:"stream-group",message:r.message,isStreaming:r.isStreaming}):"indicator"===r.kind&&t.push({kind:"indicator-group",status:r.status});return n&&t.push(n),t},[_,eK,tm,tT,U,er]),t8=t9.length>0||eK&&t6.length>0;(0,s.useEffect)(()=>{let e=t9.length;if(0===tG.current&&e>0){tG.current=e,tJ.current=!0,v&&requestAnimationFrame(()=>tY("auto"));return}tJ.current?requestAnimationFrame(()=>tY("smooth")):e>tG.current&&tG.current>0&&tX(t=>t+(e-tG.current)),tG.current=e},[t9.length,tY,v]);let t7=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(!v){t7.current=!1;return}!L&&(t7.current||(t7.current=!0,tJ.current=!0,tX(0),requestAnimationFrame(()=>{tY("auto"),setTimeout(()=>tY("auto"),150)})))},[v,L,tY]);let ne=(0,s.useRef)(null),nt=(0,s.useCallback)(()=>{let e=V.current;e&&(ne.current={prevScrollHeight:e.scrollHeight,prevScrollTop:e.scrollTop}),F()},[F]);(0,s.useLayoutEffect)(()=>{let e=ne.current;if(!e)return;let t=V.current;if(!t)return;let n=t.scrollHeight-e.prevScrollHeight;0!==n&&(t.scrollTop=e.prevScrollTop+n),ne.current=null},[t9.length]),(0,s.useEffect)(()=>{er&&tJ.current&&requestAnimationFrame(()=>tY("smooth"))},[er,U,tT,tY]),(0,s.useEffect)(()=>{if(!v)return;let e=null,t=null,n=!1,r=!1,s=null,a=(e=!1)=>{n=n||e,t&&clearTimeout(t),t=setTimeout(()=>{let e=n;n=!1,t=null,O({force:e})},e?80:250)};return!function t(){r||((e=new EventSource("/api/gateway/events")).addEventListener("gateway",e=>{try{let n=JSON.parse(e.data);if("number"==typeof n.seq&&(null!==s&&n.seq>s+1&&a(!0),s=n.seq),"agent"===n.event&&n.payload&&t2(n.payload),"chat"===n.event&&n.payload){var t;let e,r,s=n.payload,l=y.current||"main";if(N.current&&s.sessionKey&&(t=s.sessionKey,e=t.trim(),r=l.trim(),e&&r&&e!==r&&tR(e)!==tR(r)))return;let i=s.state;a("final"===i||"error"===i||"aborted"===i)}}catch{}}),e.onerror=()=>{e?.close(),e=null,r||setTimeout(t,5e3)})}(),()=>{r=!0,t&&clearTimeout(t),n=!1,e?.close()}},[t2,v,O]),(0,s.useEffect)(()=>{if(!v)return;let e=window.setInterval(()=>{O()},5e3);return()=>{window.clearInterval(e)}},[v,O]);let[nn,nr]=(0,s.useState)([]),[ns,na]=(0,s.useState)({}),[nl,ni]=(0,s.useState)(!1),no=(0,s.useCallback)(async e=>{let t=await tw(e);t.length>0&&(nr(e=>[...e,...t]),X.current?.focus())},[]),nc=(0,s.useCallback)(e=>{nr(t=>t.filter(t=>t.id!==e))},[]),nd=(0,s.useCallback)(e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of Array.from(t))if("file"===e.kind&&tg.includes(e.type)){let t=e.getAsFile();t&&n.push(t)}n.length>0&&(e.preventDefault(),no(n))},[no]),nu=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer?.types.includes("Files")&&ni(!0)},[]),nm=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation();let t=e.currentTarget.getBoundingClientRect(),{clientX:n,clientY:r}=e;(n<=t.left||n>=t.right||r<=t.top||r>=t.bottom)&&ni(!1)},[]),nh=(0,s.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),ni(!1);let t=Array.from(e.dataTransfer?.files??[]).filter(e=>tg.includes(e.type));t.length>0&&no(t)},[no]),nx=(0,s.useCallback)(e=>{let t=Array.from(e.target.files??[]);t.length>0&&no(t),e.target.value=""},[no]),np=(0,s.useCallback)(()=>{q(new eP.ry({transport:tP()})),nr([]),em([]),ed(!0),ex(!1),eg(""),Y.current=null,tx([]),na({}),tB(),tp.current=null,X.current&&(X.current.value="",X.current.style.height="auto",X.current.focus())},[tB]);(0,s.useEffect)(()=>{if("default"===e)return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t);function t(e){e.metaKey&&e.shiftKey&&"l"===e.key&&(e.preventDefault(),a(!0))}},[a,e]),(0,s.useEffect)(()=>{if(n||"default"!==e){let e=setTimeout(()=>{X.current?.focus()},100);return()=>clearTimeout(e)}},[n,e]);let ng=(0,s.useCallback)(async(e,t)=>{if(eL)return;let n=nn.length>0;if(!e.trim()&&!n)return;let r=e.trim()||(n?"What's in this image?":"");if(!r)return;tB();let s=t?.messageId?.trim()||crypto.randomUUID(),a=nn.map(e=>e.dataUrl),l={id:s,role:"user",text:r,images:a.length>0?a:void 0,timestamp:Date.now(),status:"sending"};tx(e=>[...e,l]),a.length>0&&na(e=>({...e,[s]:a})),tp.current=s,D.current=Date.now(),nr([]),X.current&&(X.current.value="",X.current.style.height="auto"),ex(!1),eg(""),Y.current=null;let i=te();for(let e of tK)window.setTimeout(()=>{O({force:!0})},e);try{await B({text:r},{body:{sessionKey:y.current||"main",pageContext:i?.activePage?.path??void 0,context:i??void 0,images:a.length>0?a:void 0}}),setTimeout(()=>{tx(e=>e.map(e=>e.id===s&&"sending"===e.status?{...e,status:"sent"}:e))},2e3)}catch(e){console.error("[chat] sendMessage error:",e),t?.messageId&&(tv.current=tv.current.filter(e=>e!==t.messageId),ty.current===t.messageId&&(ty.current=null,tN.current="")),tx(e=>e.map(e=>e.id===s?{...e,status:"error"}:e))}},[eL,B,nn,te,O,tB]);(0,s.useEffect)(()=>{let e=e=>{let t=e.detail??{},r=t.messageId?.trim()||crypto.randomUUID(),s=function(e,t){if(e.message&&e.message.trim()){let t=[e.message.trim()];return e.messageId?.trim()&&t.push(`[message_id: ${e.messageId.trim()}]`),t.join("\n\n")}if(!e.action)return null;let n=e.selection?.trim()??"",r=(e.pagePath??t??"").trim(),s=n.length>0,a="continue"===e.action?s?"context below":"referenced page":s?"selected text":"referenced page",l=[function(e,t){switch(e){case"improve":return`Improve the writing of the ${t}. Return only the improved text.`;case"simplify":return`Simplify the ${t} while preserving meaning. Return only the simplified text.`;case"expand":return`Expand the ${t} with more detail while preserving meaning. Return only the expanded text.`;case"summarize":return`Summarize the ${t} concisely. Return only the summary.`;case"fix-grammar":return`Fix grammar, spelling, and punctuation in the ${t}. Return only the corrected text.`;case"continue":return`Continue writing from the ${t}. Return only the continuation.`;default:return`Please help with the ${t}.`}}(e.action,a)];return r&&l.push(`Reference: ${r}`),n&&l.push(`Selected text:
|
|
4
|
+
"""
|
|
5
|
+
${n}
|
|
6
|
+
"""`),e.messageId?.trim()&&l.push(`[message_id: ${e.messageId.trim()}]`),l.join("\n\n")}({...t,messageId:r},l);s&&(n||a(!0),t.selection?.trim()&&tv.current.push(r),ng(s,{messageId:r}))};return window.addEventListener("clawpad:ai-action",e),()=>window.removeEventListener("clawpad:ai-action",e)},[ng,l,n,a]),(0,s.useEffect)(()=>{if("ready"===Z){ty.current=null,tN.current="";return}if("streaming"!==Z)return;let e=tv.current[0];if(!e)return;ty.current||(ty.current=e);let t=[...U].reverse().find(e=>"assistant"===e.role);if(!t)return;let n=t0(t);n.trim()&&n!==tN.current&&(tN.current=n,window.dispatchEvent(new CustomEvent("clawpad:ai-stream",{detail:{messageId:ty.current,text:n}})))},[U,Z]),(0,s.useEffect)(()=>{let e=ea.current;if(ea.current=Z,"ready"!==Z||"ready"===e||0===tv.current.length)return;let t=[...U].reverse().find(e=>"assistant"===e.role),n=tv.current[0];if(!t||!n)return void tv.current.shift();let r=t0(t);if(!r.trim())return void tv.current.shift();let s=tv.current.shift();s&&tj.current!==s&&(tj.current=s,ty.current=null,tN.current="",window.dispatchEvent(new CustomEvent("clawpad:ai-result",{detail:{messageId:s,text:r.trim()}})))},[U,Z]);let nf=(0,s.useCallback)(async()=>{J();try{await fetch("/api/chat/abort",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionKey:w})})}catch{}},[w,J]),nb=(0,s.useCallback)(e=>{tx(t=>t.filter(t=>t.id!==e.id)),e.images&&e.images.length>0?(nr(e.images.map((e,t)=>({id:crypto.randomUUID(),dataUrl:e,name:`image-${t}`}))),setTimeout(()=>{ng(e.text)},0)):ng(e.text)},[ng]),nv=(0,s.useCallback)(e=>{e.preventDefault(),!eL&&X.current&&ng(X.current.value)},[eL,ng]),nw=(0,s.useCallback)(e=>{if(eC){let t=eA.trim().toLowerCase(),n=0===t.length?e$:e$.filter(e=>e.name.toLowerCase().includes(t)),r=n.length>0?n:e$.slice(0,12);if("ArrowDown"===e.key){e.preventDefault(),e_(e=>0===r.length?0:(e+1)%r.length);return}if("ArrowUp"===e.key){e.preventDefault(),e_(e=>0===r.length?0:(e-1+r.length)%r.length);return}if("Enter"===e.key&&!e.shiftKey){e.preventDefault();let t=r[eD]??r[0];t?tc(t.name):(eS(!1),eE(""),et.current=null);return}if("Escape"===e.key){e.preventDefault(),eS(!1),eE(""),et.current=null;return}}if(eh){let t=ep.trim()||ef.length>0?ef:eN;if("ArrowDown"===e.key){e.preventDefault(),ey(e=>0===t.length?0:(e+1)%t.length);return}if("ArrowUp"===e.key){e.preventDefault(),ey(e=>0===t.length?0:(e-1+t.length)%t.length);return}if("Enter"===e.key&&!e.shiftKey){e.preventDefault();let n=t[ej]??t[0];if(n)td(n);else{ex(!1),eg(""),Y.current=null;let t=e.target.value;(t||nn.length>0)&&ng(t||"")}return}if("Escape"===e.key){e.preventDefault(),ex(!1),eg(""),Y.current=null;return}}if("Enter"===e.key&&!e.shiftKey){e.preventDefault();let t=e.target.value;(t||nn.length>0)&&ng(t||"")}},[nn.length,td,tc,ng,ej,eh,ep,ef,eN,e$,eD,eC,eA]),nj=(0,s.useCallback)(()=>{let e=X.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,150)}px`,to(),tr())},[tr,to]),ny="default"===e&&!n,nN=ei?.title??(l?l.split("/").pop()?.replace(/\.md$/,"").replace(/-/g," ")??null:null),nk="fullscreen"===e,nC="sheet"===e,nS=(0,s.useMemo)(()=>{let e=[];for(let t of(ec&&ei&&e.push({key:`current-${ei.path}`,page:ei,kind:"current"}),eu))e.some(e=>e.page.path===t.path)||e.push({key:`attached-${t.path}`,page:t,kind:"attached"});return e},[ei,eu,ec]),nA=ep.trim()||ef.length>0?ef:eN,nE=e$.filter(e=>!!(e&&"string"==typeof e.name)),n$=eA.trim().toLowerCase(),nz=0===n$.length?nE:nE.filter(e=>e.name.toLowerCase().includes(n$)),nR=nz.length>0?nz.slice(0,12):nE.slice(0,12),nT=(0,s.useCallback)(e=>{R&&(e.preventDefault(),$.current=e.clientX,z.current=k,E(!0))},[R,k]);return(0,r.jsxs)("div",{onDragOver:nu,onDragLeave:nm,onDrop:nh,className:(0,c.cn)("relative flex flex-col bg-background",ny&&"hidden","default"===e&&"h-full shrink-0 border-l",nC&&"h-full w-full",nk&&"h-full w-full"),style:"default"===e?{width:k,minWidth:400,maxWidth:"40vw"}:void 0,children:[R&&(0,r.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize chat panel",onPointerDown:nT,className:(0,c.cn)("absolute left-0 top-0 z-20 h-full w-2 cursor-col-resize","group"),children:(0,r.jsx)("div",{className:(0,c.cn)("absolute inset-y-0 left-0 w-px bg-border/70","transition-colors group-hover:bg-[color:var(--cp-brand-2)]",A&&"bg-[color:var(--cp-brand-2)]")})}),nl&&(0,r.jsx)("div",{className:"pointer-events-none absolute inset-0 z-50 flex items-center justify-center rounded-lg border-2 border-dashed border-blue-500 bg-blue-50/60 dark:bg-blue-950/40",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 text-blue-600 dark:text-blue-400",children:[(0,r.jsx)(eF.A,{className:"h-8 w-8"}),(0,r.jsx)("span",{className:"text-sm font-medium",children:"Drop image here"})]})}),(0,r.jsxs)("div",{className:(0,c.cn)("flex shrink-0 items-center justify-between border-b px-4",nk?"h-14":"h-12"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,r.jsx)(el.A,{className:"h-4 w-4 shrink-0 text-[color:var(--cp-brand-2)]"}),(0,r.jsx)("span",{className:"text-sm font-medium",children:"Chat"}),(0,r.jsx)(tW,{connected:o,wsStatus:u,agentStatus:g})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:(0,c.cn)("h-8 w-8 text-muted-foreground hover:text-foreground",eK&&"text-[color:var(--cp-brand-2)] hover:text-[color:var(--cp-brand-2)]"),onClick:()=>eI(!eK),title:eK?"Hide details":"Show details","aria-pressed":eK,"aria-label":eK?"Hide details":"Show details",children:eK?(0,r.jsx)(eO.A,{className:"h-4 w-4"}):(0,r.jsx)(eW.A,{className:"h-4 w-4"})}),(0,r.jsx)(d.$,{variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-foreground",onClick:np,title:"New chat",children:(0,r.jsx)(eq.A,{className:"h-4 w-4"})})]})]}),eL&&(0,r.jsx)("div",{className:"border-b border-amber-500/30 bg-amber-500/10 px-4 py-2 text-xs text-amber-700 dark:text-amber-300",children:"reconnecting"===u?x?.toLowerCase().includes("pairing required")?eM?`Gateway reachable, but pairing is required (request ${eM}). Approve this device in OpenClaw and ClawPad will reconnect automatically.`:"Gateway reachable, but pairing is required. Approve this device in OpenClaw and ClawPad will reconnect automatically.":x?`Reconnecting to OpenClaw gateway… (${x})`:"Reconnecting to OpenClaw gateway…":"server_unreachable"===h?"ClawPad server is unreachable from this browser.":"OpenClaw gateway is unavailable. Start or restart the gateway to resume chat."}),(0,r.jsx)("div",{ref:V,onScroll:t5,className:"flex-1 min-h-0 min-w-0 overflow-y-auto",children:(0,r.jsxs)("div",{className:"relative flex min-h-full flex-col gap-4 p-4 pb-[calc(8rem+env(safe-area-inset-bottom,0px))] min-w-0 overflow-hidden",children:[!t8&&!L&&(0,r.jsx)(tq,{pageTitle:nN}),L&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-8 text-muted-foreground",children:[(0,r.jsx)(eU.A,{className:"h-3.5 w-3.5 animate-spin"}),(0,r.jsx)("span",{className:"text-xs",children:"Loading history…"})]}),I&&!L&&(0,r.jsx)("div",{className:"flex justify-center py-2",children:(0,r.jsxs)("button",{onClick:nt,disabled:P,className:"mx-auto flex items-center gap-2 rounded-full bg-muted/60 px-4 py-2 text-xs text-muted-foreground hover:bg-muted transition-colors",children:[P?(0,r.jsx)(eU.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(es.A,{className:"h-3 w-3"}),"Load earlier messages"]})}),eK&&t6.length>0&&(0,r.jsx)(tU,{events:t6}),t9.map((e,t)=>{if("group"===e.kind)return(0,r.jsx)(tZ,{group:e,showReasoning:eV,showTools:eK},`g-${t}-${e.timestamp}`);if("optimistic-group"===e.kind)return e.messages.map(e=>(0,r.jsx)(tQ,{message:e,images:ns[e.id],onRetry:nb},e.id));if("tool-stream-group"===e.kind){let n=e.entries[e.entries.length-1],s=n?`tool-batch-${n.toolCallId}-${n.updatedAt}`:`tool-batch-${t}`;return(0,r.jsx)(tH,{entries:e.entries},s)}return"stream-group"===e.kind?(0,r.jsx)(t1,{message:e.message,isLatest:!0,isStreaming:e.isStreaming,showThinking:eK,onToolApprove:e=>H({id:e,approved:!0}),onToolDeny:e=>H({id:e,approved:!1,reason:"Denied by user"})},`stream-${e.message.id}`):null}),G&&!tm.some(e=>"error"===e.status)&&(0,r.jsxs)(tt.P.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},className:"flex items-start gap-2 rounded-lg border border-destructive/20 bg-destructive/5 p-3 text-sm text-destructive",children:[(0,r.jsx)(eB.A,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"font-medium",children:"Something went wrong"}),(0,r.jsx)("p",{className:"text-xs opacity-80 mt-0.5",children:G.message.includes("API key")?"No API key configured. Check your environment settings.":G.message})]})]})]})}),(0,r.jsx)(tn.N,{children:tV>0&&(0,r.jsxs)(tt.P.button,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:10},transition:{duration:.2},onClick:()=>{tY("smooth"),tX(0)},className:"absolute bottom-[4.5rem] left-1/2 -translate-x-1/2 z-10 flex items-center gap-1.5 rounded-full bg-blue-600 dark:bg-blue-500 px-3 py-1.5 text-xs font-medium text-white shadow-lg hover:bg-blue-700 dark:hover:bg-blue-600 transition-colors",children:[(0,r.jsx)(eH.A,{className:"h-3 w-3"}),tV," new message",1!==tV?"s":""]})}),!t8&&nN&&(0,r.jsx)("div",{className:"border-t px-4 py-2",children:(0,r.jsxs)("div",{className:"mb-2 flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{children:"Viewing:"}),(0,r.jsx)("span",{className:"font-medium capitalize text-foreground",children:nN})]})}),(0,r.jsxs)("div",{className:(0,c.cn)("shrink-0 border-t p-4",nk&&"pb-[calc(0.75rem+env(safe-area-inset-bottom,0px))]",nk&&"sticky bottom-0 bg-background"),children:[(0,r.jsx)(th,{status:e0}),nn.length>0&&(0,r.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:nn.map(e=>(0,r.jsxs)("div",{className:"group relative",children:[(0,r.jsx)("img",{src:e.dataUrl,alt:e.name,className:"h-16 w-16 rounded-lg border object-cover"}),(0,r.jsx)("button",{type:"button",onClick:()=>nc(e.id),className:"absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-destructive text-white opacity-0 transition-opacity group-hover:opacity-100 hover:bg-destructive/90",title:"Remove image",children:(0,r.jsx)(m.A,{className:"h-3 w-3"})}),(0,r.jsx)("div",{className:"absolute bottom-0 left-0 right-0 truncate rounded-b-lg bg-black/50 px-1 py-0.5 text-[9px] text-white",children:e.name})]},e.id))}),(0,r.jsxs)("form",{onSubmit:nv,className:"w-full",children:[(0,r.jsx)("input",{ref:Q,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",multiple:!0,className:"hidden",onChange:nx}),(0,r.jsxs)("div",{className:(0,c.cn)("relative flex w-full flex-col gap-2 rounded-2xl border bg-muted/30 px-4 py-3","shadow-[0_2px_5px_rgba(0,0,0,0.04)] transition-shadow duration-150","focus-within:shadow-[0_8px_14px_rgba(0,0,0,0.08)]",nk&&"min-h-[64px]"),ref:ee,children:[(nS.length>0||ei&&!ec)&&(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-[11px]",children:[(0,r.jsx)(d.$,{type:"button",size:"icon",variant:"ghost",className:(0,c.cn)("h-7 w-7 rounded-full text-muted-foreground/70 hover:text-foreground hover:bg-muted/60",eh&&"bg-muted/60 text-foreground"),onClick:tu,title:"Mention a page","aria-label":"Mention a page",disabled:er||eL,children:(0,r.jsx)(eZ.A,{className:"h-4 w-4"})}),nS.map(e=>(0,r.jsxs)("span",{className:"group inline-flex items-center gap-1.5 rounded-full border border-border/70 bg-muted/30 px-2.5 py-1 text-muted-foreground",children:["current"===e.kind?(0,r.jsx)(C.A,{className:"h-3.5 w-3.5 text-muted-foreground/70"}):(0,r.jsx)(eZ.A,{className:"h-3.5 w-3.5 text-muted-foreground/70"}),(0,r.jsx)("span",{className:"max-w-[180px] truncate text-foreground/80",children:e.page.title}),(0,r.jsx)("button",{type:"button",onClick:()=>{"current"===e.kind?ed(!1):em(t=>t.filter(t=>t.path!==e.page.path))},className:"ml-0.5 rounded-full p-0.5 text-muted-foreground/60 hover:text-foreground","aria-label":"Remove context",children:(0,r.jsx)(m.A,{className:"h-3 w-3"})})]},e.key)),!ec&&ei&&(0,r.jsx)("button",{type:"button",onClick:()=>ed(!0),className:"rounded-full border border-dashed border-border/70 px-2.5 py-1 text-[10px] text-muted-foreground hover:text-foreground",children:"Add current page"})]}),eh&&(0,r.jsxs)("div",{className:"absolute bottom-full left-0 right-0 mb-2 rounded-xl border bg-popover shadow-lg",onMouseDown:e=>e.preventDefault(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-2",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground/60",children:ep.trim()?"Pages":"Recent pages"}),ev&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:"Searching…"})]}),(0,r.jsxs)("div",{className:"max-h-56 overflow-y-auto pb-1",children:[!ev&&0===nA.length&&(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:ep.trim()?"No matching pages":"No recent pages"}),nA.map((e,t)=>(0,r.jsxs)("button",{type:"button",onClick:()=>td(e),className:(0,c.cn)("flex w-full items-start gap-2 px-3 py-2 text-left text-sm transition-colors",t===ej?"bg-muted/60":"hover:bg-muted/40"),children:[(0,r.jsx)(C.A,{className:"mt-0.5 h-4 w-4 text-muted-foreground/70"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("div",{className:"truncate font-medium text-foreground",children:e.title}),(0,r.jsx)("div",{className:"truncate text-[11px] text-muted-foreground/70",children:e.path})]})]},e.path))]})]}),eC&&(0,r.jsxs)("div",{ref:en,className:"absolute bottom-full left-0 right-0 mb-2 rounded-xl border bg-popover shadow-lg",onMouseDown:e=>e.preventDefault(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-2",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground/60",children:"OpenClaw commands"}),eR&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:"Loading…"})]}),(0,r.jsxs)("div",{className:"max-h-56 overflow-y-auto pb-1",children:[!eR&&0===nR.length&&(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:"No commands available"}),nR.map((e,t)=>(0,r.jsxs)("button",{type:"button",onClick:()=>tc(e.name),className:(0,c.cn)("flex w-full items-start gap-2 px-3 py-2 text-left text-sm transition-colors",t===eD?"bg-muted/60":"hover:bg-muted/40",e.disabled&&"opacity-60"),children:[(0,r.jsx)(eJ.A,{className:"mt-0.5 h-4 w-4 text-muted-foreground/70"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("div",{className:"truncate font-medium text-foreground",children:e.name}),(0,r.jsxs)("div",{className:"truncate text-[11px] text-muted-foreground/70",children:["/",e.name," — ",e.description]})]})]},e.name))]})]}),(0,r.jsx)("textarea",{ref:X,onKeyDown:nw,onPaste:nd,onInput:nj,placeholder:nn.length>0?"Add a message or send…":"Ask your agent…",rows:nk?1:2,className:(0,c.cn)("w-full resize-none bg-transparent px-1 py-1 text-sm leading-relaxed","placeholder:text-muted-foreground/80","focus:outline-none focus:ring-0","min-h-[44px] max-h-[150px]",nk&&"text-base"),disabled:er}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsx)(d.$,{type:"button",size:"icon",variant:"ghost",className:"h-8 w-8 rounded-full text-muted-foreground/70 hover:text-foreground hover:bg-muted/60",onClick:()=>Q.current?.click(),title:"Attach image","aria-label":"Attach image",disabled:er||eL,children:(0,r.jsx)(i.A,{className:"h-4 w-4"})})}),er?(0,r.jsx)(d.$,{type:"button",size:"icon",variant:"ghost",onClick:nf,className:"h-9 w-9 rounded-full bg-white text-black shadow-sm hover:bg-white/90","aria-label":"Stop generation",children:(0,r.jsx)("span",{className:"h-3.5 w-3.5 rounded-sm bg-black"})}):(0,r.jsx)(d.$,{type:"submit",size:"icon",className:"h-9 w-9 rounded-full bg-white text-black shadow-sm hover:bg-white/90","aria-label":"Send message",disabled:eL,children:(0,r.jsx)(eG.A,{className:"h-4 w-4"})})]})]})]})]})]})}function tW({connected:e,wsStatus:t,agentStatus:n}){let s="connecting"===t||"reconnecting"===t,a=e?"active"===n||"thinking"===n?"bg-violet-400":"bg-green-500":s?"bg-amber-400":"bg-zinc-300 dark:bg-zinc-600";return(0,r.jsxs)("span",{className:"relative flex h-2 w-2",title:e?n:s?t:"disconnected",children:[(s||e&&("active"===n||"thinking"===n))&&(0,r.jsx)("span",{className:(0,c.cn)("absolute inline-flex h-full w-full rounded-full opacity-75 animate-ping",a)}),(0,r.jsx)("span",{className:(0,c.cn)("relative inline-flex h-2 w-2 rounded-full",a)})]})}function tq({pageTitle:e}){return(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center py-16",children:(0,r.jsxs)("div",{className:"space-y-3 text-center",children:[(0,r.jsx)(el.A,{className:"mx-auto h-8 w-8 text-muted-foreground/40"}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Chat with your OpenClaw agent"}),e&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground/60",children:["Viewing:"," ",(0,r.jsx)("span",{className:"capitalize font-medium",children:e})]})]})]})})}let tU=(0,s.memo)(function({events:e}){let[t,n]=(0,s.useState)(!1),[a,l]=(0,s.useState)(null),i=e.filter(e=>"alert"===e.kind).length;return(0,r.jsxs)("div",{className:"rounded-xl border border-border/60 bg-muted/20",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>n(e=>!e),className:(0,c.cn)("flex w-full items-center justify-between gap-2 px-3 py-2 text-left","text-[11px] text-muted-foreground hover:text-foreground"),"aria-expanded":t,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(eV.A,{className:"h-3.5 w-3.5 text-muted-foreground/70"}),(0,r.jsx)("span",{className:"font-medium text-foreground/80",children:"System events"}),(0,r.jsx)("span",{className:"rounded-full border border-border/60 px-2 py-0.5 text-[10px] text-muted-foreground",children:e.length}),i>0&&(0,r.jsxs)("span",{className:"rounded-full border border-red-500/30 bg-red-500/10 px-2 py-0.5 text-[10px] text-red-500",children:[i," alert",1!==i?"s":""]})]}),(0,r.jsx)(eX.A,{className:(0,c.cn)("h-4 w-4 transition-transform",t?"rotate-180":"rotate-0")})]}),t&&(0,r.jsx)("div",{className:"border-t border-border/50",children:e.map(e=>{let t=a===e.id,n=e.text.length>140,s=n?`${e.text.slice(0,137)}…`:e.text;return(0,r.jsx)("div",{className:"border-t border-border/40 first:border-t-0",children:(0,r.jsxs)("button",{type:"button",onClick:()=>{n&&l(t=>t===e.id?null:e.id)},className:"flex w-full items-start gap-3 px-3 py-2 text-left",children:[(0,r.jsx)(tB,{kind:e.kind,tone:e.tone}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 space-y-0.5",children:[(0,r.jsx)("div",{className:"text-[10px] text-muted-foreground/70",children:new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),(0,r.jsx)("div",{className:"text-xs text-foreground/80 whitespace-pre-wrap",children:t?e.text:s})]}),n&&(0,r.jsx)(k.A,{className:(0,c.cn)("mt-1 h-3.5 w-3.5 text-muted-foreground/60 transition-transform",t&&"rotate-90")})]})},e.id)})})]})});function tB({kind:e,tone:t}){let n=(0,c.cn)("shrink-0 rounded-full border px-2 py-0.5 text-[10px] font-medium","system"===e&&"border-border/60 bg-muted/40 text-muted-foreground","heartbeat"===e&&"border-blue-500/30 bg-[color:var(--cp-status-heartbeat-bg)] text-[color:var(--cp-status-heartbeat-text)]","alert"===e&&("error"===t?"border-red-500/30 bg-[color:var(--cp-status-error-bg)] text-[color:var(--cp-status-error-text)]":"border-amber-500/30 bg-[color:var(--cp-status-alert-bg)] text-[color:var(--cp-status-alert-text)]"));return(0,r.jsx)("span",{className:n,children:"system"===e?"System":"heartbeat"===e?"Heartbeat":"Alert"})}let tH=(0,s.memo)(function({entries:e}){return(0,r.jsx)("div",{className:"flex flex-col gap-0.5 items-start max-w-[95%]",children:e.map(e=>(0,r.jsx)(t4,{entry:e},`${e.toolCallId}-${e.updatedAt}`))})}),tZ=(0,s.memo)(function({group:e,showReasoning:t,showTools:n}){return"user"===e.role?(0,r.jsx)("div",{className:"flex flex-col gap-2",children:e.messages.map((e,t)=>(0,r.jsx)(tJ,{message:e},e.id??`u-${t}`))}):"assistant"===e.role?(0,r.jsx)("div",{className:"flex flex-col gap-1 items-start",children:e.messages.map((e,s)=>(0,r.jsx)(tG,{message:e,showReasoning:t,showTools:n},e.id??`a-${s}`))}):"tool"===e.role?(0,r.jsx)("div",{className:"flex flex-col gap-1",children:e.messages.map((e,t)=>(0,r.jsx)(tV,{message:e},e.id??`t-${t}`))}):"system"===e.role?(0,r.jsx)("div",{className:"flex flex-col gap-1",children:e.messages.map((e,t)=>{let n=e.displayText;return n?(0,r.jsx)("div",{className:"text-center text-xs text-muted-foreground/60 italic py-1",children:n},e.id??`s-${t}`):null})}):null}),tJ=(0,s.memo)(function({message:e}){let t=e.displayText,[n,a]=(0,s.useState)(null),l=(0,s.useMemo)(()=>{let t=[];for(let n of e.content)if("input_image"===n.type||"image"===n.type){let e,r=n.source;if(r?.type==="base64"&&"string"==typeof r.data){let t=r.data,n=r.media_type||"image/png";e=t.startsWith("data:")?t:`data:${n};base64,${t}`}else e=n.image_url??n.url??("string"==typeof r?.url?r.url:void 0);e&&t.push(e)}return t},[e.content]);if((!t||t.trim().length<1)&&0===l.length)return null;let i=e.timestamp?new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):null;return(0,r.jsxs)("div",{className:"flex flex-col gap-0.5 items-end",children:[n&&(0,r.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/70 p-4 cursor-pointer",onClick:()=>a(null),children:[(0,r.jsx)("img",{src:n,alt:"Full size",className:"max-h-[90vh] max-w-[90vw] rounded-lg object-contain shadow-2xl"}),(0,r.jsx)("button",{className:"absolute right-4 top-4 flex h-8 w-8 items-center justify-center rounded-full bg-black/50 text-white hover:bg-black/70",onClick:()=>a(null),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 pr-4",children:[(0,r.jsx)(tp,{channel:e.channel,sessionKey:e.sessionKey}),i&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground/50",children:i})]}),(0,r.jsxs)("div",{className:"max-w-[85%] space-y-2",children:[l.length>0&&(0,r.jsx)("div",{className:"flex flex-wrap justify-end gap-1.5",children:l.map((e,t)=>(0,r.jsx)("img",{src:e,alt:`Attached image ${t+1}`,className:"max-h-48 max-w-[200px] cursor-pointer rounded-xl border border-white/20 object-cover shadow-sm transition-transform hover:scale-[1.02]",onClick:()=>a(e)},t))}),t&&t.trim().length>0&&(0,r.jsx)("div",{className:"cp-user-bubble rounded-2xl px-4 py-2 text-sm leading-relaxed break-words overflow-hidden",children:t})]})]})}),tG=(0,s.memo)(function({message:e,showReasoning:t,showTools:n}){let s=e.displayText?.trim()||null,a=n?e.toolCards:[],l=a.length>0,i=t?function(e){let t=e.content,n=[];if(Array.isArray(t)){for(let e of t)if("thinking"===e.type&&"string"==typeof e.thinking){let t=e.thinking.trim();t&&n.push(t)}}if(n.length>0)return n.join("\n");let r=tD(e);if(!r)return null;let s=[...r.matchAll(/<\s*think(?:ing)?\s*>([\s\S]*?)<\s*\/\s*think(?:ing)?\s*>/gi)].map(e=>(e[1]??"").trim()).filter(Boolean);return s.length>0?s.join("\n"):null}(e.raw):null,o=i?function(e){let t=e.trim();if(!t)return"";let n=t.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(e=>`_${e}_`);return n.length?["_Reasoning:_",...n].join("\n"):""}(i):null,c=e.timestamp?new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):null;return s||l?(0,r.jsxs)("div",{className:"flex flex-col gap-0.5 items-start max-w-[95%] min-w-0",children:[s&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(tp,{channel:e.channel,sessionKey:e.sessionKey}),c&&(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground/50",children:c})]}),s&&(0,r.jsx)("div",{className:"min-w-0 text-sm leading-relaxed opacity-90",children:(0,r.jsx)(t2,{text:s})}),o&&(0,r.jsx)("div",{className:"min-w-0 text-xs text-muted-foreground",children:(0,r.jsx)(t2,{text:o})}),l&&a.map((e,t)=>(0,r.jsx)(tX,{card:e},`tc-${t}`))]}):null}),tV=(0,s.memo)(function({message:e}){let t=e.toolCards;return 0===t.length?null:(0,r.jsx)("div",{className:"flex flex-col gap-0.5",children:t.map((e,t)=>(0,r.jsx)(tX,{card:e},`tr-${t}`))})}),tX=(0,s.memo)(function({card:e}){let[t,n]=(0,s.useState)(!1),a=(0,s.useId)(),l=(0,tr.I)(),i=t6(e.name),o=i.icon,d=t8(e.text)??e.text??"",u=!!d.trim(),m=t9(e.args);return(0,r.jsxs)("div",{className:"my-0 max-w-full",children:[(0,r.jsxs)("button",{type:"button",onClick:u?()=>n(!t):void 0,className:(0,c.cn)("group flex w-full items-center gap-1 rounded-md px-0 py-px text-left text-[11px] leading-4 transition-colors","text-muted-foreground/60 hover:text-muted-foreground",u&&"hover:bg-muted/30 cursor-pointer",!u&&"cursor-default",t&&"bg-muted/40 text-foreground"),"aria-expanded":u?t:void 0,"aria-controls":u?a:void 0,children:[(0,r.jsx)("span",{className:(0,c.cn)("flex h-3.5 w-3.5 items-center justify-center",u?"text-muted-foreground/50 group-hover:text-muted-foreground":"opacity-0"),"aria-hidden":"true",children:u&&t?(0,r.jsx)(eX.A,{className:"h-3 w-3"}):(0,r.jsx)(k.A,{className:"h-3 w-3"})}),(0,r.jsx)("span",{className:"shrink-0 text-muted-foreground/70 group-hover:text-foreground",children:(0,r.jsx)(o,{className:"h-3.5 w-3.5"})}),(0,r.jsxs)("span",{className:"min-w-0 flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"font-medium text-foreground/75 group-hover:text-foreground",children:i.label}),m&&(0,r.jsx)("span",{className:"truncate max-w-[220px] text-[10px] font-mono text-muted-foreground/60 group-hover:text-muted-foreground",children:m})]}),(0,r.jsx)("span",{className:"ml-auto flex items-center gap-1 text-muted-foreground/50",children:"result"===e.kind&&!u&&(0,r.jsx)(eQ.A,{className:"h-3 w-3"})})]}),(0,r.jsx)(tn.N,{initial:!1,children:u&&t&&(0,r.jsx)(tt.P.div,{id:a,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.18*!l},className:"overflow-hidden",children:(0,r.jsx)("div",{className:"pt-1 pl-6",children:(0,r.jsx)("pre",{className:"max-h-[200px] overflow-y-auto rounded bg-muted/30 p-2 text-[10px] font-mono text-muted-foreground whitespace-pre-wrap",children:d})})})})]})}),tQ=(0,s.memo)(function({message:e,images:t,onRetry:n}){let[a,l]=(0,s.useState)(null),i=new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return(0,r.jsxs)("div",{className:"flex flex-col gap-0.5 items-end",children:[a&&(0,r.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/70 p-4 cursor-pointer",onClick:()=>l(null),children:[(0,r.jsx)("img",{src:a,alt:"Full size",className:"max-h-[90vh] max-w-[90vw] rounded-lg object-contain shadow-2xl"}),(0,r.jsx)("button",{className:"absolute right-4 top-4 flex h-8 w-8 items-center justify-center rounded-full bg-black/50 text-white hover:bg-black/70",onClick:()=>l(null),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5 px-1",children:[(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground/50",children:i}),"sending"===e.status&&(0,r.jsx)(es.A,{className:"h-3 w-3 text-muted-foreground/50"}),("streaming"===e.status||"sent"===e.status)&&(0,r.jsxs)("div",{className:"flex items-center text-blue-400",children:[(0,r.jsx)(eQ.A,{className:"h-3 w-3"}),(0,r.jsx)(eQ.A,{className:"-ml-1.5 h-3 w-3"})]}),"error"===e.status&&(0,r.jsxs)("button",{onClick:()=>n(e),className:"flex items-center gap-1 text-destructive hover:text-destructive/80 transition-colors",title:"Tap to retry",children:[(0,r.jsx)(eB.A,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"text-[10px] font-medium",children:"Retry"})]})]}),(0,r.jsxs)("div",{className:"max-w-[85%] space-y-2",children:[t&&t.length>0&&(0,r.jsx)("div",{className:"flex flex-wrap justify-end gap-1.5",children:t.map((e,t)=>(0,r.jsx)("img",{src:e,alt:`Attached image ${t+1}`,className:"max-h-48 max-w-[200px] cursor-pointer rounded-xl border border-white/20 object-cover shadow-sm transition-transform hover:scale-[1.02]",onClick:()=>l(e)},t))}),(0,r.jsx)("div",{className:(0,c.cn)("rounded-2xl px-4 py-2.5 text-sm leading-relaxed shadow-sm break-words overflow-hidden","error"===e.status?"bg-red-500 text-white dark:bg-red-600":"cp-user-bubble"),children:(0,r.jsx)("span",{children:e.text})})]})]})});function tY(e){let t=[],n="",r=()=>{n.trim().length>0&&t.push({type:"text",text:n}),n=""};for(let s of e){if("text"===s.type&&"string"==typeof s.text){n&&(n+="\n"),n+=s.text;continue}r(),t.push(s)}return r(),t}function t0(e){return tY(e.parts??[]).filter(e=>"text"===e.type&&"string"==typeof e.text).map(e=>e.text).join("\n").trim()}let t1=(0,s.memo)(function({message:e,_images:t,isLatest:n,isStreaming:a,showThinking:l,onToolApprove:i,onToolDeny:o}){let[c,d]=(0,s.useState)(null),u=(0,s.useMemo)(()=>tY(e.parts??[]),[e.parts]);return"user"===e.role?null:(0,r.jsxs)("div",{className:"flex flex-col gap-1 items-start",children:[c&&(0,r.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/70 p-4 cursor-pointer",onClick:()=>d(null),children:[(0,r.jsx)("img",{src:c,alt:"Full size",className:"max-h-[90vh] max-w-[90vw] rounded-lg object-contain shadow-2xl"}),(0,r.jsx)("button",{className:"absolute right-4 top-4 flex h-8 w-8 items-center justify-center rounded-full bg-black/50 text-white hover:bg-black/70",onClick:()=>d(null),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("div",{className:"max-w-[95%] min-w-0 text-sm leading-relaxed",children:[u.map((e,t)=>{if("text"===e.type)return(0,r.jsx)(t2,{text:e.text??""},t);if("dynamic-tool"===e.type||e.type?.startsWith("tool-")){let n="approval-requested"===e.state;if(!n&&!l)return null;let s=e.toolName??e.type.replace(/^tool-/,""),a=e.approval?.approvalId??e.toolCallId;return(0,r.jsx)(t7,{toolName:s,state:e.state??"",args:e.input,onApprove:n&&i?()=>i(a??""):void 0,onDeny:n&&o?()=>o(a??""):void 0},t)}return null}),a&&n&&(0,r.jsx)("span",{className:"inline-block h-4 w-0.5 animate-pulse bg-foreground/60 ml-0.5 align-text-bottom"})]})]})}),t5={code:({className:e,children:t,...n})=>e||"string"!=typeof t||t.includes("\n")?(0,r.jsx)("pre",{className:"my-2 overflow-x-auto rounded-lg bg-zinc-100 p-3 text-[13px] dark:bg-zinc-900",children:(0,r.jsx)("code",{className:e,...n,children:t})}):(0,r.jsx)("code",{className:"rounded bg-zinc-100 px-1.5 py-0.5 text-[13px] dark:bg-zinc-800",...n,children:t}),pre:({children:e})=>(0,r.jsx)(r.Fragment,{children:e}),p:({children:e})=>(0,r.jsx)("p",{className:"my-1",children:e}),a:({href:e,children:t})=>(0,r.jsx)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 underline dark:text-blue-400 break-all",children:t}),ul:({children:e})=>(0,r.jsx)("ul",{className:"my-1 list-disc pl-4",children:e}),ol:({children:e})=>(0,r.jsx)("ol",{className:"my-1 list-decimal pl-4",children:e}),li:({children:e})=>(0,r.jsx)("li",{className:"my-0",children:e}),blockquote:({children:e})=>(0,r.jsx)("blockquote",{className:"my-2 border-l-2 border-zinc-300 pl-3 italic text-muted-foreground dark:border-zinc-600",children:e}),table:({children:e})=>(0,r.jsx)("div",{className:"my-2 overflow-x-auto",children:(0,r.jsx)("table",{className:"min-w-full border-collapse text-sm",children:e})}),th:({children:e})=>(0,r.jsx)("th",{className:"border border-zinc-300 bg-zinc-100 px-2 py-1 text-left font-medium dark:border-zinc-600 dark:bg-zinc-800",children:e}),td:({children:e})=>(0,r.jsx)("td",{className:"border border-zinc-300 px-2 py-1 dark:border-zinc-600",children:e}),h1:({children:e})=>(0,r.jsx)("h1",{className:"my-2 text-base font-bold",children:e}),h2:({children:e})=>(0,r.jsx)("h2",{className:"my-1.5 text-sm font-bold",children:e}),h3:({children:e})=>(0,r.jsx)("h3",{className:"my-1 text-sm font-semibold",children:e}),img:({src:e,alt:t})=>(0,r.jsx)("img",{src:e,alt:t??"",className:"my-2 max-w-full rounded-lg"})},t2=(0,s.memo)(function({text:e}){return(0,r.jsx)("div",{className:"chat-message-content min-w-0 max-w-full overflow-hidden text-sm leading-relaxed [overflow-wrap:break-word]",children:(0,r.jsx)(e7.oz,{remarkPlugins:[te.A],components:t5,children:e})})}),t4=(0,s.memo)(function({entry:e}){let[t,n]=(0,s.useState)(!1),a=(0,s.useId)(),l=(0,tr.I)(),i=t6(e.name),o=i.icon,d=t9(e.args),u=function(e){if(null==e)return null;if("string"==typeof e)return e.trim()?e:null;try{return JSON.stringify(e,null,2)}catch{return String(e)}}(e.args),m=e.output?.trim()??"",h=t8(m)??m,x=!!m,p=!!(u||x),g="start"===e.phase||"update"===e.phase,f="result"===e.phase?"Completed":"error"===e.phase?"Error":"Running",b="result"===e.phase?eQ.A:"error"===e.phase?eB.A:eU.A;return(0,r.jsxs)("div",{className:(0,c.cn)("rounded-lg border border-transparent bg-transparent","transition-colors","hover:border-border/40 hover:bg-muted/20",t&&"border-border/50 bg-muted/30",g&&"bg-muted/30"),children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{p&&n(e=>!e)},className:(0,c.cn)("group flex w-full items-center justify-between gap-2 px-0 py-px text-left","text-[11px] leading-4 transition-colors","text-muted-foreground/60 hover:text-muted-foreground",p?"cursor-pointer":"cursor-default"),"aria-expanded":p?t:void 0,"aria-disabled":!p,"aria-controls":p?a:void 0,children:[(0,r.jsx)("span",{className:(0,c.cn)("flex h-3.5 w-3.5 items-center justify-center",p?"text-muted-foreground/50 group-hover:text-muted-foreground":"opacity-0"),"aria-hidden":"true",children:p&&t?(0,r.jsx)(eX.A,{className:"h-3 w-3"}):(0,r.jsx)(k.A,{className:"h-3 w-3"})}),(0,r.jsx)("span",{className:"shrink-0 text-muted-foreground/70 group-hover:text-foreground","aria-hidden":"true",children:(0,r.jsx)(o,{className:"h-3.5 w-3.5"})}),(0,r.jsxs)("div",{className:"flex flex-col min-w-0",children:[(0,r.jsx)("span",{className:"text-[11px] font-medium text-foreground/75 group-hover:text-foreground",children:i.label}),d&&(0,r.jsx)("span",{className:"text-[10px] font-mono text-muted-foreground/60 truncate group-hover:text-muted-foreground",children:d})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)(b,{className:(0,c.cn)("h-3.5 w-3.5","Running"===f&&"animate-spin motion-reduce:animate-none","Error"===f&&"text-destructive")}),(0,r.jsx)("span",{className:(0,c.cn)("Error"===f&&"text-destructive",g&&"animate-pulse motion-reduce:animate-none"),children:f})]})]}),(0,r.jsx)(tn.N,{initial:!1,children:t&&p&&(0,r.jsx)(tt.P.div,{id:a,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.18*!l},className:"overflow-hidden",children:(0,r.jsxs)("div",{className:"px-2 pb-2 space-y-2",children:[u&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70",children:"Args"}),(0,r.jsx)("pre",{className:"max-h-60 overflow-auto rounded-md bg-background/60 px-2 py-1.5 text-[10px] font-mono whitespace-pre-wrap text-foreground",children:u})]}),x&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground/70",children:"Output"}),(0,r.jsx)("pre",{className:"max-h-60 overflow-auto rounded-md bg-background/60 px-2 py-1.5 text-[10px] font-mono whitespace-pre-wrap text-foreground",children:h})]})]})})})]})}),t3={Read:{icon:C.A,label:"Read file"},Edit:{icon:eY.A,label:"Edit file"},Write:{icon:e0.A,label:"Write file"},exec:{icon:eJ.A,label:"Run command"},web_search:{icon:l.A,label:"Web search"},web_fetch:{icon:e1.A,label:"Fetch page"},browser:{icon:e1.A,label:"Browser"},message:{icon:ed.A,label:"Send message"},image:{icon:e5.A,label:"Analyze image"},tts:{icon:e2.A,label:"Text to speech"},nodes:{icon:e4.A,label:"Node control"},canvas:{icon:e3.A,label:"Canvas"},process:{icon:e6.A,label:"Process"}};function t6(e){let t=e.trim(),n=t.replace(/[\s-]+/g,"_"),r=n.toLowerCase(),s=r.length>0?r[0].toUpperCase()+r.slice(1):"";for(let e of[t,n,r,t.toLowerCase(),s])if(e&&t3[e])return t3[e];return{icon:e9.A,label:t||"Tool"}}function t9(e){if(!e)return null;if("string"==typeof e){let t=e.trim();return t?t.length>60?t.slice(0,57)+"…":t:null}if("object"!=typeof e)return null;if(e.query)return`"${String(e.query)}"`;if(e.path)return String(e.path).replace(/\/Users\/[^/]+/g,"~").replace(/\/home\/[^/]+/g,"~");if(e.file_path)return String(e.file_path).replace(/\/Users\/[^/]+/g,"~").replace(/\/home\/[^/]+/g,"~");if(e.command){let t=String(e.command);return t.length>60?t.slice(0,57)+"…":t}return e.url?String(e.url):e.action?String(e.action):null}function t8(e){return e?tL(e)??e:null}let t7=(0,s.memo)(function({toolName:e,state:t,args:n,onApprove:s,onDeny:a}){let l=t6(e),i=l.icon,o=(()=>{if(!n||"object"!=typeof n)return null;if(n.query)return`"${String(n.query)}"`;if(n.path)return String(n.path).split("/").pop();if(n.file_path)return String(n.file_path).split("/").pop();if(n.command){let e=String(n.command);return e.length>50?e.slice(0,50)+"…":e}return n.url?String(n.url):null})();return"approval-requested"!==t?(0,r.jsxs)("div",{className:"my-1.5 flex items-center gap-2 rounded-md px-2 py-1 text-[11px] leading-4 text-muted-foreground/60 transition-colors hover:text-muted-foreground hover:bg-muted/30",children:["call"===t||"input-streaming"===t||"input-available"===t?(0,r.jsx)(eU.A,{className:"h-3 w-3 animate-spin motion-reduce:animate-none shrink-0"}):"output-available"===t||"result"===t?(0,r.jsx)(eQ.A,{className:"h-3 w-3 text-green-600 shrink-0"}):"output-error"===t?(0,r.jsx)(e8.A,{className:"h-3 w-3 text-destructive shrink-0"}):(0,r.jsx)("span",{className:"shrink-0 text-muted-foreground/70",children:(0,r.jsx)(i,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("span",{className:"font-medium text-foreground/75",children:l.label}),o&&(0,r.jsx)("span",{className:"truncate max-w-[200px] text-[10px] font-mono text-muted-foreground/60",children:o})]}):(0,r.jsxs)("div",{className:"my-1.5 rounded-lg border border-amber-500/40 bg-amber-50/50 dark:bg-amber-950/20 p-2.5 text-xs",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[(0,r.jsx)(eV.A,{className:"h-3.5 w-3.5 text-amber-600 dark:text-amber-400"}),(0,r.jsx)("span",{className:"font-medium font-mono",children:e}),(0,r.jsx)("span",{className:"text-muted-foreground/60",children:"Requires approval"})]}),null!=n&&"object"==typeof n&&Object.keys(n).length>0?(0,r.jsx)("pre",{className:"mt-1.5 overflow-x-auto rounded bg-background dark:bg-muted/50 p-1.5 text-[11px] font-mono text-muted-foreground",children:JSON.stringify(n,null,2)}):null,s&&a&&(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,r.jsxs)("button",{onClick:s,className:"inline-flex items-center gap-1 rounded-md bg-green-600 px-2.5 py-1 text-[11px] font-medium text-white transition-colors hover:bg-green-700",children:[(0,r.jsx)(eQ.A,{className:"h-3 w-3"}),"Approve"]}),(0,r.jsxs)("button",{onClick:a,className:"inline-flex items-center gap-1 rounded-md bg-red-600 px-2.5 py-1 text-[11px] font-medium text-white transition-colors hover:bg-red-700",children:[(0,r.jsx)(e8.A,{className:"h-3 w-3"}),"Deny"]})]})]})});var ne=n(37618),nt=n(92564),nn=n(93219);let nr=[{id:"pages",label:"Pages",icon:C.A},{id:"editor",label:"Editor",icon:ne.A},{id:"chat",label:"Chat",icon:nt.A},{id:"activity",label:"Activity",icon:nn.A}],ns=(0,s.memo)(function({activeTab:e,onTabChange:t,hasUnreadChat:n=!1,onNewPage:s}){return(0,r.jsxs)(r.Fragment,{children:["pages"===e&&s&&(0,r.jsx)("button",{onClick:s,className:(0,c.cn)("fixed bottom-20 right-4 z-50 flex h-14 w-14 items-center justify-center","rounded-full bg-accent-blue text-white shadow-lg","active:scale-95 transition-transform","safe-area-bottom-fab"),"aria-label":"New Document",children:(0,r.jsx)(i.A,{className:"h-6 w-6"})}),(0,r.jsx)("nav",{className:"fixed bottom-0 left-0 right-0 z-50 flex h-14 items-stretch border-t border-border bg-background/95 backdrop-blur-sm safe-area-bottom",children:nr.map(({id:s,label:a,icon:l})=>{let i=e===s;return(0,r.jsxs)("button",{onClick:()=>t(s),className:(0,c.cn)("relative flex flex-1 flex-col items-center justify-center gap-0.5 transition-colors min-h-[44px]",i?"text-accent-blue":"text-muted-foreground active:text-foreground"),children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(l,{className:"h-5 w-5"}),"chat"===s&&n&&(0,r.jsxs)("span",{className:"absolute -right-1.5 -top-1 flex h-2.5 w-2.5",children:[(0,r.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-accent-blue opacity-75"}),(0,r.jsx)("span",{className:"relative inline-flex h-2.5 w-2.5 rounded-full bg-accent-blue"})]})]}),(0,r.jsx)("span",{className:"text-[10px] font-medium",children:a}),i&&(0,r.jsx)("span",{className:"absolute top-0 left-1/4 right-1/4 h-0.5 rounded-full bg-accent-blue"})]},s)})})]})});function na({onNavigate:e}){let t=(0,j.usePathname)(),n=(0,j.useRouter)(),{spaces:a,expandedSpaces:i,expandedFolders:o,toggleSpace:d,toggleFolder:u,pagesBySpace:m,spacesStatus:h,pagesStatusBySpace:x,recentPages:p,recentStatus:g,loadSpaces:f,loadRecentPages:b}=(0,M.M)(),[v,w]=(0,s.useState)("");(0,s.useEffect)(()=>{f(),b()},[f,b]);let y=(0,s.useCallback)(t=>{n.push((0,O.C)(t)),e?.()},[n,e]),N=(0,K.z)(e=>e.agentName);return(0,r.jsxs)("div",{className:"flex h-full flex-col bg-background",children:[(0,r.jsx)("div",{className:"flex h-14 shrink-0 items-center justify-between border-b px-4",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-primary text-[11px] font-bold text-primary-foreground",children:"C"}),(0,r.jsx)("span",{className:"text-sm font-semibold",children:N??"ClawPad"})]})}),(0,r.jsx)("div",{className:"shrink-0 px-4 py-3",children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(l.A,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)("input",{type:"text",placeholder:"Search pages…",value:v,onChange:e=>w(e.target.value),className:(0,c.cn)("w-full rounded-lg border bg-secondary/50 py-2.5 pl-9 pr-3 text-sm","placeholder:text-muted-foreground","focus:outline-none focus:ring-2 focus:ring-ring","min-h-[44px]")})]})}),(0,r.jsxs)($,{className:"flex-1 px-4",children:[!v&&p.length>0&&(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)(nl,{children:"Recent"}),(0,r.jsx)("div",{className:"space-y-0.5",children:p.slice(0,5).map(e=>(0,r.jsx)(no,{page:e,isActive:t===(0,O.C)(e.path),onNavigate:()=>y(e.path),showTime:!0},e.path))})]}),(0,r.jsx)(R.w,{className:"my-2"}),(0,r.jsxs)("div",{className:"pb-4",children:[(0,r.jsx)(nl,{children:"Spaces"}),"loading"===h&&0===a.length?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(D.E,{className:"h-12 w-full rounded-lg"}),(0,r.jsx)(D.E,{className:"h-12 w-full rounded-lg"}),(0,r.jsx)(D.E,{className:"h-12 w-full rounded-lg"})]}):0===a.length?(0,r.jsx)("p",{className:"py-4 text-center text-sm text-muted-foreground",children:"No spaces yet"}):(0,r.jsx)("div",{className:"space-y-1",children:a.map(e=>(0,r.jsx)(ni,{space:e,isExpanded:i.has(e.path),pages:m.get(e.path)??[],isLoadingPages:(x.get(e.path)??"idle")==="loading"&&0===(m.get(e.path)??[]).length,pathname:t,searchQuery:v,onToggle:()=>d(e.path),expandedFolders:o,onToggleFolder:u,onNavigate:y},e.path))}),"loading"===g&&0===p.length&&!v&&(0,r.jsxs)("div",{className:"mb-4 space-y-2",children:[(0,r.jsx)(nl,{children:"Recent"}),(0,r.jsx)(D.E,{className:"h-10 w-full rounded-lg"}),(0,r.jsx)(D.E,{className:"h-10 w-4/5 rounded-lg"})]})]})]})]})}function nl({children:e}){return(0,r.jsx)("h3",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:e})}let ni=(0,s.memo)(function({space:e,isExpanded:t,pages:n,isLoadingPages:s,pathname:a,searchQuery:l,onToggle:i,expandedFolders:o,onToggleFolder:d,onNavigate:u}){let m=F(l?n.filter(e=>e.title.toLowerCase().includes(l.toLowerCase())):n,e.path);if(l&&0===m.length)return null;let h=t=>t.map(t=>{if("page"===t.type)return(0,r.jsx)(no,{page:t.page,isActive:a===(0,O.C)(t.page.path),onNavigate:()=>u(t.page.path)},t.page.path);let n=`${e.path}/${t.path}`,s=o.has(n);return(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:()=>d(n),className:(0,c.cn)("flex w-full items-center gap-2 rounded-lg px-3 py-2 text-[13px] transition-colors","text-muted-foreground hover:bg-secondary active:bg-secondary","min-h-[44px]"),children:[(0,r.jsx)(k.A,{className:(0,c.cn)("h-3.5 w-3.5 shrink-0 transition-transform duration-200",s&&"rotate-90")}),(0,r.jsx)("span",{className:"shrink-0 text-xs",children:"\uD83D\uDCC2"}),(0,r.jsx)("span",{className:"flex-1 truncate text-left",children:t.name})]}),s&&(0,r.jsx)("div",{className:"ml-3 border-l border-border/50 pl-3 py-0.5",children:h(t.children)})]},n)});return(0,r.jsxs)("div",{children:[(0,r.jsxs)("button",{onClick:i,className:(0,c.cn)("flex w-full items-center gap-2 rounded-lg px-3 py-3 text-sm transition-colors","hover:bg-secondary active:bg-secondary","min-h-[48px]",t&&"font-medium"),children:[(0,r.jsx)(k.A,{className:(0,c.cn)("h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200",t&&"rotate-90")}),(0,r.jsx)("span",{className:"shrink-0 text-base",children:e.icon??"\uD83D\uDCC1"}),(0,r.jsx)("span",{className:"flex-1 truncate text-left",children:e.name}),(0,r.jsx)(T.E,{variant:"secondary",className:"h-5 shrink-0 px-1.5 text-[11px] font-normal",children:e.pageCount})]}),t&&(0,r.jsx)("div",{className:"ml-4 border-l border-border/50 pl-3 py-0.5",children:s?(0,r.jsxs)("div",{className:"space-y-1 py-1",children:[(0,r.jsx)(D.E,{className:"h-10 w-full rounded-lg"}),(0,r.jsx)(D.E,{className:"h-10 w-3/4 rounded-lg"})]}):0===m.length?(0,r.jsx)("p",{className:"py-3 px-2 text-xs text-muted-foreground",children:"No pages yet. Create your first page."}):h(m)})]})}),no=(0,s.memo)(function({page:e,isActive:t,onNavigate:n,showTime:s}){return(0,r.jsxs)("button",{onClick:n,className:(0,c.cn)("flex w-full items-center gap-2 rounded-lg px-3 py-2.5 text-sm transition-colors","text-muted-foreground hover:bg-secondary active:bg-secondary","min-h-[44px]",t&&"bg-accent-light text-accent-blue font-medium"),children:[(0,r.jsx)(es.A,{className:"h-3.5 w-3.5 shrink-0 opacity-50"}),e.icon?(0,r.jsx)("span",{className:"shrink-0 text-sm",children:e.icon}):(0,r.jsx)(C.A,{className:"h-4 w-4 shrink-0"}),(0,r.jsx)("span",{className:"flex-1 truncate text-left",children:e.title}),s&&(0,r.jsx)("span",{className:"shrink-0 text-[11px] text-muted-foreground/60",children:(0,P.f)(e.modified)})]})});var nc=n(3926),nd=n(34269),nu=n(49619),nm=n(90718);let nh={"file-changed":{icon:nc.A,className:"text-blue-500"},"file-added":{icon:er.A,className:"text-green-500"},"file-removed":{icon:nd.A,className:"text-red-400"},"chat-message":{icon:ed.A,className:"text-violet-500"},"tool-used":{icon:e9.A,className:"text-amber-500"},"sub-agent":{icon:nu.A,className:"text-cyan-500"}};function nx(){let e=(0,K.z)(e=>e.agentStatus);return"thinking"!==e&&"active"!==e?null:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-md bg-violet-500/10 px-2 py-1.5 mb-1",children:[(0,r.jsx)(nm.A,{className:(0,c.cn)("h-3.5 w-3.5 text-violet-500","thinking"===e&&"animate-pulse")}),(0,r.jsx)("span",{className:"text-[12px] text-violet-500 font-medium",children:"thinking"===e?"Agent thinking…":"Agent working…"}),(0,r.jsxs)("span",{className:"ml-auto flex gap-0.5",children:[(0,r.jsx)("span",{className:"h-1 w-1 rounded-full bg-violet-400 animate-bounce [animation-delay:0ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 rounded-full bg-violet-400 animate-bounce [animation-delay:150ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 rounded-full bg-violet-400 animate-bounce [animation-delay:300ms]"})]})]})}function np({type:e,description:t,timestamp:n}){let s,a=nh[e]??nh["file-changed"],l=a.icon;return(0,r.jsxs)("div",{className:"flex items-start gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-sidebar-accent group",children:[(0,r.jsx)(l,{className:(0,c.cn)("mt-0.5 h-3.5 w-3.5 shrink-0",a.className)}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("p",{className:"truncate text-[12px] leading-snug text-foreground/80",children:t}),(0,r.jsx)("p",{className:"text-[10px] text-muted-foreground/60",children:(s=Math.floor((Date.now()-n)/1e3))<5?"just now":s<60?`${s}s ago`:s<3600?`${Math.floor(s/60)}m ago`:s<86400?`${Math.floor(s/3600)}h ago`:`${Math.floor(s/86400)}d ago`})]})]})}function ng(){let e=(0,ts.e)(e=>e.items),t=(0,ts.e)(e=>e.clear);return(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-2 py-1",children:[(0,r.jsx)("h3",{className:"text-xs font-medium text-muted-foreground",children:"Activity"}),e.length>0&&(0,r.jsx)("button",{onClick:t,className:"text-[10px] text-muted-foreground/60 hover:text-muted-foreground transition-colors",children:"Clear"})]}),(0,r.jsx)(nx,{}),0===e.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(nn.A,{className:"mb-3 h-8 w-8 text-muted-foreground/30"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No recent activity"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/60",children:"File changes and agent events will appear here"})]}):(0,r.jsx)($,{className:"max-h-[400px]",children:(0,r.jsx)("div",{className:"space-y-0.5",children:e.map(e=>(0,r.jsx)(np,{type:e.type,description:e.description,timestamp:e.timestamp},e.id))})})]})}function nf(){return(0,r.jsxs)("div",{className:"flex h-full flex-col bg-background",children:[(0,r.jsx)("div",{className:"flex h-14 shrink-0 items-center border-b px-4",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(nn.A,{className:"h-4 w-4 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-sm font-medium",children:"Activity"})]})}),(0,r.jsx)($,{className:"flex-1",children:(0,r.jsx)("div",{className:"p-4",children:(0,r.jsx)(ng,{})})})]})}var nb=n(42317);let nv={navigation:"Navigation",panels:"Panels",editing:"Editing",ai:"AI",general:"General"},nw=["navigation","panels","editing","ai","general"];function nj({shortcuts:e}){let[t,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>{function e(){n(!0)}return window.addEventListener("clawpad:shortcuts-dialog",e),()=>window.removeEventListener("clawpad:shortcuts-dialog",e)},[]);let a=(0,s.useCallback)(e=>{n(e)},[]),l=nw.map(t=>({category:t,label:nv[t]??t,items:e.filter(e=>e.category===t)})).filter(e=>e.items.length>0);return(0,r.jsx)(eg,{open:t,onOpenChange:a,children:(0,r.jsxs)(ev,{className:"sm:max-w-[480px]",children:[(0,r.jsxs)(ew,{children:[(0,r.jsxs)(ey,{className:"flex items-center gap-2",children:[(0,r.jsx)(ex.A,{className:"h-4 w-4 text-muted-foreground"}),"Keyboard Shortcuts"]}),(0,r.jsx)(eN,{children:"Quick actions to navigate your workspace"})]}),(0,r.jsxs)("div",{className:"grid gap-5 py-2",children:[l.map(e=>(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:e.label}),(0,r.jsx)("div",{className:"space-y-1",children:e.items.map(e=>(0,r.jsxs)("div",{className:"flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"text-foreground/80",children:e.label}),(0,r.jsx)(nN,{keys:e.keys})]},e.id))})]},e.category)),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"mb-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Other"}),(0,r.jsxs)("div",{className:"flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-muted/50",children:[(0,r.jsx)("span",{className:"text-foreground/80",children:"Close dialog / panel"}),(0,r.jsx)(nN,{keys:"Esc"})]})]})]})]})})}let ny={"⌘":"⌘","⇧":"⇧","⌥":"⌥","⌃":"⌃",Cmd:"⌘",Shift:"⇧",Alt:"⌥",Ctrl:"⌃",Esc:"Esc",Enter:"↵",Tab:"⇥",Backspace:"⌫",Delete:"⌦","\\":"\\"};function nN({keys:e,className:t}){let n=function(e){let t=new Set(["⌘","⇧","⌥","⌃"]),n=[],r=0;for(;r<e.length;){let s=e[r];if(t.has(s))n.push(s),r++;else if("+"===s)r++;else{n.push(e.slice(r));break}}return 0===n.length&&n.push(e),n}(e);return(0,r.jsx)("div",{className:`flex items-center gap-0.5 ${t??""}`,children:n.map((e,t)=>(0,r.jsx)("kbd",{className:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted/60 px-1 text-[11px] font-medium text-muted-foreground",children:ny[e]??e},t))})}function nk(){var e;let t,n,a=(0,M.M)(e=>e.toggleSidebar),l=(0,M.M)(e=>e.toggleChatPanel),{resolvedTheme:i,setTheme:o}=(0,L.D)(),c=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-command-palette"))},[]),d=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"document"}}))},[]),u=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:shortcuts-dialog"))},[]),m=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:save"))},[]),h=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:save"))},[]),x=(0,s.useCallback)(()=>{o("dark"===i?"light":"dark")},[i,o]),p=(0,s.useCallback)(()=>{let e=document.querySelector(".clawpad-editor [contenteditable]")??document.querySelector(".clawpad-editor .bn-editor")??document.querySelector(".clawpad-editor");e&&e.focus()},[]),g=(0,s.useMemo)(()=>{var e;return[{id:"search",label:"Search",keys:"⌘K",category:"navigation",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"k"===e.key,action:(e={openSearch:c,newPage:d,toggleChat:l,toggleSidebar:a,save:m,saveAll:h,openShortcuts:u,toggleDarkMode:x,focusEditor:p}).openSearch},{id:"quick-switcher",label:"Quick Document Switcher",keys:"⌘P",category:"navigation",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"p"===e.key,action:e.openSearch},{id:"new-page",label:"New Document",keys:"⌘N",category:"navigation",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"n"===e.key,action:e.newPage},{id:"toggle-sidebar",label:"Toggle Sidebar",keys:"⌘\\",category:"panels",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"\\"===e.key,action:e.toggleSidebar},{id:"toggle-chat",label:"Toggle Chat",keys:"⌘⇧L",category:"panels",match:e=>(e.metaKey||e.ctrlKey)&&e.shiftKey&&"l"===e.key.toLowerCase(),action:e.toggleChat},{id:"focus-editor",label:"Focus Editor",keys:"⌘⇧E",category:"panels",match:e=>(e.metaKey||e.ctrlKey)&&e.shiftKey&&"e"===e.key.toLowerCase(),action:e.focusEditor},{id:"save",label:"Save",keys:"⌘S",category:"editing",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"s"===e.key,action:e.save},{id:"save-all",label:"Save All",keys:"⌘⇧S",category:"editing",match:e=>(e.metaKey||e.ctrlKey)&&e.shiftKey&&"s"===e.key.toLowerCase(),action:e.saveAll},...e.aiOnSelection?[{id:"ai-selection",label:"AI on Selection",keys:"⌘J",category:"ai",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"j"===e.key,action:e.aiOnSelection}]:[{id:"ai-selection",label:"AI on Selection",keys:"⌘J",category:"ai",match:e=>(e.metaKey||e.ctrlKey)&&!e.shiftKey&&"j"===e.key,action:()=>{}}],{id:"toggle-dark-mode",label:"Toggle Dark Mode",keys:"⌘⇧D",category:"general",match:e=>(e.metaKey||e.ctrlKey)&&e.shiftKey&&"d"===e.key.toLowerCase(),action:e.toggleDarkMode},{id:"shortcuts-help",label:"Keyboard Shortcuts",keys:"⌘/",category:"general",match:e=>(e.metaKey||e.ctrlKey)&&"/"===e.key,action:e.openShortcuts}]},[c,d,l,a,m,h,u,x,p]);return e=(0,s.useMemo)(()=>g.filter(e=>["toggle-sidebar","shortcuts-help","toggle-dark-mode","focus-editor","quick-switcher","save-all"].includes(e.id)),[g]),t=(0,s.useRef)(e),(0,s.useEffect)(()=>{t.current=e},[e]),n=(0,s.useCallback)(e=>{let n=e.target,r=!!n?.closest("input, textarea, select, [contenteditable='true']");for(let n of t.current)if(n.match(e)&&(!r||e.metaKey||e.ctrlKey)){e.preventDefault(),n.action();return}},[]),(0,s.useEffect)(()=>(window.addEventListener("keydown",n,{capture:!0}),()=>window.removeEventListener("keydown",n,{capture:!0})),[n]),(0,r.jsx)(nj,{shortcuts:g})}function nC(){return(0,r.jsxs)("div",{className:"flex h-full w-full flex-col p-4 gap-4",children:[(0,r.jsx)(D.E,{className:"h-8 w-32"}),(0,r.jsxs)("div",{className:"flex-1 space-y-3",children:[(0,r.jsx)(D.E,{className:"h-16 w-3/4 ml-auto"}),(0,r.jsx)(D.E,{className:"h-24 w-4/5"}),(0,r.jsx)(D.E,{className:"h-16 w-2/3 ml-auto"})]}),(0,r.jsx)(D.E,{className:"h-12 w-full"})]})}function nS({children:e}){let{isMobile:t,isTablet:n}=Y(),[a,l]=(0,s.useState)("editor"),{chatPanelOpen:i,setChatPanelOpen:o,setSidebarOpen:c,hydrateAppearance:d}=(0,M.M)(),u=(0,s.useRef)(new Map);(0,s.useEffect)(()=>{d()},[d]);let m=(0,s.useCallback)(e=>{let t=e.currentTarget;t.classList.add("is-scrolling");let n=u.current,r=n.get(t);r&&window.clearTimeout(r);let s=window.setTimeout(()=>{t.classList.remove("is-scrolling"),n.delete(t)},900);n.set(t,s)},[]);(0,s.useEffect)(()=>{let e=u.current;return()=>{e.forEach(e=>window.clearTimeout(e)),e.clear()}},[]);let h=(0,s.useCallback)(e=>{l(e),c(!1),"chat"===e?o(!0):o(!1)},[c,o]),p=(0,s.useCallback)(()=>{window.dispatchEvent(new CustomEvent("clawpad:open-new-page",{detail:{mode:"document"}}))},[]);return t?(0,r.jsxs)("div",{className:"flex h-[100dvh] flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex-1 overflow-hidden",children:["pages"===a&&(0,r.jsx)("div",{className:"h-full pb-14",children:(0,r.jsx)(na,{onNavigate:()=>l("editor")})}),"editor"===a&&(0,r.jsx)("main",{className:"workspace-scroll-area h-full overflow-y-auto pb-14",onScroll:m,children:(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nb.L,{}),children:e})}),"chat"===a&&(0,r.jsx)("div",{className:"h-full pb-14",children:(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nC,{}),children:(0,r.jsx)(tO,{variant:"fullscreen"})})}),"activity"===a&&(0,r.jsx)("div",{className:"h-full pb-14",children:(0,r.jsx)(nf,{})})]}),(0,r.jsx)(ns,{activeTab:a,onTabChange:h,onNewPage:p}),(0,r.jsx)(eD,{}),(0,r.jsx)(eK,{}),(0,r.jsx)(nk,{})]}):n?(0,r.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,r.jsx)(et,{}),(0,r.jsx)("main",{className:"workspace-scroll-area relative z-0 flex-1 overflow-y-auto",onScroll:m,children:(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nb.L,{}),children:e})}),(0,r.jsx)(x,{open:i,onOpenChange:o,children:(0,r.jsxs)(f,{side:"right",className:"w-[400px] p-0",showCloseButton:!1,children:[(0,r.jsx)(ee,{children:(0,r.jsx)(b,{children:"Chat"})}),(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nC,{}),children:(0,r.jsx)(tO,{variant:"sheet"})})]})}),(0,r.jsx)(eD,{}),(0,r.jsx)(eK,{}),(0,r.jsx)(nk,{})]}):(0,r.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,r.jsx)(et,{}),(0,r.jsx)("main",{className:"workspace-scroll-area relative z-0 flex-1 overflow-y-auto",onScroll:m,children:(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nb.L,{}),children:e})}),(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(nC,{}),children:(0,r.jsx)(tO,{})}),(0,r.jsx)(eD,{}),(0,r.jsx)(eK,{}),(0,r.jsx)(nk,{})]})}},31328:(e,t,n)=>{"use strict";n.d(t,{z:()=>a});var r=n(1934);let s="http://127.0.0.1:18789",a=(0,r.v)((e,t)=>({connected:!1,connecting:!1,wsStatus:"disconnected",wsError:void 0,reason:null,url:s,token:void 0,agentName:void 0,source:void 0,sessions:[],agentStatus:"idle",error:void 0,manualOverrideDirty:!1,detect:async t=>{try{t?.resetManual&&await fetch("/api/gateway/config",{method:"DELETE"}).catch(()=>void 0);let n=await fetch("/api/gateway/detect");if(!n.ok)throw Error("Failed to detect gateway");let r=await n.json();r&&e({url:r.url||s,token:r.token||void 0,agentName:r.agentName||void 0,source:r.source||void 0,manualOverrideDirty:!1})}catch(t){e({reason:"server_unreachable",error:`Detection failed: ${String(t)}`})}},connect:async()=>{let{url:n,token:r,manualOverrideDirty:s}=t();e({connecting:!0,error:void 0,reason:null});try{if(s&&n&&n.trim()){let e=await fetch("/api/gateway/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:n,token:r})});if(!e.ok){let t=await e.json().catch(()=>({error:"Failed to save gateway configuration"}));throw Error("string"==typeof t?.error?t.error:"Failed to save gateway configuration")}}let a=await fetch("/api/gateway/status");if(!a.ok)throw Error("Failed to check gateway status");let l=await a.json();l.connected?(e({connected:!0,connecting:!1,agentName:l.agentName||t().agentName,source:s?"clawpad.override":l.source||t().source,manualOverrideDirty:!1,reason:null,error:void 0}),t().loadSessions()):e({connected:!1,connecting:!1,reason:l.reason??"gateway_unreachable",error:l.error||`Cannot connect to ${n}`})}catch(t){e({connected:!1,connecting:!1,reason:"server_unreachable",error:`ClawPad server unreachable: ${String(t)}`})}},disconnect:()=>{e({connected:!1,connecting:!1,wsStatus:"disconnected",reason:null,sessions:[],agentStatus:"idle",error:void 0})},loadSessions:async()=>{try{let t=await fetch("/api/gateway/sessions");if(!t.ok)return;let n=(await t.json()).sessions??[],r=n.some(e=>"active"===e.status),s=n.some(e=>"thinking"===e.status);e({sessions:n,agentStatus:r?"active":s?"thinking":"idle"})}catch{}},setUrl:t=>e({url:t,manualOverrideDirty:!0}),setToken:t=>e({token:t||void 0,manualOverrideDirty:!0}),setWSStatus:(n,r)=>{e({wsStatus:n,wsError:"connected"===n?void 0:r?.error}),"connected"===n?e({connected:!0,connecting:!1,reason:null,error:void 0}):"connecting"===n||"reconnecting"===n?e({connected:!1,connecting:!0,reason:r?.reason??"gateway_unreachable"}):e({connected:!1,connecting:!1,reason:r?.reason??t().reason??"gateway_unreachable"})},setAgentStatus:t=>e({agentStatus:t})}))},35018:(e,t,n)=>{Promise.resolve().then(n.bind(n,24733))},42317:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(95155),s=n(86846);function a(){return(0,r.jsxs)("div",{className:"mx-auto w-full max-w-[720px] px-6",children:[(0,r.jsxs)("div",{className:"pt-20 pb-4",children:[(0,r.jsx)(s.E,{className:"h-10 w-2/3 mb-3"}),(0,r.jsx)(s.E,{className:"h-4 w-1/3"})]}),(0,r.jsxs)("div",{className:"space-y-3 pt-6",children:[(0,r.jsx)(s.E,{className:"h-4 w-full"}),(0,r.jsx)(s.E,{className:"h-4 w-[92%]"}),(0,r.jsx)(s.E,{className:"h-4 w-[78%]"}),(0,r.jsx)("div",{className:"h-3"}),(0,r.jsx)(s.E,{className:"h-4 w-full"}),(0,r.jsx)(s.E,{className:"h-4 w-[85%]"}),(0,r.jsx)(s.E,{className:"h-4 w-[65%]"}),(0,r.jsx)("div",{className:"h-3"}),(0,r.jsx)(s.E,{className:"h-4 w-[90%]"}),(0,r.jsx)(s.E,{className:"h-4 w-[70%]"})]})]})}},45160:(e,t,n)=>{"use strict";n.d(t,{E:()=>o});var r=n(95155);n(12115);var s=n(18460),a=n(42442),l=n(52799);let i=(0,s.F)("inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function o({className:e,variant:t="default",asChild:n=!1,...s}){let o=n?a.bL:"span";return(0,r.jsx)(o,{"data-slot":"badge","data-variant":t,className:(0,l.cn)(i({variant:t}),e),...s})}},46794:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});let r=(0,n(1934).v)(e=>({lastEvent:void 0,events:[],updatedAt:void 0,addEvent:t=>e(e=>{let n=function(e,t){if(t)return t;let n=(e??"").toLowerCase();if(n){if("failed"===n)return"error";if("sent"===n)return"alert";if(n.startsWith("ok"))return"ok"}}(t.status,t.indicatorType),r={...t,indicatorType:n,actionable:"alert"===n||"error"===n},s=[r,...e.events];return s.length>20&&(s.length=20),{lastEvent:r,events:s,updatedAt:Date.now()}}),clear:()=>e({lastEvent:void 0,events:[],updatedAt:void 0})}))},53536:(e,t,n)=>{"use strict";function r(e){let t=new Date(e),n=Math.floor((new Date().getTime()-t.getTime())/1e3),r=Math.floor(n/60),s=Math.floor(r/60),a=Math.floor(s/24);return n<60?"just now":r<60?`${r}m`:s<24?`${s}h`:1===a?"Yesterday":a<7?`${a}d`:a<30?`${Math.floor(a/7)}w`:t.toLocaleDateString("en-US",{month:"short",day:"numeric"})}n.d(t,{f:()=>r})},60529:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(95155);n(12115);var s=n(52799);function a({className:e,type:t,...n}){return(0,r.jsx)("input",{type:t,"data-slot":"input",className:(0,s.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...n})}},70872:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>l,ZI:()=>c,k$:()=>o,m_:()=>i});var r=n(95155);n(12115);var s=n(28935),a=n(52799);function l({delayDuration:e=0,...t}){return(0,r.jsx)(s.Provider,{"data-slot":"tooltip-provider",delayDuration:e,...t})}function i({...e}){return(0,r.jsx)(l,{children:(0,r.jsx)(s.Root,{"data-slot":"tooltip",...e})})}function o({...e}){return(0,r.jsx)(s.Trigger,{"data-slot":"tooltip-trigger",...e})}function c({className:e,sideOffset:t=0,children:n,...l}){return(0,r.jsx)(s.Portal,{children:(0,r.jsxs)(s.Content,{"data-slot":"tooltip-content",sideOffset:t,className:(0,a.cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",e),...l,children:[n,(0,r.jsx)(s.Arrow,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},83099:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});let r=(0,n(1934).v)((e,t)=>({sessionKey:null,activeRun:null,activeFiles:new Set,lastFileTouchAt:null,changeSets:[],review:{open:!1,changeSetId:null,filePath:null},dismissed:new Set,loading:!1,error:void 0,setSessionKey:t=>e({sessionKey:t}),setActiveRun:t=>e({activeRun:t,...t?{}:{lastFileTouchAt:null}}),touchFile:t=>e(e=>{let n=new Set(e.activeFiles);return n.add(t),{activeFiles:n,lastFileTouchAt:Date.now()}}),clearActiveFiles:()=>e({activeFiles:new Set,lastFileTouchAt:null}),loadChangeSets:async()=>{let n=t().sessionKey;if(n){e({loading:!0,error:void 0});try{let t=await fetch(`/api/changes?sessionKey=${encodeURIComponent(n)}`);if(!t.ok)throw Error("Failed to load change sets");let r=await t.json();e({changeSets:r,loading:!1})}catch(t){e({loading:!1,error:String(t)})}}},openReview:(t,n)=>e({review:{open:!0,changeSetId:t,filePath:n}}),closeReview:()=>e({review:{open:!1,changeSetId:null,filePath:null}}),dismissChangeSet:t=>e(e=>{let n=new Set(e.dismissed);return n.add(t),{dismissed:n}})}))},86846:(e,t,n)=>{"use strict";n.d(t,{E:()=>a});var r=n(95155),s=n(52799);function a({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"skeleton",className:(0,s.cn)("bg-accent animate-pulse rounded-md",e),...t})}},89239:(e,t,n)=>{"use strict";n.d(t,{$:()=>o});var r=n(95155);n(12115);var s=n(18460),a=n(42442),l=n(52799);let i=(0,s.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function o({className:e,variant:t="default",size:n="default",asChild:s=!1,...o}){let c=s?a.bL:"button";return(0,r.jsx)(c,{"data-slot":"button","data-variant":t,"data-size":n,className:(0,l.cn)(i({variant:t,size:n,className:e})),...o})}},93571:(e,t,n)=>{"use strict";n.d(t,{R:()=>o});var r=n(95155),s=n(5772),a=n(52799);let l=265/235,i=1152/235;function o({variant:e="icon",size:t=24,className:n,imageClassName:o,lightImageClassName:c,darkImageClassName:d,theme:u="auto",alt:m="ClawPad",priority:h=!1}){let x="icon"===e,p=Math.round(t*(x?l:i));return(0,r.jsx)("span",{className:(0,a.cn)("inline-flex items-center",n),children:(0,r.jsx)(s.default,{src:x?"/brand/icon.png":"/brand/logo.png",width:p,height:t,alt:m,priority:h,className:(0,a.cn)("block",o,"dark"===u?d:"light"===u?c:void 0)})})}},97916:(e,t,n)=>{"use strict";n.d(t,{w:()=>l});var r=n(95155);n(12115);var s=n(89803),a=n(52799);function l({className:e,orientation:t="horizontal",decorative:n=!0,...l}){return(0,r.jsx)(s.b,{"data-slot":"separator",decorative:n,orientation:t,className:(0,a.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...l})}}},e=>{e.O(0,[8803,330,7300,4559,6609,5403,8935,9352,1285,8550,9075,7230,1178,8441,3794,7358],()=>e(e.s=35018)),_N_E=e.O()}]);
|
package/bin/clawpad.js
CHANGED
|
@@ -732,6 +732,11 @@ function connectRelay(relayUrl, token, gatewayWsUrl, gatewayToken, agentName = "
|
|
|
732
732
|
// ─── Normal Launcher Logic ──────────────────────────────
|
|
733
733
|
async function runLauncher(args) {
|
|
734
734
|
|
|
735
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
736
|
+
console.log(CURRENT_VERSION);
|
|
737
|
+
process.exit(0);
|
|
738
|
+
}
|
|
739
|
+
|
|
735
740
|
if (args.includes("--help") || args.includes("-h")) {
|
|
736
741
|
printHelp();
|
|
737
742
|
process.exit(0);
|
|
@@ -808,6 +813,7 @@ function printHelp() {
|
|
|
808
813
|
--setup Open setup onboarding flow on launch
|
|
809
814
|
--yes Auto-approve integration steps
|
|
810
815
|
--force Kill any process using the selected port
|
|
816
|
+
-v, --version Print version
|
|
811
817
|
-h, --help Show this help message
|
|
812
818
|
|
|
813
819
|
Options (share):
|
|
@@ -1456,75 +1462,46 @@ function writeOpenClawConfig(configPath, config) {
|
|
|
1456
1462
|
fs.writeFileSync(configPath, `${serialized}\n`, "utf-8");
|
|
1457
1463
|
}
|
|
1458
1464
|
|
|
1459
|
-
function hasRequiredOperatorScopes(scopeSet) {
|
|
1460
|
-
return scopeSet.has("operator.read") && scopeSet.has("operator.write");
|
|
1461
|
-
}
|
|
1462
|
-
|
|
1463
|
-
function normalizeScopeArray(raw, defaults = []) {
|
|
1464
|
-
const scopes = normalizeScopes(raw);
|
|
1465
|
-
if (scopes.size === 0 && Array.isArray(defaults)) {
|
|
1466
|
-
for (const item of defaults) {
|
|
1467
|
-
const normalized = String(item || "").trim().toLowerCase();
|
|
1468
|
-
if (normalized) scopes.add(normalized);
|
|
1469
|
-
}
|
|
1470
|
-
}
|
|
1471
|
-
return [...scopes];
|
|
1472
|
-
}
|
|
1473
|
-
|
|
1474
1465
|
function normalizeTokenEntry(entry) {
|
|
1475
1466
|
const token = extractTokenFromEntry(entry);
|
|
1476
1467
|
if (!token) return null;
|
|
1477
|
-
const scopes =
|
|
1478
|
-
entry && typeof entry === "object"
|
|
1479
|
-
? normalizeScopeArray(entry.scopes ?? entry.scope)
|
|
1480
|
-
: [];
|
|
1481
1468
|
return {
|
|
1482
1469
|
token,
|
|
1483
|
-
scopes
|
|
1470
|
+
scopes:
|
|
1471
|
+
entry && typeof entry === "object"
|
|
1472
|
+
? [...normalizeScopes(entry.scopes ?? entry.scope)]
|
|
1473
|
+
: [],
|
|
1484
1474
|
};
|
|
1485
1475
|
}
|
|
1486
1476
|
|
|
1487
|
-
function
|
|
1477
|
+
function repairUnsupportedGatewayAuthTokens(configPath, config) {
|
|
1488
1478
|
const auth = config?.gateway?.auth;
|
|
1489
1479
|
if (!auth || typeof auth !== "object") {
|
|
1490
1480
|
return { updated: false, config };
|
|
1491
1481
|
}
|
|
1492
1482
|
|
|
1493
|
-
|
|
1494
|
-
const tokenEntries = Array.isArray(auth.tokens) ? auth.tokens.map(normalizeTokenEntry).filter(Boolean) : [];
|
|
1495
|
-
const hasWritableToken = tokenEntries.some((entry) => hasRequiredOperatorScopes(new Set(entry.scopes)));
|
|
1496
|
-
if (hasWritableToken) {
|
|
1483
|
+
if (!Array.isArray(auth.tokens)) {
|
|
1497
1484
|
return { updated: false, config };
|
|
1498
1485
|
}
|
|
1499
1486
|
|
|
1500
|
-
const
|
|
1501
|
-
|
|
1487
|
+
const tokenEntries = auth.tokens
|
|
1488
|
+
.map(normalizeTokenEntry)
|
|
1489
|
+
.filter(Boolean)
|
|
1490
|
+
.map((entry, index) => ({
|
|
1491
|
+
token: entry.token,
|
|
1492
|
+
priority: index,
|
|
1493
|
+
score: scoreScopes(new Set(entry.scopes)),
|
|
1494
|
+
}));
|
|
1502
1495
|
|
|
1503
|
-
|
|
1504
|
-
const directScopes = normalizeScopeArray(auth.scopes ?? auth.scope, defaults);
|
|
1505
|
-
const rebuiltTokens = [
|
|
1506
|
-
{ token: directToken, scopes: directScopes },
|
|
1507
|
-
...tokenEntries.filter((entry) => entry.token !== directToken),
|
|
1508
|
-
];
|
|
1509
|
-
|
|
1510
|
-
auth.tokens = rebuiltTokens;
|
|
1511
|
-
delete auth.token;
|
|
1512
|
-
delete auth.scope;
|
|
1513
|
-
delete auth.scopes;
|
|
1514
|
-
updated = true;
|
|
1515
|
-
} else if (tokenEntries.length > 0) {
|
|
1516
|
-
const [first, ...rest] = tokenEntries;
|
|
1517
|
-
if (first) {
|
|
1518
|
-
const merged = [...new Set([...first.scopes, ...defaults])];
|
|
1519
|
-
auth.tokens = [{ token: first.token, scopes: merged }, ...rest];
|
|
1520
|
-
updated = true;
|
|
1521
|
-
}
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
|
-
if (!updated) {
|
|
1525
|
-
return { updated: false, config };
|
|
1526
|
-
}
|
|
1496
|
+
tokenEntries.sort((a, b) => b.score - a.score || a.priority - b.priority);
|
|
1527
1497
|
|
|
1498
|
+
const selectedToken = normalizeToken(auth.token) || tokenEntries[0]?.token;
|
|
1499
|
+
if (selectedToken) {
|
|
1500
|
+
auth.token = selectedToken;
|
|
1501
|
+
}
|
|
1502
|
+
delete auth.tokens;
|
|
1503
|
+
delete auth.scope;
|
|
1504
|
+
delete auth.scopes;
|
|
1528
1505
|
writeOpenClawConfig(configPath, config);
|
|
1529
1506
|
return { updated: true, config };
|
|
1530
1507
|
}
|
|
@@ -2364,12 +2341,12 @@ async function main(
|
|
|
2364
2341
|
}
|
|
2365
2342
|
}
|
|
2366
2343
|
if (openclawInstall.installed) {
|
|
2367
|
-
const migration =
|
|
2344
|
+
const migration = repairUnsupportedGatewayAuthTokens(loadedConfig.configPath, config);
|
|
2368
2345
|
config = migration.config;
|
|
2369
2346
|
if (migration.updated) {
|
|
2370
|
-
console.log(" 🔐
|
|
2347
|
+
console.log(" 🔐 Repaired OpenClaw gateway auth config (removed unsupported gateway.auth.tokens).");
|
|
2371
2348
|
if (restartOpenClawGateway()) {
|
|
2372
|
-
console.log(" ♻️ Restarted OpenClaw gateway to apply
|
|
2349
|
+
console.log(" ♻️ Restarted OpenClaw gateway to apply repaired auth config.");
|
|
2373
2350
|
} else {
|
|
2374
2351
|
console.warn(" ⚠️ Updated config but could not restart gateway automatically.");
|
|
2375
2352
|
console.warn(" Run: openclaw gateway restart");
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=8349,exports.ids=[8349],exports.modules={18349:(a,b,c)=>{c.d(b,{detectGateway:()=>h});var d=c(79748),e=c(27843),f=c(21642),g=c(69038);async function h(){let a=process.env.OPENCLAW_GATEWAY_URL,b=j(process.env.OPENCLAW_GATEWAY_TOKEN),c=process.env.OPENCLAW_AGENT_NAME;if(a)return{url:i(a),token:b||void 0,agentName:c||void 0,source:"env"};try{let a=await (0,g.r$)();if(a?.url)return{url:i(a.url),token:j(a.token)??b,agentName:c||void 0,source:"clawpad.override"}}catch{}try{let a=(0,e.YJ)();if(a){var h;let c=await (0,d.readFile)(a,"utf-8"),e=(0,f.N)(c),g=e.ok&&e.value&&"object"==typeof e.value?e.value:{},i=g.gateway?.port??g.port??18789,m={loopback:"127.0.0.1",localhost:"127.0.0.1","0.0.0.0":"127.0.0.1","::":"127.0.0.1","::1":"127.0.0.1"}[h=g.gateway?.bind??g.gateway?.host??g.host??"127.0.0.1"]??h;return{url:`http://${m}:${i}`,token:function(a){if(!a||"object"!=typeof a)return;let b=[],c=j(a.token);if(c){let d=k(a.scopes??a.scope);b.push({token:c,score:d.size>0?l(d)+30:50,priority:0})}let d=Array.isArray(a.tokens)?a.tokens:[];for(let a=0;a<d.length;a+=1){let c=d[a],e="string"==typeof c?j(c):c&&"object"==typeof c&&!1!==c.enabled?j(c.token??c.value??c.accessToken??c.access_token??c.bearer??c.secret):void 0;if(!e)continue;let f=c&&"object"==typeof c?k(c.scopes??c.scope):new Set;b.push({token:e,score:f.size>0?l(f):25,priority:a+1})}if(0!==b.length)return b.sort((a,b)=>b.score-a.score||a.priority-b.priority),b[0]?.token}(g.gateway?.auth)??b,agentName:g.name??g.agentName??void 0,source:a.includes("clawdbot.json")?"clawdbot.json":"openclaw.json"}}}catch{}return{url:"http://127.0.0.1:18789",token:void 0,agentName:void 0,source:"default"}}function i(a){return a.startsWith("http://")||a.startsWith("https://")?a.replace(/\/+$/,""):`http://${a}`}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a){let b=new Set,c=[];if("string"==typeof a)c.push(...a.split(/[,\s]+/g));else if(Array.isArray(a))for(let b of a)"string"==typeof b&&c.push(...b.split(/[,\s]+/g));for(let a of c){let c=a.trim().toLowerCase();c&&b.add(c)}return b}function l(a){let b=10;return a.has("operator.read")&&(b+=100),a.has("operator.write")&&(b+=200),a.has("operator.admin")&&(b+=30),a.has("operator.approvals")&&(b+=5),a.has("operator.pairing")&&(b+=5),b}},69038:(a,b,c)=>{c.d(b,{I3:()=>n,ij:()=>m,r$:()=>l});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(27843);function i(a){if("string"!=typeof a)return null;let b=a.trim();return b?(b.startsWith("http://")||b.startsWith("https://")?b:`http://${b}`).replace(/\/+$/g,""):null}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a=process.env){return g().join((0,h.We)(a),"clawpad","gateway-override.json")}async function l(a=process.env){let b=k(a);try{let a=await e().readFile(b,"utf-8"),c=JSON.parse(a),d=i(c?.url);if(c?.version!==1||!d)return null;let f=j(c?.token),g="string"==typeof c?.updatedAt&&c.updatedAt.trim()?c.updatedAt:new Date().toISOString();return{version:1,url:d,...f?{token:f}:{},updatedAt:g}}catch{return null}}async function m(a,b=process.env){let c=i(a.url);if(!c)throw Error("Gateway URL is required");let d=j(a.token),f={version:1,url:c,...d?{token:d}:{},updatedAt:new Date().toISOString()},h=k(b);await e().mkdir(g().dirname(h),{recursive:!0}),await e().writeFile(h,`${JSON.stringify(f,null,2)}
|
|
2
|
-
`,{mode:384});try{await e().chmod(h,384)}catch{}return f}async function n(a=process.env){let b=k(a);try{await e().unlink(b)}catch{}}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7715],{27715:(e,t,a)=>{a.d(t,{q:()=>m});var n=a(95155),r=a(12115),s=a(97916),i=a(89239),o=a(60529),c=a(45160),d=a(6296),l=a(73035),u=a(62791),g=a(12651),v=a(91958),h=a(31328);function m({embedded:e=!1}){let{connected:t,connecting:a,wsStatus:m,url:x,token:f,agentName:b,source:p,reason:w,wsError:y,error:k,detect:j,connect:N,disconnect:C,setUrl:z,setToken:S}=(0,h.z)(),[_,A]=(0,r.useState)(!1),[E,$]=(0,r.useState)(null);(0,r.useEffect)(()=>{j()},[j]);let O=(0,r.useCallback)(async()=>{$(null),await j({resetManual:!0})},[j]),D=(0,r.useCallback)(async()=>{A(!0),$(null);try{let e=await fetch("/api/gateway/status"),t=await e.json();t.connected?$({ok:!0,message:"Connected successfully!"}):$({ok:!1,message:t.error||"Cannot connect to gateway"})}catch(t){let e=String(t?.message??t);$({ok:!1,message:e.includes("Failed to fetch")||e.includes("Load failed")?"ClawPad couldn’t reach the gateway. Is OpenClaw running?":`Failed to test connection: ${e}`})}finally{A(!1)}},[]),F=(0,r.useCallback)(async()=>{$(null),await N()},[N]);return(0,n.jsxs)("div",{className:e?"space-y-6":"mx-auto max-w-2xl px-6 py-10",children:[!e&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Gateway Connection"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Connect ClawPad to your local OpenClaw gateway."})]}),(0,n.jsx)(s.w,{className:"my-6"})]}),(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsxs)("div",{className:"rounded-lg border p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3",children:[(0,n.jsx)("div",{className:`flex h-10 w-10 items-center justify-center rounded-full ${t?"bg-green-50 dark:bg-green-900/30":"bg-zinc-100 dark:bg-zinc-800"}`,children:a||"reconnecting"===m?(0,n.jsx)(d.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}):t?(0,n.jsx)(l.A,{className:"h-5 w-5 text-green-600"}):(0,n.jsx)(u.A,{className:"h-5 w-5 text-muted-foreground"})}),(0,n.jsxs)("div",{className:"space-y-0.5",children:[(0,n.jsx)("h3",{className:"text-sm font-medium",children:t?"Connected":a?"Connecting…":"reconnecting"===m?"Reconnecting…":"Disconnected"}),(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:t&&b?`Agent: ${b}`:t?"Connected to gateway":y?.toLowerCase().includes("pairing required")?"Pairing required. Approve this device in OpenClaw, then reconnect.":y||k||("server_unreachable"===w?"ClawPad server is unreachable from this browser.":"Not connected to any gateway.")})]})]}),(0,n.jsx)(c.E,{variant:t?"default":"secondary",className:t?"bg-green-100 text-green-700 hover:bg-green-100 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/30":"",children:t?"Connected":a?"Connecting":"reconnecting"===m?"Reconnecting":"Disconnected"})]}),p&&(0,n.jsxs)("p",{className:"mt-3 text-xs text-muted-foreground",children:["Config source: ",(0,n.jsx)("span",{className:"font-medium",children:p})]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("label",{htmlFor:"gateway-url",className:"text-sm font-medium",children:"Gateway URL"}),(0,n.jsx)(o.p,{id:"gateway-url",placeholder:"http://127.0.0.1:18789",value:x,onChange:e=>z(e.target.value)}),(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"The HTTP URL of your OpenClaw gateway. Usually auto-detected."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("label",{htmlFor:"gateway-token",className:"text-sm font-medium",children:"Authentication Token"}),(0,n.jsx)(o.p,{id:"gateway-token",type:"password",placeholder:"Optional — read from openclaw.json if available",value:f||"",onChange:e=>S(e.target.value)})]}),E&&(0,n.jsxs)("div",{className:`flex items-center gap-2 rounded-lg border p-3 text-sm ${E.ok?"border-green-200 bg-green-50 text-green-700 dark:border-green-800 dark:bg-green-900/20 dark:text-green-400":"border-red-200 bg-red-50 text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400"}`,children:[E.ok?(0,n.jsx)(g.A,{className:"h-4 w-4 shrink-0"}):(0,n.jsx)(u.A,{className:"h-4 w-4 shrink-0"}),E.message]}),(0,n.jsxs)("div",{className:"flex gap-3",children:[t?(0,n.jsx)(i.$,{variant:"outline",onClick:C,children:"Disconnect"}):(0,n.jsxs)(i.$,{onClick:F,disabled:a,children:[a&&(0,n.jsx)(d.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Connect"]}),(0,n.jsxs)(i.$,{variant:"outline",onClick:D,disabled:_,children:[_&&(0,n.jsx)(d.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Test Connection"]}),(0,n.jsxs)(i.$,{variant:"outline",onClick:O,children:[(0,n.jsx)(v.A,{className:"mr-2 h-4 w-4"}),"Auto-Detect"]})]})]})]})}},31328:(e,t,a)=>{a.d(t,{z:()=>s});var n=a(1934);let r="http://127.0.0.1:18789",s=(0,n.v)((e,t)=>({connected:!1,connecting:!1,wsStatus:"disconnected",wsError:void 0,reason:null,url:r,token:void 0,agentName:void 0,source:void 0,sessions:[],agentStatus:"idle",error:void 0,manualOverrideDirty:!1,detect:async t=>{try{t?.resetManual&&await fetch("/api/gateway/config",{method:"DELETE"}).catch(()=>void 0);let a=await fetch("/api/gateway/detect");if(!a.ok)throw Error("Failed to detect gateway");let n=await a.json();n&&e({url:n.url||r,token:n.token||void 0,agentName:n.agentName||void 0,source:n.source||void 0,manualOverrideDirty:!1})}catch(t){e({reason:"server_unreachable",error:`Detection failed: ${String(t)}`})}},connect:async()=>{let{url:a,token:n,manualOverrideDirty:r}=t();e({connecting:!0,error:void 0,reason:null});try{if(r&&a&&a.trim()){let e=await fetch("/api/gateway/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:a,token:n})});if(!e.ok){let t=await e.json().catch(()=>({error:"Failed to save gateway configuration"}));throw Error("string"==typeof t?.error?t.error:"Failed to save gateway configuration")}}let s=await fetch("/api/gateway/status");if(!s.ok)throw Error("Failed to check gateway status");let i=await s.json();i.connected?(e({connected:!0,connecting:!1,agentName:i.agentName||t().agentName,source:r?"clawpad.override":i.source||t().source,manualOverrideDirty:!1,reason:null,error:void 0}),t().loadSessions()):e({connected:!1,connecting:!1,reason:i.reason??"gateway_unreachable",error:i.error||`Cannot connect to ${a}`})}catch(t){e({connected:!1,connecting:!1,reason:"server_unreachable",error:`ClawPad server unreachable: ${String(t)}`})}},disconnect:()=>{e({connected:!1,connecting:!1,wsStatus:"disconnected",reason:null,sessions:[],agentStatus:"idle",error:void 0})},loadSessions:async()=>{try{let t=await fetch("/api/gateway/sessions");if(!t.ok)return;let a=(await t.json()).sessions??[],n=a.some(e=>"active"===e.status),r=a.some(e=>"thinking"===e.status);e({sessions:a,agentStatus:n?"active":r?"thinking":"idle"})}catch{}},setUrl:t=>e({url:t,manualOverrideDirty:!0}),setToken:t=>e({token:t||void 0,manualOverrideDirty:!0}),setWSStatus:(a,n)=>{e({wsStatus:a,wsError:"connected"===a?void 0:n?.error}),"connected"===a?e({connected:!0,connecting:!1,reason:null,error:void 0}):"connecting"===a||"reconnecting"===a?e({connected:!1,connecting:!0,reason:n?.reason??"gateway_unreachable"}):e({connected:!1,connecting:!1,reason:n?.reason??t().reason??"gateway_unreachable"})},setAgentStatus:t=>e({agentStatus:t})}))},45160:(e,t,a)=>{a.d(t,{E:()=>c});var n=a(95155);a(12115);var r=a(18460),s=a(42442),i=a(52799);let o=(0,r.F)("inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function c({className:e,variant:t="default",asChild:a=!1,...r}){let c=a?s.bL:"span";return(0,n.jsx)(c,{"data-slot":"badge","data-variant":t,className:(0,i.cn)(o({variant:t}),e),...r})}},52799:(e,t,a)=>{a.d(t,{cn:()=>s});var n=a(29722),r=a(622);function s(...e){return(0,r.QP)((0,n.$)(e))}},60529:(e,t,a)=>{a.d(t,{p:()=>s});var n=a(95155);a(12115);var r=a(52799);function s({className:e,type:t,...a}){return(0,n.jsx)("input",{type:t,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...a})}},89239:(e,t,a)=>{a.d(t,{$:()=>c});var n=a(95155);a(12115);var r=a(18460),s=a(42442),i=a(52799);let o=(0,r.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function c({className:e,variant:t="default",size:a="default",asChild:r=!1,...c}){let d=r?s.bL:"button";return(0,n.jsx)(d,{"data-slot":"button","data-variant":t,"data-size":a,className:(0,i.cn)(o({variant:t,size:a,className:e})),...c})}},97916:(e,t,a)=>{a.d(t,{w:()=>i});var n=a(95155);a(12115);var r=a(89803),s=a(52799);function i({className:e,orientation:t="horizontal",decorative:a=!0,...i}){return(0,n.jsx)(r.b,{"data-slot":"separator",decorative:a,orientation:t,className:(0,s.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...i})}}}]);
|