@anvia/studio 1.0.0-rc.4 → 1.0.0-rc.6
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/dist/index.d.ts +2 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/chunk-G5OACQEI-DCkAPDer.js +65 -0
- package/dist/ui/assets/chunk-G5OACQEI-DCkAPDer.js.map +1 -0
- package/dist/ui/assets/index-D_05WW73.js +12 -0
- package/dist/ui/assets/index-D_05WW73.js.map +1 -0
- package/dist/ui/assets/memory-page-CRmoZTWz.js +4 -0
- package/dist/ui/assets/memory-page-CRmoZTWz.js.map +1 -0
- package/dist/ui/index.html +2 -2
- package/package.json +7 -7
- package/dist/ui/assets/chunk-D2ECOWN5-fs3ih0yA.js +0 -65
- package/dist/ui/assets/chunk-D2ECOWN5-fs3ih0yA.js.map +0 -1
- package/dist/ui/assets/index-BLaXiUWO.js +0 -12
- package/dist/ui/assets/index-BLaXiUWO.js.map +0 -1
- package/dist/ui/assets/memory-page-DAJk0Zof.js +0 -4
- package/dist/ui/assets/memory-page-DAJk0Zof.js.map +0 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{i as e,r as t,s as n}from"./utils-C9GMruoG.js";import{l as r,t as i}from"./button-07gzSO47.js";import{a,i as o,n as s,r as c,t as l}from"./select-BOYfrfck.js";import{a as u,i as d,n as f,r as p,t as m}from"./studio-CeTsQ4gf.js";import{t as h}from"./badge-CcajoiAt.js";import{t as g}from"./renderers-BPGo4d2i.js";function _(e){if(e.role!==`assistant`||!v(e.metadata))return;let t=e.metadata.anvia;if(!v(t))return;let n=t.generation;if(!v(n)||typeof n.provider!=`string`||typeof n.modelId!=`string`||!w(n.usage))return;let r={...n.usage};n.usage.details!==void 0&&(r={...r,details:{...n.usage.details}});let i={provider:n.provider,modelId:n.modelId,usage:r};return k(n.finishReason)&&(i.finishReason=n.finishReason),typeof n.providerFinishReason==`string`&&(i.providerFinishReason=n.providerFinishReason),y(n.contextUsage)&&(i.contextUsage={...n.contextUsage,model:{...n.contextUsage.model,context:{...n.contextUsage.model.context}}}),D(n.sources)&&(i.sources=n.sources.map(e=>({...e}))),O(n.providerToolCalls)&&(i.providerToolCalls=n.providerToolCalls.map(e=>{let t={...e};return e.details!==void 0&&(t={...t,details:{...e.details}}),t})),i}function v(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function y(e){if(!v(e)||!v(e.model))return!1;let t=e.model.context;if(typeof e.model.modelId==`string`&&v(t)&&x(t.contextWindow)&&S(t.maxInputTokens)&&S(t.maxOutputTokens)&&T(e.usedTokens)&&T(e.remainingTokens)&&C(e.usedPercent)&&C(e.remainingPercent)){let n=t.contextWindow,r=Math.max(0,n-e.usedTokens),i=Math.min(100,e.usedTokens/n*100),a=r/n*100;return e.remainingTokens===r&&b(e.usedPercent,i)&&b(e.remainingPercent,a)}return!1}function b(e,t){let n=Math.max(1,Math.abs(e),Math.abs(t));return Math.abs(e-t)<=2**-52*n*8}function x(e){return T(e)&&e>0}function S(e){return e===void 0||x(e)}function C(e){return T(e)&&e<=100}function w(e){return v(e)?T(e.inputTokens)&&T(e.outputTokens)&&T(e.totalTokens)&&T(e.cachedInputTokens)&&T(e.cacheCreationInputTokens)&&E(e.details):!1}function T(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0}function E(e){if(e===void 0)return!0;if(!v(e))return!1;let t,n=0;for(let[r,i]of Object.entries(e)){if(i===void 0||!T(i))return!1;r===`total`?t=i:n+=i}return t!==void 0&&t===n}function D(e){return Array.isArray(e)&&e.every(e=>v(e)&&e.type===`url`&&typeof e.url==`string`&&(e.title===void 0||typeof e.title==`string`)&&(e.id===void 0||typeof e.id==`string`)&&(e.startIndex===void 0||typeof e.startIndex==`number`)&&(e.endIndex===void 0||typeof e.endIndex==`number`))}function O(e){return Array.isArray(e)&&e.every(e=>v(e)&&typeof e.id==`string`&&typeof e.name==`string`&&(e.status===void 0||typeof e.status==`string`)&&(e.details===void 0||v(e.details)))}function k(e){return e===`stop`||e===`length`||e===`content-filter`||e===`tool-calls`||e===`other`}var A=n(e(),1),j=t();function M(e){return e.flatMap(e=>e.message.role===`assistant`?[{position:e.position,runId:e.runId,turn:e.turn,createdAt:e.createdAt,preview:I(e.message),generation:_(e.message)}]:[])}function N(e){let t=M(e.records);return(0,j.jsxs)(`section`,{className:`grid min-w-0 overflow-hidden border-y border-border/80`,children:[(0,j.jsxs)(`header`,{className:`flex min-h-11 items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:[(0,j.jsx)(`span`,{children:`Assistant responses`}),(0,j.jsxs)(`span`,{className:`font-medium normal-case tracking-normal`,children:[t.length,` responses`]})]}),t.length===0?(0,j.jsx)(`div`,{className:`border-t border-border/70 px-4 py-8 text-center text-sm text-muted-foreground`,children:`No persisted assistant responses.`}):(0,j.jsx)(`div`,{className:`grid divide-y divide-border/70 border-t border-border/70`,children:t.map(e=>(0,j.jsx)(P,{row:e},`${e.position}:${e.runId}`))})]})}function P(e){let t=e.row.generation;return(0,j.jsxs)(`article`,{className:`grid min-w-0 gap-3 px-3 py-4`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center justify-between gap-2`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,j.jsxs)(h,{className:`border-border/80 bg-muted/45 text-foreground`,children:[`Turn `,e.row.turn]}),t===void 0?(0,j.jsx)(h,{className:`border-border/80 bg-background/40 text-muted-foreground`,children:`Usage unavailable`}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(h,{className:`border-border/80 bg-muted/45 text-foreground`,children:t.provider}),(0,j.jsx)(h,{className:`max-w-full truncate border-border/80 bg-muted/45 text-foreground`,children:t.modelId})]})]}),(0,j.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:r(e.row.createdAt)})]}),(0,j.jsx)(`p`,{className:`m-0 whitespace-pre-wrap break-words text-sm leading-6 text-foreground`,children:e.row.preview}),t===void 0?null:(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,j.jsx)(F,{label:`total`,value:t.usage.totalTokens,suffix:` tokens`}),(0,j.jsx)(F,{label:`input`,value:t.usage.inputTokens}),(0,j.jsx)(F,{label:`output`,value:t.usage.outputTokens}),(0,j.jsx)(F,{label:`cached`,value:t.usage.cachedInputTokens}),(0,j.jsx)(F,{label:`cache create`,value:t.usage.cacheCreationInputTokens})]})]})}function F(e){return(0,j.jsxs)(`span`,{children:[e.label,` `,e.value.toLocaleString(),e.suffix]})}function I(e){if(typeof e.content==`string`)return e.content.trim().length>0?L(e.content):`Assistant response`;let t=e.content.flatMap(e=>e.type===`text`?[e.text]:[]).join(`
|
|
2
|
+
`).trim();if(t.length>0)return L(t);let n=e.content.flatMap(e=>e.type===`tool-call`?[e.toolName]:[]);if(n.length>0)return`Tool call${n.length===1?``:`s`}: ${n.join(`, `)}`;let r=e.content.flatMap(e=>e.type===`reasoning`?[e.text]:[]).join(`
|
|
3
|
+
`).trim();if(r.length>0)return L(r);let i=e.content.filter(e=>e.type===`image`).length;return i>0?`${i} generated image${i===1?``:`s`}`:`Assistant response`}function L(e){let t=e.replace(/\s+/g,` `).trim();return t.length>220?`${t.slice(0,217)}...`:t}function R(e){let[t,n]=(0,A.useState)([]),[r,h]=(0,A.useState)(``),[g,_]=(0,A.useState)([]),[v,y]=(0,A.useState)([]),[b,x]=(0,A.useState)(``),[S,C]=(0,A.useState)(``),[w,T]=(0,A.useState)(),[E,D]=(0,A.useState)(),[O,k]=(0,A.useState)(!1),[M,N]=(0,A.useState)(!1),[P,F]=(0,A.useState)(!1),[I,L]=(0,A.useState)(``),R=(0,A.useRef)(0),B=t.find(e=>e.ref===r),H=(0,A.useCallback)(async()=>{if(!e.enabled){n([]),h(``);return}k(!0),L(``);try{let e=await fetch(`/memory/sources`);if(!e.ok)throw Error(`Memory sources failed with HTTP ${e.status}`);let t=await e.json();n(t.sources),h(e=>t.sources.some(t=>t.ref===e)?e:Z(t.sources))}catch(e){L(e instanceof Error?e.message:String(e))}finally{k(!1)}},[e.enabled]);(0,A.useEffect)(()=>{H()},[H]);let G=(0,A.useCallback)(async()=>{let t=R.current+1;if(R.current=t,!e.enabled||B===void 0||!B.available){_([]),y([]),T(void 0),D(void 0),N(!1);return}N(!0),L(``);try{let e=`/memory/sources/${encodeURIComponent(B.ref)}`,[n,r]=await Promise.all([fetch(`${e}/users?limit=50`),fetch(`${e}/conversations?limit=100`)]);if(!n.ok)throw Error(`Memory users failed with HTTP ${n.status}`);if(!r.ok)throw Error(`Memory conversations failed with HTTP ${r.status}`);let i=await n.json(),a=await r.json();if(R.current!==t)return;_(i.users),y(a.conversations),C(e=>a.conversations.find(t=>t.ref===e)?.ref??a.conversations[0]?.ref??``)}catch(e){R.current===t&&L(e instanceof Error?e.message:String(e))}finally{R.current===t&&N(!1)}},[e.enabled,B]);(0,A.useEffect)(()=>{x(``),C(``),_([]),y([]),T(void 0),D(void 0),G()},[G]),(0,A.useEffect)(()=>{if(!e.enabled||B===void 0||!B.available||S.length===0){T(void 0),D(void 0);return}let t=B.ref,n=!1;async function r(){F(!0),L(``);try{let e=`/memory/sources/${encodeURIComponent(t)}/conversations/${encodeURIComponent(S)}`,[r,i]=await Promise.all([fetch(`${e}/messages`),fetch(`${e}/steps`)]);if(!r.ok)throw Error(`Conversation messages failed with HTTP ${r.status}`);if(!i.ok)throw Error(`Conversation steps failed with HTTP ${i.status}`);n||(T(await r.json()),D(await i.json()))}catch(e){n||(L(e instanceof Error?e.message:String(e)),T(void 0),D(void 0))}finally{n||F(!1)}}return r(),()=>{n=!0}},[e.enabled,S,B]);let K=(0,A.useMemo)(()=>b.length===0?v:v.filter(e=>e.userId===b),[v,b]),q=(0,A.useMemo)(()=>X(g,v),[v,g]),Q=K.find(e=>e.ref===S)??K[0];return(0,A.useEffect)(()=>{if(K.length===0){C(``);return}K.some(e=>e.ref===S)||C(K[0]?.ref??``)},[S,K]),(0,j.jsxs)(u,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`Memory`,children:[(0,j.jsx)(d,{title:`Memory`,description:`Inspect persisted agent conversations directly. Studio sessions appear only as a fallback for agents without configured memory.`,action:(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start`,children:[t.length===0?null:(0,j.jsxs)(l,{value:r,onValueChange:h,children:[(0,j.jsx)(o,{className:`h-8 min-h-8 w-60 rounded-md border-border text-xs max-sm:w-full`,children:(0,j.jsx)(a,{placeholder:`Memory source`})}),(0,j.jsx)(s,{align:`end`,children:t.map(e=>(0,j.jsxs)(c,{value:e.ref,children:[e.label,e.available?``:` (unavailable)`]},e.ref))})]}),(0,j.jsx)(f,{label:`users`,value:q.userCount}),(0,j.jsx)(f,{label:`conversations`,value:q.conversationCount}),(0,j.jsx)(f,{label:`messages`,value:q.messageCount}),(0,j.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,disabled:O||M,onClick:()=>void H(),children:`Refresh`})]})}),(0,j.jsx)(p,{className:`overflow-hidden`,children:e.enabled?O&&t.length===0?(0,j.jsx)(m,{title:`Loading memory`,text:`Discovering configured memory sources.`}):I.length>0&&t.length===0?(0,j.jsx)(m,{title:`Memory error`,text:I}):B===void 0?(0,j.jsx)(m,{title:`No memory sources`,text:`No registered agent exposes memory.`}):B.available?M&&v.length===0?(0,j.jsx)(m,{title:`Loading memory`,text:`Reading ${B.label}.`}):I.length>0&&v.length===0?(0,j.jsx)(m,{title:`Memory error`,text:I}):v.length===0?(0,j.jsx)(J,{source:B,userCount:g.length,onRefresh:()=>void G()}):(0,j.jsxs)(`div`,{className:[`grid h-full min-h-0 overflow-hidden`,I.length===0?`grid-rows-[minmax(0,1fr)]`:`grid-rows-[auto_minmax(0,1fr)]`].join(` `),children:[I.length===0?null:(0,j.jsx)(Y,{message:I}),(0,j.jsxs)(`div`,{className:`grid min-h-0 grid-cols-[260px_minmax(320px,0.78fr)_minmax(0,1.22fr)] overflow-hidden border-t border-border/80 max-xl:grid-cols-[240px_minmax(0,1fr)] max-xl:grid-rows-[minmax(240px,0.42fr)_minmax(0,1fr)] max-md:grid-cols-1 max-md:grid-rows-[auto_minmax(240px,0.38fr)_minmax(0,1fr)]`,children:[(0,j.jsx)(z,{users:g,selectedUserId:b,totalConversations:v.length,onSelect:x}),(0,j.jsx)(V,{agents:e.agents,conversations:K,selectedConversationRef:Q?.ref??``,source:B,onSelect:C}),(0,j.jsx)(U,{agents:e.agents,conversation:Q,detailLoading:P,messages:w,source:B,steps:E})]})]}):(0,j.jsx)(W,{source:B}):(0,j.jsx)(m,{title:`Memory unavailable`,text:`No agent memory or Studio session store is configured.`})})]})}function z(e){return(0,j.jsx)(`aside`,{className:`min-h-0 overflow-auto border-r border-border/80 pr-3 max-md:border-b max-md:border-r-0 max-md:pr-0`,children:(0,j.jsxs)(`div`,{className:`grid gap-3 py-4 pr-3 max-md:pr-0`,children:[(0,j.jsx)(K,{label:`Users`,value:e.users.length}),(0,j.jsx)(B,{active:e.selectedUserId.length===0,title:`All users`,detail:`${e.totalConversations} conversations`,onClick:()=>e.onSelect(``)}),(0,j.jsx)(`div`,{className:`grid gap-1`,children:e.users.map(t=>(0,j.jsx)(B,{active:e.selectedUserId===t.userId,title:t.userId,detail:`${t.conversationCount} conversations / ${r(t.lastInteractionAt)}`,onClick:()=>e.onSelect(t.userId)},t.userId))})]})})}function B(e){return(0,j.jsxs)(`button`,{className:[`grid min-w-0 gap-1 rounded-lg border border-transparent px-3 py-2.5 text-left transition duration-200 hover:border-border/80 hover:bg-muted/25 focus-visible:border-ring focus-visible:outline-none`,e.active?`border-border/80 bg-muted/35`:``].join(` `),type:`button`,onClick:e.onClick,children:[(0,j.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.title}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs leading-5 text-muted-foreground`,children:e.detail})]})}function V(e){return(0,j.jsx)(`section`,{className:`min-h-0 overflow-auto border-r border-border/80 px-4 max-xl:border-r-0 max-xl:pr-0 max-md:border-b max-md:px-0`,children:(0,j.jsxs)(`div`,{className:`grid gap-3 py-4`,children:[(0,j.jsx)(K,{label:`Conversations`,value:e.conversations.length}),e.conversations.length===0?(0,j.jsx)(`div`,{className:`border-y border-dashed border-border/80 px-3 py-8 text-center text-sm text-muted-foreground`,children:`No conversations for this user.`}):(0,j.jsx)(`div`,{className:`grid border-y border-border/80`,children:e.conversations.map(t=>(0,j.jsx)(H,{active:t.ref===e.selectedConversationRef,agentName:$(e.agents,e.source,t.agentIds),conversation:t,onSelect:()=>e.onSelect(t.ref)},t.ref))})]})})}function H(e){return(0,j.jsxs)(`button`,{className:[`grid min-w-0 gap-2 border-b border-border/70 px-3 py-3 text-left transition duration-200 last:border-b-0 hover:bg-muted/20 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,e.active?`bg-muted/35`:``].join(` `),type:`button`,onClick:e.onSelect,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,j.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.conversation.title??e.conversation.sessionId}),(0,j.jsxs)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:[e.agentName,` / `,e.conversation.userId]})]}),(0,j.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:e.conversation.messageCount})]}),(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,j.jsx)(`span`,{children:r(e.conversation.updatedAt)}),(0,j.jsx)(`span`,{className:`min-w-0 truncate`,children:e.conversation.sessionId})]})]})}function U(e){return e.conversation===void 0?(0,j.jsx)(`section`,{className:`min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1`,children:(0,j.jsx)(m,{title:`No conversation selected`,text:`Choose a conversation to inspect.`})}):(0,j.jsx)(`section`,{className:`min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1`,children:(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-5`,children:[(0,j.jsxs)(`header`,{className:`grid gap-4 border-b border-border/80 pb-5`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4 max-md:grid`,children:[(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,j.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Persisted conversation`}),(0,j.jsx)(`h2`,{className:`m-0 min-w-0 truncate text-2xl font-semibold leading-none text-foreground`,children:e.conversation.title??e.conversation.sessionId}),(0,j.jsx)(`span`,{className:`min-w-0 break-all font-mono text-xs text-muted-foreground`,children:e.conversation.ref})]}),(0,j.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,j.jsx)(h,{className:`border-border/80 bg-muted/45 text-foreground`,children:e.source.storeKind??e.source.kind}),(0,j.jsx)(h,{className:`border-border/80 bg-muted/45 text-foreground`,children:$(e.agents,e.source,e.conversation.agentIds)})]})]}),(0,j.jsxs)(`div`,{className:`grid border-y border-border/80 sm:grid-cols-4 sm:divide-x sm:divide-border/80`,children:[(0,j.jsx)(q,{label:`user`,value:e.conversation.userId}),(0,j.jsx)(q,{label:`messages`,value:e.conversation.messageCount}),(0,j.jsx)(q,{label:`created`,value:r(e.conversation.createdAt)}),(0,j.jsx)(q,{label:`updated`,value:r(e.conversation.updatedAt)})]})]}),e.detailLoading?(0,j.jsx)(m,{title:`Loading detail`,text:`Reading persisted messages.`}):(0,j.jsxs)(`div`,{className:`grid gap-4`,children:[e.conversation.metadata===void 0?null:(0,j.jsx)(G,{title:`metadata`,value:e.conversation.metadata}),(0,j.jsx)(N,{records:e.messages?.records??[]}),(0,j.jsx)(G,{title:`messages`,value:e.messages?.messages??[]}),(0,j.jsx)(G,{title:`message records`,value:e.messages?.records??[]}),(0,j.jsx)(G,{title:`derived transcript`,value:e.steps?.steps??[]})]})]})})}function W(e){return(0,j.jsx)(m,{className:`h-full`,title:`${e.source.label} is not inspectable`,text:e.source.reason??`This memory store does not expose read-only discovery.`})}function G(e){let t=Array.isArray(e.value)?e.value.length:void 0;return(0,j.jsxs)(`details`,{className:`group grid min-w-0 overflow-hidden border-y border-border/80`,open:!0,children:[(0,j.jsxs)(`summary`,{className:`flex min-h-11 cursor-pointer list-none items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden`,children:[(0,j.jsx)(`span`,{children:e.title}),(0,j.jsx)(`span`,{className:`font-medium normal-case tracking-normal`,children:t===void 0?`JSON`:`${t} items`})]}),(0,j.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-t border-border/70`,children:(0,j.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground`,children:(0,j.jsx)(`code`,{children:(0,j.jsx)(g,{text:Q(e.value)})})})})]})}function K(e){return(0,j.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,j.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,j.jsx)(`span`,{className:`text-xs font-semibold tabular-nums text-muted-foreground`,children:e.value})]})}function q(e){return(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-1 px-3 py-3 first:pl-0 last:pr-0`,children:[(0,j.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.label}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-sm text-foreground`,title:String(e.value),children:e.value})]})}function J(e){return(0,j.jsx)(m,{className:`h-full`,title:`No saved conversations yet`,text:`Conversations will appear here after the connected agent writes to ${e.source.label}. ${e.userCount} users are currently available.`,action:(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center justify-center gap-3`,children:[(0,j.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,onClick:e.onRefresh,children:`Refresh`}),(0,j.jsx)(`span`,{className:`text-xs leading-5 text-muted-foreground`,children:`Existing database conversations are discovered automatically.`})]})})}function Y(e){return(0,j.jsx)(`div`,{className:`mb-3 border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs leading-5 text-destructive`,children:e.message})}function X(e,t){return{userCount:e.length,conversationCount:t.length,messageCount:t.reduce((e,t)=>e+t.messageCount,0)}}function Z(e){return e.find(e=>e.kind===`agent`&&e.available)?.ref??e.find(e=>e.available)?.ref??e[0]?.ref??``}function Q(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function $(e,t,n){if(n.length===1){let t=n[0]??`agent`;return e.find(e=>e.id===t)?.name??t}return t.label}export{R as MemoryPage};
|
|
4
|
+
//# sourceMappingURL=memory-page-CRmoZTWz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-page-CRmoZTWz.js","names":[],"sources":["../../../../core/dist/chunk-HT4P3SSG.js","../../../src/ui/app/modules/memory/memory-generation-ledger.tsx","../../../src/ui/app/modules/memory/memory-page.tsx"],"sourcesContent":["import {\n parseMessage,\n parseMessages,\n toProviderJsonSchema\n} from \"./chunk-G5OACQEI.js\";\nimport {\n isJsonValue\n} from \"./chunk-SROQA7I7.js\";\nimport {\n abortError,\n resolveRetryOptions,\n retryDelayMs,\n retryOptionsForFailure,\n runWithRetries,\n throwIfAborted,\n waitForRetry\n} from \"./chunk-UBE4WH6G.js\";\n\n// src/completion/types.ts\nfunction reasoningDisplayText(reasoning) {\n const details = \"type\" in reasoning ? reasoning.details : reasoning;\n if (details === void 0) {\n return \"type\" in reasoning ? reasoning.text : \"\";\n }\n return details.flatMap((item) => {\n if (item.type === \"text\" || item.type === \"summary\") {\n return [item.text];\n }\n return [];\n }).join(\"\");\n}\nfunction isProviderTool(value) {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const candidate = value;\n return candidate.kind === \"provider\" && typeof candidate.provider === \"string\" && candidate.provider.trim().length > 0 && typeof candidate.name === \"string\" && candidate.name.trim().length > 0 && (candidate.configuration === void 0 || typeof candidate.configuration === \"object\" && candidate.configuration !== null && !Array.isArray(candidate.configuration) && isJsonValue(candidate.configuration));\n}\nfunction calculateContextUsage(usage, model) {\n if (model === void 0 || !Number.isFinite(usage.inputTokens) || usage.inputTokens <= 0 || !Number.isFinite(model.context.contextWindow) || model.context.contextWindow <= 0) {\n return void 0;\n }\n const usedTokens = Math.max(0, usage.inputTokens);\n const remainingTokens = Math.max(0, model.context.contextWindow - usedTokens);\n const usedPercent = Math.min(100, usedTokens / model.context.contextWindow * 100);\n return {\n model,\n usedTokens,\n remainingTokens,\n usedPercent,\n remainingPercent: 100 - usedPercent\n };\n}\nfunction withContextUsage(response, model) {\n const contextUsage = calculateContextUsage(response.usage, model);\n return contextUsage === void 0 ? response : { ...response, contextUsage };\n}\nfunction resolveModelContextLimits(modelId, catalog, override) {\n return override ?? catalog[modelId];\n}\nvar Usage = {\n empty() {\n return {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n cacheCreationInputTokens: 0\n };\n },\n add(left, right) {\n const result = {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n totalTokens: left.totalTokens + right.totalTokens,\n cachedInputTokens: left.cachedInputTokens + right.cachedInputTokens,\n cacheCreationInputTokens: left.cacheCreationInputTokens + right.cacheCreationInputTokens\n };\n const details = addUsageDetails(left, right);\n if (details !== void 0) {\n result.details = details;\n }\n return result;\n }\n};\nfunction addUsageDetails(left, right) {\n if (isEmptyUsage(left) && left.details === void 0) {\n return right.details === void 0 ? void 0 : { ...right.details };\n }\n if (isEmptyUsage(right) && right.details === void 0) {\n return left.details === void 0 ? void 0 : { ...left.details };\n }\n if (left.details === void 0 || right.details === void 0) {\n return void 0;\n }\n const details = { ...left.details };\n for (const [key, value] of Object.entries(right.details)) {\n details[key] = (details[key] ?? 0) + value;\n }\n return details;\n}\nfunction isEmptyUsage(usage) {\n return usage.inputTokens === 0 && usage.outputTokens === 0 && usage.totalTokens === 0 && usage.cachedInputTokens === 0 && usage.cacheCreationInputTokens === 0;\n}\nfunction getAssistantGenerationMetadata(message) {\n if (message.role !== \"assistant\" || !isJsonObjectValue(message.metadata)) {\n return void 0;\n }\n const frameworkMetadata = message.metadata.anvia;\n if (!isJsonObjectValue(frameworkMetadata)) {\n return void 0;\n }\n const generation = frameworkMetadata.generation;\n if (!isJsonObjectValue(generation) || typeof generation.provider !== \"string\" || typeof generation.modelId !== \"string\" || !isUsageValue(generation.usage)) {\n return void 0;\n }\n let usage = { ...generation.usage };\n if (generation.usage.details !== void 0) {\n usage = { ...usage, details: { ...generation.usage.details } };\n }\n const metadata = {\n provider: generation.provider,\n modelId: generation.modelId,\n usage\n };\n if (isCompletionFinishReason(generation.finishReason)) {\n metadata.finishReason = generation.finishReason;\n }\n if (typeof generation.providerFinishReason === \"string\") {\n metadata.providerFinishReason = generation.providerFinishReason;\n }\n if (isContextUsageValue(generation.contextUsage)) {\n metadata.contextUsage = {\n ...generation.contextUsage,\n model: {\n ...generation.contextUsage.model,\n context: { ...generation.contextUsage.model.context }\n }\n };\n }\n if (isCompletionSourceArray(generation.sources)) {\n metadata.sources = generation.sources.map((source) => ({ ...source }));\n }\n if (isProviderToolCallArray(generation.providerToolCalls)) {\n metadata.providerToolCalls = generation.providerToolCalls.map((toolCall) => {\n let copy = { ...toolCall };\n if (toolCall.details !== void 0) {\n copy = { ...copy, details: { ...toolCall.details } };\n }\n return copy;\n });\n }\n return metadata;\n}\nfunction isJsonObjectValue(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isContextUsageValue(value) {\n if (!isJsonObjectValue(value) || !isJsonObjectValue(value.model)) {\n return false;\n }\n const context = value.model.context;\n if (typeof value.model.modelId === \"string\" && isJsonObjectValue(context) && isPositiveFiniteNumber(context.contextWindow) && isOptionalPositiveFiniteNumber(context.maxInputTokens) && isOptionalPositiveFiniteNumber(context.maxOutputTokens) && isNonnegativeFiniteNumber(value.usedTokens) && isNonnegativeFiniteNumber(value.remainingTokens) && isPercentage(value.usedPercent) && isPercentage(value.remainingPercent)) {\n const contextWindow = context.contextWindow;\n const remainingTokens = Math.max(0, contextWindow - value.usedTokens);\n const usedPercent = Math.min(100, value.usedTokens / contextWindow * 100);\n const remainingPercent = remainingTokens / contextWindow * 100;\n return value.remainingTokens === remainingTokens && approximatelyEqual(value.usedPercent, usedPercent) && approximatelyEqual(value.remainingPercent, remainingPercent);\n }\n return false;\n}\nfunction approximatelyEqual(left, right) {\n const scale = Math.max(1, Math.abs(left), Math.abs(right));\n return Math.abs(left - right) <= Number.EPSILON * scale * 8;\n}\nfunction isPositiveFiniteNumber(value) {\n return isNonnegativeFiniteNumber(value) && value > 0;\n}\nfunction isOptionalPositiveFiniteNumber(value) {\n return value === void 0 || isPositiveFiniteNumber(value);\n}\nfunction isPercentage(value) {\n return isNonnegativeFiniteNumber(value) && value <= 100;\n}\nfunction isUsageValue(value) {\n if (!isJsonObjectValue(value)) {\n return false;\n }\n return isNonnegativeFiniteNumber(value.inputTokens) && isNonnegativeFiniteNumber(value.outputTokens) && isNonnegativeFiniteNumber(value.totalTokens) && isNonnegativeFiniteNumber(value.cachedInputTokens) && isNonnegativeFiniteNumber(value.cacheCreationInputTokens) && isUsageDetailsValue(value.details);\n}\nfunction isNonnegativeFiniteNumber(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0;\n}\nfunction isUsageDetailsValue(value) {\n if (value === void 0) {\n return true;\n }\n if (!isJsonObjectValue(value)) {\n return false;\n }\n let total;\n let bucketSum = 0;\n for (const [key, detail] of Object.entries(value)) {\n if (detail === void 0 || !isNonnegativeFiniteNumber(detail)) {\n return false;\n }\n if (key === \"total\") {\n total = detail;\n } else {\n bucketSum += detail;\n }\n }\n return total !== void 0 && total === bucketSum;\n}\nfunction isCompletionSourceArray(value) {\n return Array.isArray(value) && value.every(\n (source) => isJsonObjectValue(source) && source.type === \"url\" && typeof source.url === \"string\" && (source.title === void 0 || typeof source.title === \"string\") && (source.id === void 0 || typeof source.id === \"string\") && (source.startIndex === void 0 || typeof source.startIndex === \"number\") && (source.endIndex === void 0 || typeof source.endIndex === \"number\")\n );\n}\nfunction isProviderToolCallArray(value) {\n return Array.isArray(value) && value.every(\n (toolCall) => isJsonObjectValue(toolCall) && typeof toolCall.id === \"string\" && typeof toolCall.name === \"string\" && (toolCall.status === void 0 || typeof toolCall.status === \"string\") && (toolCall.details === void 0 || isJsonObjectValue(toolCall.details))\n );\n}\nfunction isCompletionFinishReason(value) {\n return value === \"stop\" || value === \"length\" || value === \"content-filter\" || value === \"tool-calls\" || value === \"other\";\n}\nvar CompletionCapabilityError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"CompletionCapabilityError\";\n }\n};\nfunction assertCompletionRequestSupported(model, request, options = {}) {\n const modelLabel = `${model.provider}:${model.modelId}`;\n const capabilities = model.capabilities;\n if (options.streaming === true && !capabilities.streaming) {\n throw new CompletionCapabilityError(`${modelLabel} does not support streaming completions.`);\n }\n if (request.tools.length > 0 && !capabilities.tools) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool definitions.`);\n }\n if ((request.providerTools?.length ?? 0) > 0 && capabilities.providerTools !== true) {\n throw new CompletionCapabilityError(`${modelLabel} does not support provider-executed tools.`);\n }\n if (request.toolChoice !== void 0 && !capabilities.toolChoice) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool choice.`);\n }\n if (request.outputSchema !== void 0 && !capabilities.outputSchema) {\n throw new CompletionCapabilityError(`${modelLabel} does not support output schemas.`);\n }\n if (!capabilities.imageInput && requestHasImageInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support image input.`);\n }\n if (!capabilities.documentInput && requestHasFileDocumentInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support document file input.`);\n }\n}\nfunction textFromAssistantContent(content) {\n return content.flatMap((item) => item.type === \"text\" ? [item.text] : []).join(\"\\n\");\n}\nfunction requestHasImageInput(request) {\n return request.chatHistory.some(\n (message) => message.role === \"system\" || typeof message.content === \"string\" ? false : message.content.some((content) => content.type === \"image\")\n );\n}\nfunction requestHasFileDocumentInput(request) {\n return request.chatHistory.some(\n (message) => message.role === \"user\" && typeof message.content !== \"string\" ? message.content.some((content) => content.type === \"file\" && content.data.type !== \"text\") : false\n );\n}\n\n// src/internal/completion-request.ts\nfunction createCompletionRequest(input, options) {\n const configuredTools = options.tools ?? [];\n const chatHistory = messagesFromInput(input);\n assertNoAgentInteractionParts(chatHistory);\n const request = {\n chatHistory,\n documents: [...options.documents ?? []],\n tools: configuredTools.filter((tool) => !isProviderTool(tool))\n };\n const providerTools = configuredTools.filter(isProviderTool);\n if (providerTools.length > 0) request.providerTools = providerTools;\n if (options.instructions !== void 0 && options.instructions.length > 0) {\n request.instructions = options.instructions;\n }\n if (options.temperature !== void 0) request.temperature = options.temperature;\n if (options.maxTokens !== void 0) request.maxTokens = options.maxTokens;\n if (options.toolChoice !== void 0) request.toolChoice = options.toolChoice;\n if (options.outputSchema !== void 0) request.outputSchema = options.outputSchema;\n if (options.providerOptions !== void 0) request.providerOptions = options.providerOptions;\n return request;\n}\nfunction assertNoAgentInteractionParts(messages) {\n for (const message of messages) {\n if (message.role === \"tool\" && message.content.some((part) => part.type !== \"tool-result\")) {\n throw new TypeError(\n \"Completion messages contain an unresolved Agent interaction response. Resume the Agent with its continuation instead of sending interaction parts directly to a provider.\"\n );\n }\n }\n}\nfunction messagesFromInput(input) {\n if (typeof input === \"string\") {\n return [{ role: \"user\", content: input }];\n }\n if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new Error(\"input must contain at least one Message.\");\n }\n return parseMessages(input);\n }\n return [parseMessage(input)];\n}\n\n// src/completion/generate-completion.ts\nvar CompletionStructuredOutputError = class extends Error {\n phase;\n outputLength;\n usage;\n finishReason;\n providerFinishReason;\n constructor(options) {\n const failure = options.phase === \"truncated\" ? \"because the provider reached its output limit\" : options.phase === \"parse\" ? \"during JSON parsing\" : \"during schema validation\";\n super(`Structured completion output failed ${failure}.`, { cause: options.cause });\n this.name = \"CompletionStructuredOutputError\";\n this.phase = options.phase;\n this.outputLength = options.outputLength;\n this.usage = options.usage;\n this.finishReason = options.finishReason;\n this.providerFinishReason = options.providerFinishReason;\n }\n};\nasync function generateCompletion(options) {\n throwIfAborted(options.abortSignal);\n const request = requestFromOptions(options);\n assertCompletionRequestSupported(options.model, request);\n const retries = resolveOptionalRetries(options.retries);\n const response = await sendCompletion(options.model, request, retries, options.abortSignal);\n return resultFromResponse(response, structuredOutputSchema(options));\n}\nfunction streamCompletion(options) {\n throwIfAborted(options.abortSignal);\n const request = requestFromOptions(options);\n if (!isStreamingCompletionModel(options.model) || !options.model.capabilities.streaming) {\n throw new Error(\"This completion model does not support streaming\");\n }\n assertCompletionRequestSupported(options.model, request, { streaming: true });\n const retries = resolveOptionalRetries(options.retries);\n return streamCompletionWithRetries(\n options.model,\n request,\n retries,\n options.abortSignal,\n structuredOutputSchema(options)\n );\n}\nasync function sendCompletion(model, request, retries, abortSignal) {\n const callOptions = modelCallOptions(abortSignal);\n return runWithRetries(\n () => {\n throwIfAborted(abortSignal);\n return model.completion(request, callOptions);\n },\n retries,\n { streaming: false, abortSignal }\n );\n}\nfunction resolveOptionalRetries(setting) {\n return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);\n}\nasync function* streamCompletionWithRetries(model, request, retries, abortSignal, outputSchema) {\n let attempt = 1;\n let swallowedUsage = Usage.empty();\n const callOptions = modelCallOptions(abortSignal);\n while (true) {\n let exposedProgress = false;\n let retryDelay;\n try {\n throwIfAborted(abortSignal);\n const events = model.streamCompletion(request, callOptions);\n for await (const event of events) {\n if (event.type === \"error\" && !exposedProgress) {\n const retryOptions = retryOptionsForFailure(retries, {\n error: event.error,\n attempt,\n streaming: true\n });\n if (retryOptions !== void 0) {\n swallowedUsage = Usage.add(swallowedUsage, event.usage ?? Usage.empty());\n retryDelay = retryDelayMs(retryOptions, attempt);\n break;\n }\n }\n if (event.type === \"error\") {\n yield {\n type: \"error\",\n error: event.error,\n usage: Usage.add(swallowedUsage, event.usage ?? Usage.empty())\n };\n return;\n }\n if (event.type === \"final\") {\n const response = swallowedUsage.totalTokens === 0 ? event.response : {\n ...event.response,\n usage: Usage.add(swallowedUsage, event.response.usage)\n };\n try {\n yield {\n type: \"final\",\n result: resultFromResponse(response, outputSchema)\n };\n } catch (error) {\n yield { type: \"error\", error, usage: response.usage };\n }\n return;\n }\n exposedProgress = true;\n yield event;\n }\n if (retryDelay !== void 0) {\n await waitForRetry(retryDelay, abortSignal);\n attempt += 1;\n continue;\n }\n yield {\n type: \"error\",\n error: new Error(\"The completion model stream ended without a final event.\"),\n usage: swallowedUsage\n };\n return;\n } catch (error) {\n const normalizedError = abortSignal?.aborted === true ? abortError(abortSignal.reason) : error;\n if (!exposedProgress) {\n const retryOptions = retryOptionsForFailure(retries, {\n error: normalizedError,\n attempt,\n streaming: true\n });\n if (retryOptions !== void 0) {\n try {\n await waitForRetry(retryDelayMs(retryOptions, attempt), abortSignal);\n attempt += 1;\n continue;\n } catch (waitError) {\n yield { type: \"error\", error: waitError, usage: swallowedUsage };\n return;\n }\n }\n }\n yield { type: \"error\", error: normalizedError, usage: swallowedUsage };\n return;\n }\n }\n}\nfunction requestFromOptions(options) {\n const input = inputFromOptions(options);\n return createCompletionRequest(input, {\n instructions: options.instructions,\n documents: options.documents,\n tools: options.tools,\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n toolChoice: options.toolChoice,\n providerOptions: options.providerOptions,\n outputSchema: \"outputSchema\" in options && options.outputSchema !== void 0 ? toProviderJsonSchema(options.outputSchema) : void 0\n });\n}\nfunction inputFromOptions(options) {\n const prompt = options.prompt;\n const messages = options.messages;\n const hasPrompt = prompt !== void 0;\n const hasMessages = messages !== void 0;\n if (hasPrompt === hasMessages) {\n throw new TypeError(\"Exactly one of prompt or messages must be provided.\");\n }\n if (hasPrompt) {\n if (typeof prompt !== \"string\" || prompt.trim().length === 0) {\n throw new TypeError(\"Completion prompt must be a non-empty string.\");\n }\n return prompt;\n }\n if (!Array.isArray(messages)) {\n throw new TypeError(\"Completion messages must be an array of Message values.\");\n }\n return messages;\n}\nfunction structuredOutputSchema(options) {\n return options.outputSchema;\n}\nfunction resultFromResponse(response, outputSchema) {\n const text = textFromAssistantContent(response.choice);\n const result = {\n output: outputSchema === void 0 ? text : parseCompletionOutput(text, outputSchema, response),\n text,\n content: [...response.choice],\n usage: response.usage,\n rawResponse: response.rawResponse\n };\n if (response.finishReason !== void 0) result.finishReason = response.finishReason;\n if (response.providerFinishReason !== void 0) {\n result.providerFinishReason = response.providerFinishReason;\n }\n if (response.contextUsage !== void 0) result.contextUsage = response.contextUsage;\n if (response.messageId !== void 0) result.messageId = response.messageId;\n if (response.sources !== void 0) result.sources = [...response.sources];\n if (response.providerToolCalls !== void 0) {\n result.providerToolCalls = [...response.providerToolCalls];\n }\n return result;\n}\nfunction parseCompletionOutput(text, schema, response) {\n if (response.finishReason === \"length\") {\n throw new CompletionStructuredOutputError({\n phase: \"truncated\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason\n });\n }\n let json;\n try {\n json = JSON.parse(text);\n } catch (error) {\n throw new CompletionStructuredOutputError({\n phase: \"parse\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n cause: error\n });\n }\n try {\n return schema.parse(json);\n } catch (error) {\n throw new CompletionStructuredOutputError({\n phase: \"schema\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n cause: error\n });\n }\n}\nfunction modelCallOptions(abortSignal) {\n return abortSignal === void 0 ? void 0 : { abortSignal };\n}\nfunction isStreamingCompletionModel(model) {\n return typeof model.streamCompletion === \"function\";\n}\n\nexport {\n reasoningDisplayText,\n isProviderTool,\n calculateContextUsage,\n withContextUsage,\n resolveModelContextLimits,\n Usage,\n getAssistantGenerationMetadata,\n CompletionCapabilityError,\n assertCompletionRequestSupported,\n textFromAssistantContent,\n createCompletionRequest,\n CompletionStructuredOutputError,\n generateCompletion,\n streamCompletion,\n isStreamingCompletionModel\n};\n//# sourceMappingURL=chunk-HT4P3SSG.js.map","import { getAssistantGenerationMetadata, type Message } from \"@anvia/core/completion\";\nimport type { StudioMemoryMessageRecord } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { formatRelativeTime } from \"../shared/format\";\n\ntype AssistantMessage = Extract<Message, { role: \"assistant\" }>;\n\nexport type MemoryGenerationRow = {\n position: number;\n runId: string;\n turn: number;\n createdAt: string;\n preview: string;\n generation: ReturnType<typeof getAssistantGenerationMetadata>;\n};\n\nexport function memoryGenerationRows(records: StudioMemoryMessageRecord[]): MemoryGenerationRow[] {\n return records.flatMap((record) => {\n if (record.message.role !== \"assistant\") {\n return [];\n }\n return [\n {\n position: record.position,\n runId: record.runId,\n turn: record.turn,\n createdAt: record.createdAt,\n preview: assistantPreview(record.message),\n generation: getAssistantGenerationMetadata(record.message),\n },\n ];\n });\n}\n\nexport function MemoryGenerationLedger(props: { records: StudioMemoryMessageRecord[] }) {\n const rows = memoryGenerationRows(props.records);\n return (\n <section className=\"grid min-w-0 overflow-hidden border-y border-border/80\">\n <header className=\"flex min-h-11 items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n <span>Assistant responses</span>\n <span className=\"font-medium normal-case tracking-normal\">{rows.length} responses</span>\n </header>\n {rows.length === 0 ? (\n <div className=\"border-t border-border/70 px-4 py-8 text-center text-sm text-muted-foreground\">\n No persisted assistant responses.\n </div>\n ) : (\n <div className=\"grid divide-y divide-border/70 border-t border-border/70\">\n {rows.map((row) => (\n <GenerationRow row={row} key={`${row.position}:${row.runId}`} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction GenerationRow(props: { row: MemoryGenerationRow }) {\n const generation = props.row.generation;\n return (\n <article className=\"grid min-w-0 gap-3 px-3 py-4\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-2\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n Turn {props.row.turn}\n </Badge>\n {generation === undefined ? (\n <Badge className=\"border-border/80 bg-background/40 text-muted-foreground\">\n Usage unavailable\n </Badge>\n ) : (\n <>\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {generation.provider}\n </Badge>\n <Badge className=\"max-w-full truncate border-border/80 bg-muted/45 text-foreground\">\n {generation.modelId}\n </Badge>\n </>\n )}\n </div>\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {formatRelativeTime(props.row.createdAt)}\n </span>\n </div>\n <p className=\"m-0 whitespace-pre-wrap break-words text-sm leading-6 text-foreground\">\n {props.row.preview}\n </p>\n {generation === undefined ? null : (\n <div className=\"flex min-w-0 flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <UsageMetric label=\"total\" value={generation.usage.totalTokens} suffix=\" tokens\" />\n <UsageMetric label=\"input\" value={generation.usage.inputTokens} />\n <UsageMetric label=\"output\" value={generation.usage.outputTokens} />\n <UsageMetric label=\"cached\" value={generation.usage.cachedInputTokens} />\n <UsageMetric label=\"cache create\" value={generation.usage.cacheCreationInputTokens} />\n </div>\n )}\n </article>\n );\n}\n\nfunction UsageMetric(props: { label: string; value: number; suffix?: string | undefined }) {\n return (\n <span>\n {props.label} {props.value.toLocaleString()}\n {props.suffix}\n </span>\n );\n}\n\nfunction assistantPreview(message: AssistantMessage): string {\n if (typeof message.content === \"string\") {\n return message.content.trim().length > 0\n ? truncatePreview(message.content)\n : \"Assistant response\";\n }\n const text = message.content\n .flatMap((content) => (content.type === \"text\" ? [content.text] : []))\n .join(\"\\n\")\n .trim();\n if (text.length > 0) {\n return truncatePreview(text);\n }\n\n const toolNames = message.content.flatMap((content) =>\n content.type === \"tool-call\" ? [content.toolName] : [],\n );\n if (toolNames.length > 0) {\n return `Tool call${toolNames.length === 1 ? \"\" : \"s\"}: ${toolNames.join(\", \")}`;\n }\n\n const reasoning = message.content\n .flatMap((content) => (content.type === \"reasoning\" ? [content.text] : []))\n .join(\"\\n\")\n .trim();\n if (reasoning.length > 0) {\n return truncatePreview(reasoning);\n }\n\n const imageCount = message.content.filter((content) => content.type === \"image\").length;\n return imageCount > 0\n ? `${imageCount} generated image${imageCount === 1 ? \"\" : \"s\"}`\n : \"Assistant response\";\n}\n\nfunction truncatePreview(value: string): string {\n const compact = value.replace(/\\s+/g, \" \").trim();\n return compact.length > 220 ? `${compact.slice(0, 217)}...` : compact;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioConfig,\n StudioMemorySourceConversationMessages,\n StudioMemorySourceConversationSteps,\n StudioMemorySourceConversationSummary,\n StudioMemorySourceConversationsPage,\n StudioMemorySourceSummary,\n StudioMemorySourcesPage,\n StudioMemorySourceUsersPage,\n} from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n StudioEmptyState,\n StudioHeaderMetric,\n StudioPageContent,\n StudioPageHeader,\n StudioPageShell,\n} from \"../../components/ui/studio\";\nimport { formatRelativeTime } from \"../shared/format\";\nimport { JsonSyntax } from \"../shared/renderers\";\nimport { MemoryGenerationLedger } from \"./memory-generation-ledger\";\n\nexport function MemoryPage(props: { agents: StudioConfig[\"agents\"]; enabled: boolean }) {\n const [sources, setSources] = useState<StudioMemorySourceSummary[]>([]);\n const [selectedSourceRef, setSelectedSourceRef] = useState(\"\");\n const [users, setUsers] = useState<StudioMemorySourceUsersPage[\"users\"]>([]);\n const [conversations, setConversations] = useState<StudioMemorySourceConversationSummary[]>([]);\n const [selectedUserId, setSelectedUserId] = useState(\"\");\n const [selectedConversationRef, setSelectedConversationRef] = useState(\"\");\n const [messages, setMessages] = useState<StudioMemorySourceConversationMessages | undefined>();\n const [steps, setSteps] = useState<StudioMemorySourceConversationSteps | undefined>();\n const [sourcesLoading, setSourcesLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [detailLoading, setDetailLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const memoryRequest = useRef(0);\n\n const selectedSource = sources.find((source) => source.ref === selectedSourceRef);\n\n const loadSources = useCallback(async () => {\n if (!props.enabled) {\n setSources([]);\n setSelectedSourceRef(\"\");\n return;\n }\n setSourcesLoading(true);\n setError(\"\");\n try {\n const response = await fetch(\"/memory/sources\");\n if (!response.ok) throw new Error(`Memory sources failed with HTTP ${response.status}`);\n const body = (await response.json()) as StudioMemorySourcesPage;\n setSources(body.sources);\n setSelectedSourceRef((current) =>\n body.sources.some((source) => source.ref === current)\n ? current\n : defaultSourceRef(body.sources),\n );\n } catch (loadError) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n } finally {\n setSourcesLoading(false);\n }\n }, [props.enabled]);\n\n useEffect(() => {\n void loadSources();\n }, [loadSources]);\n\n const loadMemory = useCallback(async () => {\n const requestId = memoryRequest.current + 1;\n memoryRequest.current = requestId;\n if (!props.enabled || selectedSource === undefined || !selectedSource.available) {\n setUsers([]);\n setConversations([]);\n setMessages(undefined);\n setSteps(undefined);\n setLoading(false);\n return;\n }\n setLoading(true);\n setError(\"\");\n try {\n const sourcePath = `/memory/sources/${encodeURIComponent(selectedSource.ref)}`;\n const [usersResponse, conversationsResponse] = await Promise.all([\n fetch(`${sourcePath}/users?limit=50`),\n fetch(`${sourcePath}/conversations?limit=100`),\n ]);\n if (!usersResponse.ok) {\n throw new Error(`Memory users failed with HTTP ${usersResponse.status}`);\n }\n if (!conversationsResponse.ok) {\n throw new Error(`Memory conversations failed with HTTP ${conversationsResponse.status}`);\n }\n const usersBody = (await usersResponse.json()) as StudioMemorySourceUsersPage;\n const conversationsBody =\n (await conversationsResponse.json()) as StudioMemorySourceConversationsPage;\n if (memoryRequest.current !== requestId) return;\n setUsers(usersBody.users);\n setConversations(conversationsBody.conversations);\n setSelectedConversationRef(\n (current) =>\n conversationsBody.conversations.find((conversation) => conversation.ref === current)\n ?.ref ??\n conversationsBody.conversations[0]?.ref ??\n \"\",\n );\n } catch (loadError) {\n if (memoryRequest.current === requestId) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n }\n } finally {\n if (memoryRequest.current === requestId) setLoading(false);\n }\n }, [props.enabled, selectedSource]);\n\n useEffect(() => {\n setSelectedUserId(\"\");\n setSelectedConversationRef(\"\");\n setUsers([]);\n setConversations([]);\n setMessages(undefined);\n setSteps(undefined);\n void loadMemory();\n }, [loadMemory]);\n\n useEffect(() => {\n if (\n !props.enabled ||\n selectedSource === undefined ||\n !selectedSource.available ||\n selectedConversationRef.length === 0\n ) {\n setMessages(undefined);\n setSteps(undefined);\n return;\n }\n const sourceRef = selectedSource.ref;\n let cancelled = false;\n async function loadDetail() {\n setDetailLoading(true);\n setError(\"\");\n try {\n const conversationPath = `/memory/sources/${encodeURIComponent(\n sourceRef,\n )}/conversations/${encodeURIComponent(selectedConversationRef)}`;\n const [messagesResponse, stepsResponse] = await Promise.all([\n fetch(`${conversationPath}/messages`),\n fetch(`${conversationPath}/steps`),\n ]);\n if (!messagesResponse.ok) {\n throw new Error(`Conversation messages failed with HTTP ${messagesResponse.status}`);\n }\n if (!stepsResponse.ok) {\n throw new Error(`Conversation steps failed with HTTP ${stepsResponse.status}`);\n }\n if (!cancelled) {\n setMessages((await messagesResponse.json()) as StudioMemorySourceConversationMessages);\n setSteps((await stepsResponse.json()) as StudioMemorySourceConversationSteps);\n }\n } catch (loadError) {\n if (!cancelled) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n setMessages(undefined);\n setSteps(undefined);\n }\n } finally {\n if (!cancelled) setDetailLoading(false);\n }\n }\n void loadDetail();\n return () => {\n cancelled = true;\n };\n }, [props.enabled, selectedConversationRef, selectedSource]);\n\n const visibleConversations = useMemo(\n () =>\n selectedUserId.length === 0\n ? conversations\n : conversations.filter((conversation) => conversation.userId === selectedUserId),\n [conversations, selectedUserId],\n );\n const totals = useMemo(() => memoryTotals(users, conversations), [conversations, users]);\n const selectedConversation =\n visibleConversations.find((conversation) => conversation.ref === selectedConversationRef) ??\n visibleConversations[0];\n\n useEffect(() => {\n if (visibleConversations.length === 0) {\n setSelectedConversationRef(\"\");\n return;\n }\n if (\n !visibleConversations.some((conversation) => conversation.ref === selectedConversationRef)\n ) {\n setSelectedConversationRef(visibleConversations[0]?.ref ?? \"\");\n }\n }, [selectedConversationRef, visibleConversations]);\n\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Memory\">\n <StudioPageHeader\n title=\"Memory\"\n description=\"Inspect persisted agent conversations directly. Studio sessions appear only as a fallback for agents without configured memory.\"\n action={\n <div className=\"flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start\">\n {sources.length === 0 ? null : (\n <Select value={selectedSourceRef} onValueChange={setSelectedSourceRef}>\n <SelectTrigger className=\"h-8 min-h-8 w-60 rounded-md border-border text-xs max-sm:w-full\">\n <SelectValue placeholder=\"Memory source\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {sources.map((source) => (\n <SelectItem value={source.ref} key={source.ref}>\n {source.label}\n {source.available ? \"\" : \" (unavailable)\"}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n <StudioHeaderMetric label=\"users\" value={totals.userCount} />\n <StudioHeaderMetric label=\"conversations\" value={totals.conversationCount} />\n <StudioHeaderMetric label=\"messages\" value={totals.messageCount} />\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n type=\"button\"\n variant=\"secondary\"\n disabled={sourcesLoading || loading}\n onClick={() => void loadSources()}\n >\n Refresh\n </Button>\n </div>\n }\n />\n\n <StudioPageContent className=\"overflow-hidden\">\n {!props.enabled ? (\n <StudioEmptyState\n title=\"Memory unavailable\"\n text=\"No agent memory or Studio session store is configured.\"\n />\n ) : sourcesLoading && sources.length === 0 ? (\n <StudioEmptyState title=\"Loading memory\" text=\"Discovering configured memory sources.\" />\n ) : error.length > 0 && sources.length === 0 ? (\n <StudioEmptyState title=\"Memory error\" text={error} />\n ) : selectedSource === undefined ? (\n <StudioEmptyState title=\"No memory sources\" text=\"No registered agent exposes memory.\" />\n ) : !selectedSource.available ? (\n <UnavailableSource source={selectedSource} />\n ) : loading && conversations.length === 0 ? (\n <StudioEmptyState title=\"Loading memory\" text={`Reading ${selectedSource.label}.`} />\n ) : error.length > 0 && conversations.length === 0 ? (\n <StudioEmptyState title=\"Memory error\" text={error} />\n ) : conversations.length === 0 ? (\n <MemoryEmptyDashboard\n source={selectedSource}\n userCount={users.length}\n onRefresh={() => void loadMemory()}\n />\n ) : (\n <div\n className={[\n \"grid h-full min-h-0 overflow-hidden\",\n error.length === 0 ? \"grid-rows-[minmax(0,1fr)]\" : \"grid-rows-[auto_minmax(0,1fr)]\",\n ].join(\" \")}\n >\n {error.length === 0 ? null : <InlineError message={error} />}\n <div className=\"grid min-h-0 grid-cols-[260px_minmax(320px,0.78fr)_minmax(0,1.22fr)] overflow-hidden border-t border-border/80 max-xl:grid-cols-[240px_minmax(0,1fr)] max-xl:grid-rows-[minmax(240px,0.42fr)_minmax(0,1fr)] max-md:grid-cols-1 max-md:grid-rows-[auto_minmax(240px,0.38fr)_minmax(0,1fr)]\">\n <MemoryUserRail\n users={users}\n selectedUserId={selectedUserId}\n totalConversations={conversations.length}\n onSelect={setSelectedUserId}\n />\n <ConversationLedger\n agents={props.agents}\n conversations={visibleConversations}\n selectedConversationRef={selectedConversation?.ref ?? \"\"}\n source={selectedSource}\n onSelect={setSelectedConversationRef}\n />\n <ConversationDetail\n agents={props.agents}\n conversation={selectedConversation}\n detailLoading={detailLoading}\n messages={messages}\n source={selectedSource}\n steps={steps}\n />\n </div>\n </div>\n )}\n </StudioPageContent>\n </StudioPageShell>\n );\n}\n\nfunction MemoryUserRail(props: {\n users: StudioMemorySourceUsersPage[\"users\"];\n selectedUserId: string;\n totalConversations: number;\n onSelect: (userId: string) => void;\n}) {\n return (\n <aside className=\"min-h-0 overflow-auto border-r border-border/80 pr-3 max-md:border-b max-md:border-r-0 max-md:pr-0\">\n <div className=\"grid gap-3 py-4 pr-3 max-md:pr-0\">\n <SectionLabel label=\"Users\" value={props.users.length} />\n <UserFilterButton\n active={props.selectedUserId.length === 0}\n title=\"All users\"\n detail={`${props.totalConversations} conversations`}\n onClick={() => props.onSelect(\"\")}\n />\n <div className=\"grid gap-1\">\n {props.users.map((user) => (\n <UserFilterButton\n active={props.selectedUserId === user.userId}\n title={user.userId}\n detail={`${user.conversationCount} conversations / ${formatRelativeTime(\n user.lastInteractionAt,\n )}`}\n key={user.userId}\n onClick={() => props.onSelect(user.userId)}\n />\n ))}\n </div>\n </div>\n </aside>\n );\n}\n\nfunction UserFilterButton(props: {\n active: boolean;\n title: string;\n detail: string;\n onClick: () => void;\n}) {\n return (\n <button\n className={[\n \"grid min-w-0 gap-1 rounded-lg border border-transparent px-3 py-2.5 text-left transition duration-200 hover:border-border/80 hover:bg-muted/25 focus-visible:border-ring focus-visible:outline-none\",\n props.active ? \"border-border/80 bg-muted/35\" : \"\",\n ].join(\" \")}\n type=\"button\"\n onClick={props.onClick}\n >\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">{props.title}</span>\n <span className=\"min-w-0 truncate text-xs leading-5 text-muted-foreground\">\n {props.detail}\n </span>\n </button>\n );\n}\n\nfunction ConversationLedger(props: {\n agents: StudioConfig[\"agents\"];\n conversations: StudioMemorySourceConversationSummary[];\n selectedConversationRef: string;\n source: StudioMemorySourceSummary;\n onSelect: (conversationRef: string) => void;\n}) {\n return (\n <section className=\"min-h-0 overflow-auto border-r border-border/80 px-4 max-xl:border-r-0 max-xl:pr-0 max-md:border-b max-md:px-0\">\n <div className=\"grid gap-3 py-4\">\n <SectionLabel label=\"Conversations\" value={props.conversations.length} />\n {props.conversations.length === 0 ? (\n <div className=\"border-y border-dashed border-border/80 px-3 py-8 text-center text-sm text-muted-foreground\">\n No conversations for this user.\n </div>\n ) : (\n <div className=\"grid border-y border-border/80\">\n {props.conversations.map((conversation) => (\n <ConversationRow\n active={conversation.ref === props.selectedConversationRef}\n agentName={sourceAgentLabel(props.agents, props.source, conversation.agentIds)}\n conversation={conversation}\n key={conversation.ref}\n onSelect={() => props.onSelect(conversation.ref)}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction ConversationRow(props: {\n conversation: StudioMemorySourceConversationSummary;\n agentName: string;\n active: boolean;\n onSelect: () => void;\n}) {\n return (\n <button\n className={[\n \"grid min-w-0 gap-2 border-b border-border/70 px-3 py-3 text-left transition duration-200 last:border-b-0 hover:bg-muted/20 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n props.active ? \"bg-muted/35\" : \"\",\n ].join(\" \")}\n type=\"button\"\n onClick={props.onSelect}\n >\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <div className=\"grid min-w-0 gap-1\">\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.conversation.title ?? props.conversation.sessionId}\n </span>\n <span className=\"min-w-0 truncate text-xs text-muted-foreground\">\n {props.agentName} / {props.conversation.userId}\n </span>\n </div>\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {props.conversation.messageCount}\n </span>\n </div>\n <div className=\"flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n <span>{formatRelativeTime(props.conversation.updatedAt)}</span>\n <span className=\"min-w-0 truncate\">{props.conversation.sessionId}</span>\n </div>\n </button>\n );\n}\n\nfunction ConversationDetail(props: {\n agents: StudioConfig[\"agents\"];\n conversation: StudioMemorySourceConversationSummary | undefined;\n detailLoading: boolean;\n messages: StudioMemorySourceConversationMessages | undefined;\n source: StudioMemorySourceSummary;\n steps: StudioMemorySourceConversationSteps | undefined;\n}) {\n if (props.conversation === undefined) {\n return (\n <section className=\"min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1\">\n <StudioEmptyState\n title=\"No conversation selected\"\n text=\"Choose a conversation to inspect.\"\n />\n </section>\n );\n }\n\n return (\n <section className=\"min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1\">\n <div className=\"grid min-w-0 gap-5\">\n <header className=\"grid gap-4 border-b border-border/80 pb-5\">\n <div className=\"flex min-w-0 items-start justify-between gap-4 max-md:grid\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Persisted conversation\n </div>\n <h2 className=\"m-0 min-w-0 truncate text-2xl font-semibold leading-none text-foreground\">\n {props.conversation.title ?? props.conversation.sessionId}\n </h2>\n <span className=\"min-w-0 break-all font-mono text-xs text-muted-foreground\">\n {props.conversation.ref}\n </span>\n </div>\n <div className=\"flex flex-wrap justify-end gap-2 max-md:justify-start\">\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {props.source.storeKind ?? props.source.kind}\n </Badge>\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {sourceAgentLabel(props.agents, props.source, props.conversation.agentIds)}\n </Badge>\n </div>\n </div>\n <div className=\"grid border-y border-border/80 sm:grid-cols-4 sm:divide-x sm:divide-border/80\">\n <Fact label=\"user\" value={props.conversation.userId} />\n <Fact label=\"messages\" value={props.conversation.messageCount} />\n <Fact label=\"created\" value={formatRelativeTime(props.conversation.createdAt)} />\n <Fact label=\"updated\" value={formatRelativeTime(props.conversation.updatedAt)} />\n </div>\n </header>\n\n {props.detailLoading ? (\n <StudioEmptyState title=\"Loading detail\" text=\"Reading persisted messages.\" />\n ) : (\n <div className=\"grid gap-4\">\n {props.conversation.metadata === undefined ? null : (\n <JsonPanel title=\"metadata\" value={props.conversation.metadata} />\n )}\n <MemoryGenerationLedger records={props.messages?.records ?? []} />\n <JsonPanel title=\"messages\" value={props.messages?.messages ?? []} />\n <JsonPanel title=\"message records\" value={props.messages?.records ?? []} />\n <JsonPanel title=\"derived transcript\" value={props.steps?.steps ?? []} />\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction UnavailableSource(props: { source: StudioMemorySourceSummary }) {\n return (\n <StudioEmptyState\n className=\"h-full\"\n title={`${props.source.label} is not inspectable`}\n text={props.source.reason ?? \"This memory store does not expose read-only discovery.\"}\n />\n );\n}\n\nfunction JsonPanel(props: { title: string; value: unknown }) {\n const count = Array.isArray(props.value) ? props.value.length : undefined;\n return (\n <details className=\"group grid min-w-0 overflow-hidden border-y border-border/80\" open>\n <summary className=\"flex min-h-11 cursor-pointer list-none items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden\">\n <span>{props.title}</span>\n <span className=\"font-medium normal-case tracking-normal\">\n {count === undefined ? \"JSON\" : `${count} items`}\n </span>\n </summary>\n <div className=\"min-w-0 overflow-x-auto border-t border-border/70\">\n <pre className=\"m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground\">\n <code>\n <JsonSyntax text={formatJson(props.value)} />\n </code>\n </pre>\n </div>\n </details>\n );\n}\n\nfunction SectionLabel(props: { label: string; value: number }) {\n return (\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <h2 className=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.label}\n </h2>\n <span className=\"text-xs font-semibold tabular-nums text-muted-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction Fact(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid min-w-0 gap-1 px-3 py-3 first:pl-0 last:pr-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 truncate text-sm text-foreground\" title={String(props.value)}>\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction MemoryEmptyDashboard(props: {\n source: StudioMemorySourceSummary;\n userCount: number;\n onRefresh: () => void;\n}) {\n return (\n <StudioEmptyState\n className=\"h-full\"\n title=\"No saved conversations yet\"\n text={`Conversations will appear here after the connected agent writes to ${props.source.label}. ${props.userCount} users are currently available.`}\n action={\n <div className=\"flex min-w-0 flex-wrap items-center justify-center gap-3\">\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n type=\"button\"\n variant=\"secondary\"\n onClick={props.onRefresh}\n >\n Refresh\n </Button>\n <span className=\"text-xs leading-5 text-muted-foreground\">\n Existing database conversations are discovered automatically.\n </span>\n </div>\n }\n />\n );\n}\n\nfunction InlineError(props: { message: string }) {\n return (\n <div className=\"mb-3 border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs leading-5 text-destructive\">\n {props.message}\n </div>\n );\n}\n\nfunction memoryTotals(\n users: StudioMemorySourceUsersPage[\"users\"],\n conversations: StudioMemorySourceConversationSummary[],\n): { userCount: number; conversationCount: number; messageCount: number } {\n return {\n userCount: users.length,\n conversationCount: conversations.length,\n messageCount: conversations.reduce(\n (total, conversation) => total + conversation.messageCount,\n 0,\n ),\n };\n}\n\nfunction defaultSourceRef(sources: StudioMemorySourceSummary[]): string {\n return (\n sources.find((source) => source.kind === \"agent\" && source.available)?.ref ??\n sources.find((source) => source.available)?.ref ??\n sources[0]?.ref ??\n \"\"\n );\n}\n\nfunction formatJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction sourceAgentLabel(\n agents: StudioConfig[\"agents\"],\n source: StudioMemorySourceSummary,\n agentIds: string[],\n): string {\n if (agentIds.length === 1) {\n const agentId = agentIds[0] ?? \"agent\";\n return agents.find((agent) => agent.id === agentId)?.name ?? agentId;\n }\n return source.label;\n}\n"],"mappings":"+TAwGA,SAAS,EAA+B,EAAS,CAC/C,GAAI,EAAQ,OAAS,aAAe,CAAC,EAAkB,EAAQ,SAAS,CACtE,OAEF,IAAM,EAAoB,EAAQ,SAAS,MAC3C,GAAI,CAAC,EAAkB,EAAkB,CACvC,OAEF,IAAM,EAAa,EAAkB,WACrC,GAAI,CAAC,EAAkB,EAAW,EAAI,OAAO,EAAW,UAAa,UAAY,OAAO,EAAW,SAAY,UAAY,CAAC,EAAa,EAAW,MAAM,CACxJ,OAEF,IAAI,EAAQ,CAAE,GAAG,EAAW,MAAO,CAC/B,EAAW,MAAM,UAAY,IAAK,KACpC,EAAQ,CAAE,GAAG,EAAO,QAAS,CAAE,GAAG,EAAW,MAAM,QAAS,CAAE,EAEhE,IAAM,EAAW,CACf,SAAU,EAAW,SACrB,QAAS,EAAW,QACpB,QACD,CA4BD,OA3BI,EAAyB,EAAW,aAAa,GACnD,EAAS,aAAe,EAAW,cAEjC,OAAO,EAAW,sBAAyB,WAC7C,EAAS,qBAAuB,EAAW,sBAEzC,EAAoB,EAAW,aAAa,GAC9C,EAAS,aAAe,CACtB,GAAG,EAAW,aACd,MAAO,CACL,GAAG,EAAW,aAAa,MAC3B,QAAS,CAAE,GAAG,EAAW,aAAa,MAAM,QAAS,CACtD,CACF,EAEC,EAAwB,EAAW,QAAQ,GAC7C,EAAS,QAAU,EAAW,QAAQ,IAAK,IAAY,CAAE,GAAG,EAAQ,EAAE,EAEpE,EAAwB,EAAW,kBAAkB,GACvD,EAAS,kBAAoB,EAAW,kBAAkB,IAAK,GAAa,CAC1E,IAAI,EAAO,CAAE,GAAG,EAAU,CAI1B,OAHI,EAAS,UAAY,IAAK,KAC5B,EAAO,CAAE,GAAG,EAAM,QAAS,CAAE,GAAG,EAAS,QAAS,CAAE,EAE/C,GACP,EAEG,EAET,SAAS,EAAkB,EAAO,CAChC,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,EAAM,CAE7E,SAAS,EAAoB,EAAO,CAClC,GAAI,CAAC,EAAkB,EAAM,EAAI,CAAC,EAAkB,EAAM,MAAM,CAC9D,MAAO,GAET,IAAM,EAAU,EAAM,MAAM,QAC5B,GAAI,OAAO,EAAM,MAAM,SAAY,UAAY,EAAkB,EAAQ,EAAI,EAAuB,EAAQ,cAAc,EAAI,EAA+B,EAAQ,eAAe,EAAI,EAA+B,EAAQ,gBAAgB,EAAI,EAA0B,EAAM,WAAW,EAAI,EAA0B,EAAM,gBAAgB,EAAI,EAAa,EAAM,YAAY,EAAI,EAAa,EAAM,iBAAiB,CAAE,CAC7Z,IAAM,EAAgB,EAAQ,cACxB,EAAkB,KAAK,IAAI,EAAG,EAAgB,EAAM,WAAW,CAC/D,EAAc,KAAK,IAAI,IAAK,EAAM,WAAa,EAAgB,IAAI,CACnE,EAAmB,EAAkB,EAAgB,IAC3D,OAAO,EAAM,kBAAoB,GAAmB,EAAmB,EAAM,YAAa,EAAY,EAAI,EAAmB,EAAM,iBAAkB,EAAiB,CAExK,MAAO,GAET,SAAS,EAAmB,EAAM,EAAO,CACvC,IAAM,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAK,CAAE,KAAK,IAAI,EAAM,CAAC,CAC1D,OAAO,KAAK,IAAI,EAAO,EAAM,SAAqB,EAAQ,EAE5D,SAAS,EAAuB,EAAO,CACrC,OAAO,EAA0B,EAAM,EAAI,EAAQ,EAErD,SAAS,EAA+B,EAAO,CAC7C,OAAO,IAAU,IAAK,IAAK,EAAuB,EAAM,CAE1D,SAAS,EAAa,EAAO,CAC3B,OAAO,EAA0B,EAAM,EAAI,GAAS,IAEtD,SAAS,EAAa,EAAO,CAI3B,OAHK,EAAkB,EAAM,CAGtB,EAA0B,EAAM,YAAY,EAAI,EAA0B,EAAM,aAAa,EAAI,EAA0B,EAAM,YAAY,EAAI,EAA0B,EAAM,kBAAkB,EAAI,EAA0B,EAAM,yBAAyB,EAAI,EAAoB,EAAM,QAAQ,CAFpS,GAIX,SAAS,EAA0B,EAAO,CACxC,OAAO,OAAO,GAAU,UAAY,OAAO,SAAS,EAAM,EAAI,GAAS,EAEzE,SAAS,EAAoB,EAAO,CAClC,GAAI,IAAU,IAAK,GACjB,MAAO,GAET,GAAI,CAAC,EAAkB,EAAM,CAC3B,MAAO,GAET,IAAI,EACA,EAAY,EAChB,IAAK,GAAM,CAAC,EAAK,KAAW,OAAO,QAAQ,EAAM,CAAE,CACjD,GAAI,IAAW,IAAK,IAAK,CAAC,EAA0B,EAAO,CACzD,MAAO,GAEL,IAAQ,QACV,EAAQ,EAER,GAAa,EAGjB,OAAO,IAAU,IAAK,IAAK,IAAU,EAEvC,SAAS,EAAwB,EAAO,CACtC,OAAO,MAAM,QAAQ,EAAM,EAAI,EAAM,MAClC,GAAW,EAAkB,EAAO,EAAI,EAAO,OAAS,OAAS,OAAO,EAAO,KAAQ,WAAa,EAAO,QAAU,IAAK,IAAK,OAAO,EAAO,OAAU,YAAc,EAAO,KAAO,IAAK,IAAK,OAAO,EAAO,IAAO,YAAc,EAAO,aAAe,IAAK,IAAK,OAAO,EAAO,YAAe,YAAc,EAAO,WAAa,IAAK,IAAK,OAAO,EAAO,UAAa,UACtW,CAEH,SAAS,EAAwB,EAAO,CACtC,OAAO,MAAM,QAAQ,EAAM,EAAI,EAAM,MAClC,GAAa,EAAkB,EAAS,EAAI,OAAO,EAAS,IAAO,UAAY,OAAO,EAAS,MAAS,WAAa,EAAS,SAAW,IAAK,IAAK,OAAO,EAAS,QAAW,YAAc,EAAS,UAAY,IAAK,IAAK,EAAkB,EAAS,QAAQ,EAChQ,CAEH,SAAS,EAAyB,EAAO,CACvC,OAAO,IAAU,QAAU,IAAU,UAAY,IAAU,kBAAoB,IAAU,cAAgB,IAAU,6BCjNrH,SAAA,EAAA,EAAA,CACE,OAAA,EAAA,QAAA,GACE,EAAA,QAAA,OAAA,YAGA,CAAA,oHAHA,EAAA,EAgBJ,SAAA,EAAA,EAAA,oBAEE,OAAA,EAAA,EAAA,MAAA,UAAA,wuBAqBF,SAAA,EAAA,EAAA,wBAEE,OAAA,EAAA,EAAA,MAAA,UAAA,g2CA0CF,SAAA,EAAA,EAAA,CACE,OAAA,EAAA,EAAA,MAAA,OAAA,CAAA,SAAA,kDAQF,SAAA,EAAA,EAAA,CACE,GAAA,OAAA,EAAA,SAAA,SAAA,OAAA,EAAA,QAAA,MAAA,CAAA,OAAA,EAAA,EAAA,EAAA,QAAA,CAAA;UASA,GAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,kEAOA,GAAA,EAAA,OAAA,EAAA,MAAA,YAAA,EAAA,SAAA,EAAA,GAAA,IAAA,IAAA,EAAA,KAAA,KAAA;UAQA,GAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,oDAKA,OAAA,EAAA,EAAA,GAAA,EAAA,kBAAA,IAAA,EAAA,GAAA,MAAA,qBAKF,SAAA,EAAA,EAAA,oCAEE,OAAA,EAAA,OAAA,IAAA,GAAA,EAAA,MAAA,EAAA,IAAA,CAAA,KAAA,ECpHF,SAAgB,EAAW,EAA6D,CACtF,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAoD,EAAE,CAAC,CACjE,CAAC,EAAmB,IAAA,EAAA,EAAA,UAAiC,GAAG,CACxD,CAAC,EAAO,IAAA,EAAA,EAAA,UAA2D,EAAE,CAAC,CACtE,CAAC,EAAe,IAAA,EAAA,EAAA,UAAsE,EAAE,CAAC,CACzF,CAAC,EAAgB,IAAA,EAAA,EAAA,UAA8B,GAAG,CAClD,CAAC,EAAyB,IAAA,EAAA,EAAA,UAAuC,GAAG,CACpE,CAAC,EAAU,IAAA,EAAA,EAAA,WAA6E,CACxF,CAAC,EAAO,IAAA,EAAA,EAAA,WAAuE,CAC/E,CAAC,EAAgB,IAAA,EAAA,EAAA,UAA8B,GAAM,CACrD,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,GAAM,CACnD,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,GAAG,CAChC,GAAA,EAAA,EAAA,QAAuB,EAAE,CAEzB,EAAiB,EAAQ,KAAM,GAAW,EAAO,MAAQ,EAAkB,CAE3E,GAAA,EAAA,EAAA,aAA0B,SAAY,CAC1C,GAAI,CAAC,EAAM,QAAS,CAClB,EAAW,EAAE,CAAC,CACd,EAAqB,GAAG,CACxB,OAEF,EAAkB,GAAK,CACvB,EAAS,GAAG,CACZ,GAAI,CACF,IAAM,EAAW,MAAM,MAAM,kBAAkB,CAC/C,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,mCAAmC,EAAS,SAAS,CACvF,IAAM,EAAQ,MAAM,EAAS,MAAM,CACnC,EAAW,EAAK,QAAQ,CACxB,EAAsB,GACpB,EAAK,QAAQ,KAAM,GAAW,EAAO,MAAQ,EAAQ,CACjD,EACA,EAAiB,EAAK,QAAQ,CACnC,OACM,EAAW,CAClB,EAAS,aAAqB,MAAQ,EAAU,QAAU,OAAO,EAAU,CAAC,QACpE,CACR,EAAkB,GAAM,GAEzB,CAAC,EAAM,QAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACT,GAAa,EACjB,CAAC,EAAY,CAAC,CAEjB,IAAM,GAAA,EAAA,EAAA,aAAyB,SAAY,CACzC,IAAM,EAAY,EAAc,QAAU,EAE1C,GADA,EAAc,QAAU,EACpB,CAAC,EAAM,SAAW,IAAmB,IAAA,IAAa,CAAC,EAAe,UAAW,CAC/E,EAAS,EAAE,CAAC,CACZ,EAAiB,EAAE,CAAC,CACpB,EAAY,IAAA,GAAU,CACtB,EAAS,IAAA,GAAU,CACnB,EAAW,GAAM,CACjB,OAEF,EAAW,GAAK,CAChB,EAAS,GAAG,CACZ,GAAI,CACF,IAAM,EAAa,mBAAmB,mBAAmB,EAAe,IAAI,GACtE,CAAC,EAAe,GAAyB,MAAM,QAAQ,IAAI,CAC/D,MAAM,GAAG,EAAW,iBAAiB,CACrC,MAAM,GAAG,EAAW,0BAA0B,CAC/C,CAAC,CACF,GAAI,CAAC,EAAc,GACjB,MAAU,MAAM,iCAAiC,EAAc,SAAS,CAE1E,GAAI,CAAC,EAAsB,GACzB,MAAU,MAAM,yCAAyC,EAAsB,SAAS,CAE1F,IAAM,EAAa,MAAM,EAAc,MAAM,CACvC,EACH,MAAM,EAAsB,MAAM,CACrC,GAAI,EAAc,UAAY,EAAW,OACzC,EAAS,EAAU,MAAM,CACzB,EAAiB,EAAkB,cAAc,CACjD,EACG,GACC,EAAkB,cAAc,KAAM,GAAiB,EAAa,MAAQ,EAAQ,EAChF,KACJ,EAAkB,cAAc,IAAI,KACpC,GACH,OACM,EAAW,CACd,EAAc,UAAY,GAC5B,EAAS,aAAqB,MAAQ,EAAU,QAAU,OAAO,EAAU,CAAC,QAEtE,CACJ,EAAc,UAAY,GAAW,EAAW,GAAM,GAE3D,CAAC,EAAM,QAAS,EAAe,CAAC,EAEnC,EAAA,EAAA,eAAgB,CACd,EAAkB,GAAG,CACrB,EAA2B,GAAG,CAC9B,EAAS,EAAE,CAAC,CACZ,EAAiB,EAAE,CAAC,CACpB,EAAY,IAAA,GAAU,CACtB,EAAS,IAAA,GAAU,CACd,GAAY,EAChB,CAAC,EAAW,CAAC,EAEhB,EAAA,EAAA,eAAgB,CACd,GACE,CAAC,EAAM,SACP,IAAmB,IAAA,IACnB,CAAC,EAAe,WAChB,EAAwB,SAAW,EACnC,CACA,EAAY,IAAA,GAAU,CACtB,EAAS,IAAA,GAAU,CACnB,OAEF,IAAM,EAAY,EAAe,IAC7B,EAAY,GAChB,eAAe,GAAa,CAC1B,EAAiB,GAAK,CACtB,EAAS,GAAG,CACZ,GAAI,CACF,IAAM,EAAmB,mBAAmB,mBAC1C,EACD,CAAC,iBAAiB,mBAAmB,EAAwB,GACxD,CAAC,EAAkB,GAAiB,MAAM,QAAQ,IAAI,CAC1D,MAAM,GAAG,EAAiB,WAAW,CACrC,MAAM,GAAG,EAAiB,QAAQ,CACnC,CAAC,CACF,GAAI,CAAC,EAAiB,GACpB,MAAU,MAAM,0CAA0C,EAAiB,SAAS,CAEtF,GAAI,CAAC,EAAc,GACjB,MAAU,MAAM,uCAAuC,EAAc,SAAS,CAE3E,IACH,EAAa,MAAM,EAAiB,MAAM,CAA4C,CACtF,EAAU,MAAM,EAAc,MAAM,CAAyC,QAExE,EAAW,CACb,IACH,EAAS,aAAqB,MAAQ,EAAU,QAAU,OAAO,EAAU,CAAC,CAC5E,EAAY,IAAA,GAAU,CACtB,EAAS,IAAA,GAAU,SAEb,CACH,GAAW,EAAiB,GAAM,EAI3C,OADK,GAAY,KACJ,CACX,EAAY,KAEb,CAAC,EAAM,QAAS,EAAyB,EAAe,CAAC,CAE5D,IAAM,GAAA,EAAA,EAAA,aAEF,EAAe,SAAW,EACtB,EACA,EAAc,OAAQ,GAAiB,EAAa,SAAW,EAAe,CACpF,CAAC,EAAe,EAAe,CAChC,CACK,GAAA,EAAA,EAAA,aAAuB,EAAa,EAAO,EAAc,CAAE,CAAC,EAAe,EAAM,CAAC,CAClF,EACJ,EAAqB,KAAM,GAAiB,EAAa,MAAQ,EAAwB,EACzF,EAAqB,GAcvB,OAZA,EAAA,EAAA,eAAgB,CACd,GAAI,EAAqB,SAAW,EAAG,CACrC,EAA2B,GAAG,CAC9B,OAGC,EAAqB,KAAM,GAAiB,EAAa,MAAQ,EAAwB,EAE1F,EAA2B,EAAqB,IAAI,KAAO,GAAG,EAE/D,CAAC,EAAyB,EAAqB,CAAC,EAGjD,EAAA,EAAA,MAAC,EAAD,CAAiB,UAAU,iCAAiC,aAAW,kBAAvE,EACE,EAAA,EAAA,KAAC,EAAD,CACE,MAAM,SACN,YAAY,kIACZ,QACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yEAAf,CACG,EAAQ,SAAW,EAAI,MACtB,EAAA,EAAA,MAAC,EAAD,CAAQ,MAAO,EAAmB,cAAe,WAAjD,EACE,EAAA,EAAA,KAAC,EAAD,CAAe,UAAU,4EACvB,EAAA,EAAA,KAAC,EAAD,CAAa,YAAY,gBAAkB,CAAA,CAC7B,CAAA,EAChB,EAAA,EAAA,KAAC,EAAD,CAAe,MAAM,eAClB,EAAQ,IAAK,IACZ,EAAA,EAAA,MAAC,EAAD,CAAY,MAAO,EAAO,aAA1B,CACG,EAAO,MACP,EAAO,UAAY,GAAK,iBACd,EAHuB,EAAO,IAG9B,CACb,CACY,CAAA,CACT,IAEX,EAAA,EAAA,KAAC,EAAD,CAAoB,MAAM,QAAQ,MAAO,EAAO,UAAa,CAAA,EAC7D,EAAA,EAAA,KAAC,EAAD,CAAoB,MAAM,gBAAgB,MAAO,EAAO,kBAAqB,CAAA,EAC7E,EAAA,EAAA,KAAC,EAAD,CAAoB,MAAM,WAAW,MAAO,EAAO,aAAgB,CAAA,EACnE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,sCACV,KAAK,SACL,QAAQ,YACR,SAAU,GAAkB,EAC5B,YAAe,KAAK,GAAa,UAClC,UAEQ,CAAA,CACL,GAER,CAAA,EAEF,EAAA,EAAA,KAAC,EAAD,CAAmB,UAAU,2BACzB,EAAM,QAKJ,GAAkB,EAAQ,SAAW,GACvC,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,iBAAiB,KAAK,yCAA2C,CAAA,CACvF,EAAM,OAAS,GAAK,EAAQ,SAAW,GACzC,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,eAAe,KAAM,EAAS,CAAA,CACpD,IAAmB,IAAA,IACrB,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,oBAAoB,KAAK,sCAAwC,CAAA,CACtF,EAAe,UAEhB,GAAW,EAAc,SAAW,GACtC,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,iBAAiB,KAAM,WAAW,EAAe,MAAM,GAAM,CAAA,CACnF,EAAM,OAAS,GAAK,EAAc,SAAW,GAC/C,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,eAAe,KAAM,EAAS,CAAA,CACpD,EAAc,SAAW,GAC3B,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,UAAW,EAAM,OACjB,cAAiB,KAAK,GAAY,CAClC,CAAA,EAEF,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,sCACA,EAAM,SAAW,EAAI,4BAA8B,iCACpD,CAAC,KAAK,IAAI,UAJb,CAMG,EAAM,SAAW,EAAI,MAAO,EAAA,EAAA,KAAC,EAAD,CAAa,QAAS,EAAS,CAAA,EAC5D,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qSAAf,EACE,EAAA,EAAA,KAAC,EAAD,CACS,QACS,iBAChB,mBAAoB,EAAc,OAClC,SAAU,EACV,CAAA,EACF,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EAAM,OACd,cAAe,EACf,wBAAyB,GAAsB,KAAO,GACtD,OAAQ,EACR,SAAU,EACV,CAAA,EACF,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EAAM,OACd,aAAc,EACC,gBACL,WACV,OAAQ,EACD,QACP,CAAA,CACE,GACF,IA1CN,EAAA,EAAA,KAAC,EAAD,CAAmB,OAAQ,EAAkB,CAAA,EAX7C,EAAA,EAAA,KAAC,EAAD,CACE,MAAM,qBACN,KAAK,yDACL,CAAA,CAoDc,CAAA,CACJ,GAItB,SAAS,EAAe,EAKrB,CACD,OACE,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,+GACf,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4CAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,MAAM,QAAQ,MAAO,EAAM,MAAM,OAAU,CAAA,EACzD,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EAAM,eAAe,SAAW,EACxC,MAAM,YACN,OAAQ,GAAG,EAAM,mBAAmB,gBACpC,YAAe,EAAM,SAAS,GAAG,CACjC,CAAA,EACF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sBACZ,EAAM,MAAM,IAAK,IAChB,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EAAM,iBAAmB,EAAK,OACtC,MAAO,EAAK,OACZ,OAAQ,GAAG,EAAK,kBAAkB,mBAAmB,EACnD,EAAK,kBACN,GAED,YAAe,EAAM,SAAS,EAAK,OAAO,CAC1C,CAFK,EAAK,OAEV,CACF,CACE,CAAA,CACF,GACA,CAAA,CAIZ,SAAS,EAAiB,EAKvB,CACD,OACE,EAAA,EAAA,MAAC,SAAD,CACE,UAAW,CACT,sMACA,EAAM,OAAS,+BAAiC,GACjD,CAAC,KAAK,IAAI,CACX,KAAK,SACL,QAAS,EAAM,iBANjB,EAQE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,kEAA0D,EAAM,MAAa,CAAA,EAC7F,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oEACb,EAAM,OACF,CAAA,CACA,GAIb,SAAS,EAAmB,EAMzB,CACD,OACE,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,2HACjB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2BAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,MAAM,gBAAgB,MAAO,EAAM,cAAc,OAAU,CAAA,CACxE,EAAM,cAAc,SAAW,GAC9B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uGAA8F,kCAEvG,CAAA,EAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0CACZ,EAAM,cAAc,IAAK,IACxB,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EAAa,MAAQ,EAAM,wBACnC,UAAW,EAAiB,EAAM,OAAQ,EAAM,OAAQ,EAAa,SAAS,CAChE,eAEd,aAAgB,EAAM,SAAS,EAAa,IAAI,CAChD,CAFK,EAAa,IAElB,CACF,CACE,CAAA,CAEJ,GACE,CAAA,CAId,SAAS,EAAgB,EAKtB,CACD,OACE,EAAA,EAAA,MAAC,SAAD,CACE,UAAW,CACT,qMACA,EAAM,OAAS,cAAgB,GAChC,CAAC,KAAK,IAAI,CACX,KAAK,SACL,QAAS,EAAM,kBANjB,EAQE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0DAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,kEACb,EAAM,aAAa,OAAS,EAAM,aAAa,UAC3C,CAAA,EACP,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,0DAAhB,CACG,EAAM,UAAU,MAAI,EAAM,aAAa,OACnC,GACH,IACN,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+DACb,EAAM,aAAa,aACf,CAAA,CACH,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gFAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAmB,EAAM,aAAa,UAAU,CAAQ,CAAA,EAC/D,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4BAAoB,EAAM,aAAa,UAAiB,CAAA,CACpE,GACC,GAIb,SAAS,EAAmB,EAOzB,CAYD,OAXI,EAAM,eAAiB,IAAA,IAEvB,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,4FACjB,EAAA,EAAA,KAAC,EAAD,CACE,MAAM,2BACN,KAAK,oCACL,CAAA,CACM,CAAA,EAKZ,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,4FACjB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,MAAC,SAAD,CAAQ,UAAU,qDAAlB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sEAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mFAA0E,yBAEnF,CAAA,EACN,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,oFACX,EAAM,aAAa,OAAS,EAAM,aAAa,UAC7C,CAAA,EACL,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qEACb,EAAM,aAAa,IACf,CAAA,CACH,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iEAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAO,UAAU,wDACd,EAAM,OAAO,WAAa,EAAM,OAAO,KAClC,CAAA,EACR,EAAA,EAAA,KAAC,EAAD,CAAO,UAAU,wDACd,EAAiB,EAAM,OAAQ,EAAM,OAAQ,EAAM,aAAa,SAAS,CACpE,CAAA,CACJ,GACF,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yFAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAM,MAAM,OAAO,MAAO,EAAM,aAAa,OAAU,CAAA,EACvD,EAAA,EAAA,KAAC,EAAD,CAAM,MAAM,WAAW,MAAO,EAAM,aAAa,aAAgB,CAAA,EACjE,EAAA,EAAA,KAAC,EAAD,CAAM,MAAM,UAAU,MAAO,EAAmB,EAAM,aAAa,UAAU,CAAI,CAAA,EACjF,EAAA,EAAA,KAAC,EAAD,CAAM,MAAM,UAAU,MAAO,EAAmB,EAAM,aAAa,UAAU,CAAI,CAAA,CAC7E,GACC,GAER,EAAM,eACL,EAAA,EAAA,KAAC,EAAD,CAAkB,MAAM,iBAAiB,KAAK,8BAAgC,CAAA,EAE9E,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,CACG,EAAM,aAAa,WAAa,IAAA,GAAY,MAC3C,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,WAAW,MAAO,EAAM,aAAa,SAAY,CAAA,EAEpE,EAAA,EAAA,KAAC,EAAD,CAAwB,QAAS,EAAM,UAAU,SAAW,EAAE,CAAI,CAAA,EAClE,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,WAAW,MAAO,EAAM,UAAU,UAAY,EAAE,CAAI,CAAA,EACrE,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,kBAAkB,MAAO,EAAM,UAAU,SAAW,EAAE,CAAI,CAAA,EAC3E,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,qBAAqB,MAAO,EAAM,OAAO,OAAS,EAAE,CAAI,CAAA,CACrE,GAEJ,GACE,CAAA,CAId,SAAS,EAAkB,EAA8C,CACvE,OACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,SACV,MAAO,GAAG,EAAM,OAAO,MAAM,qBAC7B,KAAM,EAAM,OAAO,QAAU,yDAC7B,CAAA,CAIN,SAAS,EAAU,EAA0C,CAC3D,IAAM,EAAQ,MAAM,QAAQ,EAAM,MAAM,CAAG,EAAM,MAAM,OAAS,IAAA,GAChE,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,+DAA+D,KAAA,YAAlF,EACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,4LAAnB,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAM,MAAa,CAAA,EAC1B,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mDACb,IAAU,IAAA,GAAY,OAAS,GAAG,EAAM,QACpC,CAAA,CACC,IACV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8DACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yEACb,EAAA,EAAA,KAAC,OAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAW,EAAM,MAAM,CAAI,CAAA,CACxC,CAAA,CACH,CAAA,CACF,CAAA,CACE,GAId,SAAS,EAAa,EAAyC,CAC7D,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2DAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uFACX,EAAM,MACJ,CAAA,EACL,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oEACb,EAAM,MACF,CAAA,CACH,GAIV,SAAS,EAAK,EAAkD,CAC9D,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6DAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mFACb,EAAM,MACF,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,2CAA2C,MAAO,OAAO,EAAM,MAAM,UAClF,EAAM,MACF,CAAA,CACH,GAIV,SAAS,EAAqB,EAI3B,CACD,OACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,SACV,MAAM,6BACN,KAAM,sEAAsE,EAAM,OAAO,MAAM,IAAI,EAAM,UAAU,iCACnH,QACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oEAAf,EACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,sCACV,KAAK,SACL,QAAQ,YACR,QAAS,EAAM,mBAChB,UAEQ,CAAA,EACT,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mDAA0C,gEAEnD,CAAA,CACH,GAER,CAAA,CAIN,SAAS,EAAY,EAA4B,CAC/C,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4GACZ,EAAM,QACH,CAAA,CAIV,SAAS,EACP,EACA,EACwE,CACxE,MAAO,CACL,UAAW,EAAM,OACjB,kBAAmB,EAAc,OACjC,aAAc,EAAc,QACzB,EAAO,IAAiB,EAAQ,EAAa,aAC9C,EACD,CACF,CAGH,SAAS,EAAiB,EAA8C,CACtE,OACE,EAAQ,KAAM,GAAW,EAAO,OAAS,SAAW,EAAO,UAAU,EAAE,KACvE,EAAQ,KAAM,GAAW,EAAO,UAAU,EAAE,KAC5C,EAAQ,IAAI,KACZ,GAIJ,SAAS,EAAW,EAAwB,CAC1C,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,KAAM,EAAE,MAC/B,CACN,OAAO,OAAO,EAAM,EAIxB,SAAS,EACP,EACA,EACA,EACQ,CACR,GAAI,EAAS,SAAW,EAAG,CACzB,IAAM,EAAU,EAAS,IAAM,QAC/B,OAAO,EAAO,KAAM,GAAU,EAAM,KAAO,EAAQ,EAAE,MAAQ,EAE/D,OAAO,EAAO"}
|
package/dist/ui/index.html
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
})();
|
|
22
22
|
</script>
|
|
23
23
|
<link rel="icon" type="image/svg+xml" href="/ui/assets/favicon.svg" />
|
|
24
|
-
<script type="module" crossorigin src="/ui/assets/index-
|
|
24
|
+
<script type="module" crossorigin src="/ui/assets/index-D_05WW73.js"></script>
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/ui/assets/utils-C9GMruoG.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/ui/assets/icon-CqkMSRbt.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/ui/assets/CaretDown.es-BHAPbv1R.js">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/ui/assets/Wrench.es-BL6BmNv7.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/ui/assets/dialog-CNNQ3hoF.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/ui/assets/with-selector-CRZWaZzC.js">
|
|
38
|
-
<link rel="modulepreload" crossorigin href="/ui/assets/chunk-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/ui/assets/chunk-G5OACQEI-DCkAPDer.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/ui/assets/request-7oUPS8zY.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/ui/assets/studio-CeTsQ4gf.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/ui/assets/textarea-DESKg_ZK.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anvia/studio",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.6",
|
|
4
4
|
"description": "Studio UI and HTTP runtime for Anvia agents.",
|
|
5
5
|
"author": "anvia",
|
|
6
6
|
"maintainer": "Indra Zulfi",
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"react-dom": "^19.2.8",
|
|
47
47
|
"tailwind-merge": "^3.6.0",
|
|
48
48
|
"ws": "^8.21.0",
|
|
49
|
-
"@anvia/client": "1.0.0-rc.
|
|
50
|
-
"@anvia/react": "1.0.0-rc.
|
|
51
|
-
"@anvia/
|
|
52
|
-
"@anvia/
|
|
49
|
+
"@anvia/client": "1.0.0-rc.6",
|
|
50
|
+
"@anvia/react": "1.0.0-rc.6",
|
|
51
|
+
"@anvia/server": "1.0.0-rc.6",
|
|
52
|
+
"@anvia/react-ui": "1.0.0-rc.6"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@tailwindcss/typography": "^0.5.19",
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
"vite": "^8.0.10",
|
|
67
67
|
"vitest": "^4.0.8",
|
|
68
68
|
"zod": "^4.4.3",
|
|
69
|
-
"@anvia/core": "1.0.0-rc.
|
|
69
|
+
"@anvia/core": "1.0.0-rc.6"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@anvia/core": "1.0.0-rc.
|
|
72
|
+
"@anvia/core": "1.0.0-rc.6"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"build": "pnpm run build:deps && tsup && vite build --config vite.config.ts",
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
var e;function t(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,`_zod`,{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var n=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},r=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(e=globalThis).__zod_globalConfig??(e.__zod_globalConfig={});var i=globalThis.__zod_globalConfig;function a(e){return e&&Object.assign(i,e),i}function o(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function s(e,t){return typeof t==`bigint`?t.toString():t}function c(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function l(e){return e==null}function u(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}var d=Symbol(`evaluating`);function f(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==d)return r===void 0&&(r=d,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function p(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function m(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function ee(e){return JSON.stringify(e)}function te(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var ne=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function h(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var re=c(()=>{if(i.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function g(e){if(h(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(h(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function ie(e){return g(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ae=new Set([`string`,`number`,`symbol`]);function _(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function v(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function y(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function oe(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}-Number.MAX_VALUE,Number.MAX_VALUE;function se(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return v(e,m(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return p(this,`shape`,e),e},checks:[]}))}function ce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return v(e,m(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return p(this,`shape`,r),r},checks:[]}))}function le(e,t){if(!g(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return v(e,m(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return p(this,`shape`,n),n}}))}function ue(e,t){if(!g(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return v(e,m(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return p(this,`shape`,n),n}}))}function de(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return v(e,m(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return p(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function fe(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return v(t,m(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return p(this,`shape`,i),i},checks:[]}))}function pe(e,t,n){return v(t,m(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return p(this,`shape`,i),i}}))}function b(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function me(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function he(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function x(e){return typeof e==`string`?e:e?.message}function S(e,t,n){let r=e.message?e.message:x(e.inst?._zod.def?.error?.(e))??x(t?.error?.(e))??x(n.customError?.(e))??x(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function ge(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function C(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var _e=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,s,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},ve=t(`$ZodError`,_e),ye=t(`$ZodError`,_e,{Parent:Error});function be(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function xe(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var w=e=>(t,r,i,o)=>{let s=i?{...i,async:!1}:{async:!1},c=t._zod.run({value:r,issues:[]},s);if(c instanceof Promise)throw new n;if(c.issues.length){let t=new(o?.Err??e)(c.issues.map(e=>S(e,s,a())));throw ne(t,o?.callee),t}return c.value},Se=e=>async(t,n,r,i)=>{let o=r?{...r,async:!0}:{async:!0},s=t._zod.run({value:n,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let t=new(i?.Err??e)(s.issues.map(e=>S(e,o,a())));throw ne(t,i?.callee),t}return s.value},T=e=>(t,r,i)=>{let o=i?{...i,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new n;return s.issues.length?{success:!1,error:new(e??ve)(s.issues.map(e=>S(e,o,a())))}:{success:!0,data:s.value}},Ce=T(ye),E=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},i);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(e=>S(e,i,a())))}:{success:!0,data:o.value}},we=E(ye),Te=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return w(e)(t,n,i)},Ee=e=>(t,n,r)=>w(e)(t,n,r),De=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Se(e)(t,n,i)},Oe=e=>async(t,n,r)=>Se(e)(t,n,r),ke=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return T(e)(t,n,i)},Ae=e=>(t,n,r)=>T(e)(t,n,r),je=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return E(e)(t,n,i)},Me=e=>async(t,n,r)=>E(e)(t,n,r),Ne=/^[cC][0-9a-z]{6,}$/,Pe=/^[0-9a-z]+$/,Fe=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ie=/^[0-9a-vA-V]{20}$/,Le=/^[A-Za-z0-9]{27}$/,Re=/^[a-zA-Z0-9_-]{21}$/,ze=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Be=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ve=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,He=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Ue=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function We(){return new RegExp(Ue,`u`)}var Ge=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ke=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,qe=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Je=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ye=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Xe=/^[A-Za-z0-9_-]*$/,Ze=/^https?$/,Qe=/^\+[1-9]\d{6,14}$/,$e=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,et=RegExp(`^${$e}$`);function tt(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function nt(e){return RegExp(`^${tt(e)}$`)}function rt(e){let t=tt({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${$e}T(?:${r})$`)}var it=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},at=/^(?:true|false)$/i,ot=/^[^A-Z]*$/,st=/^[^a-z]*$/,D=t(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ct=t(`$ZodCheckMaxLength`,(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=ge(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),lt=t(`$ZodCheckMinLength`,(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=ge(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ut=t(`$ZodCheckLengthEquals`,(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=ge(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),O=t(`$ZodCheckStringFormat`,(e,t)=>{var n,r;D.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),dt=t(`$ZodCheckRegex`,(e,t)=>{O.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),ft=t(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=ot,O.init(e,t)}),pt=t(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=st,O.init(e,t)}),mt=t(`$ZodCheckIncludes`,(e,t)=>{D.init(e,t);let n=_(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ht=t(`$ZodCheckStartsWith`,(e,t)=>{D.init(e,t);let n=RegExp(`^${_(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),gt=t(`$ZodCheckEndsWith`,(e,t)=>{D.init(e,t);let n=RegExp(`.*${_(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),_t=t(`$ZodCheckOverwrite`,(e,t)=>{D.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),vt=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
2
|
-
`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
|
|
3
|
-
`))}},yt={major:4,minor:4,patch:3},k=t(`$ZodType`,(e,t)=>{var r;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=yt;let i=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&i.unshift(e);for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,r)=>{let i=b(e),a;for(let o of t){if(o._zod.def.when){if(me(e)||!o._zod.def.when(e))continue}else if(i)continue;let t=e.issues.length,s=o._zod.check(e);if(s instanceof Promise&&r?.async===!1)throw new n;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(i||=b(e,t))});else{if(e.issues.length===t)continue;i||=b(e,t)}}return a?a.then(()=>e):e},r=(r,a,o)=>{if(b(r))return r.aborted=!0,r;let s=t(a,i,o);if(s instanceof Promise){if(o.async===!1)throw new n;return s.then(t=>e._zod.parse(t,o))}return e._zod.parse(s,o)};e._zod.run=(a,o)=>{if(o.skipChecks)return e._zod.parse(a,o);if(o.direction===`backward`){let t=e._zod.parse({value:a.value,issues:[]},{...o,skipChecks:!0});return t instanceof Promise?t.then(e=>r(e,a,o)):r(t,a,o)}let s=e._zod.parse(a,o);if(s instanceof Promise){if(o.async===!1)throw new n;return s.then(e=>t(e,i,o))}return t(s,i,o)}}f(e,`~standard`,()=>({validate:t=>{try{let n=Ce(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return we(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),bt=t(`$ZodString`,(e,t)=>{k.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??it(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),A=t(`$ZodStringFormat`,(e,t)=>{O.init(e,t),bt.init(e,t)}),xt=t(`$ZodGUID`,(e,t)=>{t.pattern??=Be,A.init(e,t)}),St=t(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Ve(e)}else t.pattern??=Ve();A.init(e,t)}),Ct=t(`$ZodEmail`,(e,t)=>{t.pattern??=He,A.init(e,t)}),wt=t(`$ZodURL`,(e,t)=>{A.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===Ze.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Tt=t(`$ZodEmoji`,(e,t)=>{t.pattern??=We(),A.init(e,t)}),Et=t(`$ZodNanoID`,(e,t)=>{t.pattern??=Re,A.init(e,t)}),Dt=t(`$ZodCUID`,(e,t)=>{t.pattern??=Ne,A.init(e,t)}),Ot=t(`$ZodCUID2`,(e,t)=>{t.pattern??=Pe,A.init(e,t)}),kt=t(`$ZodULID`,(e,t)=>{t.pattern??=Fe,A.init(e,t)}),At=t(`$ZodXID`,(e,t)=>{t.pattern??=Ie,A.init(e,t)}),jt=t(`$ZodKSUID`,(e,t)=>{t.pattern??=Le,A.init(e,t)}),Mt=t(`$ZodISODateTime`,(e,t)=>{t.pattern??=rt(t),A.init(e,t)}),Nt=t(`$ZodISODate`,(e,t)=>{t.pattern??=et,A.init(e,t)}),Pt=t(`$ZodISOTime`,(e,t)=>{t.pattern??=nt(t),A.init(e,t)}),Ft=t(`$ZodISODuration`,(e,t)=>{t.pattern??=ze,A.init(e,t)}),It=t(`$ZodIPv4`,(e,t)=>{t.pattern??=Ge,A.init(e,t),e._zod.bag.format=`ipv4`}),Lt=t(`$ZodIPv6`,(e,t)=>{t.pattern??=Ke,A.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Rt=t(`$ZodCIDRv4`,(e,t)=>{t.pattern??=qe,A.init(e,t)}),zt=t(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Je,A.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function Bt(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Vt=t(`$ZodBase64`,(e,t)=>{t.pattern??=Ye,A.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Bt(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Ht(e){if(!Xe.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Bt(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Ut=t(`$ZodBase64URL`,(e,t)=>{t.pattern??=Xe,A.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Ht(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Wt=t(`$ZodE164`,(e,t)=>{t.pattern??=Qe,A.init(e,t)});function Gt(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Kt=t(`$ZodJWT`,(e,t)=>{A.init(e,t),e._zod.check=n=>{Gt(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),qt=t(`$ZodBoolean`,(e,t)=>{k.init(e,t),e._zod.pattern=at,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Jt=t(`$ZodUnknown`,(e,t)=>{k.init(e,t),e._zod.parse=e=>e}),Yt=t(`$ZodNever`,(e,t)=>{k.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Xt(e,t,n){e.issues.length&&t.issues.push(...he(n,e.issues)),t.value[n]=e.value}var Zt=t(`$ZodArray`,(e,t)=>{k.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Xt(t,n,e))):Xt(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function j(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...he(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Qt(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=oe(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function $t(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>j(e,n,i,t,u,d))):j(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var en=t(`$ZodObject`,(e,t)=>{if(k.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=c(()=>Qt(t));f(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=h,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>j(n,t,e,s,r,i))):j(a,t,e,s,r,i)}return i?$t(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),tn=t(`$ZodObjectJIT`,(e,t)=>{en.init(e,t);let n=e._zod.parse,r=c(()=>Qt(t)),a=e=>{let t=new vt([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=ee(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=ee(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(`
|
|
4
|
-
if (${n}.issues.length) {
|
|
5
|
-
if (${o} in input) {
|
|
6
|
-
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
7
|
-
...iss,
|
|
8
|
-
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
9
|
-
})));
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (${n}.value === undefined) {
|
|
14
|
-
if (${o} in input) {
|
|
15
|
-
newResult[${o}] = undefined;
|
|
16
|
-
}
|
|
17
|
-
} else {
|
|
18
|
-
newResult[${o}] = ${n}.value;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
`):c?t.write(`
|
|
22
|
-
if (${n}.issues.length) {
|
|
23
|
-
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
24
|
-
...iss,
|
|
25
|
-
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
26
|
-
})));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (${n}.value === undefined) {
|
|
30
|
-
if (${o} in input) {
|
|
31
|
-
newResult[${o}] = undefined;
|
|
32
|
-
}
|
|
33
|
-
} else {
|
|
34
|
-
newResult[${o}] = ${n}.value;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
`):t.write(`
|
|
38
|
-
const ${n}_present = ${o} in input;
|
|
39
|
-
if (${n}.issues.length) {
|
|
40
|
-
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
41
|
-
...iss,
|
|
42
|
-
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
43
|
-
})));
|
|
44
|
-
}
|
|
45
|
-
if (!${n}_present && !${n}.issues.length) {
|
|
46
|
-
payload.issues.push({
|
|
47
|
-
code: "invalid_type",
|
|
48
|
-
expected: "nonoptional",
|
|
49
|
-
input: undefined,
|
|
50
|
-
path: [${o}]
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (${n}_present) {
|
|
55
|
-
if (${n}.value === undefined) {
|
|
56
|
-
newResult[${o}] = undefined;
|
|
57
|
-
} else {
|
|
58
|
-
newResult[${o}] = ${n}.value;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},o,s=h,l=!i.jitless,u=l&&re.value,d=t.catchall,f;e._zod.parse=(i,c)=>{f??=r.value;let p=i.value;return s(p)?l&&u&&c?.async===!1&&c.jitless!==!0?(o||=a(t.shape),i=o(i,c),d?$t([],p,i,c,f,e):i):n(i,c):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function nn(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!b(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>S(e,r,a())))}),t)}var rn=t(`$ZodUnion`,(e,t)=>{k.init(e,t),f(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),f(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),f(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),f(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>u(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>nn(t,r,e,i)):nn(o,r,e,i)}}),an=t(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,rn.init(e,t);let n=e._zod.parse;f(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=c(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!h(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),on=t(`$ZodIntersection`,(e,t)=>{k.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>cn(e,t,n)):cn(e,i,a)}});function sn(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(g(e)&&g(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=sn(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=sn(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function cn(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),b(e))return e;let o=sn(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var ln=t(`$ZodEnum`,(e,t)=>{k.init(e,t);let n=o(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>ae.has(typeof e)).map(e=>typeof e==`string`?_(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),un=t(`$ZodLiteral`,(e,t)=>{if(k.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?_(e):e?_(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),dn=t(`$ZodTransform`,(e,t)=>{k.init(e,t),e._zod.optin=`optional`,e._zod.parse=(i,a)=>{if(a.direction===`backward`)throw new r(e.constructor.name);let o=t.transform(i.value,i);if(a.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(i.value=e,i.fallback=!0,i));if(o instanceof Promise)throw new n;return i.value=o,i.fallback=!0,i}});function fn(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var pn=t(`$ZodOptional`,(e,t)=>{k.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,f(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),f(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${u(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>fn(e,r)):fn(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),mn=t(`$ZodExactOptional`,(e,t)=>{pn.init(e,t),f(e._zod,`values`,()=>t.innerType._zod.values),f(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),hn=t(`$ZodNullable`,(e,t)=>{k.init(e,t),f(e._zod,`optin`,()=>t.innerType._zod.optin),f(e._zod,`optout`,()=>t.innerType._zod.optout),f(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${u(e.source)}|null)$`):void 0}),f(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),gn=t(`$ZodDefault`,(e,t)=>{k.init(e,t),e._zod.optin=`optional`,f(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>_n(e,t)):_n(r,t)}});function _n(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var vn=t(`$ZodPrefault`,(e,t)=>{k.init(e,t),e._zod.optin=`optional`,f(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),yn=t(`$ZodNonOptional`,(e,t)=>{k.init(e,t),f(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>bn(t,e)):bn(i,e)}});function bn(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var xn=t(`$ZodCatch`,(e,t)=>{k.init(e,t),e._zod.optin=`optional`,f(e._zod,`optout`,()=>t.innerType._zod.optout),f(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>S(e,n,a()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>S(e,n,a()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),Sn=t(`$ZodPipe`,(e,t)=>{k.init(e,t),f(e._zod,`values`,()=>t.in._zod.values),f(e._zod,`optin`,()=>t.in._zod.optin),f(e._zod,`optout`,()=>t.out._zod.optout),f(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>M(e,t.in,n)):M(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>M(e,t.out,n)):M(r,t.out,n)}});function M(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var Cn=t(`$ZodReadonly`,(e,t)=>{k.init(e,t),f(e._zod,`propValues`,()=>t.innerType._zod.propValues),f(e._zod,`values`,()=>t.innerType._zod.values),f(e._zod,`optin`,()=>t.innerType?._zod?.optin),f(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(wn):wn(r)}});function wn(e){return e.value=Object.freeze(e.value),e}var Tn=t(`$ZodCustom`,(e,t)=>{D.init(e,t),k.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>En(t,n,r,e));En(i,n,r,e)}});function En(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(C(e))}}var Dn,On=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function kn(){return new On}(Dn=globalThis).__zod_globalRegistry??(Dn.__zod_globalRegistry=kn());var N=globalThis.__zod_globalRegistry;function An(e,t){return new e({type:`string`,...y(t)})}function jn(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...y(t)})}function Mn(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...y(t)})}function Nn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...y(t)})}function Pn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...y(t)})}function Fn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...y(t)})}function In(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...y(t)})}function Ln(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...y(t)})}function Rn(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...y(t)})}function zn(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...y(t)})}function Bn(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...y(t)})}function Vn(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...y(t)})}function Hn(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...y(t)})}function Un(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...y(t)})}function Wn(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...y(t)})}function Gn(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...y(t)})}function Kn(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...y(t)})}function qn(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...y(t)})}function Jn(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...y(t)})}function Yn(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...y(t)})}function Xn(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...y(t)})}function Zn(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...y(t)})}function Qn(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...y(t)})}function $n(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...y(t)})}function er(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...y(t)})}function tr(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...y(t)})}function nr(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...y(t)})}function rr(e,t){return new e({type:`boolean`,...y(t)})}function ir(e){return new e({type:`unknown`})}function ar(e,t){return new e({type:`never`,...y(t)})}function or(e,t){return new ct({check:`max_length`,...y(t),maximum:e})}function P(e,t){return new lt({check:`min_length`,...y(t),minimum:e})}function sr(e,t){return new ut({check:`length_equals`,...y(t),length:e})}function cr(e,t){return new dt({check:`string_format`,format:`regex`,...y(t),pattern:e})}function lr(e){return new ft({check:`string_format`,format:`lowercase`,...y(e)})}function ur(e){return new pt({check:`string_format`,format:`uppercase`,...y(e)})}function dr(e,t){return new mt({check:`string_format`,format:`includes`,...y(t),includes:e})}function fr(e,t){return new ht({check:`string_format`,format:`starts_with`,...y(t),prefix:e})}function pr(e,t){return new gt({check:`string_format`,format:`ends_with`,...y(t),suffix:e})}function F(e){return new _t({check:`overwrite`,tx:e})}function mr(e){return F(t=>t.normalize(e))}function hr(){return F(e=>e.trim())}function gr(){return F(e=>e.toLowerCase())}function _r(){return F(e=>e.toUpperCase())}function vr(){return F(e=>te(e))}function yr(e,t,n){return new e({type:`array`,element:t,...y(n)})}function br(e,t,n){let r=y(n);return r.abort??=!0,new e({type:`custom`,check:`custom`,fn:t,...r})}function xr(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...y(n)})}function Sr(e,t){let n=Cr(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(C(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(C(r))}},e(t.value,t)),t);return n}function Cr(e,t){let n=new D({check:`custom`,...y(t)});return n._zod.check=e,n}function wr(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??N,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function I(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,I(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&L(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Tr(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
63
|
-
|
|
64
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function Er(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e===`$ref`||e===`allOf`||e in a||delete i[e];if(s.$ref&&n.def)for(let e in i)e===`$ref`||e===`allOf`||e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,`~standard`,{value:{...t[`~standard`],jsonSchema:{input:R(t,`input`,e.processors),output:R(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function L(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return L(r.element,n);if(r.type===`set`)return L(r.valueType,n);if(r.type===`lazy`)return L(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type===`default`||r.type===`prefault`)return L(r.innerType,n);if(r.type===`intersection`)return L(r.left,n)||L(r.right,n);if(r.type===`record`||r.type===`map`)return L(r.keyType,n)||L(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:L(r.in,n)||L(r.out,n);if(r.type===`object`){for(let e in r.shape)if(L(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(L(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(L(e,n))return!0;return!!(r.rest&&L(r.rest,n))}return!1}var Dr=(e,t={})=>n=>{let r=wr({...n,processors:t});return I(e,r),Tr(r,e),Er(r,e)},R=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=wr({...i??{},target:a,io:t,processors:n});return I(e,o),Tr(o,e),Er(o,e)},Or={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},kr=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Or[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Ar=(e,t,n,r)=>{n.type=`boolean`},jr=(e,t,n,r)=>{n.not={}},Mr=(e,t,n,r)=>{let i=e._zod.def,a=o(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Nr=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0)if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a},Pr=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Fr=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},Ir=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=I(a.element,t,{...r,path:[...r.path,`items`]})},Lr=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=I(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=I(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Rr=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>I(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},zr=(e,t,n,r)=>{let i=e._zod.def,a=I(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=I(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},Br=(e,t,n,r)=>{let i=e._zod.def,a=I(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Vr=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Hr=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Ur=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},Wr=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Gr=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;I(o,t,r);let s=t.seen.get(e);s.ref=o},Kr=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},qr=(e,t,n,r)=>{let i=e._zod.def;I(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Jr=t(`ZodISODateTime`,(e,t)=>{Mt.init(e,t),U.init(e,t)});function Yr(e){return $n(Jr,e)}var Xr=t(`ZodISODate`,(e,t)=>{Nt.init(e,t),U.init(e,t)});function Zr(e){return er(Xr,e)}var Qr=t(`ZodISOTime`,(e,t)=>{Pt.init(e,t),U.init(e,t)});function $r(e){return tr(Qr,e)}var ei=t(`ZodISODuration`,(e,t)=>{Ft.init(e,t),U.init(e,t)});function ti(e){return nr(ei,e)}var z=t(`ZodError`,(e,t)=>{ve.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>xe(e,t)},flatten:{value:t=>be(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,s,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,s,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),ni=w(z),ri=Se(z),ii=T(z),ai=E(z),oi=Te(z),si=Ee(z),ci=De(z),li=Oe(z),ui=ke(z),di=Ae(z),fi=je(z),pi=Me(z),mi=new WeakMap;function B(e,t,n){let r=Object.getPrototypeOf(e),i=mi.get(r);if(i||(i=new Set,mi.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var V=t(`ZodType`,(e,t)=>(k.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:R(e,`input`),output:R(e,`output`)}}),e.toJSONSchema=Dr(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,`_def`,{value:t}),e.parse=(t,n)=>ni(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>ii(e,t,n),e.parseAsync=async(t,n)=>ri(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>ai(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>oi(e,t,n),e.decode=(t,n)=>si(e,t,n),e.encodeAsync=async(t,n)=>ci(e,t,n),e.decodeAsync=async(t,n)=>li(e,t,n),e.safeEncode=(t,n)=>ui(e,t,n),e.safeDecode=(t,n)=>di(e,t,n),e.safeEncodeAsync=async(t,n)=>fi(e,t,n),e.safeDecodeAsync=async(t,n)=>pi(e,t,n),B(e,`ZodType`,{check(...e){let t=this.def;return this.clone(m(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return v(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(ya(e,t))},superRefine(e,t){return this.check(ba(e,t))},overwrite(e){return this.check(F(e))},optional(){return ta(this)},exactOptional(){return ra(this)},nullable(){return aa(this)},nullish(){return ta(aa(this))},nonoptional(e){return da(this,e)},array(){return G(this)},or(e){return q([this,e])},and(e){return Ji(this,e)},transform(e){return ha(this,$i(e))},default(e){return sa(this,e)},prefault(e){return la(this,e)},catch(e){return pa(this,e)},pipe(e){return ha(this,e)},readonly(){return _a(this)},describe(e){let t=this.clone();return N.add(t,{description:e}),t},meta(...e){if(e.length===0)return N.get(this);let t=this.clone();return N.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,`description`,{get(){return N.get(e)?.description},configurable:!0}),e)),hi=t(`_ZodString`,(e,t)=>{bt.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kr(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,B(e,`_ZodString`,{regex(...e){return this.check(cr(...e))},includes(...e){return this.check(dr(...e))},startsWith(...e){return this.check(fr(...e))},endsWith(...e){return this.check(pr(...e))},min(...e){return this.check(P(...e))},max(...e){return this.check(or(...e))},length(...e){return this.check(sr(...e))},nonempty(...e){return this.check(P(1,...e))},lowercase(e){return this.check(lr(e))},uppercase(e){return this.check(ur(e))},trim(){return this.check(hr())},normalize(...e){return this.check(mr(...e))},toLowerCase(){return this.check(gr())},toUpperCase(){return this.check(_r())},slugify(){return this.check(vr())}})}),gi=t(`ZodString`,(e,t)=>{bt.init(e,t),hi.init(e,t),e.email=t=>e.check(jn(_i,t)),e.url=t=>e.check(Ln(yi,t)),e.jwt=t=>e.check(Qn(Fi,t)),e.emoji=t=>e.check(Rn(xi,t)),e.guid=t=>e.check(Mn(vi,t)),e.uuid=t=>e.check(Nn(W,t)),e.uuidv4=t=>e.check(Pn(W,t)),e.uuidv6=t=>e.check(Fn(W,t)),e.uuidv7=t=>e.check(In(W,t)),e.nanoid=t=>e.check(zn(Si,t)),e.guid=t=>e.check(Mn(vi,t)),e.cuid=t=>e.check(Bn(Ci,t)),e.cuid2=t=>e.check(Vn(wi,t)),e.ulid=t=>e.check(Hn(Ti,t)),e.base64=t=>e.check(Yn(Mi,t)),e.base64url=t=>e.check(Xn(Ni,t)),e.xid=t=>e.check(Un(Ei,t)),e.ksuid=t=>e.check(Wn(Di,t)),e.ipv4=t=>e.check(Gn(Oi,t)),e.ipv6=t=>e.check(Kn(ki,t)),e.cidrv4=t=>e.check(qn(Ai,t)),e.cidrv6=t=>e.check(Jn(ji,t)),e.e164=t=>e.check(Zn(Pi,t)),e.datetime=t=>e.check(Yr(t)),e.date=t=>e.check(Zr(t)),e.time=t=>e.check($r(t)),e.duration=t=>e.check(ti(t))});function H(e){return An(gi,e)}var U=t(`ZodStringFormat`,(e,t)=>{A.init(e,t),hi.init(e,t)}),_i=t(`ZodEmail`,(e,t)=>{Ct.init(e,t),U.init(e,t)}),vi=t(`ZodGUID`,(e,t)=>{xt.init(e,t),U.init(e,t)}),W=t(`ZodUUID`,(e,t)=>{St.init(e,t),U.init(e,t)}),yi=t(`ZodURL`,(e,t)=>{wt.init(e,t),U.init(e,t)});function bi(e){return Ln(yi,e)}var xi=t(`ZodEmoji`,(e,t)=>{Tt.init(e,t),U.init(e,t)}),Si=t(`ZodNanoID`,(e,t)=>{Et.init(e,t),U.init(e,t)}),Ci=t(`ZodCUID`,(e,t)=>{Dt.init(e,t),U.init(e,t)}),wi=t(`ZodCUID2`,(e,t)=>{Ot.init(e,t),U.init(e,t)}),Ti=t(`ZodULID`,(e,t)=>{kt.init(e,t),U.init(e,t)}),Ei=t(`ZodXID`,(e,t)=>{At.init(e,t),U.init(e,t)}),Di=t(`ZodKSUID`,(e,t)=>{jt.init(e,t),U.init(e,t)}),Oi=t(`ZodIPv4`,(e,t)=>{It.init(e,t),U.init(e,t)}),ki=t(`ZodIPv6`,(e,t)=>{Lt.init(e,t),U.init(e,t)}),Ai=t(`ZodCIDRv4`,(e,t)=>{Rt.init(e,t),U.init(e,t)}),ji=t(`ZodCIDRv6`,(e,t)=>{zt.init(e,t),U.init(e,t)}),Mi=t(`ZodBase64`,(e,t)=>{Vt.init(e,t),U.init(e,t)}),Ni=t(`ZodBase64URL`,(e,t)=>{Ut.init(e,t),U.init(e,t)}),Pi=t(`ZodE164`,(e,t)=>{Wt.init(e,t),U.init(e,t)}),Fi=t(`ZodJWT`,(e,t)=>{Kt.init(e,t),U.init(e,t)}),Ii=t(`ZodBoolean`,(e,t)=>{qt.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ar(e,t,n,r)});function Li(e){return rr(Ii,e)}var Ri=t(`ZodUnknown`,(e,t)=>{Jt.init(e,t),V.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function zi(){return ir(Ri)}var Bi=t(`ZodNever`,(e,t)=>{Yt.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jr(e,t,n,r)});function Vi(e){return ar(Bi,e)}var Hi=t(`ZodArray`,(e,t)=>{Zt.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ir(e,t,n,r),e.element=t.element,B(e,`ZodArray`,{min(e,t){return this.check(P(e,t))},nonempty(e){return this.check(P(1,e))},max(e,t){return this.check(or(e,t))},length(e,t){return this.check(sr(e,t))},unwrap(){return this.element}})});function G(e,t){return yr(Hi,e,t)}var Ui=t(`ZodObject`,(e,t)=>{tn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lr(e,t,n,r),f(e,`shape`,()=>t.shape),B(e,`ZodObject`,{keyof(){return Xi(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:zi()})},loose(){return this.clone({...this._zod.def,catchall:zi()})},strict(){return this.clone({...this._zod.def,catchall:Vi()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return le(this,e)},safeExtend(e){return ue(this,e)},merge(e){return de(this,e)},pick(e){return se(this,e)},omit(e){return ce(this,e)},partial(...e){return fe(ea,this,e[0])},required(...e){return pe(ua,this,e[0])}})});function K(e,t){return new Ui({type:`object`,shape:e??{},...y(t)})}var Wi=t(`ZodUnion`,(e,t)=>{rn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rr(e,t,n,r),e.options=t.options});function q(e,t){return new Wi({type:`union`,options:e,...y(t)})}var Gi=t(`ZodDiscriminatedUnion`,(e,t)=>{Wi.init(e,t),an.init(e,t)});function Ki(e,t,n){return new Gi({type:`union`,options:t,discriminator:e,...y(n)})}var qi=t(`ZodIntersection`,(e,t)=>{on.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zr(e,t,n,r)});function Ji(e,t){return new qi({type:`intersection`,left:e,right:t})}var Yi=t(`ZodEnum`,(e,t)=>{ln.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mr(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Yi({...t,checks:[],...y(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Yi({...t,checks:[],...y(r),entries:i})}});function Xi(e,t){return new Yi({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...y(t)})}var Zi=t(`ZodLiteral`,(e,t)=>{un.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nr(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,`value`,{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function J(e,t){return new Zi({type:`literal`,values:Array.isArray(e)?e:[e],...y(t)})}var Qi=t(`ZodTransform`,(e,t)=>{dn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fr(e,t,n,r),e._zod.parse=(n,i)=>{if(i.direction===`backward`)throw new r(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(C(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(C(t))}};let a=t.transform(n.value,n);return a instanceof Promise?a.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=a,n.fallback=!0,n)}});function $i(e){return new Qi({type:`transform`,transform:e})}var ea=t(`ZodOptional`,(e,t)=>{pn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ta(e){return new ea({type:`optional`,innerType:e})}var na=t(`ZodExactOptional`,(e,t)=>{mn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ra(e){return new na({type:`optional`,innerType:e})}var ia=t(`ZodNullable`,(e,t)=>{hn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Br(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function aa(e){return new ia({type:`nullable`,innerType:e})}var oa=t(`ZodDefault`,(e,t)=>{gn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function sa(e,t){return new oa({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():ie(t)}})}var ca=t(`ZodPrefault`,(e,t)=>{vn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ur(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function la(e,t){return new ca({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():ie(t)}})}var ua=t(`ZodNonOptional`,(e,t)=>{yn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function da(e,t){return new ua({type:`nonoptional`,innerType:e,...y(t)})}var fa=t(`ZodCatch`,(e,t)=>{xn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function pa(e,t){return new fa({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var ma=t(`ZodPipe`,(e,t)=>{Sn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gr(e,t,n,r),e.in=t.in,e.out=t.out});function ha(e,t){return new ma({type:`pipe`,in:e,out:t})}var ga=t(`ZodReadonly`,(e,t)=>{Cn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kr(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function _a(e){return new ga({type:`readonly`,innerType:e})}var va=t(`ZodCustom`,(e,t)=>{Tn.init(e,t),V.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pr(e,t,n,r)});function Y(e,t){return br(va,e??(()=>!0),t)}function ya(e,t={}){return xr(va,e,t)}function ba(e,t){return Sr(e,t)}function X(e){return xa(e,new WeakSet)}function xa(e,t){if(e===null||typeof e==`string`||typeof e==`boolean`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){if(!Sa(e))return!1;for(let n=0;n<e.length;n+=1)if(!xa(e[n],t))return!1;return!0}let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)return!1;for(let n of Reflect.ownKeys(e)){if(typeof n!=`string`)return!1;let r=Object.getOwnPropertyDescriptor(e,n);if(r===void 0||!r.enumerable||!(`value`in r)||!xa(r.value,t))return!1}return!0}catch{return!1}finally{t.delete(e)}}function Sa(e){let t=Reflect.ownKeys(e);if(t.length!==e.length+1||t.at(-1)!==`length`)return!1;for(let n=0;n<e.length;n+=1){let r=String(n);if(t[n]!==r)return!1;let i=Object.getOwnPropertyDescriptor(e,r);if(i===void 0||!i.enumerable||!(`value`in i))return!1}return!0}var Ca=Y(X,{message:`Expected a strict JSON value`}),wa=Y(e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&X(e),{message:`Expected a strict JSON object`}),Z=K({type:J(`text`),text:H(),signature:H().optional()}).strict(),Ta=K({type:J(`url`),url:bi()}).strict(),Ea=K({type:J(`data`),data:H().refine(Ha,{message:`Expected base64 data`})}).strict(),Da=q([Ta,Ea,K({type:J(`text`),text:H()}).strict()]),Oa=H().regex(/^[^\s/]+\/[^\s/]+(?:\s*;.*)?$/,`Expected a media type`),ka=K({type:J(`image`),image:q([Ta,Ea]),mediaType:Oa.optional(),detail:Xi([`auto`,`low`,`high`]).optional()}).strict(),Aa=K({type:J(`file`),data:Da,mediaType:Oa,filename:H().optional()}).strict(),ja=q([K({type:J(`text`),text:H(),signature:H().optional()}).strict(),K({type:J(`summary`),text:H()}).strict(),K({type:J(`encrypted`),data:H()}).strict(),K({type:J(`redacted`),data:H()}).strict()]),Ma=K({type:J(`reasoning`),text:H(),id:H().optional(),details:G(ja).optional()}).strict(),Na=K({type:J(`tool-call`),toolCallId:H().min(1),callId:H().optional(),toolName:H().min(1),input:Ca,signature:H().optional()}).strict(),Pa=q([K({type:J(`text`),value:H()}).strict(),K({type:J(`json`),value:Ca}).strict(),K({type:J(`content`),value:G(q([Z,Aa]))}).strict(),K({type:J(`execution-denied`),reason:H().optional()}).strict(),K({type:J(`error-text`),value:H()}).strict(),K({type:J(`error-json`),value:Ca}).strict()]),Fa=K({type:J(`tool-result`),toolCallId:H().min(1),callId:H().optional(),toolName:H().min(1),output:Pa}).strict(),Ia=K({type:J(`tool-approval-response`),interactionId:H().min(1),toolCallId:H().min(1),callId:H().optional(),toolName:H().min(1),approved:Li(),reason:H().optional()}).strict(),La=K({questionId:H().min(1),value:H()}).strict(),Ra=K({type:J(`tool-question-response`),interactionId:H().min(1),toolCallId:H().min(1),callId:H().optional(),toolName:H().min(1),answers:G(La)}).strict();function za(e){let t=e.metadataSchema.optional(),n=q([K({role:J(`system`),content:H(),metadata:t}).strict(),K({role:J(`user`),content:q([H(),G(q([Z,ka,Aa]))]),metadata:t}).strict(),K({role:J(`assistant`),id:H().optional(),content:q([H(),G(q([Z,ka,Aa,Ma,Na]))]),metadata:t}).strict(),K({role:J(`tool`),content:G(q([Fa,Ia,Ra])),metadata:t}).strict()]);return Y(X,{message:`Expected a strict JSON message`}).pipe(n).refine(X,{message:`Expected a strict JSON message`})}var Ba=G(za({metadataSchema:wa}));function Va(e){return Ba.parse(e)}function Ha(e){if(!/^[A-Za-z0-9+/]*={0,2}$/.test(e))return!1;let t=e.indexOf(`=`);return t!==-1&&t<e.length-2||e.replace(/=+$/,``).length%4==1?!1:t===-1||e.length%4==0}function Ua(e){if(e.role!==`assistant`||!Q(e.metadata))return;let t=e.metadata.anvia;if(!Q(t))return;let n=t.generation;if(!Q(n)||typeof n.provider!=`string`||typeof n.modelId!=`string`||!Ya(n.usage))return;let r={...n.usage};n.usage.details!==void 0&&(r={...r,details:{...n.usage.details}});let i={provider:n.provider,modelId:n.modelId,usage:r};return Wa(n.contextUsage)&&(i.contextUsage={...n.contextUsage,model:{...n.contextUsage.model,context:{...n.contextUsage.model.context}}}),Za(n.sources)&&(i.sources=n.sources.map(e=>({...e}))),Qa(n.providerToolCalls)&&(i.providerToolCalls=n.providerToolCalls.map(e=>{let t={...e};return e.details!==void 0&&(t={...t,details:{...e.details}}),t})),i}function Q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Wa(e){if(!Q(e)||!Q(e.model))return!1;let t=e.model.context;if(typeof e.model.modelId==`string`&&Q(t)&&Ka(t.contextWindow)&&qa(t.maxInputTokens)&&qa(t.maxOutputTokens)&&$(e.usedTokens)&&$(e.remainingTokens)&&Ja(e.usedPercent)&&Ja(e.remainingPercent)){let n=t.contextWindow,r=Math.max(0,n-e.usedTokens),i=Math.min(100,e.usedTokens/n*100),a=r/n*100;return e.remainingTokens===r&&Ga(e.usedPercent,i)&&Ga(e.remainingPercent,a)}return!1}function Ga(e,t){let n=Math.max(1,Math.abs(e),Math.abs(t));return Math.abs(e-t)<=2**-52*n*8}function Ka(e){return $(e)&&e>0}function qa(e){return e===void 0||Ka(e)}function Ja(e){return $(e)&&e<=100}function Ya(e){return Q(e)?$(e.inputTokens)&&$(e.outputTokens)&&$(e.totalTokens)&&$(e.cachedInputTokens)&&$(e.cacheCreationInputTokens)&&Xa(e.details):!1}function $(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0}function Xa(e){if(e===void 0)return!0;if(!Q(e))return!1;let t,n=0;for(let[r,i]of Object.entries(e)){if(i===void 0||!$(i))return!1;r===`total`?t=i:n+=i}return t!==void 0&&t===n}function Za(e){return Array.isArray(e)&&e.every(e=>Q(e)&&e.type===`url`&&typeof e.url==`string`&&(e.title===void 0||typeof e.title==`string`)&&(e.id===void 0||typeof e.id==`string`)&&(e.startIndex===void 0||typeof e.startIndex==`number`)&&(e.endIndex===void 0||typeof e.endIndex==`number`))}function Qa(e){return Array.isArray(e)&&e.every(e=>Q(e)&&typeof e.id==`string`&&typeof e.name==`string`&&(e.status===void 0||typeof e.status==`string`)&&(e.details===void 0||Q(e.details)))}export{Li as a,J as c,G as i,K as l,X as n,Y as o,Va as r,Ki as s,Ua as t,H as u};
|
|
65
|
-
//# sourceMappingURL=chunk-D2ECOWN5-fs3ih0yA.js.map
|