agent-relay-server 0.121.5 → 0.122.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/openapi.json +1 -1
- package/package.json +5 -4
- package/public/assets/{MessageBubble-CLqxCG9b.js → MessageBubble-DRdUD-kW.js} +2 -2
- package/public/assets/{MessageBubble-CLqxCG9b.js.map → MessageBubble-DRdUD-kW.js.map} +1 -1
- package/public/assets/{PlanGraphPanel-BkkToFEb.js → PlanGraphPanel-siKMPCln.js} +2 -2
- package/public/assets/{PlanGraphPanel-BkkToFEb.js.map → PlanGraphPanel-siKMPCln.js.map} +1 -1
- package/public/assets/{activity-D-ocGQGs.js → activity-D3MNcSaV.js} +2 -2
- package/public/assets/{activity-D-ocGQGs.js.map → activity-D3MNcSaV.js.map} +1 -1
- package/public/assets/{agent-profiles-CRPgYTyb.js → agent-profiles-CKzttq6G.js} +2 -2
- package/public/assets/{agent-profiles-CRPgYTyb.js.map → agent-profiles-CKzttq6G.js.map} +1 -1
- package/public/assets/{agent-type-icon-CeEoMouY.js → agent-type-icon-0ZJRP1Vy.js} +2 -2
- package/public/assets/{agent-type-icon-CeEoMouY.js.map → agent-type-icon-0ZJRP1Vy.js.map} +1 -1
- package/public/assets/{agents-Chw5E_2q.js → agents-CuVj_rfG.js} +2 -2
- package/public/assets/{agents-Chw5E_2q.js.map → agents-CuVj_rfG.js.map} +1 -1
- package/public/assets/{analytics-BmNDG0hR.js → analytics-iob6C27d.js} +2 -2
- package/public/assets/{analytics-BmNDG0hR.js.map → analytics-iob6C27d.js.map} +1 -1
- package/public/assets/{automation-D7g90kTv.js → automation-B2ixxs4q.js} +2 -2
- package/public/assets/{automation-D7g90kTv.js.map → automation-B2ixxs4q.js.map} +1 -1
- package/public/assets/{branch-state-badge-Bv7DhLBZ.js → branch-state-badge-CafBJWKo.js} +2 -2
- package/public/assets/{branch-state-badge-Bv7DhLBZ.js.map → branch-state-badge-CafBJWKo.js.map} +1 -1
- package/public/assets/{channels-CLwPeEPi.js → channels-C-WsbL2H.js} +2 -2
- package/public/assets/{channels-CLwPeEPi.js.map → channels-C-WsbL2H.js.map} +1 -1
- package/public/assets/{chat-Cgj7VKzc.js → chat-DeoVTVob.js} +2 -2
- package/public/assets/{chat-Cgj7VKzc.js.map → chat-DeoVTVob.js.map} +1 -1
- package/public/assets/{connectors-Br6fiTny.js → connectors-C2Ac03LJ.js} +2 -2
- package/public/assets/{connectors-Br6fiTny.js.map → connectors-C2Ac03LJ.js.map} +1 -1
- package/public/assets/display-CJzSoTMq.js +3 -0
- package/public/assets/display-CJzSoTMq.js.map +1 -0
- package/public/assets/{formatted-body-CmkuD23M.js → formatted-body-35XBOY5L.js} +3 -3
- package/public/assets/{formatted-body-CmkuD23M.js.map → formatted-body-35XBOY5L.js.map} +1 -1
- package/public/assets/{formatted-body-impl-DbdFmbwW.js → formatted-body-impl-RmDxI5Ux.js} +2 -2
- package/public/assets/{formatted-body-impl-DbdFmbwW.js.map → formatted-body-impl-RmDxI5Ux.js.map} +1 -1
- package/public/assets/index-D0xMQQb_.js +25 -0
- package/public/assets/{index-D9OogaB5.js.map → index-D0xMQQb_.js.map} +1 -1
- package/public/assets/{insights-qvaPqWCV.js → insights-B643SFvm.js} +2 -2
- package/public/assets/{insights-qvaPqWCV.js.map → insights-B643SFvm.js.map} +1 -1
- package/public/assets/{integrations-DYEGSqq_.js → integrations-hFIHeCF4.js} +2 -2
- package/public/assets/{integrations-DYEGSqq_.js.map → integrations-hFIHeCF4.js.map} +1 -1
- package/public/assets/{maintenance-C0HIEB-J.js → maintenance-CURvdp_Z.js} +2 -2
- package/public/assets/{maintenance-C0HIEB-J.js.map → maintenance-CURvdp_Z.js.map} +1 -1
- package/public/assets/{managed-agents-DdS7aI38.js → managed-agents-DrZtdlSn.js} +2 -2
- package/public/assets/{managed-agents-DdS7aI38.js.map → managed-agents-DrZtdlSn.js.map} +1 -1
- package/public/assets/{markdown-preview-impl-BnXMH1z1.js → markdown-preview-impl-CVDO--ek.js} +2 -2
- package/public/assets/{markdown-preview-impl-BnXMH1z1.js.map → markdown-preview-impl-CVDO--ek.js.map} +1 -1
- package/public/assets/{memory-CSwx7bz8.js → memory-Bm7dt_Qf.js} +2 -2
- package/public/assets/{memory-CSwx7bz8.js.map → memory-Bm7dt_Qf.js.map} +1 -1
- package/public/assets/{messages-Be9CmvDv.js → messages-DTq4i2KZ.js} +2 -2
- package/public/assets/{messages-Be9CmvDv.js.map → messages-DTq4i2KZ.js.map} +1 -1
- package/public/assets/{orchestrators-BgtvvHvo.js → orchestrators-Dra318Ap.js} +2 -2
- package/public/assets/{orchestrators-BgtvvHvo.js.map → orchestrators-Dra318Ap.js.map} +1 -1
- package/public/assets/{overview-BvhbPWtF.js → overview-yr1Vmk64.js} +2 -2
- package/public/assets/{overview-BvhbPWtF.js.map → overview-yr1Vmk64.js.map} +1 -1
- package/public/assets/{pairs-CpXSOMx0.js → pairs-mnlKDBGp.js} +2 -2
- package/public/assets/{pairs-CpXSOMx0.js.map → pairs-mnlKDBGp.js.map} +1 -1
- package/public/assets/projects-Dzdf-gkK.js +2 -0
- package/public/assets/{projects-DdPNPFJI.js.map → projects-Dzdf-gkK.js.map} +1 -1
- package/public/assets/prompt-settings-ByL8SNCi.js +2 -0
- package/public/assets/{prompt-settings-BpZse7-X.js.map → prompt-settings-ByL8SNCi.js.map} +1 -1
- package/public/assets/{registry-pb1gTZEg.js → registry-CXWyOtpr.js} +2 -2
- package/public/assets/{registry-pb1gTZEg.js.map → registry-CXWyOtpr.js.map} +1 -1
- package/public/assets/{security-BgcX1n9D.js → security-0SBsc_4W.js} +2 -2
- package/public/assets/{security-BgcX1n9D.js.map → security-0SBsc_4W.js.map} +1 -1
- package/public/assets/{select-DZPVpKPv.js → select-Bw5z2KJ_.js} +2 -2
- package/public/assets/{select-DZPVpKPv.js.map → select-Bw5z2KJ_.js.map} +1 -1
- package/public/assets/{settings-hd5kzdRB.js → settings-78Cyq_tA.js} +4 -4
- package/public/assets/{settings-hd5kzdRB.js.map → settings-78Cyq_tA.js.map} +1 -1
- package/public/assets/{store-DKTLubBT.js → store-BPrVuKiv.js} +4 -4
- package/public/assets/store-BPrVuKiv.js.map +1 -0
- package/public/assets/{tasks-C5d2LU5E.js → tasks-Cg2MMeri.js} +2 -2
- package/public/assets/{tasks-C5d2LU5E.js.map → tasks-Cg2MMeri.js.map} +1 -1
- package/public/assets/teams-DWv6UwFV.js +2 -0
- package/public/assets/{teams-B8f2pGJe.js.map → teams-DWv6UwFV.js.map} +1 -1
- package/public/assets/{terminal-viewer-impl-CxAscH0U.js → terminal-viewer-impl-DBLDjbIg.js} +2 -2
- package/public/assets/{terminal-viewer-impl-CxAscH0U.js.map → terminal-viewer-impl-DBLDjbIg.js.map} +1 -1
- package/public/assets/{types-uVOXgvMT.js → types-BeJUSfDj.js} +2 -2
- package/public/assets/types-BeJUSfDj.js.map +1 -0
- package/public/assets/{user-avatar-Dw6mzWhv.js → user-avatar-BsOLyVJj.js} +2 -2
- package/public/assets/{user-avatar-Dw6mzWhv.js.map → user-avatar-BsOLyVJj.js.map} +1 -1
- package/public/assets/{work-queue-9imc7aNK.js → work-queue-DmwvnF6F.js} +2 -2
- package/public/assets/{work-queue-9imc7aNK.js.map → work-queue-DmwvnF6F.js.map} +1 -1
- package/public/assets/{workspaces-CLYc3yF3.js → workspaces-dIBivJN8.js} +2 -2
- package/public/assets/{workspaces-CLYc3yF3.js.map → workspaces-dIBivJN8.js.map} +1 -1
- package/public/index.html +6 -6
- package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +44 -938
- package/runner/src/adapter.ts +53 -18
- package/runner/src/config.ts +1 -4
- package/src/agent-card-projection.ts +5 -1
- package/src/agent-command-activity.ts +39 -0
- package/src/automations/reconcile.ts +2 -2
- package/src/cli/workspace.ts +3 -1
- package/src/config.ts +10 -1
- package/src/db/agents.ts +118 -37
- package/src/db/message-reads.ts +50 -0
- package/src/db/messages.ts +48 -9
- package/src/db/migrations.ts +54 -0
- package/src/db/provider-quota-burn.ts +96 -67
- package/src/db/provider-quotas.ts +29 -7
- package/src/db/scheduled-timers.ts +21 -0
- package/src/db/schema.ts +1 -0
- package/src/db/tasks.ts +33 -3
- package/src/db/work-evidence.ts +10 -7
- package/src/event-loop-lag.ts +15 -0
- package/src/gate-resolver.ts +24 -1
- package/src/maintenance/jobs.ts +23 -6
- package/src/managed-policy.ts +5 -12
- package/src/mcp-plan-tools.ts +13 -1
- package/src/project-instructions.ts +36 -2
- package/src/quota-advisory.ts +6 -4
- package/src/quota-band-transition.ts +23 -14
- package/src/routes/agent-sessions.ts +39 -7
- package/src/routes/agents.ts +3 -2
- package/src/routes/tasks.ts +16 -4
- package/src/routes/workspaces.ts +35 -10
- package/src/services/plan-graph.ts +27 -9
- package/src/services/register-agent.ts +12 -12
- package/src/services/send-message.ts +43 -15
- package/src/services/spawn-agent.ts +3 -0
- package/src/spawn-command.ts +8 -0
- package/src/spawn-targets.ts +19 -34
- package/src/sse.ts +25 -3
- package/src/workspace-merge.ts +25 -5
- package/src/workspace-orphans.ts +13 -6
- package/public/assets/display-exQDWum3.js +0 -3
- package/public/assets/display-exQDWum3.js.map +0 -1
- package/public/assets/index-D9OogaB5.js +0 -25
- package/public/assets/projects-DdPNPFJI.js +0 -2
- package/public/assets/prompt-settings-BpZse7-X.js +0 -2
- package/public/assets/store-DKTLubBT.js.map +0 -1
- package/public/assets/teams-B8f2pGJe.js +0 -2
- package/public/assets/types-uVOXgvMT.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-CilyBKbf.js";import{In as t,L as n,Ut as r,hr as i,nr as a,rr as o,xt as s,zt as c}from"./lucide-react-DuhlF2Sj.js";import{t as l}from"./store-DKTLubBT.js";import{u}from"./types-uVOXgvMT.js";import{K as d}from"./display-exQDWum3.js";import{t as f}from"./badge-DCIT3Irj.js";import{t as p}from"./button-CzdTkRIf.js";import{t as m}from"./copy-button-B3o1jpLu.js";import{o as h,r as g,s as _,t as v}from"./card-C3BGuVC6.js";var y=e(i(),1),b=a(),x=[`rule`,`decision`,`fact`,`memory`],S={rule:`Rules`,decision:`Decisions`,fact:`Facts`,memory:`Memory`};function C(e){return e===`ingested`?`bg-blue-500/10 text-blue-400 border-blue-500/30`:e===`promoted`?`bg-emerald-500/10 text-emerald-400 border-emerald-500/30`:`bg-zinc-500/10 text-zinc-400 border-zinc-500/30`}var w=320;function T({entry:e,ownerName:t,now:n}){let[r,i]=(0,y.useState)(!1),a=e.body??``,o=a.length>w,c=r||!o?a:a.slice(0,w).trimEnd()+`…`;return(0,b.jsxs)(`div`,{className:`rounded-md border border-border bg-card/60 p-3`,children:[(0,b.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),(0,b.jsx)(f,{variant:`outline`,className:`text-[10px] ${C(e.source)}`,children:e.source}),e.inherited&&(0,b.jsxs)(f,{variant:`outline`,className:`gap-1 border-amber-500/30 bg-amber-500/10 text-[10px] text-amber-400`,children:[(0,b.jsx)(s,{className:`h-3 w-3`}),`inherited`,t?` · ${t}`:``]}),(0,b.jsx)(`span`,{className:`ml-auto text-[10px] text-muted-foreground`,children:d(n,e.updatedAt)})]}),a&&(0,b.jsxs)(`div`,{className:`mt-2`,children:[(0,b.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs text-muted-foreground`,children:c}),o&&(0,b.jsx)(`button`,{type:`button`,className:`mt-1 text-[11px] font-medium text-primary hover:underline`,onClick:()=>i(e=>!e),children:r?`Show less`:`Show more`})]}),e.tags.length>0&&(0,b.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:e.tags.map(e=>(0,b.jsx)(f,{variant:`secondary`,className:`h-4 px-1 text-[9px]`,children:e},e))})]})}function E(){let e=l(e=>e.projectFocusId),i=l(e=>e.consumeProjectFocus),[a,s]=(0,y.useState)([]),[C,w]=(0,y.useState)(``),[E,D]=(0,y.useState)(!1),[O,k]=(0,y.useState)(null),[A,j]=(0,y.useState)([]),[M,N]=(0,y.useState)(!0),[P,F]=(0,y.useState)(!1),[I,L]=(0,y.useState)(null),[R,z]=(0,y.useState)(()=>Date.now());async function B(){L(null);try{let t=await o(`GET`,`/projects${E?`?includeArchived=true`:``}`);s(t.projects),z(Date.now());let n=e,r=e=>t.projects.some(t=>t.id===e||t.slug===e);n&&r(n)?(w(n),i()):w(e=>e&&r(e)?e:t.projects[0]?.id??``)}catch(e){L(u(e))}finally{N(!1)}}(0,y.useEffect)(()=>{B()},[E]),(0,y.useEffect)(()=>{e&&a.some(t=>t.id===e||t.slug===e)&&(w(e),i())},[e]),(0,y.useEffect)(()=>{if(!C){k(null),j([]);return}let e=!1;return F(!0),Promise.all([o(`GET`,`/projects/${encodeURIComponent(C)}`),o(`GET`,`/projects/${encodeURIComponent(C)}/entries?includeInherited=true`)]).then(([t,n])=>{e||(k(t),j(n.entries),z(Date.now()))}).catch(t=>{e||L(u(t))}).finally(()=>{e||F(!1)}),()=>{e=!0}},[C]);let V=(0,y.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.title||t.slug);return e},[a]),H=(0,y.useMemo)(()=>A.filter(e=>e.source===`ingested`),[A]),U=(0,y.useMemo)(()=>{let e=new Map;for(let t of A){if(t.source===`ingested`)continue;let n=e.get(t.kind)??[];n.push(t),e.set(t.kind,n)}return e},[A]),W=A.filter(e=>!e.inherited).length,G=A.length-W;return(0,b.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,b.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,b.jsx)(t,{className:`size-5 text-primary`}),(0,b.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Projects`}),(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`durable knowledge scope · epic #403`}),(0,b.jsxs)(`select`,{className:`ml-auto h-8 rounded-md border border-border bg-card px-2 text-sm text-foreground`,value:C,onChange:e=>w(e.target.value),disabled:a.length===0,children:[a.length===0&&(0,b.jsx)(`option`,{value:``,children:`No projects`}),a.map(e=>(0,b.jsxs)(`option`,{value:e.id,children:[e.title||e.slug,e.status===`archived`?` (archived)`:``]},e.id))]}),(0,b.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground select-none`,children:[(0,b.jsx)(`input`,{type:`checkbox`,className:`rounded`,checked:E,onChange:e=>D(e.target.checked)}),`Archived`]}),(0,b.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>void B(),children:[(0,b.jsx)(n,{className:`size-4`}),` Refresh`]})]}),I&&(0,b.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:I}),!M&&a.length===0&&(0,b.jsx)(v,{children:(0,b.jsxs)(g,{className:`py-10 text-center text-sm text-muted-foreground`,children:[`No projects yet. Projects are created through the relay `,(0,b.jsx)(`code`,{className:`font-mono text-xs`,children:`relay_project_*`}),` MCP tools (or bootstrapped from a root's CLAUDE.md).`]})}),O&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(v,{children:[(0,b.jsx)(h,{children:(0,b.jsxs)(_,{className:`flex flex-wrap items-center gap-2`,children:[(0,b.jsx)(`span`,{children:O.project.title||O.project.slug}),(0,b.jsx)(f,{variant:`outline`,className:`font-mono text-[10px]`,children:O.project.slug}),(0,b.jsx)(f,{variant:O.project.status===`active`?`secondary`:`outline`,className:`text-[10px]`,children:O.project.status}),(0,b.jsxs)(`span`,{className:`ml-auto text-xs font-normal text-muted-foreground`,children:[W,` own · `,G,` inherited · updated `,d(R,O.project.updatedAt)]})]})}),(O.project.description||O.project.issueRepo)&&(0,b.jsxs)(g,{className:`space-y-2 pt-0 text-sm text-muted-foreground`,children:[O.project.description&&(0,b.jsx)(`div`,{children:O.project.description}),O.project.issueRepo&&(0,b.jsxs)(`a`,{href:`https://github.com/${O.project.issueRepo}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 text-primary hover:underline`,children:[(0,b.jsx)(c,{className:`size-3.5`}),(0,b.jsx)(`span`,{className:`font-mono text-xs`,children:O.project.issueRepo})]})]})]}),(0,b.jsxs)(v,{children:[(0,b.jsx)(h,{children:(0,b.jsxs)(_,{className:`flex items-center gap-2 text-base`,children:[(0,b.jsx)(c,{className:`size-4 text-muted-foreground`}),` Roots`,(0,b.jsxs)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:[`(`,O.roots.length,`)`]})]})}),(0,b.jsx)(g,{children:O.roots.length===0?(0,b.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`No roots bound. A project resolves to agents by the repo paths registered here.`}):(0,b.jsx)(`div`,{className:`space-y-1.5`,children:O.roots.map(e=>(0,b.jsxs)(`div`,{className:`flex items-center gap-2 rounded border border-border bg-card/60 px-2 py-1`,children:[(0,b.jsx)(`span`,{className:`flex-1 truncate font-mono text-xs text-muted-foreground`,title:e.rootPath,children:e.rootPath}),(0,b.jsx)(m,{value:e.rootPath,label:`Copy root path`,size:`icon`,className:`h-6 w-6`,iconClassName:`h-3 w-3`})]},e.rootPath))})})]}),H.length>0&&(0,b.jsxs)(v,{children:[(0,b.jsx)(h,{children:(0,b.jsxs)(_,{className:`flex items-center gap-2 text-base`,children:[(0,b.jsx)(r,{className:`size-4 text-blue-400`}),` Ingested CLAUDE.md`,(0,b.jsxs)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:[`(`,H.length,`)`]})]})}),(0,b.jsx)(g,{className:`space-y-2`,children:H.map(e=>(0,b.jsx)(T,{entry:e,ownerName:e.inherited?V.get(e.projectId):void 0,now:R},e.id))})]}),P&&A.length===0?(0,b.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:`Loading entries…`}):A.length===0?(0,b.jsx)(v,{children:(0,b.jsx)(g,{className:`py-8 text-center text-sm text-muted-foreground`,children:`No entries yet. Agents write durable rules, decisions, facts, and memory here via the relay MCP tools.`})}):x.filter(e=>U.has(e)).map(e=>{let t=U.get(e);return(0,b.jsxs)(v,{children:[(0,b.jsx)(h,{children:(0,b.jsxs)(_,{className:`flex items-center gap-2 text-base`,children:[S[e],(0,b.jsxs)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:[`(`,t.length,`)`]})]})}),(0,b.jsx)(g,{className:`space-y-2`,children:t.map(e=>(0,b.jsx)(T,{entry:e,ownerName:e.inherited?V.get(e.projectId):void 0,now:R},e.id))})]},e)})]})]})}export{E as ProjectsView};
|
|
2
|
-
//# sourceMappingURL=projects-DdPNPFJI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-CilyBKbf.js";import{Fn as t,L as n,P as r,Ut as i,bn as a,er as o,hr as s,j as c,nr as l,rr as u}from"./lucide-react-DuhlF2Sj.js";import{u as d}from"./types-uVOXgvMT.js";import{K as f}from"./display-exQDWum3.js";import{t as p}from"./badge-DCIT3Irj.js";import{t as m}from"./button-CzdTkRIf.js";import{W as h}from"./index-D9OogaB5.js";import{a as g,i as _,o as v,r as y,s as ee,t as b}from"./card-C3BGuVC6.js";var x=e(s(),1),S=l(),C=`all`;function w(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function T(e){return Array.isArray(e)?[...e].sort((e,t)=>{let n=e.category.localeCompare(t.category);if(n!==0)return n;let r=e.title.localeCompare(t.title);return r===0?e.slug.localeCompare(t.slug):r}):[]}function E(){let[e,s]=(0,x.useState)([]),[l,E]=(0,x.useState)(!0),[D,O]=(0,x.useState)(``),[k,A]=(0,x.useState)(``),[j,M]=(0,x.useState)(``),[N,P]=(0,x.useState)(C),[F,I]=(0,x.useState)(``),[L,R]=(0,x.useState)({}),[z,B]=(0,x.useState)(``),[V,H]=(0,x.useState)(()=>Date.now());async function U(){E(!0),O(``);try{s(T((await u(`GET`,`/settings/prompts`)).templates)),H(Date.now())}catch(e){O(d(e))}finally{E(!1)}}(0,x.useEffect)(()=>{U()},[]);let W=(0,x.useMemo)(()=>{let t=new Map;for(let n of e)t.set(n.category,(t.get(n.category)??0)+1);return[...t.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({key:e,count:t,label:w(e)}))},[e]),G=N===C||W.some(e=>e.key===N)?N:C,K=(0,x.useMemo)(()=>G===C?e:e.filter(e=>e.category===G),[G,e]),q=K.some(e=>e.slug===F)?F:K[0]?.slug??``,J=K.find(e=>e.slug===q)??null,Y=J?L[J.slug]??J.template:``,X=J?Y!==J.template:!1,Z=e.filter(e=>e.template!==e.defaultTemplate).length,Q=J?z===J.slug:!1;function te(e){I(e),A(``),M(``)}function $(e){s(t=>T(t.map(t=>t.slug===e.slug?e:t))),R(t=>({...t,[e.slug]:e.template})),H(Date.now())}async function ne(){if(!(!J||!X)){B(J.slug),A(``),M(``);try{let e=await u(`PUT`,`/settings/prompts/${encodeURIComponent(J.slug)}`,{template:Y});$(e),M(`Saved ${e.title}.`)}catch(e){A(d(e))}finally{B(``)}}}async function re(){if(!(!J||J.template===J.defaultTemplate)){B(J.slug),A(``),M(``);try{let e=await u(`POST`,`/settings/prompts/${encodeURIComponent(J.slug)}/reset`);$(e),M(`Reset ${e.title} to the built-in default.`)}catch(e){A(d(e))}finally{B(``)}}}function ie(){J&&(R(e=>({...e,[J.slug]:J.template})),A(``),M(`Unsaved edits discarded.`))}return(0,S.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,S.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Prompts`}),(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`View and edit the externalized prompt templates used across Relay lifecycle, routing, workspace, and automation flows.`})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsxs)(p,{variant:`outline`,className:`gap-1`,children:[(0,S.jsx)(i,{className:`size-3`}),e.length,` template`,e.length===1?``:`s`]}),(0,S.jsxs)(p,{variant:`outline`,className:o(`gap-1`,Z>0&&`border-amber-500/40 bg-amber-500/10 text-amber-300`),children:[Z,` modified`]}),(0,S.jsxs)(m,{variant:`outline`,size:`sm`,onClick:()=>void U(),disabled:l,children:[(0,S.jsx)(n,{className:o(`size-4`,l&&`animate-spin`)}),`Refresh`]})]})]}),D&&(0,S.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive`,children:[(0,S.jsx)(a,{className:`mt-0.5 size-4`}),(0,S.jsx)(`span`,{children:D})]}),l&&e.length===0?(0,S.jsx)(b,{size:`sm`,children:(0,S.jsx)(y,{className:`text-sm text-muted-foreground`,children:`Loading prompt templates…`})}):e.length===0?(0,S.jsx)(b,{children:(0,S.jsx)(y,{className:`py-10 text-center text-sm text-muted-foreground`,children:`No prompt templates are available yet.`})}):(0,S.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[220px_minmax(0,0.9fr)_minmax(0,1.1fr)]`,children:[(0,S.jsxs)(`nav`,{className:`space-y-1 xl:sticky xl:top-4 xl:self-start`,children:[(0,S.jsxs)(`button`,{type:`button`,className:o(`w-full rounded-md border px-3 py-2 text-left text-sm transition-colors`,G===C?`border-primary/50 bg-primary/10 text-foreground`:`border-transparent hover:border-border hover:bg-accent`),onClick:()=>P(C),children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`span`,{className:`font-medium`,children:`All`}),(0,S.jsx)(p,{variant:`outline`,className:`ml-auto h-4 px-1 text-[10px]`,children:e.length})]}),(0,S.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:`Every externalized prompt template`})]}),W.map(e=>(0,S.jsxs)(`button`,{type:`button`,className:o(`w-full rounded-md border px-3 py-2 text-left text-sm transition-colors`,G===e.key?`border-primary/50 bg-primary/10 text-foreground`:`border-transparent hover:border-border hover:bg-accent`),onClick:()=>P(e.key),children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`span`,{className:`font-medium`,children:e.label}),(0,S.jsx)(p,{variant:`outline`,className:`ml-auto h-4 px-1 text-[10px]`,children:e.count})]}),(0,S.jsx)(`span`,{className:`block truncate text-xs font-mono text-muted-foreground`,children:e.key})]},e.key))]}),(0,S.jsxs)(`div`,{className:`min-w-0 space-y-3`,children:[(0,S.jsx)(`div`,{className:`flex items-center justify-between gap-2 px-1`,children:(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h2`,{className:`text-sm font-semibold`,children:G===C?`All templates`:`${w(G)} templates`}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[K.length,` template`,K.length===1?``:`s`,` in this view`]})]})}),K.map(e=>{let t=e.slug===q,n=e.template!==e.defaultTemplate;return(0,S.jsx)(`button`,{type:`button`,className:o(`w-full rounded-xl border p-4 text-left transition-colors`,t?`border-primary/50 bg-primary/10 ring-1 ring-primary/20`:`border-border bg-card hover:border-primary/30 hover:bg-accent`),onClick:()=>te(e.slug),children:(0,S.jsx)(`div`,{className:`flex flex-wrap items-start gap-2`,children:(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:e.title}),n&&(0,S.jsx)(p,{className:`bg-amber-500/15 text-amber-300 hover:bg-amber-500/15`,children:`Modified`}),(0,S.jsx)(p,{variant:`outline`,className:`text-[10px]`,children:w(e.category)})]}),(0,S.jsx)(`div`,{className:`mt-1 font-mono text-[11px] text-muted-foreground`,children:e.slug}),e.description&&(0,S.jsx)(`p`,{className:`mt-2 line-clamp-2 text-sm text-muted-foreground`,children:e.description}),(0,S.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-3 text-[11px] text-muted-foreground`,children:[(0,S.jsxs)(`span`,{children:[e.variables.length,` variable`,e.variables.length===1?``:`s`]}),(0,S.jsxs)(`span`,{children:[`Updated `,f(V,e.updatedAt)]})]})]})})},e.slug)})]}),(0,S.jsx)(`div`,{className:`min-w-0`,children:J?(0,S.jsxs)(b,{children:[(0,S.jsxs)(v,{className:`border-b border-border`,children:[(0,S.jsxs)(ee,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(`span`,{children:J.title}),J.template!==J.defaultTemplate&&(0,S.jsx)(p,{className:`bg-amber-500/15 text-amber-300 hover:bg-amber-500/15`,children:`Customized`}),X&&(0,S.jsx)(p,{variant:`outline`,children:`Unsaved`})]}),(0,S.jsxs)(_,{className:`space-y-1`,children:[(0,S.jsx)(`div`,{className:`font-mono text-[11px]`,children:J.slug}),J.description&&(0,S.jsx)(`div`,{children:J.description})]})]}),(0,S.jsxs)(y,{className:`space-y-4 pt-4`,children:[k&&(0,S.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 p-2 text-xs text-destructive`,children:[(0,S.jsx)(a,{className:`mt-0.5 size-3.5`}),(0,S.jsx)(`span`,{children:k})]}),j&&(0,S.jsx)(`div`,{className:`rounded-md border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-xs text-emerald-300`,children:j}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-muted-foreground`,children:[(0,S.jsx)(t,{className:`size-3.5`}),`Available variables`]}),J.variables.length>0?(0,S.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:J.variables.map(e=>(0,S.jsx)(p,{variant:`secondary`,className:`font-mono text-[11px]`,children:`{{${e}}}`},e))}):(0,S.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`This template has no placeholder variables.`})]}),J.template!==J.defaultTemplate&&(0,S.jsx)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-200`,children:`This template differs from the built-in default. Reset will restore the original text.`}),(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`label`,{htmlFor:`prompt-template-editor`,className:`text-xs font-medium text-muted-foreground`,children:`Template text`}),(0,S.jsx)(h,{id:`prompt-template-editor`,value:Y,onChange:e=>{let t=e.target.value;R(e=>({...e,[J.slug]:t})),k&&A(``),j&&M(``)},rows:18,spellCheck:!1,className:`min-h-[360px] resize-y font-mono text-xs leading-5`})]})]}),(0,S.jsxs)(g,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,S.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:X?`Editing local changes.`:`Updated ${f(V,J.updatedAt)}.`}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[J.template!==J.defaultTemplate&&(0,S.jsxs)(m,{variant:`outline`,size:`sm`,onClick:()=>void re(),disabled:Q,children:[(0,S.jsx)(r,{className:`size-4`}),`Reset to default`]}),(0,S.jsx)(m,{variant:`outline`,size:`sm`,onClick:ie,disabled:!X||Q,children:`Cancel`}),(0,S.jsxs)(m,{size:`sm`,onClick:()=>void ne(),disabled:!X||Q,children:[(0,S.jsx)(c,{className:`size-4`}),`Save`]})]})]})]}):(0,S.jsx)(b,{size:`sm`,children:(0,S.jsx)(y,{className:`text-sm text-muted-foreground`,children:`Select a prompt template to edit it.`})})})]})]})}export{E as PromptSettingsView};
|
|
2
|
-
//# sourceMappingURL=prompt-settings-BpZse7-X.js.map
|