@nextclaw/ui 0.27.4 → 0.27.5-beta.0
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/CHANGELOG.md +7 -0
- package/dist/.vite/manifest.json +45 -45
- package/dist/assets/{account-panel-Cfx3ocPY.js → account-panel-DgqicWMm.js} +1 -1
- package/dist/assets/{agents-BdeFtIOV.js → agents-CTSR4ZKb.js} +1 -1
- package/dist/assets/agents-i7167DcF.js +1 -0
- package/dist/assets/{app-presenter-provider-BB3Xl8b0.js → app-presenter-provider-DdD2Q7jZ.js} +17 -16
- package/dist/assets/{appearance-settings-page-DiSRSDN3.js → appearance-settings-page-CSWYLrsR.js} +1 -1
- package/dist/assets/apps-DUP3aPpu.js +1 -0
- package/dist/assets/cron-DPBUHn7j.js +1 -0
- package/dist/assets/doc-browser-C7kvXGc_.js +1 -0
- package/dist/assets/inbox-C09MQO9k.js +1 -0
- package/dist/assets/{keyboard-shortcuts-settings-page-BFBXVf20.js → keyboard-shortcuts-settings-page-BCxB9m69.js} +1 -1
- package/dist/assets/{main-Bp1iozNB.js → main-C6VGoYNO.js} +2 -2
- package/dist/assets/{marketplace-BTDWnHP7.js → marketplace-CXCLbyho.js} +1 -1
- package/dist/assets/mcp-marketplace-page-ZAm380SB.js +1 -0
- package/dist/assets/panel-apps-BQlyeAId.js +1 -0
- package/dist/assets/{projects-fPTOn2Wz.js → projects-BWM-oEo0.js} +1 -1
- package/dist/assets/remote-DngM8iep.js +1 -0
- package/dist/assets/{runtime-config-page-P5RUq3YK.js → runtime-config-page-Dx6lWn3_.js} +1 -1
- package/dist/assets/{service-apps-panel-BReYr_ni.js → service-apps-panel-9khaUSFI.js} +1 -1
- package/dist/index.html +3 -3
- package/package.json +7 -7
- package/src/features/chat/features/message/utils/__tests__/chat-message-timeline.utils.test.ts +16 -0
- package/src/features/chat/features/message/utils/__tests__/chat-message.utils.test.ts +17 -0
- package/src/features/chat/features/message/utils/chat-message-timeline.utils.ts +3 -3
- package/src/features/chat/features/message/utils/chat-message.utils.ts +11 -4
- package/src/features/chat/features/message/utils/chat-user-question-timeline.utils.ts +42 -0
- package/dist/assets/agents-p_wcGhC3.js +0 -1
- package/dist/assets/apps-CKFrWb00.js +0 -1
- package/dist/assets/cron-UqsFT41c.js +0 -1
- package/dist/assets/doc-browser-2VjSkax1.js +0 -1
- package/dist/assets/inbox-D62apR2j.js +0 -1
- package/dist/assets/mcp-marketplace-page-oHCbBkS-.js +0 -1
- package/dist/assets/panel-apps-CniMi7QW.js +0 -1
- package/dist/assets/remote-CsJMF8OR.js +0 -1
package/dist/assets/{appearance-settings-page-DiSRSDN3.js → appearance-settings-page-CSWYLrsR.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{n as t,o as n,w as r}from"./theme-provider-BsJ6HxeX.js";import{Jt as i,Kt as a,Ut as o,Zt as s,_n as c,qt as l,ur as u,xr as d}from"./api-CXWxExzS.js";import{Rt as f,o as p}from"./app-presenter-provider-
|
|
1
|
+
import{i as e}from"./chunk-DF37yw5_.js";import{n as t,o as n,w as r}from"./theme-provider-BsJ6HxeX.js";import{Jt as i,Kt as a,Ut as o,Zt as s,_n as c,qt as l,ur as u,xr as d}from"./api-CXWxExzS.js";import{Rt as f,o as p}from"./app-presenter-provider-DdD2Q7jZ.js";import{B as m}from"./dist-D9h2cWk3.js";import{c as h,s as g}from"./i18n-ByVUrt9w.js";import{a as _,i as v,n as y,r as b,t as x}from"./select-BJ-EjmCz.js";var S=e(d(),1);function C(){let{language:e,setLanguage:t}=n();return{currentLanguage:e,currentLanguageLabel:h.find(t=>t.value===e)?.label??e,languageOptions:h,selectLanguage:(0,S.useCallback)(n=>{e!==n&&(t(n),window.location.reload())},[e,t])}}var w=u(),T=[{value:`card`,labelKey:`chatMessageLayoutCard`,descriptionKey:`chatMessageLayoutCardDescription`},{value:`flat`,labelKey:`chatMessageLayoutFlat`,descriptionKey:`chatMessageLayoutFlatDescription`}];function E(){let{theme:e,setTheme:n}=t(),{currentLanguage:u,languageOptions:d,selectLanguage:h}=C(),S=f(e=>e.layout),E=f(e=>e.setLayout),D=p(e=>e.isVisible),O=p(e=>e.setVisible);return(0,w.jsx)(s,{title:g(`appearance`),children:(0,w.jsx)(i,{children:(0,w.jsxs)(l,{children:[(0,w.jsx)(a,{title:g(`theme`),control:(0,w.jsxs)(x,{value:e,onValueChange:e=>n(e),children:[(0,w.jsx)(v,{"aria-label":g(`theme`),className:`w-36 sm:w-44`,children:(0,w.jsx)(_,{})}),(0,w.jsx)(y,{children:r.map(e=>(0,w.jsx)(b,{value:e.value,children:g(e.labelKey)},e.value))})]})}),(0,w.jsx)(a,{title:g(`language`),control:(0,w.jsxs)(x,{value:u,onValueChange:e=>h(e),children:[(0,w.jsx)(v,{"aria-label":g(`language`),className:`w-36 sm:w-44`,children:(0,w.jsx)(_,{})}),(0,w.jsx)(y,{children:d.map(e=>(0,w.jsx)(b,{value:e.value,children:e.label},e.value))})]})}),(0,w.jsx)(a,{title:g(`chatMessageLayoutTitle`),description:g(`chatMessageLayoutDescription`),layout:`stacked`,children:(0,w.jsx)(`div`,{role:`radiogroup`,"aria-label":g(`chatMessageLayoutTitle`),className:`grid gap-1 rounded-xl bg-background/65 p-1 sm:grid-cols-2`,children:T.map(e=>{let t=e.value===S;return(0,w.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,onClick:()=>E(e.value),className:c(`flex min-w-0 items-start gap-3 rounded-lg px-3 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,t?`bg-[var(--interaction-selection)] text-foreground`:`text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-foreground`),children:[(0,w.jsx)(`span`,{className:c(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full ring-1`,t?`bg-primary text-primary-foreground ring-primary`:`bg-background ring-border`),children:t?(0,w.jsx)(m,{className:`h-2.5 w-2.5`,strokeWidth:3}):null}),(0,w.jsxs)(`span`,{className:`min-w-0`,children:[(0,w.jsx)(`span`,{className:`block text-sm font-medium`,children:g(e.labelKey)}),(0,w.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-muted-foreground`,children:g(e.descriptionKey)})]})]},e.value)})})}),(0,w.jsx)(a,{title:g(`sideDockVisibilityTitle`),description:g(`sideDockVisibilityDescription`),control:(0,w.jsx)(o,{id:`appearance-side-dock-visible`,"aria-label":g(`sideDockVisibilityTitle`),checked:D,onCheckedChange:O})})]})})})}export{E as AppearanceSettingsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ot as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as AppsPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{K as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as CronJobResource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{St as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as DocBrowser};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as InboxPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Jt as e,Kt as t,Zt as n,qt as r,ur as i}from"./api-CXWxExzS.js";import{et as a}from"./app-presenter-provider-
|
|
1
|
+
import{Jt as e,Kt as t,Zt as n,qt as r,ur as i}from"./api-CXWxExzS.js";import{et as a}from"./app-presenter-provider-DdD2Q7jZ.js";import{t as o}from"./use-viewport-layout-Bnm5W5Qz.js";import{s}from"./i18n-ByVUrt9w.js";var c=i();function l(){let{isMobile:i}=o();return(0,c.jsx)(n,{title:s(`keyboardShortcuts`),children:i?(0,c.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`keyboardShortcutsDesktopOnly`)}):(0,c.jsx)(e,{children:(0,c.jsx)(r,{children:(0,c.jsx)(t,{title:s(`chatInputVoice`),layout:`stacked`,children:(0,c.jsx)(a,{})})})})})}export{l as KeyboardShortcutsSettingsPage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/projects-
|
|
2
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{t}from"./client-BDS360Kz.js";import{E as n,O as r,a as i,n as a,o,r as s,t as c}from"./theme-provider-BsJ6HxeX.js";import{i as l,n as u,t as d}from"./pwa-Cp7pPvsZ.js";import{Ht as f,Jn as p,Lt as m,Vt as ee,Yn as te,an as h,cr as ne,dn as g,qn as _,un as v,ur as re,x as y,xr as ie}from"./api-CXWxExzS.js";import{t as b}from"./preload-helper-DWTEM3RW.js";import{c as ae,i as x,l as S,n as C,o as w,s as T}from"./navigation-link-O9Wm0epj.js";import{B as oe,C as se,J as ce,Jt as E,Lt as le,S as ue,T as de,W as fe,Xt as D,Yt as O,_ as k,a as A,b as j,bt as M,g as N,h as P,i as F,l as I,n as L,nt as R,o as z,p as B,s as V,t as pe,u as H,w as me,x as he,xt as ge,y as _e,z as ve}from"./app-presenter-provider-BB3Xl8b0.js";import{f as ye}from"./context-menu-C0qywo73.js";import{t as be}from"./agents-BdeFtIOV.js";import{t as U}from"./use-viewport-layout-Bnm5W5Qz.js";import{i as xe,s as W}from"./i18n-ByVUrt9w.js";import{n as Se,t as Ce}from"./doc-browser-context-CoVMIiU8.js";import{t as we}from"./login-page--Njgbmpm.js";var G=n();if(l.syncTheme(G),r(G)===`island`){let e=document.createElement(`link`);e.rel=`preload`,e.as=`image`,e.href=`/themes/island/island-atmosphere-7a037243.webp`,e.fetchPriority=`high`,document.head.appendChild(e)}var Te=t(),K=e(ie(),1);function Ee(){let e=L();return(0,K.useEffect)(()=>(e.chatCompletionNotificationManager.start(),()=>{e.chatCompletionNotificationManager.stop()}),[e.chatCompletionNotificationManager]),null}var De=`NextClaw`,Oe=[{prefix:`/resource`,key:`resourcePageTitle`},{prefix:`/marketplace/mcp`,key:`marketplaceMcpPageTitle`},{prefix:`/marketplace/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/marketplace`,key:`marketplace`},{prefix:`/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/cron`,key:`cronPageTitle`},{prefix:`/agents`,key:`agentsPageTitle`},{prefix:`/projects`,key:`projectsTitle`},{prefix:`/chat`,key:`chat`},{prefix:`/model`,key:`modelPageTitle`},{prefix:`/search`,key:`searchPageTitle`},{prefix:`/providers`,key:`providersPageTitle`},{prefix:`/channels`,key:`channelsPageTitle`},{prefix:`/runtime`,key:`runtimePageTitle`},{prefix:`/updates`,key:`runtimeUpdatesPageTitle`},{prefix:`/remote`,key:`remotePageTitle`},{prefix:`/security`,key:`authSecurityTitle`},{prefix:`/secrets`,key:`secretsPageTitle`}];function ke(e,t){return e===t||e.startsWith(`${t}/`)}function Ae(e){let t=e.toLowerCase();for(let{prefix:e,key:n}of Oe)if(ke(t,e))return W(n);return W(`settings`)}function je(e){let t=e.toLowerCase();return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||t===`[::1]`||t.startsWith(`127.`)}function Me(e){let t=e?.host.trim(),n=e?.hostname.trim(),r=e?.port.trim();return!t||!n?null:je(n)?r||null:t}function Ne(e,t){let n=Me(t);return`${De}${n?` ${n}`:``} - ${Ae(e)}`}var q=re(),Pe=e=>(0,q.jsx)(N,{uri:e});function Fe({children:e,sideDockManager:t}){let{isOpen:n,mode:r}=Se();ge();let{pathname:i}=S(),{language:a}=o(),{isMobile:s}=U(),c=me(),l=z(e=>e.isVisible);z(e=>e.pinnedItems);let u={getDockState:t.getDockState,pinTab:t.pinTab,unpinTab:t.unpinTab},d=B(),f=e=>d(P(e),`global`);return(0,K.useEffect)(()=>{document.title=Ne(i,window.location)},[i,a]),s&&c!==`win32`?(0,q.jsx)(se,{pathname:i,isDocBrowserOpen:n,docBrowserDockControls:u,docBrowserRenderers:H,docBrowserTabMenuGroups:f,topbarLeadingInset:c===`darwin`?`4.75rem`:void 0,children:e}):(0,q.jsx)(j,{pathname:i,isMobileLayout:s,isDocBrowserOpen:n,docBrowserMode:r,docBrowserDockControls:u,docBrowserRenderers:H,docBrowserTabMenuGroups:f,sideDock:l?(0,q.jsx)(A,{manager:t,getItemMenuGroups:e=>{let t=F().pageResourceManager.resolve(e.target.type===`right-panel-resource`?e.target.uri:e.target.url);return t?d(t):[]}}):null,children:e})}function Ie({children:e}){let t=F();return(0,q.jsx)(Ce,{manager:t.docBrowserManager,children:(0,q.jsx)(ye,{renderIcon:Pe,children:(0,q.jsx)(Fe,{sideDockManager:t.sideDockManager,children:e})})})}function Le(){let{isMobile:e}=U();return e?(0,q.jsx)(ue,{}):(0,q.jsx)(w,{to:`/model`,replace:!0})}var Re=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ProjectsPage:e}=await import(`./projects-fPTOn2Wz.js`);return{ProjectsPage:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]))).ProjectsPage})),J=`max-w-[min(1180px,100%)]`;function ze(e){return e===`projects`?`relative flex flex-1 min-h-0 overflow-hidden bg-background`:`flex-1 min-h-0 overflow-hidden bg-background`}function Be(e){let{routeSessionKey:t,syncRouteSessionSelection:n}=e;(0,K.useLayoutEffect)(()=>{n(t)},[t,n])}function Ve({view:e}){let{onScroll:t,scrollRef:n}=le({restorationKey:e===`cron`||e===`agents`?`main-page:${e}`:null});switch(e){case`resource`:return(0,q.jsx)(I,{});case`projects`:return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`h-full animate-pulse bg-card/30`}),children:(0,q.jsx)(Re,{})});case`panel-app`:return(0,q.jsx)(R,{});case`inbox`:return(0,q.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col md:px-6 md:py-5 ${J}`,children:(0,q.jsx)(ve,{})});case`cron`:case`agents`:return(0,q.jsx)(`div`,{ref:n,onScroll:t,className:`h-full overflow-auto custom-scrollbar`,children:(0,q.jsx)(`div`,{className:`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${J}`,children:e===`cron`?(0,q.jsx)(ce,{}):(0,q.jsx)(be,{})})});default:return(0,q.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col px-4 py-4 sm:px-6 sm:py-5 ${J}`,children:(0,q.jsx)(M,{forcedType:`skills`})})}}function He({view:e,confirmDialog:t}){let{isMobile:n}=U();return(0,q.jsxs)(`div`,{className:`h-full flex`,children:[n?null:(0,q.jsx)(_e,{}),e===`chat`?n?(0,q.jsx)(he,{}):(0,q.jsx)(fe,{}):(0,q.jsx)(`section`,{"data-theme-surface":`workspace`,className:`${ze(e)} flex flex-col`,children:(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,q.jsx)(Ve,{view:e})})}),t]})}function Ue(){let e=O();(0,K.useEffect)(()=>m.eventBus.on(_.uiShowContent,t=>{e.chatThreadManager.handleUiShowContentEvent(t)}),[e])}function We({view:e}){let t=O(),{pathname:n}=S();return Be({routeSessionKey:D(n.startsWith(`/chat/`)?n.slice(6):void 0),syncRouteSessionSelection:t.chatSessionListManager.syncRouteSessionSelection}),Ue(),(0,q.jsx)(He,{view:e})}function Y({view:e}){return(0,q.jsx)(We,{view:e})}function Ge(e){let t=e.trim().toLowerCase();return t?!t.startsWith(`skills`):!0}function Ke(e,t){t.startsWith(`mcp`)&&(e?.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}))}function qe(e,t){e&&Ge(t)&&e.invalidateQueries({queryKey:[`config`]}),Ke(e,t)}function X(e){let t=e.trim().replace(/\\/g,`/`).replace(/\/+$/g,``);return/^[a-z]:/i.test(t)?t.toLowerCase():t}function Je(e,t){if(!e)return;let n=X(t);e.invalidateQueries({predicate:e=>e.queryKey[0]===`server-path-browse`&&typeof e.queryKey[1]==`string`&&X(e.queryKey[1])===n})}function Ye(e){let t=(0,K.useRef)(!1);(0,K.useEffect)(()=>{let n=m.eventBus.on(_.connectionOpen,()=>{g.handleConnectionRestored(),h.refreshAfterRealtimeReconnect(),t.current&&(t.current=!1,E.getState().clearSessionRunStatuses(),e?.invalidateQueries({queryKey:[`ncp-sessions`]}),e?.invalidateQueries({queryKey:[`ncp-session-pages`]}))}),r=m.eventBus.on(_.connectionClose,()=>{g.handleConnectionInterrupted(null),t.current=!0}),i=m.eventBus.on(_.connectionError,e=>{g.handleConnectionInterrupted(e?.message??null),t.current=!0}),a=m.eventBus.on(_.configUpdated,({path:t})=>{qe(e,t)}),o=m.eventBus.on(_.serverPathChanged,({directoryPath:t})=>Je(e,t)),s=m.eventBus.on(_.runtimeUpdateSnapshot,e=>{h.reportSnapshot(e)}),c=m.eventBus.on(_.sessionRunStatus,t=>{E.getState().setSessionRunStatus(t.sessionKey,t.status),y(e,{type:`session.run-status`,payload:t})}),l=m.eventBus.on(_.sessionSummaryUpsert,t=>{y(e,{type:`session.summary.upsert`,payload:t})}),u=m.eventBus.on(_.sessionSummaryDelete,t=>{E.getState().setSessionRunStatus(t.sessionKey,`idle`),y(e,{type:`session.summary.delete`,payload:t})}),d=m.eventBus.on(_.error,e=>{console.error(`Realtime transport error:`,e.message)});return()=>{n(),r(),i(),a(),o(),s(),c(),l(),u(),d()}},[e])}var Xe={"--width":`320px`},Ze=(0,K.lazy)(async()=>({default:(await V()).AccountPanel})),Qe=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ModelConfigPage:e}=await import(`./model-config-page-CeVvZ29o.js`);return{ModelConfigPage:e}},__vite__mapDeps([40,1,3,4,5,17,6,41,2,34,8,9,10,11,12,13,14,15,35,26,27,30,23,20,42,36,43]))).ModelConfigPage})),$e=(0,K.lazy)(async()=>({default:(await b(async()=>{let{AppearanceSettingsPage:e}=await import(`./appearance-settings-page-DiSRSDN3.js`);return{AppearanceSettingsPage:e}},__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).AppearanceSettingsPage})),et=(0,K.lazy)(async()=>({default:(await b(async()=>{let{KeyboardShortcutsSettingsPage:e}=await import(`./keyboard-shortcuts-settings-page-BFBXVf20.js`);return{KeyboardShortcutsSettingsPage:e}},__vite__mapDeps([45,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).KeyboardShortcutsSettingsPage})),tt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SearchConfigPage:e}=await import(`./search-config-page-DevSv1ZK.js`);return{SearchConfigPage:e}},__vite__mapDeps([46,1,3,4,5,10,6,22,23,26,11,27,47,42,35,2,36]))).SearchConfigPage})),nt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ProvidersConfigPage:e}=await import(`./providers-config-page-BilPL0kF.js`);return{ProvidersConfigPage:e}},__vite__mapDeps([48,1,2,3,4,5,6,8,9,10,11,12,13,14,15,22,23,24,39,25,29,47,42,33,19,34,35,36,43,27]))).ProvidersConfigPage})),rt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ExtensionsConfigPage:e}=await import(`./extensions-DXDFcRVC.js`);return{ExtensionsConfigPage:e}},__vite__mapDeps([49,3,1,4,5,16,6,12,24]))).ExtensionsConfigPage})),it=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ChannelsList:e}=await import(`./channels-list-page-lQOINLW8.js`);return{ChannelsList:e}},__vite__mapDeps([50,1,2,3,4,5,6,10,17,11,13,22,23,26,27,29,47,31,42,35,36,43]))).ChannelsList})),at=(0,K.lazy)(async()=>({default:(await b(async()=>{let{RuntimeConfig:e}=await import(`./runtime-config-page-P5RUq3YK.js`);return{RuntimeConfig:e}},__vite__mapDeps([51,1,7,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,52,53,54,42]))).RuntimeConfig})),ot=(0,K.lazy)(async()=>({default:(await b(async()=>{let{DesktopUpdateConfig:e}=await import(`./desktop-update-config-C_SBtjA1.js`);return{DesktopUpdateConfig:e}},__vite__mapDeps([55,3,1,4,5,21,6,24,52,26,11,27,32,35,2]))).DesktopUpdateConfig})),st=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SecurityConfig:e}=await import(`./security-config-BGEs0SHi.js`);return{SecurityConfig:e}},__vite__mapDeps([56,3,1,4,5]))).SecurityConfig})),ct=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SecretsConfigPage:e}=await import(`./secrets-config-page-B4jWTV6V.js`);return{SecretsConfigPage:e}},__vite__mapDeps([57,1,3,4,5,14,6,53,25,42,35,2,36]))).SecretsConfigPage})),Z=(0,K.lazy)(async()=>({default:(await b(async()=>{let{PrivacySettingsPage:e}=await import(`./privacy-settings-page-CHDv9ppI.js`);return{PrivacySettingsPage:e}},__vite__mapDeps([58,3,1,4,5,35,2,6,36]))).PrivacySettingsPage})),lt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{DesktopCapabilitiesPage:e}=await import(`./desktop-capabilities-page-CKq2Miye.js`);return{DesktopCapabilitiesPage:e}},__vite__mapDeps([59,3,1,4,5,28]))).DesktopCapabilitiesPage})),ut=(0,K.lazy)(async()=>({default:(await b(async()=>{let{RemoteAccessPage:e}=await import(`./remote-CsJMF8OR.js`);return{RemoteAccessPage:e}},__vite__mapDeps([60,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).RemoteAccessPage})),dt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{McpMarketplacePage:e}=await import(`./mcp-marketplace-page-oHCbBkS-.js`);return{McpMarketplacePage:e}},__vite__mapDeps([61,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).McpMarketplacePage}));function ft(){return(0,q.jsx)(`div`,{className:`h-full w-full animate-pulse rounded-2xl border border-border/40 bg-card/40`})}function pt({children:e}){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(ft,{}),children:e})}function Q(e){return(0,q.jsx)(pt,{children:e})}var mt=[{path:`/resource`,element:Q((0,q.jsx)(Y,{view:`resource`}))},{path:`/projects/:projectId/:tab`,element:Q((0,q.jsx)(Y,{view:`projects`}))},{path:`/projects`,element:Q((0,q.jsx)(Y,{view:`projects`}))},{path:`/chat/skills`,redirectTo:`/skills`},{path:`/chat/cron`,redirectTo:`/cron`},{path:`/chat/agents`,redirectTo:`/agents`},{path:`/chat/:sessionId?`,element:Q((0,q.jsx)(Y,{view:`chat`}))},{path:`/agents`,element:Q((0,q.jsx)(Y,{view:`agents`}))},{path:`/skills`,element:Q((0,q.jsx)(Y,{view:`skills`}))},{path:`/skills/scenes/:scene`,element:Q((0,q.jsx)(Y,{view:`skills`}))},{path:`/cron`,element:Q((0,q.jsx)(Y,{view:`cron`}))},{path:`/inbox/:deliveryId?`,element:Q((0,q.jsx)(Y,{view:`inbox`}))},{path:`/apps/panel/:appId`,element:Q((0,q.jsx)(Y,{view:`panel-app`}))},{path:`/appearance`,element:Q((0,q.jsx)($e,{}))},{path:`/keyboard-shortcuts`,element:Q((0,q.jsx)(et,{}))},{path:`/model`,element:Q((0,q.jsx)(Qe,{}))},{path:`/search`,element:Q((0,q.jsx)(tt,{}))},{path:`/providers`,element:Q((0,q.jsx)(nt,{}))},{path:`/extensions`,element:Q((0,q.jsx)(rt,{}))},{path:`/channels`,element:Q((0,q.jsx)(it,{}))},{path:`/runtime`,element:Q((0,q.jsx)(at,{}))},{path:`/updates`,element:Q((0,q.jsx)(ot,{}))},{path:`/remote`,element:Q((0,q.jsx)(ut,{}))},{path:`/security`,element:Q((0,q.jsx)(st,{}))},{path:`/privacy`,element:Q((0,q.jsx)(Z,{}))},{path:`/desktop-capabilities`,element:Q((0,q.jsx)(lt,{}))},{path:`/secrets`,element:Q((0,q.jsx)(ct,{}))},{path:`/settings`,element:(0,q.jsx)(Le,{})},{path:`/marketplace/skills`,redirectTo:`/skills`},{path:`/marketplace`,redirectTo:`/skills`},{path:`/marketplace/mcp`,element:Q((0,q.jsx)(dt,{}))},{path:`/`,redirectTo:`/chat`},{path:`*`,redirectTo:`/chat`}];function ht(e){return`redirectTo`in e?(0,q.jsx)(T,{path:e.path,element:(0,q.jsx)(w,{to:e.redirectTo,replace:!0})},e.path):(0,q.jsx)(T,{path:e.path,element:e.element},e.path)}function gt(){return(0,q.jsx)(ae,{children:mt.map(ht)})}function $(){return Ye(p),v(),(0,K.useEffect)(()=>(h.start(),()=>{h.stop()}),[]),(0,q.jsx)(pe,{children:(0,q.jsxs)(k,{children:[(0,q.jsx)(Ee,{}),(0,q.jsx)(oe,{}),(0,q.jsx)(Ie,{children:(0,q.jsx)(gt,{})}),(0,q.jsx)(K.Suspense,{fallback:null,children:(0,q.jsx)(Ze,{})}),(0,q.jsx)(s,{}),(0,q.jsx)(de,{})]})})}function _t(){let e=f(),t=e.isError&&ee(e.error);return e.isLoading&&!e.isError||t||e.isError?(0,q.jsx)($,{}):e.data?.enabled&&!e.data.authenticated?(0,q.jsx)(we,{username:e.data.username}):(0,q.jsx)($,{})}function vt(){let{theme:e}=a();return(0,K.useEffect)(()=>{d()},[]),(0,K.useEffect)(()=>{l.syncTheme(e)},[e]),(0,q.jsxs)(ne,{client:p,children:[(0,q.jsx)(_t,{}),(0,q.jsx)(u,{}),(0,q.jsx)(te,{position:`top-right`,richColors:!0,offset:{top:window.nextclawDesktop?.platform===`win32`?56:44,right:72},mobileOffset:window.nextclawDesktop?.platform===`win32`?56:void 0,style:Xe})]})}await xe();var yt=window.nextclawDesktop?.platform===`win32`?x:C;(0,Te.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(K.StrictMode,{children:(0,q.jsx)(c,{children:(0,q.jsx)(i,{children:(0,q.jsx)(yt,{children:(0,q.jsx)(vt,{})})})})}));
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/projects-BWM-oEo0.js","assets/chunk-DF37yw5_.js","assets/dist-D9h2cWk3.js","assets/api-CXWxExzS.js","assets/i18n-ByVUrt9w.js","assets/preload-helper-DWTEM3RW.js","assets/createLucideIcon-C3LSyx-e.js","assets/app-presenter-provider-DdD2Q7jZ.js","assets/context-menu-C0qywo73.js","assets/katex-BzT-4KBu.js","assets/search-Dpgv--de.js","assets/external-link-DZzwHRHW.js","assets/inbox-CI8ATevA.js","assets/x-waP-WLuT.js","assets/plus-C42o6xrD.js","assets/context-menu-DEcVZfaU.css","assets/puzzle-DmKVREoh.js","assets/book-open-B3Ac0voD.js","assets/theme-provider-BsJ6HxeX.js","assets/dialog-DMKYZDFu.js","assets/navigation-history-CCnxsAKR.js","assets/download-C2gYe8n1.js","assets/use-viewport-layout-Bnm5W5Qz.js","assets/middleware-B--6mAUM.js","assets/refresh-cw-DOg2pWGu.js","assets/trash-2-BVQs-0ji.js","assets/navigation-link-O9Wm0epj.js","assets/host-capabilities-B107nwS3.js","assets/use-desktop-capabilities-BO_2CXgu.js","assets/status-dot-DlELD18e.js","assets/doc-browser-context-CoVMIiU8.js","assets/tag-chip-DFzDSvcF.js","assets/card-eFBmxYiI.js","assets/confirm-dialog-jz2cQKId.js","assets/provider-models-D8WOdsdu.js","assets/select-BJ-EjmCz.js","assets/use-config-M1L4xn8c.js","assets/app-presenter-provider-D3BuuOyZ.css","assets/circle-dashed-KGwElDWV.js","assets/settings-2-D3-m8a3v.js","assets/model-config-page-CeVvZ29o.js","assets/provider-scoped-model-input-BOPkUOtD.js","assets/form-actions-CZxcWXSm.js","assets/config-hints-CaB3I7KP.js","assets/appearance-settings-page-CSWYLrsR.js","assets/keyboard-shortcuts-settings-page-BCxB9m69.js","assets/search-config-page-DevSv1ZK.js","assets/config-split-page-BaHtm9OW.js","assets/providers-config-page-BilPL0kF.js","assets/extensions-DXDFcRVC.js","assets/channels-list-page-lQOINLW8.js","assets/runtime-config-page-Dx6lWn3_.js","assets/rotate-cw-CWFIat29.js","assets/save-C1G0ZU-G.js","assets/pwa-Cp7pPvsZ.js","assets/desktop-update-config-C_SBtjA1.js","assets/security-config-BGEs0SHi.js","assets/secrets-config-page-B4jWTV6V.js","assets/privacy-settings-page-CHDv9ppI.js","assets/desktop-capabilities-page-CKq2Miye.js","assets/remote-DngM8iep.js","assets/mcp-marketplace-page-ZAm380SB.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as e}from"./chunk-DF37yw5_.js";import{t}from"./client-BDS360Kz.js";import{E as n,O as r,a as i,n as a,o,r as s,t as c}from"./theme-provider-BsJ6HxeX.js";import{i as l,n as u,t as d}from"./pwa-Cp7pPvsZ.js";import{Ht as f,Jn as p,Lt as m,Vt as ee,Yn as te,an as h,cr as ne,dn as g,qn as _,un as v,ur as re,x as y,xr as ie}from"./api-CXWxExzS.js";import{t as b}from"./preload-helper-DWTEM3RW.js";import{c as ae,i as x,l as S,n as C,o as w,s as T}from"./navigation-link-O9Wm0epj.js";import{B as oe,C as se,J as ce,Jt as E,Lt as le,S as ue,T as de,W as fe,Xt as D,Yt as O,_ as k,a as A,b as j,bt as M,g as N,h as P,i as F,l as I,n as L,nt as R,o as z,p as B,s as V,t as pe,u as H,w as me,x as he,xt as ge,y as _e,z as ve}from"./app-presenter-provider-DdD2Q7jZ.js";import{f as ye}from"./context-menu-C0qywo73.js";import{t as be}from"./agents-CTSR4ZKb.js";import{t as U}from"./use-viewport-layout-Bnm5W5Qz.js";import{i as xe,s as W}from"./i18n-ByVUrt9w.js";import{n as Se,t as Ce}from"./doc-browser-context-CoVMIiU8.js";import{t as we}from"./login-page--Njgbmpm.js";var G=n();if(l.syncTheme(G),r(G)===`island`){let e=document.createElement(`link`);e.rel=`preload`,e.as=`image`,e.href=`/themes/island/island-atmosphere-7a037243.webp`,e.fetchPriority=`high`,document.head.appendChild(e)}var Te=t(),K=e(ie(),1);function Ee(){let e=L();return(0,K.useEffect)(()=>(e.chatCompletionNotificationManager.start(),()=>{e.chatCompletionNotificationManager.stop()}),[e.chatCompletionNotificationManager]),null}var De=`NextClaw`,Oe=[{prefix:`/resource`,key:`resourcePageTitle`},{prefix:`/marketplace/mcp`,key:`marketplaceMcpPageTitle`},{prefix:`/marketplace/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/marketplace`,key:`marketplace`},{prefix:`/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/cron`,key:`cronPageTitle`},{prefix:`/agents`,key:`agentsPageTitle`},{prefix:`/projects`,key:`projectsTitle`},{prefix:`/chat`,key:`chat`},{prefix:`/model`,key:`modelPageTitle`},{prefix:`/search`,key:`searchPageTitle`},{prefix:`/providers`,key:`providersPageTitle`},{prefix:`/channels`,key:`channelsPageTitle`},{prefix:`/runtime`,key:`runtimePageTitle`},{prefix:`/updates`,key:`runtimeUpdatesPageTitle`},{prefix:`/remote`,key:`remotePageTitle`},{prefix:`/security`,key:`authSecurityTitle`},{prefix:`/secrets`,key:`secretsPageTitle`}];function ke(e,t){return e===t||e.startsWith(`${t}/`)}function Ae(e){let t=e.toLowerCase();for(let{prefix:e,key:n}of Oe)if(ke(t,e))return W(n);return W(`settings`)}function je(e){let t=e.toLowerCase();return t===`localhost`||t.endsWith(`.localhost`)||t===`::1`||t===`[::1]`||t.startsWith(`127.`)}function Me(e){let t=e?.host.trim(),n=e?.hostname.trim(),r=e?.port.trim();return!t||!n?null:je(n)?r||null:t}function Ne(e,t){let n=Me(t);return`${De}${n?` ${n}`:``} - ${Ae(e)}`}var q=re(),Pe=e=>(0,q.jsx)(N,{uri:e});function Fe({children:e,sideDockManager:t}){let{isOpen:n,mode:r}=Se();ge();let{pathname:i}=S(),{language:a}=o(),{isMobile:s}=U(),c=me(),l=z(e=>e.isVisible);z(e=>e.pinnedItems);let u={getDockState:t.getDockState,pinTab:t.pinTab,unpinTab:t.unpinTab},d=B(),f=e=>d(P(e),`global`);return(0,K.useEffect)(()=>{document.title=Ne(i,window.location)},[i,a]),s&&c!==`win32`?(0,q.jsx)(se,{pathname:i,isDocBrowserOpen:n,docBrowserDockControls:u,docBrowserRenderers:H,docBrowserTabMenuGroups:f,topbarLeadingInset:c===`darwin`?`4.75rem`:void 0,children:e}):(0,q.jsx)(j,{pathname:i,isMobileLayout:s,isDocBrowserOpen:n,docBrowserMode:r,docBrowserDockControls:u,docBrowserRenderers:H,docBrowserTabMenuGroups:f,sideDock:l?(0,q.jsx)(A,{manager:t,getItemMenuGroups:e=>{let t=F().pageResourceManager.resolve(e.target.type===`right-panel-resource`?e.target.uri:e.target.url);return t?d(t):[]}}):null,children:e})}function Ie({children:e}){let t=F();return(0,q.jsx)(Ce,{manager:t.docBrowserManager,children:(0,q.jsx)(ye,{renderIcon:Pe,children:(0,q.jsx)(Fe,{sideDockManager:t.sideDockManager,children:e})})})}function Le(){let{isMobile:e}=U();return e?(0,q.jsx)(ue,{}):(0,q.jsx)(w,{to:`/model`,replace:!0})}var Re=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ProjectsPage:e}=await import(`./projects-BWM-oEo0.js`);return{ProjectsPage:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]))).ProjectsPage})),J=`max-w-[min(1180px,100%)]`;function ze(e){return e===`projects`?`relative flex flex-1 min-h-0 overflow-hidden bg-background`:`flex-1 min-h-0 overflow-hidden bg-background`}function Be(e){let{routeSessionKey:t,syncRouteSessionSelection:n}=e;(0,K.useLayoutEffect)(()=>{n(t)},[t,n])}function Ve({view:e}){let{onScroll:t,scrollRef:n}=le({restorationKey:e===`cron`||e===`agents`?`main-page:${e}`:null});switch(e){case`resource`:return(0,q.jsx)(I,{});case`projects`:return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`h-full animate-pulse bg-card/30`}),children:(0,q.jsx)(Re,{})});case`panel-app`:return(0,q.jsx)(R,{});case`inbox`:return(0,q.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col md:px-6 md:py-5 ${J}`,children:(0,q.jsx)(ve,{})});case`cron`:case`agents`:return(0,q.jsx)(`div`,{ref:n,onScroll:t,className:`h-full overflow-auto custom-scrollbar`,children:(0,q.jsx)(`div`,{className:`mx-auto w-full px-4 py-4 sm:px-6 sm:py-5 ${J}`,children:e===`cron`?(0,q.jsx)(ce,{}):(0,q.jsx)(be,{})})});default:return(0,q.jsx)(`div`,{className:`mx-auto flex h-full min-h-0 w-full flex-col px-4 py-4 sm:px-6 sm:py-5 ${J}`,children:(0,q.jsx)(M,{forcedType:`skills`})})}}function He({view:e,confirmDialog:t}){let{isMobile:n}=U();return(0,q.jsxs)(`div`,{className:`h-full flex`,children:[n?null:(0,q.jsx)(_e,{}),e===`chat`?n?(0,q.jsx)(he,{}):(0,q.jsx)(fe,{}):(0,q.jsx)(`section`,{"data-theme-surface":`workspace`,className:`${ze(e)} flex flex-col`,children:(0,q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,q.jsx)(Ve,{view:e})})}),t]})}function Ue(){let e=O();(0,K.useEffect)(()=>m.eventBus.on(_.uiShowContent,t=>{e.chatThreadManager.handleUiShowContentEvent(t)}),[e])}function We({view:e}){let t=O(),{pathname:n}=S();return Be({routeSessionKey:D(n.startsWith(`/chat/`)?n.slice(6):void 0),syncRouteSessionSelection:t.chatSessionListManager.syncRouteSessionSelection}),Ue(),(0,q.jsx)(He,{view:e})}function Y({view:e}){return(0,q.jsx)(We,{view:e})}function Ge(e){let t=e.trim().toLowerCase();return t?!t.startsWith(`skills`):!0}function Ke(e,t){t.startsWith(`mcp`)&&(e?.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}))}function qe(e,t){e&&Ge(t)&&e.invalidateQueries({queryKey:[`config`]}),Ke(e,t)}function X(e){let t=e.trim().replace(/\\/g,`/`).replace(/\/+$/g,``);return/^[a-z]:/i.test(t)?t.toLowerCase():t}function Je(e,t){if(!e)return;let n=X(t);e.invalidateQueries({predicate:e=>e.queryKey[0]===`server-path-browse`&&typeof e.queryKey[1]==`string`&&X(e.queryKey[1])===n})}function Ye(e){let t=(0,K.useRef)(!1);(0,K.useEffect)(()=>{let n=m.eventBus.on(_.connectionOpen,()=>{g.handleConnectionRestored(),h.refreshAfterRealtimeReconnect(),t.current&&(t.current=!1,E.getState().clearSessionRunStatuses(),e?.invalidateQueries({queryKey:[`ncp-sessions`]}),e?.invalidateQueries({queryKey:[`ncp-session-pages`]}))}),r=m.eventBus.on(_.connectionClose,()=>{g.handleConnectionInterrupted(null),t.current=!0}),i=m.eventBus.on(_.connectionError,e=>{g.handleConnectionInterrupted(e?.message??null),t.current=!0}),a=m.eventBus.on(_.configUpdated,({path:t})=>{qe(e,t)}),o=m.eventBus.on(_.serverPathChanged,({directoryPath:t})=>Je(e,t)),s=m.eventBus.on(_.runtimeUpdateSnapshot,e=>{h.reportSnapshot(e)}),c=m.eventBus.on(_.sessionRunStatus,t=>{E.getState().setSessionRunStatus(t.sessionKey,t.status),y(e,{type:`session.run-status`,payload:t})}),l=m.eventBus.on(_.sessionSummaryUpsert,t=>{y(e,{type:`session.summary.upsert`,payload:t})}),u=m.eventBus.on(_.sessionSummaryDelete,t=>{E.getState().setSessionRunStatus(t.sessionKey,`idle`),y(e,{type:`session.summary.delete`,payload:t})}),d=m.eventBus.on(_.error,e=>{console.error(`Realtime transport error:`,e.message)});return()=>{n(),r(),i(),a(),o(),s(),c(),l(),u(),d()}},[e])}var Xe={"--width":`320px`},Ze=(0,K.lazy)(async()=>({default:(await V()).AccountPanel})),Qe=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ModelConfigPage:e}=await import(`./model-config-page-CeVvZ29o.js`);return{ModelConfigPage:e}},__vite__mapDeps([40,1,3,4,5,17,6,41,2,34,8,9,10,11,12,13,14,15,35,26,27,30,23,20,42,36,43]))).ModelConfigPage})),$e=(0,K.lazy)(async()=>({default:(await b(async()=>{let{AppearanceSettingsPage:e}=await import(`./appearance-settings-page-CSWYLrsR.js`);return{AppearanceSettingsPage:e}},__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).AppearanceSettingsPage})),et=(0,K.lazy)(async()=>({default:(await b(async()=>{let{KeyboardShortcutsSettingsPage:e}=await import(`./keyboard-shortcuts-settings-page-BCxB9m69.js`);return{KeyboardShortcutsSettingsPage:e}},__vite__mapDeps([45,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).KeyboardShortcutsSettingsPage})),tt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SearchConfigPage:e}=await import(`./search-config-page-DevSv1ZK.js`);return{SearchConfigPage:e}},__vite__mapDeps([46,1,3,4,5,10,6,22,23,26,11,27,47,42,35,2,36]))).SearchConfigPage})),nt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ProvidersConfigPage:e}=await import(`./providers-config-page-BilPL0kF.js`);return{ProvidersConfigPage:e}},__vite__mapDeps([48,1,2,3,4,5,6,8,9,10,11,12,13,14,15,22,23,24,39,25,29,47,42,33,19,34,35,36,43,27]))).ProvidersConfigPage})),rt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ExtensionsConfigPage:e}=await import(`./extensions-DXDFcRVC.js`);return{ExtensionsConfigPage:e}},__vite__mapDeps([49,3,1,4,5,16,6,12,24]))).ExtensionsConfigPage})),it=(0,K.lazy)(async()=>({default:(await b(async()=>{let{ChannelsList:e}=await import(`./channels-list-page-lQOINLW8.js`);return{ChannelsList:e}},__vite__mapDeps([50,1,2,3,4,5,6,10,17,11,13,22,23,26,27,29,47,31,42,35,36,43]))).ChannelsList})),at=(0,K.lazy)(async()=>({default:(await b(async()=>{let{RuntimeConfig:e}=await import(`./runtime-config-page-Dx6lWn3_.js`);return{RuntimeConfig:e}},__vite__mapDeps([51,1,7,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,52,53,54,42]))).RuntimeConfig})),ot=(0,K.lazy)(async()=>({default:(await b(async()=>{let{DesktopUpdateConfig:e}=await import(`./desktop-update-config-C_SBtjA1.js`);return{DesktopUpdateConfig:e}},__vite__mapDeps([55,3,1,4,5,21,6,24,52,26,11,27,32,35,2]))).DesktopUpdateConfig})),st=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SecurityConfig:e}=await import(`./security-config-BGEs0SHi.js`);return{SecurityConfig:e}},__vite__mapDeps([56,3,1,4,5]))).SecurityConfig})),ct=(0,K.lazy)(async()=>({default:(await b(async()=>{let{SecretsConfigPage:e}=await import(`./secrets-config-page-B4jWTV6V.js`);return{SecretsConfigPage:e}},__vite__mapDeps([57,1,3,4,5,14,6,53,25,42,35,2,36]))).SecretsConfigPage})),Z=(0,K.lazy)(async()=>({default:(await b(async()=>{let{PrivacySettingsPage:e}=await import(`./privacy-settings-page-CHDv9ppI.js`);return{PrivacySettingsPage:e}},__vite__mapDeps([58,3,1,4,5,35,2,6,36]))).PrivacySettingsPage})),lt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{DesktopCapabilitiesPage:e}=await import(`./desktop-capabilities-page-CKq2Miye.js`);return{DesktopCapabilitiesPage:e}},__vite__mapDeps([59,3,1,4,5,28]))).DesktopCapabilitiesPage})),ut=(0,K.lazy)(async()=>({default:(await b(async()=>{let{RemoteAccessPage:e}=await import(`./remote-DngM8iep.js`);return{RemoteAccessPage:e}},__vite__mapDeps([60,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).RemoteAccessPage})),dt=(0,K.lazy)(async()=>({default:(await b(async()=>{let{McpMarketplacePage:e}=await import(`./mcp-marketplace-page-ZAm380SB.js`);return{McpMarketplacePage:e}},__vite__mapDeps([61,7,1,5,2,3,4,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).McpMarketplacePage}));function ft(){return(0,q.jsx)(`div`,{className:`h-full w-full animate-pulse rounded-2xl border border-border/40 bg-card/40`})}function pt({children:e}){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(ft,{}),children:e})}function Q(e){return(0,q.jsx)(pt,{children:e})}var mt=[{path:`/resource`,element:Q((0,q.jsx)(Y,{view:`resource`}))},{path:`/projects/:projectId/:tab`,element:Q((0,q.jsx)(Y,{view:`projects`}))},{path:`/projects`,element:Q((0,q.jsx)(Y,{view:`projects`}))},{path:`/chat/skills`,redirectTo:`/skills`},{path:`/chat/cron`,redirectTo:`/cron`},{path:`/chat/agents`,redirectTo:`/agents`},{path:`/chat/:sessionId?`,element:Q((0,q.jsx)(Y,{view:`chat`}))},{path:`/agents`,element:Q((0,q.jsx)(Y,{view:`agents`}))},{path:`/skills`,element:Q((0,q.jsx)(Y,{view:`skills`}))},{path:`/skills/scenes/:scene`,element:Q((0,q.jsx)(Y,{view:`skills`}))},{path:`/cron`,element:Q((0,q.jsx)(Y,{view:`cron`}))},{path:`/inbox/:deliveryId?`,element:Q((0,q.jsx)(Y,{view:`inbox`}))},{path:`/apps/panel/:appId`,element:Q((0,q.jsx)(Y,{view:`panel-app`}))},{path:`/appearance`,element:Q((0,q.jsx)($e,{}))},{path:`/keyboard-shortcuts`,element:Q((0,q.jsx)(et,{}))},{path:`/model`,element:Q((0,q.jsx)(Qe,{}))},{path:`/search`,element:Q((0,q.jsx)(tt,{}))},{path:`/providers`,element:Q((0,q.jsx)(nt,{}))},{path:`/extensions`,element:Q((0,q.jsx)(rt,{}))},{path:`/channels`,element:Q((0,q.jsx)(it,{}))},{path:`/runtime`,element:Q((0,q.jsx)(at,{}))},{path:`/updates`,element:Q((0,q.jsx)(ot,{}))},{path:`/remote`,element:Q((0,q.jsx)(ut,{}))},{path:`/security`,element:Q((0,q.jsx)(st,{}))},{path:`/privacy`,element:Q((0,q.jsx)(Z,{}))},{path:`/desktop-capabilities`,element:Q((0,q.jsx)(lt,{}))},{path:`/secrets`,element:Q((0,q.jsx)(ct,{}))},{path:`/settings`,element:(0,q.jsx)(Le,{})},{path:`/marketplace/skills`,redirectTo:`/skills`},{path:`/marketplace`,redirectTo:`/skills`},{path:`/marketplace/mcp`,element:Q((0,q.jsx)(dt,{}))},{path:`/`,redirectTo:`/chat`},{path:`*`,redirectTo:`/chat`}];function ht(e){return`redirectTo`in e?(0,q.jsx)(T,{path:e.path,element:(0,q.jsx)(w,{to:e.redirectTo,replace:!0})},e.path):(0,q.jsx)(T,{path:e.path,element:e.element},e.path)}function gt(){return(0,q.jsx)(ae,{children:mt.map(ht)})}function $(){return Ye(p),v(),(0,K.useEffect)(()=>(h.start(),()=>{h.stop()}),[]),(0,q.jsx)(pe,{children:(0,q.jsxs)(k,{children:[(0,q.jsx)(Ee,{}),(0,q.jsx)(oe,{}),(0,q.jsx)(Ie,{children:(0,q.jsx)(gt,{})}),(0,q.jsx)(K.Suspense,{fallback:null,children:(0,q.jsx)(Ze,{})}),(0,q.jsx)(s,{}),(0,q.jsx)(de,{})]})})}function _t(){let e=f(),t=e.isError&&ee(e.error);return e.isLoading&&!e.isError||t||e.isError?(0,q.jsx)($,{}):e.data?.enabled&&!e.data.authenticated?(0,q.jsx)(we,{username:e.data.username}):(0,q.jsx)($,{})}function vt(){let{theme:e}=a();return(0,K.useEffect)(()=>{d()},[]),(0,K.useEffect)(()=>{l.syncTheme(e)},[e]),(0,q.jsxs)(ne,{client:p,children:[(0,q.jsx)(_t,{}),(0,q.jsx)(u,{}),(0,q.jsx)(te,{position:`top-right`,richColors:!0,offset:{top:window.nextclawDesktop?.platform===`win32`?56:44,right:72},mobileOffset:window.nextclawDesktop?.platform===`win32`?56:void 0,style:Xe})]})}await xe();var yt=window.nextclawDesktop?.platform===`win32`?x:C;(0,Te.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(K.StrictMode,{children:(0,q.jsx)(c,{children:(0,q.jsx)(i,{children:(0,q.jsx)(yt,{children:(0,q.jsx)(vt,{})})})})}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./api-CXWxExzS.js";import{st as e}from"./app-presenter-provider-
|
|
1
|
+
import"./api-CXWxExzS.js";import{st as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as McpMarketplacePage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{st as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as McpMarketplacePage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e,v as t}from"./theme-provider-BsJ6HxeX.js";import"./app-presenter-provider-DdD2Q7jZ.js";export{t as PanelAppHostProvider,e as PanelAppRuntimeSurface};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{Gt as t,Lt as n,Qn as r,Xn as i,Yt as a,Zn as o,lr as s,qn as c,ur as l,xr as u}from"./api-CXWxExzS.js";import{d,f,l as p}from"./navigation-link-O9Wm0epj.js";import{G as m,Ut as h,Yt as g,_t as _,f as v,gt as y,ht as b,in as x,m as S,mt as C,n as w,pt as T,rn as E,vt as D,yt as O}from"./app-presenter-provider-BB3Xl8b0.js";import{t as k}from"./createLucideIcon-C3LSyx-e.js";import{ht as A,rt as ee}from"./context-menu-C0qywo73.js";import{R as te,z as j}from"./dist-D9h2cWk3.js";import{t as ne}from"./circle-dashed-KGwElDWV.js";import{t as re}from"./external-link-DZzwHRHW.js";import{t as ie}from"./use-viewport-layout-Bnm5W5Qz.js";import{t as ae}from"./plus-C42o6xrD.js";import{t as oe}from"./settings-2-D3-m8a3v.js";import{t as se}from"./trash-2-BVQs-0ji.js";import{n as ce,r as le,s as M,t as ue}from"./i18n-ByVUrt9w.js";import{a as de,i as fe,n as pe,o as me,r as he,t as ge}from"./dialog-DMKYZDFu.js";import{a as _e,i as ve,n as ye,r as N}from"./tag-chip-DFzDSvcF.js";import{t as be}from"./confirm-dialog-jz2cQKId.js";import{a as P,i as F,n as I,r as L,t as R}from"./select-BJ-EjmCz.js";import{a as xe,i as Se,n as Ce,t as we}from"./card-eFBmxYiI.js";var Te=k(`CircleX`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),Ee=k(`Circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),De=k(`LayoutGrid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),Oe=k(`List`,[[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 18h.01`,key:`1tta3j`}],[`path`,{d:`M3 6h.01`,key:`1rqtza`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 18h13`,key:`1lx6n3`}],[`path`,{d:`M8 6h13`,key:`ik3vkj`}]]),ke=k(`Unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]),z=e(u(),1),B=l();function V({title:e,children:t,className:n=``}){return(0,B.jsxs)(we,{hover:!1,surface:`flat`,className:n,children:[(0,B.jsx)(Se,{className:`p-4 pb-3`,children:(0,B.jsx)(xe,{children:e})}),(0,B.jsx)(Ce,{className:`p-4 pt-0`,children:t})]})}function H({children:e}){return(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:e})}function U({available:e,children:t,className:n,label:r,onOpen:i,path:a}){return e?(0,B.jsx)(`button`,{type:`button`,className:n,title:a,onClick:()=>i(a,r),children:t}):(0,B.jsx)(`div`,{className:n,children:t})}function Ae({agreement:e,isLoading:t,isError:n,onOpenFile:r}){return(0,B.jsxs)(V,{title:M(`projectsAgreementFile`),children:[(0,B.jsx)(`p`,{className:`mb-4 text-sm text-muted-foreground`,children:M(`projectsAgreementDescription`)}),t?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):n?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):e?.available?(0,B.jsxs)(U,{available:!0,path:e.path,label:e.path,onOpen:r,className:`block w-full rounded-xl bg-muted/45 p-3 text-left transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsx)(`span`,{className:`block text-sm font-medium`,children:e.path}),(0,B.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:M(`projectsAgreementOpen`)})]}):(0,B.jsx)(H,{children:M(`projectsNoAgreement`)})]})}var W=e=>[`project-work`,e],G=e=>[`project-work-summary`,e],K=e=>[`project-work-states`,e],q=e=>[`project-work-artifacts`,e],J=(e,t)=>[`project-work-item`,e,t],Y=(e,t)=>[`project-work-activity`,e,t];function je(e,t={}){return x({queryKey:[...W(e??``),t],enabled:!!e,initialPageParam:null,queryFn:async({pageParam:r})=>await n.projects.listWork(e,{...t,...r?{cursor:r}:{}}),getNextPageParam:e=>e.nextCursor})}function Me(e){return r({queryKey:G(e??``),enabled:!!e,queryFn:async()=>await n.projects.getWorkSummary(e)})}function Ne(e){return r({queryKey:K(e??``),enabled:!!e,queryFn:async()=>await n.projects.listWorkStates(e)})}function Pe(e,t={}){return x({queryKey:[...q(e??``),t],enabled:!!e,initialPageParam:null,queryFn:async({pageParam:r})=>await n.projects.listRecentWorkArtifacts(e,{...t,...r?{cursor:r}:{}}),getNextPageParam:e=>e.nextCursor})}function Fe(e,t){return r({queryKey:J(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await n.projects.getWorkItem(e,t)})}function Ie(e,t){return r({queryKey:Y(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await n.projects.listWorkItemActivities(e,t,{limit:100})})}function X(e){let t=s(),r=async n=>{await Promise.all([t.invalidateQueries({queryKey:W(e)}),t.invalidateQueries({queryKey:G(e)}),t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),...n?[t.invalidateQueries({queryKey:J(e,n)}),t.invalidateQueries({queryKey:Y(e,n)})]:[]])};return{createItem:o({mutationFn:async t=>await n.projects.createWorkItem(e,t),onSuccess:async e=>await r(e.id)}),updateItem:o({mutationFn:async t=>await n.projects.updateWorkItem(e,t.workItemId,t.patch),onSuccess:async e=>await r(e.id)}),deleteItem:o({mutationFn:async t=>await n.projects.deleteWorkItem(e,t),onSuccess:async e=>await r(e.id)}),restoreItem:o({mutationFn:async t=>await n.projects.restoreWorkItem(e,t),onSuccess:async e=>await r(e.id)}),linkArtifact:o({mutationFn:async t=>await n.projects.linkWorkItemArtifact(e,t.workItemId,{path:t.path,...t.label?{label:t.label}:{}}),onSuccess:async(e,t)=>await r(t.workItemId)}),unlinkArtifact:o({mutationFn:async t=>await n.projects.unlinkWorkItemArtifact(e,t.workItemId,t.artifactLinkId),onSuccess:async(e,t)=>await r(t.workItemId)}),createState:o({mutationFn:async t=>await n.projects.createWorkState(e,t),onSuccess:async()=>await r()}),updateState:o({mutationFn:async t=>await n.projects.updateWorkState(e,t.stateId,t.patch),onSuccess:async()=>await r()}),deleteState:o({mutationFn:async t=>await n.projects.deleteWorkState(e,t.stateId,t.migrateToStateId),onSuccess:async()=>await r()})}}function Z(e){let t=s();(0,z.useEffect)(()=>{if(e)return n.eventBus.on(c.projectWorkChanged,n=>{n.projectId===e&&(t.invalidateQueries({queryKey:W(e)}),t.invalidateQueries({queryKey:G(e)}),t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),n.workItemId&&(t.invalidateQueries({queryKey:J(e,n.workItemId)}),t.invalidateQueries({queryKey:Y(e,n.workItemId)})))})},[e,t])}function Le(e){return[...e].sort((e,t)=>e.position-t.position||e.name.localeCompare(t.name))}var Re={started:0,unstarted:1,backlog:2,completed:3,canceled:4};function ze(e){return[...e].sort((e,t)=>{let n=Re[e.category]-Re[t.category];return n===0?e.category===`completed`||e.category===`canceled`?e.position-t.position||e.name.localeCompare(t.name):t.position-e.position||e.name.localeCompare(t.name):n})}function Q(e,t){return`${e}${e.endsWith(`/`)||e.endsWith(`\\`)?``:`/`}${t}`}function Be(e,t=new Date){if(!e)return`-`;let n=new Date(e),r=t.getTime()-n.getTime();if(Number.isNaN(n.getTime()))return e;if(r<6e4)return M(`projectsTimeJustNow`);let i=Math.floor(r/6e4);if(i<60)return M(`projectsTimeMinutesAgo`).replace(`{count}`,String(i));let a=Math.floor(i/60);if(a<24)return M(`projectsTimeHoursAgo`).replace(`{count}`,String(a));let o=Math.floor(a/24);return o===1?M(`projectsTimeYesterday`):o<7?M(`projectsTimeDaysAgo`).replace(`{count}`,String(o)):ue(e)}var Ve=20;function He({projectId:e,onOpenFile:t}){let[n,r]=(0,z.useState)(``),i=Pe(e,{limit:Ve,...n.trim()?{query:n.trim()}:{}}),a=i.data?.pages??[],o=a.flatMap(e=>e.artifacts),s=a[0]?.total??0;return i.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):i.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(`section`,{className:`min-w-0`,"aria-label":M(`projectsArtifacts`),children:[(0,B.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[le(s),` `,M(`projectsArtifactsCountSuffix`)]}),(0,B.jsx)(`input`,{type:`search`,value:n,className:`h-8 w-full min-w-0 rounded-lg border border-border/60 bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground sm:w-60`,placeholder:M(`projectsArtifactsSearchPlaceholder`),onChange:e=>r(e.target.value)})]}),o.length?(0,B.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/60`,children:[(0,B.jsx)(`div`,{className:`divide-y divide-border/60`,children:o.map(e=>(0,B.jsxs)(U,{available:e.exists,path:e.path,label:e.label??e.path,onOpen:t,className:`flex w-full min-w-0 items-center gap-3 px-3 py-3 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`span`,{className:`block truncate font-medium`,children:e.label??e.path}),(0,B.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[e.path,` · `,e.workItemTitle]})]}),(0,B.jsx)(`time`,{className:`shrink-0 text-xs text-muted-foreground`,dateTime:e.createdAt,title:ce(e.createdAt),children:Be(e.createdAt)}),e.exists?null:(0,B.jsx)(`span`,{className:`shrink-0 text-xs text-destructive`,children:M(`projectsUnavailable`)})]},e.id))}),i.hasNextPage?(0,B.jsx)(`button`,{type:`button`,className:`w-full border-t border-border/60 px-3 py-2.5 text-left text-sm text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,disabled:i.isFetchingNextPage,onClick:()=>void i.fetchNextPage(),children:i.isFetchingNextPage?M(`projectsLoading`):M(`projectsArtifactsShowMore`)}):null]}):(0,B.jsx)(H,{children:n.trim()?M(`projectsArtifactsNoMatches`):M(`projectsNoArtifacts`)})]})}var Ue={Backlog:`projectsWorkState_backlog`,Planned:`projectsWorkState_planned`,"In Progress":`projectsWorkState_inProgress`,"In Review":`projectsWorkState_inReview`,"Awaiting Acceptance":`projectsWorkState_awaitingAcceptance`,Completed:`projectsWorkState_completed`,Canceled:`projectsWorkState_canceled`};function $(e,t){let n=Ue[e];return n?t?M(n,t):M(n):e}function We({projectId:e,onOpenArtifact:t,onOpenWorkItem:n}){Z(e);let r=Me(e),i=je(e,{limit:5}),a=Pe(e,{limit:5}),o=a.data?.pages[0]?.artifacts??[],s=i.data?.pages.flatMap(e=>e.items).slice(0,5)??[];return(0,B.jsxs)(`div`,{className:`space-y-5`,children:[(0,B.jsx)(`section`,{className:`grid grid-cols-2 gap-3 lg:grid-cols-4`,"aria-label":M(`projectsWorkSummary`),children:r.data?[[`projectsWorkTotal`,r.data.total],[`projectsWorkActive`,r.data.active],[`projectsWorkNeedsAttention`,r.data.attention],[`projectsWorkCompleted`,r.data.completed]].map(([e,t])=>(0,B.jsxs)(`div`,{className:`rounded-xl border border-border/60 bg-card p-4`,children:[(0,B.jsx)(`div`,{className:`text-2xl font-semibold`,children:t}),(0,B.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:M(e)})]},e)):(0,B.jsx)(`div`,{className:`col-span-full rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:r.isError?M(`projectsLoadFailed`):M(`projectsLoading`)})}),(0,B.jsxs)(`div`,{className:`grid min-w-0 gap-4 lg:grid-cols-2`,children:[(0,B.jsx)(V,{title:M(`projectsWorkRecentlyUpdated`),children:i.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):i.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):s.length?(0,B.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 rounded-xl bg-muted/45 px-3 py-3 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>n(e.id),children:[(0,B.jsx)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.title}),(0,B.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:$(e.state.name)})]},e.id))}):(0,B.jsx)(H,{children:M(`projectsWorkEmpty`)})}),(0,B.jsx)(V,{title:M(`projectsRecentArtifacts`),children:a.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):a.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):o.length?(0,B.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,B.jsxs)(U,{available:e.exists,path:e.path,label:e.label??e.path,onOpen:t,className:`block w-full rounded-xl bg-muted/45 p-3 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsx)(`span`,{className:`block truncate font-medium`,children:e.label??e.path}),(0,B.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[e.workItemTitle,(0,B.jsx)(`time`,{dateTime:e.createdAt,title:ce(e.createdAt),children:` · ${Be(e.createdAt)}`}),e.exists?``:` · ${M(`projectsUnavailable`)}`]})]},e.id))}):(0,B.jsx)(H,{children:M(`projectsNoRecentArtifacts`)})})]})]})}function Ge({skills:e,isLoading:t,isError:n,onOpen:r}){return t?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):n?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(`section`,{className:`min-w-0`,"aria-label":M(`projectsSkills`),children:[(0,B.jsxs)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:[le(e.length),` `,M(`projectsSkillsCountSuffix`)]}),e.length?(0,B.jsx)(`div`,{className:`grid min-w-0 gap-3 md:grid-cols-2`,children:e.map(e=>(0,B.jsxs)(`div`,{className:`relative group/page-row rounded-xl border border-border/60 transition-colors hover:border-border hover:bg-[var(--interaction-hover)] focus-within:bg-[var(--interaction-hover)] has-[[data-context-menu-open]]:bg-[var(--interaction-hover)]`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`w-full min-w-0 rounded-xl p-3 text-left focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>r(e),children:[(0,B.jsx)(`h3`,{className:`pr-7 text-sm font-medium`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground`,title:e.path,children:e.path}),(0,B.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs text-muted-foreground`,title:e.description??e.ref,children:e.description??e.ref})]}),(0,B.jsx)(`span`,{className:`absolute right-2 top-2`,children:(0,B.jsx)(v,{revealOnHover:!0,page:S(`skill`,e.ref,e.name)})})]},e.ref))}):(0,B.jsx)(H,{children:M(`projectsNoSkills`)})]})}function Ke({embedded:e=!1,onOpenArtifact:t,onOpenChange:n,projectId:r,projectRoot:i,workItemId:a}){let o=Fe(r,a),s=Ie(r,a);Z(r);let c=Ne(r),l=(0,B.jsxs)(B.Fragment,{children:[o.isLoading?(0,B.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):null,o.isError?(0,B.jsx)(`div`,{className:`p-6 text-sm text-destructive`,children:M(`projectsWorkItemLoadFailed`)}):null,o.data?(0,B.jsx)(qe,{item:o.data,states:c.data??[],activities:s.data?.activities??[],onOpenArtifact:(e,n)=>t(Q(i,e),n),onClose:()=>n(!1)},`${o.data.id}:${o.data.version}`):null]});return(0,B.jsx)(C,{open:!e&&!!a,onOpenChange:n,children:e?(0,B.jsx)(`div`,{className:`flex h-full min-h-0 flex-col`,children:l}):(0,B.jsx)(b,{side:`right`,closeLabel:M(`projectsCloseDetails`),className:`flex h-full w-full flex-col overflow-hidden p-0 sm:max-w-[680px]`,children:l})})}function qe({activities:e,item:n,onClose:r,onOpenArtifact:o,states:s}){let c=X(n.projectId),[l,u]=(0,z.useState)(n.title),[d,f]=(0,z.useState)(n.description),[p,m]=(0,z.useState)(n.stateId),[h,g]=(0,z.useState)(n.attention),[b,x]=(0,z.useState)(``),[C,w]=(0,z.useState)(``),[E,k]=(0,z.useState)(!1),A=async(e,t)=>{try{await e(),t?.()}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkActionFailed`))}},te=async()=>{try{await c.updateItem.mutateAsync({workItemId:n.id,patch:{title:l,description:d,stateId:p,attention:h,expectedVersion:n.version}}),i.success(M(`projectsWorkItemSaved`))}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkItemSaveFailed`))}},j=async()=>{if(b.trim())try{await c.linkArtifact.mutateAsync({workItemId:n.id,path:b.trim(),...C.trim()?{label:C.trim()}:{}}),x(``),w(``)}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkArtifactLinkFailed`))}};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(D,{className:`shrink-0 border-b border-border/60 px-5 pb-5 pt-6 pr-14 sm:px-7 sm:pt-7`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(O,{children:M(`projectsWorkDetails`)}),(0,B.jsx)(v,{page:S(`project-work`,JSON.stringify([n.projectId,n.id]),n.title)})]}),(0,B.jsxs)(y,{children:[n.id,` · `,M(`projectsWorkVersion`),` `,n.version]})]}),(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-6 overflow-y-auto px-5 py-6 sm:px-7`,children:[(0,B.jsxs)(`section`,{className:`space-y-3`,children:[(0,B.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkTitle`)}),(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value)}),(0,B.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkDescription`)}),(0,B.jsx)(T,{className:`min-h-28`,value:d,onChange:e=>f(e.target.value)}),(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:M(`projectsStatus`)}),(0,B.jsxs)(R,{value:p,onValueChange:m,children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:s.map(e=>(0,B.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkAttention`)}),(0,B.jsxs)(R,{value:h,onValueChange:e=>g(e),children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsxs)(I,{children:[(0,B.jsx)(L,{value:`none`,children:M(`projectsWorkAttention_none`)}),(0,B.jsx)(L,{value:`blocked`,children:M(`projectsWorkAttention_blocked`)}),(0,B.jsx)(L,{value:`awaiting-user`,children:M(`projectsWorkAttention_awaiting-user`)})]})]})]})]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:M(`projectsWorkArtifacts`)}),(0,B.jsxs)(`div`,{className:`space-y-2`,children:[n.artifacts.map(e=>(0,B.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl border border-border/60 p-2`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 rounded-lg px-2 py-1 text-left hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>o(e.path,e.label??e.path),children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 truncate text-sm font-medium`,children:[(0,B.jsx)(re,{className:`h-3.5 w-3.5 shrink-0`}),e.label??e.path]}),(0,B.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.path})]}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsWorkUnlinkArtifact`),onClick:()=>void A(()=>c.unlinkArtifact.mutateAsync({workItemId:n.id,artifactLinkId:e.id})),children:(0,B.jsx)(ke,{className:`h-4 w-4`})})]},e.id)),n.artifacts.length?null:(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:M(`projectsWorkNoArtifacts`)})]}),(0,B.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-[1fr_12rem_auto]`,children:[(0,B.jsx)(t,{value:b,onChange:e=>x(e.target.value),placeholder:M(`projectsWorkArtifactPath`)}),(0,B.jsx)(t,{value:C,onChange:e=>w(e.target.value),placeholder:M(`projectsWorkArtifactLabel`)}),(0,B.jsxs)(a,{variant:`outline`,onClick:()=>void j(),disabled:!b.trim()||c.linkArtifact.isPending,children:[(0,B.jsx)(ee,{className:`mr-2 h-4 w-4`}),M(`projectsWorkLinkArtifact`)]})]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:M(`projectsActivity`)}),(0,B.jsx)(`ol`,{className:`space-y-2`,children:e.map(e=>(0,B.jsxs)(`li`,{className:`rounded-xl bg-muted/35 px-3 py-2 text-sm`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:M(`projectsWorkActivity_${e.type}`)}),(0,B.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[e.actor.kind,` ·`,` `,new Date(e.createdAt).toLocaleString()]})]},e.id))})]})]}),(0,B.jsxs)(_,{className:`shrink-0 border-t border-border/60 bg-background px-5 py-4 sm:px-7`,children:[n.deletedAt?(0,B.jsx)(a,{variant:`outline`,onClick:()=>void A(()=>c.restoreItem.mutateAsync(n.id)),children:M(`projectsRestore`)}):(0,B.jsxs)(a,{variant:`destructive`,onClick:()=>k(!0),children:[(0,B.jsx)(se,{className:`mr-2 h-4 w-4`}),M(`projectsDelete`)]}),(0,B.jsx)(a,{onClick:()=>void te(),disabled:!l.trim()||c.updateItem.isPending,children:M(`save`)})]}),(0,B.jsx)(be,{open:E,onOpenChange:k,title:M(`projectsDeleteWorkItem`),description:M(`projectsDeleteWorkItemDescription`),confirmLabel:M(`projectsDelete`),variant:`destructive`,onCancel:()=>k(!1),onConfirm:()=>void A(()=>c.deleteItem.mutateAsync(n.id),r)})]})}var Je=[`backlog`,`unstarted`,`started`,`completed`,`canceled`];function Ye({open:e,onOpenChange:n,projectId:r,states:o}){let s=X(r),c=Le(o),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(`unstarted`),[p,m]=(0,z.useState)(null),[h,g]=(0,z.useState)(``),_=async e=>{try{await e()}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkActionFailed`))}},v=async()=>{l.trim()&&await _(async()=>{await s.createState.mutateAsync({name:l.trim(),category:d}),u(``)})},y=async(e,t)=>{let n=c[e],r=c[e+t];!n||!r||await _(async()=>{await s.updateState.mutateAsync({stateId:n.id,patch:{position:r.position}}),await s.updateState.mutateAsync({stateId:r.id,patch:{position:n.position}})})};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(ge,{open:e,onOpenChange:n,children:(0,B.jsxs)(pe,{className:`max-h-[85vh] overflow-y-auto sm:max-w-2xl`,children:[(0,B.jsxs)(de,{children:[(0,B.jsx)(me,{children:M(`projectsWorkStateSettings`)}),(0,B.jsx)(he,{children:M(`projectsWorkStateSettingsDescription`)})]}),(0,B.jsx)(`div`,{className:`space-y-2`,children:c.map((e,n)=>(0,B.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/60 p-3 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,B.jsx)(t,{"aria-label":M(`projectsWorkStateName`),defaultValue:$(e.name),onBlur:t=>{let n=t.currentTarget.value.trim();n&&n!==$(e.name)&&_(()=>s.updateState.mutateAsync({stateId:e.id,patch:{name:n}}))}}),(0,B.jsxs)(R,{value:e.category,onValueChange:t=>void _(()=>s.updateState.mutateAsync({stateId:e.id,patch:{category:t}})),children:[(0,B.jsx)(F,{"aria-label":M(`projectsWorkStateCategory`),children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:Je.map(e=>(0,B.jsx)(L,{value:e,children:M(`projectsWorkCategory_${e}`)},e))})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-end gap-1`,children:[(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsMoveUp`),disabled:n===0,onClick:()=>void y(n,-1),children:(0,B.jsx)(te,{className:`h-4 w-4`})}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsMoveDown`),disabled:n===c.length-1,onClick:()=>void y(n,1),children:(0,B.jsx)(j,{className:`h-4 w-4`})}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsDeleteState`),disabled:c.length<=1,onClick:()=>{m(e),g(``)},children:(0,B.jsx)(se,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground sm:col-span-3`,children:[(0,B.jsx)(`input`,{type:`radio`,name:`default-state`,checked:e.isDefault,onChange:()=>void _(()=>s.updateState.mutateAsync({stateId:e.id,patch:{isDefault:!0}}))}),M(`projectsWorkDefaultState`)]})]},e.id))}),(0,B.jsxs)(`div`,{className:`grid gap-2 border-t border-border/60 pt-4 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value),placeholder:M(`projectsWorkNewState`)}),(0,B.jsxs)(R,{value:d,onValueChange:e=>f(e),children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:Je.map(e=>(0,B.jsx)(L,{value:e,children:M(`projectsWorkCategory_${e}`)},e))})]}),(0,B.jsxs)(a,{onClick:()=>void v(),disabled:!l.trim()||s.createState.isPending,children:[(0,B.jsx)(ae,{className:`mr-2 h-4 w-4`}),M(`projectsAdd`)]})]})]})}),(0,B.jsx)(ge,{open:!!p,onOpenChange:e=>{e||m(null)},children:(0,B.jsxs)(pe,{children:[(0,B.jsxs)(de,{children:[(0,B.jsx)(me,{children:M(`projectsDeleteState`)}),(0,B.jsx)(he,{children:M(`projectsDeleteStateDescription`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:M(`projectsWorkStateMigration`)}),(0,B.jsxs)(R,{value:h,onValueChange:g,children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{placeholder:M(`projectsWorkStateMigrationOptional`)})}),(0,B.jsx)(I,{children:c.filter(e=>e.id!==p?.id).map(e=>(0,B.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,B.jsxs)(fe,{children:[(0,B.jsx)(a,{variant:`outline`,onClick:()=>m(null),children:M(`cancel`)}),(0,B.jsx)(a,{variant:`destructive`,onClick:()=>{p&&_(async()=>{await s.deleteState.mutateAsync({stateId:p.id,migrateToStateId:h||null}),m(null)})},children:M(`projectsDelete`)})]})]})})]})}function Xe({startedProgress:e,state:t}){if(t.category===`backlog`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`backlog`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,B.jsx)(ne,{className:`h-4 w-4`})});if(t.category===`unstarted`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`unstarted`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground`,children:(0,B.jsx)(Ee,{className:`h-4 w-4`,strokeWidth:2})});if(t.category===`completed`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`completed`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-emerald-600 dark:text-emerald-400`,children:(0,B.jsx)(E,{className:`h-4 w-4`,strokeWidth:2.25})});if(t.category===`canceled`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`canceled`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,B.jsx)(Te,{className:`h-4 w-4`})});let n=Math.round((e??.5)*100),r=n>=67?`text-emerald-600 dark:text-emerald-400`:n>=40?`text-orange-500 dark:text-orange-400`:`text-amber-500 dark:text-amber-400`;return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`started`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center ${r}`,children:(0,B.jsxs)(`svg`,{className:`h-4 w-4`,viewBox:`0 0 16 16`,fill:`none`,children:[(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,stroke:`currentColor`,strokeWidth:`1.75`,opacity:`0.22`}),(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,pathLength:`100`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeDasharray:`${n} ${100-n}`,transform:`rotate(-90 8 8)`})]})})}function Ze({item:e,onOpen:t}){return(0,B.jsxs)(`button`,{type:`button`,className:`w-full rounded-xl border border-border/50 bg-card p-3 text-left text-sm shadow-sm transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:t,children:[(0,B.jsx)(`span`,{className:`block font-medium`,children:e.title}),(0,B.jsxs)(`span`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:$(e.state.name)}),e.attention===`none`?null:(0,B.jsx)(`span`,{className:`rounded-full bg-amber-500/15 px-2 py-0.5 text-amber-700 dark:text-amber-300`,children:M(`projectsWorkAttention_${e.attention}`)}),e.deletedAt?(0,B.jsx)(`span`,{children:M(`projectsDeleted`)}):null]})]})}function Qe({hasNextPage:e,isError:t,isFetchingNextPage:n,isLoading:r,items:i,onLoadMore:o,onOpenWorkItem:s}){return r?(0,B.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:M(`projectsLoading`)}):t?(0,B.jsx)(`p`,{className:`py-3 text-xs text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(B.Fragment,{children:[i.length?i.map(e=>(0,B.jsx)(Ze,{item:e,onOpen:()=>s(e.id)},e.id)):(0,B.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:M(`projectsNoData`)}),e?(0,B.jsx)(a,{type:`button`,variant:`ghost`,size:`sm`,className:`w-full`,disabled:n,onClick:o,children:M(n?`projectsLoading`:`projectsWorkLoadMore`)}):null]})}function $e({includeDeleted:e,onOpenWorkItem:t,state:n,startedProgress:r,view:i}){let[a,o]=(0,z.useState)(!1),s=je(n.projectId,{stateId:n.id,includeDeleted:e,limit:20}),c=s.data?.pages.flatMap(e=>e.items)??[],l=s.data?.pages[0]?.total;return(0,B.jsxs)(`section`,{className:i===`board`?`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`:`min-w-0`,"aria-label":$(n.name),children:[(0,B.jsxs)(`button`,{type:`button`,className:`flex w-full shrink-0 items-center gap-2 rounded-lg px-1 py-2 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-expanded":!a,onClick:()=>o(e=>!e),children:[a?(0,B.jsx)(A,{className:`h-4 w-4 shrink-0`}):(0,B.jsx)(j,{className:`h-4 w-4 shrink-0`}),(0,B.jsx)(Xe,{state:n,startedProgress:r}),(0,B.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold`,children:$(n.name)}),(0,B.jsx)(`span`,{className:`ml-0.5 shrink-0 text-xs font-medium tabular-nums text-muted-foreground`,children:l??`…`})]}),a?null:(0,B.jsx)(`div`,{className:i===`board`?`min-h-0 flex-1 space-y-2 overflow-y-auto px-1 pb-3`:`space-y-2 px-1 pb-3`,children:(0,B.jsx)(Qe,{hasNextPage:s.hasNextPage,isError:s.isError,isFetchingNextPage:s.isFetchingNextPage,isLoading:s.isLoading,items:c,onLoadMore:()=>void s.fetchNextPage(),onOpenWorkItem:t})})]})}function et({onOpenWorkItem:e,projectId:n}){let[r,o]=(0,z.useState)(`list`),[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1);Z(n);let p=Ne(n),m=X(n),h=async()=>{if(l.trim())try{let t=await m.createItem.mutateAsync({title:l.trim()});u(``),e(t.id)}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkItemCreateFailed`))}};if(p.isLoading)return(0,B.jsx)(`div`,{className:`rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)});if(p.isError)return(0,B.jsx)(`div`,{className:`rounded-xl border border-destructive/40 p-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)});let g=Le(p.data??[]),_=ze(p.data??[]),v=g.filter(e=>e.category===`started`),y=new Map(v.map((e,t)=>[e.id,(t+1)/(v.length+1)]));return(0,B.jsxs)(`section`,{"aria-label":M(`projectsWork`),className:`min-w-0 space-y-4`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-[16rem] flex-1 gap-2`,children:[(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()},placeholder:M(`projectsWorkNewItem`)}),(0,B.jsxs)(a,{onClick:()=>void h(),disabled:!l.trim()||m.createItem.isPending,children:[(0,B.jsx)(ae,{className:`mr-2 h-4 w-4`}),M(`projectsCreate`)]})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-1 rounded-xl bg-muted/40 p-1`,role:`group`,"aria-label":M(`projectsWorkViews`),children:[(0,B.jsxs)(a,{size:`sm`,variant:r===`list`?`secondary`:`ghost`,"aria-pressed":r===`list`,onClick:()=>o(`list`),children:[(0,B.jsx)(Oe,{className:`mr-2 h-4 w-4`}),M(`projectsWorkList`)]}),(0,B.jsxs)(a,{size:`sm`,variant:r===`board`?`secondary`:`ghost`,"aria-pressed":r===`board`,onClick:()=>o(`board`),children:[(0,B.jsx)(De,{className:`mr-2 h-4 w-4`}),M(`projectsWorkBoard`)]})]}),(0,B.jsxs)(a,{variant:`outline`,size:`sm`,onClick:()=>f(!0),children:[(0,B.jsx)(oe,{className:`mr-2 h-4 w-4`}),M(`projectsWorkStateSettings`)]})]}),(0,B.jsxs)(`label`,{className:`flex w-fit items-center gap-2 text-xs text-muted-foreground`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),M(`projectsWorkShowDeleted`)]}),r===`list`?(0,B.jsx)(`div`,{className:`space-y-3`,children:_.map(t=>(0,B.jsx)($e,{state:t,startedProgress:y.get(t.id)??null,view:r,includeDeleted:s,onOpenWorkItem:e},t.id))}):null,r===`board`?(0,B.jsx)(`div`,{className:`grid h-[calc(100dvh-17rem)] min-h-[28rem] max-h-[52rem] min-w-0 auto-cols-[minmax(18rem,1fr)] grid-flow-col items-stretch gap-3 overflow-x-auto overflow-y-hidden pb-2`,children:g.map(t=>(0,B.jsx)($e,{state:t,startedProgress:y.get(t.id)??null,view:r,includeDeleted:s,onOpenWorkItem:e},t.id))}):null,(0,B.jsx)(Ye,{open:d,onOpenChange:f,projectId:n,states:g})]})}var tt=e=>[`project-agreement`,e],nt=e=>[`project-skills`,e];function rt(e){return r({queryKey:tt(e??``),enabled:!!e,queryFn:async()=>await n.projects.getAgreement(e)})}function it(e){return r({queryKey:nt(e??``),enabled:!!e,queryFn:async()=>await n.projects.listProjectSkills(e)})}function at(e){return e===`overview`||e===`work`||e===`artifacts`||e===`skills`||e===`agreement`}var ot=[`overview`,`work`,`artifacts`,`skills`,`agreement`];function st({resourceId:e,resourceWorkId:t}={}){let n=w(),{projectId:r,tab:i}=f(),a=e??r,[o,s]=(0,z.useState)(`overview`),c=e?o:i,l=d(),{state:u}=p(),_=g(),{isMobile:v}=ie(),y=h(),b=e=>n.pageResourceManager.open(S(`project-work`,JSON.stringify([a,e]),e),`default`,l),x=y.data?.projects??[],C=x.find(e=>e.id===a)??null,T=at(c)?c:null,E=rt(T===`agreement`?C?.id??null:null),D=it(T===`skills`?C?.id??null:null);if(y.isLoading)return(0,B.jsx)(`main`,{className:`flex h-full items-center justify-center p-6 text-sm text-muted-foreground`,children:M(`projectsLoading`)});if(y.isError)return(0,B.jsxs)(`main`,{className:`p-6 text-sm text-destructive`,children:[M(`projectsLoadFailed`),`: `,y.error.message]});if(e&&!C)return(0,B.jsx)(`p`,{role:`alert`,className:`p-4`,children:M(`resourceNotFound`)});if(!x.length)return(0,B.jsx)(`main`,{className:`p-6 text-sm text-muted-foreground`,children:M(`projectsEmpty`)});if(!C||!T)return(0,B.jsxs)(`main`,{className:`space-y-3 p-4 text-sm text-muted-foreground sm:p-6`,children:[(0,B.jsx)(`label`,{htmlFor:`project-home-selection`,className:`block font-medium text-foreground`,children:M(`projectsChoose`)}),(0,B.jsxs)(`select`,{id:`project-home-selection`,value:``,onChange:e=>l(`/projects/${encodeURIComponent(e.target.value)}/overview`,{state:u}),className:`min-h-11 w-full rounded-xl border border-border bg-card px-3 text-base text-foreground`,children:[(0,B.jsx)(`option`,{value:``,disabled:!0,children:M(`projectsChoose`)}),x.map(e=>(0,B.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]});let O=(e,t)=>_.chatThreadManager.openFilePreview({path:e,label:t,viewMode:`preview`,previewViewer:`rendered`});return t?(0,B.jsx)(Ke,{embedded:!0,projectId:C.id,projectRoot:C.rootPath,workItemId:t,onOpenChange:e=>{e||l(`/projects/${encodeURIComponent(C.id)}/work`)},onOpenArtifact:O}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`main`,{className:`h-full min-w-0 flex-1 overflow-y-auto p-3 sm:p-4 md:p-6`,children:(0,B.jsxs)(`div`,{className:`mx-auto max-w-6xl space-y-4`,children:[(0,B.jsxs)(`header`,{className:`rounded-2xl border border-border/60 bg-card p-3 sm:p-4`,children:[(0,B.jsx)(`h1`,{className:`text-lg font-semibold`,children:C.name}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-xs text-muted-foreground`,children:C.rootPath})]}),(0,B.jsxs)(ye,{value:T,onValueChange:t=>e&&at(t)?s(t):l(`/projects/${encodeURIComponent(C.id)}/${t}`,{state:u}),children:[(0,B.jsx)(`div`,{className:`min-w-0 overflow-x-auto pb-1`,children:(0,B.jsx)(ve,{className:`w-max`,children:ot.map(e=>(0,B.jsx)(_e,{value:e,children:M(`projects${e[0].toUpperCase()}${e.slice(1)}`)},e))})}),(0,B.jsx)(N,{value:`overview`,className:`mt-4`,children:(0,B.jsx)(We,{projectId:C.id,onOpenArtifact:(e,t)=>O(Q(C.rootPath,e),t),onOpenWorkItem:b})}),(0,B.jsx)(N,{value:`work`,className:`mt-4`,children:(0,B.jsx)(et,{projectId:C.id,onOpenWorkItem:b})}),(0,B.jsx)(N,{value:`artifacts`,className:`mt-4`,children:(0,B.jsx)(He,{projectId:C.id,onOpenFile:(e,t)=>O(Q(C.rootPath,e),t)})}),(0,B.jsx)(N,{value:`skills`,className:`mt-4`,children:(0,B.jsx)(Ge,{skills:D.data??[],isLoading:D.isLoading,isError:D.isError,onOpen:e=>n.pageResourceManager.open(S(`skill`,e.ref,e.name),`default`,l)})}),(0,B.jsx)(N,{value:`agreement`,className:`mt-4`,children:(0,B.jsx)(Ae,{agreement:E.data,isLoading:E.isLoading,isError:E.isError,onOpenFile:(e,t)=>O(Q(C.rootPath,e),t)})})]})]})}),!e&&(0,B.jsx)(m,{layoutMode:v?`mobile`:`desktop`,sessionKey:null,projectRoot:C.rootPath})]})}export{st as ProjectsPage};
|
|
1
|
+
import{i as e}from"./chunk-DF37yw5_.js";import{Gt as t,Lt as n,Qn as r,Xn as i,Yt as a,Zn as o,lr as s,qn as c,ur as l,xr as u}from"./api-CXWxExzS.js";import{d,f,l as p}from"./navigation-link-O9Wm0epj.js";import{G as m,Ut as h,Yt as g,_t as _,f as v,gt as y,ht as b,in as x,m as S,mt as C,n as w,pt as T,rn as E,vt as D,yt as O}from"./app-presenter-provider-DdD2Q7jZ.js";import{t as k}from"./createLucideIcon-C3LSyx-e.js";import{ht as A,rt as ee}from"./context-menu-C0qywo73.js";import{R as te,z as j}from"./dist-D9h2cWk3.js";import{t as ne}from"./circle-dashed-KGwElDWV.js";import{t as re}from"./external-link-DZzwHRHW.js";import{t as ie}from"./use-viewport-layout-Bnm5W5Qz.js";import{t as ae}from"./plus-C42o6xrD.js";import{t as oe}from"./settings-2-D3-m8a3v.js";import{t as se}from"./trash-2-BVQs-0ji.js";import{n as ce,r as le,s as M,t as ue}from"./i18n-ByVUrt9w.js";import{a as de,i as fe,n as pe,o as me,r as he,t as ge}from"./dialog-DMKYZDFu.js";import{a as _e,i as ve,n as ye,r as N}from"./tag-chip-DFzDSvcF.js";import{t as be}from"./confirm-dialog-jz2cQKId.js";import{a as P,i as F,n as I,r as L,t as R}from"./select-BJ-EjmCz.js";import{a as xe,i as Se,n as Ce,t as we}from"./card-eFBmxYiI.js";var Te=k(`CircleX`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),Ee=k(`Circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),De=k(`LayoutGrid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),Oe=k(`List`,[[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 18h.01`,key:`1tta3j`}],[`path`,{d:`M3 6h.01`,key:`1rqtza`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 18h13`,key:`1lx6n3`}],[`path`,{d:`M8 6h13`,key:`ik3vkj`}]]),ke=k(`Unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]),z=e(u(),1),B=l();function V({title:e,children:t,className:n=``}){return(0,B.jsxs)(we,{hover:!1,surface:`flat`,className:n,children:[(0,B.jsx)(Se,{className:`p-4 pb-3`,children:(0,B.jsx)(xe,{children:e})}),(0,B.jsx)(Ce,{className:`p-4 pt-0`,children:t})]})}function H({children:e}){return(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:e})}function U({available:e,children:t,className:n,label:r,onOpen:i,path:a}){return e?(0,B.jsx)(`button`,{type:`button`,className:n,title:a,onClick:()=>i(a,r),children:t}):(0,B.jsx)(`div`,{className:n,children:t})}function Ae({agreement:e,isLoading:t,isError:n,onOpenFile:r}){return(0,B.jsxs)(V,{title:M(`projectsAgreementFile`),children:[(0,B.jsx)(`p`,{className:`mb-4 text-sm text-muted-foreground`,children:M(`projectsAgreementDescription`)}),t?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):n?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):e?.available?(0,B.jsxs)(U,{available:!0,path:e.path,label:e.path,onOpen:r,className:`block w-full rounded-xl bg-muted/45 p-3 text-left transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsx)(`span`,{className:`block text-sm font-medium`,children:e.path}),(0,B.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:M(`projectsAgreementOpen`)})]}):(0,B.jsx)(H,{children:M(`projectsNoAgreement`)})]})}var W=e=>[`project-work`,e],G=e=>[`project-work-summary`,e],K=e=>[`project-work-states`,e],q=e=>[`project-work-artifacts`,e],J=(e,t)=>[`project-work-item`,e,t],Y=(e,t)=>[`project-work-activity`,e,t];function je(e,t={}){return x({queryKey:[...W(e??``),t],enabled:!!e,initialPageParam:null,queryFn:async({pageParam:r})=>await n.projects.listWork(e,{...t,...r?{cursor:r}:{}}),getNextPageParam:e=>e.nextCursor})}function Me(e){return r({queryKey:G(e??``),enabled:!!e,queryFn:async()=>await n.projects.getWorkSummary(e)})}function Ne(e){return r({queryKey:K(e??``),enabled:!!e,queryFn:async()=>await n.projects.listWorkStates(e)})}function Pe(e,t={}){return x({queryKey:[...q(e??``),t],enabled:!!e,initialPageParam:null,queryFn:async({pageParam:r})=>await n.projects.listRecentWorkArtifacts(e,{...t,...r?{cursor:r}:{}}),getNextPageParam:e=>e.nextCursor})}function Fe(e,t){return r({queryKey:J(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await n.projects.getWorkItem(e,t)})}function Ie(e,t){return r({queryKey:Y(e??``,t??``),enabled:!!(e&&t),queryFn:async()=>await n.projects.listWorkItemActivities(e,t,{limit:100})})}function X(e){let t=s(),r=async n=>{await Promise.all([t.invalidateQueries({queryKey:W(e)}),t.invalidateQueries({queryKey:G(e)}),t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),...n?[t.invalidateQueries({queryKey:J(e,n)}),t.invalidateQueries({queryKey:Y(e,n)})]:[]])};return{createItem:o({mutationFn:async t=>await n.projects.createWorkItem(e,t),onSuccess:async e=>await r(e.id)}),updateItem:o({mutationFn:async t=>await n.projects.updateWorkItem(e,t.workItemId,t.patch),onSuccess:async e=>await r(e.id)}),deleteItem:o({mutationFn:async t=>await n.projects.deleteWorkItem(e,t),onSuccess:async e=>await r(e.id)}),restoreItem:o({mutationFn:async t=>await n.projects.restoreWorkItem(e,t),onSuccess:async e=>await r(e.id)}),linkArtifact:o({mutationFn:async t=>await n.projects.linkWorkItemArtifact(e,t.workItemId,{path:t.path,...t.label?{label:t.label}:{}}),onSuccess:async(e,t)=>await r(t.workItemId)}),unlinkArtifact:o({mutationFn:async t=>await n.projects.unlinkWorkItemArtifact(e,t.workItemId,t.artifactLinkId),onSuccess:async(e,t)=>await r(t.workItemId)}),createState:o({mutationFn:async t=>await n.projects.createWorkState(e,t),onSuccess:async()=>await r()}),updateState:o({mutationFn:async t=>await n.projects.updateWorkState(e,t.stateId,t.patch),onSuccess:async()=>await r()}),deleteState:o({mutationFn:async t=>await n.projects.deleteWorkState(e,t.stateId,t.migrateToStateId),onSuccess:async()=>await r()})}}function Z(e){let t=s();(0,z.useEffect)(()=>{if(e)return n.eventBus.on(c.projectWorkChanged,n=>{n.projectId===e&&(t.invalidateQueries({queryKey:W(e)}),t.invalidateQueries({queryKey:G(e)}),t.invalidateQueries({queryKey:K(e)}),t.invalidateQueries({queryKey:q(e)}),n.workItemId&&(t.invalidateQueries({queryKey:J(e,n.workItemId)}),t.invalidateQueries({queryKey:Y(e,n.workItemId)})))})},[e,t])}function Le(e){return[...e].sort((e,t)=>e.position-t.position||e.name.localeCompare(t.name))}var Re={started:0,unstarted:1,backlog:2,completed:3,canceled:4};function ze(e){return[...e].sort((e,t)=>{let n=Re[e.category]-Re[t.category];return n===0?e.category===`completed`||e.category===`canceled`?e.position-t.position||e.name.localeCompare(t.name):t.position-e.position||e.name.localeCompare(t.name):n})}function Q(e,t){return`${e}${e.endsWith(`/`)||e.endsWith(`\\`)?``:`/`}${t}`}function Be(e,t=new Date){if(!e)return`-`;let n=new Date(e),r=t.getTime()-n.getTime();if(Number.isNaN(n.getTime()))return e;if(r<6e4)return M(`projectsTimeJustNow`);let i=Math.floor(r/6e4);if(i<60)return M(`projectsTimeMinutesAgo`).replace(`{count}`,String(i));let a=Math.floor(i/60);if(a<24)return M(`projectsTimeHoursAgo`).replace(`{count}`,String(a));let o=Math.floor(a/24);return o===1?M(`projectsTimeYesterday`):o<7?M(`projectsTimeDaysAgo`).replace(`{count}`,String(o)):ue(e)}var Ve=20;function He({projectId:e,onOpenFile:t}){let[n,r]=(0,z.useState)(``),i=Pe(e,{limit:Ve,...n.trim()?{query:n.trim()}:{}}),a=i.data?.pages??[],o=a.flatMap(e=>e.artifacts),s=a[0]?.total??0;return i.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):i.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(`section`,{className:`min-w-0`,"aria-label":M(`projectsArtifacts`),children:[(0,B.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[le(s),` `,M(`projectsArtifactsCountSuffix`)]}),(0,B.jsx)(`input`,{type:`search`,value:n,className:`h-8 w-full min-w-0 rounded-lg border border-border/60 bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground sm:w-60`,placeholder:M(`projectsArtifactsSearchPlaceholder`),onChange:e=>r(e.target.value)})]}),o.length?(0,B.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/60`,children:[(0,B.jsx)(`div`,{className:`divide-y divide-border/60`,children:o.map(e=>(0,B.jsxs)(U,{available:e.exists,path:e.path,label:e.label??e.path,onOpen:t,className:`flex w-full min-w-0 items-center gap-3 px-3 py-3 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`span`,{className:`block truncate font-medium`,children:e.label??e.path}),(0,B.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[e.path,` · `,e.workItemTitle]})]}),(0,B.jsx)(`time`,{className:`shrink-0 text-xs text-muted-foreground`,dateTime:e.createdAt,title:ce(e.createdAt),children:Be(e.createdAt)}),e.exists?null:(0,B.jsx)(`span`,{className:`shrink-0 text-xs text-destructive`,children:M(`projectsUnavailable`)})]},e.id))}),i.hasNextPage?(0,B.jsx)(`button`,{type:`button`,className:`w-full border-t border-border/60 px-3 py-2.5 text-left text-sm text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,disabled:i.isFetchingNextPage,onClick:()=>void i.fetchNextPage(),children:i.isFetchingNextPage?M(`projectsLoading`):M(`projectsArtifactsShowMore`)}):null]}):(0,B.jsx)(H,{children:n.trim()?M(`projectsArtifactsNoMatches`):M(`projectsNoArtifacts`)})]})}var Ue={Backlog:`projectsWorkState_backlog`,Planned:`projectsWorkState_planned`,"In Progress":`projectsWorkState_inProgress`,"In Review":`projectsWorkState_inReview`,"Awaiting Acceptance":`projectsWorkState_awaitingAcceptance`,Completed:`projectsWorkState_completed`,Canceled:`projectsWorkState_canceled`};function $(e,t){let n=Ue[e];return n?t?M(n,t):M(n):e}function We({projectId:e,onOpenArtifact:t,onOpenWorkItem:n}){Z(e);let r=Me(e),i=je(e,{limit:5}),a=Pe(e,{limit:5}),o=a.data?.pages[0]?.artifacts??[],s=i.data?.pages.flatMap(e=>e.items).slice(0,5)??[];return(0,B.jsxs)(`div`,{className:`space-y-5`,children:[(0,B.jsx)(`section`,{className:`grid grid-cols-2 gap-3 lg:grid-cols-4`,"aria-label":M(`projectsWorkSummary`),children:r.data?[[`projectsWorkTotal`,r.data.total],[`projectsWorkActive`,r.data.active],[`projectsWorkNeedsAttention`,r.data.attention],[`projectsWorkCompleted`,r.data.completed]].map(([e,t])=>(0,B.jsxs)(`div`,{className:`rounded-xl border border-border/60 bg-card p-4`,children:[(0,B.jsx)(`div`,{className:`text-2xl font-semibold`,children:t}),(0,B.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:M(e)})]},e)):(0,B.jsx)(`div`,{className:`col-span-full rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:r.isError?M(`projectsLoadFailed`):M(`projectsLoading`)})}),(0,B.jsxs)(`div`,{className:`grid min-w-0 gap-4 lg:grid-cols-2`,children:[(0,B.jsx)(V,{title:M(`projectsWorkRecentlyUpdated`),children:i.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):i.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):s.length?(0,B.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 rounded-xl bg-muted/45 px-3 py-3 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>n(e.id),children:[(0,B.jsx)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:e.title}),(0,B.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:$(e.state.name)})]},e.id))}):(0,B.jsx)(H,{children:M(`projectsWorkEmpty`)})}),(0,B.jsx)(V,{title:M(`projectsRecentArtifacts`),children:a.isLoading?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):a.isError?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):o.length?(0,B.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,B.jsxs)(U,{available:e.exists,path:e.path,label:e.label??e.path,onOpen:t,className:`block w-full rounded-xl bg-muted/45 p-3 text-left text-sm transition-colors enabled:hover:bg-[var(--interaction-hover)] enabled:focus-visible:outline-none enabled:focus-visible:ring-1 enabled:focus-visible:ring-border`,children:[(0,B.jsx)(`span`,{className:`block truncate font-medium`,children:e.label??e.path}),(0,B.jsxs)(`span`,{className:`mt-1 block truncate text-xs text-muted-foreground`,children:[e.workItemTitle,(0,B.jsx)(`time`,{dateTime:e.createdAt,title:ce(e.createdAt),children:` · ${Be(e.createdAt)}`}),e.exists?``:` · ${M(`projectsUnavailable`)}`]})]},e.id))}):(0,B.jsx)(H,{children:M(`projectsNoRecentArtifacts`)})})]})]})}function Ge({skills:e,isLoading:t,isError:n,onOpen:r}){return t?(0,B.jsx)(`p`,{className:`py-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):n?(0,B.jsx)(`p`,{className:`py-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(`section`,{className:`min-w-0`,"aria-label":M(`projectsSkills`),children:[(0,B.jsxs)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:[le(e.length),` `,M(`projectsSkillsCountSuffix`)]}),e.length?(0,B.jsx)(`div`,{className:`grid min-w-0 gap-3 md:grid-cols-2`,children:e.map(e=>(0,B.jsxs)(`div`,{className:`relative group/page-row rounded-xl border border-border/60 transition-colors hover:border-border hover:bg-[var(--interaction-hover)] focus-within:bg-[var(--interaction-hover)] has-[[data-context-menu-open]]:bg-[var(--interaction-hover)]`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`w-full min-w-0 rounded-xl p-3 text-left focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>r(e),children:[(0,B.jsx)(`h3`,{className:`pr-7 text-sm font-medium`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground`,title:e.path,children:e.path}),(0,B.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs text-muted-foreground`,title:e.description??e.ref,children:e.description??e.ref})]}),(0,B.jsx)(`span`,{className:`absolute right-2 top-2`,children:(0,B.jsx)(v,{revealOnHover:!0,page:S(`skill`,e.ref,e.name)})})]},e.ref))}):(0,B.jsx)(H,{children:M(`projectsNoSkills`)})]})}function Ke({embedded:e=!1,onOpenArtifact:t,onOpenChange:n,projectId:r,projectRoot:i,workItemId:a}){let o=Fe(r,a),s=Ie(r,a);Z(r);let c=Ne(r),l=(0,B.jsxs)(B.Fragment,{children:[o.isLoading?(0,B.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:M(`projectsLoading`)}):null,o.isError?(0,B.jsx)(`div`,{className:`p-6 text-sm text-destructive`,children:M(`projectsWorkItemLoadFailed`)}):null,o.data?(0,B.jsx)(qe,{item:o.data,states:c.data??[],activities:s.data?.activities??[],onOpenArtifact:(e,n)=>t(Q(i,e),n),onClose:()=>n(!1)},`${o.data.id}:${o.data.version}`):null]});return(0,B.jsx)(C,{open:!e&&!!a,onOpenChange:n,children:e?(0,B.jsx)(`div`,{className:`flex h-full min-h-0 flex-col`,children:l}):(0,B.jsx)(b,{side:`right`,closeLabel:M(`projectsCloseDetails`),className:`flex h-full w-full flex-col overflow-hidden p-0 sm:max-w-[680px]`,children:l})})}function qe({activities:e,item:n,onClose:r,onOpenArtifact:o,states:s}){let c=X(n.projectId),[l,u]=(0,z.useState)(n.title),[d,f]=(0,z.useState)(n.description),[p,m]=(0,z.useState)(n.stateId),[h,g]=(0,z.useState)(n.attention),[b,x]=(0,z.useState)(``),[C,w]=(0,z.useState)(``),[E,k]=(0,z.useState)(!1),A=async(e,t)=>{try{await e(),t?.()}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkActionFailed`))}},te=async()=>{try{await c.updateItem.mutateAsync({workItemId:n.id,patch:{title:l,description:d,stateId:p,attention:h,expectedVersion:n.version}}),i.success(M(`projectsWorkItemSaved`))}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkItemSaveFailed`))}},j=async()=>{if(b.trim())try{await c.linkArtifact.mutateAsync({workItemId:n.id,path:b.trim(),...C.trim()?{label:C.trim()}:{}}),x(``),w(``)}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkArtifactLinkFailed`))}};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(D,{className:`shrink-0 border-b border-border/60 px-5 pb-5 pt-6 pr-14 sm:px-7 sm:pt-7`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(O,{children:M(`projectsWorkDetails`)}),(0,B.jsx)(v,{page:S(`project-work`,JSON.stringify([n.projectId,n.id]),n.title)})]}),(0,B.jsxs)(y,{children:[n.id,` · `,M(`projectsWorkVersion`),` `,n.version]})]}),(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-6 overflow-y-auto px-5 py-6 sm:px-7`,children:[(0,B.jsxs)(`section`,{className:`space-y-3`,children:[(0,B.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkTitle`)}),(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value)}),(0,B.jsx)(`label`,{className:`block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkDescription`)}),(0,B.jsx)(T,{className:`min-h-28`,value:d,onChange:e=>f(e.target.value)}),(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:M(`projectsStatus`)}),(0,B.jsxs)(R,{value:p,onValueChange:m,children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:s.map(e=>(0,B.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`mb-1 block text-xs font-medium text-muted-foreground`,children:M(`projectsWorkAttention`)}),(0,B.jsxs)(R,{value:h,onValueChange:e=>g(e),children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsxs)(I,{children:[(0,B.jsx)(L,{value:`none`,children:M(`projectsWorkAttention_none`)}),(0,B.jsx)(L,{value:`blocked`,children:M(`projectsWorkAttention_blocked`)}),(0,B.jsx)(L,{value:`awaiting-user`,children:M(`projectsWorkAttention_awaiting-user`)})]})]})]})]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:M(`projectsWorkArtifacts`)}),(0,B.jsxs)(`div`,{className:`space-y-2`,children:[n.artifacts.map(e=>(0,B.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl border border-border/60 p-2`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 rounded-lg px-2 py-1 text-left hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:()=>o(e.path,e.label??e.path),children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-2 truncate text-sm font-medium`,children:[(0,B.jsx)(re,{className:`h-3.5 w-3.5 shrink-0`}),e.label??e.path]}),(0,B.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.path})]}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsWorkUnlinkArtifact`),onClick:()=>void A(()=>c.unlinkArtifact.mutateAsync({workItemId:n.id,artifactLinkId:e.id})),children:(0,B.jsx)(ke,{className:`h-4 w-4`})})]},e.id)),n.artifacts.length?null:(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:M(`projectsWorkNoArtifacts`)})]}),(0,B.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-[1fr_12rem_auto]`,children:[(0,B.jsx)(t,{value:b,onChange:e=>x(e.target.value),placeholder:M(`projectsWorkArtifactPath`)}),(0,B.jsx)(t,{value:C,onChange:e=>w(e.target.value),placeholder:M(`projectsWorkArtifactLabel`)}),(0,B.jsxs)(a,{variant:`outline`,onClick:()=>void j(),disabled:!b.trim()||c.linkArtifact.isPending,children:[(0,B.jsx)(ee,{className:`mr-2 h-4 w-4`}),M(`projectsWorkLinkArtifact`)]})]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`mb-3 text-sm font-semibold`,children:M(`projectsActivity`)}),(0,B.jsx)(`ol`,{className:`space-y-2`,children:e.map(e=>(0,B.jsxs)(`li`,{className:`rounded-xl bg-muted/35 px-3 py-2 text-sm`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:M(`projectsWorkActivity_${e.type}`)}),(0,B.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[e.actor.kind,` ·`,` `,new Date(e.createdAt).toLocaleString()]})]},e.id))})]})]}),(0,B.jsxs)(_,{className:`shrink-0 border-t border-border/60 bg-background px-5 py-4 sm:px-7`,children:[n.deletedAt?(0,B.jsx)(a,{variant:`outline`,onClick:()=>void A(()=>c.restoreItem.mutateAsync(n.id)),children:M(`projectsRestore`)}):(0,B.jsxs)(a,{variant:`destructive`,onClick:()=>k(!0),children:[(0,B.jsx)(se,{className:`mr-2 h-4 w-4`}),M(`projectsDelete`)]}),(0,B.jsx)(a,{onClick:()=>void te(),disabled:!l.trim()||c.updateItem.isPending,children:M(`save`)})]}),(0,B.jsx)(be,{open:E,onOpenChange:k,title:M(`projectsDeleteWorkItem`),description:M(`projectsDeleteWorkItemDescription`),confirmLabel:M(`projectsDelete`),variant:`destructive`,onCancel:()=>k(!1),onConfirm:()=>void A(()=>c.deleteItem.mutateAsync(n.id),r)})]})}var Je=[`backlog`,`unstarted`,`started`,`completed`,`canceled`];function Ye({open:e,onOpenChange:n,projectId:r,states:o}){let s=X(r),c=Le(o),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(`unstarted`),[p,m]=(0,z.useState)(null),[h,g]=(0,z.useState)(``),_=async e=>{try{await e()}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkActionFailed`))}},v=async()=>{l.trim()&&await _(async()=>{await s.createState.mutateAsync({name:l.trim(),category:d}),u(``)})},y=async(e,t)=>{let n=c[e],r=c[e+t];!n||!r||await _(async()=>{await s.updateState.mutateAsync({stateId:n.id,patch:{position:r.position}}),await s.updateState.mutateAsync({stateId:r.id,patch:{position:n.position}})})};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(ge,{open:e,onOpenChange:n,children:(0,B.jsxs)(pe,{className:`max-h-[85vh] overflow-y-auto sm:max-w-2xl`,children:[(0,B.jsxs)(de,{children:[(0,B.jsx)(me,{children:M(`projectsWorkStateSettings`)}),(0,B.jsx)(he,{children:M(`projectsWorkStateSettingsDescription`)})]}),(0,B.jsx)(`div`,{className:`space-y-2`,children:c.map((e,n)=>(0,B.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/60 p-3 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,B.jsx)(t,{"aria-label":M(`projectsWorkStateName`),defaultValue:$(e.name),onBlur:t=>{let n=t.currentTarget.value.trim();n&&n!==$(e.name)&&_(()=>s.updateState.mutateAsync({stateId:e.id,patch:{name:n}}))}}),(0,B.jsxs)(R,{value:e.category,onValueChange:t=>void _(()=>s.updateState.mutateAsync({stateId:e.id,patch:{category:t}})),children:[(0,B.jsx)(F,{"aria-label":M(`projectsWorkStateCategory`),children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:Je.map(e=>(0,B.jsx)(L,{value:e,children:M(`projectsWorkCategory_${e}`)},e))})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-end gap-1`,children:[(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsMoveUp`),disabled:n===0,onClick:()=>void y(n,-1),children:(0,B.jsx)(te,{className:`h-4 w-4`})}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsMoveDown`),disabled:n===c.length-1,onClick:()=>void y(n,1),children:(0,B.jsx)(j,{className:`h-4 w-4`})}),(0,B.jsx)(a,{size:`icon`,variant:`ghost`,"aria-label":M(`projectsDeleteState`),disabled:c.length<=1,onClick:()=>{m(e),g(``)},children:(0,B.jsx)(se,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground sm:col-span-3`,children:[(0,B.jsx)(`input`,{type:`radio`,name:`default-state`,checked:e.isDefault,onChange:()=>void _(()=>s.updateState.mutateAsync({stateId:e.id,patch:{isDefault:!0}}))}),M(`projectsWorkDefaultState`)]})]},e.id))}),(0,B.jsxs)(`div`,{className:`grid gap-2 border-t border-border/60 pt-4 sm:grid-cols-[1fr_11rem_auto]`,children:[(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value),placeholder:M(`projectsWorkNewState`)}),(0,B.jsxs)(R,{value:d,onValueChange:e=>f(e),children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{})}),(0,B.jsx)(I,{children:Je.map(e=>(0,B.jsx)(L,{value:e,children:M(`projectsWorkCategory_${e}`)},e))})]}),(0,B.jsxs)(a,{onClick:()=>void v(),disabled:!l.trim()||s.createState.isPending,children:[(0,B.jsx)(ae,{className:`mr-2 h-4 w-4`}),M(`projectsAdd`)]})]})]})}),(0,B.jsx)(ge,{open:!!p,onOpenChange:e=>{e||m(null)},children:(0,B.jsxs)(pe,{children:[(0,B.jsxs)(de,{children:[(0,B.jsx)(me,{children:M(`projectsDeleteState`)}),(0,B.jsx)(he,{children:M(`projectsDeleteStateDescription`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:M(`projectsWorkStateMigration`)}),(0,B.jsxs)(R,{value:h,onValueChange:g,children:[(0,B.jsx)(F,{children:(0,B.jsx)(P,{placeholder:M(`projectsWorkStateMigrationOptional`)})}),(0,B.jsx)(I,{children:c.filter(e=>e.id!==p?.id).map(e=>(0,B.jsx)(L,{value:e.id,children:$(e.name)},e.id))})]})]}),(0,B.jsxs)(fe,{children:[(0,B.jsx)(a,{variant:`outline`,onClick:()=>m(null),children:M(`cancel`)}),(0,B.jsx)(a,{variant:`destructive`,onClick:()=>{p&&_(async()=>{await s.deleteState.mutateAsync({stateId:p.id,migrateToStateId:h||null}),m(null)})},children:M(`projectsDelete`)})]})]})})]})}function Xe({startedProgress:e,state:t}){if(t.category===`backlog`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`backlog`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,B.jsx)(ne,{className:`h-4 w-4`})});if(t.category===`unstarted`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`unstarted`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground`,children:(0,B.jsx)(Ee,{className:`h-4 w-4`,strokeWidth:2})});if(t.category===`completed`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`completed`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-emerald-600 dark:text-emerald-400`,children:(0,B.jsx)(E,{className:`h-4 w-4`,strokeWidth:2.25})});if(t.category===`canceled`)return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`canceled`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground/65`,children:(0,B.jsx)(Te,{className:`h-4 w-4`})});let n=Math.round((e??.5)*100),r=n>=67?`text-emerald-600 dark:text-emerald-400`:n>=40?`text-orange-500 dark:text-orange-400`:`text-amber-500 dark:text-amber-400`;return(0,B.jsx)(`span`,{"aria-hidden":`true`,"data-state-visual":`started`,className:`inline-flex h-4 w-4 shrink-0 items-center justify-center ${r}`,children:(0,B.jsxs)(`svg`,{className:`h-4 w-4`,viewBox:`0 0 16 16`,fill:`none`,children:[(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,stroke:`currentColor`,strokeWidth:`1.75`,opacity:`0.22`}),(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`,pathLength:`100`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeDasharray:`${n} ${100-n}`,transform:`rotate(-90 8 8)`})]})})}function Ze({item:e,onOpen:t}){return(0,B.jsxs)(`button`,{type:`button`,className:`w-full rounded-xl border border-border/50 bg-card p-3 text-left text-sm shadow-sm transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,onClick:t,children:[(0,B.jsx)(`span`,{className:`block font-medium`,children:e.title}),(0,B.jsxs)(`span`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:$(e.state.name)}),e.attention===`none`?null:(0,B.jsx)(`span`,{className:`rounded-full bg-amber-500/15 px-2 py-0.5 text-amber-700 dark:text-amber-300`,children:M(`projectsWorkAttention_${e.attention}`)}),e.deletedAt?(0,B.jsx)(`span`,{children:M(`projectsDeleted`)}):null]})]})}function Qe({hasNextPage:e,isError:t,isFetchingNextPage:n,isLoading:r,items:i,onLoadMore:o,onOpenWorkItem:s}){return r?(0,B.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:M(`projectsLoading`)}):t?(0,B.jsx)(`p`,{className:`py-3 text-xs text-destructive`,children:M(`projectsLoadFailed`)}):(0,B.jsxs)(B.Fragment,{children:[i.length?i.map(e=>(0,B.jsx)(Ze,{item:e,onOpen:()=>s(e.id)},e.id)):(0,B.jsx)(`p`,{className:`py-3 text-xs text-muted-foreground`,children:M(`projectsNoData`)}),e?(0,B.jsx)(a,{type:`button`,variant:`ghost`,size:`sm`,className:`w-full`,disabled:n,onClick:o,children:M(n?`projectsLoading`:`projectsWorkLoadMore`)}):null]})}function $e({includeDeleted:e,onOpenWorkItem:t,state:n,startedProgress:r,view:i}){let[a,o]=(0,z.useState)(!1),s=je(n.projectId,{stateId:n.id,includeDeleted:e,limit:20}),c=s.data?.pages.flatMap(e=>e.items)??[],l=s.data?.pages[0]?.total;return(0,B.jsxs)(`section`,{className:i===`board`?`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`:`min-w-0`,"aria-label":$(n.name),children:[(0,B.jsxs)(`button`,{type:`button`,className:`flex w-full shrink-0 items-center gap-2 rounded-lg px-1 py-2 text-left transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-expanded":!a,onClick:()=>o(e=>!e),children:[a?(0,B.jsx)(A,{className:`h-4 w-4 shrink-0`}):(0,B.jsx)(j,{className:`h-4 w-4 shrink-0`}),(0,B.jsx)(Xe,{state:n,startedProgress:r}),(0,B.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold`,children:$(n.name)}),(0,B.jsx)(`span`,{className:`ml-0.5 shrink-0 text-xs font-medium tabular-nums text-muted-foreground`,children:l??`…`})]}),a?null:(0,B.jsx)(`div`,{className:i===`board`?`min-h-0 flex-1 space-y-2 overflow-y-auto px-1 pb-3`:`space-y-2 px-1 pb-3`,children:(0,B.jsx)(Qe,{hasNextPage:s.hasNextPage,isError:s.isError,isFetchingNextPage:s.isFetchingNextPage,isLoading:s.isLoading,items:c,onLoadMore:()=>void s.fetchNextPage(),onOpenWorkItem:t})})]})}function et({onOpenWorkItem:e,projectId:n}){let[r,o]=(0,z.useState)(`list`),[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1);Z(n);let p=Ne(n),m=X(n),h=async()=>{if(l.trim())try{let t=await m.createItem.mutateAsync({title:l.trim()});u(``),e(t.id)}catch(e){i.error(e instanceof Error?e.message:M(`projectsWorkItemCreateFailed`))}};if(p.isLoading)return(0,B.jsx)(`div`,{className:`rounded-xl border border-border/60 p-5 text-sm text-muted-foreground`,children:M(`projectsLoading`)});if(p.isError)return(0,B.jsx)(`div`,{className:`rounded-xl border border-destructive/40 p-5 text-sm text-destructive`,children:M(`projectsLoadFailed`)});let g=Le(p.data??[]),_=ze(p.data??[]),v=g.filter(e=>e.category===`started`),y=new Map(v.map((e,t)=>[e.id,(t+1)/(v.length+1)]));return(0,B.jsxs)(`section`,{"aria-label":M(`projectsWork`),className:`min-w-0 space-y-4`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-[16rem] flex-1 gap-2`,children:[(0,B.jsx)(t,{value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()},placeholder:M(`projectsWorkNewItem`)}),(0,B.jsxs)(a,{onClick:()=>void h(),disabled:!l.trim()||m.createItem.isPending,children:[(0,B.jsx)(ae,{className:`mr-2 h-4 w-4`}),M(`projectsCreate`)]})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-1 rounded-xl bg-muted/40 p-1`,role:`group`,"aria-label":M(`projectsWorkViews`),children:[(0,B.jsxs)(a,{size:`sm`,variant:r===`list`?`secondary`:`ghost`,"aria-pressed":r===`list`,onClick:()=>o(`list`),children:[(0,B.jsx)(Oe,{className:`mr-2 h-4 w-4`}),M(`projectsWorkList`)]}),(0,B.jsxs)(a,{size:`sm`,variant:r===`board`?`secondary`:`ghost`,"aria-pressed":r===`board`,onClick:()=>o(`board`),children:[(0,B.jsx)(De,{className:`mr-2 h-4 w-4`}),M(`projectsWorkBoard`)]})]}),(0,B.jsxs)(a,{variant:`outline`,size:`sm`,onClick:()=>f(!0),children:[(0,B.jsx)(oe,{className:`mr-2 h-4 w-4`}),M(`projectsWorkStateSettings`)]})]}),(0,B.jsxs)(`label`,{className:`flex w-fit items-center gap-2 text-xs text-muted-foreground`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),M(`projectsWorkShowDeleted`)]}),r===`list`?(0,B.jsx)(`div`,{className:`space-y-3`,children:_.map(t=>(0,B.jsx)($e,{state:t,startedProgress:y.get(t.id)??null,view:r,includeDeleted:s,onOpenWorkItem:e},t.id))}):null,r===`board`?(0,B.jsx)(`div`,{className:`grid h-[calc(100dvh-17rem)] min-h-[28rem] max-h-[52rem] min-w-0 auto-cols-[minmax(18rem,1fr)] grid-flow-col items-stretch gap-3 overflow-x-auto overflow-y-hidden pb-2`,children:g.map(t=>(0,B.jsx)($e,{state:t,startedProgress:y.get(t.id)??null,view:r,includeDeleted:s,onOpenWorkItem:e},t.id))}):null,(0,B.jsx)(Ye,{open:d,onOpenChange:f,projectId:n,states:g})]})}var tt=e=>[`project-agreement`,e],nt=e=>[`project-skills`,e];function rt(e){return r({queryKey:tt(e??``),enabled:!!e,queryFn:async()=>await n.projects.getAgreement(e)})}function it(e){return r({queryKey:nt(e??``),enabled:!!e,queryFn:async()=>await n.projects.listProjectSkills(e)})}function at(e){return e===`overview`||e===`work`||e===`artifacts`||e===`skills`||e===`agreement`}var ot=[`overview`,`work`,`artifacts`,`skills`,`agreement`];function st({resourceId:e,resourceWorkId:t}={}){let n=w(),{projectId:r,tab:i}=f(),a=e??r,[o,s]=(0,z.useState)(`overview`),c=e?o:i,l=d(),{state:u}=p(),_=g(),{isMobile:v}=ie(),y=h(),b=e=>n.pageResourceManager.open(S(`project-work`,JSON.stringify([a,e]),e),`default`,l),x=y.data?.projects??[],C=x.find(e=>e.id===a)??null,T=at(c)?c:null,E=rt(T===`agreement`?C?.id??null:null),D=it(T===`skills`?C?.id??null:null);if(y.isLoading)return(0,B.jsx)(`main`,{className:`flex h-full items-center justify-center p-6 text-sm text-muted-foreground`,children:M(`projectsLoading`)});if(y.isError)return(0,B.jsxs)(`main`,{className:`p-6 text-sm text-destructive`,children:[M(`projectsLoadFailed`),`: `,y.error.message]});if(e&&!C)return(0,B.jsx)(`p`,{role:`alert`,className:`p-4`,children:M(`resourceNotFound`)});if(!x.length)return(0,B.jsx)(`main`,{className:`p-6 text-sm text-muted-foreground`,children:M(`projectsEmpty`)});if(!C||!T)return(0,B.jsxs)(`main`,{className:`space-y-3 p-4 text-sm text-muted-foreground sm:p-6`,children:[(0,B.jsx)(`label`,{htmlFor:`project-home-selection`,className:`block font-medium text-foreground`,children:M(`projectsChoose`)}),(0,B.jsxs)(`select`,{id:`project-home-selection`,value:``,onChange:e=>l(`/projects/${encodeURIComponent(e.target.value)}/overview`,{state:u}),className:`min-h-11 w-full rounded-xl border border-border bg-card px-3 text-base text-foreground`,children:[(0,B.jsx)(`option`,{value:``,disabled:!0,children:M(`projectsChoose`)}),x.map(e=>(0,B.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]});let O=(e,t)=>_.chatThreadManager.openFilePreview({path:e,label:t,viewMode:`preview`,previewViewer:`rendered`});return t?(0,B.jsx)(Ke,{embedded:!0,projectId:C.id,projectRoot:C.rootPath,workItemId:t,onOpenChange:e=>{e||l(`/projects/${encodeURIComponent(C.id)}/work`)},onOpenArtifact:O}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`main`,{className:`h-full min-w-0 flex-1 overflow-y-auto p-3 sm:p-4 md:p-6`,children:(0,B.jsxs)(`div`,{className:`mx-auto max-w-6xl space-y-4`,children:[(0,B.jsxs)(`header`,{className:`rounded-2xl border border-border/60 bg-card p-3 sm:p-4`,children:[(0,B.jsx)(`h1`,{className:`text-lg font-semibold`,children:C.name}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-xs text-muted-foreground`,children:C.rootPath})]}),(0,B.jsxs)(ye,{value:T,onValueChange:t=>e&&at(t)?s(t):l(`/projects/${encodeURIComponent(C.id)}/${t}`,{state:u}),children:[(0,B.jsx)(`div`,{className:`min-w-0 overflow-x-auto pb-1`,children:(0,B.jsx)(ve,{className:`w-max`,children:ot.map(e=>(0,B.jsx)(_e,{value:e,children:M(`projects${e[0].toUpperCase()}${e.slice(1)}`)},e))})}),(0,B.jsx)(N,{value:`overview`,className:`mt-4`,children:(0,B.jsx)(We,{projectId:C.id,onOpenArtifact:(e,t)=>O(Q(C.rootPath,e),t),onOpenWorkItem:b})}),(0,B.jsx)(N,{value:`work`,className:`mt-4`,children:(0,B.jsx)(et,{projectId:C.id,onOpenWorkItem:b})}),(0,B.jsx)(N,{value:`artifacts`,className:`mt-4`,children:(0,B.jsx)(He,{projectId:C.id,onOpenFile:(e,t)=>O(Q(C.rootPath,e),t)})}),(0,B.jsx)(N,{value:`skills`,className:`mt-4`,children:(0,B.jsx)(Ge,{skills:D.data??[],isLoading:D.isLoading,isError:D.isError,onOpen:e=>n.pageResourceManager.open(S(`skill`,e.ref,e.name),`default`,l)})}),(0,B.jsx)(N,{value:`agreement`,className:`mt-4`,children:(0,B.jsx)(Ae,{agreement:E.data,isLoading:E.isLoading,isError:E.isError,onOpenFile:(e,t)=>O(Q(C.rootPath,e),t)})})]})]})}),!e&&(0,B.jsx)(m,{layoutMode:v?`mobile`:`desktop`,sessionKey:null,projectRoot:C.rootPath})]})}export{st as ProjectsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as e}from"./app-presenter-provider-DdD2Q7jZ.js";export{e as RemoteAccessPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{r as t}from"./pwa-Cp7pPvsZ.js";import{Gt as n,Jt as r,Kt as i,Ut as a,Xn as o,Yt as s,Zt as c,dn as l,ln as u,pn as d,qt as f,sn as p,ur as m,xr as h}from"./api-CXWxExzS.js";import{L as g,R as _,Zt as v,ft as y}from"./app-presenter-provider-BB3Xl8b0.js";import{X as b}from"./context-menu-C0qywo73.js";import{i as x}from"./x-waP-WLuT.js";import{t as S}from"./plus-C42o6xrD.js";import{t as C}from"./rotate-cw-CWFIat29.js";import{t as w}from"./save-C1G0ZU-G.js";import{t as T}from"./trash-2-BVQs-0ji.js";import{s as E}from"./i18n-ByVUrt9w.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-BJ-EjmCz.js";import{b as M,t as ee}from"./use-config-M1L4xn8c.js";import{t as te}from"./form-actions-CZxcWXSm.js";var N=e(h(),1),P=m(),F={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},I={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},L={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function R(e){return E(F[e]??`runtimeControlUnavailable`)}function z(e){return E(I[e]??`runtimeControlServiceUnknown`)}function B(e){return E(L[e.environment])}function V(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function H(e){return e?[{action:`start-service`,capability:e.canStartService,label:E(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:E(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:E(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:E(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function U(e){let{busy:t,icon:n}=e;return t?(0,P.jsx)(x,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,P.jsx)(b,{className:`mr-2 h-4 w-4`}):n===`square`?(0,P.jsx)(v,{className:`mr-2 h-4 w-4`}):(0,P.jsx)(C,{className:`mr-2 h-4 w-4`})}function W(){let{busy:e,busyAction:t,controlView:n,errorMessage:i,pendingRestart:a,visibleLifecycle:c,visibleMessage:u,visibleServiceState:m}=p(),h=H(n??void 0),g=async e=>{let t=V(n,e);if(!t?.available){o.error(d(t?.reasonIfUnavailable)??E(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(E(`runtimeControlStopServiceConfirm`))))try{let t=await l.runRuntimeControlAction(e);o.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){o.error(d(n?.canRestartApp.reasonIfUnavailable)??E(`runtimeRestartAppUnavailable`));return}if(window.confirm(E(`runtimeControlRestartAppConfirm`)))try{let e=await l.runRuntimeControlAction(`restart-app`);o.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}};return(0,P.jsx)(r,{title:E(`runtimeControlTitle`),description:E(`runtimeControlDescription`),children:(0,P.jsxs)(f,{children:[(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:z(m)}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n?B(n):E(`runtimeControlLoading`)})]}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:R(c)}),n?.managementHint?(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(n.managementHint)}):null,i&&!e?(0,P.jsx)(`p`,{className:`text-sm text-amber-700`,children:i}):null]}),a?(0,P.jsxs)(`div`,{className:`space-y-3 bg-amber-50/75 p-4 dark:bg-amber-950/20`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:E(`runtimeControlPendingRestartTitle`)}),(0,P.jsx)(`p`,{className:`text-sm text-amber-800`,children:E(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:E(`runtimeControlPendingRestartPaths`)}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,P.jsx)(`span`,{className:`rounded-full bg-background/80 px-2.5 py-1 text-xs text-amber-800 dark:text-amber-300`,children:e},e))})]}):null]}):null,(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:h.map(n=>(0,P.jsxs)(s,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}g(n.action)},disabled:!n.capability.available||e,children:[(0,P.jsx)(U,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),h.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})})}function G(e){let{description:t,title:n}=e;return(0,P.jsx)(y,{tone:`neutral`,title:n,description:t})}function K(e){let{children:t}=e;return(0,P.jsx)(r,{title:E(`runtimePresenceTitle`),description:E(`runtimePresenceDescription`),children:(0,P.jsx)(f,{children:t})})}function q(){let e=u().runtimeControlView?.environment,t=_(e=>e.supported),n=_(e=>e.initialized),r=_(e=>e.busyAction),o=_(e=>e.snapshot);return(0,N.useEffect)(()=>{if(e===`desktop-embedded`){g.start();return}g.markUnsupported()},[e]),e===`desktop-embedded`?(0,P.jsxs)(K,{children:[(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(y,{tone:`neutral`,title:E(`runtimePresenceBehaviorLabel`),description:o?.closeToBackground?E(`runtimePresenceBehaviorBackground`):E(`runtimePresenceBehaviorQuit`),className:`rounded-xl`})}),!n||t&&!o?(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)}):null,o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i,{title:E(`runtimePresenceCloseToBackground`),description:E(`runtimePresenceCloseToBackgroundHelp`),control:(0,P.jsx)(a,{id:`runtime-presence-close-background`,"aria-label":E(`runtimePresenceCloseToBackground`),checked:o.closeToBackground,disabled:r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({closeToBackground:e})}})}),(0,P.jsx)(i,{title:E(`runtimePresenceLaunchAtLogin`),description:o.supportsLaunchAtLogin?E(`runtimePresenceLaunchAtLoginHelp`):o.launchAtLoginReason??E(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,P.jsx)(a,{id:`runtime-presence-launch-login`,"aria-label":E(`runtimePresenceLaunchAtLogin`),checked:o.launchAtLogin,disabled:!o.supportsLaunchAtLogin||r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({launchAtLogin:e})}})})]}):null]}):e===`managed-local-service`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceManagedLocalTitle`),description:E(`runtimePresenceManagedLocalDescription`)})})}):e===`self-hosted-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSelfHostedTitle`),description:E(`runtimePresenceSelfHostedDescription`)})})}):e===`shared-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSharedTitle`),description:E(`runtimePresenceSharedDescription`)})})}):(0,P.jsx)(K,{children:(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)})})}function J(){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(W,{}),(0,P.jsx)(q,{}),(0,P.jsx)(t,{})]})}var Y={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function X(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0}}function Z(){return{agentId:``,match:{channel:``,accountId:``}}}function Q(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Y,configText:JSON.stringify(Y,null,2)}}function ne(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens}}function re(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function ie(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ae(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(ne),bindings:(e.bindings??[]).map(re),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function oe(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),t}function $(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(E(`agentIdRequiredError`).replace(`{index}`,String(t)));return oe(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${E(`duplicateAgentId`)}: ${n[0]}`);let r=e.bindings.map((t,n)=>{let r=t.agentId.trim(),i=t.match.channel.trim(),a=t.match.accountId?.trim()??``,o=t.match.peer?.kind,s=t.match.peer?.id?.trim()??``;if(!r)throw Error(E(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(r))throw Error(`${E(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${r}`);if(!i)throw Error(E(`bindingChannelRequired`).replace(`{index}`,String(n)));let c={agentId:r,match:{channel:i}};if(a&&(c.match.accountId=a),o){if(!s)throw Error(E(`bindingPeerIdRequired`).replace(`{index}`,String(n)));c.match.peer={kind:o,id:s}}return c}),i=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(E(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!i)throw Error(E(`runtimeEntryTypeRequired`).replace(`{id}`,r));if(e[r])throw Error(`${E(`runtimeEntryDuplicate`)}: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(E(`runtimeEntryConfigObjectRequired`).replace(`{id}`,r));return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:i}},bindings:r,session:{dmScope:e.dmScope}}}function se({agents:e,onAddAgent:t,onRemoveAgent:i,onSetDefaultAgent:o,onUpdateAgent:c}){return(0,P.jsx)(r,{title:E(`agentList`),description:E(`agentListHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addAgent`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>c(t,{id:e.target.value}),placeholder:E(`agentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.workspace??``,onChange:e=>c(t,{workspace:e.target.value}),placeholder:E(`workspaceOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.model??``,onChange:e=>c(t,{model:e.target.value}),placeholder:E(`modelOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.runtime??e.engine??``,onChange:e=>c(t,{runtime:e.target.value}),placeholder:E(`engineOverridePlaceholder`)}),(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>c(t,{contextTokens:ie(e.target.value)}),placeholder:E(`contextTokensPlaceholder`)})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,P.jsx)(a,{checked:!!e.default,onCheckedChange:e=>o(t,e)}),(0,P.jsx)(`span`,{children:E(`defaultAgent`)})]}),(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})]})]},`${t}-${e.id}`))})})}function ce({bindings:e,onAddBinding:t,onRemoveBinding:i,onUpdateBinding:a}){return(0,P.jsx)(r,{title:E(`bindings`),description:E(`bindingsHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addBinding`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>{let r=e.match.peer?.kind??``;return(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,P.jsx)(n,{value:e.agentId,onChange:n=>a(t,{...e,agentId:n.target.value}),placeholder:E(`targetAgentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.match.channel,onChange:n=>a(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:E(`channelPlaceholder`)}),(0,P.jsx)(n,{value:e.match.accountId??``,onChange:n=>a(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:E(`accountIdOptionalPlaceholder`)}),(0,P.jsxs)(j,{value:r||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;a(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,P.jsx)(O,{children:(0,P.jsx)(D,{})}),(0,P.jsxs)(k,{children:[(0,P.jsx)(A,{value:`__none__`,children:E(`peerKindOptional`)}),(0,P.jsx)(A,{value:`direct`,children:E(`peerKindDirect`)}),(0,P.jsx)(A,{value:`group`,children:E(`peerKindGroup`)}),(0,P.jsx)(A,{value:`channel`,children:E(`peerKindChannel`)})]})]}),(0,P.jsx)(n,{value:e.match.peer?.id??``,onChange:n=>a(t,{...e,match:{...e.match,peer:r?{kind:r,id:n.target.value}:void 0}}),placeholder:E(`peerIdPlaceholder`)})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})})]},`${t}-${e.agentId}`)})})})}function le({entries:e,onAddEntry:t,onRemoveEntry:i,onUpdateEntry:o}){return(0,P.jsx)(r,{title:E(`runtimeEntries`),description:E(`runtimeEntriesHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addRuntimeEntry`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>o(t,{id:e.target.value}),placeholder:E(`runtimeEntryIdPlaceholder`)}),(0,P.jsx)(n,{value:e.label??``,onChange:e=>o(t,{label:e.target.value}),placeholder:E(`runtimeEntryLabelPlaceholder`)}),(0,P.jsx)(n,{value:e.type,onChange:e=>o(t,{type:e.target.value}),placeholder:E(`runtimeEntryTypePlaceholder`)}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg bg-background/65 px-3 py-2`,children:[(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:E(`enabled`)}),(0,P.jsx)(a,{checked:e.enabled!==!1,onCheckedChange:e=>o(t,{enabled:e})})]})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:E(`runtimeEntryConfigJson`)}),(0,P.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm`,value:e.configText,onChange:e=>o(t,{configText:e.target.value}),spellCheck:!1})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`mr-2 h-4 w-4`}),E(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`))})})}var ue=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function de({companionEnabled:e,defaultContextTokens:t,defaultEngine:o,dmScope:s,onCompanionEnabledChange:c,onDefaultContextTokensChange:l,onDefaultEngineChange:u,onDmScopeChange:d}){return(0,P.jsx)(r,{title:E(`dmScope`),description:E(`dmScopeHelp`),children:(0,P.jsxs)(f,{children:[(0,P.jsx)(i,{title:E(`runtimeCompanionEnabled`),description:E(`runtimeCompanionEnabledHelp`),control:(0,P.jsx)(a,{checked:e,onCheckedChange:c})}),(0,P.jsx)(i,{title:E(`defaultContextTokens`),description:E(`defaultContextTokensHelp`),control:(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>l(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3)),className:`w-36`})}),(0,P.jsx)(i,{title:E(`defaultEngine`),description:E(`defaultEngineHelp`),control:(0,P.jsx)(n,{value:o,onChange:e=>u(e.target.value),placeholder:E(`defaultEnginePlaceholder`),className:`w-56`})}),(0,P.jsx)(i,{title:E(`dmScope`),control:(0,P.jsxs)(j,{value:s,onValueChange:e=>d(e),children:[(0,P.jsx)(O,{className:`w-56`,children:(0,P.jsx)(D,{})}),(0,P.jsx)(k,{children:ue.map(e=>(0,P.jsx)(A,{value:e.value,children:E(e.labelKey)},e.value))})]})})]})})}function fe({config:e,updateRuntime:t}){let n=(0,N.useMemo)(()=>ae(e),[e]),[r,i]=(0,N.useState)(n.agents),[a,l]=(0,N.useState)(n.bindings),[u,d]=(0,N.useState)(n.runtimeEntries),[f,p]=(0,N.useState)(n.dmScope),[m,h]=(0,N.useState)(n.companionEnabled),[g,_]=(0,N.useState)(n.defaultContextTokens),[v,y]=(0,N.useState)(n.defaultEngine),b=(0,N.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,P.jsxs)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:[(0,P.jsx)(J,{}),(0,P.jsx)(de,{companionEnabled:m,dmScope:f,defaultContextTokens:g,defaultEngine:v,onCompanionEnabledChange:h,onDmScopeChange:p,onDefaultContextTokensChange:_,onDefaultEngineChange:y}),(0,P.jsx)(le,{entries:u,onUpdateEntry:(e,t)=>d(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>d(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>d(e=>[...e,Q()])}),(0,P.jsx)(se,{agents:r,onUpdateAgent:(e,t)=>{i(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>i(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>i(e=>[...e,X()]),onSetDefaultAgent:(e,t)=>i(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,P.jsx)(ce,{bindings:a,onUpdateBinding:(e,t)=>{l(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>l(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>l(e=>[...e,Z()])}),(0,P.jsx)(te,{children:(0,P.jsxs)(s,{type:`button`,size:`sm`,onClick:()=>{try{let e=$({companionEnabled:m,agents:r,bindings:a,runtimeEntries:u,dmScope:f,defaultContextTokens:g,defaultEngine:v,knownAgentIds:b});t.mutate({data:e})}catch(e){o.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,P.jsx)(w,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?E(`saving`):E(`saveRuntimeSettings`)]})})]})}function pe(){let{data:e,isLoading:t}=ee(),n=M();return t||!e?(0,P.jsx)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:(0,P.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:E(`runtimeLoading`)})}):(0,P.jsx)(fe,{config:e,updateRuntime:n})}export{pe as RuntimeConfig};
|
|
1
|
+
import{i as e}from"./chunk-DF37yw5_.js";import{r as t}from"./pwa-Cp7pPvsZ.js";import{Gt as n,Jt as r,Kt as i,Ut as a,Xn as o,Yt as s,Zt as c,dn as l,ln as u,pn as d,qt as f,sn as p,ur as m,xr as h}from"./api-CXWxExzS.js";import{L as g,R as _,Zt as v,ft as y}from"./app-presenter-provider-DdD2Q7jZ.js";import{X as b}from"./context-menu-C0qywo73.js";import{i as x}from"./x-waP-WLuT.js";import{t as S}from"./plus-C42o6xrD.js";import{t as C}from"./rotate-cw-CWFIat29.js";import{t as w}from"./save-C1G0ZU-G.js";import{t as T}from"./trash-2-BVQs-0ji.js";import{s as E}from"./i18n-ByVUrt9w.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-BJ-EjmCz.js";import{b as M,t as ee}from"./use-config-M1L4xn8c.js";import{t as te}from"./form-actions-CZxcWXSm.js";var N=e(h(),1),P=m(),F={healthy:`runtimeControlHealthy`,"starting-service":`runtimeControlStartingService`,"restarting-service":`runtimeControlRestartingService`,"stopping-service":`runtimeControlStoppingService`,"restarting-app":`runtimeControlRestartingApp`,recovering:`runtimeControlRecovering`,failed:`runtimeControlFailed`},I={running:`runtimeControlServiceRunning`,stopped:`runtimeControlServiceStopped`,starting:`runtimeControlServiceStarting`,stopping:`runtimeControlServiceStopping`,restarting:`runtimeControlServiceRestarting`},L={"desktop-embedded":`runtimeControlEnvironmentDesktop`,"managed-local-service":`runtimeControlEnvironmentManagedService`,"self-hosted-web":`runtimeControlEnvironmentSelfHosted`,"shared-web":`runtimeControlEnvironmentSharedWeb`};function R(e){return E(F[e]??`runtimeControlUnavailable`)}function z(e){return E(I[e]??`runtimeControlServiceUnknown`)}function B(e){return E(L[e.environment])}function V(e,t){return t===`start-service`?e?.canStartService:t===`stop-service`?e?.canStopService:e?.canRestartService}function H(e){return e?[{action:`start-service`,capability:e.canStartService,label:E(`runtimeControlStartService`),icon:`play`},{action:`restart-service`,capability:e.canRestartService,label:E(`runtimeControlRestartService`),icon:`rotate`},{action:`stop-service`,capability:e.canStopService,label:E(`runtimeControlStopService`),icon:`square`,variant:`destructive`},{action:`restart-app`,capability:e.canRestartApp,label:E(`runtimeControlRestartApp`),icon:`rotate`,variant:`secondary`}].filter(e=>e.capability.available||!!e.capability.reasonIfUnavailable):[]}function U(e){let{busy:t,icon:n}=e;return t?(0,P.jsx)(x,{className:`mr-2 h-4 w-4 animate-spin`}):n===`play`?(0,P.jsx)(b,{className:`mr-2 h-4 w-4`}):n===`square`?(0,P.jsx)(v,{className:`mr-2 h-4 w-4`}):(0,P.jsx)(C,{className:`mr-2 h-4 w-4`})}function W(){let{busy:e,busyAction:t,controlView:n,errorMessage:i,pendingRestart:a,visibleLifecycle:c,visibleMessage:u,visibleServiceState:m}=p(),h=H(n??void 0),g=async e=>{let t=V(n,e);if(!t?.available){o.error(d(t?.reasonIfUnavailable)??E(`runtimeControlLoadFailed`));return}if(!(e===`stop-service`&&t.requiresConfirmation&&!window.confirm(E(`runtimeControlStopServiceConfirm`))))try{let t=await l.runRuntimeControlAction(e);o.success(d(t.message)??t.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}},_=async()=>{if(!n?.canRestartApp.available){o.error(d(n?.canRestartApp.reasonIfUnavailable)??E(`runtimeRestartAppUnavailable`));return}if(window.confirm(E(`runtimeControlRestartAppConfirm`)))try{let e=await l.runRuntimeControlAction(`restart-app`);o.success(d(e.message)??e.message)}catch(e){let t=e instanceof Error?e.message:E(`runtimeControlActionFailed`);o.error(`${E(`runtimeControlActionFailed`)}: ${t}`)}};return(0,P.jsx)(r,{title:E(`runtimeControlTitle`),description:E(`runtimeControlDescription`),children:(0,P.jsxs)(f,{children:[(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-center md:justify-between`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:z(m)}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n?B(n):E(`runtimeControlLoading`)})]}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:u}),(0,P.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:R(c)}),n?.managementHint?(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(n.managementHint)}):null,i&&!e?(0,P.jsx)(`p`,{className:`text-sm text-amber-700`,children:i}):null]}),a?(0,P.jsxs)(`div`,{className:`space-y-3 bg-amber-50/75 p-4 dark:bg-amber-950/20`,children:[(0,P.jsx)(`div`,{className:`text-sm font-medium text-amber-900`,children:E(`runtimeControlPendingRestartTitle`)}),(0,P.jsx)(`p`,{className:`text-sm text-amber-800`,children:E(`runtimeControlPendingRestartDescription`)}),a.changedPaths.length>0?(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-[0.08em] text-amber-700`,children:E(`runtimeControlPendingRestartPaths`)}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a.changedPaths.map(e=>(0,P.jsx)(`span`,{className:`rounded-full bg-background/80 px-2.5 py-1 text-xs text-amber-800 dark:text-amber-300`,children:e},e))})]}):null]}):null,(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsx)(`div`,{className:`flex flex-col gap-3 md:flex-row md:flex-wrap`,children:h.map(n=>(0,P.jsxs)(s,{type:`button`,variant:n.variant??`default`,onClick:()=>{if(n.action===`restart-app`){_();return}g(n.action)},disabled:!n.capability.available||e,children:[(0,P.jsx)(U,{icon:n.icon,busy:t===n.action}),n.label]},n.action))}),h.filter(e=>!e.capability.available&&e.capability.reasonIfUnavailable).map(e=>(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(e.capability.reasonIfUnavailable)},`${e.action}-reason`))]})]})})}function G(e){let{description:t,title:n}=e;return(0,P.jsx)(y,{tone:`neutral`,title:n,description:t})}function K(e){let{children:t}=e;return(0,P.jsx)(r,{title:E(`runtimePresenceTitle`),description:E(`runtimePresenceDescription`),children:(0,P.jsx)(f,{children:t})})}function q(){let e=u().runtimeControlView?.environment,t=_(e=>e.supported),n=_(e=>e.initialized),r=_(e=>e.busyAction),o=_(e=>e.snapshot);return(0,N.useEffect)(()=>{if(e===`desktop-embedded`){g.start();return}g.markUnsupported()},[e]),e===`desktop-embedded`?(0,P.jsxs)(K,{children:[(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(y,{tone:`neutral`,title:E(`runtimePresenceBehaviorLabel`),description:o?.closeToBackground?E(`runtimePresenceBehaviorBackground`):E(`runtimePresenceBehaviorQuit`),className:`rounded-xl`})}),!n||t&&!o?(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)}):null,o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(i,{title:E(`runtimePresenceCloseToBackground`),description:E(`runtimePresenceCloseToBackgroundHelp`),control:(0,P.jsx)(a,{id:`runtime-presence-close-background`,"aria-label":E(`runtimePresenceCloseToBackground`),checked:o.closeToBackground,disabled:r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({closeToBackground:e})}})}),(0,P.jsx)(i,{title:E(`runtimePresenceLaunchAtLogin`),description:o.supportsLaunchAtLogin?E(`runtimePresenceLaunchAtLoginHelp`):o.launchAtLoginReason??E(`runtimePresenceLaunchAtLoginUnavailable`),control:(0,P.jsx)(a,{id:`runtime-presence-launch-login`,"aria-label":E(`runtimePresenceLaunchAtLogin`),checked:o.launchAtLogin,disabled:!o.supportsLaunchAtLogin||r===`saving-preferences`,onCheckedChange:e=>{g.updatePreferences({launchAtLogin:e})}})})]}):null]}):e===`managed-local-service`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceManagedLocalTitle`),description:E(`runtimePresenceManagedLocalDescription`)})})}):e===`self-hosted-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSelfHostedTitle`),description:E(`runtimePresenceSelfHostedDescription`)})})}):e===`shared-web`?(0,P.jsx)(K,{children:(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(G,{title:E(`runtimePresenceSharedTitle`),description:E(`runtimePresenceSharedDescription`)})})}):(0,P.jsx)(K,{children:(0,P.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:E(`runtimePresenceLoading`)})})}function J(){return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(W,{}),(0,P.jsx)(q,{}),(0,P.jsx)(t,{})]})}var Y={wireDialect:`acp`,processScope:`per-session`,command:``,args:[`acp`],env:{},cwd:``,startupTimeoutMs:8e3,probeTimeoutMs:3e3,requestTimeoutMs:12e4};function X(){return{id:``,default:!1,workspace:``,model:``,runtime:``,contextTokens:void 0}}function Z(){return{agentId:``,match:{channel:``,accountId:``}}}function Q(){return{id:``,enabled:!0,label:``,type:`narp-stdio`,config:Y,configText:JSON.stringify(Y,null,2)}}function ne(e){return{id:e.id??``,default:!!e.default,displayName:e.displayName??``,description:e.description??``,avatar:e.avatar??``,workspace:e.workspace??``,model:e.model??``,runtime:e.runtime??e.engine??``,contextTokens:e.contextTokens}}function re(e){return{agentId:e.agentId??``,match:{channel:e.match?.channel??``,accountId:e.match?.accountId??``,peer:e.match?.peer?{kind:e.match.peer.kind,id:e.match.peer.id}:void 0}}}function ie(e){let t=e.trim();if(!t)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ae(e){return{companionEnabled:e.companion?.enabled===!0,agents:(e.agents.list??[]).map(ne),bindings:(e.bindings??[]).map(re),runtimeEntries:Object.entries(e.agents.runtimes?.entries??{}).map(([e,t])=>({id:e,enabled:t.enabled!==!1,label:t.label??``,type:t.type,config:t.config??{},configText:JSON.stringify(t.config??{},null,2)})),dmScope:e.session?.dmScope??`per-channel-peer`,defaultContextTokens:e.agents.defaults.contextTokens??2e5,defaultEngine:e.agents.defaults.engine??`native`}}function oe(e){let t={id:e.id.trim()};e.default&&(t.default=!0),e.displayName?.trim()&&(t.displayName=e.displayName.trim()),e.description?.trim()&&(t.description=e.description.trim()),e.avatar?.trim()&&(t.avatar=e.avatar.trim()),e.workspace?.trim()&&(t.workspace=e.workspace.trim()),e.model?.trim()&&(t.model=e.model.trim());let n=e.runtime?.trim()??e.engine?.trim();return n&&(t.engine=n),typeof e.contextTokens==`number`&&(t.contextTokens=Math.max(1e3,e.contextTokens)),t}function $(e){let t=e.agents.map((e,t)=>{if(!e.id.trim())throw Error(E(`agentIdRequiredError`).replace(`{index}`,String(t)));return oe(e)}),n=t.map(e=>e.id).filter((e,t,n)=>n.indexOf(e)!==t);if(n.length>0)throw Error(`${E(`duplicateAgentId`)}: ${n[0]}`);let r=e.bindings.map((t,n)=>{let r=t.agentId.trim(),i=t.match.channel.trim(),a=t.match.accountId?.trim()??``,o=t.match.peer?.kind,s=t.match.peer?.id?.trim()??``;if(!r)throw Error(E(`bindingAgentIdRequired`).replace(`{index}`,String(n)));if(!e.knownAgentIds.has(r))throw Error(`${E(`bindingAgentIdNotFound`).replace(`{index}`,String(n))}: ${r}`);if(!i)throw Error(E(`bindingChannelRequired`).replace(`{index}`,String(n)));let c={agentId:r,match:{channel:i}};if(a&&(c.match.accountId=a),o){if(!s)throw Error(E(`bindingPeerIdRequired`).replace(`{index}`,String(n)));c.match.peer={kind:o,id:s}}return c}),i=e.runtimeEntries.reduce((e,t,n)=>{let r=t.id.trim(),i=t.type.trim();if(!r)throw Error(E(`runtimeEntryIdRequired`).replace(`{index}`,String(n)));if(!i)throw Error(E(`runtimeEntryTypeRequired`).replace(`{id}`,r));if(e[r])throw Error(`${E(`runtimeEntryDuplicate`)}: ${r}`);let a=t.configText.trim()?JSON.parse(t.configText):{};if(a&&(typeof a!=`object`||Array.isArray(a)))throw Error(E(`runtimeEntryConfigObjectRequired`).replace(`{id}`,r));return e[r]={enabled:t.enabled!==!1,...t.label?.trim()?{label:t.label.trim()}:{},type:i,config:a??{}},e},{});return{companion:{enabled:e.companionEnabled},agents:{defaults:{contextTokens:Math.max(1e3,e.defaultContextTokens),engine:e.defaultEngine.trim()||`native`},list:t,runtimes:{entries:i}},bindings:r,session:{dmScope:e.dmScope}}}function se({agents:e,onAddAgent:t,onRemoveAgent:i,onSetDefaultAgent:o,onUpdateAgent:c}){return(0,P.jsx)(r,{title:E(`agentList`),description:E(`agentListHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addAgent`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>c(t,{id:e.target.value}),placeholder:E(`agentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.workspace??``,onChange:e=>c(t,{workspace:e.target.value}),placeholder:E(`workspaceOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.model??``,onChange:e=>c(t,{model:e.target.value}),placeholder:E(`modelOverridePlaceholder`)}),(0,P.jsx)(n,{value:e.runtime??e.engine??``,onChange:e=>c(t,{runtime:e.target.value}),placeholder:E(`engineOverridePlaceholder`)}),(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:e.contextTokens??``,onChange:e=>c(t,{contextTokens:ie(e.target.value)}),placeholder:E(`contextTokensPlaceholder`)})]}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,P.jsx)(a,{checked:!!e.default,onCheckedChange:e=>o(t,e)}),(0,P.jsx)(`span`,{children:E(`defaultAgent`)})]}),(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})]})]},`${t}-${e.id}`))})})}function ce({bindings:e,onAddBinding:t,onRemoveBinding:i,onUpdateBinding:a}){return(0,P.jsx)(r,{title:E(`bindings`),description:E(`bindingsHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addBinding`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>{let r=e.match.peer?.kind??``;return(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3`,children:[(0,P.jsx)(n,{value:e.agentId,onChange:n=>a(t,{...e,agentId:n.target.value}),placeholder:E(`targetAgentIdPlaceholder`)}),(0,P.jsx)(n,{value:e.match.channel,onChange:n=>a(t,{...e,match:{...e.match,channel:n.target.value}}),placeholder:E(`channelPlaceholder`)}),(0,P.jsx)(n,{value:e.match.accountId??``,onChange:n=>a(t,{...e,match:{...e.match,accountId:n.target.value}}),placeholder:E(`accountIdOptionalPlaceholder`)}),(0,P.jsxs)(j,{value:r||`__none__`,onValueChange:n=>{let r=n===`__none__`?``:n;a(t,r?{...e,match:{...e.match,peer:{kind:r,id:e.match.peer?.id??``}}}:{...e,match:{...e.match,peer:void 0}})},children:[(0,P.jsx)(O,{children:(0,P.jsx)(D,{})}),(0,P.jsxs)(k,{children:[(0,P.jsx)(A,{value:`__none__`,children:E(`peerKindOptional`)}),(0,P.jsx)(A,{value:`direct`,children:E(`peerKindDirect`)}),(0,P.jsx)(A,{value:`group`,children:E(`peerKindGroup`)}),(0,P.jsx)(A,{value:`channel`,children:E(`peerKindChannel`)})]})]}),(0,P.jsx)(n,{value:e.match.peer?.id??``,onChange:n=>a(t,{...e,match:{...e.match,peer:r?{kind:r,id:n.target.value}:void 0}}),placeholder:E(`peerIdPlaceholder`)})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`h-4 w-4 mr-1`}),E(`remove`)]})})]},`${t}-${e.agentId}`)})})})}function le({entries:e,onAddEntry:t,onRemoveEntry:i,onUpdateEntry:o}){return(0,P.jsx)(r,{title:E(`runtimeEntries`),description:E(`runtimeEntriesHelp`),actions:(0,P.jsxs)(s,{type:`button`,variant:`ghost`,size:`sm`,onClick:t,children:[(0,P.jsx)(S,{className:`mr-2 h-4 w-4`}),E(`addRuntimeEntry`)]}),children:(0,P.jsx)(f,{children:e.map((e,t)=>(0,P.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,P.jsx)(n,{value:e.id,onChange:e=>o(t,{id:e.target.value}),placeholder:E(`runtimeEntryIdPlaceholder`)}),(0,P.jsx)(n,{value:e.label??``,onChange:e=>o(t,{label:e.target.value}),placeholder:E(`runtimeEntryLabelPlaceholder`)}),(0,P.jsx)(n,{value:e.type,onChange:e=>o(t,{type:e.target.value}),placeholder:E(`runtimeEntryTypePlaceholder`)}),(0,P.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg bg-background/65 px-3 py-2`,children:[(0,P.jsx)(`span`,{className:`text-sm text-foreground`,children:E(`enabled`)}),(0,P.jsx)(a,{checked:e.enabled!==!1,onCheckedChange:e=>o(t,{enabled:e})})]})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:E(`runtimeEntryConfigJson`)}),(0,P.jsx)(`textarea`,{className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-sm`,value:e.configText,onChange:e=>o(t,{configText:e.target.value}),spellCheck:!1})]}),(0,P.jsx)(`div`,{className:`flex justify-end`,children:(0,P.jsxs)(s,{type:`button`,variant:`outline`,onClick:()=>i(t),children:[(0,P.jsx)(T,{className:`mr-2 h-4 w-4`}),E(`delete`)]})})]},`${t}-${e.id||`runtime-entry`}`))})})}var ue=[{value:`main`,labelKey:`dmScopeMain`},{value:`per-peer`,labelKey:`dmScopePerPeer`},{value:`per-channel-peer`,labelKey:`dmScopePerChannelPeer`},{value:`per-account-channel-peer`,labelKey:`dmScopePerAccountChannelPeer`}];function de({companionEnabled:e,defaultContextTokens:t,defaultEngine:o,dmScope:s,onCompanionEnabledChange:c,onDefaultContextTokensChange:l,onDefaultEngineChange:u,onDmScopeChange:d}){return(0,P.jsx)(r,{title:E(`dmScope`),description:E(`dmScopeHelp`),children:(0,P.jsxs)(f,{children:[(0,P.jsx)(i,{title:E(`runtimeCompanionEnabled`),description:E(`runtimeCompanionEnabledHelp`),control:(0,P.jsx)(a,{checked:e,onCheckedChange:c})}),(0,P.jsx)(i,{title:E(`defaultContextTokens`),description:E(`defaultContextTokensHelp`),control:(0,P.jsx)(n,{type:`number`,min:1e3,step:1e3,value:t,onChange:e=>l(Math.max(1e3,Number.parseInt(e.target.value,10)||1e3)),className:`w-36`})}),(0,P.jsx)(i,{title:E(`defaultEngine`),description:E(`defaultEngineHelp`),control:(0,P.jsx)(n,{value:o,onChange:e=>u(e.target.value),placeholder:E(`defaultEnginePlaceholder`),className:`w-56`})}),(0,P.jsx)(i,{title:E(`dmScope`),control:(0,P.jsxs)(j,{value:s,onValueChange:e=>d(e),children:[(0,P.jsx)(O,{className:`w-56`,children:(0,P.jsx)(D,{})}),(0,P.jsx)(k,{children:ue.map(e=>(0,P.jsx)(A,{value:e.value,children:E(e.labelKey)},e.value))})]})})]})})}function fe({config:e,updateRuntime:t}){let n=(0,N.useMemo)(()=>ae(e),[e]),[r,i]=(0,N.useState)(n.agents),[a,l]=(0,N.useState)(n.bindings),[u,d]=(0,N.useState)(n.runtimeEntries),[f,p]=(0,N.useState)(n.dmScope),[m,h]=(0,N.useState)(n.companionEnabled),[g,_]=(0,N.useState)(n.defaultContextTokens),[v,y]=(0,N.useState)(n.defaultEngine),b=(0,N.useMemo)(()=>{let e=new Set([`main`]);return r.forEach(t=>{let n=t.id.trim();n&&e.add(n)}),e},[r]);return(0,P.jsxs)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:[(0,P.jsx)(J,{}),(0,P.jsx)(de,{companionEnabled:m,dmScope:f,defaultContextTokens:g,defaultEngine:v,onCompanionEnabledChange:h,onDmScopeChange:p,onDefaultContextTokensChange:_,onDefaultEngineChange:y}),(0,P.jsx)(le,{entries:u,onUpdateEntry:(e,t)=>d(n=>n.map((n,r)=>r===e?{...n,...t}:n)),onRemoveEntry:e=>d(t=>t.filter((t,n)=>n!==e)),onAddEntry:()=>d(e=>[...e,Q()])}),(0,P.jsx)(se,{agents:r,onUpdateAgent:(e,t)=>{i(n=>n.map((n,r)=>r===e?{...n,...t}:n))},onRemoveAgent:e=>i(t=>t.filter((t,n)=>n!==e)),onAddAgent:()=>i(e=>[...e,X()]),onSetDefaultAgent:(e,t)=>i(n=>t?n.map((t,n)=>({...t,default:n===e})):n.map((t,n)=>n===e?{...t,default:!1}:t))}),(0,P.jsx)(ce,{bindings:a,onUpdateBinding:(e,t)=>{l(n=>n.map((n,r)=>r===e?t:n))},onRemoveBinding:e=>l(t=>t.filter((t,n)=>n!==e)),onAddBinding:()=>l(e=>[...e,Z()])}),(0,P.jsx)(te,{children:(0,P.jsxs)(s,{type:`button`,size:`sm`,onClick:()=>{try{let e=$({companionEnabled:m,agents:r,bindings:a,runtimeEntries:u,dmScope:f,defaultContextTokens:g,defaultEngine:v,knownAgentIds:b});t.mutate({data:e})}catch(e){o.error(e instanceof Error?e.message:String(e))}},disabled:t.isPending,children:[(0,P.jsx)(w,{className:`mr-1.5 h-3.5 w-3.5`}),t.isPending?E(`saving`):E(`saveRuntimeSettings`)]})})]})}function pe(){let{data:e,isLoading:t}=ee(),n=M();return t||!e?(0,P.jsx)(c,{title:E(`runtimePageTitle`),description:E(`runtimePageDescription`),children:(0,P.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:E(`runtimeLoading`)})}):(0,P.jsx)(fe,{config:e,updateRuntime:n})}export{pe as RuntimeConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DF37yw5_.js";import{S as t}from"./theme-provider-BsJ6HxeX.js";import{Lt as n,Qn as r,Yt as i,Zn as a,_n as o,lr as s,ur as c,xr as l}from"./api-CXWxExzS.js";import{$t as u,Ft as d,Nt as f,Pt as p,d as m,en as h,m as g,rn as _,zt as ee}from"./app-presenter-provider-BB3Xl8b0.js";import{t as v}from"./createLucideIcon-C3LSyx-e.js";import{G as y,W as b,g as x,h as S,ut as C,yt as w}from"./context-menu-C0qywo73.js";import{z as T}from"./dist-D9h2cWk3.js";import{t as E}from"./circle-dashed-KGwElDWV.js";import{i as D}from"./x-waP-WLuT.js";import{t as O}from"./refresh-cw-DOg2pWGu.js";import{t as k}from"./trash-2-BVQs-0ji.js";import{s as A}from"./i18n-ByVUrt9w.js";import{a as j,d as M,f as N,i as P,l as F,n as I,o as L,r as R,t as z,u as B}from"./dialog-DMKYZDFu.js";import{g as V,h as H,p as U}from"./provider-models-D8WOdsdu.js";var W=v(`CirclePause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),te=v(`Radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),G=v(`ShieldPlus`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M9 12h6`,key:`1c52cq`}],[`path`,{d:`M12 9v6`,key:`199k2o`}]]),ne=v(`Unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),K=e(l(),1),q=c();function re({appId:e,appTitle:t,dataEntry:n,dataLoading:r,deleteError:a,deletePending:o,open:s,purgeData:c,onDelete:l,onOpenChange:u,onPurgeDataChange:f}){let m=(0,K.useRef)(null);(0,K.useEffect)(()=>{a&&m.current?.focus()},[a]);let h=()=>u(!1);return(0,q.jsx)(z,{open:s,onOpenChange:e=>!o&&u(e),children:(0,q.jsxs)(I,{className:`max-w-md`,onEscapeKeyDown:e=>o&&e.preventDefault(),onInteractOutside:e=>o&&e.preventDefault(),children:[(0,q.jsxs)(j,{showClose:!1,children:[(0,q.jsx)(L,{children:A(`serviceAppsDeleteConfirmTitle`)}),(0,q.jsxs)(R,{children:[A(`serviceAppsDeleteConfirmDescription`),` `,t]})]}),(0,q.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,q.jsx)(d,{checked:!c,description:A(`serviceAppsKeepDataDescription`),label:A(`appPackagesKeepData`),onClick:()=>f(!1)}),(0,q.jsx)(d,{checked:c,destructive:!0,disabled:!n||r,description:A(`serviceAppsDeleteDataDescription`),label:A(`appPackagesDeleteData`),onClick:()=>f(!0)})]}),n?(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(p,{storage:n.storage,usage:n.usage})}):(0,q.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-muted-foreground`,children:A(r?`appPackagesLoading`:`serviceAppsDataUnavailable`)}),a?(0,q.jsx)(`p`,{ref:m,role:`alert`,tabIndex:-1,className:`mt-3 text-xs text-destructive`,children:a instanceof Error?a.message:A(`appPackagesActionFailed`)}):null,(0,q.jsxs)(P,{className:`mt-5 gap-2 sm:gap-0`,children:[(0,q.jsx)(i,{autoFocus:!0,type:`button`,variant:`outline`,disabled:o,onClick:h,children:A(`cancel`)}),(0,q.jsxs)(i,{type:`button`,variant:c?`destructive`:`default`,disabled:o||c&&!n,onClick:()=>l(e,c,h),children:[o?(0,q.jsx)(D,{className:`mr-1.5 h-3.5 w-3.5 animate-spin`}):null,A(c?`appDataDeletePermanently`:`serviceAppsDelete`)]})]})]})})}function ie({action:e,grants:t,agents:n,grantAgentPending:r,onGrantAgent:i,onRevoke:a}){let[o,s]=(0,K.useState)(!1),c=new Set(t.flatMap(e=>e.caller.surface===`agent`?[e.caller.agentId]:[])),l=n.filter(e=>!c.has(e.id));return(0,q.jsxs)(`div`,{className:`py-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`flex h-6 w-6 shrink-0 items-center justify-center text-muted-foreground`,children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-xs font-medium text-foreground`,children:e.title??e.name}),e.description?(0,q.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:e.description}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[e.runtimeState?(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:A(`serviceAppsRuntimeState_${e.runtimeState}`)}):null,(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.risk}),(0,q.jsxs)(U,{open:o,onOpenChange:s,children:[(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,disabled:r||l.length===0,className:`ml-1 rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-40`,title:A(`serviceAppsGrantToAgent`),"aria-label":A(`serviceAppsGrantToAgent`),children:(0,q.jsx)(G,{className:`h-3.5 w-3.5`})})}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`px-2 py-1.5 text-[11px] font-medium text-muted-foreground`,children:A(`serviceAppsGrantToAgent`)}),l.map(t=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(e.id,t.id),s(!1)},className:`${x} text-foreground ${S.item}`,children:[(0,q.jsx)(w,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`min-w-0 truncate`,children:t.displayName?.trim()||t.id})]},t.id))]})]})]})]}),t.map(e=>(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-2 pl-8`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(u,{className:`h-3 w-3 shrink-0 text-emerald-500`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[A(`serviceAppsGrantedTo`),` `,J(e)]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(e),className:`rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-rose-600 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,title:A(`serviceAppsRevokeGrant`),"aria-label":A(`serviceAppsRevokeGrant`),children:(0,q.jsx)(k,{className:`h-3 w-3`})})]},`${e.caller.surface}:${J(e)}:${e.actionId}`))]})}function J(e){return e.caller.surface===`panel-app`?e.caller.appId:e.caller.agentId}function Y({app:e,actions:n,actionsOpen:r,grants:i,agents:a,deletePending:s,deleteError:c,dataEntry:l,dataLoading:u,isDiscovering:d,onActionsOpenChange:f,onDiscover:p,onManagePackage:_,onDelete:ee,onResetDelete:v,onRestart:y,onRevoke:b,onGrantAgent:x,grantAgentPending:S}){let[w,E]=(0,K.useState)(!1),[O,j]=(0,K.useState)(!1),[P,I]=(0,K.useState)(!1),[L,R]=(0,K.useState)(!1),z=e.status!==`starting`&&e.status!==`stopped`,W=e.status===`running`||e.status===`failed`,G=e.sourceKind===`package`?e.packageId:void 0,J=se(e),Y=()=>{E(!1),R(!1),v(),j(!0)};return(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(`section`,{className:`group bg-card transition-colors hover:bg-[var(--interaction-hover)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3.5`,children:[(0,q.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-4 w-4`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(ae,{status:e.status})]}),e.description?(0,q.jsx)(`div`,{className:`mt-1 truncate text-xs leading-5 text-muted-foreground`,children:e.description}):null,e.lastError?(0,q.jsx)(`div`,{className:`mt-1.5 truncate text-xs text-rose-600`,title:e.lastError,children:e.lastError}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[z?(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,disabled:d,className:`inline-flex h-7 items-center gap-1.5 rounded-md bg-foreground px-2.5 text-xs font-medium text-background transition-colors hover:bg-foreground/85 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-foreground/40 disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":A(`serviceAppsDiscoverActions`),onClick:()=>p(e.id),children:[d?(0,q.jsx)(D,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(te,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:A(`serviceAppsConnect`)})]})}),(0,q.jsx)(B,{side:`bottom`,className:`max-w-56 text-xs`,children:A(`serviceAppsDiscoverActionsHint`)})]}):null,(0,q.jsxs)(U,{open:w,onOpenChange:E,children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:opacity-50`,"aria-label":A(`serviceAppsMoreActions`),disabled:s,children:(0,q.jsx)(C,{className:`h-3.5 w-3.5`})})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsMoreActions`)})]}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(X,{disabled:!W,icon:ne,label:A(`serviceAppsDisconnectRuntime`),onClick:()=>{E(!1),y(e.id)}}),G?(0,q.jsx)(X,{icon:t,label:A(`serviceAppsManagePackage`),onClick:()=>{E(!1),_(G)}}):(0,q.jsx)(X,{destructive:!0,disabled:s,icon:k,label:A(`serviceAppsDelete`),onClick:Y}),(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(m,{page:g(`service-app`,e.id,e.title),onSelect:()=>E(!1)})]})]})]})]}),(0,q.jsxs)(`div`,{className:`border-t border-border/60`,children:[(0,q.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!r),className:`flex min-w-0 flex-1 items-center justify-between gap-2 px-4 py-2 text-left text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":r,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsActionsSection`)}),(0,q.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:n.length})]}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 shrink-0 text-muted-foreground/70 transition-transform`,r&&`rotate-180`)})]}),J.length>0?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`flex shrink-0 items-center gap-1 border-l border-border/60 px-3 text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":P,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsDetails`)}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 transition-transform`,P&&`rotate-180`)})]}):null]}),r?(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:n.length===0?(0,q.jsx)(`div`,{className:`py-1 text-xs text-muted-foreground`,children:A(`serviceAppsActionsEmpty`)}):(0,q.jsx)(`div`,{className:`divide-y divide-border/50`,children:n.map(e=>(0,q.jsx)(ie,{action:e,grants:i.filter(t=>t.actionId===e.id),agents:a,grantAgentPending:S,onGrantAgent:x,onRevoke:b},e.id))})}):null,P?(0,q.jsx)(ce,{rows:J}):null]}),e.sourceKind===`package`?null:(0,q.jsx)(re,{appId:e.id,appTitle:e.title,dataEntry:l,dataLoading:u,deleteError:c,deletePending:s,open:O,purgeData:L,onDelete:ee,onOpenChange:j,onPurgeDataChange:R})]})})}function ae({status:e}){let t=oe(e),n=t.icon;return(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`span`,{className:o(`inline-flex shrink-0 items-center gap-1 text-xs`,t.className),"aria-label":t.label,children:[(0,q.jsx)(n,{className:o(`h-3 w-3`,t.iconClassName)}),(0,q.jsx)(`span`,{children:t.label})]})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:t.tooltip})]})}function oe(e){switch(e){case`running`:return{className:`text-emerald-700`,icon:_,label:A(`serviceAppsStatus_running`),tooltip:A(`serviceAppsStatusHint_running`)};case`starting`:return{className:`text-blue-700`,icon:D,iconClassName:`animate-spin`,label:A(`serviceAppsStatus_starting`),tooltip:A(`serviceAppsStatusHint_starting`)};case`failed`:return{className:`text-rose-700`,icon:y,label:A(`serviceAppsStatus_failed`),tooltip:A(`serviceAppsStatusHint_failed`)};case`stopped`:return{className:`text-muted-foreground`,icon:W,label:A(`serviceAppsStatus_stopped`),tooltip:A(`serviceAppsStatusHint_stopped`)};default:return{className:`text-muted-foreground`,icon:E,label:A(`serviceAppsStatus_idle`),tooltip:A(`serviceAppsStatusHint_idle`)}}}function X({destructive:e=!1,disabled:t=!1,icon:n,label:r,onClick:i}){return(0,q.jsxs)(`button`,{type:`button`,className:o(x,e?S.destructive:`text-foreground ${S.item}`),disabled:t,onClick:i,children:[(0,q.jsx)(n,{className:o(`h-4 w-4 shrink-0`,!e&&`text-muted-foreground`)}),(0,q.jsx)(`span`,{children:r})]})}function se(e){let t=[e.command,...e.args??[]].filter(e=>!!e?.trim()).join(` `);return[{label:A(`serviceAppsCommand`),value:t},{label:A(`serviceAppsCwd`),value:e.cwd},{label:A(`serviceAppsManifest`),value:e.manifestPath},{label:A(`serviceAppsLastStarted`),value:e.lastStartedAt},{label:A(`serviceAppsLastReady`),value:e.lastReadyAt},{label:A(`serviceAppsLastFailed`),value:e.lastFailedAt}].filter(e=>e.value)}function ce({rows:e}){return(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:(0,q.jsx)(`dl`,{className:`grid grid-cols-[4.75rem_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs`,children:e.map(e=>(0,q.jsx)(le,{label:e.label,value:e.value},e.label))})})}function le({label:e,value:t}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:`text-muted-foreground/70`,children:e}),(0,q.jsx)(`dd`,{className:`min-w-0 truncate font-mono text-muted-foreground`,title:t,children:t})]})}var Z=[`service-apps`],Q=[`service-actions`],$=[`service-action-grants`],ue=[`app-data`];function de(){return r({queryKey:Z,queryFn:()=>n.serviceApps.listServiceApps()})}function fe(){return r({queryKey:Q,queryFn:()=>n.serviceApps.listServiceActions()})}function pe(){return r({queryKey:$,queryFn:()=>n.serviceApps.listServiceActionGrants()})}function me(){let e=s();return a({mutationFn:e=>n.serviceApps.restartServiceApp(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q})])}})}function he(){let e=s();return a({mutationFn:e=>n.serviceApps.deleteServiceApp(e.appId,e.purgeData),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$}),e.invalidateQueries({queryKey:ue})])}})}function ge(){let e=s();return a({mutationFn:e=>n.serviceApps.discoverServiceAppActions(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:Z})}})}function _e(){let e=s();return a({mutationFn:e=>n.serviceApps.revokeServiceActionGrant(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ve(){let e=s();return a({mutationFn:e=>n.serviceApps.grantAgentServiceActions(e.agentId,e.actionIds),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ye({onManagePackage:e,resourceId:t}){let n=de(),r=f(),i=fe(),a=pe(),o=ee(),s=he(),c=me(),l=ge(),u=_e(),d=ve(),[p,m]=(0,K.useState)({}),[g,_]=(0,K.useState)({}),v=()=>{n.refetch(),i.refetch(),a.refetch(),r.refetch()};if(n.isLoading||i.isLoading||a.isLoading)return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:A(`serviceAppsLoading`)});if(n.isError||i.isError||a.isError){let e=n.error??i.error??a.error;return(0,q.jsx)(`div`,{className:`p-4 text-sm text-rose-600`,children:e instanceof Error?e.message:A(`serviceAppsLoadFailed`)})}let y=(n.data?.entries??[]).filter(e=>!t||e.id===t);if(t&&!y.length)return(0,q.jsx)(`p`,{role:`alert`,className:`p-4`,children:A(`resourceNotFound`)});let b=n.data?.diagnostics??[],x=i.data?.actions??[],S=a.data?.grants??[],C=e=>{l.mutateAsync(e).then(t=>{m(n=>({...n,[e]:t.actions})),_(t=>({...t,[e]:!0}))})},w=(r.data?.entries??[]).filter(e=>e.source===`workspace-service`&&e.lifecycle===`active`);return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card text-card-foreground`,children:[(0,q.jsx)(`div`,{className:`flex min-h-12 shrink-0 items-center justify-end border-b border-border/60 px-4 py-2`,children:(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-label":A(`serviceAppsRefresh`),onClick:v,children:(0,q.jsx)(O,{className:`h-3.5 w-3.5`})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsRefresh`)})]})})}),b.length>0?(0,q.jsxs)(`div`,{role:`alert`,className:`mx-3 mt-3 rounded-xl border border-destructive/20 bg-destructive/5 px-3 py-2.5 text-xs text-destructive sm:mx-4`,children:[(0,q.jsx)(`div`,{className:`font-medium`,children:A(`serviceAppsLoadFailed`)}),(0,q.jsx)(`ul`,{className:`mt-1 space-y-1`,children:b.map(e=>(0,q.jsxs)(`li`,{className:`break-words`,children:[e.appId,`: `,e.message]},e.stagedPath))})]}):null,y.length===0?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 py-8 text-center`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-xs`,children:[(0,q.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-xl bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-5 w-5`})}),(0,q.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-foreground`,children:A(`serviceAppsEmptyTitle`)}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:A(`serviceAppsEmptyDescription`)})]})}):(0,q.jsx)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:(0,q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card`,children:y.map(n=>(0,q.jsx)(Y,{app:n,actions:p[n.id]??x.filter(e=>e.appId===n.id),actionsOpen:g[n.id]??!!t,grants:S,agents:o.data?.agents??[],deletePending:s.isPending,deleteError:s.error,dataEntry:w.find(e=>e.appId===n.id),dataLoading:r.isLoading,isDiscovering:l.isPending,onActionsOpenChange:e=>_(t=>({...t,[n.id]:e})),onDiscover:C,onManagePackage:e,onDelete:(e,t,n)=>void s.mutate({appId:e,purgeData:t},{onSuccess:n}),onResetDelete:s.reset,onRestart:e=>void c.mutate(e),onRevoke:e=>void u.mutate({actionId:e.actionId,caller:e.caller}),onGrantAgent:(e,t)=>void d.mutate({actionIds:[e],agentId:t}),grantAgentPending:d.isPending},n.id))})})]})}export{ye as ServiceAppsPanel};
|
|
1
|
+
import{i as e}from"./chunk-DF37yw5_.js";import{S as t}from"./theme-provider-BsJ6HxeX.js";import{Lt as n,Qn as r,Yt as i,Zn as a,_n as o,lr as s,ur as c,xr as l}from"./api-CXWxExzS.js";import{$t as u,Ft as d,Nt as f,Pt as p,d as m,en as h,m as g,rn as _,zt as ee}from"./app-presenter-provider-DdD2Q7jZ.js";import{t as v}from"./createLucideIcon-C3LSyx-e.js";import{G as y,W as b,g as x,h as S,ut as C,yt as w}from"./context-menu-C0qywo73.js";import{z as T}from"./dist-D9h2cWk3.js";import{t as E}from"./circle-dashed-KGwElDWV.js";import{i as D}from"./x-waP-WLuT.js";import{t as O}from"./refresh-cw-DOg2pWGu.js";import{t as k}from"./trash-2-BVQs-0ji.js";import{s as A}from"./i18n-ByVUrt9w.js";import{a as j,d as M,f as N,i as P,l as F,n as I,o as L,r as R,t as z,u as B}from"./dialog-DMKYZDFu.js";import{g as V,h as H,p as U}from"./provider-models-D8WOdsdu.js";var W=v(`CirclePause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),te=v(`Radar`,[[`path`,{d:`M19.07 4.93A10 10 0 0 0 6.99 3.34`,key:`z3du51`}],[`path`,{d:`M4 6h.01`,key:`oypzma`}],[`path`,{d:`M2.29 9.62A10 10 0 1 0 21.31 8.35`,key:`qzzz0`}],[`path`,{d:`M16.24 7.76A6 6 0 1 0 8.23 16.67`,key:`1yjesh`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M17.99 11.66A6 6 0 0 1 15.77 16.67`,key:`1u2y91`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`m13.41 10.59 5.66-5.66`,key:`mhq4k0`}]]),G=v(`ShieldPlus`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M9 12h6`,key:`1c52cq`}],[`path`,{d:`M12 9v6`,key:`199k2o`}]]),ne=v(`Unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),K=e(l(),1),q=c();function re({appId:e,appTitle:t,dataEntry:n,dataLoading:r,deleteError:a,deletePending:o,open:s,purgeData:c,onDelete:l,onOpenChange:u,onPurgeDataChange:f}){let m=(0,K.useRef)(null);(0,K.useEffect)(()=>{a&&m.current?.focus()},[a]);let h=()=>u(!1);return(0,q.jsx)(z,{open:s,onOpenChange:e=>!o&&u(e),children:(0,q.jsxs)(I,{className:`max-w-md`,onEscapeKeyDown:e=>o&&e.preventDefault(),onInteractOutside:e=>o&&e.preventDefault(),children:[(0,q.jsxs)(j,{showClose:!1,children:[(0,q.jsx)(L,{children:A(`serviceAppsDeleteConfirmTitle`)}),(0,q.jsxs)(R,{children:[A(`serviceAppsDeleteConfirmDescription`),` `,t]})]}),(0,q.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,q.jsx)(d,{checked:!c,description:A(`serviceAppsKeepDataDescription`),label:A(`appPackagesKeepData`),onClick:()=>f(!1)}),(0,q.jsx)(d,{checked:c,destructive:!0,disabled:!n||r,description:A(`serviceAppsDeleteDataDescription`),label:A(`appPackagesDeleteData`),onClick:()=>f(!0)})]}),n?(0,q.jsx)(`div`,{className:`mt-3`,children:(0,q.jsx)(p,{storage:n.storage,usage:n.usage})}):(0,q.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-muted-foreground`,children:A(r?`appPackagesLoading`:`serviceAppsDataUnavailable`)}),a?(0,q.jsx)(`p`,{ref:m,role:`alert`,tabIndex:-1,className:`mt-3 text-xs text-destructive`,children:a instanceof Error?a.message:A(`appPackagesActionFailed`)}):null,(0,q.jsxs)(P,{className:`mt-5 gap-2 sm:gap-0`,children:[(0,q.jsx)(i,{autoFocus:!0,type:`button`,variant:`outline`,disabled:o,onClick:h,children:A(`cancel`)}),(0,q.jsxs)(i,{type:`button`,variant:c?`destructive`:`default`,disabled:o||c&&!n,onClick:()=>l(e,c,h),children:[o?(0,q.jsx)(D,{className:`mr-1.5 h-3.5 w-3.5 animate-spin`}):null,A(c?`appDataDeletePermanently`:`serviceAppsDelete`)]})]})]})})}function ie({action:e,grants:t,agents:n,grantAgentPending:r,onGrantAgent:i,onRevoke:a}){let[o,s]=(0,K.useState)(!1),c=new Set(t.flatMap(e=>e.caller.surface===`agent`?[e.caller.agentId]:[])),l=n.filter(e=>!c.has(e.id));return(0,q.jsxs)(`div`,{className:`py-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`flex h-6 w-6 shrink-0 items-center justify-center text-muted-foreground`,children:(0,q.jsx)(b,{className:`h-3.5 w-3.5`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`truncate text-xs font-medium text-foreground`,children:e.title??e.name}),e.description?(0,q.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:e.description}):null]})]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[e.runtimeState?(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:A(`serviceAppsRuntimeState_${e.runtimeState}`)}):null,(0,q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.risk}),(0,q.jsxs)(U,{open:o,onOpenChange:s,children:[(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,disabled:r||l.length===0,className:`ml-1 rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-40`,title:A(`serviceAppsGrantToAgent`),"aria-label":A(`serviceAppsGrantToAgent`),children:(0,q.jsx)(G,{className:`h-3.5 w-3.5`})})}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`px-2 py-1.5 text-[11px] font-medium text-muted-foreground`,children:A(`serviceAppsGrantToAgent`)}),l.map(t=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{i(e.id,t.id),s(!1)},className:`${x} text-foreground ${S.item}`,children:[(0,q.jsx)(w,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,q.jsx)(`span`,{className:`min-w-0 truncate`,children:t.displayName?.trim()||t.id})]},t.id))]})]})]})]}),t.map(e=>(0,q.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between gap-2 pl-8`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,q.jsx)(u,{className:`h-3 w-3 shrink-0 text-emerald-500`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[A(`serviceAppsGrantedTo`),` `,J(e)]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>a(e),className:`rounded-md p-1 text-muted-foreground/70 transition-colors hover:bg-[var(--interaction-hover)] hover:text-rose-600 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,title:A(`serviceAppsRevokeGrant`),"aria-label":A(`serviceAppsRevokeGrant`),children:(0,q.jsx)(k,{className:`h-3 w-3`})})]},`${e.caller.surface}:${J(e)}:${e.actionId}`))]})}function J(e){return e.caller.surface===`panel-app`?e.caller.appId:e.caller.agentId}function Y({app:e,actions:n,actionsOpen:r,grants:i,agents:a,deletePending:s,deleteError:c,dataEntry:l,dataLoading:u,isDiscovering:d,onActionsOpenChange:f,onDiscover:p,onManagePackage:_,onDelete:ee,onResetDelete:v,onRestart:y,onRevoke:b,onGrantAgent:x,grantAgentPending:S}){let[w,E]=(0,K.useState)(!1),[O,j]=(0,K.useState)(!1),[P,I]=(0,K.useState)(!1),[L,R]=(0,K.useState)(!1),z=e.status!==`starting`&&e.status!==`stopped`,W=e.status===`running`||e.status===`failed`,G=e.sourceKind===`package`?e.packageId:void 0,J=se(e),Y=()=>{E(!1),R(!1),v(),j(!0)};return(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(`section`,{className:`group bg-card transition-colors hover:bg-[var(--interaction-hover)]`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3 px-4 py-3.5`,children:[(0,q.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-4 w-4`})}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.title}),(0,q.jsx)(ae,{status:e.status})]}),e.description?(0,q.jsx)(`div`,{className:`mt-1 truncate text-xs leading-5 text-muted-foreground`,children:e.description}):null,e.lastError?(0,q.jsx)(`div`,{className:`mt-1.5 truncate text-xs text-rose-600`,title:e.lastError,children:e.lastError}):null]}),(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[z?(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,disabled:d,className:`inline-flex h-7 items-center gap-1.5 rounded-md bg-foreground px-2.5 text-xs font-medium text-background transition-colors hover:bg-foreground/85 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-foreground/40 disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":A(`serviceAppsDiscoverActions`),onClick:()=>p(e.id),children:[d?(0,q.jsx)(D,{className:`h-3.5 w-3.5 animate-spin`}):(0,q.jsx)(te,{className:`h-3.5 w-3.5`}),(0,q.jsx)(`span`,{children:A(`serviceAppsConnect`)})]})}),(0,q.jsx)(B,{side:`bottom`,className:`max-w-56 text-xs`,children:A(`serviceAppsDiscoverActionsHint`)})]}):null,(0,q.jsxs)(U,{open:w,onOpenChange:E,children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(V,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:opacity-50`,"aria-label":A(`serviceAppsMoreActions`),disabled:s,children:(0,q.jsx)(C,{className:`h-3.5 w-3.5`})})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsMoreActions`)})]}),(0,q.jsxs)(H,{align:`end`,variant:`menu`,children:[(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(X,{disabled:!W,icon:ne,label:A(`serviceAppsDisconnectRuntime`),onClick:()=>{E(!1),y(e.id)}}),G?(0,q.jsx)(X,{icon:t,label:A(`serviceAppsManagePackage`),onClick:()=>{E(!1),_(G)}}):(0,q.jsx)(X,{destructive:!0,disabled:s,icon:k,label:A(`serviceAppsDelete`),onClick:Y}),(0,q.jsx)(`div`,{className:`my-1 h-px bg-border`}),(0,q.jsx)(m,{page:g(`service-app`,e.id,e.title),onSelect:()=>E(!1)})]})]})]})]}),(0,q.jsxs)(`div`,{className:`border-t border-border/60`,children:[(0,q.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!r),className:`flex min-w-0 flex-1 items-center justify-between gap-2 px-4 py-2 text-left text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":r,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsActionsSection`)}),(0,q.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:n.length})]}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 shrink-0 text-muted-foreground/70 transition-transform`,r&&`rotate-180`)})]}),J.length>0?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),className:`flex shrink-0 items-center gap-1 border-l border-border/60 px-3 text-xs text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border`,"aria-expanded":P,children:[(0,q.jsx)(`span`,{children:A(`serviceAppsDetails`)}),(0,q.jsx)(T,{className:o(`h-3.5 w-3.5 transition-transform`,P&&`rotate-180`)})]}):null]}),r?(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:n.length===0?(0,q.jsx)(`div`,{className:`py-1 text-xs text-muted-foreground`,children:A(`serviceAppsActionsEmpty`)}):(0,q.jsx)(`div`,{className:`divide-y divide-border/50`,children:n.map(e=>(0,q.jsx)(ie,{action:e,grants:i.filter(t=>t.actionId===e.id),agents:a,grantAgentPending:S,onGrantAgent:x,onRevoke:b},e.id))})}):null,P?(0,q.jsx)(ce,{rows:J}):null]}),e.sourceKind===`package`?null:(0,q.jsx)(re,{appId:e.id,appTitle:e.title,dataEntry:l,dataLoading:u,deleteError:c,deletePending:s,open:O,purgeData:L,onDelete:ee,onOpenChange:j,onPurgeDataChange:R})]})})}function ae({status:e}){let t=oe(e),n=t.icon;return(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsxs)(`span`,{className:o(`inline-flex shrink-0 items-center gap-1 text-xs`,t.className),"aria-label":t.label,children:[(0,q.jsx)(n,{className:o(`h-3 w-3`,t.iconClassName)}),(0,q.jsx)(`span`,{children:t.label})]})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:t.tooltip})]})}function oe(e){switch(e){case`running`:return{className:`text-emerald-700`,icon:_,label:A(`serviceAppsStatus_running`),tooltip:A(`serviceAppsStatusHint_running`)};case`starting`:return{className:`text-blue-700`,icon:D,iconClassName:`animate-spin`,label:A(`serviceAppsStatus_starting`),tooltip:A(`serviceAppsStatusHint_starting`)};case`failed`:return{className:`text-rose-700`,icon:y,label:A(`serviceAppsStatus_failed`),tooltip:A(`serviceAppsStatusHint_failed`)};case`stopped`:return{className:`text-muted-foreground`,icon:W,label:A(`serviceAppsStatus_stopped`),tooltip:A(`serviceAppsStatusHint_stopped`)};default:return{className:`text-muted-foreground`,icon:E,label:A(`serviceAppsStatus_idle`),tooltip:A(`serviceAppsStatusHint_idle`)}}}function X({destructive:e=!1,disabled:t=!1,icon:n,label:r,onClick:i}){return(0,q.jsxs)(`button`,{type:`button`,className:o(x,e?S.destructive:`text-foreground ${S.item}`),disabled:t,onClick:i,children:[(0,q.jsx)(n,{className:o(`h-4 w-4 shrink-0`,!e&&`text-muted-foreground`)}),(0,q.jsx)(`span`,{children:r})]})}function se(e){let t=[e.command,...e.args??[]].filter(e=>!!e?.trim()).join(` `);return[{label:A(`serviceAppsCommand`),value:t},{label:A(`serviceAppsCwd`),value:e.cwd},{label:A(`serviceAppsManifest`),value:e.manifestPath},{label:A(`serviceAppsLastStarted`),value:e.lastStartedAt},{label:A(`serviceAppsLastReady`),value:e.lastReadyAt},{label:A(`serviceAppsLastFailed`),value:e.lastFailedAt}].filter(e=>e.value)}function ce({rows:e}){return(0,q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-2.5`,children:(0,q.jsx)(`dl`,{className:`grid grid-cols-[4.75rem_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs`,children:e.map(e=>(0,q.jsx)(le,{label:e.label,value:e.value},e.label))})})}function le({label:e,value:t}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:`text-muted-foreground/70`,children:e}),(0,q.jsx)(`dd`,{className:`min-w-0 truncate font-mono text-muted-foreground`,title:t,children:t})]})}var Z=[`service-apps`],Q=[`service-actions`],$=[`service-action-grants`],ue=[`app-data`];function de(){return r({queryKey:Z,queryFn:()=>n.serviceApps.listServiceApps()})}function fe(){return r({queryKey:Q,queryFn:()=>n.serviceApps.listServiceActions()})}function pe(){return r({queryKey:$,queryFn:()=>n.serviceApps.listServiceActionGrants()})}function me(){let e=s();return a({mutationFn:e=>n.serviceApps.restartServiceApp(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q})])}})}function he(){let e=s();return a({mutationFn:e=>n.serviceApps.deleteServiceApp(e.appId,e.purgeData),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Z}),e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$}),e.invalidateQueries({queryKey:ue})])}})}function ge(){let e=s();return a({mutationFn:e=>n.serviceApps.discoverServiceAppActions(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:Z})}})}function _e(){let e=s();return a({mutationFn:e=>n.serviceApps.revokeServiceActionGrant(e),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ve(){let e=s();return a({mutationFn:e=>n.serviceApps.grantAgentServiceActions(e.agentId,e.actionIds),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:Q}),e.invalidateQueries({queryKey:$})])}})}function ye({onManagePackage:e,resourceId:t}){let n=de(),r=f(),i=fe(),a=pe(),o=ee(),s=he(),c=me(),l=ge(),u=_e(),d=ve(),[p,m]=(0,K.useState)({}),[g,_]=(0,K.useState)({}),v=()=>{n.refetch(),i.refetch(),a.refetch(),r.refetch()};if(n.isLoading||i.isLoading||a.isLoading)return(0,q.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-muted-foreground`,children:A(`serviceAppsLoading`)});if(n.isError||i.isError||a.isError){let e=n.error??i.error??a.error;return(0,q.jsx)(`div`,{className:`p-4 text-sm text-rose-600`,children:e instanceof Error?e.message:A(`serviceAppsLoadFailed`)})}let y=(n.data?.entries??[]).filter(e=>!t||e.id===t);if(t&&!y.length)return(0,q.jsx)(`p`,{role:`alert`,className:`p-4`,children:A(`resourceNotFound`)});let b=n.data?.diagnostics??[],x=i.data?.actions??[],S=a.data?.grants??[],C=e=>{l.mutateAsync(e).then(t=>{m(n=>({...n,[e]:t.actions})),_(t=>({...t,[e]:!0}))})},w=(r.data?.entries??[]).filter(e=>e.source===`workspace-service`&&e.lifecycle===`active`);return(0,q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-card text-card-foreground`,children:[(0,q.jsx)(`div`,{className:`flex min-h-12 shrink-0 items-center justify-end border-b border-border/60 px-4 py-2`,children:(0,q.jsx)(M,{delayDuration:250,children:(0,q.jsxs)(F,{children:[(0,q.jsx)(N,{asChild:!0,children:(0,q.jsx)(`button`,{type:`button`,className:`rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--interaction-hover)] hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border`,"aria-label":A(`serviceAppsRefresh`),onClick:v,children:(0,q.jsx)(O,{className:`h-3.5 w-3.5`})})}),(0,q.jsx)(B,{side:`bottom`,className:`text-xs`,children:A(`serviceAppsRefresh`)})]})})}),b.length>0?(0,q.jsxs)(`div`,{role:`alert`,className:`mx-3 mt-3 rounded-xl border border-destructive/20 bg-destructive/5 px-3 py-2.5 text-xs text-destructive sm:mx-4`,children:[(0,q.jsx)(`div`,{className:`font-medium`,children:A(`serviceAppsLoadFailed`)}),(0,q.jsx)(`ul`,{className:`mt-1 space-y-1`,children:b.map(e=>(0,q.jsxs)(`li`,{className:`break-words`,children:[e.appId,`: `,e.message]},e.stagedPath))})]}):null,y.length===0?(0,q.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-6 py-8 text-center`,children:(0,q.jsxs)(`div`,{className:`w-full max-w-xs`,children:[(0,q.jsx)(`div`,{className:`mx-auto flex h-10 w-10 items-center justify-center rounded-xl bg-muted text-muted-foreground`,children:(0,q.jsx)(h,{className:`h-5 w-5`})}),(0,q.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-foreground`,children:A(`serviceAppsEmptyTitle`)}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:A(`serviceAppsEmptyDescription`)})]})}):(0,q.jsx)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto p-3 sm:p-4`,children:(0,q.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card`,children:y.map(n=>(0,q.jsx)(Y,{app:n,actions:p[n.id]??x.filter(e=>e.appId===n.id),actionsOpen:g[n.id]??!!t,grants:S,agents:o.data?.agents??[],deletePending:s.isPending,deleteError:s.error,dataEntry:w.find(e=>e.appId===n.id),dataLoading:r.isLoading,isDiscovering:l.isPending,onActionsOpenChange:e=>_(t=>({...t,[n.id]:e})),onDiscover:C,onManagePackage:e,onDelete:(e,t,n)=>void s.mutate({appId:e,purgeData:t},{onSuccess:n}),onResetDelete:s.reset,onRestart:e=>void c.mutate(e),onRevoke:e=>void u.mutate({actionId:e.actionId,caller:e.caller}),onGrantAgent:(e,t)=>void d.mutate({actionIds:[e],agentId:t}),grantAgentPending:d.isPending},n.id))})})]})}export{ye as ServiceAppsPanel};
|
package/dist/index.html
CHANGED
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
})();
|
|
193
193
|
</script>
|
|
194
194
|
<title>NextClaw</title>
|
|
195
|
-
<script type="module" crossorigin src="/assets/main-
|
|
195
|
+
<script type="module" crossorigin src="/assets/main-C6VGoYNO.js"></script>
|
|
196
196
|
<link rel="modulepreload" crossorigin href="/assets/chunk-DF37yw5_.js">
|
|
197
197
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-DWTEM3RW.js">
|
|
198
198
|
<link rel="modulepreload" crossorigin href="/assets/i18n-ByVUrt9w.js">
|
|
@@ -228,10 +228,10 @@
|
|
|
228
228
|
<link rel="modulepreload" crossorigin href="/assets/provider-models-D8WOdsdu.js">
|
|
229
229
|
<link rel="modulepreload" crossorigin href="/assets/select-BJ-EjmCz.js">
|
|
230
230
|
<link rel="modulepreload" crossorigin href="/assets/use-config-M1L4xn8c.js">
|
|
231
|
-
<link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-
|
|
231
|
+
<link rel="modulepreload" crossorigin href="/assets/app-presenter-provider-DdD2Q7jZ.js">
|
|
232
232
|
<link rel="modulepreload" crossorigin href="/assets/provider-scoped-model-input-BOPkUOtD.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="/assets/settings-2-D3-m8a3v.js">
|
|
234
|
-
<link rel="modulepreload" crossorigin href="/assets/agents-
|
|
234
|
+
<link rel="modulepreload" crossorigin href="/assets/agents-CTSR4ZKb.js">
|
|
235
235
|
<link rel="modulepreload" crossorigin href="/assets/pwa-Cp7pPvsZ.js">
|
|
236
236
|
<link rel="modulepreload" crossorigin href="/assets/login-page--Njgbmpm.js">
|
|
237
237
|
<link rel="stylesheet" crossorigin href="/assets/context-menu-DEcVZfaU.css">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextclaw/ui",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.5-beta.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,14 +34,14 @@
|
|
|
34
34
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
35
35
|
"zod": "^3.23.8",
|
|
36
36
|
"zustand": "^5.0.2",
|
|
37
|
-
"@nextclaw/
|
|
37
|
+
"@nextclaw/client-sdk": "0.12.14-beta.0",
|
|
38
|
+
"@nextclaw/shared": "0.8.4",
|
|
38
39
|
"@nextclaw/ncp": "0.11.3",
|
|
39
|
-
"@nextclaw/ncp-http-agent-client": "0.4.27",
|
|
40
|
-
"@nextclaw/ncp-react": "0.5.31",
|
|
41
|
-
"@nextclaw/agent-chat-ui": "0.12.3",
|
|
42
|
-
"@nextclaw/client-sdk": "0.12.13",
|
|
43
40
|
"@nextclaw/ncp-toolkit": "0.6.28",
|
|
44
|
-
"@nextclaw/
|
|
41
|
+
"@nextclaw/agent-chat-ui": "0.12.3",
|
|
42
|
+
"@nextclaw/ncp-http-agent-client": "0.4.27",
|
|
43
|
+
"@nextclaw/agent-chat": "0.3.14",
|
|
44
|
+
"@nextclaw/ncp-react": "0.5.31"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@testing-library/react": "^16.3.0",
|