@humwick/server 0.130.3 → 0.130.4
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/docs/openapi.json +103 -1
- package/package.json +6 -6
- package/public/assets/{MessageBubble-Bq9kr21N.js → MessageBubble-BOkmEvgZ.js} +2 -2
- package/public/assets/{PlanGraphPanel-Dqiroy06.js → PlanGraphPanel-BkaDJp0r.js} +2 -2
- package/public/assets/{TraceView-DYU962-H.js → TraceView-B99Uu2yT.js} +2 -2
- package/public/assets/{VaultDecisionCard-DhPfzioE.js → VaultDecisionCard-DUIfTTFF.js} +2 -2
- package/public/assets/{activity-DzCcQTee.js → activity-ZIX0N1El.js} +2 -2
- package/public/assets/{agent-lineage-SgDt9i3T.js → agent-lineage-kq9TPYFw.js} +2 -2
- package/public/assets/agent-liveness-DSQY1Aa_.js +2 -0
- package/public/assets/{agent-name-CcY3Aijy.js → agent-name-C_7F4DFR.js} +2 -2
- package/public/assets/{agent-profiles-cxtRBn6O.js → agent-profiles-BNOcrGcY.js} +2 -2
- package/public/assets/{agent-project-badge-DGYbIhaI.js → agent-project-badge-B6yAh70a.js} +2 -2
- package/public/assets/{agent-tools-DHbftV0N.js → agent-tools-CcrhmOzF.js} +2 -2
- package/public/assets/{agent-type-icon-CY113sp-.js → agent-type-icon-CXSLrKiq.js} +2 -2
- package/public/assets/{agents-BPzY7IlQ.js → agents-DIZG97_X.js} +2 -2
- package/public/assets/{analytics-DENFPv_a.js → analytics-rasmoPjR.js} +2 -2
- package/public/assets/{artifact-viewer-KRvSc7sl.js → artifact-viewer-tBpTrEPb.js} +2 -2
- package/public/assets/{artifacts-C9gSmL3s.js → artifacts-BNkrynP1.js} +2 -2
- package/public/assets/{artifacts-DT-HkI5O.js → artifacts-Bjq-ZyBA.js} +2 -2
- package/public/assets/{automation-BsmjQhKD.js → automation-Cx422L3L.js} +2 -2
- package/public/assets/{backlog-8NYH_62t.js → backlog-RuFQ8PUu.js} +2 -2
- package/public/assets/{busy-health-D3hwvYb4.js → busy-health-BvNQ9g5x.js} +2 -2
- package/public/assets/{channels-DCJ5WL7O.js → channels-DNbKAS0I.js} +2 -2
- package/public/assets/{chat-DAIl357U.js → chat-Bp3Fx73h.js} +2 -2
- package/public/assets/{code-preview-CzrZfr9U.js → code-preview-KIRZA6cz.js} +2 -2
- package/public/assets/{connectors-xTxtlyou.js → connectors-k7vO4vvc.js} +2 -2
- package/public/assets/{cosmos-BpebFLK2.js → cosmos-BuVoq1aw.js} +2 -2
- package/public/assets/{crate-agent-BHvI5wXC.js → crate-agent-irqlt4NH.js} +2 -2
- package/public/assets/{dependency-graph-DGT0o3wJ.js → dependency-graph-D_rurNBz.js} +2 -2
- package/public/assets/{deploys-hqWOHSHE.js → deploys-yzZqIpxE.js} +2 -2
- package/public/assets/{display-CDeH4I8T.js → display-BemJG1f_.js} +2 -2
- package/public/assets/{files-BTeGVmTg.js → files-DXWcrxOz.js} +2 -2
- package/public/assets/{fleet-DgXtNgCa.js → fleet-TEuOCZXE.js} +2 -2
- package/public/assets/{fleet-metrics-BHEt5yc_.js → fleet-metrics-BGoDAFI-.js} +2 -2
- package/public/assets/{formatted-body-impl-CAe664Z8.js → formatted-body-impl-BB9eq9nN.js} +2 -2
- package/public/assets/{formatted-body-MLtodyPp.js → formatted-body-qy2nTD_1.js} +3 -3
- package/public/assets/{host-providers-dialog-mapF4Fj9.js → host-providers-dialog-BGPHxuwT.js} +2 -2
- package/public/assets/{index-CqqgOI5R.js → index-BC5XZc0z.js} +5 -5
- package/public/assets/{index-MYAIwYTX.css → index-D8Rp9pz2.css} +1 -1
- package/public/assets/{insights-DNyf7IzF.js → insights-C-KQG0h-.js} +2 -2
- package/public/assets/{integrations-DlYOHq7T.js → integrations-ClPRPyKU.js} +2 -2
- package/public/assets/{issue-ref-chip-CeWBNWn7.js → issue-ref-chip-DbH8J9Ak.js} +2 -2
- package/public/assets/{log-viewer-Cib8nqdE.js → log-viewer-PH4zVn24.js} +2 -2
- package/public/assets/{maintenance-DSn1cPm7.js → maintenance-5lV43uTL.js} +2 -2
- package/public/assets/{managed-agents-C3CkM81m.js → managed-agents-BdgU35aX.js} +2 -2
- package/public/assets/{markdown-preview-W4VQQPAv.js → markdown-preview-DNT4OUwQ.js} +3 -3
- package/public/assets/{markdown-preview-impl-CMsTdhjq.js → markdown-preview-impl-CnCcPy0A.js} +2 -2
- package/public/assets/{memory-BV17qtO4.js → memory--GgWH1gH.js} +2 -2
- package/public/assets/{messages-Bm_1AqSA.js → messages-CzFl_97O.js} +2 -2
- package/public/assets/{orchestrators-Dg-vfP09.js → orchestrators-CVvJVkzv.js} +2 -2
- package/public/assets/overview-DsrZvE86.js +2 -0
- package/public/assets/{pairs-8o9nuG3V.js → pairs-D2d0d2py.js} +2 -2
- package/public/assets/{profile-icon-BsRyBMea.js → profile-icon-_SMuSbYF.js} +2 -2
- package/public/assets/{project-profile-instructions-DETKFn_E.js → project-profile-instructions-Apn15y43.js} +2 -2
- package/public/assets/{projects-M_m6AHws.js → projects-D3B6kto5.js} +2 -2
- package/public/assets/{prompt-settings-C_mNCgeL.js → prompt-settings-DnPB6Ez6.js} +2 -2
- package/public/assets/provider-display-bWwiuedV.js +2 -0
- package/public/assets/{registry-DDHHHE5N.js → registry-D790cIhN.js} +2 -2
- package/public/assets/{run-card-Dt4I4jaP.js → run-card-BCro-Odj.js} +2 -2
- package/public/assets/{secrets-BkVwxI5O.js → secrets-CVXvfvbU.js} +2 -2
- package/public/assets/{service-access-settings-Crq-6a-B.js → service-access-settings-D3Xxqb9w.js} +2 -2
- package/public/assets/{settings-CYcavMFu.js → settings-CoUC7Jci.js} +2 -2
- package/public/assets/{shipping-H6gzEeZB.js → shipping-D_Lp9n_J.js} +2 -2
- package/public/assets/{stats-BJVeWkpV.js → stats-CXiNjB9S.js} +2 -2
- package/public/assets/{status-dot-BcHyw1Vw.js → status-dot-C703YIy1.js} +2 -2
- package/public/assets/store-BgDALGIX.js +9 -0
- package/public/assets/{tasks-qJjlQPpx.js → tasks-DO0WpJCx.js} +2 -2
- package/public/assets/{teams-Cd5Sk1uX.js → teams-FGkdi_tL.js} +2 -2
- package/public/assets/{terminal-viewer-CpY5_m7W.js → terminal-viewer-Dh8dSC7e.js} +3 -3
- package/public/assets/{terminal-viewer-impl-DI_2llFR.js → terminal-viewer-impl-B5Zriip3.js} +2 -2
- package/public/assets/{use-agent-terminal-0yJA_buM.js → use-agent-terminal-CRUVDvLC.js} +2 -2
- package/public/assets/{use-decisions-uJXHf34W.js → use-decisions-CoaqRh4l.js} +2 -2
- package/public/assets/{use-project-list-CpWl6eHQ.js → use-project-list-X-BgT53X.js} +2 -2
- package/public/assets/{use-selectors-BdxBW8mL.js → use-selectors-0X_UZkk-.js} +2 -2
- package/public/assets/{user-avatar-3IndfpOc.js → user-avatar-CkLhVBGu.js} +2 -2
- package/public/assets/{versioned-prompt-editor-CIVg7XB1.js → versioned-prompt-editor-BkTi7eim.js} +2 -2
- package/public/assets/{work-queue-B9rnLwHZ.js → work-queue-DDOLEyKo.js} +2 -2
- package/public/assets/{workflow-marker-X8wxyhzC.js → workflow-marker-CzOsB8BM.js} +2 -2
- package/public/assets/{workflows-o5YyMFW7.js → workflows-DJilvmRM.js} +2 -2
- package/public/assets/{workspaces-CzEGoAng.js → workspaces-CHcfbLR3.js} +2 -2
- package/public/cosmos.html +4 -4
- package/public/index.html +29 -29
- package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/runner/src/adapters/claude-api.ts +1 -1
- package/runner/src/provider-setup.ts +2 -2
- package/src/auth/login-link.ts +35 -0
- package/src/cli/index.ts +7 -1
- package/src/cli/init.ts +53 -0
- package/src/cli/orchestrator.ts +1 -7
- package/src/cli/setup.ts +6 -4
- package/src/db/spawn-delegation.ts +2 -1
- package/src/db/workflow-execution.ts +3 -3
- package/src/dev.ts +4 -13
- package/src/init.ts +299 -0
- package/src/invite-link.ts +16 -9
- package/src/routes/auth.ts +30 -2
- package/src/routes/host-providers.ts +18 -0
- package/src/routes/index.ts +5 -2
- package/src/routes/orchestrator-bootstrap.ts +2 -0
- package/src/routes/secrets-backup.ts +2 -3
- package/src/routes/secrets-import.ts +2 -3
- package/src/routes/secrets-vault.ts +5 -7
- package/src/runtime-install.ts +30 -0
- package/src/server.ts +4 -4
- package/src/services/auth-context.ts +6 -0
- package/src/services/provider-api-key.ts +73 -0
- package/src/setup.ts +47 -8
- package/src/utils.ts +7 -0
- package/public/assets/agent-liveness-Bq-s73jW.js +0 -2
- package/public/assets/overview-DcYCrvlr.js +0 -2
- package/public/assets/provider-display-BEeLXC_D.js +0 -2
- package/public/assets/store-DKPDIZBe.js +0 -9
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i,wt as a}from"./store-DKPDIZBe.js";import{M as o}from"./provider-display-BEeLXC_D.js";import{c as s,n as c,o as l,s as u,t as d}from"./artifacts-DT-HkI5O.js";import{et as f,v as p,y as m}from"./display-CDeH4I8T.js";import{t as h}from"./api-CIIVBtAV.js";import{a as g,n as _,t as v}from"./popover-8w1TWKMG.js";import{a as y,i as b,n as x,r as S,t as C}from"./select-DTQMP4Dk.js";import{t as w}from"./check-B3M9Ug1P.js";import{t as T}from"./chevron-down-BoG3JCZn.js";import{i as E,r as D,t as O}from"./artifact-viewer-KRvSc7sl.js";import{t as k}from"./paperclip-CNpKZKum.js";import{t as ee}from"./refresh-cw-CfpvQcUn.js";import{t as A}from"./search-DjzbnTbf.js";import{t as te}from"./x-Bge17hWJ.js";import{t as j}from"./button-Do6Z3vvn.js";import{t as M}from"./badge-DqJRtj_p.js";import{t as N}from"./task-chip-CYj0mpoL.js";import{t as P}from"./input-CsTB6jIx.js";import{r as F,t as I}from"./card-C4QJ4hCW.js";var L=e(n(),1),R=r(),z={expired:`Expired`,unlinked:`Unlinked retention`,"size-cap":`Storage limit`};function ne({reload:e,agentsById:t}){let[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)([]),[s,c]=(0,L.useState)(!1),[l,u]=(0,L.useState)(null);return(0,L.useEffect)(()=>{let e=!1;return Promise.all([h(`GET`,`/artifacts/usage`),h(`GET`,`/artifacts/deletions?limit=100`)]).then(([t,n])=>{e||(r(t),a(n),u(null))},t=>{e||u(o(t))}),()=>{e=!0}},[e]),(0,R.jsxs)(`div`,{className:`space-y-3 rounded-lg border border-border px-3 py-3`,"data-testid":`artifact-retention`,children:[l&&(0,R.jsx)(`div`,{role:`alert`,className:`text-sm text-destructive`,children:l}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`min-w-0 space-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`div`,{className:`text-sm text-foreground`,children:[`Blob storage: `,n?m(n.totalBytes):`Loading…`]}),n&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{children:[m(n.unpinnedBytes),` unpinned / `,m(n.maxUnpinnedBytes),` limit; `,m(n.pinnedBytes),` pinned`]}),(0,R.jsxs)(`div`,{children:[`Unlinked files stay `,n.unlinkedRetentionDays,` days unless they expire or storage is full. Pinned files stay until unpinned. Limits are in Settings under Data retention.`]}),n.unpinnedBytes>n.maxUnpinnedBytes&&(0,R.jsx)(`div`,{className:`text-tone-warning-fg`,children:`Over the storage limit. Cleanup removes unlinked files first, then the oldest unpinned files. Pin files to keep them.`})]})]}),(0,R.jsx)(j,{size:`sm`,variant:`outline`,"aria-expanded":s,onClick:()=>c(e=>!e),children:`Recently deleted`})]}),s&&(0,R.jsxs)(`div`,{className:`space-y-2`,"data-testid":`artifact-deletions`,children:[(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Last `,i.length,` deletions`,n?`; history kept for ${n.deletionLogDays} days`:``,`. Deleted files cannot be restored.`]}),i.length===0?(0,R.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No recent deletions.`}):(0,R.jsx)(`ul`,{className:`divide-y divide-border`,children:i.map(e=>(0,R.jsxs)(`li`,{className:`space-y-1 py-2 text-xs`,children:[(0,R.jsx)(`div`,{className:`break-all font-medium`,children:e.filename??e.artifactId}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`break-all font-mono`,children:e.artifactId}),(0,R.jsx)(`span`,{children:m(e.size)}),(0,R.jsx)(D,{uploader:e.createdBy,agentsById:t}),(0,R.jsxs)(`span`,{children:[Math.floor(e.ageMs/864e5),` days old`]}),(0,R.jsx)(`span`,{children:z[e.reason]}),(0,R.jsx)(`time`,{children:p(e.deletedAt)})]})]},e.id))})]})]})}var B=`any`;function re({value:e,onChange:t,agentsById:n}){let[r,i]=(0,L.useState)(!1),[a,o]=(0,L.useState)(``),[s,c]=(0,L.useState)(``),[l,d]=(0,L.useState)(null),f=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(!r)return;let e=!1;return d(null),h(`GET`,`/artifacts/uploaders${s?`?q=${encodeURIComponent(s)}`:``}`).then(t=>{e||d(Array.isArray(t)?t:[])},()=>{e||d([])}),()=>{e=!0}},[r,s]);function p(e){o(e),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>c(e.trim()),250)}function y(e){t(e),i(!1)}return(0,R.jsxs)(v,{open:r,onOpenChange:i,children:[(0,R.jsxs)(g,{"aria-label":`Uploader`,className:`flex h-7 w-44 max-w-full items-center justify-between gap-1.5 rounded-[min(var(--radius-md),10px)] border border-input bg-transparent pr-2 pl-2.5 text-sm dark:bg-input/30 dark:hover:bg-input/50`,children:[(0,R.jsx)(`span`,{className:`min-w-0 truncate`,children:e===B?`All uploaders`:u(e,n)}),(0,R.jsx)(T,{className:`size-4 shrink-0 text-muted-foreground`})]}),(0,R.jsxs)(_,{align:`start`,className:`w-72 max-w-[calc(100vw-1rem)] gap-2 p-2`,children:[(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(A,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(P,{value:a,onChange:e=>p(e.target.value),placeholder:`Search uploaders`,"aria-label":`Search uploaders`,className:`h-8 pl-8`,autoFocus:!0})]}),(0,R.jsxs)(`ul`,{className:`max-h-64 overflow-y-auto overscroll-contain`,"aria-label":`Uploaders`,children:[(0,R.jsx)(V,{selected:e===B,onSelect:()=>y(B),label:`All uploaders`}),l===null&&(0,R.jsx)(`li`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`Loading…`}),l?.length===0&&(0,R.jsx)(`li`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No uploader matches`}),l?.map(t=>(0,R.jsx)(V,{selected:e===t.uploader,onSelect:()=>y(t.uploader),label:u(t.uploader,n),content:(0,R.jsx)(D,{uploader:t.uploader,agentsById:n}),detail:`${t.count} · ${m(t.size)}`},t.uploader))]})]})]})}function V({selected:e,onSelect:n,label:r,content:i,detail:a}){return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":e,title:r,className:t(`flex w-full min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted`,e&&`bg-muted`),children:[(0,R.jsx)(w,{"aria-hidden":!0,className:t(`h-3.5 w-3.5 shrink-0`,!e&&`invisible`)}),(0,R.jsx)(`span`,{className:`flex min-w-0 flex-1`,children:i??r}),a&&(0,R.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:a})]})})}var H=50,U=`any`,W=5,G=864e5,ie=[`image`,`document`,`archive`,`video`,`audio`,`avatar`,`other`],K={image:`bg-tone-info`,document:`bg-tone-purple`,archive:`bg-tone-orange`,video:`bg-tone-teal`,audio:`bg-tone-yellow`,avatar:`bg-tone-success`,other:`bg-tone-neutral`},q=[{value:U,label:`Any time`,ms:0},{value:`24h`,label:`Last 24 hours`,ms:G},{value:`7d`,label:`Last 7 days`,ms:7*G},{value:`30d`,label:`Last 30 days`,ms:30*G}],J=[{value:`newest`,label:`Newest first`,sort:`date`,order:`desc`},{value:`oldest`,label:`Oldest first`,sort:`date`,order:`asc`},{value:`largest`,label:`Largest first`,sort:`size`,order:`desc`},{value:`smallest`,label:`Smallest first`,sort:`size`,order:`asc`}],Y={q:``,kind:U,uploader:U,projectId:U,range:U,task:``,sort:`newest`};function ae(e){let t=Number(e.trim().replace(/^T/i,``));return Number.isSafeInteger(t)&&t>0?t:void 0}function X(e,t){let n=new URLSearchParams;e.q&&n.set(`q`,e.q),e.kind!==U&&n.set(`kind`,e.kind),e.uploader!==U&&n.set(`uploader`,e.uploader),e.projectId!==U&&n.set(`projectId`,e.projectId);let r=q.find(t=>t.value===e.range);r?.ms&&n.set(`since`,String(t-r.ms));let i=ae(e.task);return i&&n.set(`taskId`,String(i)),n}function Z(e,t,n){let r=X(e,t),i=J.find(t=>t.value===e.sort)??J[0];return r.set(`sort`,i.sort),r.set(`order`,i.order),r.set(`limit`,String(H)),n&&r.set(`offset`,String(n)),r.toString()}function oe(){let e=a(),n=s(),r=i(e=>e.agentsById),[{filters:c,anchor:l},u]=(0,L.useState)({filters:Y,anchor:Date.now()}),[d,f]=(0,L.useState)(``),[p,m]=(0,L.useState)(``),[g,_]=(0,L.useState)(0),[v,y]=(0,L.useState)(null),[b,x]=(0,L.useState)(null),[S,C]=(0,L.useState)(null),[w,T]=(0,L.useState)(null),E=(0,L.useRef)(null),D=X(c,l).toString(),O=D!==``,N=Z(c,l,0),F=v?.key!==N,I=v?.items??[],z=v?.stats??null;(0,L.useEffect)(()=>{let e=!1;return T(null),Promise.all([h(`GET`,`/artifacts?${N}`),h(`GET`,`/artifacts/stats${D?`?${D}`:``}`)]).then(([t,n])=>{e||(y({key:N,items:t,stats:n}),D||x(n))},t=>{e||(T(o(t)),y({key:N,items:[],stats:null}))}),()=>{e=!0}},[N,D,g,n]),(0,L.useEffect)(()=>{if(!O)return;let e=!1;return h(`GET`,`/artifacts/stats`).then(t=>{e||x(t)},()=>void 0),()=>{e=!0}},[O,g]);function B(e){u(t=>({filters:{...t.filters,...e},anchor:Date.now()}))}function V(){u(e=>({...e,anchor:Date.now()})),_(e=>e+1)}function H(e){E.current&&clearTimeout(E.current),E.current=setTimeout(()=>B(e),250)}function W(){E.current&&clearTimeout(E.current),f(``),m(``),u(e=>({filters:{...Y,sort:e.filters.sort},anchor:Date.now()}))}async function G(){let e=N;C(e);try{let t=await h(`GET`,`/artifacts?${Z(c,l,I.length)}`);y(n=>n?.key===e?{...n,items:[...n.items,...t]}:n)}catch(e){T(o(e))}finally{C(t=>t===e?null:t)}}let K=z?.count??0;return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(k,{className:`h-5 w-5 text-muted-foreground`}),(0,R.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Artifacts`}),b&&(0,R.jsx)(M,{variant:`secondary`,children:b.count})]}),(0,R.jsxs)(j,{size:`sm`,variant:`outline`,onClick:V,children:[(0,R.jsx)(ee,{className:`h-3.5 w-3.5`}),` Refresh`]})]}),(0,R.jsx)(ne,{reload:g+n,agentsById:r}),(0,R.jsx)(se,{stats:z,filtered:O,agentsById:r,onUploader:e=>B({uploader:e}),onKind:e=>B({kind:e})}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`artifact-filters`,children:[(0,R.jsxs)(`div`,{className:`relative w-full sm:w-64`,children:[(0,R.jsx)(A,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(P,{value:d,onChange:e=>{f(e.target.value),H({q:e.target.value.trim()})},placeholder:`Search name or art_ id`,"aria-label":`Search artifacts`,className:`h-8 pl-8`})]}),(0,R.jsx)(Q,{label:`Type`,value:c.kind,onChange:e=>B({kind:e}),className:`w-32`,options:[{value:U,label:`All types`},...ie.map(e=>({value:e,label:e}))]}),(0,R.jsx)(re,{value:c.uploader,onChange:e=>B({uploader:e}),agentsById:r}),(0,R.jsx)(Q,{label:`Project`,value:c.projectId,onChange:e=>B({projectId:e}),className:`w-36`,options:[{value:U,label:`All projects`},...(b?.projects??[]).map(e=>({value:e.projectId,label:e.slug??e.projectId}))]}),(0,R.jsx)(Q,{label:`Date`,value:c.range,onChange:e=>B({range:e}),className:`w-36`,options:[...q]}),(0,R.jsx)(P,{value:p,onChange:e=>{m(e.target.value),H({task:e.target.value})},placeholder:`Task, e.g. T5328`,"aria-label":`Filter by Task`,className:`h-8 w-32`}),(0,R.jsx)(Q,{label:`Sort`,value:c.sort,onChange:e=>B({sort:e}),className:`w-36`,options:[...J]}),O&&(0,R.jsxs)(j,{size:`sm`,variant:`ghost`,onClick:W,children:[(0,R.jsx)(te,{className:`h-3.5 w-3.5`}),` Clear`]})]}),w&&(0,R.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:w}),F&&I.length===0?(0,R.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading…`}):I.length===0?(0,R.jsx)(`div`,{className:`rounded-md border border-border px-3 py-12 text-center text-sm text-muted-foreground`,children:O?`No artifacts match these filters`:`No artifacts stored yet`}):(0,R.jsx)(`ul`,{className:t(`space-y-1.5`,F&&`opacity-60`),"data-testid":`artifact-list`,children:I.map(t=>(0,R.jsx)(ce,{artifact:t,now:e,agentsById:r},t.id))}),I.length>0&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[`Showing `,I.length,` of `,K]}),I.length<K&&(0,R.jsx)(j,{size:`sm`,variant:`outline`,onClick:()=>void G(),disabled:F||S===N,children:S===N?`Loading…`:`Load more`})]})]})}function Q({label:e,value:n,onChange:r,options:i,className:a}){return(0,R.jsxs)(C,{value:n,onValueChange:r,children:[(0,R.jsx)(b,{size:`sm`,"aria-label":e,className:t(`max-w-full`,a),children:(0,R.jsx)(y,{})}),(0,R.jsx)(x,{children:i.map(e=>(0,R.jsx)(S,{value:e.value,children:e.label},e.value))})]})}function se({stats:e,filtered:n,agentsById:r,onUploader:i,onKind:a}){let o=e?.size??0;return(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,2fr)_minmax(0,2fr)]`,"data-testid":`artifact-stats`,children:[(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`flex flex-row gap-6 md:flex-col md:gap-3`,children:[(0,R.jsx)($,{label:n?`Matching`:`Artifacts`,value:e?e.count.toLocaleString():`—`}),(0,R.jsx)($,{label:`Total size`,value:e?m(e.size):`—`})]})}),(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:`Size by type`}),(0,R.jsx)(`div`,{className:`flex h-2 overflow-hidden rounded-full bg-muted`,"aria-hidden":!0,children:e?.byKind.map(e=>(0,R.jsx)(`span`,{className:K[e.kind]??K.other,style:{width:`${o?e.size/o*100:0}%`}},e.kind))}),(0,R.jsx)(`ul`,{className:`grid grid-cols-1 gap-x-4 gap-y-0.5 text-xs sm:grid-cols-2`,children:e?.byKind.map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:()=>a(e.kind),className:`flex w-full min-w-0 items-center gap-2 rounded-sm text-left hover:underline`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:t(`h-2 w-2 shrink-0 rounded-full`,K[e.kind]??K.other)}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.kind}),(0,R.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[m(e.size),` · `,e.count]})]})},e.kind))})]})}),(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:`Top uploaders`}),(0,R.jsxs)(`ul`,{className:`space-y-0.5 text-xs`,children:[e?.uploaders.slice(0,W).map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:()=>i(e.uploader),className:`flex w-full min-w-0 items-center gap-2 rounded-sm text-left hover:underline`,children:[(0,R.jsx)(`span`,{className:`flex min-w-0 flex-1`,children:(0,R.jsx)(D,{uploader:e.uploader,agentsById:r})}),(0,R.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[e.count,` · `,m(e.size)]})]})},e.uploader)),e&&e.uploaders.length===0&&(0,R.jsx)(`li`,{className:`text-muted-foreground`,children:`None`})]})]})})]})}function $({label:e,value:t}){return(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,R.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums`,children:t})]})}function ce({artifact:e,now:t,agentsById:n}){let r=i(e=>e.openTaskDetailById),a=[...new Set((e.links??[]).filter(e=>e.entityType===`task`).map(e=>Number(e.entityId)))].filter(Number.isSafeInteger);return(0,R.jsxs)(`li`,{className:`flex min-w-0 items-start gap-3 rounded-lg border border-border px-3 py-2 transition-colors hover:bg-muted/50`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),className:`flex min-w-0 flex-1 items-start gap-3 text-left`,"aria-label":`Open ${d(e)}`,children:[(0,R.jsx)(O,{view:c(e),className:`mt-0.5 h-4 w-4 text-muted-foreground`}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:d(e)}),(0,R.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`font-mono`,children:e.id}),(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{children:e.kind}),(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{title:p(e.createdAt),children:f(t,e.createdAt)}),e.uploader&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{className:`flex min-w-0 max-w-48`,children:(0,R.jsx)(D,{uploader:e.uploader,agentsById:n})})]})]})]})]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 flex-col items-end gap-1`,children:[(0,R.jsx)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:m(e.size)}),(0,R.jsx)(E,{artifact:e},`${e.id}:${e.pinned}`),a.length>0&&(0,R.jsx)(`span`,{className:`flex flex-wrap justify-end gap-1`,children:a.map(e=>(0,R.jsx)(N,{id:e,compact:!0,onClick:()=>r(e)},e))})]})]})}export{oe as ArtifactsView};
|
|
2
|
-
//# sourceMappingURL=artifacts-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{o as t,p as n,u as r}from"./dist-DeW2Y1R5.js";import{t as i,wt as a}from"./store-BgDALGIX.js";import{M as o}from"./provider-display-bWwiuedV.js";import{c as s,n as c,o as l,s as u,t as d}from"./artifacts-Bjq-ZyBA.js";import{et as f,v as p,y as m}from"./display-BemJG1f_.js";import{t as h}from"./api-CIIVBtAV.js";import{a as g,n as _,t as v}from"./popover-8w1TWKMG.js";import{a as y,i as b,n as x,r as S,t as C}from"./select-DTQMP4Dk.js";import{t as w}from"./check-B3M9Ug1P.js";import{t as T}from"./chevron-down-BoG3JCZn.js";import{i as E,r as D,t as O}from"./artifact-viewer-tBpTrEPb.js";import{t as k}from"./paperclip-CNpKZKum.js";import{t as ee}from"./refresh-cw-CfpvQcUn.js";import{t as A}from"./search-DjzbnTbf.js";import{t as te}from"./x-Bge17hWJ.js";import{t as j}from"./button-Do6Z3vvn.js";import{t as M}from"./badge-DqJRtj_p.js";import{t as N}from"./task-chip-CYj0mpoL.js";import{t as P}from"./input-CsTB6jIx.js";import{r as F,t as I}from"./card-C4QJ4hCW.js";var L=e(n(),1),R=r(),z={expired:`Expired`,unlinked:`Unlinked retention`,"size-cap":`Storage limit`};function ne({reload:e,agentsById:t}){let[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)([]),[s,c]=(0,L.useState)(!1),[l,u]=(0,L.useState)(null);return(0,L.useEffect)(()=>{let e=!1;return Promise.all([h(`GET`,`/artifacts/usage`),h(`GET`,`/artifacts/deletions?limit=100`)]).then(([t,n])=>{e||(r(t),a(n),u(null))},t=>{e||u(o(t))}),()=>{e=!0}},[e]),(0,R.jsxs)(`div`,{className:`space-y-3 rounded-lg border border-border px-3 py-3`,"data-testid":`artifact-retention`,children:[l&&(0,R.jsx)(`div`,{role:`alert`,className:`text-sm text-destructive`,children:l}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`min-w-0 space-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`div`,{className:`text-sm text-foreground`,children:[`Blob storage: `,n?m(n.totalBytes):`Loading…`]}),n&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{children:[m(n.unpinnedBytes),` unpinned / `,m(n.maxUnpinnedBytes),` limit; `,m(n.pinnedBytes),` pinned`]}),(0,R.jsxs)(`div`,{children:[`Unlinked files stay `,n.unlinkedRetentionDays,` days unless they expire or storage is full. Pinned files stay until unpinned. Limits are in Settings under Data retention.`]}),n.unpinnedBytes>n.maxUnpinnedBytes&&(0,R.jsx)(`div`,{className:`text-tone-warning-fg`,children:`Over the storage limit. Cleanup removes unlinked files first, then the oldest unpinned files. Pin files to keep them.`})]})]}),(0,R.jsx)(j,{size:`sm`,variant:`outline`,"aria-expanded":s,onClick:()=>c(e=>!e),children:`Recently deleted`})]}),s&&(0,R.jsxs)(`div`,{className:`space-y-2`,"data-testid":`artifact-deletions`,children:[(0,R.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Last `,i.length,` deletions`,n?`; history kept for ${n.deletionLogDays} days`:``,`. Deleted files cannot be restored.`]}),i.length===0?(0,R.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No recent deletions.`}):(0,R.jsx)(`ul`,{className:`divide-y divide-border`,children:i.map(e=>(0,R.jsxs)(`li`,{className:`space-y-1 py-2 text-xs`,children:[(0,R.jsx)(`div`,{className:`break-all font-medium`,children:e.filename??e.artifactId}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`break-all font-mono`,children:e.artifactId}),(0,R.jsx)(`span`,{children:m(e.size)}),(0,R.jsx)(D,{uploader:e.createdBy,agentsById:t}),(0,R.jsxs)(`span`,{children:[Math.floor(e.ageMs/864e5),` days old`]}),(0,R.jsx)(`span`,{children:z[e.reason]}),(0,R.jsx)(`time`,{children:p(e.deletedAt)})]})]},e.id))})]})]})}var B=`any`;function re({value:e,onChange:t,agentsById:n}){let[r,i]=(0,L.useState)(!1),[a,o]=(0,L.useState)(``),[s,c]=(0,L.useState)(``),[l,d]=(0,L.useState)(null),f=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(!r)return;let e=!1;return d(null),h(`GET`,`/artifacts/uploaders${s?`?q=${encodeURIComponent(s)}`:``}`).then(t=>{e||d(Array.isArray(t)?t:[])},()=>{e||d([])}),()=>{e=!0}},[r,s]);function p(e){o(e),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>c(e.trim()),250)}function y(e){t(e),i(!1)}return(0,R.jsxs)(v,{open:r,onOpenChange:i,children:[(0,R.jsxs)(g,{"aria-label":`Uploader`,className:`flex h-7 w-44 max-w-full items-center justify-between gap-1.5 rounded-[min(var(--radius-md),10px)] border border-input bg-transparent pr-2 pl-2.5 text-sm dark:bg-input/30 dark:hover:bg-input/50`,children:[(0,R.jsx)(`span`,{className:`min-w-0 truncate`,children:e===B?`All uploaders`:u(e,n)}),(0,R.jsx)(T,{className:`size-4 shrink-0 text-muted-foreground`})]}),(0,R.jsxs)(_,{align:`start`,className:`w-72 max-w-[calc(100vw-1rem)] gap-2 p-2`,children:[(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(A,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(P,{value:a,onChange:e=>p(e.target.value),placeholder:`Search uploaders`,"aria-label":`Search uploaders`,className:`h-8 pl-8`,autoFocus:!0})]}),(0,R.jsxs)(`ul`,{className:`max-h-64 overflow-y-auto overscroll-contain`,"aria-label":`Uploaders`,children:[(0,R.jsx)(V,{selected:e===B,onSelect:()=>y(B),label:`All uploaders`}),l===null&&(0,R.jsx)(`li`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`Loading…`}),l?.length===0&&(0,R.jsx)(`li`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No uploader matches`}),l?.map(t=>(0,R.jsx)(V,{selected:e===t.uploader,onSelect:()=>y(t.uploader),label:u(t.uploader,n),content:(0,R.jsx)(D,{uploader:t.uploader,agentsById:n}),detail:`${t.count} · ${m(t.size)}`},t.uploader))]})]})]})}function V({selected:e,onSelect:n,label:r,content:i,detail:a}){return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":e,title:r,className:t(`flex w-full min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted`,e&&`bg-muted`),children:[(0,R.jsx)(w,{"aria-hidden":!0,className:t(`h-3.5 w-3.5 shrink-0`,!e&&`invisible`)}),(0,R.jsx)(`span`,{className:`flex min-w-0 flex-1`,children:i??r}),a&&(0,R.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:a})]})})}var H=50,U=`any`,W=5,G=864e5,ie=[`image`,`document`,`archive`,`video`,`audio`,`avatar`,`other`],K={image:`bg-tone-info`,document:`bg-tone-purple`,archive:`bg-tone-orange`,video:`bg-tone-teal`,audio:`bg-tone-yellow`,avatar:`bg-tone-success`,other:`bg-tone-neutral`},q=[{value:U,label:`Any time`,ms:0},{value:`24h`,label:`Last 24 hours`,ms:G},{value:`7d`,label:`Last 7 days`,ms:7*G},{value:`30d`,label:`Last 30 days`,ms:30*G}],J=[{value:`newest`,label:`Newest first`,sort:`date`,order:`desc`},{value:`oldest`,label:`Oldest first`,sort:`date`,order:`asc`},{value:`largest`,label:`Largest first`,sort:`size`,order:`desc`},{value:`smallest`,label:`Smallest first`,sort:`size`,order:`asc`}],Y={q:``,kind:U,uploader:U,projectId:U,range:U,task:``,sort:`newest`};function ae(e){let t=Number(e.trim().replace(/^T/i,``));return Number.isSafeInteger(t)&&t>0?t:void 0}function X(e,t){let n=new URLSearchParams;e.q&&n.set(`q`,e.q),e.kind!==U&&n.set(`kind`,e.kind),e.uploader!==U&&n.set(`uploader`,e.uploader),e.projectId!==U&&n.set(`projectId`,e.projectId);let r=q.find(t=>t.value===e.range);r?.ms&&n.set(`since`,String(t-r.ms));let i=ae(e.task);return i&&n.set(`taskId`,String(i)),n}function Z(e,t,n){let r=X(e,t),i=J.find(t=>t.value===e.sort)??J[0];return r.set(`sort`,i.sort),r.set(`order`,i.order),r.set(`limit`,String(H)),n&&r.set(`offset`,String(n)),r.toString()}function oe(){let e=a(),n=s(),r=i(e=>e.agentsById),[{filters:c,anchor:l},u]=(0,L.useState)({filters:Y,anchor:Date.now()}),[d,f]=(0,L.useState)(``),[p,m]=(0,L.useState)(``),[g,_]=(0,L.useState)(0),[v,y]=(0,L.useState)(null),[b,x]=(0,L.useState)(null),[S,C]=(0,L.useState)(null),[w,T]=(0,L.useState)(null),E=(0,L.useRef)(null),D=X(c,l).toString(),O=D!==``,N=Z(c,l,0),F=v?.key!==N,I=v?.items??[],z=v?.stats??null;(0,L.useEffect)(()=>{let e=!1;return T(null),Promise.all([h(`GET`,`/artifacts?${N}`),h(`GET`,`/artifacts/stats${D?`?${D}`:``}`)]).then(([t,n])=>{e||(y({key:N,items:t,stats:n}),D||x(n))},t=>{e||(T(o(t)),y({key:N,items:[],stats:null}))}),()=>{e=!0}},[N,D,g,n]),(0,L.useEffect)(()=>{if(!O)return;let e=!1;return h(`GET`,`/artifacts/stats`).then(t=>{e||x(t)},()=>void 0),()=>{e=!0}},[O,g]);function B(e){u(t=>({filters:{...t.filters,...e},anchor:Date.now()}))}function V(){u(e=>({...e,anchor:Date.now()})),_(e=>e+1)}function H(e){E.current&&clearTimeout(E.current),E.current=setTimeout(()=>B(e),250)}function W(){E.current&&clearTimeout(E.current),f(``),m(``),u(e=>({filters:{...Y,sort:e.filters.sort},anchor:Date.now()}))}async function G(){let e=N;C(e);try{let t=await h(`GET`,`/artifacts?${Z(c,l,I.length)}`);y(n=>n?.key===e?{...n,items:[...n.items,...t]}:n)}catch(e){T(o(e))}finally{C(t=>t===e?null:t)}}let K=z?.count??0;return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(k,{className:`h-5 w-5 text-muted-foreground`}),(0,R.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Artifacts`}),b&&(0,R.jsx)(M,{variant:`secondary`,children:b.count})]}),(0,R.jsxs)(j,{size:`sm`,variant:`outline`,onClick:V,children:[(0,R.jsx)(ee,{className:`h-3.5 w-3.5`}),` Refresh`]})]}),(0,R.jsx)(ne,{reload:g+n,agentsById:r}),(0,R.jsx)(se,{stats:z,filtered:O,agentsById:r,onUploader:e=>B({uploader:e}),onKind:e=>B({kind:e})}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`artifact-filters`,children:[(0,R.jsxs)(`div`,{className:`relative w-full sm:w-64`,children:[(0,R.jsx)(A,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,R.jsx)(P,{value:d,onChange:e=>{f(e.target.value),H({q:e.target.value.trim()})},placeholder:`Search name or art_ id`,"aria-label":`Search artifacts`,className:`h-8 pl-8`})]}),(0,R.jsx)(Q,{label:`Type`,value:c.kind,onChange:e=>B({kind:e}),className:`w-32`,options:[{value:U,label:`All types`},...ie.map(e=>({value:e,label:e}))]}),(0,R.jsx)(re,{value:c.uploader,onChange:e=>B({uploader:e}),agentsById:r}),(0,R.jsx)(Q,{label:`Project`,value:c.projectId,onChange:e=>B({projectId:e}),className:`w-36`,options:[{value:U,label:`All projects`},...(b?.projects??[]).map(e=>({value:e.projectId,label:e.slug??e.projectId}))]}),(0,R.jsx)(Q,{label:`Date`,value:c.range,onChange:e=>B({range:e}),className:`w-36`,options:[...q]}),(0,R.jsx)(P,{value:p,onChange:e=>{m(e.target.value),H({task:e.target.value})},placeholder:`Task, e.g. T5328`,"aria-label":`Filter by Task`,className:`h-8 w-32`}),(0,R.jsx)(Q,{label:`Sort`,value:c.sort,onChange:e=>B({sort:e}),className:`w-36`,options:[...J]}),O&&(0,R.jsxs)(j,{size:`sm`,variant:`ghost`,onClick:W,children:[(0,R.jsx)(te,{className:`h-3.5 w-3.5`}),` Clear`]})]}),w&&(0,R.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:w}),F&&I.length===0?(0,R.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading…`}):I.length===0?(0,R.jsx)(`div`,{className:`rounded-md border border-border px-3 py-12 text-center text-sm text-muted-foreground`,children:O?`No artifacts match these filters`:`No artifacts stored yet`}):(0,R.jsx)(`ul`,{className:t(`space-y-1.5`,F&&`opacity-60`),"data-testid":`artifact-list`,children:I.map(t=>(0,R.jsx)(ce,{artifact:t,now:e,agentsById:r},t.id))}),I.length>0&&(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[`Showing `,I.length,` of `,K]}),I.length<K&&(0,R.jsx)(j,{size:`sm`,variant:`outline`,onClick:()=>void G(),disabled:F||S===N,children:S===N?`Loading…`:`Load more`})]})]})}function Q({label:e,value:n,onChange:r,options:i,className:a}){return(0,R.jsxs)(C,{value:n,onValueChange:r,children:[(0,R.jsx)(b,{size:`sm`,"aria-label":e,className:t(`max-w-full`,a),children:(0,R.jsx)(y,{})}),(0,R.jsx)(x,{children:i.map(e=>(0,R.jsx)(S,{value:e.value,children:e.label},e.value))})]})}function se({stats:e,filtered:n,agentsById:r,onUploader:i,onKind:a}){let o=e?.size??0;return(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,2fr)_minmax(0,2fr)]`,"data-testid":`artifact-stats`,children:[(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`flex flex-row gap-6 md:flex-col md:gap-3`,children:[(0,R.jsx)($,{label:n?`Matching`:`Artifacts`,value:e?e.count.toLocaleString():`—`}),(0,R.jsx)($,{label:`Total size`,value:e?m(e.size):`—`})]})}),(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:`Size by type`}),(0,R.jsx)(`div`,{className:`flex h-2 overflow-hidden rounded-full bg-muted`,"aria-hidden":!0,children:e?.byKind.map(e=>(0,R.jsx)(`span`,{className:K[e.kind]??K.other,style:{width:`${o?e.size/o*100:0}%`}},e.kind))}),(0,R.jsx)(`ul`,{className:`grid grid-cols-1 gap-x-4 gap-y-0.5 text-xs sm:grid-cols-2`,children:e?.byKind.map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:()=>a(e.kind),className:`flex w-full min-w-0 items-center gap-2 rounded-sm text-left hover:underline`,children:[(0,R.jsx)(`span`,{"aria-hidden":!0,className:t(`h-2 w-2 shrink-0 rounded-full`,K[e.kind]??K.other)}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.kind}),(0,R.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[m(e.size),` · `,e.count]})]})},e.kind))})]})}),(0,R.jsx)(I,{size:`sm`,children:(0,R.jsxs)(F,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:`Top uploaders`}),(0,R.jsxs)(`ul`,{className:`space-y-0.5 text-xs`,children:[e?.uploaders.slice(0,W).map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(`button`,{type:`button`,onClick:()=>i(e.uploader),className:`flex w-full min-w-0 items-center gap-2 rounded-sm text-left hover:underline`,children:[(0,R.jsx)(`span`,{className:`flex min-w-0 flex-1`,children:(0,R.jsx)(D,{uploader:e.uploader,agentsById:r})}),(0,R.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[e.count,` · `,m(e.size)]})]})},e.uploader)),e&&e.uploaders.length===0&&(0,R.jsx)(`li`,{className:`text-muted-foreground`,children:`None`})]})]})})]})}function $({label:e,value:t}){return(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,R.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums`,children:t})]})}function ce({artifact:e,now:t,agentsById:n}){let r=i(e=>e.openTaskDetailById),a=[...new Set((e.links??[]).filter(e=>e.entityType===`task`).map(e=>Number(e.entityId)))].filter(Number.isSafeInteger);return(0,R.jsxs)(`li`,{className:`flex min-w-0 items-start gap-3 rounded-lg border border-border px-3 py-2 transition-colors hover:bg-muted/50`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),className:`flex min-w-0 flex-1 items-start gap-3 text-left`,"aria-label":`Open ${d(e)}`,children:[(0,R.jsx)(O,{view:c(e),className:`mt-0.5 h-4 w-4 text-muted-foreground`}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:d(e)}),(0,R.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{className:`font-mono`,children:e.id}),(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{children:e.kind}),(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{title:p(e.createdAt),children:f(t,e.createdAt)}),e.uploader&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,R.jsx)(`span`,{className:`flex min-w-0 max-w-48`,children:(0,R.jsx)(D,{uploader:e.uploader,agentsById:n})})]})]})]})]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 flex-col items-end gap-1`,children:[(0,R.jsx)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:m(e.size)}),(0,R.jsx)(E,{artifact:e},`${e.id}:${e.pinned}`),a.length>0&&(0,R.jsx)(`span`,{className:`flex flex-wrap justify-end gap-1`,children:a.map(e=>(0,R.jsx)(N,{id:e,compact:!0,onClick:()=>r(e)},e))})]})]})}export{oe as ArtifactsView};
|
|
2
|
+
//# sourceMappingURL=artifacts-BNkrynP1.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Vt as e}from"./store-
|
|
2
|
-
//# sourceMappingURL=artifacts-
|
|
1
|
+
import{Vt as e}from"./store-BgDALGIX.js";import"./provider-display-bWwiuedV.js";import{p as t}from"./display-BemJG1f_.js";var n=`art_[0-9a-f]{16}`,r=RegExp(`^${n}$`),i=new Set([`application/x-ndjson`,`application/xml`,`application/javascript`,`application/x-sh`,`application/yaml`,`application/toml`]),a=/\.(txt|log|out|err|ndjson|jsonl|csv|tsv|diff|patch|ts|tsx|js|mjs|cjs|py|sh|ya?ml|toml|xml|html|css|sql)$/;function o(e){return r.test(e)}function s(e){let t=e.mediaType.split(`;`)[0].trim().toLowerCase(),n=e.filename?.toLowerCase()??``;return t.startsWith(`image/`)?`image`:t===`text/markdown`||/\.(md|markdown)$/.test(n)?`markdown`:t===`application/json`||n.endsWith(`.json`)?`json`:t.startsWith(`text/`)||i.has(t)||a.test(n)?`text`:`binary`}function c(e){return e.filename||e.id}function l(e,n){return n[e]||e.startsWith(`agent-`)?t(e,n):e}var u=e(()=>({id:null,revision:0}));function d(e){u.setState({id:e})}function f(){u.setState({id:null})}function p(){return u(e=>e.id)}function m(){u.setState(e=>({revision:e.revision+1}))}function h(){return u(e=>e.revision)}export{o as a,h as c,f as i,p as l,s as n,d as o,m as r,l as s,c as t,n as u};
|
|
2
|
+
//# sourceMappingURL=artifacts-Bjq-ZyBA.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t,u as n}from"./dist-DeW2Y1R5.js";import{Lt as r,dt as i,ft as a,mt as o,r as s,t as c,ut as l,vt as u,wt as d}from"./store-DKPDIZBe.js";import{t as f}from"./provider-display-BEeLXC_D.js";import{et as p,v as m}from"./display-CDeH4I8T.js";import{t as h}from"./label-BPBzm9FJ.js";import{t as g}from"./switch-DuCA7mrB.js";import{t as _}from"./calendar-clock-CDG_KBhx.js";import{t as v}from"./file-text-CKuoMR2U.js";import{t as y}from"./pencil-B1Hf2V_J.js";import{t as b}from"./play-BbT8m7A0.js";import{t as x}from"./plus-D5Ek4e2S.js";import{t as S}from"./rotate-cw-FPtkDewA.js";import{t as C}from"./save-B_PGqSm4.js";import{t as w}from"./trash-2-FbcSq927.js";import{t as T}from"./button-Do6Z3vvn.js";import{t as E}from"./badge-DqJRtj_p.js";import{t as D}from"./input-CsTB6jIx.js";import{t as O}from"./log-viewer-Cib8nqdE.js";import{t as k}from"./textarea-hs6Mpyfl.js";import{o as A,r as j,s as M,t as N}from"./card-C4QJ4hCW.js";var P=e(t(),1),F=n(),I={command:``,cwd:``,timeoutSeconds:``};function L(e){return e?{command:e.command,cwd:e.cwd||``,timeoutSeconds:e.timeoutMs?String(e.timeoutMs/1e3):``}:I}function R(e){let t=e.command.trim();if(!t)return;let n=Number(e.timeoutSeconds);return{command:t,cwd:e.cwd.trim()||void 0,timeoutMs:e.timeoutSeconds.trim()&&Number.isFinite(n)?Math.round(n*1e3):void 0}}function ee({value:e,onChange:t}){return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Precheck`}),(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Optional script run on the host first. Exit 0 ends the run with no agent; exit 10 dispatches the target with the script output.`}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Command`}),(0,F.jsx)(D,{value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Cwd`}),(0,F.jsx)(D,{value:e.cwd,onChange:n=>t({...e,cwd:n.target.value})})]}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Timeout seconds`}),(0,F.jsx)(D,{type:`number`,min:1,step:`any`,value:e.timeoutSeconds,onChange:n=>t({...e,timeoutSeconds:n.target.value})})]})]})]})}function z({precheck:e,run:t}){if(!e)return null;let n=t?.meta?.precheck?.status;return(0,F.jsxs)(`span`,{title:e.command,children:[`precheck`,n?` ${n}`:``]})}var te={scheduled:`bg-tone-info/10 text-tone-info-fg border-tone-info/20`,dispatching:`bg-tone-sky/10 text-tone-sky-fg border-tone-sky/20`,waiting_agent:`bg-tone-yellow/10 text-tone-yellow-fg border-tone-yellow/20`,running:`bg-tone-success/10 text-tone-success-fg border-tone-success/20`,succeeded:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`,failed:`bg-tone-danger/10 text-tone-danger-fg border-tone-danger/20`,canceled:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`,timed_out:`bg-tone-danger/10 text-tone-danger-fg border-tone-danger/20`},ne=new Set([`scheduled`,`dispatching`,`waiting_agent`,`running`]);function B(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`budget elapsed`:e.status}function V(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`:te[e.status]||``}function H(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?void 0:e.error}function U(e){return ne.has(e.status)}function W(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function G(e){return typeof e==`string`&&e.length>0?e:void 0}function K(e){let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n?`${n}h ${r}m`:r?`${r}m ${i}s`:`${i}s`}function re(e){return W(e.meta?.runtimeBudgetDeadlineAt)??W(e.result?.deadlineAt)}function q(e,t){if(!e.startedAt)return`-`;let n=e.finishedAt||(U(e)?t:e.updatedAt);return K(Number(n)-Number(e.startedAt))}function J(e,t){let n=re(e);if(!(!n||!U(e)))return K(n-t)}function ie(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`runtime budget elapsed`:e.error}function Y(e,t,n){let r=e.targetAgentId||e.spawnedAgentId||G(e.meta?.runtimeAgentId),i=r?t.find(e=>e.id===r):void 0,a=r?n.flatMap(e=>e.managedAgents.map(t=>({orchestrator:e,managedAgent:t}))).find(({managedAgent:e})=>e.agentId===r):void 0,o=G(e.meta?.terminalSession)||G(e.meta?.tmuxSession)||G(e.meta?.sessionName)||G(i?.meta?.terminalSession)||G(i?.meta?.tmuxSession)||G(i?.meta?.sessionName)||a?.managedAgent.terminalSession||a?.managedAgent.tmuxSession||a?.managedAgent.sessionName,s=G(e.meta?.orchestratorId)||a?.orchestrator.id||e.orchestratorId;return o?{orchestratorId:s,session:o}:void 0}function X(e=``,t){let n=a(t);return{name:``,description:``,enabled:!0,schedule:`0 8 * * *`,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`,orchestratorId:e,targetMode:`existing_agent`,provider:n,model:i(n),effort:``,profile:r,label:``,tags:``,capabilities:``,ifNoMatch:`fail`,cwd:``,approvalMode:`guarded`,workspaceMode:`inherit`,keepAlive:!1,budgetMinutes:``,warningMinutes:``,warningMessage:``,precheck:I,concurrencyPolicy:`skip`,title:``,body:``,severity:`info`,dedupeKey:``,externalUrl:``}}function Z(e){let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return t.length?t:void 0}function Q(e){let t=e.targetPolicy;return{...X(e.orchestratorId),id:e.id,name:e.name,description:e.description||``,enabled:e.enabled,schedule:e.schedule,timezone:e.timezone,orchestratorId:e.orchestratorId,targetMode:t.mode,provider:t.mode===`on_demand_agent`?t.provider:t.selector.provider||f()[0]||``,model:t.mode===`on_demand_agent`?t.model||i(t.provider):``,effort:t.mode===`on_demand_agent`&&t.effort||``,profile:t.mode===`on_demand_agent`?t.profile||`worker`:r,label:t.mode===`existing_agent`&&t.selector.label||``,tags:t.mode===`existing_agent`?(t.selector.tags||[]).join(`, `):``,capabilities:t.mode===`existing_agent`?(t.selector.capabilities||[]).join(`, `):``,ifNoMatch:t.mode===`existing_agent`&&t.ifNoMatch||`fail`,cwd:t.mode===`on_demand_agent`&&t.cwd||``,approvalMode:t.mode===`on_demand_agent`&&t.approvalMode||`guarded`,workspaceMode:t.mode===`on_demand_agent`&&t.workspaceMode||`inherit`,keepAlive:t.mode===`on_demand_agent`&&!!t.keepAlive,budgetMinutes:t.mode===`on_demand_agent`&&t.runtimeBudget?String(Math.round(t.runtimeBudget.maxRuntimeMs/6e4)):``,warningMinutes:t.mode===`on_demand_agent`&&t.runtimeBudget?.warnAtMs!==void 0?String(Math.round(t.runtimeBudget.warnAtMs/6e4)):``,warningMessage:t.mode===`on_demand_agent`&&t.runtimeBudget?.warningMessage||``,precheck:L(t.precheck),concurrencyPolicy:e.concurrencyPolicy,title:e.taskTemplate.title,body:e.taskTemplate.body,severity:e.taskTemplate.severity||`info`,dedupeKey:e.taskTemplate.dedupeKey||``,externalUrl:e.taskTemplate.externalUrl||``}}function ae(e){let t=Number(e.budgetMinutes),n=Number(e.warningMinutes),r=e.targetMode===`on_demand_agent`&&e.budgetMinutes.trim()&&Number.isFinite(t)?{maxRuntimeMs:Math.round(t*6e4),warnAtMs:e.warningMinutes.trim()&&Number.isFinite(n)?Math.round(n*6e4):void 0,warningMessage:e.warningMessage.trim()||void 0}:void 0,i=e.targetMode===`existing_agent`?{mode:`existing_agent`,selector:{provider:e.provider||void 0,label:e.label.trim()||void 0,tags:Z(e.tags),capabilities:Z(e.capabilities)},ifNoMatch:e.ifNoMatch,precheck:R(e.precheck)}:{mode:`on_demand_agent`,provider:e.provider,model:e.model||void 0,effort:e.effort?e.effort:void 0,profile:e.profile||void 0,cwd:e.cwd.trim()||void 0,approvalMode:e.approvalMode,workspaceMode:e.workspaceMode,keepAlive:e.keepAlive,runtimeBudget:r,precheck:R(e.precheck)};return{kind:`scheduled_task`,name:e.name.trim(),description:e.description.trim()||void 0,enabled:e.enabled,schedule:e.schedule.trim(),timezone:e.timezone.trim()||`UTC`,catchUpPolicy:`skip`,concurrencyPolicy:e.concurrencyPolicy,orchestratorId:e.orchestratorId,targetPolicy:i,taskTemplate:{title:e.title.trim(),body:e.body.trim(),severity:e.severity,dedupeKey:e.dedupeKey.trim()||void 0,externalUrl:e.externalUrl.trim()||void 0}}}function oe(){let e=d(),t=c(e=>e.automations),n=c(e=>e.automationRuns),r=c(e=>e.orchestrators),i=c(e=>e.agents),a=c(e=>e.apiCall),o=c(e=>e.showError),s=c(e=>e.openConfirm),l=c(e=>e.fetchAutomations),u=c(e=>e.fetchAutomationRuns),f=c(e=>e.fetchTasks),p=c(e=>e.fetchProviderCatalog),m=c(e=>e.agentProfiles),[h,g]=(0,P.useState)(``),[v,y]=(0,P.useState)(()=>X(r[0]?.id||``,r[0])),[b,S]=(0,P.useState)(!1),[C,w]=(0,P.useState)(null),D=t.find(e=>e.id===h),O=r.filter(e=>e.status===`online`),k=n.filter(U);(0,P.useEffect)(()=>{Promise.all([l(),u(),p()])},[]),(0,P.useEffect)(()=>{!v.orchestratorId&&r[0]&&y(e=>({...e,orchestratorId:r[0].id}))},[r]);let A=(0,P.useMemo)(()=>{let e=new Map;for(let t of n){let n=e.get(t.automationId)||[];n.push(t),e.set(t.automationId,n)}return e},[n]);function j(){g(``),y(X(r[0]?.id||``,r[0]))}function M(e){g(e.id),y(Q(e))}async function N(){S(!0);try{let e=ae(v);if(v.id)await a(`PATCH`,`/automations/`+encodeURIComponent(v.id),e);else{let t=await a(`POST`,`/automations`,e);g(t.id),y(Q(t))}await Promise.all([l(),u()])}catch(e){o(`Save Failed`,e.message,e)}finally{S(!1)}}async function I(e,t){try{await a(`PATCH`,`/automations/`+encodeURIComponent(e.id),t),await l()}catch(e){o(`Update Failed`,e.message,e)}}async function L(e){try{await a(`POST`,`/automations/`+encodeURIComponent(e.id)+`/run`),await Promise.all([u(),f()])}catch(e){o(`Run Failed`,e.message,e)}}function R(e){s(`Delete Automation`,`Delete automation "${e.name}"?`,async()=>{try{await a(`DELETE`,`/automations/`+encodeURIComponent(e.id)),h===e.id&&j(),await Promise.all([l(),u()])}catch(e){o(`Delete Failed`,e.message,e)}})}return(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,F.jsx)(_,{className:`w-5 h-5 text-muted-foreground`}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Automation`}),(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Scheduled tasks`})]}),(0,F.jsxs)(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[(0,F.jsxs)(E,{variant:`outline`,className:`text-xs`,children:[t.length,` schedules`]}),(0,F.jsxs)(E,{variant:`outline`,className:`text-xs`,children:[k.length,` running`]}),(0,F.jsxs)(T,{size:`sm`,className:`gap-1`,onClick:j,children:[(0,F.jsx)(x,{className:`w-3.5 h-3.5`}),`New`]})]})]}),k.length>0&&(0,F.jsx)(se,{runs:k,automations:t,agents:i,orchestrators:r,now:e,logRunId:C,onToggleLogs:e=>w(t=>t===e?null:e)}),(0,F.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,F.jsx)(`div`,{className:`space-y-3`,children:t.length===0?(0,F.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:`No automations`}):t.map(t=>(0,F.jsx)(ce,{automation:t,runs:A.get(t.id)||[],now:e,selected:h===t.id,onEdit:()=>M(t),onRun:()=>L(t),onToggle:()=>I(t,{enabled:!t.enabled}),onDelete:()=>R(t)},t.id))}),(0,F.jsx)(le,{form:v,agentProfiles:m,selected:D,saving:b,orchestrators:O.length?O:r,onChange:e=>y(t=>({...t,...e})),onSave:N})]}),(0,F.jsx)(ue,{runs:n,automations:t,agents:i,orchestrators:r,now:e,logRunId:C,onToggleLogs:e=>w(t=>t===e?null:e)})]})}function se({runs:e,automations:t,agents:n,orchestrators:r,now:i,logRunId:a,onToggleLogs:o}){let s=new Map(t.map(e=>[e.id,e.name]));return(0,F.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/40`,children:[(0,F.jsx)(`div`,{className:`border-b border-border px-3 py-2 text-sm font-medium`,children:`Active runs`}),(0,F.jsx)(`div`,{className:`divide-y divide-border`,children:e.map(e=>{let t=Y(e,n,r),c=J(e,i);return(0,F.jsxs)(`div`,{className:`space-y-3 px-3 py-3`,children:[(0,F.jsxs)(`div`,{className:`grid gap-3 text-xs md:grid-cols-[minmax(12rem,1fr)_7rem_7rem_7rem_8rem_auto] md:items-center`,children:[(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsx)(`div`,{className:`truncate text-sm font-medium`,children:s.get(e.automationId)||e.automationId.slice(0,12)}),(0,F.jsx)(`div`,{className:`truncate font-mono text-muted-foreground`,children:e.targetAgentId||e.spawnedAgentId||G(e.meta?.onDemandLabel)||`-`})]}),(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] w-fit ${V(e)}`,children:B(e)}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`elapsed `}),q(e,i)]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`left `}),c||`-`]}),(0,F.jsx)(`div`,{className:`font-mono text-muted-foreground`,children:e.taskId?`T${e.taskId}`:`-`}),t&&(0,F.jsxs)(T,{type:`button`,size:`sm`,variant:`outline`,className:`h-7 gap-1 text-xs`,onClick:()=>o(e.id),children:[(0,F.jsx)(v,{className:`w-3 h-3`}),`Logs`]})]}),a===e.id&&t&&(0,F.jsx)(O,{orchestratorId:t.orchestratorId,session:t.session})]},e.id)})})]})}function ce({automation:e,runs:t,now:n,selected:r,onEdit:i,onRun:a,onToggle:o,onDelete:s}){let c=t[0],l=e.targetPolicy,u=l.mode===`existing_agent`?[l.selector.provider,l.selector.label?`label:${l.selector.label}`:``,...(l.selector.tags||[]).map(e=>`tag:${e}`),...(l.selector.capabilities||[]).map(e=>`cap:${e}`)].filter(Boolean).join(` `):`${l.provider} on demand`;return(0,F.jsxs)(N,{className:`${r?`ring-1 ring-primary/50`:``} ${e.enabled?``:`opacity-60`}`,children:[(0,F.jsx)(A,{className:`px-4 py-3`,children:(0,F.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,F.jsx)(g,{checked:e.enabled,onCheckedChange:o,className:`mt-0.5`}),(0,F.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,F.jsx)(M,{className:`text-sm truncate`,children:e.name}),(0,F.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-1.5 text-xs text-muted-foreground`,children:[(0,F.jsx)(`span`,{className:`font-mono`,children:e.schedule}),(0,F.jsx)(`span`,{children:e.timezone}),(0,F.jsx)(`span`,{children:e.orchestratorId}),(0,F.jsx)(`span`,{className:`truncate max-w-[28rem]`,children:u})]})]}),(0,F.jsxs)(`div`,{className:`flex gap-1`,children:[(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Run now`,onClick:a,children:(0,F.jsx)(b,{className:`w-3.5 h-3.5`})}),(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Edit`,onClick:i,children:(0,F.jsx)(y,{className:`w-3.5 h-3.5`})}),(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7 text-tone-danger-fg hover:text-tone-danger-fg`,title:`Delete`,onClick:s,children:(0,F.jsx)(w,{className:`w-3.5 h-3.5`})})]})]})}),(0,F.jsx)(j,{className:`px-4 pb-3 pt-0`,children:(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,F.jsxs)(`span`,{title:e.nextRunAt?m(e.nextRunAt):void 0,children:[`next `,e.nextRunAt?p(n,e.nextRunAt):`disabled`]}),c&&(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] ${V(c)}`,children:B(c)}),(0,F.jsx)(z,{precheck:l.precheck,run:c}),c?.taskId&&(0,F.jsxs)(`span`,{children:[`T`,c.taskId]}),c&&H(c)&&(0,F.jsx)(`span`,{className:`text-tone-danger-fg truncate`,children:H(c)})]})})]})}function le({form:e,selected:t,saving:n,orchestrators:r,agentProfiles:a,onChange:d,onSave:f}){let p=c(e=>e.providerCatalog),{providers:m,enabled:_}=o(r.find(t=>t.id===e.orchestratorId),p,e.provider),v=l(e.provider,p),y=v.find(t=>t.alias===e.model)?.efforts||[];function b(t){let n=u(r.find(e=>e.id===t),p)[0]||e.provider;d({orchestratorId:t,provider:n,model:i(n,p),effort:``})}function x(e){d({provider:e,model:i(e,p),effort:``})}return(0,F.jsxs)(`div`,{className:`rounded-lg border border-border bg-card p-4 space-y-4 h-fit xl:sticky xl:top-4`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`text-sm font-semibold`,children:t?`Edit schedule`:`New schedule`}),(0,F.jsx)(E,{variant:e.enabled?`default`:`secondary`,className:`ml-auto text-[10px]`,children:e.enabled?`enabled`:`disabled`})]}),(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Name`,children:(0,F.jsx)(D,{value:e.name,onChange:e=>d({name:e.target.value})})}),(0,F.jsx)($,{label:`Description`,children:(0,F.jsx)(D,{value:e.description,onChange:e=>d({description:e.target.value})})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Cron`,children:(0,F.jsx)(D,{value:e.schedule,onChange:e=>d({schedule:e.target.value}),className:`font-mono`})}),(0,F.jsx)($,{label:`Timezone`,children:(0,F.jsx)(D,{value:e.timezone,onChange:e=>d({timezone:e.target.value})})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Orchestrator`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.orchestratorId,onChange:e=>b(e.target.value),children:[(0,F.jsx)(`option`,{value:``,children:`Select`}),r.map(e=>(0,F.jsxs)(`option`,{value:e.id,children:[e.hostname,` (`,e.id,`)`]},e.id))]})}),(0,F.jsx)($,{label:`Concurrency`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.concurrencyPolicy,onChange:e=>d({concurrencyPolicy:e.target.value}),children:[(0,F.jsx)(`option`,{value:`skip`,children:`skip`}),(0,F.jsx)(`option`,{value:`replace`,children:`replace`}),(0,F.jsx)(`option`,{value:`queue`,children:`queue`})]})})]}),(0,F.jsxs)(`label`,{className:`flex items-center justify-between rounded-md border border-border px-3 py-2`,children:[(0,F.jsx)(`span`,{className:`text-sm`,children:`Enabled`}),(0,F.jsx)(g,{checked:e.enabled,onCheckedChange:e=>d({enabled:e})})]})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Target`}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,F.jsx)(T,{type:`button`,variant:e.targetMode===`existing_agent`?`default`:`outline`,onClick:()=>d({targetMode:`existing_agent`}),children:`Existing`}),(0,F.jsx)(T,{type:`button`,variant:e.targetMode===`on_demand_agent`?`default`:`outline`,onClick:()=>d({targetMode:`on_demand_agent`}),children:`On demand`})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Provider`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.provider,onChange:e=>x(e.target.value),disabled:!m.length,children:[!m.length&&(0,F.jsx)(`option`,{value:e.provider,children:`No providers available`}),m.map(e=>(0,F.jsx)(`option`,{value:e,children:_.includes(e)?e:`${e} (disabled)`},e))]})}),e.targetMode===`existing_agent`?(0,F.jsx)($,{label:`If no match`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.ifNoMatch,onChange:e=>d({ifNoMatch:e.target.value}),children:[(0,F.jsx)(`option`,{value:`fail`,children:`fail`}),(0,F.jsx)(`option`,{value:`spawn`,children:`spawn`})]})}):(0,F.jsx)($,{label:`Approval`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.approvalMode,onChange:e=>d({approvalMode:e.target.value}),children:[(0,F.jsx)(`option`,{value:`guarded`,children:`guarded`}),(0,F.jsx)(`option`,{value:`read-only`,children:`read-only`}),(0,F.jsx)(`option`,{value:`open`,children:`open`})]})})]}),e.targetMode===`on_demand_agent`&&(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Model`,children:(0,F.jsx)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.model,onChange:e=>d({model:e.target.value,effort:``}),children:v.map(e=>(0,F.jsx)(`option`,{value:e.alias,children:e.label},e.alias))})}),(0,F.jsx)($,{label:`Effort`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.effort,onChange:e=>d({effort:e.target.value}),disabled:!y.length,children:[(0,F.jsx)(`option`,{value:``,children:`Default`}),y.map(e=>(0,F.jsx)(`option`,{value:e,children:e},e))]})}),(0,F.jsx)($,{label:`Agent profile`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.profile||`worker`,onChange:e=>d({profile:e.target.value}),children:[!a.length&&(0,F.jsx)(`option`,{value:`worker`,children:`worker`}),s(a).map(e=>(0,F.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}),(0,F.jsx)($,{label:`Workspace`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.workspaceMode,onChange:e=>d({workspaceMode:e.target.value}),children:[(0,F.jsx)(`option`,{value:`inherit`,children:`inherit (default → isolated worktree)`}),(0,F.jsx)(`option`,{value:`shared`,children:`shared (run in the repo, commit to its branch)`}),(0,F.jsx)(`option`,{value:`isolated`,children:`isolated (fresh git worktree per run)`})]})})]}),e.targetMode===`existing_agent`?(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Label`,children:(0,F.jsx)(D,{value:e.label,onChange:e=>d({label:e.target.value})})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Tags`,children:(0,F.jsx)(D,{value:e.tags,onChange:e=>d({tags:e.target.value})})}),(0,F.jsx)($,{label:`Capabilities`,children:(0,F.jsx)(D,{value:e.capabilities,onChange:e=>d({capabilities:e.target.value})})})]})]}):(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Cwd`,children:(0,F.jsx)(D,{value:e.cwd,onChange:e=>d({cwd:e.target.value})})}),(0,F.jsxs)(`label`,{className:`flex items-center justify-between rounded-md border border-border px-3 py-2`,children:[(0,F.jsx)(`span`,{className:`text-sm`,children:`Keep alive`}),(0,F.jsx)(g,{checked:e.keepAlive,onCheckedChange:e=>d({keepAlive:e})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Budget minutes`,children:(0,F.jsx)(D,{type:`number`,min:1,step:1,value:e.budgetMinutes,onChange:e=>d({budgetMinutes:e.target.value})})}),(0,F.jsx)($,{label:`Warning minute`,children:(0,F.jsx)(D,{type:`number`,min:0,step:1,value:e.warningMinutes,onChange:e=>d({warningMinutes:e.target.value})})})]}),(0,F.jsx)($,{label:`Warning message`,children:(0,F.jsx)(k,{value:e.warningMessage,onChange:e=>d({warningMessage:e.target.value}),className:`min-h-20`})})]})]}),(0,F.jsx)(ee,{value:e.precheck,onChange:e=>d({precheck:e})}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Task`}),(0,F.jsx)($,{label:`Title`,children:(0,F.jsx)(D,{value:e.title,onChange:e=>d({title:e.target.value})})}),(0,F.jsx)($,{label:`Body`,children:(0,F.jsx)(k,{value:e.body,onChange:e=>d({body:e.target.value}),className:`min-h-28`})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,F.jsx)($,{label:`Severity`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.severity,onChange:e=>d({severity:e.target.value}),children:[(0,F.jsx)(`option`,{value:`info`,children:`info`}),(0,F.jsx)(`option`,{value:`warning`,children:`warning`}),(0,F.jsx)(`option`,{value:`critical`,children:`critical`})]})}),(0,F.jsx)($,{label:`Dedupe key`,children:(0,F.jsx)(D,{value:e.dedupeKey,onChange:e=>d({dedupeKey:e.target.value})})}),(0,F.jsx)($,{label:`External URL`,children:(0,F.jsx)(D,{value:e.externalUrl,onChange:e=>d({externalUrl:e.target.value})})})]})]}),(0,F.jsxs)(T,{className:`w-full gap-2`,onClick:f,disabled:n||!e.name||!e.schedule||!e.orchestratorId||!e.title||!e.body,children:[n?(0,F.jsx)(S,{className:`w-4 h-4 animate-spin`}):(0,F.jsx)(C,{className:`w-4 h-4`}),`Save`]})]})}function $({label:e,children:t}){return(0,F.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,F.jsx)(h,{className:`text-xs text-muted-foreground`,children:e}),t]})}function ue({runs:e,automations:t,agents:n,orchestrators:r,now:i,logRunId:a,onToggleLogs:o}){let s=new Map(t.map(e=>[e.id,e.name]));return(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Runs`}),(0,F.jsx)(E,{variant:`secondary`,className:`text-[10px]`,children:e.length})]}),(0,F.jsxs)(`div`,{className:`rounded-lg border border-border overflow-x-auto`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-[minmax(10rem,1fr)_8rem_8rem_7rem_7rem_5rem] gap-3 bg-muted/30 px-3 py-2 text-xs text-muted-foreground`,children:[(0,F.jsx)(`span`,{children:`Automation`}),(0,F.jsx)(`span`,{children:`Status`}),(0,F.jsx)(`span`,{children:`Agent`}),(0,F.jsx)(`span`,{children:`Runtime`}),(0,F.jsx)(`span`,{children:`Updated`}),(0,F.jsx)(`span`,{children:`Logs`})]}),e.length===0?(0,F.jsx)(`div`,{className:`px-3 py-10 text-center text-sm text-muted-foreground`,children:`No runs`}):e.slice(0,80).map(e=>{let t=Y(e,n,r),c=J(e,i),l=ie(e);return(0,F.jsxs)(`div`,{className:`border-t border-border`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-[minmax(10rem,1fr)_8rem_8rem_7rem_7rem_5rem] gap-3 px-3 py-2 text-xs items-center`,children:[(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsx)(`div`,{className:`truncate`,children:s.get(e.automationId)||e.automationId.slice(0,12)}),(0,F.jsxs)(`div`,{className:`truncate text-muted-foreground`,children:[e.taskId?`T${e.taskId}`:`no task`,c?` · ${c} left`:``,l?` · ${l}`:``]})]}),(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] w-fit ${V(e)}`,children:B(e)}),(0,F.jsx)(`span`,{className:`truncate font-mono text-muted-foreground`,children:e.targetAgentId||e.spawnedAgentId||`-`}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:q(e,i)}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,title:m(e.updatedAt),children:p(i,e.updatedAt)}),t?(0,F.jsx)(T,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0`,title:`Open logs`,onClick:()=>o(e.id),children:(0,F.jsx)(v,{className:`w-3.5 h-3.5`})}):(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`-`})]}),a===e.id&&t&&(0,F.jsx)(`div`,{className:`border-t border-border px-3 py-3`,children:(0,F.jsx)(O,{orchestratorId:t.orchestratorId,session:t.session})})]},e.id)})]})]})}export{oe as AutomationView};
|
|
2
|
-
//# sourceMappingURL=automation-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t,u as n}from"./dist-DeW2Y1R5.js";import{Lt as r,dt as i,ft as a,mt as o,r as s,t as c,ut as l,vt as u,wt as d}from"./store-BgDALGIX.js";import{t as f}from"./provider-display-bWwiuedV.js";import{et as p,v as m}from"./display-BemJG1f_.js";import{t as h}from"./label-BPBzm9FJ.js";import{t as g}from"./switch-DuCA7mrB.js";import{t as _}from"./calendar-clock-CDG_KBhx.js";import{t as v}from"./file-text-CKuoMR2U.js";import{t as y}from"./pencil-B1Hf2V_J.js";import{t as b}from"./play-BbT8m7A0.js";import{t as x}from"./plus-D5Ek4e2S.js";import{t as S}from"./rotate-cw-FPtkDewA.js";import{t as C}from"./save-B_PGqSm4.js";import{t as w}from"./trash-2-FbcSq927.js";import{t as T}from"./button-Do6Z3vvn.js";import{t as E}from"./badge-DqJRtj_p.js";import{t as D}from"./input-CsTB6jIx.js";import{t as O}from"./log-viewer-PH4zVn24.js";import{t as k}from"./textarea-hs6Mpyfl.js";import{o as A,r as j,s as M,t as N}from"./card-C4QJ4hCW.js";var P=e(t(),1),F=n(),I={command:``,cwd:``,timeoutSeconds:``};function L(e){return e?{command:e.command,cwd:e.cwd||``,timeoutSeconds:e.timeoutMs?String(e.timeoutMs/1e3):``}:I}function R(e){let t=e.command.trim();if(!t)return;let n=Number(e.timeoutSeconds);return{command:t,cwd:e.cwd.trim()||void 0,timeoutMs:e.timeoutSeconds.trim()&&Number.isFinite(n)?Math.round(n*1e3):void 0}}function ee({value:e,onChange:t}){return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Precheck`}),(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Optional script run on the host first. Exit 0 ends the run with no agent; exit 10 dispatches the target with the script output.`}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Command`}),(0,F.jsx)(D,{value:e.command,onChange:n=>t({...e,command:n.target.value})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Cwd`}),(0,F.jsx)(D,{value:e.cwd,onChange:n=>t({...e,cwd:n.target.value})})]}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(h,{className:`text-xs`,children:`Timeout seconds`}),(0,F.jsx)(D,{type:`number`,min:1,step:`any`,value:e.timeoutSeconds,onChange:n=>t({...e,timeoutSeconds:n.target.value})})]})]})]})}function z({precheck:e,run:t}){if(!e)return null;let n=t?.meta?.precheck?.status;return(0,F.jsxs)(`span`,{title:e.command,children:[`precheck`,n?` ${n}`:``]})}var te={scheduled:`bg-tone-info/10 text-tone-info-fg border-tone-info/20`,dispatching:`bg-tone-sky/10 text-tone-sky-fg border-tone-sky/20`,waiting_agent:`bg-tone-yellow/10 text-tone-yellow-fg border-tone-yellow/20`,running:`bg-tone-success/10 text-tone-success-fg border-tone-success/20`,succeeded:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`,failed:`bg-tone-danger/10 text-tone-danger-fg border-tone-danger/20`,canceled:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`,timed_out:`bg-tone-danger/10 text-tone-danger-fg border-tone-danger/20`},ne=new Set([`scheduled`,`dispatching`,`waiting_agent`,`running`]);function B(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`budget elapsed`:e.status}function V(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`:te[e.status]||``}function H(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?void 0:e.error}function U(e){return ne.has(e.status)}function W(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function G(e){return typeof e==`string`&&e.length>0?e:void 0}function K(e){let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n?`${n}h ${r}m`:r?`${r}m ${i}s`:`${i}s`}function re(e){return W(e.meta?.runtimeBudgetDeadlineAt)??W(e.result?.deadlineAt)}function q(e,t){if(!e.startedAt)return`-`;let n=e.finishedAt||(U(e)?t:e.updatedAt);return K(Number(n)-Number(e.startedAt))}function J(e,t){let n=re(e);if(!(!n||!U(e)))return K(n-t)}function ie(e){return e.status===`timed_out`&&e.result?.runtimeBudgetElapsed===!0?`runtime budget elapsed`:e.error}function Y(e,t,n){let r=e.targetAgentId||e.spawnedAgentId||G(e.meta?.runtimeAgentId),i=r?t.find(e=>e.id===r):void 0,a=r?n.flatMap(e=>e.managedAgents.map(t=>({orchestrator:e,managedAgent:t}))).find(({managedAgent:e})=>e.agentId===r):void 0,o=G(e.meta?.terminalSession)||G(e.meta?.tmuxSession)||G(e.meta?.sessionName)||G(i?.meta?.terminalSession)||G(i?.meta?.tmuxSession)||G(i?.meta?.sessionName)||a?.managedAgent.terminalSession||a?.managedAgent.tmuxSession||a?.managedAgent.sessionName,s=G(e.meta?.orchestratorId)||a?.orchestrator.id||e.orchestratorId;return o?{orchestratorId:s,session:o}:void 0}function X(e=``,t){let n=a(t);return{name:``,description:``,enabled:!0,schedule:`0 8 * * *`,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`,orchestratorId:e,targetMode:`existing_agent`,provider:n,model:i(n),effort:``,profile:r,label:``,tags:``,capabilities:``,ifNoMatch:`fail`,cwd:``,approvalMode:`guarded`,workspaceMode:`inherit`,keepAlive:!1,budgetMinutes:``,warningMinutes:``,warningMessage:``,precheck:I,concurrencyPolicy:`skip`,title:``,body:``,severity:`info`,dedupeKey:``,externalUrl:``}}function Z(e){let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return t.length?t:void 0}function Q(e){let t=e.targetPolicy;return{...X(e.orchestratorId),id:e.id,name:e.name,description:e.description||``,enabled:e.enabled,schedule:e.schedule,timezone:e.timezone,orchestratorId:e.orchestratorId,targetMode:t.mode,provider:t.mode===`on_demand_agent`?t.provider:t.selector.provider||f()[0]||``,model:t.mode===`on_demand_agent`?t.model||i(t.provider):``,effort:t.mode===`on_demand_agent`&&t.effort||``,profile:t.mode===`on_demand_agent`?t.profile||`worker`:r,label:t.mode===`existing_agent`&&t.selector.label||``,tags:t.mode===`existing_agent`?(t.selector.tags||[]).join(`, `):``,capabilities:t.mode===`existing_agent`?(t.selector.capabilities||[]).join(`, `):``,ifNoMatch:t.mode===`existing_agent`&&t.ifNoMatch||`fail`,cwd:t.mode===`on_demand_agent`&&t.cwd||``,approvalMode:t.mode===`on_demand_agent`&&t.approvalMode||`guarded`,workspaceMode:t.mode===`on_demand_agent`&&t.workspaceMode||`inherit`,keepAlive:t.mode===`on_demand_agent`&&!!t.keepAlive,budgetMinutes:t.mode===`on_demand_agent`&&t.runtimeBudget?String(Math.round(t.runtimeBudget.maxRuntimeMs/6e4)):``,warningMinutes:t.mode===`on_demand_agent`&&t.runtimeBudget?.warnAtMs!==void 0?String(Math.round(t.runtimeBudget.warnAtMs/6e4)):``,warningMessage:t.mode===`on_demand_agent`&&t.runtimeBudget?.warningMessage||``,precheck:L(t.precheck),concurrencyPolicy:e.concurrencyPolicy,title:e.taskTemplate.title,body:e.taskTemplate.body,severity:e.taskTemplate.severity||`info`,dedupeKey:e.taskTemplate.dedupeKey||``,externalUrl:e.taskTemplate.externalUrl||``}}function ae(e){let t=Number(e.budgetMinutes),n=Number(e.warningMinutes),r=e.targetMode===`on_demand_agent`&&e.budgetMinutes.trim()&&Number.isFinite(t)?{maxRuntimeMs:Math.round(t*6e4),warnAtMs:e.warningMinutes.trim()&&Number.isFinite(n)?Math.round(n*6e4):void 0,warningMessage:e.warningMessage.trim()||void 0}:void 0,i=e.targetMode===`existing_agent`?{mode:`existing_agent`,selector:{provider:e.provider||void 0,label:e.label.trim()||void 0,tags:Z(e.tags),capabilities:Z(e.capabilities)},ifNoMatch:e.ifNoMatch,precheck:R(e.precheck)}:{mode:`on_demand_agent`,provider:e.provider,model:e.model||void 0,effort:e.effort?e.effort:void 0,profile:e.profile||void 0,cwd:e.cwd.trim()||void 0,approvalMode:e.approvalMode,workspaceMode:e.workspaceMode,keepAlive:e.keepAlive,runtimeBudget:r,precheck:R(e.precheck)};return{kind:`scheduled_task`,name:e.name.trim(),description:e.description.trim()||void 0,enabled:e.enabled,schedule:e.schedule.trim(),timezone:e.timezone.trim()||`UTC`,catchUpPolicy:`skip`,concurrencyPolicy:e.concurrencyPolicy,orchestratorId:e.orchestratorId,targetPolicy:i,taskTemplate:{title:e.title.trim(),body:e.body.trim(),severity:e.severity,dedupeKey:e.dedupeKey.trim()||void 0,externalUrl:e.externalUrl.trim()||void 0}}}function oe(){let e=d(),t=c(e=>e.automations),n=c(e=>e.automationRuns),r=c(e=>e.orchestrators),i=c(e=>e.agents),a=c(e=>e.apiCall),o=c(e=>e.showError),s=c(e=>e.openConfirm),l=c(e=>e.fetchAutomations),u=c(e=>e.fetchAutomationRuns),f=c(e=>e.fetchTasks),p=c(e=>e.fetchProviderCatalog),m=c(e=>e.agentProfiles),[h,g]=(0,P.useState)(``),[v,y]=(0,P.useState)(()=>X(r[0]?.id||``,r[0])),[b,S]=(0,P.useState)(!1),[C,w]=(0,P.useState)(null),D=t.find(e=>e.id===h),O=r.filter(e=>e.status===`online`),k=n.filter(U);(0,P.useEffect)(()=>{Promise.all([l(),u(),p()])},[]),(0,P.useEffect)(()=>{!v.orchestratorId&&r[0]&&y(e=>({...e,orchestratorId:r[0].id}))},[r]);let A=(0,P.useMemo)(()=>{let e=new Map;for(let t of n){let n=e.get(t.automationId)||[];n.push(t),e.set(t.automationId,n)}return e},[n]);function j(){g(``),y(X(r[0]?.id||``,r[0]))}function M(e){g(e.id),y(Q(e))}async function N(){S(!0);try{let e=ae(v);if(v.id)await a(`PATCH`,`/automations/`+encodeURIComponent(v.id),e);else{let t=await a(`POST`,`/automations`,e);g(t.id),y(Q(t))}await Promise.all([l(),u()])}catch(e){o(`Save Failed`,e.message,e)}finally{S(!1)}}async function I(e,t){try{await a(`PATCH`,`/automations/`+encodeURIComponent(e.id),t),await l()}catch(e){o(`Update Failed`,e.message,e)}}async function L(e){try{await a(`POST`,`/automations/`+encodeURIComponent(e.id)+`/run`),await Promise.all([u(),f()])}catch(e){o(`Run Failed`,e.message,e)}}function R(e){s(`Delete Automation`,`Delete automation "${e.name}"?`,async()=>{try{await a(`DELETE`,`/automations/`+encodeURIComponent(e.id)),h===e.id&&j(),await Promise.all([l(),u()])}catch(e){o(`Delete Failed`,e.message,e)}})}return(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,F.jsx)(_,{className:`w-5 h-5 text-muted-foreground`}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Automation`}),(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Scheduled tasks`})]}),(0,F.jsxs)(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[(0,F.jsxs)(E,{variant:`outline`,className:`text-xs`,children:[t.length,` schedules`]}),(0,F.jsxs)(E,{variant:`outline`,className:`text-xs`,children:[k.length,` running`]}),(0,F.jsxs)(T,{size:`sm`,className:`gap-1`,onClick:j,children:[(0,F.jsx)(x,{className:`w-3.5 h-3.5`}),`New`]})]})]}),k.length>0&&(0,F.jsx)(se,{runs:k,automations:t,agents:i,orchestrators:r,now:e,logRunId:C,onToggleLogs:e=>w(t=>t===e?null:e)}),(0,F.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,F.jsx)(`div`,{className:`space-y-3`,children:t.length===0?(0,F.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:`No automations`}):t.map(t=>(0,F.jsx)(ce,{automation:t,runs:A.get(t.id)||[],now:e,selected:h===t.id,onEdit:()=>M(t),onRun:()=>L(t),onToggle:()=>I(t,{enabled:!t.enabled}),onDelete:()=>R(t)},t.id))}),(0,F.jsx)(le,{form:v,agentProfiles:m,selected:D,saving:b,orchestrators:O.length?O:r,onChange:e=>y(t=>({...t,...e})),onSave:N})]}),(0,F.jsx)(ue,{runs:n,automations:t,agents:i,orchestrators:r,now:e,logRunId:C,onToggleLogs:e=>w(t=>t===e?null:e)})]})}function se({runs:e,automations:t,agents:n,orchestrators:r,now:i,logRunId:a,onToggleLogs:o}){let s=new Map(t.map(e=>[e.id,e.name]));return(0,F.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/40`,children:[(0,F.jsx)(`div`,{className:`border-b border-border px-3 py-2 text-sm font-medium`,children:`Active runs`}),(0,F.jsx)(`div`,{className:`divide-y divide-border`,children:e.map(e=>{let t=Y(e,n,r),c=J(e,i);return(0,F.jsxs)(`div`,{className:`space-y-3 px-3 py-3`,children:[(0,F.jsxs)(`div`,{className:`grid gap-3 text-xs md:grid-cols-[minmax(12rem,1fr)_7rem_7rem_7rem_8rem_auto] md:items-center`,children:[(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsx)(`div`,{className:`truncate text-sm font-medium`,children:s.get(e.automationId)||e.automationId.slice(0,12)}),(0,F.jsx)(`div`,{className:`truncate font-mono text-muted-foreground`,children:e.targetAgentId||e.spawnedAgentId||G(e.meta?.onDemandLabel)||`-`})]}),(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] w-fit ${V(e)}`,children:B(e)}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`elapsed `}),q(e,i)]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`left `}),c||`-`]}),(0,F.jsx)(`div`,{className:`font-mono text-muted-foreground`,children:e.taskId?`T${e.taskId}`:`-`}),t&&(0,F.jsxs)(T,{type:`button`,size:`sm`,variant:`outline`,className:`h-7 gap-1 text-xs`,onClick:()=>o(e.id),children:[(0,F.jsx)(v,{className:`w-3 h-3`}),`Logs`]})]}),a===e.id&&t&&(0,F.jsx)(O,{orchestratorId:t.orchestratorId,session:t.session})]},e.id)})})]})}function ce({automation:e,runs:t,now:n,selected:r,onEdit:i,onRun:a,onToggle:o,onDelete:s}){let c=t[0],l=e.targetPolicy,u=l.mode===`existing_agent`?[l.selector.provider,l.selector.label?`label:${l.selector.label}`:``,...(l.selector.tags||[]).map(e=>`tag:${e}`),...(l.selector.capabilities||[]).map(e=>`cap:${e}`)].filter(Boolean).join(` `):`${l.provider} on demand`;return(0,F.jsxs)(N,{className:`${r?`ring-1 ring-primary/50`:``} ${e.enabled?``:`opacity-60`}`,children:[(0,F.jsx)(A,{className:`px-4 py-3`,children:(0,F.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,F.jsx)(g,{checked:e.enabled,onCheckedChange:o,className:`mt-0.5`}),(0,F.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,F.jsx)(M,{className:`text-sm truncate`,children:e.name}),(0,F.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-1.5 text-xs text-muted-foreground`,children:[(0,F.jsx)(`span`,{className:`font-mono`,children:e.schedule}),(0,F.jsx)(`span`,{children:e.timezone}),(0,F.jsx)(`span`,{children:e.orchestratorId}),(0,F.jsx)(`span`,{className:`truncate max-w-[28rem]`,children:u})]})]}),(0,F.jsxs)(`div`,{className:`flex gap-1`,children:[(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Run now`,onClick:a,children:(0,F.jsx)(b,{className:`w-3.5 h-3.5`})}),(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7`,title:`Edit`,onClick:i,children:(0,F.jsx)(y,{className:`w-3.5 h-3.5`})}),(0,F.jsx)(T,{size:`icon`,variant:`ghost`,className:`h-7 w-7 text-tone-danger-fg hover:text-tone-danger-fg`,title:`Delete`,onClick:s,children:(0,F.jsx)(w,{className:`w-3.5 h-3.5`})})]})]})}),(0,F.jsx)(j,{className:`px-4 pb-3 pt-0`,children:(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,F.jsxs)(`span`,{title:e.nextRunAt?m(e.nextRunAt):void 0,children:[`next `,e.nextRunAt?p(n,e.nextRunAt):`disabled`]}),c&&(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] ${V(c)}`,children:B(c)}),(0,F.jsx)(z,{precheck:l.precheck,run:c}),c?.taskId&&(0,F.jsxs)(`span`,{children:[`T`,c.taskId]}),c&&H(c)&&(0,F.jsx)(`span`,{className:`text-tone-danger-fg truncate`,children:H(c)})]})})]})}function le({form:e,selected:t,saving:n,orchestrators:r,agentProfiles:a,onChange:d,onSave:f}){let p=c(e=>e.providerCatalog),{providers:m,enabled:_}=o(r.find(t=>t.id===e.orchestratorId),p,e.provider),v=l(e.provider,p),y=v.find(t=>t.alias===e.model)?.efforts||[];function b(t){let n=u(r.find(e=>e.id===t),p)[0]||e.provider;d({orchestratorId:t,provider:n,model:i(n,p),effort:``})}function x(e){d({provider:e,model:i(e,p),effort:``})}return(0,F.jsxs)(`div`,{className:`rounded-lg border border-border bg-card p-4 space-y-4 h-fit xl:sticky xl:top-4`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`text-sm font-semibold`,children:t?`Edit schedule`:`New schedule`}),(0,F.jsx)(E,{variant:e.enabled?`default`:`secondary`,className:`ml-auto text-[10px]`,children:e.enabled?`enabled`:`disabled`})]}),(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Name`,children:(0,F.jsx)(D,{value:e.name,onChange:e=>d({name:e.target.value})})}),(0,F.jsx)($,{label:`Description`,children:(0,F.jsx)(D,{value:e.description,onChange:e=>d({description:e.target.value})})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Cron`,children:(0,F.jsx)(D,{value:e.schedule,onChange:e=>d({schedule:e.target.value}),className:`font-mono`})}),(0,F.jsx)($,{label:`Timezone`,children:(0,F.jsx)(D,{value:e.timezone,onChange:e=>d({timezone:e.target.value})})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Orchestrator`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.orchestratorId,onChange:e=>b(e.target.value),children:[(0,F.jsx)(`option`,{value:``,children:`Select`}),r.map(e=>(0,F.jsxs)(`option`,{value:e.id,children:[e.hostname,` (`,e.id,`)`]},e.id))]})}),(0,F.jsx)($,{label:`Concurrency`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.concurrencyPolicy,onChange:e=>d({concurrencyPolicy:e.target.value}),children:[(0,F.jsx)(`option`,{value:`skip`,children:`skip`}),(0,F.jsx)(`option`,{value:`replace`,children:`replace`}),(0,F.jsx)(`option`,{value:`queue`,children:`queue`})]})})]}),(0,F.jsxs)(`label`,{className:`flex items-center justify-between rounded-md border border-border px-3 py-2`,children:[(0,F.jsx)(`span`,{className:`text-sm`,children:`Enabled`}),(0,F.jsx)(g,{checked:e.enabled,onCheckedChange:e=>d({enabled:e})})]})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Target`}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,F.jsx)(T,{type:`button`,variant:e.targetMode===`existing_agent`?`default`:`outline`,onClick:()=>d({targetMode:`existing_agent`}),children:`Existing`}),(0,F.jsx)(T,{type:`button`,variant:e.targetMode===`on_demand_agent`?`default`:`outline`,onClick:()=>d({targetMode:`on_demand_agent`}),children:`On demand`})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Provider`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.provider,onChange:e=>x(e.target.value),disabled:!m.length,children:[!m.length&&(0,F.jsx)(`option`,{value:e.provider,children:`No providers available`}),m.map(e=>(0,F.jsx)(`option`,{value:e,children:_.includes(e)?e:`${e} (disabled)`},e))]})}),e.targetMode===`existing_agent`?(0,F.jsx)($,{label:`If no match`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.ifNoMatch,onChange:e=>d({ifNoMatch:e.target.value}),children:[(0,F.jsx)(`option`,{value:`fail`,children:`fail`}),(0,F.jsx)(`option`,{value:`spawn`,children:`spawn`})]})}):(0,F.jsx)($,{label:`Approval`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.approvalMode,onChange:e=>d({approvalMode:e.target.value}),children:[(0,F.jsx)(`option`,{value:`guarded`,children:`guarded`}),(0,F.jsx)(`option`,{value:`read-only`,children:`read-only`}),(0,F.jsx)(`option`,{value:`open`,children:`open`})]})})]}),e.targetMode===`on_demand_agent`&&(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Model`,children:(0,F.jsx)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.model,onChange:e=>d({model:e.target.value,effort:``}),children:v.map(e=>(0,F.jsx)(`option`,{value:e.alias,children:e.label},e.alias))})}),(0,F.jsx)($,{label:`Effort`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.effort,onChange:e=>d({effort:e.target.value}),disabled:!y.length,children:[(0,F.jsx)(`option`,{value:``,children:`Default`}),y.map(e=>(0,F.jsx)(`option`,{value:e,children:e},e))]})}),(0,F.jsx)($,{label:`Agent profile`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.profile||`worker`,onChange:e=>d({profile:e.target.value}),children:[!a.length&&(0,F.jsx)(`option`,{value:`worker`,children:`worker`}),s(a).map(e=>(0,F.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}),(0,F.jsx)($,{label:`Workspace`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.workspaceMode,onChange:e=>d({workspaceMode:e.target.value}),children:[(0,F.jsx)(`option`,{value:`inherit`,children:`inherit (default → isolated worktree)`}),(0,F.jsx)(`option`,{value:`shared`,children:`shared (run in the repo, commit to its branch)`}),(0,F.jsx)(`option`,{value:`isolated`,children:`isolated (fresh git worktree per run)`})]})})]}),e.targetMode===`existing_agent`?(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Label`,children:(0,F.jsx)(D,{value:e.label,onChange:e=>d({label:e.target.value})})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Tags`,children:(0,F.jsx)(D,{value:e.tags,onChange:e=>d({tags:e.target.value})})}),(0,F.jsx)($,{label:`Capabilities`,children:(0,F.jsx)(D,{value:e.capabilities,onChange:e=>d({capabilities:e.target.value})})})]})]}):(0,F.jsxs)(`div`,{className:`grid gap-3`,children:[(0,F.jsx)($,{label:`Cwd`,children:(0,F.jsx)(D,{value:e.cwd,onChange:e=>d({cwd:e.target.value})})}),(0,F.jsxs)(`label`,{className:`flex items-center justify-between rounded-md border border-border px-3 py-2`,children:[(0,F.jsx)(`span`,{className:`text-sm`,children:`Keep alive`}),(0,F.jsx)(g,{checked:e.keepAlive,onCheckedChange:e=>d({keepAlive:e})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,F.jsx)($,{label:`Budget minutes`,children:(0,F.jsx)(D,{type:`number`,min:1,step:1,value:e.budgetMinutes,onChange:e=>d({budgetMinutes:e.target.value})})}),(0,F.jsx)($,{label:`Warning minute`,children:(0,F.jsx)(D,{type:`number`,min:0,step:1,value:e.warningMinutes,onChange:e=>d({warningMinutes:e.target.value})})})]}),(0,F.jsx)($,{label:`Warning message`,children:(0,F.jsx)(k,{value:e.warningMessage,onChange:e=>d({warningMessage:e.target.value}),className:`min-h-20`})})]})]}),(0,F.jsx)(ee,{value:e.precheck,onChange:e=>d({precheck:e})}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(h,{children:`Task`}),(0,F.jsx)($,{label:`Title`,children:(0,F.jsx)(D,{value:e.title,onChange:e=>d({title:e.target.value})})}),(0,F.jsx)($,{label:`Body`,children:(0,F.jsx)(k,{value:e.body,onChange:e=>d({body:e.target.value}),className:`min-h-28`})}),(0,F.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,F.jsx)($,{label:`Severity`,children:(0,F.jsxs)(`select`,{className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm`,value:e.severity,onChange:e=>d({severity:e.target.value}),children:[(0,F.jsx)(`option`,{value:`info`,children:`info`}),(0,F.jsx)(`option`,{value:`warning`,children:`warning`}),(0,F.jsx)(`option`,{value:`critical`,children:`critical`})]})}),(0,F.jsx)($,{label:`Dedupe key`,children:(0,F.jsx)(D,{value:e.dedupeKey,onChange:e=>d({dedupeKey:e.target.value})})}),(0,F.jsx)($,{label:`External URL`,children:(0,F.jsx)(D,{value:e.externalUrl,onChange:e=>d({externalUrl:e.target.value})})})]})]}),(0,F.jsxs)(T,{className:`w-full gap-2`,onClick:f,disabled:n||!e.name||!e.schedule||!e.orchestratorId||!e.title||!e.body,children:[n?(0,F.jsx)(S,{className:`w-4 h-4 animate-spin`}):(0,F.jsx)(C,{className:`w-4 h-4`}),`Save`]})]})}function $({label:e,children:t}){return(0,F.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,F.jsx)(h,{className:`text-xs text-muted-foreground`,children:e}),t]})}function ue({runs:e,automations:t,agents:n,orchestrators:r,now:i,logRunId:a,onToggleLogs:o}){let s=new Map(t.map(e=>[e.id,e.name]));return(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Runs`}),(0,F.jsx)(E,{variant:`secondary`,className:`text-[10px]`,children:e.length})]}),(0,F.jsxs)(`div`,{className:`rounded-lg border border-border overflow-x-auto`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-[minmax(10rem,1fr)_8rem_8rem_7rem_7rem_5rem] gap-3 bg-muted/30 px-3 py-2 text-xs text-muted-foreground`,children:[(0,F.jsx)(`span`,{children:`Automation`}),(0,F.jsx)(`span`,{children:`Status`}),(0,F.jsx)(`span`,{children:`Agent`}),(0,F.jsx)(`span`,{children:`Runtime`}),(0,F.jsx)(`span`,{children:`Updated`}),(0,F.jsx)(`span`,{children:`Logs`})]}),e.length===0?(0,F.jsx)(`div`,{className:`px-3 py-10 text-center text-sm text-muted-foreground`,children:`No runs`}):e.slice(0,80).map(e=>{let t=Y(e,n,r),c=J(e,i),l=ie(e);return(0,F.jsxs)(`div`,{className:`border-t border-border`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-[minmax(10rem,1fr)_8rem_8rem_7rem_7rem_5rem] gap-3 px-3 py-2 text-xs items-center`,children:[(0,F.jsxs)(`div`,{className:`min-w-0`,children:[(0,F.jsx)(`div`,{className:`truncate`,children:s.get(e.automationId)||e.automationId.slice(0,12)}),(0,F.jsxs)(`div`,{className:`truncate text-muted-foreground`,children:[e.taskId?`T${e.taskId}`:`no task`,c?` · ${c} left`:``,l?` · ${l}`:``]})]}),(0,F.jsx)(E,{variant:`outline`,className:`border text-[10px] w-fit ${V(e)}`,children:B(e)}),(0,F.jsx)(`span`,{className:`truncate font-mono text-muted-foreground`,children:e.targetAgentId||e.spawnedAgentId||`-`}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:q(e,i)}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,title:m(e.updatedAt),children:p(i,e.updatedAt)}),t?(0,F.jsx)(T,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0`,title:`Open logs`,onClick:()=>o(e.id),children:(0,F.jsx)(v,{className:`w-3.5 h-3.5`})}):(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`-`})]}),a===e.id&&t&&(0,F.jsx)(`div`,{className:`border-t border-border px-3 py-3`,children:(0,F.jsx)(O,{orchestratorId:t.orchestratorId,session:t.session})})]},e.id)})]})]})}export{oe as AutomationView};
|
|
2
|
+
//# sourceMappingURL=automation-Cx422L3L.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t,u as n}from"./dist-DeW2Y1R5.js";import{t as r}from"./store-
|
|
2
|
-
//# sourceMappingURL=backlog-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{p as t,u as n}from"./dist-DeW2Y1R5.js";import{t as r}from"./store-BgDALGIX.js";import"./provider-display-bWwiuedV.js";import{o as i}from"./tasks-BIyeAaPC.js";import{t as a}from"./api-CIIVBtAV.js";import{t as o}from"./scroll-area-CIN4KQse.js";import{t as s}from"./chevron-down-BoG3JCZn.js";import{t as c}from"./chevron-right-iljytE0x.js";import{t as l}from"./list-ordered-D8nCM7rT.js";import{t as u}from"./button-Do6Z3vvn.js";import{t as d}from"./badge-DqJRtj_p.js";import{t as f}from"./input-CsTB6jIx.js";var p=e(t(),1),m=n(),h={low:`bg-tone-neutral/10 text-tone-neutral-fg`,medium:`bg-tone-info/10 text-tone-info-fg`,high:`bg-tone-orange/10 text-tone-orange-fg`,urgent:`bg-tone-danger/10 text-tone-danger-fg`},g={open:`bg-tone-info/10 text-tone-info-fg border-tone-info/20`,in_progress:`bg-tone-purple/10 text-tone-purple-fg border-tone-purple/20`,validating:`bg-tone-warning/10 text-tone-warning-fg border-tone-warning/20`,blocked:`bg-tone-yellow/10 text-tone-yellow-fg border-tone-yellow/20`,done:`bg-tone-success/10 text-tone-success-fg border-tone-success/20`,failed:`bg-tone-danger/10 text-tone-danger-fg border-tone-danger/20`,canceled:`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`};function _(){let e=r(e=>e.backlogItems),t=r(e=>e.backlogTotal),n=r(e=>e.backlogHasMore),_=r(e=>e.backlogLoading),y=r(e=>e.backlogError),b=r(e=>e.backlogPriorityFilter),x=r(e=>e.backlogTagFilter),S=r(e=>e.backlogSearchFilter),C=r(e=>e.backlogProjectFilter),w=r(e=>e.backlogPromotedOpen),T=r(e=>e.backlogPromotedItems),E=r(e=>e.backlogPromotedLoading),D=r(e=>e.backlogPromoteLoadingId),O=r(e=>e.loadMoreBacklog),k=r(e=>e.setBacklogPriorityFilter),A=r(e=>e.setBacklogTagFilter),j=r(e=>e.setBacklogSearchFilter),M=r(e=>e.setBacklogProjectFilter),N=r(e=>e.toggleBacklogPromoted),P=r(e=>e.doPromoteBacklogTask),F=r(e=>e.openTaskDetailById),[I,L]=(0,p.useState)([]),[R,z]=(0,p.useState)(x),[B,V]=(0,p.useState)(S);(0,p.useEffect)(()=>{let e=!1;return a(`GET`,`/projects`).then(t=>{e||L(t.projects??[])}).catch(()=>{e||L([])}),()=>{e=!0}},[]);let H=(0,p.useMemo)(()=>new Map(I.map(e=>[e.id,e])),[I]),U=(0,p.useMemo)(()=>{let t=I.map(e=>({value:e.id,label:e.title||e.slug||e.issueRepo||e.id}));for(let n of e)n.projectId&&!t.some(e=>e.value===n.projectId)&&t.push({value:n.projectId,label:n.repo||n.projectId});return t.sort((e,t)=>e.label.localeCompare(t.label))},[e,I]);function W(){let e=R.trim();z(e),e!==x&&A(e)}function G(){let e=B.trim();V(e),e!==S&&j(e)}return(0,m.jsxs)(`div`,{className:`space-y-4`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(l,{className:`w-5 h-5 text-muted-foreground`}),(0,m.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Backlog`}),(0,m.jsx)(d,{variant:`secondary`,children:t})]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,m.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:b,onChange:e=>k(e.target.value),children:[(0,m.jsx)(`option`,{value:``,children:`All priorities`}),i.map(e=>(0,m.jsx)(`option`,{value:e,children:e},e))]}),(0,m.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:C,onChange:e=>M(e.target.value),children:[(0,m.jsx)(`option`,{value:``,children:`All projects`}),U.map(e=>(0,m.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),(0,m.jsx)(f,{className:`h-8 w-36 text-sm`,placeholder:`Filter by tag…`,value:R,onChange:e=>z(e.target.value),onBlur:W,onKeyDown:e=>{e.key===`Enter`&&W()}}),(0,m.jsx)(f,{className:`h-8 w-48 text-sm`,placeholder:`Search title/intent…`,value:B,onChange:e=>V(e.target.value),onBlur:G,onKeyDown:e=>{e.key===`Enter`&&G()}})]})]}),y&&(0,m.jsx)(`div`,{className:`text-sm text-tone-danger-fg`,children:y}),(0,m.jsx)(o,{className:`h-[calc(100dvh-14rem)]`,children:(0,m.jsxs)(`div`,{className:`pr-2 space-y-4`,children:[(0,m.jsx)(`div`,{className:`overflow-x-auto rounded-md border border-border`,children:(0,m.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,m.jsx)(`thead`,{children:(0,m.jsxs)(`tr`,{className:`border-b border-border text-left text-xs text-muted-foreground`,children:[(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Priority`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Title`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Status`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Project`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Tags`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Updated`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`})]})}),(0,m.jsxs)(`tbody`,{children:[e.length===0&&!_&&(0,m.jsx)(`tr`,{children:(0,m.jsx)(`td`,{colSpan:7,className:`px-3 py-8 text-center text-muted-foreground`,children:`No backlog items`})}),e.map(e=>(0,m.jsx)(v,{item:e,project:e.projectId?H.get(e.projectId):void 0,promoting:D===e.id,onOpen:()=>F(e.id),onPromote:()=>void P(e.id)},e.id))]})]})}),n&&(0,m.jsx)(`div`,{className:`flex justify-center`,children:(0,m.jsx)(u,{size:`sm`,variant:`outline`,disabled:_,onClick:()=>void O(),children:_?`Loading…`:`Load more`})}),(0,m.jsxs)(`div`,{className:`border-t border-border pt-3`,children:[(0,m.jsxs)(`button`,{type:`button`,onClick:N,className:`flex items-center gap-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors`,children:[w?(0,m.jsx)(s,{className:`w-4 h-4`}):(0,m.jsx)(c,{className:`w-4 h-4`}),`Promoted`,w&&(0,m.jsx)(d,{variant:`secondary`,className:`ml-1`,children:T.length})]}),w&&(0,m.jsx)(`div`,{className:`mt-2 overflow-x-auto rounded-md border border-border`,children:(0,m.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,m.jsx)(`thead`,{children:(0,m.jsxs)(`tr`,{className:`border-b border-border text-left text-xs text-muted-foreground`,children:[(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Priority`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Title`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Status`}),(0,m.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Updated`})]})}),(0,m.jsxs)(`tbody`,{children:[E&&T.length===0&&(0,m.jsx)(`tr`,{children:(0,m.jsx)(`td`,{colSpan:4,className:`px-3 py-6 text-center text-muted-foreground`,children:`Loading…`})}),!E&&T.length===0&&(0,m.jsx)(`tr`,{children:(0,m.jsx)(`td`,{colSpan:4,className:`px-3 py-6 text-center text-muted-foreground`,children:`No promoted tasks yet`})}),T.map(e=>(0,m.jsxs)(`tr`,{className:`border-b border-border last:border-0 cursor-pointer hover:bg-accent`,onClick:()=>F(e.id),children:[(0,m.jsx)(`td`,{className:`px-3 py-2`,children:e.priority&&(0,m.jsx)(d,{variant:`secondary`,className:`text-xs px-1.5 py-0 ${h[e.priority]??`bg-tone-neutral/10 text-tone-neutral-fg`}`,children:e.priority})}),(0,m.jsxs)(`td`,{className:`px-3 py-2 min-w-0`,children:[(0,m.jsxs)(`span`,{className:`text-muted-foreground/60 mr-1`,children:[`T`,e.id]}),e.title]}),(0,m.jsx)(`td`,{className:`px-3 py-2`,children:(0,m.jsx)(d,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${g[e.status]??`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`}`,children:e.status})}),(0,m.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground`,children:e.updatedAt})]},e.id))]})]})})]})]})})]})}function v({item:e,project:t,promoting:n,onOpen:r,onPromote:i}){let a=t?.title||t?.slug||e.repo||e.projectId;return(0,m.jsxs)(`tr`,{className:`border-b border-border last:border-0 cursor-pointer hover:bg-accent`,onClick:r,children:[(0,m.jsx)(`td`,{className:`px-3 py-2`,children:e.priority&&(0,m.jsx)(d,{variant:`secondary`,className:`text-xs px-1.5 py-0 ${h[e.priority]??`bg-tone-neutral/10 text-tone-neutral-fg`}`,children:e.priority})}),(0,m.jsxs)(`td`,{className:`px-3 py-2 min-w-0 max-w-md`,children:[(0,m.jsxs)(`span`,{className:`text-muted-foreground/60 mr-1`,children:[`T`,e.id]}),(0,m.jsx)(`span`,{className:`truncate`,children:e.title})]}),(0,m.jsx)(`td`,{className:`px-3 py-2`,children:(0,m.jsx)(d,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${g[e.status]??`bg-tone-neutral/10 text-tone-neutral-fg border-tone-neutral/20`}`,children:e.status})}),(0,m.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground truncate max-w-[10rem]`,children:a}),(0,m.jsx)(`td`,{className:`px-3 py-2`,children:(0,m.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:(e.tags??[]).map(e=>(0,m.jsx)(d,{variant:`outline`,className:`text-[10px] px-1.5 py-0 font-normal`,children:e},e))})}),(0,m.jsx)(`td`,{className:`px-3 py-2 text-muted-foreground whitespace-nowrap`,children:e.updatedAt}),(0,m.jsx)(`td`,{className:`px-3 py-2 text-right`,children:(0,m.jsx)(u,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,disabled:n,onClick:e=>{e.stopPropagation(),i()},children:n?`Promoting…`:`Promote`})})]})}export{_ as BacklogView};
|
|
2
|
+
//# sourceMappingURL=backlog-RuFQ8PUu.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{N as e}from"./provider-display-
|
|
2
|
-
//# sourceMappingURL=busy-health-
|
|
1
|
+
import{N as e}from"./provider-display-bWwiuedV.js";function t(t,n){let r=n?.meta?.busyHealth;if(!n||n.status!==`busy`||!e(r)||r.status!==`stuck-busy`)return null;let i=typeof r.activeWorkStartedAt==`number`?r.activeWorkStartedAt:0;if(!i)return null;let a=typeof r.lastProgressAt==`number`?r.lastProgressAt:i;return{kind:typeof r.kind==`string`?r.kind:`provider-turn`,thresholdMs:typeof r.thresholdMs==`number`&&r.thresholdMs>0?r.thresholdMs:0,activeWorkId:typeof r.activeWorkId==`string`?r.activeWorkId:void 0,activeWorkLabel:typeof r.activeWorkLabel==`string`?r.activeWorkLabel:void 0,activeWorkStartedAt:i,activeWorkAgeMs:Math.max(0,t-i),lastProgressAt:a,staleForMs:Math.max(0,t-a)}}export{t};
|
|
2
|
+
//# sourceMappingURL=busy-health-BvNQ9g5x.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as e}from"./dist-DeW2Y1R5.js";import{t,wt as n}from"./store-
|
|
2
|
-
//# sourceMappingURL=channels-
|
|
1
|
+
import{u as e}from"./dist-DeW2Y1R5.js";import{t,wt as n}from"./store-BgDALGIX.js";import{c as r,et as i,l as a,nt as o,rt as s}from"./display-BemJG1f_.js";import{t as c}from"./activity-TMzFOdh2.js";import{n as l,t as u}from"./bell-_Yzbxxrt.js";import{n as d,t as f}from"./radio-Bn0_qc0G.js";import{t as p}from"./arrow-right-vFsRqG8V.js";import{t as m}from"./circle-alert-CryagaZd.js";import{t as h}from"./circle-check-CkUkN96J.js";import{t as g}from"./external-link-BRfu-fHG.js";import{t as _}from"./eye-BAP6fHrX.js";import{t as v}from"./message-circle-wjztgHBe.js";import{t as y}from"./messages-square-DVM1ZtcI.js";import{t as b}from"./plug-zap-V0wMDJ-G.js";import{t as x}from"./button-Do6Z3vvn.js";import{t as S}from"./badge-DqJRtj_p.js";import{o as C,r as w,s as T,t as E}from"./card-C4QJ4hCW.js";var D=e(),O={MessagesSquare:y,PlugZap:b,AlertCircle:m,Activity:c,Eye:_,CircleCheck:h,Radio:f,MessageCircle:v,Bell:u};function k({direction:e}){return e===`inbound`?(0,D.jsx)(d,{className:`w-3 h-3`}):e===`outbound`?(0,D.jsx)(p,{className:`w-3 h-3`}):(0,D.jsx)(l,{className:`w-3 h-3`})}function A({channel:e,integration:r}){let c=n(),l=t(e=>e.openChannelDetail),u=a(e),d=e.status!==`offline`,f=e.direction===`outbound`,p=r?.displayName||e.name||e.id,m=(r?.icon?O[r.icon]:null)??y;return(0,D.jsxs)(E,{className:`${d?``:`opacity-60`} hover:border-tone-neutral transition-colors${r?.accentColor?` border-l-2`:``}`,style:r?.accentColor?{borderLeftColor:r.accentColor}:void 0,children:[(0,D.jsx)(C,{className:`pb-2 pt-4 px-4`,children:(0,D.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(`div`,{className:`p-1.5 rounded-md ${d?`bg-tone-info/10`:`bg-muted`}`,children:(0,D.jsx)(m,{className:`w-4 h-4 ${d?`text-tone-info-fg`:`text-tone-neutral-fg`}`})}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsx)(T,{className:`text-sm font-medium truncate`,children:p}),(0,D.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:[e.type,` · `,e.transport]})]}),(0,D.jsx)(S,{className:`text-[10px] shrink-0 ${o(u.tone)}`,children:u.label})]})}),(0,D.jsxs)(w,{className:`px-4 pb-4 space-y-2.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,D.jsx)(k,{direction:e.direction}),(0,D.jsx)(`span`,{className:`capitalize`,children:e.direction}),!f&&e.target&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{children:`·`}),(0,D.jsx)(`span`,{className:`truncate text-foreground`,children:e.target})]})]}),!f&&e.targetHealth&&e.targetHealth.status!==`ok`&&(0,D.jsx)(`div`,{className:`text-xs px-2 py-1 rounded ${e.targetHealth.status===`error`?`bg-tone-danger/10 text-tone-danger-fg`:`bg-tone-yellow/10 text-tone-yellow-fg`}`,children:e.targetHealth.detail}),s(e.capabilities).length>0&&(0,D.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:s(e.capabilities).map(e=>(0,D.jsx)(S,{variant:`secondary`,className:`text-[9px] px-1 py-0 h-4`,children:e},e))}),e.tags.length>0&&(0,D.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.tags.map(e=>(0,D.jsx)(S,{variant:`outline`,className:`text-[9px] px-1 py-0 h-4`,children:e},e))}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between pt-0.5`,children:[(0,D.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:i(c,e.lastSeen)}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r?.docsUrl&&(0,D.jsxs)(`a`,{href:r.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors h-7 px-2 rounded border border-input hover:bg-accent`,children:[(0,D.jsx)(g,{className:`w-3 h-3`}),`Docs`]}),(0,D.jsxs)(x,{size:`sm`,variant:`outline`,className:`h-7 text-xs gap-1`,onClick:()=>l(e),children:[(0,D.jsx)(g,{className:`w-3 h-3`}),`Details`]})]})]})]})]})}function j(){let e=t(e=>e.channels),n=t(e=>e.integrations),i=t(e=>e.switchView),a=new Map(n.map(e=>[e.name,e])),o=e.filter(r).length,s=e.filter(e=>e.direction!==`outbound`&&e.targetHealth?.status===`error`).length,c=e.filter(e=>e.direction!==`outbound`&&e.targetHealth?.status===`warning`).length;return(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h2`,{className:`text-base font-semibold`,children:`Channels`}),(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Inbound / outbound message integrations`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[o>0&&(0,D.jsxs)(S,{className:`text-xs bg-tone-success/15 text-tone-success-fg border-tone-success/30`,children:[o,` ready`]}),c>0&&(0,D.jsxs)(S,{className:`text-xs bg-tone-yellow/15 text-tone-yellow-fg border-tone-yellow/30`,children:[c,` warning`]}),s>0&&(0,D.jsxs)(S,{className:`text-xs bg-tone-danger/15 text-tone-danger-fg border-tone-danger/30`,children:[s,` error`]}),(0,D.jsxs)(x,{variant:`ghost`,size:`sm`,className:`h-7 text-xs gap-1.5 text-muted-foreground`,onClick:()=>void i(`integrations`),children:[(0,D.jsx)(b,{className:`w-3 h-3`}),`API Integrations`]})]})]}),e.length===0?(0,D.jsx)(`div`,{className:`text-center py-16 text-muted-foreground text-sm`,children:`No channels registered.`}):(0,D.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,children:e.map(e=>(0,D.jsx)(A,{channel:e,integration:a.get(e.type)},e.id))})]})}export{j as ChannelsView};
|
|
2
|
+
//# sourceMappingURL=channels-DNbKAS0I.js.map
|