bunqueue-dashboard 0.0.16 → 0.0.18
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/agent/index.ts +8 -3
- package/agent/manager.ts +4 -2
- package/agent/server.ts +66 -2
- package/dist/.vite/manifest.json +63 -63
- package/dist/assets/{AddJob-CMIT6e17.js → AddJob-vk3jh1Zk.js} +2 -2
- package/dist/assets/Benchmark-CpViF2ZC.js +1 -0
- package/dist/assets/{CopilotPanel-BDZzDmVy.js → CopilotPanel-C9ojQ_8d.js} +3 -3
- package/dist/assets/{CopyButton-XT7ykzf5.js → CopyButton-BC6QECSJ.js} +1 -1
- package/dist/assets/{Cron-9hndZ-Z5.js → Cron-Bbf7mRaK.js} +1 -1
- package/dist/assets/{CronManager-BQupx6wZ.js → CronManager-CeNUeoOc.js} +1 -1
- package/dist/assets/Database--bK9pYZF.js +3 -0
- package/dist/assets/{Diagnostics-BzVDq9CH.js → Diagnostics-CGJPsWZQ.js} +1 -1
- package/dist/assets/Dlq-Bs1pupY2.js +1 -0
- package/dist/assets/{DlqControl-Cu2i1oq5.js → DlqControl-BLKVzYQC.js} +1 -1
- package/dist/assets/{DlqPro-HBrCftLD.js → DlqPro-D8SmIQUs.js} +1 -1
- package/dist/assets/{Flows-D3Bvkmd6.js → Flows-BOogljnP.js} +1 -1
- package/dist/assets/{JobInspector-B7zEuFhM.js → JobInspector-Cp4ZuQGI.js} +2 -2
- package/dist/assets/Jobs-C2HYkZXi.js +1 -0
- package/dist/assets/JobsPro-D0uclU0B.js +1 -0
- package/dist/assets/Logs-yn92V_T8.js +1 -0
- package/dist/assets/{LogsPro-P73LCkap.js → LogsPro-DSiV8Ajj.js} +1 -1
- package/dist/assets/{McpServer-CUK20-uN.js → McpServer-CNt7kssG.js} +2 -2
- package/dist/assets/{Metrics-BodjiKpf.js → Metrics-CbscCpvx.js} +1 -1
- package/dist/assets/MetricsPro-CBiFDVne.js +1 -0
- package/dist/assets/Overview-BOuOPWsb.js +1 -0
- package/dist/assets/{Pagination-Cd6lHj2E.js → Pagination-Bj1z6OlD.js} +1 -1
- package/dist/assets/QueueControl-Bl4l9dT6.js +1 -0
- package/dist/assets/QueueDetail-BSUH0Nl6.js +1 -0
- package/dist/assets/{Queues-LrodynCj.js → Queues-BEQlaWVc.js} +1 -1
- package/dist/assets/{QueuesOverview-DrYjyped.js → QueuesOverview-BBjcyzz2.js} +1 -1
- package/dist/assets/{S3Backup-et1PcCC0.js → S3Backup-BmRt-Z8V.js} +1 -1
- package/dist/assets/S3BackupPro-Dsq0erDm.js +1 -0
- package/dist/assets/ServerControl-Bhr9FEXF.js +3 -0
- package/dist/assets/Settings-46jsrfhd.js +1 -0
- package/dist/assets/{Usage-CHCg6VNy.js → Usage-BFLZC7pV.js} +1 -1
- package/dist/assets/{UsagePro-Cto9k5OI.js → UsagePro-D0k-82eG.js} +1 -1
- package/dist/assets/{Webhooks-Cm3vZEp7.js → Webhooks-DChTcBSv.js} +1 -1
- package/dist/assets/Workers-DBXrLvfS.js +1 -0
- package/dist/assets/{WorkersPro-BidtV_Bp.js → WorkersPro-B6I9Ilbq.js} +1 -1
- package/dist/assets/{connectionStore-DI-LYcct.js → connectionStore-CCopJeU7.js} +1 -1
- package/dist/assets/index-BFjeS9FG.js +8 -0
- package/dist/assets/{install-BvB40Zk0.js → install-C019EM5j.js} +2 -2
- package/dist/index.html +2 -2
- package/package.json +12 -10
- package/scripts/embedded.gen.ts +95 -94
- package/scripts/serve.ts +34 -2
- package/dist/assets/Benchmark-Dq1-vJ2k.js +0 -1
- package/dist/assets/Database-Difs7xYV.js +0 -3
- package/dist/assets/Dlq-BCUVh_NO.js +0 -1
- package/dist/assets/Jobs-ovYRwmwi.js +0 -1
- package/dist/assets/JobsPro-DNZivuzq.js +0 -1
- package/dist/assets/Logs-CjM7MNYN.js +0 -1
- package/dist/assets/MetricsPro-CqcH6gJp.js +0 -1
- package/dist/assets/Overview-AwCA3XI2.js +0 -1
- package/dist/assets/QueueControl-D7J1JObu.js +0 -1
- package/dist/assets/QueueDetail-BtiN0s3b.js +0 -1
- package/dist/assets/S3BackupPro-BEo_EVAO.js +0 -1
- package/dist/assets/ServerControl-BRLFRj7k.js +0 -3
- package/dist/assets/Settings-CeRZgZU6.js +0 -1
- package/dist/assets/Workers-CVfx3TK-.js +0 -1
- package/dist/assets/index-C9fPU4bV.js +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,t}from"./cn-CMFYpumL.js";import{m as n,t as r}from"./react-vendor-CHIHtdAC.js";import{B as i,C as a,O as o,S as s,V as c,Z as l,c as u,h as d,m as f,r as p,s as m,w as h}from"./index-BFjeS9FG.js";import{i as g,n as _,o as v,t as y}from"./form-PtDLk33Z.js";import{t as b}from"./AreaChart-DzUXW8u3.js";import{t as x}from"./CopyButton-BC6QECSJ.js";var S=e(n(),1),C={total:1e6,batch:5e3,producers:64,payload:65536,workers:64,workerBatch:1e3,processMs:6e4,durationS:600},w={queue:`benchmark`,mode:`count`,total:5e3,durationS:30,batch:100,producers:4,payload:128,workers:4,workerBatch:100,processMs:5,durable:!1,removeOnComplete:!0},T={Smoke:{mode:`count`,total:200,batch:50,producers:2,workers:1,workerBatch:50,processMs:0},Standard:{mode:`count`,total:5e3,batch:100,producers:4,workers:4,workerBatch:100,processMs:5},Stress:{mode:`count`,total:5e4,batch:500,producers:16,workers:16,workerBatch:200,processMs:0},Soak:{mode:`duration`,durationS:30,batch:100,producers:4,workers:8,workerBatch:100,processMs:10}},E=(e,t,n)=>Number.isFinite(e)?Math.max(t,Math.min(n,Math.floor(e))):t,D=(e,t)=>e.length?e[Math.min(e.length-1,Math.floor(t/100*e.length))]:0,O=(e,t,n,r,i)=>Array.from({length:t},(t,a)=>({data:{i:e+a,blob:n},durable:r,removeOnComplete:i})),k=e=>new Promise(t=>setTimeout(t,e)),A=async(e,t)=>{let n=performance.now()+e;for(;t()&&performance.now()<n;)await k(Math.min(100,Math.max(0,n-performance.now())))},j=e=>e instanceof Error?e.message:String(e),M=e=>e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:`${Math.round(e)}`,N=r();function P({history:e,onClear:t}){if(!e.length)return null;let n=JSON.stringify(e,null,2);return(0,N.jsxs)(s,{padded:!1,className:`mt-6 overflow-hidden`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-5 py-3`,children:[(0,N.jsx)(`h3`,{className:`text-base font-semibold text-fg`,children:`Run history`}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(x,{value:n}),(0,N.jsx)(h,{size:`sm`,variant:`ghost`,onClick:()=>{let e=new Blob([n],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`benchmark-history-${Date.now()}.json`,r.click(),URL.revokeObjectURL(t)},children:`Export JSON`}),(0,N.jsx)(h,{size:`sm`,variant:`ghost`,onClick:t,children:`Clear`})]})]}),(0,N.jsx)(`div`,{className:`overflow-x-auto`,children:(0,N.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,N.jsx)(`thead`,{children:(0,N.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,N.jsx)(`th`,{className:`px-5 py-2 font-medium`,children:`Mode`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Prod`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Wkr`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Pushed`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Done`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Push/s`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Done/s`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`p95`}),(0,N.jsx)(`th`,{className:`px-5 py-2 text-right font-medium`,children:`Dur`})]})}),(0,N.jsx)(`tbody`,{children:e.map(e=>(0,N.jsxs)(`tr`,{className:`border-b border-line last:border-0 hover:bg-surface-2/40`,children:[(0,N.jsx)(`td`,{className:`px-5 py-2 capitalize text-muted`,children:e.mode}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-muted`,children:e.producers}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-muted`,children:e.workers}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-fg`,children:u(e.pushed)}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-success`,children:u(e.completed)}),(0,N.jsxs)(`td`,{className:`px-5 py-2 text-right tnum text-accent`,children:[M(e.pushPerSec),`/s`]}),(0,N.jsxs)(`td`,{className:`px-5 py-2 text-right tnum text-success`,children:[M(e.donePerSec),`/s`]}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-muted`,children:m(e.p95)}),(0,N.jsx)(`td`,{className:`px-5 py-2 text-right tnum text-muted`,children:m(e.durationMs)})]},e.id))})]})})]})}var F={pushed:0,completed:0,pushFailed:0,ackFailed:0,bytes:0,elapsedMs:0,pushPerSec:0,donePerSec:0,activeWorkers:0,pushSeries:[],doneSeries:[],etaMs:null,error:null},I=()=>({pushed:0,completed:0,pushFailed:0,ackFailed:0,bytes:0,assigned:0,startedAt:0,pushLat:[],activeWorkers:0,error:null,lastAt:0,lastPushed:0,lastDone:0,pushSeries:[],doneSeries:[]}),L=0;function R(){let[e,t]=(0,S.useState)(`idle`),[n,r]=(0,S.useState)(F),[i,a]=(0,S.useState)(null),[o,s]=(0,S.useState)([]),[c,u]=(0,S.useState)(null),d=(0,S.useRef)(!1),f=(0,S.useRef)(!1),p=(0,S.useRef)(!1),m=(0,S.useRef)(null),h=(0,S.useRef)(`idle`);h.current=e;let g=(0,S.useRef)(I());return(0,S.useEffect)(()=>()=>{d.current=!0},[]),(0,S.useEffect)(()=>{if(e!==`running`&&e!==`draining`)return;let t=setInterval(()=>{let e=g.current,t=performance.now(),n=t-e.startedAt,i=(t-e.lastAt)/1e3,a=i>0?Math.max(0,(e.pushed-e.lastPushed)/i):0,o=i>0?Math.max(0,(e.completed-e.lastDone)/i):0;e.lastAt=t,e.lastPushed=e.pushed,e.lastDone=e.completed,e.pushSeries=[...e.pushSeries,a].slice(-60),e.doneSeries=[...e.doneSeries,o].slice(-60);let s=null,c=m.current;if(c&&c.mode===`count`){let t=E(c.total,1,C.total);if(h.current===`draining`){let r=e.doneSeries.slice(-10),i=r.length?r.reduce((e,t)=>e+t,0)/r.length:0;i<=0&&n>0&&(i=e.completed/(n/1e3)),i>0&&(s=Math.max(0,t-e.completed)/i*1e3)}else a>0&&(s=Math.max(0,t-e.pushed)/a*1e3)}else c&&c.mode===`duration`&&(s=Math.max(0,E(c.durationS,1,C.durationS)*1e3-n));r({pushed:e.pushed,completed:e.completed,pushFailed:e.pushFailed,ackFailed:e.ackFailed,bytes:e.bytes,elapsedMs:n,pushPerSec:a,donePerSec:o,activeWorkers:e.activeWorkers,pushSeries:e.pushSeries,doneSeries:e.doneSeries,etaMs:s,error:e.error})},200);return()=>clearInterval(t)},[e]),{phase:e,live:n,summary:i,history:o,runCfg:c,run:async e=>{if(!f.current){f.current=!0;try{a(null);let n=e.queue.trim();if(!n){r({...F,error:`Queue name is required.`}),t(`error`);return}try{await l.overview()}catch(e){r({...F,error:`Server unreachable — start it on the Server page first. (${j(e)})`}),t(`error`);return}let i=E(e.total,1,C.total),o=E(e.durationS,1,C.durationS)*1e3,c=E(e.batch,1,C.batch),f=E(e.producers,e.mode===`duration`?0:1,C.producers),_=E(e.payload,0,C.payload),v=E(e.workers,0,C.workers),y=E(e.workerBatch,1,C.workerBatch),b=E(e.processMs,0,C.processMs);d.current=!1,p.current=!1,m.current=e,u(e),g.current=I(),g.current.startedAt=performance.now(),g.current.lastAt=performance.now(),r({...F}),t(`running`);let x=`x`.repeat(_),S=performance.now()+o,w=async()=>{for(;!d.current;){let t;if(e.mode===`count`){if(g.current.assigned>=i)break;t=Math.min(c,i-g.current.assigned)}else{if(performance.now()>=S)break;t=c}let r=g.current.assigned;g.current.assigned+=t;let a=O(r,t,x,e.durable,e.removeOnComplete),o=performance.now();try{await l.addJobsBulk(n,a),g.current.pushed+=t,g.current.bytes+=t*_}catch(e){g.current.pushFailed+=t,g.current.error??=j(e)}g.current.pushLat.push(performance.now()-o)}},T=async()=>{for(;!d.current&&!(e.mode===`duration`&&performance.now()>=S||e.mode===`count`&&g.current.completed>=i);){g.current.activeWorkers++;let t=[];try{try{t=(await l.pullBatch(n,y)).jobs??[]}catch(e){g.current.error??=j(e)}if(t.length>0){b>0&&await A(b,()=>!d.current);try{await l.ackBatch(t.map(e=>e.id)),g.current.completed+=t.length}catch(e){g.current.ackFailed+=t.length,g.current.error??=j(e)}}}finally{g.current.activeWorkers--}if(t.length===0){if(e.mode===`count`&&p.current)break;await k(50)}}},M=Array.from({length:f},w),N=Array.from({length:v},T),P=Promise.all(M).then(()=>{p.current=!0,!d.current&&e.mode===`count`&&v>0&&h.current===`running`&&t(`draining`)});await Promise.all([P,...N]);let R=g.current,z=performance.now()-R.startedAt,B=z/1e3||1,V=[...R.pushLat].sort((e,t)=>e-t),H={pushed:R.pushed,completed:R.completed,pushFailed:R.pushFailed,ackFailed:R.ackFailed,bytes:R.bytes,durationMs:z,pushPerSec:R.pushed/B,donePerSec:R.completed/B,mbPerSec:R.bytes/B,avg:V.length?V.reduce((e,t)=>e+t,0)/V.length:0,p50:D(V,50),p95:D(V,95),p99:D(V,99),max:V.length?V[V.length-1]:0,error:R.error};a(H),r(e=>({...e,pushed:R.pushed,completed:R.completed,elapsedMs:z,pushPerSec:0,donePerSec:0,activeWorkers:0,etaMs:0})),s(t=>[{...H,id:++L,at:Date.now(),mode:e.mode,producers:f,workers:v},...t].slice(0,12)),t(d.current?`stopped`:`done`)}finally{f.current=!1}}},stop:()=>{d.current=!0,(h.current===`running`||h.current===`draining`)&&t(`stopping`)},reset:()=>{d.current=!0,a(null),r(F),t(`idle`)},clearHistory:()=>s([])}}var z=[`count`,`duration`],B=[`total`,`durationS`,`batch`,`producers`,`payload`,`workers`,`workerBatch`,`processMs`],V=e=>({...e,total:String(e.total),durationS:String(e.durationS),batch:String(e.batch),producers:String(e.producers),payload:String(e.payload),workers:String(e.workers),workerBatch:String(e.workerBatch),processMs:String(e.processMs)}),H=e=>({...e,total:Number(e.total),durationS:Number(e.durationS),batch:Number(e.batch),producers:Number(e.producers),payload:Number(e.payload),workers:Number(e.workers),workerBatch:Number(e.workerBatch),processMs:Number(e.processMs)});function U(){let[e,n]=(0,S.useState)(()=>V(w)),r=R(),{phase:x,live:D,summary:O,history:k}=r,A=x===`running`||x===`draining`||x===`stopping`,j=(e,t)=>n(n=>({...n,[e]:t})),F=e=>t=>j(e,t.target.value),I=e=>n(t=>{let n={...t};for(let[t,r]of Object.entries(e))n[t]=B.includes(t)?String(r):r;return n}),[L,U]=(0,S.useState)(w.queue);(0,S.useEffect)(()=>{let t=setTimeout(()=>U(e.queue.trim()||w.queue),400);return()=>clearTimeout(t)},[e.queue]);let{data:ee,error:te}=o(()=>l.counts(L),[L],{intervalMs:1e3}),K=ee?.counts??null,[q,J]=(0,S.useState)(!1),[Y,X]=(0,S.useState)(null),ne=async()=>{let t=e.queue.trim();if(!(q||!t||!window.confirm(`Remove benchmark jobs from "${t}"?`))){J(!0),X(null);try{let e=null;for(let n of[`waiting`,`completed`,`failed`,`delayed`])try{await l.clean(t,{state:n,limit:C.total})}catch(t){e=t.message}let n=await l.counts(t).catch(t=>(e=t.message,null));X(n==null?{error:e??`server unreachable — could not verify`}:{remaining:n.counts?.active??0})}finally{J(!1)}}},Z=r.runCfg??H(e),Q=E(Z.total,1,C.total),$=E(Z.workers,0,C.workers),re=Z.mode===`count`&&(A||O)?Math.min(100,D.pushed/Q*100):0,ie=Z.mode===`count`&&(A||O)?Math.min(100,D.completed/Q*100):0,ae=Z.mode===`duration`?Math.min(100,D.elapsedMs/(E(Z.durationS,1,C.durationS)*1e3)*100):0,oe=x===`running`?Z.mode===`duration`?`Running…`:`Producing…`:x===`draining`?`Draining…`:x===`stopping`?`Stopping…`:x===`error`?`Error`:O?`Result`:`Ready`,se=(x===`running`||x===`draining`)&&D.etaMs!=null?D.etaMs>0?`ETA ${m(D.etaMs)}`:`finishing…`:x===`stopped`?`stopped early`:x===`done`?`complete`:``;return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(d,{title:`Benchmark`,description:`Drive real load against the server — producers bulk-enqueue jobs while simulated workers pull, process and ack them. Throughput is measured client-side; the queue genuinely fills and drains.`,actions:x===`stopping`?(0,N.jsxs)(h,{variant:`warning`,size:`sm`,disabled:!0,children:[(0,N.jsx)(i,{className:`size-3.5`}),` Stopping…`]}):A?(0,N.jsxs)(h,{variant:`warning`,size:`sm`,onClick:r.stop,children:[(0,N.jsx)(i,{className:`size-3.5`}),` Stop`]}):(0,N.jsxs)(h,{variant:`success`,size:`sm`,onClick:()=>r.run(H(e)),children:[(0,N.jsx)(c,{className:`size-3.5`}),` Run benchmark`]})}),D.error&&(0,N.jsx)(`div`,{className:`mb-4 rounded-lg border border-red-500/20 bg-red-500/5 px-4 py-2 text-sm text-danger`,children:D.error}),(0,N.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,N.jsx)(`span`,{className:`text-xs font-medium uppercase tracking-wider text-faint`,children:`Presets`}),Object.keys(T).map(e=>(0,N.jsx)(`button`,{type:`button`,disabled:A,onClick:()=>I(T[e]),className:`rounded-md border border-line bg-surface-2 px-2.5 py-1 text-xs text-muted transition-colors hover:border-line-strong hover:text-fg disabled:opacity-40`,children:e},e))]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-3`,children:[(0,N.jsxs)(s,{className:`lg:col-span-1`,children:[(0,N.jsx)(a,{title:`Configuration`}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,N.jsx)(y,{label:`Queue`,hint:`Jobs are enqueued here (created on first push).`,children:(0,N.jsx)(_,{value:e.queue,disabled:A,onChange:e=>j(`queue`,e.target.value)})}),(0,N.jsx)(y,{label:`Mode`,hint:e.mode===`count`?`Push a fixed number of jobs.`:`Run producers + workers for a fixed time.`,children:(0,N.jsx)(g,{options:z,value:e.mode,onChange:e=>j(`mode`,e),disabled:A})}),e.mode===`count`?(0,N.jsx)(y,{label:`Total jobs`,hint:`max ${u(C.total)}`,children:(0,N.jsx)(_,{type:`number`,min:1,max:C.total,value:e.total,disabled:A,onChange:F(`total`)})}):(0,N.jsx)(y,{label:`Duration (s)`,hint:`max ${C.durationS}s`,children:(0,N.jsx)(_,{type:`number`,min:1,max:C.durationS,value:e.durationS,disabled:A,onChange:F(`durationS`)})}),(0,N.jsx)(`div`,{className:`mt-1 text-[11px] font-semibold uppercase tracking-wider text-faint`,children:`Producers`}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,N.jsx)(y,{label:`Producers`,hint:`parallel, max ${C.producers}`,children:(0,N.jsx)(_,{type:`number`,min:e.mode===`duration`?0:1,max:C.producers,value:e.producers,disabled:A,onChange:F(`producers`)})}),(0,N.jsx)(y,{label:`Push batch`,hint:`jobs/req, max ${C.batch}`,children:(0,N.jsx)(_,{type:`number`,min:1,max:C.batch,value:e.batch,disabled:A,onChange:F(`batch`)})}),(0,N.jsx)(y,{label:`Payload`,hint:`bytes/job, max ${u(C.payload)}`,children:(0,N.jsx)(_,{type:`number`,min:0,max:C.payload,value:e.payload,disabled:A,onChange:F(`payload`)})})]}),(0,N.jsx)(`div`,{className:`mt-1 text-[11px] font-semibold uppercase tracking-wider text-faint`,children:`Workers (simulated)`}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,N.jsx)(y,{label:`Workers`,hint:`0 = produce only, max ${C.workers}`,children:(0,N.jsx)(_,{type:`number`,min:0,max:C.workers,value:e.workers,disabled:A,onChange:F(`workers`)})}),(0,N.jsx)(y,{label:`Pull batch`,hint:`jobs/pull, max ${C.workerBatch}`,children:(0,N.jsx)(_,{type:`number`,min:1,max:C.workerBatch,value:e.workerBatch,disabled:A,onChange:F(`workerBatch`)})}),(0,N.jsx)(y,{label:`Process (ms)`,hint:`simulated work per pull`,children:(0,N.jsx)(_,{type:`number`,min:0,max:C.processMs,value:e.processMs,disabled:A,onChange:F(`processMs`)})})]}),(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2`,children:[(0,N.jsx)(v,{checked:e.durable,onChange:e=>j(`durable`,e),disabled:A}),(0,N.jsx)(`span`,{className:`text-sm text-muted`,children:`Durable (fsync each job)`})]}),(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2`,children:[(0,N.jsx)(v,{checked:e.removeOnComplete,onChange:e=>j(`removeOnComplete`,e),disabled:A}),(0,N.jsx)(`span`,{className:`text-sm text-muted`,children:`Remove on complete`})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-3 pt-1`,children:[(0,N.jsx)(h,{variant:`ghost`,size:`sm`,disabled:A||q,onClick:ne,children:q?`Cleaning…`:`Clean queue`}),Y&&(`error`in Y?(0,N.jsxs)(`span`,{className:`text-xs text-danger`,children:[`Clean unverified — `,Y.error]}):(0,N.jsx)(`span`,{className:t(`text-xs`,Y.remaining>0?`text-warning`:`text-success`),children:Y.remaining>0?`Cleaned — ${u(Y.remaining)} active job(s) remain (requeued after the stall timeout)`:`Cleaned — 0 jobs remain`}))]})]})]}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-6 lg:col-span-2`,children:[(0,N.jsxs)(s,{children:[(0,N.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,N.jsx)(`h3`,{className:`text-base font-semibold text-fg`,children:oe}),(0,N.jsx)(`span`,{className:`text-xs text-faint`,children:se})]}),(0,N.jsx)(W,{label:Z.mode===`duration`?`Elapsed`:`Produced`,pct:Z.mode===`duration`?ae:re,tone:`accent`}),$>0&&Z.mode===`count`&&(0,N.jsx)(W,{label:`Completed`,pct:ie,tone:`emerald`}),(0,N.jsxs)(`div`,{className:`mt-4 grid grid-cols-2 gap-4 md:grid-cols-4`,children:[(0,N.jsx)(f,{label:`Pushed`,value:u(D.pushed),tone:`accent`,compact:!0}),(0,N.jsx)(f,{label:`Completed`,value:u(D.completed),tone:`green`,compact:!0}),(0,N.jsx)(f,{label:`Push/sec`,value:M(D.pushPerSec),compact:!0}),(0,N.jsx)(f,{label:`Done/sec`,value:M(D.donePerSec),tone:`green`,compact:!0}),(0,N.jsx)(f,{label:`Elapsed`,value:m(D.elapsedMs),compact:!0}),(0,N.jsx)(f,{label:`Active workers`,value:`${D.activeWorkers}/${$}`,tone:`blue`,compact:!0}),(0,N.jsx)(f,{label:`Data`,value:p(O?.bytes??D.bytes),compact:!0}),(0,N.jsx)(f,{label:`Errors`,value:u((O?.pushFailed??D.pushFailed)+(O?.ackFailed??D.ackFailed)),tone:D.pushFailed+D.ackFailed?`red`:`default`,compact:!0})]})]}),(0,N.jsxs)(s,{children:[(0,N.jsx)(a,{title:`Throughput`}),(0,N.jsx)(`p`,{className:`-mt-3 mb-4 text-xs text-faint`,children:`Enqueue (client → server) vs completion (workers) per second`}),(0,N.jsx)(b,{series:[{label:`Push/sec`,color:`#38bdf8`,points:D.pushSeries,area:!0},{label:`Done/sec`,color:`#34d399`,points:D.doneSeries,area:!0}]}),(0,N.jsxs)(`div`,{className:`mt-2 flex items-center gap-4 font-mono text-[11px] text-faint`,children:[(0,N.jsx)(G,{color:`#38bdf8`,label:`Push/sec`,value:D.pushPerSec}),(0,N.jsx)(G,{color:`#34d399`,label:`Done/sec`,value:D.donePerSec})]})]})]})]}),O&&(0,N.jsxs)(s,{className:`mt-6`,children:[(0,N.jsx)(a,{title:`Summary`}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 md:grid-cols-4 xl:grid-cols-8`,children:[(0,N.jsx)(f,{label:`Pushed`,value:u(O.pushed),tone:`accent`,compact:!0}),(0,N.jsx)(f,{label:`Completed`,value:u(O.completed),tone:`green`,compact:!0}),(0,N.jsx)(f,{label:`Duration`,value:m(O.durationMs),compact:!0}),(0,N.jsx)(f,{label:`Avg push/s`,value:M(O.pushPerSec),tone:`accent`,compact:!0}),(0,N.jsx)(f,{label:`Avg done/s`,value:M(O.donePerSec),tone:`green`,compact:!0}),(0,N.jsx)(f,{label:`Data rate`,value:`${p(O.mbPerSec)}/s`,compact:!0}),(0,N.jsx)(f,{label:`Push p95`,value:m(O.p95),compact:!0}),(0,N.jsx)(f,{label:`Push p99`,value:m(O.p99),compact:!0})]}),(0,N.jsxs)(`p`,{className:`mt-3 text-xs text-faint`,children:[`Push-batch latency avg `,m(O.avg),` · p50 `,m(O.p50),` · p95`,` `,m(O.p95),` · p99 `,m(O.p99),` · max `,m(O.max),`.`,O.error?` First error: ${O.error}`:``]})]}),(0,N.jsxs)(s,{className:`mt-6`,children:[(0,N.jsx)(a,{title:`Server queue: ${L}`,action:te?(0,N.jsx)(`span`,{className:`text-xs font-medium text-warning`,children:`stale — server unreachable`}):void 0}),(0,N.jsx)(`p`,{className:`-mt-3 mb-4 text-xs text-faint`,children:`Live counts from the server (poll 1s).`}),K?(0,N.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 md:grid-cols-5`,children:[(0,N.jsx)(f,{label:`Waiting`,value:u(K.waiting??0),tone:`amber`,compact:!0}),(0,N.jsx)(f,{label:`Active`,value:u(K.active??0),tone:`blue`,compact:!0}),(0,N.jsx)(f,{label:`Completed`,value:u(K.completed??0),tone:`green`,compact:!0}),(0,N.jsx)(f,{label:`Failed`,value:u(K.failed??0),tone:K.failed?`red`:`default`,compact:!0}),(0,N.jsx)(f,{label:`Delayed`,value:u(K.delayed??0),compact:!0})]}):(0,N.jsx)(`p`,{className:`text-sm text-faint`,children:`No counts yet — waiting for the server to answer for this queue.`})]}),(0,N.jsx)(P,{history:k,onClear:r.clearHistory})]})}function W({label:e,pct:n,tone:r}){return(0,N.jsxs)(`div`,{className:`mb-2`,children:[(0,N.jsxs)(`div`,{className:`mb-1 flex items-center justify-between text-[11px] text-faint`,children:[(0,N.jsx)(`span`,{children:e}),(0,N.jsxs)(`span`,{className:`tnum`,children:[n.toFixed(0),`%`]})]}),(0,N.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-surface-2`,children:(0,N.jsx)(`div`,{className:t(`h-full rounded-full transition-all`,r===`accent`?`bg-accent`:`bg-emerald-500`),style:{width:`${n}%`}})})]})}function G({color:e,label:t,value:n}){return(0,N.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,N.jsx)(`span`,{className:`size-2 rounded-full`,style:{background:e}}),t,` `,(0,N.jsxs)(`span`,{className:`text-fg`,children:[M(n),`/s`]})]})}export{U as Benchmark};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./cn-CMFYpumL.js";import{m as r,t as i}from"./react-vendor-CHIHtdAC.js";import{
|
|
1
|
+
import{n as e,r as t,t as n}from"./cn-CMFYpumL.js";import{m as r,t as i}from"./react-vendor-CHIHtdAC.js";import{E as a,Z as o}from"./index-BFjeS9FG.js";import{a as s,n as c,t as l}from"./form-PtDLk33Z.js";var u=t(r(),1),d=`vercel.ai.error`,f=Symbol.for(d),p,m,h=class e extends (m=Error,p=f,m){constructor({name:e,message:t,cause:n}){super(t),this[p]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,d)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}},g=`AI_APICallError`,_=`vercel.ai.error.${g}`,v=Symbol.for(_),y,b,x=class extends (b=h,y=v,b){constructor({message:e,url:t,requestBodyValues:n,statusCode:r,responseHeaders:i,responseBody:a,cause:o,isRetryable:s=r!=null&&(r===408||r===409||r===429||r>=500),data:c}){super({name:g,message:e,cause:o}),this[y]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=r,this.responseHeaders=i,this.responseBody=a,this.isRetryable=s,this.data=c}static isInstance(e){return h.hasMarker(e,_)}},S=`AI_EmptyResponseBodyError`,ee=`vercel.ai.error.${S}`,te=Symbol.for(ee),ne,re,ie=class extends (re=h,ne=te,re){constructor({message:e=`Empty response body`}={}){super({name:S,message:e}),this[ne]=!0}static isInstance(e){return h.hasMarker(e,ee)}};function ae(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.toString():JSON.stringify(e)}var oe=`AI_InvalidArgumentError`,se=`vercel.ai.error.${oe}`,C=Symbol.for(se),ce,le,ue=class extends (le=h,ce=C,le){constructor({message:e,cause:t,argument:n}){super({name:oe,message:e,cause:t}),this[ce]=!0,this.argument=n}static isInstance(e){return h.hasMarker(e,se)}},de=`AI_InvalidPromptError`,fe=`vercel.ai.error.${de}`,pe=Symbol.for(fe),me,he,ge=class extends (he=h,me=pe,he){constructor({prompt:e,message:t,cause:n}){super({name:de,message:`Invalid prompt: ${t}`,cause:n}),this[me]=!0,this.prompt=e}static isInstance(e){return h.hasMarker(e,fe)}},_e=`AI_InvalidResponseDataError`,ve=`vercel.ai.error.${_e}`,ye=Symbol.for(ve),be,xe,Se=class extends (xe=h,be=ye,xe){constructor({data:e,message:t=`Invalid response data: ${JSON.stringify(e)}.`}){super({name:_e,message:t}),this[be]=!0,this.data=e}static isInstance(e){return h.hasMarker(e,ve)}},Ce=`AI_JSONParseError`,we=`vercel.ai.error.${Ce}`,Te=Symbol.for(we),Ee,De,Oe=class extends (De=h,Ee=Te,De){constructor({text:e,cause:t}){super({name:Ce,message:`JSON parsing failed: Text: ${e}.
|
|
2
2
|
Error message: ${ae(t)}`,cause:t}),this[Ee]=!0,this.text=e}static isInstance(e){return h.hasMarker(e,we)}},ke=`AI_LoadAPIKeyError`,Ae=`vercel.ai.error.${ke}`,je=Symbol.for(Ae),Me,Ne,Pe=class extends (Ne=h,Me=je,Ne){constructor({message:e}){super({name:ke,message:e}),this[Me]=!0}static isInstance(e){return h.hasMarker(e,Ae)}},Fe=`AI_NoSuchModelError`,Ie=`vercel.ai.error.${Fe}`,Le=Symbol.for(Ie),Re,ze,Be=class extends (ze=h,Re=Le,ze){constructor({errorName:e=Fe,modelId:t,modelType:n,message:r=`No such ${n}: ${t}`}){super({name:e,message:r}),this[Re]=!0,this.modelId=t,this.modelType=n}static isInstance(e){return h.hasMarker(e,Ie)}},Ve=`AI_NoSuchProviderReferenceError`,He=`vercel.ai.error.${Ve}`,Ue=Symbol.for(He),We,Ge,Ke=class extends (Ge=h,We=Ue,Ge){constructor({provider:e,reference:t,message:n=`No provider reference found for provider '${e}'. Available providers: ${Object.keys(t).join(`, `)}`}){super({name:Ve,message:n}),this[We]=!0,this.provider=e,this.reference=t}static isInstance(e){return h.hasMarker(e,He)}},qe=`AI_TooManyEmbeddingValuesForCallError`,Je=`vercel.ai.error.${qe}`,Ye=Symbol.for(Je),Xe,Ze,Qe=class extends (Ze=h,Xe=Ye,Ze){constructor(e){super({name:qe,message:`Too many values for a single embedding call. The ${e.provider} model "${e.modelId}" can only embed up to ${e.maxEmbeddingsPerCall} values per call, but ${e.values.length} values were provided.`}),this[Xe]=!0,this.provider=e.provider,this.modelId=e.modelId,this.maxEmbeddingsPerCall=e.maxEmbeddingsPerCall,this.values=e.values}static isInstance(e){return h.hasMarker(e,Je)}},$e=`AI_TypeValidationError`,et=`vercel.ai.error.${$e}`,tt=Symbol.for(et),nt,rt,it=class e extends (rt=h,nt=tt,rt){constructor({value:e,cause:t,context:n}){let r=`Type validation failed`;if(n?.field&&(r+=` for ${n.field}`),n?.entityName||n?.entityId){r+=` (`;let e=[];n.entityName&&e.push(n.entityName),n.entityId&&e.push(`id: "${n.entityId}"`),r+=e.join(`, `),r+=`)`}super({name:$e,message:`${r}: Value: ${JSON.stringify(e)}.
|
|
3
3
|
Error message: ${ae(t)}`,cause:t}),this[nt]=!0,this.value=e,this.context=n}static isInstance(e){return h.hasMarker(e,et)}static wrap({value:t,cause:n,context:r}){return e.isInstance(n)&&n.value===t&&n.context?.field===r?.field&&n.context?.entityName===r?.entityName&&n.context?.entityId===r?.entityId?n:new e({value:t,cause:n,context:r})}},at=`AI_UnsupportedFunctionalityError`,ot=`vercel.ai.error.${at}`,st=Symbol.for(ot),ct,lt,w=class extends (lt=h,ct=st,lt){constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:at,message:t}),this[ct]=!0,this.functionality=e}static isInstance(e){return h.hasMarker(e,ot)}},ut;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 dt=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ft=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(ut=globalThis).__zod_globalConfig??(ut.__zod_globalConfig={});var pt=globalThis.__zod_globalConfig;function mt(e){return e&&Object.assign(pt,e),pt}function ht(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 gt(e,t){return typeof t==`bigint`?t.toString():t}function _t(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}throw Error(`cached value already set`)}}}function vt(e){return e==null}function yt(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function bt(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var xt=Symbol(`evaluating`);function St(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==xt)return r===void 0&&(r=xt,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function Ct(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function wt(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function Tt(e){return JSON.stringify(e)}function Et(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Dt=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Ot(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var kt=_t(()=>{if(pt.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function At(e){if(Ot(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(Ot(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function jt(e){return At(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Mt=new Set([`string`,`number`,`symbol`]);function Nt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Pt(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function E(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 Ft(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var It={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Lt(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 Pt(e,wt(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 Ct(this,`shape`,e),e},checks:[]}))}function Rt(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 Pt(e,wt(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 Ct(this,`shape`,r),r},checks:[]}))}function zt(e,t){if(!At(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 Pt(e,wt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Ct(this,`shape`,n),n}}))}function Bt(e,t){if(!At(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Pt(e,wt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Ct(this,`shape`,n),n}}))}function Vt(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Pt(e,wt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Ct(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Ht(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 Pt(t,wt(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 Ct(this,`shape`,i),i},checks:[]}))}function Ut(e,t,n){return Pt(t,wt(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 Ct(this,`shape`,i),i}}))}function Wt(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 Gt(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 Kt(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function qt(e){return typeof e==`string`?e:e?.message}function Jt(e,t,n){let r=e.message?e.message:qt(e.inst?._zod.def?.error?.(e))??qt(t?.error?.(e))??qt(n.customError?.(e))??qt(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 Yt(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Xt(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var Zt=(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,gt,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Qt=T(`$ZodError`,Zt),$t=T(`$ZodError`,Zt,{Parent:Error});function en(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 tn(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 nn=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new dt;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Jt(e,a,mt())));throw Dt(t,i?.callee),t}return o.value},rn=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Jt(e,a,mt())));throw Dt(t,i?.callee),t}return o.value},an=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new dt;return a.issues.length?{success:!1,error:new(e??Qt)(a.issues.map(e=>Jt(e,i,mt())))}:{success:!0,data:a.value}},on=an($t),sn=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Jt(e,i,mt())))}:{success:!0,data:a.value}},cn=sn($t),ln=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return nn(e)(t,n,i)},un=e=>(t,n,r)=>nn(e)(t,n,r),dn=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return rn(e)(t,n,i)},fn=e=>async(t,n,r)=>rn(e)(t,n,r),pn=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return an(e)(t,n,i)},mn=e=>(t,n,r)=>an(e)(t,n,r),hn=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sn(e)(t,n,i)},gn=e=>async(t,n,r)=>sn(e)(t,n,r),_n=/^[cC][0-9a-z]{6,}$/,vn=/^[0-9a-z]+$/,yn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,bn=/^[0-9a-vA-V]{20}$/,xn=/^[A-Za-z0-9]{27}$/,Sn=/^[a-zA-Z0-9_-]{21}$/,Cn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,wn=/^([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})$/,Tn=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)$/,En=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Dn=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function On(){return new RegExp(Dn,`u`)}var kn=/^(?:(?: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])$/,An=/^(([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}|:))$/,jn=/^((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])$/,Mn=/^(([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])$/,Nn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Pn=/^[A-Za-z0-9_-]*$/,Fn=/^https?$/,In=/^\+[1-9]\d{6,14}$/,Ln=`(?:(?:\\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])))`,Rn=RegExp(`^${Ln}$`);function zn(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 Bn(e){return RegExp(`^${zn(e)}$`)}function Vn(e){let t=zn({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(`^${Ln}T(?:${r})$`)}var Hn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Un=/^-?\d+$/,Wn=/^-?\d+(?:\.\d+)?$/,Gn=/^(?:true|false)$/i,Kn=/^null$/i,qn=/^[^A-Z]*$/,Jn=/^[^a-z]*$/,Yn=T(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Xn={number:`number`,bigint:`bigint`,object:`date`},Zn=T(`$ZodCheckLessThan`,(e,t)=>{Yn.init(e,t);let n=Xn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Qn=T(`$ZodCheckGreaterThan`,(e,t)=>{Yn.init(e,t);let n=Xn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$n=T(`$ZodCheckMultipleOf`,(e,t)=>{Yn.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):bt(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),er=T(`$ZodCheckNumberFormat`,(e,t)=>{Yn.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=It[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=Un)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),tr=T(`$ZodCheckMaxLength`,(e,t)=>{var n;Yn.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!vt(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=Yt(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),nr=T(`$ZodCheckMinLength`,(e,t)=>{var n;Yn.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!vt(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=Yt(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),rr=T(`$ZodCheckLengthEquals`,(e,t)=>{var n;Yn.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!vt(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=Yt(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})}}),ir=T(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Yn.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=()=>{})}),ar=T(`$ZodCheckRegex`,(e,t)=>{ir.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})}}),or=T(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=qn,ir.init(e,t)}),sr=T(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Jn,ir.init(e,t)}),cr=T(`$ZodCheckIncludes`,(e,t)=>{Yn.init(e,t);let n=Nt(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})}}),lr=T(`$ZodCheckStartsWith`,(e,t)=>{Yn.init(e,t);let n=RegExp(`^${Nt(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})}}),ur=T(`$ZodCheckEndsWith`,(e,t)=>{Yn.init(e,t);let n=RegExp(`.*${Nt(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})}}),dr=T(`$ZodCheckOverwrite`,(e,t)=>{Yn.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),fr=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(`
|
|
4
4
|
`).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(`
|
|
@@ -143,10 +143,10 @@ ${r}`)}async function TD({secret:e,approvalId:t,toolCallId:n,toolName:r,input:i}
|
|
|
143
143
|
|
|
144
144
|
`)},flush(e){e.enqueue(`data: [DONE]
|
|
145
145
|
|
|
146
|
-
`)}})}},FD={"content-type":`text/event-stream`,"cache-control":`no-cache`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`};function ID({status:e,statusText:t,headers:n,stream:r,consumeSseStream:i}){let a=r.pipeThrough(new PD);if(i){let[e,t]=a.tee();a=e,i({stream:t})}return new Response(a.pipeThrough(new TextEncoderStream),{status:e,statusText:t,headers:kD(n,FD)})}function LD({response:e,status:t,statusText:n,headers:r,stream:i,consumeSseStream:a}){let o=i.pipeThrough(new PD);if(a){let[e,t]=o.tee();o=e,a({stream:t})}jD({response:e,status:t,statusText:n,headers:Object.fromEntries(kD(r,FD).entries()),stream:o.pipeThrough(new TextEncoderStream)})}function RD({originalMessages:e,responseMessageId:t}){if(e==null)return;let n=e[e.length-1];return n?.role===`assistant`?n.id:typeof t==`function`?t():t}F(D(),JT.optional());function zD(e){return e.type.startsWith(`data-`)}function BD(){return Object.create(null)}function VD(e){return e.type.startsWith(`tool-`)}function HD(e){return e.type===`dynamic-tool`}function UD(e){return VD(e)||HD(e)}function WD(e){return e.type.split(`-`).slice(1).join(`-`)}function GD({lastMessage:e,messageId:t}){return{message:e?.role===`assistant`?e:{id:t,metadata:void 0,role:`assistant`,parts:[]},activeTextParts:BD(),activeReasoningParts:BD(),partialToolCalls:BD()}}function KD({stream:e,messageMetadataSchema:t,dataPartSchemas:n,runUpdateMessageJob:r,onError:i,onToolCall:a,onData:o}){return e.pipeThrough(new TransformStream({async transform(e,s){await r(async({state:r,write:c})=>{function l(e){let t=r.message.parts.filter(UD).find(t=>t.toolCallId===e);if(t==null)throw new Mw({chunkType:`tool-invocation`,chunkId:e,message:`No tool invocation found for tool call ID "${e}".`});return t}function u(e){let t=r.message.parts.filter(UD).find(t=>t.approval?.id===e);if(t==null)throw new Mw({chunkType:`tool-approval-response`,chunkId:e,message:`No tool invocation found for approval ID "${e}".`});return t}function d(e){let t=r.message.parts.find(t=>VD(t)&&t.toolCallId===e.toolCallId),n=e,i=t;if(t!=null){t.state=e.state,i.input=n.input,i.output=n.output,i.errorText=n.errorText,i.rawInput=n.rawInput,i.preliminary=n.preliminary,e.title!==void 0&&(i.title=e.title),e.toolMetadata!==void 0&&(i.toolMetadata=e.toolMetadata),i.providerExecuted=n.providerExecuted??t.providerExecuted;let r=n.providerMetadata;if(r!=null)if(e.state===`output-available`||e.state===`output-error`){let e=t;e.resultProviderMetadata=r}else t.callProviderMetadata=r}else r.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},input:n.input,output:n.output,rawInput:n.rawInput,errorText:n.errorText,providerExecuted:n.providerExecuted,preliminary:n.preliminary,...n.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:n.providerMetadata}:{},...n.providerMetadata!=null&&!(e.state===`output-available`||e.state===`output-error`)?{callProviderMetadata:n.providerMetadata}:{}})}function f(e){let t=r.message.parts.find(t=>t.type===`dynamic-tool`&&t.toolCallId===e.toolCallId),n=e,i=t;if(t!=null){t.state=e.state,i.toolName=e.toolName,i.input=n.input,i.output=n.output,i.errorText=n.errorText,i.rawInput=n.rawInput??i.rawInput,i.preliminary=n.preliminary,e.title!==void 0&&(i.title=e.title),e.toolMetadata!==void 0&&(i.toolMetadata=e.toolMetadata),i.providerExecuted=n.providerExecuted??t.providerExecuted;let r=n.providerMetadata;if(r!=null)if(e.state===`output-available`||e.state===`output-error`){let e=t;e.resultProviderMetadata=r}else t.callProviderMetadata=r}else r.message.parts.push({type:`dynamic-tool`,toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:n.input,output:n.output,errorText:n.errorText,preliminary:n.preliminary,providerExecuted:n.providerExecuted,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},...n.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:n.providerMetadata}:{},...n.providerMetadata!=null&&!(e.state===`output-available`||e.state===`output-error`)?{callProviderMetadata:n.providerMetadata}:{}})}async function p(e){if(e!=null){let n=r.message.metadata==null?e:yE(r.message.metadata,e);t!=null&&await Y({value:n,schema:t,context:{field:`message.metadata`,entityId:r.message.id}}),r.message.metadata=n}}switch(e.type){case`text-start`:{let t={type:`text`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeTextParts[e.id]=t,r.message.parts.push(t),c();break}case`text-delta`:{let t=r.activeTextParts[e.id];if(t==null)throw new Mw({chunkType:`text-delta`,chunkId:e.id,message:`Received text-delta for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`text-end`:{let t=r.activeTextParts[e.id];if(t==null)throw new Mw({chunkType:`text-end`,chunkId:e.id,message:`Received text-end for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-end" chunks.`});t.state=`done`,t.providerMetadata=e.providerMetadata??t.providerMetadata,delete r.activeTextParts[e.id],c();break}case`custom`:{let t={type:`custom`,kind:e.kind,providerMetadata:e.providerMetadata};r.message.parts.push(t),c();break}case`reasoning-start`:{let t={type:`reasoning`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeReasoningParts[e.id]=t,r.message.parts.push(t),c();break}case`reasoning-delta`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new Mw({chunkType:`reasoning-delta`,chunkId:e.id,message:`Received reasoning-delta for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`reasoning-end`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new Mw({chunkType:`reasoning-end`,chunkId:e.id,message:`Received reasoning-end for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-end" chunks.`});t.providerMetadata=e.providerMetadata??t.providerMetadata,t.state=`done`,delete r.activeReasoningParts[e.id],c();break}case`file`:case`reasoning-file`:r.message.parts.push({type:e.type,mediaType:e.mediaType,url:e.url,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}),c();break;case`source-url`:r.message.parts.push({type:`source-url`,sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),c();break;case`source-document`:r.message.parts.push({type:`source-document`,sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),c();break;case`tool-input-start`:{let t=r.message.parts.filter(VD);r.partialToolCalls[e.toolCallId]={text:``,toolName:e.toolName,index:t.length,dynamic:e.dynamic,title:e.title,toolMetadata:e.toolMetadata},e.dynamic?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}),c();break}case`tool-input-delta`:{let t=r.partialToolCalls[e.toolCallId];if(t==null)throw new Mw({chunkType:`tool-input-delta`,chunkId:e.toolCallId,message:`Received tool-input-delta for missing tool call with ID "${e.toolCallId}". Ensure a "tool-input-start" chunk is sent before any "tool-input-delta" chunks.`});t.text+=e.inputTextDelta;let{value:n}=await PE(t.text);t.dynamic?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-input-available`:e.dynamic?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}),c(),a&&!e.providerExecuted&&await a({toolCall:e});break;case`tool-input-error`:{let t=r.message.parts.filter(UD).find(t=>t.toolCallId===e.toolCallId);(t==null?e.dynamic:t.type===`dynamic-tool`)?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}),c();break}case`tool-approval-request`:{let t=l(e.toolCallId);t.state=`approval-requested`,t.approval={id:e.approvalId,...e.isAutomatic===!0?{isAutomatic:!0}:{},...e.signature==null?{}:{signature:e.signature}},c();break}case`tool-approval-response`:{let t=u(e.approvalId),n=t.approval==null?{id:e.approvalId}:t.approval;t.state=`approval-responded`,t.approval={id:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason},...n.isAutomatic===!0?{isAutomatic:!0}:{}},e.providerExecuted!=null&&(t.providerExecuted=e.providerExecuted),e.providerMetadata!=null&&(t.callProviderMetadata=e.providerMetadata),c();break}case`tool-output-denied`:{let t=l(e.toolCallId);t.state=`output-denied`,c();break}case`tool-output-available`:{let t=l(e.toolCallId);t.type===`dynamic-tool`?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-available`,input:t.input,output:e.output,preliminary:e.preliminary,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:WD(t),state:`output-available`,input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-output-error`:{let t=l(e.toolCallId);t.type===`dynamic-tool`?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-error`,input:t.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:WD(t),state:`output-error`,input:t.input,rawInput:t.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`start-step`:r.message.parts.push({type:`step-start`});break;case`finish-step`:r.activeTextParts=BD(),r.activeReasoningParts=BD();break;case`start`:e.messageId!=null&&(r.message.id=e.messageId),await p(e.messageMetadata),(e.messageId!=null||e.messageMetadata!=null)&&c();break;case`finish`:e.finishReason!=null&&(r.finishReason=e.finishReason),await p(e.messageMetadata),e.messageMetadata!=null&&c();break;case`message-metadata`:await p(e.messageMetadata),e.messageMetadata!=null&&c();break;case`error`:i?.(Error(e.errorText));break;default:if(zD(e)){if(n?.[e.type]!=null){let t=r.message.parts.findIndex(t=>`id`in t&&`data`in t&&t.id===e.id&&t.type===e.type),i=t>=0?t:r.message.parts.length;await Y({value:e.data,schema:n[e.type],context:{field:`message.parts[${i}].data`,entityName:e.type,entityId:e.id}})}let t=e;if(t.transient){o?.(t);break}let i=t.id==null?void 0:r.message.parts.find(e=>t.type===e.type&&t.id===e.id);i==null?r.message.parts.push(t):i.data=t.data,o?.(t),c()}}s.enqueue(e)})}}))}function qD({messageId:e,originalMessages:t=[],onStepEnd:n,onStepFinish:r,onEnd:i,onFinish:a,onError:o,stream:s}){let c=t?.[t.length-1];c?.role===`assistant`?e=c.id:c=void 0;let l=!1,u=s.pipeThrough(new TransformStream({transform(t,n){if(t.type===`start`){let n=t;n.messageId==null&&e!=null&&(n.messageId=e)}t.type===`abort`&&(l=!0),n.enqueue(t)}})),d=n??r,f=i??a;if(f==null&&d==null)return u;let p=GD({lastMessage:c?structuredClone(c):void 0,messageId:e??``}),m=async e=>{await e({state:p,write:()=>{}})},h=!1,g=async()=>{if(h||!f)return;h=!0;let e=p.message.id===c?.id;await f({isAborted:l,isContinuation:e,responseMessage:p.message,messages:[...e?t.slice(0,-1):t,p.message],finishReason:p.finishReason})},_=async()=>{if(!d)return;let e=p.message.id===c?.id;try{await d({isContinuation:e,responseMessage:structuredClone(p.message),messages:[...e?t.slice(0,-1):t,structuredClone(p.message)]})}catch(e){o(e)}};return KD({stream:u,runUpdateMessageJob:m,onError:o}).pipeThrough(new TransformStream({async transform(e,t){e.type===`finish-step`&&await _(),t.enqueue(e)},async cancel(){await g()},async flush(){await g()}}))}function JD(e,{tools:t,sendReasoning:n=!0,sendSources:r=!1,sendStart:i=!0,sendFinish:a=!0,onError:o=()=>`An error occurred.`,messageMetadata:s,responseMessageId:c}={}){let l=e=>{let n=t?.[e.toolName];return n==null?e.dynamic:n?.type===`dynamic`?!0:void 0},u=e.type;switch(u){case`text-start`:return{type:`text-start`,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`text-delta`:return{type:`text-delta`,id:e.id,delta:e.text,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`text-end`:return{type:`text-end`,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`reasoning-start`:case`reasoning-end`:return n?{type:u,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0;case`reasoning-delta`:return n?{type:`reasoning-delta`,id:e.id,delta:e.text,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0;case`file`:case`reasoning-file`:return u===`reasoning-file`&&!n?void 0:{type:e.type,mediaType:e.file.mediaType,url:`data:${e.file.mediaType};base64,${e.file.base64}`,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`source`:return r?e.sourceType===`url`?{type:`source-url`,sourceId:e.id,url:e.url,title:e.title,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:e.sourceType===`document`?{type:`source-document`,sourceId:e.id,mediaType:e.mediaType,title:e.title,filename:e.filename,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0:void 0;case`custom`:return{type:`custom`,kind:e.kind,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`tool-input-start`:{let t=l(e);return{type:`tool-input-start`,toolCallId:e.id,toolName:e.toolName,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},...e.title==null?{}:{title:e.title}}}case`tool-input-delta`:return{type:`tool-input-delta`,toolCallId:e.id,inputTextDelta:e.delta};case`tool-call`:{let t=l(e);return e.invalid?{type:`tool-input-error`,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},errorText:o(e.error),...e.title==null?{}:{title:e.title}}:{type:`tool-input-available`,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},...e.title==null?{}:{title:e.title}}}case`tool-approval-request`:return{type:`tool-approval-request`,approvalId:e.approvalId,toolCallId:e.toolCall.toolCallId,...e.isAutomatic==null?{}:{isAutomatic:e.isAutomatic},...e.signature==null?{}:{signature:e.signature}};case`tool-approval-response`:return{type:`tool-approval-response`,approvalId:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason},...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted}};case`tool-result`:{let t=l(e);return{type:`tool-output-available`,toolCallId:e.toolCallId,output:e.output===void 0?null:e.output,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...e.preliminary==null?{}:{preliminary:e.preliminary},...t==null?{}:{dynamic:t}}}case`tool-error`:{let t=l(e);return{type:`tool-output-error`,toolCallId:e.toolCallId,errorText:e.providerExecuted?typeof e.error==`string`?e.error:JSON.stringify(e.error):o(e.error),...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t}}}case`tool-output-denied`:return{type:`tool-output-denied`,toolCallId:e.toolCallId};case`error`:return{type:`error`,errorText:o(e.error)};case`start-step`:return{type:`start-step`};case`finish-step`:return{type:`finish-step`};case`start`:return i?{type:`start`,...s==null?{}:{messageMetadata:s},...c==null?{}:{messageId:c}}:void 0;case`finish`:return a?{type:`finish`,finishReason:e.finishReason,...s==null?{}:{messageMetadata:s}}:void 0;case`abort`:return e;case`tool-input-end`:case`raw`:return;default:throw Error(`Unknown chunk type: ${u}`)}}function YD({stream:e,tools:t,sendReasoning:n=!0,sendSources:r=!1,sendStart:i=!0,sendFinish:a=!0,onError:o=()=>`An error occurred.`,messageMetadata:s,originalMessages:c,generateMessageId:l,onEnd:u,onFinish:d}){let f=l==null?void 0:RD({originalMessages:c,responseMessageId:l});return qD({stream:e.pipeThrough(new TransformStream({transform:async(e,c)=>{let l=s?.({part:e}),u=JD(e,{tools:t,sendReasoning:n,sendSources:r,sendStart:i,sendFinish:a,onError:o,messageMetadata:l,responseMessageId:f});u!=null&&c.enqueue(u),l!=null&&e.type!==`start`&&e.type!==`finish`&&c.enqueue({type:`message-metadata`,messageMetadata:l})}})),messageId:f??l?.(),originalMessages:c,onEnd:u??d,onError:o})}function XD(e){return ZD(e.pipeThrough(new TransformStream))}function ZD(e){return e[Symbol.asyncIterator]=function(){let e=this.getReader(),t=!1;async function n(n){if(!t){t=!0;try{n&&await e.cancel?.call(e)}finally{try{e.releaseLock()}catch{}}}}return{async next(){if(t)return{done:!0,value:void 0};let{done:r,value:i}=await e.read();return r?(await n(!0),{done:!0,value:void 0}):{done:!1,value:i}},async return(){return await n(!0),{done:!0,value:void 0}},async throw(e){throw await n(!0),e}}},e}async function QD({stream:e,onError:t}){let n=e.getReader();try{for(;;){let{done:e}=await n.read();if(e)break}}catch(e){t?.(e)}finally{n.releaseLock()}}function $D(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function eO(){let e=[],t=null,n=!1,r=$D(),i=()=>{n=!0,r.resolve(),e.forEach(e=>e.cancel()),e=[],t?.close()},a=async()=>{if(n&&e.length===0){t?.close();return}if(e.length===0)return r=$D(),await r.promise,await a();try{let{value:r,done:i}=await e[0].read();i?(e.shift(),e.length===0&&n?t?.close():await a()):t?.enqueue(r)}catch(n){t?.error(n),e.shift(),i()}};return{stream:new ReadableStream({start(e){t=e},pull:a,async cancel(){for(let t of e)await t.cancel();e=[],n=!0}}),addStream:t=>{if(n)throw Error(`Cannot add inner stream: outer stream is closed`);e.push(t.getReader()),r.resolve()},close:()=>{n=!0,r.resolve(),e.length===0&&t?.close()},terminate:i}}function tO({stream:e,tools:t,callId:n,messages:r,abortSignal:i,timeout:a,experimental_sandbox:o,toolsContext:s,toolApproval:c,runtimeContext:l,toolApprovalSecret:u,generateId:d,onToolExecutionStart:f,onToolExecutionEnd:p,executeToolInTelemetryContext:m,runInTracingChannelSpan:h}){let g=[];return e.pipeThrough(new TransformStream({async transform(e,_){switch(_.enqueue(e),e.type){case`tool-call`:{if(e.invalid)return;let n=t?.[e.toolName];if(n==null)return;let i=await qE({tools:t,toolCall:e,toolApproval:c,messages:r,toolsContext:s,runtimeContext:l});if(i.type===`not-applicable`){n.execute!=null&&e.providerExecuted!==!0&&g.push(e);return}let a=d(),o=await DD({secret:u,approvalId:a,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input});switch(i.type){case`user-approval`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,...o==null?{}:{signature:o}});return;case`denied`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,isAutomatic:!0,...o==null?{}:{signature:o}}),_.enqueue({type:`tool-approval-response`,approvalId:a,approved:!1,toolCall:e,reason:i.reason,providerExecuted:e.providerExecuted});return;case`approved`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,isAutomatic:!0,...o==null?{}:{signature:o}}),_.enqueue({type:`tool-approval-response`,approvalId:a,approved:!0,toolCall:e,reason:i.reason,providerExecuted:e.providerExecuted});break}n.execute!=null&&e.providerExecuted!==!0&&g.push(e);return}case`model-call-end`:await Promise.all(g.map(async e=>{try{let c=await kE({toolCall:e,tools:t,callId:n,messages:r,abortSignal:i,timeout:a,experimental_sandbox:o,toolsContext:s,onToolExecutionStart:f,onToolExecutionEnd:p,executeToolInTelemetryContext:m,runInTracingChannelSpan:h,onPreliminaryToolResult:e=>{_.enqueue(e)}});c!=null&&(_.enqueue({type:`tool-execution-end`,toolCallId:c.output.toolCallId,toolExecutionMs:c.toolExecutionMs}),_.enqueue(c.output))}catch(e){_.enqueue({type:`error`,error:e})}}));return}}}))}function nO({stream:e,tools:t,stepInputMessages:n,abortSignal:r,runtimeContext:i}){if(t==null)return e;let a={};return e.pipeThrough(new TransformStream({async transform(e,o){switch(o.enqueue(e),e.type){case`tool-input-start`:{a[e.id]=e.toolName;let o=t?.[e.toolName];o?.onInputStart!=null&&await o.onInputStart({toolCallId:e.id,messages:n,abortSignal:r,context:i});break}case`tool-input-delta`:{let o=a[e.id],s=t?.[o];s?.onInputDelta!=null&&await s.onInputDelta({inputTextDelta:e.delta,toolCallId:e.id,messages:n,abortSignal:r,context:i});break}case`tool-call`:{let o=a[e.toolCallId],s=t?.[o];delete a[e.toolCallId],s?.onInputAvailable!=null&&await s.onInputAvailable({input:e.input,toolCallId:e.toolCallId,messages:n,abortSignal:r,context:i})}}}}))}var rO=rd({prefix:`aitxt`,size:24}),iO=rd({prefix:`call`,size:24});async function aO({model:e,tools:t,toolOrder:n,output:r,toolChoice:i,prompt:a,system:o,instructions:s,messages:c,allowSystemInMessages:l,download:u,abortSignal:d,headers:f,includeRawChunks:p,providerOptions:m,repairToolCall:h,refineToolInput:g,executeLanguageModelCallInTelemetryContext:_=async({execute:e})=>await e(),callId:v,toolsContext:y,experimental_sandbox:b,_internal:{generateId:x=rO,generateCallId:S=iO,now:ee=bE}={},onStart:te,onLanguageModelCallStart:ne,onLanguageModelCallEnd:re,...ie}){let ae=hT(e),oe=v??S(),se=await fE({instructions:s,system:o,prompt:a,messages:c,allowSystemInMessages:l}),C=await DT({prompt:{instructions:se.instructions,messages:se.messages},supportedUrls:await ae.supportedUrls,download:u,provider:ae.provider.split(`.`)[0]}),ce=await VT({tools:t,toolOrder:n,toolsContext:y,experimental_sandbox:b}),le=zT({toolChoice:i});await xE({event:{promptMessages:C},callbacks:te});let ue={callId:oe,provider:ae.provider,modelId:ae.modelId,instructions:se.instructions,messages:se.messages,tools:ce,...ie};await xE({event:ue,callbacks:ne});let de=ee(),{stream:fe,response:pe,request:me}=await _({...ue,execute:async()=>await ae.doStream({...ie,tools:ce,toolChoice:le,responseFormat:await r?.responseFormat,prompt:C,providerOptions:m,abortSignal:d,headers:f,includeRawChunks:p})});return{stream:XD(fe.pipeThrough(oO({tools:t,instructions:se.instructions,messages:se.messages,repairToolCall:h,refineToolInput:g,callId:oe,provider:ae.provider,modelId:ae.modelId,generateId:x,now:ee,callStartTimestampMs:de,onLanguageModelCallEnd:re}))),response:pe,request:me}}function oO({tools:e,instructions:t,messages:n,repairToolCall:r,refineToolInput:i,callId:a,provider:o,modelId:s,generateId:c,now:l,callStartTimestampMs:u,onLanguageModelCallEnd:d}){let f=new Map,p=[],m=new Map,h=new Map,g=c(),_,v,y=[];return new TransformStream({async transform(c,b){if(sO(c)){let e=l();_==null?_=e-u:v!=null&&y.push(e-v),v=e}switch(c.type){case`text-start`:uO({content:p,partIndexes:m,id:c.id,type:`text`,providerMetadata:c.providerMetadata}),b.enqueue(c);break;case`text-delta`:uO({content:p,partIndexes:m,id:c.id,type:`text`,textDelta:c.delta,providerMetadata:c.providerMetadata}),b.enqueue({type:`text-delta`,id:c.id,text:c.delta,providerMetadata:c.providerMetadata});break;case`text-end`:uO({content:p,partIndexes:m,id:c.id,type:`text`,providerMetadata:c.providerMetadata}),m.delete(c.id),b.enqueue(c);break;case`reasoning-start`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,providerMetadata:c.providerMetadata}),b.enqueue(c);break;case`reasoning-delta`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,textDelta:c.delta,providerMetadata:c.providerMetadata}),b.enqueue({type:`reasoning-delta`,id:c.id,text:c.delta,providerMetadata:c.providerMetadata});break;case`reasoning-end`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,providerMetadata:c.providerMetadata}),h.delete(c.id),b.enqueue(c);break;case`file`:case`reasoning-file`:{let e=new ME({data:c.data.type===`data`?c.data.data:c.data.url.toString(),mediaType:c.mediaType});p.push({type:c.type,file:e,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata}}),b.enqueue({type:c.type,file:e,providerMetadata:c.providerMetadata});break}case`finish`:{let e=mE(c.usage),t=l()-u,n={responseTimeMs:t,effectiveOutputTokensPerSecond:EE({tokens:e.outputTokens,durationMs:t}),outputTokensPerSecond:_==null?void 0:EE({tokens:e.outputTokens,durationMs:t-_}),inputTokensPerSecond:_==null?void 0:EE({tokens:e.inputTokens,durationMs:_}),effectiveTotalTokensPerSecond:EE({tokens:hD(e.inputTokens,e.outputTokens),durationMs:t}),timeToFirstOutputMs:_,timeBetweenOutputChunksMs:y.length>0?cO(y):void 0};await xE({event:{callId:a,provider:o,modelId:s,finishReason:c.finishReason.unified,usage:e,content:p,responseId:g,performance:n},callbacks:d}),b.enqueue({type:`model-call-end`,finishReason:c.finishReason.unified,rawFinishReason:c.finishReason.raw,usage:e,providerMetadata:c.providerMetadata,performance:n});break}case`tool-call`:try{let a=await BE({toolCall:c,tools:e,repairToolCall:r,refineToolInput:i,instructions:t,messages:n});if(f.set(a.toolCallId,a),b.enqueue(a),p.push(a),a.invalid){b.enqueue({type:`tool-error`,toolCallId:a.toolCallId,toolName:a.toolName,input:a.input,error:ae(a.error),dynamic:!0,title:a.title,...a.toolMetadata==null?{}:{toolMetadata:a.toolMetadata}});break}}catch(e){b.enqueue({type:`error`,error:e})}break;case`tool-approval-request`:{let e=f.get(c.toolCallId);if(e==null){b.enqueue({type:`error`,error:new tw({toolCallId:c.toolCallId,approvalId:c.approvalId})});break}let t={type:`tool-approval-request`,approvalId:c.approvalId,toolCall:e};b.enqueue(t),p.push(t);break}case`tool-result`:{let e=c.toolName,t=f.get(c.toolCallId),n=c.isError?{type:`tool-error`,toolCallId:c.toolCallId,toolName:e,input:t?.input,providerExecuted:!0,error:c.result,dynamic:c.dynamic,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata},...t?.toolMetadata==null?{}:{toolMetadata:t.toolMetadata}}:{type:`tool-result`,toolCallId:c.toolCallId,toolName:e,input:t?.input,output:c.result,providerExecuted:!0,dynamic:c.dynamic,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata},...t?.toolMetadata==null?{}:{toolMetadata:t.toolMetadata}};b.enqueue(n),p.push(n);break}case`tool-input-start`:{let t=e?.[c.toolName];b.enqueue({...c,dynamic:c.dynamic??t?.type===`dynamic`,title:t?.title,...t?.metadata==null?{}:{toolMetadata:t.metadata}});break}case`stream-start`:b.enqueue({type:`model-call-start`,warnings:c.warnings});break;case`response-metadata`:g=c.id??g,b.enqueue({type:`model-call-response-metadata`,id:c.id,timestamp:c.timestamp,modelId:c.modelId});break;default:(c.type===`custom`||c.type===`source`)&&p.push(c),b.enqueue(c);break}}})}function sO(e){return e.type===`text-delta`&&e.delta.length>0||e.type===`reasoning-delta`&&e.delta.length>0||e.type===`tool-input-delta`&&e.delta.length>0||e.type===`file`||e.type===`reasoning-file`||e.type===`tool-call`}function cO(e){let t=[...e].sort((e,t)=>e-t),n=e.reduce((e,t)=>e+t,0);return{min:t[0],p10:lO(t,.1),median:lO(t,.5),avg:n/e.length,p90:lO(t,.9),max:t[t.length-1]}}function lO(e,t){return e[Math.ceil(t*e.length)-1]}function uO({content:e,partIndexes:t,id:n,type:r,textDelta:i,providerMetadata:a}){let o=t.get(n);o??(o=e.push({type:r,text:``,...a==null?{}:{providerMetadata:a}})-1,t.set(n,o));let s=e[o];i!=null&&(s.text+=i),a!=null&&(s.providerMetadata=a)}var dO=rd({prefix:`aitxt`,size:24}),fO=rd({prefix:`call`,size:24}),pO={file:!0,custom:!0,source:!0,"text-start":!0,"text-end":!0,"text-delta":!0,"reasoning-start":!0,"reasoning-end":!0,"reasoning-delta":!0,"reasoning-file":!0,"tool-input-start":!0,"tool-input-end":!0,"tool-input-delta":!0,"tool-approval-request":!0,"tool-approval-response":!0,"tool-call":!0,"tool-result":!0,"tool-error":!0,"tool-execution-end":!1,"model-call-start":!1,"model-call-response-metadata":!1,"model-call-end":!1,error:!1,raw:!1};function mO({model:e,tools:t,toolChoice:n,instructions:r,system:i,prompt:a,messages:o,allowSystemInMessages:s,maxRetries:c,abortSignal:l,timeout:u,headers:d,stopWhen:f=pD(1),experimental_sandbox:p,output:m,toolApproval:h,experimental_toolApprovalSecret:g,experimental_telemetry:_,telemetry:v=_,prepareStep:y,providerOptions:b,activeTools:x,toolOrder:S,experimental_repairToolCall:ee,experimental_refineToolInput:te,experimental_transform:ne,experimental_download:re,includeRawChunks:ie,onChunk:ae,onError:oe=({error:e})=>{console.error(e)},onFinish:se,onEnd:C=se,onAbort:ce,onStepEnd:le,onStepFinish:ue,onStart:de,experimental_onStart:fe,onStepStart:pe,experimental_onStepStart:me,onLanguageModelCallStart:he,experimental_onLanguageModelCallStart:ge,onLanguageModelCallEnd:_e,experimental_onLanguageModelCallEnd:ve,onToolExecutionStart:ye,onToolExecutionEnd:be,experimental_onToolCallStart:xe,experimental_onToolCallFinish:Se,runtimeContext:Ce={},toolsContext:we={},experimental_include:Te,include:Ee=Te,_internal:{now:De=bE,generateId:Oe=dO,generateCallId:ke=fO}={},...Ae}){let je=WT(u),Me=GT(u),Ne=KT(u),Pe=Me==null?void 0:new AbortController,Fe=Ne==null?void 0:new AbortController,Ie=de??fe,Le=pe??me,Re=he??ge,ze=_e??ve,Be=ye??xe,Ve=be??Se,He=le??ue;return new _O({model:hT(e),telemetry:v,headers:d,settings:Ae,maxRetries:c,abortSignal:vE(l,je,Pe?.signal,Fe?.signal),stepTimeoutMs:Me,stepAbortController:Pe,chunkTimeoutMs:Ne,chunkAbortController:Fe,instructions:r,system:i,prompt:a,messages:o,allowSystemInMessages:s,experimental_sandbox:p,tools:t,toolsContext:we,runtimeContext:Ce,toolChoice:n,transforms:mu(ne),activeTools:x,toolOrder:S,repairToolCall:ee,refineToolInput:te,stopConditions:mu(f),output:m,toolApproval:h,experimental_toolApprovalSecret:g,providerOptions:b,prepareStep:y,timeout:u,onChunk:ae,onError:oe,onEnd:C,onAbort:ce,onStepFinish:He,onStart:Ie,onStepStart:Le,onLanguageModelCallStart:Re,onLanguageModelCallEnd:ze,onToolExecutionStart:Be,onToolExecutionEnd:Ve,now:De,generateId:Oe,generateCallId:ke,download:re,include:{requestBody:Ee?.requestBody??!1,requestMessages:Ee?.requestMessages??!1,rawChunks:Ee?.rawChunks??ie??!1}})}async function hO(e){try{await e}catch{}}function gO(e){let t,n=``,r=``,i,a=``;function o({controller:e,partialOutput:n=void 0}){e.enqueue({part:{type:`text-delta`,id:t,text:r,providerMetadata:i},partialOutput:n}),r=``}return new TransformStream({async transform(s,c){if(s.type===`finish-step`&&r.length>0&&o({controller:c}),s.type!==`text-delta`&&s.type!==`text-start`&&s.type!==`text-end`){c.enqueue({part:s,partialOutput:void 0});return}if(t==null)t=s.id;else if(s.id!==t){c.enqueue({part:s,partialOutput:void 0});return}if(s.type===`text-start`){c.enqueue({part:s,partialOutput:void 0});return}if(s.type===`text-end`){r.length>0&&o({controller:c}),c.enqueue({part:s,partialOutput:void 0});return}n+=s.text,r+=s.text,i=s.providerMetadata??i;let l=await e.parsePartialOutput({text:n});if(l!==void 0){let e=typeof l.partial==`string`?l.partial:JSON.stringify(l.partial);e!==a&&(o({controller:c,partialOutput:l.partial}),a=e)}}})}var _O=class{constructor({model:e,telemetry:t,headers:n,settings:r,maxRetries:i,abortSignal:a,stepTimeoutMs:o,stepAbortController:s,chunkTimeoutMs:c,chunkAbortController:l,instructions:u,system:d,prompt:f,messages:p,allowSystemInMessages:m,experimental_sandbox:h,tools:g,toolChoice:_,transforms:v,activeTools:y,toolOrder:b,repairToolCall:x,refineToolInput:S,stopConditions:ee,output:te,toolApproval:ne,experimental_toolApprovalSecret:re,providerOptions:ie,prepareStep:oe,now:se,generateId:C,generateCallId:ce,timeout:le,onChunk:ue,onError:de,onEnd:fe,onAbort:pe,onStepFinish:me,onStart:he,onStepStart:ge,onLanguageModelCallStart:_e,onLanguageModelCallEnd:ve,onToolExecutionStart:ye,onToolExecutionEnd:be,runtimeContext:xe,toolsContext:Se,download:Ce,include:we}){this._totalUsage=new Tu,this._finishReason=new Tu,this._rawFinishReason=new Tu,this._steps=new Tu,this._initialResponseMessages=new Tu,this.outputSpecification=te,this.tools=g;let Te=fD({telemetry:t,includeRuntimeContext:t?.includeRuntimeContext,includeToolsContext:t?.includeToolsContext}),Ee,De=[],Oe,ke,Ae,je={},Me=[],Ne=[],Pe=[],Fe=[],Ie,Le=[],Re=new Map,ze=BD(),Be=BD(),Ve,He=new TransformStream({async transform(t,n){n.enqueue(t);let{part:r}=t;if(await ue?.({chunk:r}),r.type===`error`){let e=pE(r.error);gw.isInstance(e)&&(Ve=e),await de({error:e})}if((r.type===`custom`||r.type===`source`||r.type===`tool-call`||r.type===`tool-approval-request`||r.type===`tool-approval-response`||r.type===`tool-error`)&&De.push(r),r.type===`text-start`&&(ze[r.id]={type:`text`,text:``,providerMetadata:r.providerMetadata},De.push(ze[r.id])),r.type===`text-delta`){let e=ze[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`text part ${r.id} not found`},partialOutput:void 0});return}e.text+=r.text,e.providerMetadata=r.providerMetadata??e.providerMetadata}if(r.type===`text-end`){let e=ze[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`text part ${r.id} not found`},partialOutput:void 0});return}e.providerMetadata=r.providerMetadata??e.providerMetadata,delete ze[r.id]}if(r.type===`reasoning-start`&&(Be[r.id]={type:`reasoning`,text:``,providerMetadata:r.providerMetadata},De.push(Be[r.id])),r.type===`reasoning-delta`){let e=Be[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`reasoning part ${r.id} not found`},partialOutput:void 0});return}e.text+=r.text,e.providerMetadata=r.providerMetadata??e.providerMetadata}if(r.type===`reasoning-end`){let e=Be[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`reasoning part ${r.id} not found`},partialOutput:void 0});return}e.providerMetadata=r.providerMetadata??e.providerMetadata,delete Be[r.id]}if((r.type===`file`||r.type===`reasoning-file`)&&De.push({type:r.type,file:r.file,...r.providerMetadata==null?{}:{providerMetadata:r.providerMetadata}}),r.type===`tool-result`&&!r.preliminary&&De.push(r),r.type===`start-step`&&(De=[],Be=BD(),ze=BD(),je=r.request,Ne=r.warnings),r.type===`finish-step`){let t=await gD({content:De,tools:g}),n=new sD({callId:Xe,stepNumber:Pe.length,provider:e.provider,modelId:e.modelId,runtimeContext:xe,toolsContext:Se,content:De,finishReason:r.finishReason,rawFinishReason:r.rawFinishReason,usage:r.usage,performance:r.performance,warnings:Ne,request:{...je,messages:we.requestMessages?_T(Me):void 0},response:{...r.response,messages:_T(t)},providerMetadata:r.providerMetadata});await xE({event:n,callbacks:[me,Te.onStepEnd]}),Zw({warnings:Ne,provider:e.provider,model:e.modelId}),Pe.push(n),Ie=[...Le,...t],Ee.resolve()}r.type===`finish`&&(Ae=r.totalUsage,Oe=r.finishReason,ke=r.rawFinishReason)},async flush(e){try{if(Pe.length===0||Ve!=null){let e=a?.aborted?a.reason:Ve??new gw({message:`No output generated. Check the stream for errors.`});Ye.rejectResultPromises(e);return}let e=Oe??`other`,t=Ae??hE();Ye._finishReason.resolve(e),Ye._rawFinishReason.resolve(ke),Ye._totalUsage.resolve(t),Ye._steps.resolve(Pe);let n=Pe[Pe.length-1],r=Pe.flatMap(e=>e.content),i=Pe.flatMap(e=>e.files),o=Pe.flatMap(e=>e.sources),s=Pe.flatMap(e=>e.toolCalls),c=Pe.flatMap(e=>e.staticToolCalls),l=Pe.flatMap(e=>e.dynamicToolCalls),u=Pe.flatMap(e=>e.toolResults),d=Pe.flatMap(e=>e.staticToolResults),f=Pe.flatMap(e=>e.dynamicToolResults),p=Pe.flatMap(e=>e.warnings??[]);await xE({event:{callId:Xe,toolsContext:n.toolsContext,stepNumber:n.stepNumber,model:n.model,runtimeContext:n.runtimeContext,finishReason:n.finishReason,rawFinishReason:n.rawFinishReason,usage:t,totalUsage:t,content:r,text:n.text,reasoning:n.reasoning,reasoningText:n.reasoningText,files:i,sources:o,toolCalls:s,staticToolCalls:c,dynamicToolCalls:l,toolResults:u,staticToolResults:d,dynamicToolResults:f,responseMessages:[...Fe,...Pe.flatMap(e=>e.response.messages)],warnings:p,request:n.request,response:n.response,providerMetadata:n.providerMetadata,steps:Pe,finalStep:n},callbacks:[fe,Te.onEnd]})}catch(t){e.error(t)}}}),Ue=eO();this.addStream=Ue.addStream,this.closeStream=Ue.close;let We=Ue.stream.getReader(),Ge=new ReadableStream({async start(e){e.enqueue({type:`start`})},async pull(e){async function t(){await xE({event:{callId:Xe,steps:Pe,...a?.reason===void 0?{}:{reason:a.reason}},callbacks:[pe,Te.onAbort]}),e.enqueue({type:`abort`,...a?.reason===void 0?{}:{reason:ae(a.reason)}}),e.close()}try{let{done:n,value:r}=await We.read();if(n){e.close();return}if(a?.aborted){await t();return}e.enqueue(r)}catch(n){ad(n)&&a?.aborted?await t():e.error(n)}},cancel(e){return Ue.stream.cancel(e)}}),Ke=!0;Ge=Ge.pipeThrough(new TransformStream({async transform(e,t){Ke&&t.enqueue(e)}}));for(let e of v)Ge=Ge.pipeThrough(e({tools:g,stopStream(){Ue.terminate(),Ke=!1}}));this.baseStream=Ge.pipeThrough(gO(te??FE())).pipeThrough(He);let{maxRetries:qe}=wE({maxRetries:i,abortSignal:a}),Je=RT(r),Ye=this,Xe=ce();(async()=>{let t=await fE({instructions:u,system:d,prompt:f,messages:p,allowSystemInMessages:m}),r={callId:Xe,operationId:`ai.streamText`,provider:e.provider,modelId:e.modelId,instructions:t.instructions,messages:t.messages,tools:g,toolChoice:_,activeTools:y,toolOrder:b,maxOutputTokens:Je.maxOutputTokens,temperature:Je.temperature,topP:Je.topP,topK:Je.topK,presencePenalty:Je.presencePenalty,frequencyPenalty:Je.frequencyPenalty,stopSequences:Je.stopSequences,seed:Je.seed,reasoning:Je.reasoning,maxRetries:qe,timeout:le,headers:n,providerOptions:ie,output:te,runtimeContext:xe,toolsContext:Se},i=Te.startTracingChannelContext?.call(Te,{type:`streamText`,event:r,completion:Ye._totalUsage.promise.then(()=>void 0)}),v=e=>i?.run(e)??e();await xE({event:r,callbacks:[he,Te.onStart]});let ae=t.messages,ce=t.instructions,{approvedToolApprovals:ue,deniedToolApprovals:de}=DE({messages:ae});if(de.length>0||ue.length>0){let{approvedToolApprovals:e,deniedToolApprovals:t}=await OD({approvedToolApprovals:ue.filter(e=>!e.toolCall.providerExecuted),tools:g,toolApproval:ne,messages:ae,toolsContext:Se,runtimeContext:xe,toolApprovalSecret:re}),n=[...de.filter(e=>!e.toolCall.providerExecuted),...t],r=de.filter(e=>e.toolCall.providerExecuted),i,o=new ReadableStream({start(e){i=e}});Ye.addStream(o);try{for(let e of[...n,...r])i?.enqueue({type:`tool-output-denied`,toolCallId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});let t=[];if(await Promise.all(e.map(async e=>{let n=await kE({toolCall:e.toolCall,tools:g,callId:Xe,messages:ae,abortSignal:a,timeout:le,experimental_sandbox:h,toolsContext:Se,onToolExecutionStart:nd(ye,Te.onToolExecutionStart),onToolExecutionEnd:nd(be,Te.onToolExecutionEnd),executeToolInTelemetryContext:Te.executeTool,runInTracingChannelSpan:Te.runInTracingChannelSpan,onPreliminaryToolResult:e=>{i?.enqueue(e)}});n!=null&&(i?.enqueue(n.output),t.push(n.output))})),t.length>0||n.length>0){let e=[];for(let n of t)e.push({type:`tool-result`,toolCallId:n.toolCallId,toolName:n.toolName,output:await IT({toolCallId:n.toolCallId,input:n.input,tool:g?.[n.toolName],output:n.type===`tool-result`?n.output:n.error,errorMode:n.type===`tool-error`?`text`:`none`})});for(let t of n)e.push({type:`tool-result`,toolCallId:t.toolCall.toolCallId,toolName:t.toolCall.toolName,output:{type:`execution-denied`,reason:t.approvalResponse.reason}});Fe.push({role:`tool`,content:e})}}finally{i?.close()}}Ye._initialResponseMessages.resolve(Fe);async function fe({currentStep:r,usage:i}){let u=TE({abortController:s,label:`Step`,timeoutMs:o}),d;function f(){d!=null&&clearTimeout(d),d=TE({abortController:l,label:`Chunk`,timeoutMs:c})}function p(){d!=null&&(clearTimeout(d),d=void 0)}function ue(){u!=null&&clearTimeout(u)}a?.addEventListener(`abort`,ue),a?.addEventListener(`abort`,p);try{Ee=new Tu;let o=Te.startTracingChannelContext?.call(Te,{type:`step`,event:{callId:Xe,stepNumber:r},completion:Ee.promise}),s=e=>o?.run(e)??e(),c=Pe.flatMap(e=>e.response.messages),l=[...Fe,...c],u=Ie??[...ae,...Fe],d=await oe?.({model:e,steps:Pe,stepNumber:Pe.length,instructions:ce,initialInstructions:t.instructions,messages:u,initialMessages:ae,responseMessages:l,toolsContext:Se,runtimeContext:xe,experimental_sandbox:h}),de=d?.experimental_sandbox??h;xe=d?.runtimeContext??xe,Se=d?.toolsContext??Se;let pe=hT(d?.model??e),me=AE({tools:g,activeTools:d?.activeTools??y}),he=d?.toolOrder??b,De=await VT({tools:me,toolOrder:he,toolsContext:Se,experimental_sandbox:de}),Oe=zT({toolChoice:d?.toolChoice??_}),ke=d?.messages??u;Le=ke;let Ae=d?.instructions??d?.system??ce;ce=Ae;let je=yE(ie,d?.providerOptions),Ne=se(),{retry:ze}=wE({maxRetries:qe,abortSignal:a}),{stream:Be,request:Ve,response:He}=await s(()=>ze(async()=>aO({model:d?.model??e,tools:me,toolOrder:he,toolChoice:d?.toolChoice??_,instructions:Ae,messages:ke,allowSystemInMessages:m,repairToolCall:x,refineToolInput:S,abortSignal:a,headers:n,includeRawChunks:we.rawChunks,providerOptions:je,download:Ce,output:te,callId:Xe,executeLanguageModelCallInTelemetryContext:Te.executeLanguageModelCall,toolsContext:Se,experimental_sandbox:de,onLanguageModelCallStart:nd(_e,Te.onLanguageModelCallStart),onLanguageModelCallEnd:nd(ve,Te.onLanguageModelCallEnd),onStart:async({promptMessages:e})=>{await xE({event:{callId:Xe,provider:pe.provider,modelId:pe.modelId,stepNumber:Pe.length,instructions:Ae,messages:ke,tools:g,toolChoice:d?.toolChoice??_,activeTools:d?.activeTools??y,toolOrder:he,steps:[...Pe],providerOptions:je,runtimeContext:xe,toolsContext:Se,output:te,promptMessages:e,stepTools:De,stepToolChoice:Oe},callbacks:[ge,Te.onStepStart]})},_internal:{now:se},...Je}))),Ue=nO({stream:Be,tools:g,stepInputMessages:ke,abortSignal:a,runtimeContext:xe}),We=Te.runInTracingChannelSpan==null?void 0:e=>s(()=>Te.runInTracingChannelSpan(e)),Ge=tO({stream:Ue,tools:g,callId:Xe,messages:ke,abortSignal:a,timeout:le,experimental_sandbox:de,toolsContext:Se,toolApproval:ne,runtimeContext:xe,toolApprovalSecret:re,generateId:C,onToolExecutionStart:nd(ye,Te.onToolExecutionStart),onToolExecutionEnd:nd(be,Te.onToolExecutionEnd),executeToolInTelemetryContext:Te.executeTool,runInTracingChannelSpan:We}),Ke={...Ve,body:we.requestBody?Ve?.body:void 0,messages:we.requestMessages?_T(ke):void 0};Me=Ke.messages??[];let Ze=[],Qe=[],$e=[],et,tt=`other`,nt,rt=!1,it=!1,at=hE(),ot,st=!0,ct={responseTimeMs:0,effectiveOutputTokensPerSecond:0,outputTokensPerSecond:void 0,inputTokensPerSecond:void 0,effectiveTotalTokensPerSecond:0,timeToFirstOutputMs:void 0,timeBetweenOutputChunksMs:void 0},lt={},w={id:C(),timestamp:new Date,modelId:e.modelId};Ye.addStream(Ge.pipeThrough(new TransformStream({async transform(e,t){if(f(),e.type===`model-call-start`){et=e.warnings;return}st&&(st=!1,t.enqueue({type:`start-step`,request:Ke,warnings:et??[]}));let n=e.type;switch(pO[n]&&(it=!0),n){case`file`:case`custom`:case`source`:case`text-start`:case`text-end`:case`reasoning-start`:case`reasoning-end`:case`reasoning-delta`:case`reasoning-file`:case`tool-input-start`:case`tool-input-end`:case`tool-input-delta`:case`tool-approval-request`:t.enqueue(e);break;case`text-delta`:e.text.length>0&&t.enqueue(e);break;case`tool-call`:t.enqueue(e),Ze.push(e);break;case`tool-approval-response`:t.enqueue(e),$e.push(e);break;case`tool-result`:t.enqueue(e),e.preliminary||Qe.push(e);break;case`tool-error`:t.enqueue(e),Qe.push(e);break;case`tool-execution-end`:lt[e.toolCallId]=e.toolExecutionMs;break;case`model-call-response-metadata`:w={id:e.id??w.id,timestamp:e.timestamp??w.timestamp,modelId:e.modelId??w.modelId};break;case`model-call-end`:rt=!0,at=e.usage,tt=e.finishReason,nt=e.rawFinishReason,ot=e.providerMetadata,ct=e.performance;break;case`error`:rt=!0,t.enqueue(e),tt=`error`;break;case`raw`:we.rawChunks&&t.enqueue(e);break;default:throw Error(`Unknown chunk type: ${n}`)}},async flush(e){if(!rt&&!it){e.enqueue({type:`error`,error:new gw({message:`No output generated. The model stream ended without a finish chunk.`})}),ue(),p(),Ye.closeStream();return}let t=se()-Ne,n={type:`finish-step`,finishReason:tt,rawFinishReason:nt,usage:at,performance:{stepTimeMs:t,toolExecutionMs:lt,...ct},providerMetadata:ot,response:{...w,headers:He?.headers}};e.enqueue(n);let a=gE(i,at);await Ee.promise;let o=Ze.filter(e=>e.providerExecuted!==!0),s=Qe.filter(e=>e.providerExecuted!==!0),c=$e.filter(e=>e.approved===!1);for(let e of Ze){if(e.providerExecuted!==!0)continue;let t=g?.[e.toolName];t?.type===`provider`&&t.supportsDeferredResults&&(Qe.some(t=>(t.type===`tool-result`||t.type===`tool-error`)&&t.toolCallId===e.toolCallId)||Re.set(e.toolCallId,{toolName:e.toolName}))}for(let e of Qe)(e.type===`tool-result`||e.type===`tool-error`)&&Re.delete(e.toolCallId);if(ue(),p(),(o.length>0&&o.length===s.length+c.length||Re.size>0)&&!await mD({stopConditions:ee,steps:Pe}))try{await v(()=>fe({currentStep:r+1,usage:a}))}catch(t){e.enqueue({type:`error`,error:t}),Ye.closeStream()}else e.enqueue({type:`finish`,finishReason:tt,rawFinishReason:nt,totalUsage:a}),Ye.closeStream()}})))}catch(e){throw ue(),p(),e}}await v(()=>fe({currentStep:0,usage:hE()}))})().catch(async e=>{await Te.onError?.call(Te,{callId:Xe,error:e}),Ye._initialResponseMessages.reject(e),hO(Ye._initialResponseMessages.promise),Ye.addStream(new ReadableStream({start(t){t.enqueue({type:`error`,error:e}),t.close()}})),Ye.closeStream()})}get steps(){return this.consumeStream(),this._steps.promise}get finalStep(){return this.steps.then(e=>e.at(-1))}get content(){return this.steps.then(e=>e.flatMap(e=>e.content))}get warnings(){return this.steps.then(e=>e.flatMap(e=>e.warnings??[]))}get providerMetadata(){return this.finalStep.then(e=>e.providerMetadata)}get text(){return this.finalStep.then(e=>e.text)}get reasoningText(){return this.finalStep.then(e=>e.reasoningText)}get reasoning(){return this.finalStep.then(e=>KE(e.reasoning))}get sources(){return this.steps.then(e=>e.flatMap(e=>e.sources))}get files(){return this.steps.then(e=>e.flatMap(e=>e.files))}get toolCalls(){return this.steps.then(e=>e.flatMap(e=>e.toolCalls))}get staticToolCalls(){return this.steps.then(e=>e.flatMap(e=>e.staticToolCalls))}get dynamicToolCalls(){return this.steps.then(e=>e.flatMap(e=>e.dynamicToolCalls))}get toolResults(){return this.steps.then(e=>e.flatMap(e=>e.toolResults))}get staticToolResults(){return this.steps.then(e=>e.flatMap(e=>e.staticToolResults))}get dynamicToolResults(){return this.steps.then(e=>e.flatMap(e=>e.dynamicToolResults))}get usage(){return this.totalUsage}get request(){return this.finalStep.then(e=>e.request)}get response(){return this.finalStep.then(e=>e.response)}get responseMessages(){return Promise.all([this._initialResponseMessages.promise,this.steps]).then(([e,t])=>[...e,...t.flatMap(e=>e.response.messages)])}get totalUsage(){return this.consumeStream(),this._totalUsage.promise}get finishReason(){return this.consumeStream(),this._finishReason.promise}get rawFinishReason(){return this.consumeStream(),this._rawFinishReason.promise}teeStream(){let[e,t]=this.baseStream.tee();return this.baseStream=t,e}get textStream(){return XD(ND({stream:this.stream}))}get stream(){return XD(this.teeStream().pipeThrough(new TransformStream({transform({part:e},t){t.enqueue(e)}})))}get fullStream(){return this.stream}rejectResultPromises(e){this.rejectResultPromise({delayedPromise:this._finishReason,error:e}),this.rejectResultPromise({delayedPromise:this._rawFinishReason,error:e}),this.rejectResultPromise({delayedPromise:this._totalUsage,error:e}),this.rejectResultPromise({delayedPromise:this._steps,error:e}),this.rejectResultPromise({delayedPromise:this._initialResponseMessages,error:e})}rejectResultPromise({delayedPromise:e,error:t}){e.isPending()&&(e.reject(t),hO(e.promise))}async consumeStream(e){var t;try{await QD({stream:this.stream,onError:t=>{var n;this.rejectResultPromises(t),(n=e?.onError)==null||n.call(e,t)}})}catch(n){this.rejectResultPromises(n),(t=e?.onError)==null||t.call(e,n)}}get experimental_partialOutputStream(){return this.partialOutputStream}get partialOutputStream(){return XD(this.teeStream().pipeThrough(new TransformStream({transform({partialOutput:e},t){e!=null&&t.enqueue(e)}})))}get elementStream(){let e=this.outputSpecification?.createElementStreamTransform();if(e==null)throw new w({functionality:`element streams in ${this.outputSpecification?.name??`text`} mode`});return XD(this.teeStream().pipeThrough(e))}get output(){return this.finalStep.then(e=>(this.outputSpecification??FE()).parseCompleteOutput({text:e.text},{response:e.response,usage:e.usage,finishReason:e.finishReason}))}toUIMessageStream({originalMessages:e,generateMessageId:t,onEnd:n,onFinish:r,messageMetadata:i,sendReasoning:a,sendSources:o,sendStart:s,sendFinish:c,onError:l}={}){return XD(YD({stream:this.stream,tools:this.tools,originalMessages:e,generateMessageId:t,onEnd:n??r,messageMetadata:i,sendReasoning:a,sendSources:o,sendStart:s,sendFinish:c,onError:l}))}pipeUIMessageStreamToResponse(e,{originalMessages:t,generateMessageId:n,onEnd:r,onFinish:i,messageMetadata:a,sendReasoning:o,sendSources:s,sendFinish:c,sendStart:l,onError:u,...d}={}){LD({response:e,stream:this.toUIMessageStream({originalMessages:t,generateMessageId:n,onEnd:r??i,messageMetadata:a,sendReasoning:o,sendSources:s,sendFinish:c,sendStart:l,onError:u}),...d})}pipeTextStreamToResponse(e,t){MD({response:e,stream:this.textStream,...t})}toUIMessageStreamResponse({originalMessages:e,generateMessageId:t,onEnd:n,onFinish:r,messageMetadata:i,sendReasoning:a,sendSources:o,sendFinish:s,sendStart:c,onError:l,...u}={}){return ID({stream:this.toUIMessageStream({originalMessages:e,generateMessageId:t,onEnd:n??r,messageMetadata:i,sendReasoning:a,sendSources:o,sendFinish:s,sendStart:c,onError:l}),...u})}toTextStreamResponse(e){return AD({stream:this.textStream,...e})}};F(D(),JT.optional()),F(D(),D()),rd({prefix:`call`,size:24}),rd({prefix:`call`,size:24}),rd({prefix:`aiobj`,size:24}),rd({prefix:`aiobj`,size:24}),rd({prefix:`call`,size:24});var vO=()=>typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}`;async function yO(e,t,n,r){let i=o.getState(),a=vO();if(i.addTool(e,{id:a,name:t.name,label:t.label,mutates:t.mutates,status:t.mutates?`awaiting`:`running`,args:n}),t.mutates){if(!await i.requestConfirm({name:t.name,label:t.label,args:n}))return i.updateTool(e,a,{status:`declined`}),{ok:!1,declined:!0,message:`The user declined this action.`};i.updateTool(e,a,{status:`running`})}try{let t=await r();return i.updateTool(e,a,{status:`done`,result:t}),t}catch(t){let n=t.message||`request failed`;return i.updateTool(e,a,{status:`error`,error:n}),{ok:!1,error:n}}}function bO(e){return{list_queues:Qf({description:`List all queues with their job counts (waiting, active, completed, failed, delayed, dlq).`,inputSchema:M({}),execute:()=>yO(e,{name:`list_queues`,label:`List queues`,mutates:!1},{},()=>a.queuesSummary())}),queue_counts:Qf({description:`Get the exact job counts for one queue by state.`,inputSchema:M({queue:D().describe(`Queue name`)}),execute:({queue:t})=>yO(e,{name:`queue_counts`,label:`Counts: ${t}`,mutates:!1},{queue:t},()=>a.counts(t))}),list_jobs:Qf({description:`List jobs in a queue, optionally filtered by state (waiting, active, completed, failed, delayed).`,inputSchema:M({queue:D(),states:j(D()).optional().describe(`Job states to include`),limit:O().int().min(1).max(100).optional()}),execute:({queue:t,states:n,limit:r})=>yO(e,{name:`list_jobs`,label:`Jobs: ${t}`,mutates:!1},{queue:t,states:n,limit:r},()=>a.jobsList(t,n,r??20))}),get_job:Qf({description:`Fetch one job by id, including its state, data, attempts, timeline, parent/children.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`get_job`,label:`Job ${t.slice(0,8)}`,mutates:!1},{id:t},()=>a.job(t))}),dlq_stats:Qf({description:`Get dead-letter-queue statistics for a queue (count, reasons).`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`dlq_stats`,label:`DLQ stats: ${t}`,mutates:!1},{queue:t},()=>a.dlqStats(t))}),list_dlq:Qf({description:`List dead-letter-queue entries for a queue (failed jobs that exhausted retries).`,inputSchema:M({queue:D(),limit:O().int().min(1).max(100).optional()}),execute:({queue:t,limit:n})=>yO(e,{name:`list_dlq`,label:`DLQ: ${t}`,mutates:!1},{queue:t,limit:n},()=>a.dlq(t,n??25))}),server_health:Qf({description:`Get overall server health and status.`,inputSchema:M({}),execute:()=>yO(e,{name:`server_health`,label:`Health`,mutates:!1},{},()=>a.health())}),server_stats:Qf({description:`Get aggregate server stats (totals across queues, throughput).`,inputSchema:M({}),execute:()=>yO(e,{name:`server_stats`,label:`Stats`,mutates:!1},{},()=>a.stats())}),list_workers:Qf({description:`List connected workers and their status.`,inputSchema:M({}),execute:()=>yO(e,{name:`list_workers`,label:`Workers`,mutates:!1},{},()=>a.workers())}),list_crons:Qf({description:`List scheduled cron jobs.`,inputSchema:M({}),execute:()=>yO(e,{name:`list_crons`,label:`Crons`,mutates:!1},{},()=>a.crons())}),retry_job:Qf({description:`Move a failed/completed job back to waiting so it runs again. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`retry_job`,label:`Retry job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>a.retryJob(t))}),remove_job:Qf({description:`Permanently remove a job by id. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`remove_job`,label:`Remove job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>a.cancelJob(t))}),promote_job:Qf({description:`Promote a delayed job so it runs now. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`promote_job`,label:`Promote job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>a.promoteJob(t))}),pause_queue:Qf({description:`Pause a queue (stops processing new jobs). Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`pause_queue`,label:`Pause ${t}`,mutates:!0},{queue:t},()=>a.pause(t))}),resume_queue:Qf({description:`Resume a paused queue. Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`resume_queue`,label:`Resume ${t}`,mutates:!0},{queue:t},()=>a.resume(t))}),retry_dlq:Qf({description:`Retry dead-letter-queue jobs for a queue: one by jobId, or all if jobId is omitted. Mutating: needs user confirmation.`,inputSchema:M({queue:D(),jobId:D().optional()}),execute:({queue:t,jobId:n})=>yO(e,{name:`retry_dlq`,label:n?`Retry DLQ job in ${t}`:`Retry ALL DLQ in ${t}`,mutates:!0},{queue:t,jobId:n},()=>a.retryDlq(t,n))}),purge_dlq:Qf({description:`Permanently delete all dead-letter-queue entries for a queue. Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`purge_dlq`,label:`Purge DLQ: ${t}`,mutates:!0},{queue:t},()=>a.purgeDlq(t))})}}var xO=`You are the bunqueue Copilot, an AI assistant embedded in a dashboard that operates a bunqueue job-queue server.
|
|
146
|
+
`)}})}},FD={"content-type":`text/event-stream`,"cache-control":`no-cache`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`};function ID({status:e,statusText:t,headers:n,stream:r,consumeSseStream:i}){let a=r.pipeThrough(new PD);if(i){let[e,t]=a.tee();a=e,i({stream:t})}return new Response(a.pipeThrough(new TextEncoderStream),{status:e,statusText:t,headers:kD(n,FD)})}function LD({response:e,status:t,statusText:n,headers:r,stream:i,consumeSseStream:a}){let o=i.pipeThrough(new PD);if(a){let[e,t]=o.tee();o=e,a({stream:t})}jD({response:e,status:t,statusText:n,headers:Object.fromEntries(kD(r,FD).entries()),stream:o.pipeThrough(new TextEncoderStream)})}function RD({originalMessages:e,responseMessageId:t}){if(e==null)return;let n=e[e.length-1];return n?.role===`assistant`?n.id:typeof t==`function`?t():t}F(D(),JT.optional());function zD(e){return e.type.startsWith(`data-`)}function BD(){return Object.create(null)}function VD(e){return e.type.startsWith(`tool-`)}function HD(e){return e.type===`dynamic-tool`}function UD(e){return VD(e)||HD(e)}function WD(e){return e.type.split(`-`).slice(1).join(`-`)}function GD({lastMessage:e,messageId:t}){return{message:e?.role===`assistant`?e:{id:t,metadata:void 0,role:`assistant`,parts:[]},activeTextParts:BD(),activeReasoningParts:BD(),partialToolCalls:BD()}}function KD({stream:e,messageMetadataSchema:t,dataPartSchemas:n,runUpdateMessageJob:r,onError:i,onToolCall:a,onData:o}){return e.pipeThrough(new TransformStream({async transform(e,s){await r(async({state:r,write:c})=>{function l(e){let t=r.message.parts.filter(UD).find(t=>t.toolCallId===e);if(t==null)throw new Mw({chunkType:`tool-invocation`,chunkId:e,message:`No tool invocation found for tool call ID "${e}".`});return t}function u(e){let t=r.message.parts.filter(UD).find(t=>t.approval?.id===e);if(t==null)throw new Mw({chunkType:`tool-approval-response`,chunkId:e,message:`No tool invocation found for approval ID "${e}".`});return t}function d(e){let t=r.message.parts.find(t=>VD(t)&&t.toolCallId===e.toolCallId),n=e,i=t;if(t!=null){t.state=e.state,i.input=n.input,i.output=n.output,i.errorText=n.errorText,i.rawInput=n.rawInput,i.preliminary=n.preliminary,e.title!==void 0&&(i.title=e.title),e.toolMetadata!==void 0&&(i.toolMetadata=e.toolMetadata),i.providerExecuted=n.providerExecuted??t.providerExecuted;let r=n.providerMetadata;if(r!=null)if(e.state===`output-available`||e.state===`output-error`){let e=t;e.resultProviderMetadata=r}else t.callProviderMetadata=r}else r.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},input:n.input,output:n.output,rawInput:n.rawInput,errorText:n.errorText,providerExecuted:n.providerExecuted,preliminary:n.preliminary,...n.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:n.providerMetadata}:{},...n.providerMetadata!=null&&!(e.state===`output-available`||e.state===`output-error`)?{callProviderMetadata:n.providerMetadata}:{}})}function f(e){let t=r.message.parts.find(t=>t.type===`dynamic-tool`&&t.toolCallId===e.toolCallId),n=e,i=t;if(t!=null){t.state=e.state,i.toolName=e.toolName,i.input=n.input,i.output=n.output,i.errorText=n.errorText,i.rawInput=n.rawInput??i.rawInput,i.preliminary=n.preliminary,e.title!==void 0&&(i.title=e.title),e.toolMetadata!==void 0&&(i.toolMetadata=e.toolMetadata),i.providerExecuted=n.providerExecuted??t.providerExecuted;let r=n.providerMetadata;if(r!=null)if(e.state===`output-available`||e.state===`output-error`){let e=t;e.resultProviderMetadata=r}else t.callProviderMetadata=r}else r.message.parts.push({type:`dynamic-tool`,toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:n.input,output:n.output,errorText:n.errorText,preliminary:n.preliminary,providerExecuted:n.providerExecuted,title:e.title,...e.toolMetadata===void 0?{}:{toolMetadata:e.toolMetadata},...n.providerMetadata!=null&&(e.state===`output-available`||e.state===`output-error`)?{resultProviderMetadata:n.providerMetadata}:{},...n.providerMetadata!=null&&!(e.state===`output-available`||e.state===`output-error`)?{callProviderMetadata:n.providerMetadata}:{}})}async function p(e){if(e!=null){let n=r.message.metadata==null?e:yE(r.message.metadata,e);t!=null&&await Y({value:n,schema:t,context:{field:`message.metadata`,entityId:r.message.id}}),r.message.metadata=n}}switch(e.type){case`text-start`:{let t={type:`text`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeTextParts[e.id]=t,r.message.parts.push(t),c();break}case`text-delta`:{let t=r.activeTextParts[e.id];if(t==null)throw new Mw({chunkType:`text-delta`,chunkId:e.id,message:`Received text-delta for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`text-end`:{let t=r.activeTextParts[e.id];if(t==null)throw new Mw({chunkType:`text-end`,chunkId:e.id,message:`Received text-end for missing text part with ID "${e.id}". Ensure a "text-start" chunk is sent before any "text-end" chunks.`});t.state=`done`,t.providerMetadata=e.providerMetadata??t.providerMetadata,delete r.activeTextParts[e.id],c();break}case`custom`:{let t={type:`custom`,kind:e.kind,providerMetadata:e.providerMetadata};r.message.parts.push(t),c();break}case`reasoning-start`:{let t={type:`reasoning`,text:``,providerMetadata:e.providerMetadata,state:`streaming`};r.activeReasoningParts[e.id]=t,r.message.parts.push(t),c();break}case`reasoning-delta`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new Mw({chunkType:`reasoning-delta`,chunkId:e.id,message:`Received reasoning-delta for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-delta" chunks.`});t.text+=e.delta,t.providerMetadata=e.providerMetadata??t.providerMetadata,c();break}case`reasoning-end`:{let t=r.activeReasoningParts[e.id];if(t==null)throw new Mw({chunkType:`reasoning-end`,chunkId:e.id,message:`Received reasoning-end for missing reasoning part with ID "${e.id}". Ensure a "reasoning-start" chunk is sent before any "reasoning-end" chunks.`});t.providerMetadata=e.providerMetadata??t.providerMetadata,t.state=`done`,delete r.activeReasoningParts[e.id],c();break}case`file`:case`reasoning-file`:r.message.parts.push({type:e.type,mediaType:e.mediaType,url:e.url,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}),c();break;case`source-url`:r.message.parts.push({type:`source-url`,sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),c();break;case`source-document`:r.message.parts.push({type:`source-document`,sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),c();break;case`tool-input-start`:{let t=r.message.parts.filter(VD);r.partialToolCalls[e.toolCallId]={text:``,toolName:e.toolName,index:t.length,dynamic:e.dynamic,title:e.title,toolMetadata:e.toolMetadata},e.dynamic?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-streaming`,input:void 0,providerExecuted:e.providerExecuted,title:e.title,toolMetadata:e.toolMetadata,providerMetadata:e.providerMetadata}),c();break}case`tool-input-delta`:{let t=r.partialToolCalls[e.toolCallId];if(t==null)throw new Mw({chunkType:`tool-input-delta`,chunkId:e.toolCallId,message:`Received tool-input-delta for missing tool call with ID "${e.toolCallId}". Ensure a "tool-input-start" chunk is sent before any "tool-input-delta" chunks.`});t.text+=e.inputTextDelta;let{value:n}=await PE(t.text);t.dynamic?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:t.toolName,state:`input-streaming`,input:n,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-input-available`:e.dynamic?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`input-available`,input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:e.title,toolMetadata:e.toolMetadata}),c(),a&&!e.providerExecuted&&await a({toolCall:e});break;case`tool-input-error`:{let t=r.message.parts.filter(UD).find(t=>t.toolCallId===e.toolCallId);(t==null?e.dynamic:t.type===`dynamic-tool`)?f({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}):d({toolCallId:e.toolCallId,toolName:e.toolName,state:`output-error`,input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,toolMetadata:e.toolMetadata}),c();break}case`tool-approval-request`:{let t=l(e.toolCallId);t.state=`approval-requested`,t.approval={id:e.approvalId,...e.isAutomatic===!0?{isAutomatic:!0}:{},...e.signature==null?{}:{signature:e.signature}},c();break}case`tool-approval-response`:{let t=u(e.approvalId),n=t.approval==null?{id:e.approvalId}:t.approval;t.state=`approval-responded`,t.approval={id:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason},...n.isAutomatic===!0?{isAutomatic:!0}:{}},e.providerExecuted!=null&&(t.providerExecuted=e.providerExecuted),e.providerMetadata!=null&&(t.callProviderMetadata=e.providerMetadata),c();break}case`tool-output-denied`:{let t=l(e.toolCallId);t.state=`output-denied`,c();break}case`tool-output-available`:{let t=l(e.toolCallId);t.type===`dynamic-tool`?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-available`,input:t.input,output:e.output,preliminary:e.preliminary,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:WD(t),state:`output-available`,input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`tool-output-error`:{let t=l(e.toolCallId);t.type===`dynamic-tool`?f({toolCallId:e.toolCallId,toolName:t.toolName,state:`output-error`,input:t.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}):d({toolCallId:e.toolCallId,toolName:WD(t),state:`output-error`,input:t.input,rawInput:t.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,title:t.title,toolMetadata:t.toolMetadata}),c();break}case`start-step`:r.message.parts.push({type:`step-start`});break;case`finish-step`:r.activeTextParts=BD(),r.activeReasoningParts=BD();break;case`start`:e.messageId!=null&&(r.message.id=e.messageId),await p(e.messageMetadata),(e.messageId!=null||e.messageMetadata!=null)&&c();break;case`finish`:e.finishReason!=null&&(r.finishReason=e.finishReason),await p(e.messageMetadata),e.messageMetadata!=null&&c();break;case`message-metadata`:await p(e.messageMetadata),e.messageMetadata!=null&&c();break;case`error`:i?.(Error(e.errorText));break;default:if(zD(e)){if(n?.[e.type]!=null){let t=r.message.parts.findIndex(t=>`id`in t&&`data`in t&&t.id===e.id&&t.type===e.type),i=t>=0?t:r.message.parts.length;await Y({value:e.data,schema:n[e.type],context:{field:`message.parts[${i}].data`,entityName:e.type,entityId:e.id}})}let t=e;if(t.transient){o?.(t);break}let i=t.id==null?void 0:r.message.parts.find(e=>t.type===e.type&&t.id===e.id);i==null?r.message.parts.push(t):i.data=t.data,o?.(t),c()}}s.enqueue(e)})}}))}function qD({messageId:e,originalMessages:t=[],onStepEnd:n,onStepFinish:r,onEnd:i,onFinish:a,onError:o,stream:s}){let c=t?.[t.length-1];c?.role===`assistant`?e=c.id:c=void 0;let l=!1,u=s.pipeThrough(new TransformStream({transform(t,n){if(t.type===`start`){let n=t;n.messageId==null&&e!=null&&(n.messageId=e)}t.type===`abort`&&(l=!0),n.enqueue(t)}})),d=n??r,f=i??a;if(f==null&&d==null)return u;let p=GD({lastMessage:c?structuredClone(c):void 0,messageId:e??``}),m=async e=>{await e({state:p,write:()=>{}})},h=!1,g=async()=>{if(h||!f)return;h=!0;let e=p.message.id===c?.id;await f({isAborted:l,isContinuation:e,responseMessage:p.message,messages:[...e?t.slice(0,-1):t,p.message],finishReason:p.finishReason})},_=async()=>{if(!d)return;let e=p.message.id===c?.id;try{await d({isContinuation:e,responseMessage:structuredClone(p.message),messages:[...e?t.slice(0,-1):t,structuredClone(p.message)]})}catch(e){o(e)}};return KD({stream:u,runUpdateMessageJob:m,onError:o}).pipeThrough(new TransformStream({async transform(e,t){e.type===`finish-step`&&await _(),t.enqueue(e)},async cancel(){await g()},async flush(){await g()}}))}function JD(e,{tools:t,sendReasoning:n=!0,sendSources:r=!1,sendStart:i=!0,sendFinish:a=!0,onError:o=()=>`An error occurred.`,messageMetadata:s,responseMessageId:c}={}){let l=e=>{let n=t?.[e.toolName];return n==null?e.dynamic:n?.type===`dynamic`?!0:void 0},u=e.type;switch(u){case`text-start`:return{type:`text-start`,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`text-delta`:return{type:`text-delta`,id:e.id,delta:e.text,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`text-end`:return{type:`text-end`,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`reasoning-start`:case`reasoning-end`:return n?{type:u,id:e.id,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0;case`reasoning-delta`:return n?{type:`reasoning-delta`,id:e.id,delta:e.text,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0;case`file`:case`reasoning-file`:return u===`reasoning-file`&&!n?void 0:{type:e.type,mediaType:e.file.mediaType,url:`data:${e.file.mediaType};base64,${e.file.base64}`,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`source`:return r?e.sourceType===`url`?{type:`source-url`,sourceId:e.id,url:e.url,title:e.title,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:e.sourceType===`document`?{type:`source-document`,sourceId:e.id,mediaType:e.mediaType,title:e.title,filename:e.filename,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}}:void 0:void 0;case`custom`:return{type:`custom`,kind:e.kind,...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata}};case`tool-input-start`:{let t=l(e);return{type:`tool-input-start`,toolCallId:e.id,toolName:e.toolName,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},...e.title==null?{}:{title:e.title}}}case`tool-input-delta`:return{type:`tool-input-delta`,toolCallId:e.id,inputTextDelta:e.delta};case`tool-call`:{let t=l(e);return e.invalid?{type:`tool-input-error`,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},errorText:o(e.error),...e.title==null?{}:{title:e.title}}:{type:`tool-input-available`,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t},...e.title==null?{}:{title:e.title}}}case`tool-approval-request`:return{type:`tool-approval-request`,approvalId:e.approvalId,toolCallId:e.toolCall.toolCallId,...e.isAutomatic==null?{}:{isAutomatic:e.isAutomatic},...e.signature==null?{}:{signature:e.signature}};case`tool-approval-response`:return{type:`tool-approval-response`,approvalId:e.approvalId,approved:e.approved,...e.reason==null?{}:{reason:e.reason},...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted}};case`tool-result`:{let t=l(e);return{type:`tool-output-available`,toolCallId:e.toolCallId,output:e.output===void 0?null:e.output,...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...e.preliminary==null?{}:{preliminary:e.preliminary},...t==null?{}:{dynamic:t}}}case`tool-error`:{let t=l(e);return{type:`tool-output-error`,toolCallId:e.toolCallId,errorText:e.providerExecuted?typeof e.error==`string`?e.error:JSON.stringify(e.error):o(e.error),...e.providerExecuted==null?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata==null?{}:{providerMetadata:e.providerMetadata},...e.toolMetadata==null?{}:{toolMetadata:e.toolMetadata},...t==null?{}:{dynamic:t}}}case`tool-output-denied`:return{type:`tool-output-denied`,toolCallId:e.toolCallId};case`error`:return{type:`error`,errorText:o(e.error)};case`start-step`:return{type:`start-step`};case`finish-step`:return{type:`finish-step`};case`start`:return i?{type:`start`,...s==null?{}:{messageMetadata:s},...c==null?{}:{messageId:c}}:void 0;case`finish`:return a?{type:`finish`,finishReason:e.finishReason,...s==null?{}:{messageMetadata:s}}:void 0;case`abort`:return e;case`tool-input-end`:case`raw`:return;default:throw Error(`Unknown chunk type: ${u}`)}}function YD({stream:e,tools:t,sendReasoning:n=!0,sendSources:r=!1,sendStart:i=!0,sendFinish:a=!0,onError:o=()=>`An error occurred.`,messageMetadata:s,originalMessages:c,generateMessageId:l,onEnd:u,onFinish:d}){let f=l==null?void 0:RD({originalMessages:c,responseMessageId:l});return qD({stream:e.pipeThrough(new TransformStream({transform:async(e,c)=>{let l=s?.({part:e}),u=JD(e,{tools:t,sendReasoning:n,sendSources:r,sendStart:i,sendFinish:a,onError:o,messageMetadata:l,responseMessageId:f});u!=null&&c.enqueue(u),l!=null&&e.type!==`start`&&e.type!==`finish`&&c.enqueue({type:`message-metadata`,messageMetadata:l})}})),messageId:f??l?.(),originalMessages:c,onEnd:u??d,onError:o})}function XD(e){return ZD(e.pipeThrough(new TransformStream))}function ZD(e){return e[Symbol.asyncIterator]=function(){let e=this.getReader(),t=!1;async function n(n){if(!t){t=!0;try{n&&await e.cancel?.call(e)}finally{try{e.releaseLock()}catch{}}}}return{async next(){if(t)return{done:!0,value:void 0};let{done:r,value:i}=await e.read();return r?(await n(!0),{done:!0,value:void 0}):{done:!1,value:i}},async return(){return await n(!0),{done:!0,value:void 0}},async throw(e){throw await n(!0),e}}},e}async function QD({stream:e,onError:t}){let n=e.getReader();try{for(;;){let{done:e}=await n.read();if(e)break}}catch(e){t?.(e)}finally{n.releaseLock()}}function $D(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function eO(){let e=[],t=null,n=!1,r=$D(),i=()=>{n=!0,r.resolve(),e.forEach(e=>e.cancel()),e=[],t?.close()},a=async()=>{if(n&&e.length===0){t?.close();return}if(e.length===0)return r=$D(),await r.promise,await a();try{let{value:r,done:i}=await e[0].read();i?(e.shift(),e.length===0&&n?t?.close():await a()):t?.enqueue(r)}catch(n){t?.error(n),e.shift(),i()}};return{stream:new ReadableStream({start(e){t=e},pull:a,async cancel(){for(let t of e)await t.cancel();e=[],n=!0}}),addStream:t=>{if(n)throw Error(`Cannot add inner stream: outer stream is closed`);e.push(t.getReader()),r.resolve()},close:()=>{n=!0,r.resolve(),e.length===0&&t?.close()},terminate:i}}function tO({stream:e,tools:t,callId:n,messages:r,abortSignal:i,timeout:a,experimental_sandbox:o,toolsContext:s,toolApproval:c,runtimeContext:l,toolApprovalSecret:u,generateId:d,onToolExecutionStart:f,onToolExecutionEnd:p,executeToolInTelemetryContext:m,runInTracingChannelSpan:h}){let g=[];return e.pipeThrough(new TransformStream({async transform(e,_){switch(_.enqueue(e),e.type){case`tool-call`:{if(e.invalid)return;let n=t?.[e.toolName];if(n==null)return;let i=await qE({tools:t,toolCall:e,toolApproval:c,messages:r,toolsContext:s,runtimeContext:l});if(i.type===`not-applicable`){n.execute!=null&&e.providerExecuted!==!0&&g.push(e);return}let a=d(),o=await DD({secret:u,approvalId:a,toolCallId:e.toolCallId,toolName:e.toolName,input:e.input});switch(i.type){case`user-approval`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,...o==null?{}:{signature:o}});return;case`denied`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,isAutomatic:!0,...o==null?{}:{signature:o}}),_.enqueue({type:`tool-approval-response`,approvalId:a,approved:!1,toolCall:e,reason:i.reason,providerExecuted:e.providerExecuted});return;case`approved`:_.enqueue({type:`tool-approval-request`,approvalId:a,toolCall:e,isAutomatic:!0,...o==null?{}:{signature:o}}),_.enqueue({type:`tool-approval-response`,approvalId:a,approved:!0,toolCall:e,reason:i.reason,providerExecuted:e.providerExecuted});break}n.execute!=null&&e.providerExecuted!==!0&&g.push(e);return}case`model-call-end`:await Promise.all(g.map(async e=>{try{let c=await kE({toolCall:e,tools:t,callId:n,messages:r,abortSignal:i,timeout:a,experimental_sandbox:o,toolsContext:s,onToolExecutionStart:f,onToolExecutionEnd:p,executeToolInTelemetryContext:m,runInTracingChannelSpan:h,onPreliminaryToolResult:e=>{_.enqueue(e)}});c!=null&&(_.enqueue({type:`tool-execution-end`,toolCallId:c.output.toolCallId,toolExecutionMs:c.toolExecutionMs}),_.enqueue(c.output))}catch(e){_.enqueue({type:`error`,error:e})}}));return}}}))}function nO({stream:e,tools:t,stepInputMessages:n,abortSignal:r,runtimeContext:i}){if(t==null)return e;let a={};return e.pipeThrough(new TransformStream({async transform(e,o){switch(o.enqueue(e),e.type){case`tool-input-start`:{a[e.id]=e.toolName;let o=t?.[e.toolName];o?.onInputStart!=null&&await o.onInputStart({toolCallId:e.id,messages:n,abortSignal:r,context:i});break}case`tool-input-delta`:{let o=a[e.id],s=t?.[o];s?.onInputDelta!=null&&await s.onInputDelta({inputTextDelta:e.delta,toolCallId:e.id,messages:n,abortSignal:r,context:i});break}case`tool-call`:{let o=a[e.toolCallId],s=t?.[o];delete a[e.toolCallId],s?.onInputAvailable!=null&&await s.onInputAvailable({input:e.input,toolCallId:e.toolCallId,messages:n,abortSignal:r,context:i})}}}}))}var rO=rd({prefix:`aitxt`,size:24}),iO=rd({prefix:`call`,size:24});async function aO({model:e,tools:t,toolOrder:n,output:r,toolChoice:i,prompt:a,system:o,instructions:s,messages:c,allowSystemInMessages:l,download:u,abortSignal:d,headers:f,includeRawChunks:p,providerOptions:m,repairToolCall:h,refineToolInput:g,executeLanguageModelCallInTelemetryContext:_=async({execute:e})=>await e(),callId:v,toolsContext:y,experimental_sandbox:b,_internal:{generateId:x=rO,generateCallId:S=iO,now:ee=bE}={},onStart:te,onLanguageModelCallStart:ne,onLanguageModelCallEnd:re,...ie}){let ae=hT(e),oe=v??S(),se=await fE({instructions:s,system:o,prompt:a,messages:c,allowSystemInMessages:l}),C=await DT({prompt:{instructions:se.instructions,messages:se.messages},supportedUrls:await ae.supportedUrls,download:u,provider:ae.provider.split(`.`)[0]}),ce=await VT({tools:t,toolOrder:n,toolsContext:y,experimental_sandbox:b}),le=zT({toolChoice:i});await xE({event:{promptMessages:C},callbacks:te});let ue={callId:oe,provider:ae.provider,modelId:ae.modelId,instructions:se.instructions,messages:se.messages,tools:ce,...ie};await xE({event:ue,callbacks:ne});let de=ee(),{stream:fe,response:pe,request:me}=await _({...ue,execute:async()=>await ae.doStream({...ie,tools:ce,toolChoice:le,responseFormat:await r?.responseFormat,prompt:C,providerOptions:m,abortSignal:d,headers:f,includeRawChunks:p})});return{stream:XD(fe.pipeThrough(oO({tools:t,instructions:se.instructions,messages:se.messages,repairToolCall:h,refineToolInput:g,callId:oe,provider:ae.provider,modelId:ae.modelId,generateId:x,now:ee,callStartTimestampMs:de,onLanguageModelCallEnd:re}))),response:pe,request:me}}function oO({tools:e,instructions:t,messages:n,repairToolCall:r,refineToolInput:i,callId:a,provider:o,modelId:s,generateId:c,now:l,callStartTimestampMs:u,onLanguageModelCallEnd:d}){let f=new Map,p=[],m=new Map,h=new Map,g=c(),_,v,y=[];return new TransformStream({async transform(c,b){if(sO(c)){let e=l();_==null?_=e-u:v!=null&&y.push(e-v),v=e}switch(c.type){case`text-start`:uO({content:p,partIndexes:m,id:c.id,type:`text`,providerMetadata:c.providerMetadata}),b.enqueue(c);break;case`text-delta`:uO({content:p,partIndexes:m,id:c.id,type:`text`,textDelta:c.delta,providerMetadata:c.providerMetadata}),b.enqueue({type:`text-delta`,id:c.id,text:c.delta,providerMetadata:c.providerMetadata});break;case`text-end`:uO({content:p,partIndexes:m,id:c.id,type:`text`,providerMetadata:c.providerMetadata}),m.delete(c.id),b.enqueue(c);break;case`reasoning-start`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,providerMetadata:c.providerMetadata}),b.enqueue(c);break;case`reasoning-delta`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,textDelta:c.delta,providerMetadata:c.providerMetadata}),b.enqueue({type:`reasoning-delta`,id:c.id,text:c.delta,providerMetadata:c.providerMetadata});break;case`reasoning-end`:uO({content:p,partIndexes:h,id:c.id,type:`reasoning`,providerMetadata:c.providerMetadata}),h.delete(c.id),b.enqueue(c);break;case`file`:case`reasoning-file`:{let e=new ME({data:c.data.type===`data`?c.data.data:c.data.url.toString(),mediaType:c.mediaType});p.push({type:c.type,file:e,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata}}),b.enqueue({type:c.type,file:e,providerMetadata:c.providerMetadata});break}case`finish`:{let e=mE(c.usage),t=l()-u,n={responseTimeMs:t,effectiveOutputTokensPerSecond:EE({tokens:e.outputTokens,durationMs:t}),outputTokensPerSecond:_==null?void 0:EE({tokens:e.outputTokens,durationMs:t-_}),inputTokensPerSecond:_==null?void 0:EE({tokens:e.inputTokens,durationMs:_}),effectiveTotalTokensPerSecond:EE({tokens:hD(e.inputTokens,e.outputTokens),durationMs:t}),timeToFirstOutputMs:_,timeBetweenOutputChunksMs:y.length>0?cO(y):void 0};await xE({event:{callId:a,provider:o,modelId:s,finishReason:c.finishReason.unified,usage:e,content:p,responseId:g,performance:n},callbacks:d}),b.enqueue({type:`model-call-end`,finishReason:c.finishReason.unified,rawFinishReason:c.finishReason.raw,usage:e,providerMetadata:c.providerMetadata,performance:n});break}case`tool-call`:try{let a=await BE({toolCall:c,tools:e,repairToolCall:r,refineToolInput:i,instructions:t,messages:n});if(f.set(a.toolCallId,a),b.enqueue(a),p.push(a),a.invalid){b.enqueue({type:`tool-error`,toolCallId:a.toolCallId,toolName:a.toolName,input:a.input,error:ae(a.error),dynamic:!0,title:a.title,...a.toolMetadata==null?{}:{toolMetadata:a.toolMetadata}});break}}catch(e){b.enqueue({type:`error`,error:e})}break;case`tool-approval-request`:{let e=f.get(c.toolCallId);if(e==null){b.enqueue({type:`error`,error:new tw({toolCallId:c.toolCallId,approvalId:c.approvalId})});break}let t={type:`tool-approval-request`,approvalId:c.approvalId,toolCall:e};b.enqueue(t),p.push(t);break}case`tool-result`:{let e=c.toolName,t=f.get(c.toolCallId),n=c.isError?{type:`tool-error`,toolCallId:c.toolCallId,toolName:e,input:t?.input,providerExecuted:!0,error:c.result,dynamic:c.dynamic,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata},...t?.toolMetadata==null?{}:{toolMetadata:t.toolMetadata}}:{type:`tool-result`,toolCallId:c.toolCallId,toolName:e,input:t?.input,output:c.result,providerExecuted:!0,dynamic:c.dynamic,...c.providerMetadata==null?{}:{providerMetadata:c.providerMetadata},...t?.toolMetadata==null?{}:{toolMetadata:t.toolMetadata}};b.enqueue(n),p.push(n);break}case`tool-input-start`:{let t=e?.[c.toolName];b.enqueue({...c,dynamic:c.dynamic??t?.type===`dynamic`,title:t?.title,...t?.metadata==null?{}:{toolMetadata:t.metadata}});break}case`stream-start`:b.enqueue({type:`model-call-start`,warnings:c.warnings});break;case`response-metadata`:g=c.id??g,b.enqueue({type:`model-call-response-metadata`,id:c.id,timestamp:c.timestamp,modelId:c.modelId});break;default:(c.type===`custom`||c.type===`source`)&&p.push(c),b.enqueue(c);break}}})}function sO(e){return e.type===`text-delta`&&e.delta.length>0||e.type===`reasoning-delta`&&e.delta.length>0||e.type===`tool-input-delta`&&e.delta.length>0||e.type===`file`||e.type===`reasoning-file`||e.type===`tool-call`}function cO(e){let t=[...e].sort((e,t)=>e-t),n=e.reduce((e,t)=>e+t,0);return{min:t[0],p10:lO(t,.1),median:lO(t,.5),avg:n/e.length,p90:lO(t,.9),max:t[t.length-1]}}function lO(e,t){return e[Math.ceil(t*e.length)-1]}function uO({content:e,partIndexes:t,id:n,type:r,textDelta:i,providerMetadata:a}){let o=t.get(n);o??(o=e.push({type:r,text:``,...a==null?{}:{providerMetadata:a}})-1,t.set(n,o));let s=e[o];i!=null&&(s.text+=i),a!=null&&(s.providerMetadata=a)}var dO=rd({prefix:`aitxt`,size:24}),fO=rd({prefix:`call`,size:24}),pO={file:!0,custom:!0,source:!0,"text-start":!0,"text-end":!0,"text-delta":!0,"reasoning-start":!0,"reasoning-end":!0,"reasoning-delta":!0,"reasoning-file":!0,"tool-input-start":!0,"tool-input-end":!0,"tool-input-delta":!0,"tool-approval-request":!0,"tool-approval-response":!0,"tool-call":!0,"tool-result":!0,"tool-error":!0,"tool-execution-end":!1,"model-call-start":!1,"model-call-response-metadata":!1,"model-call-end":!1,error:!1,raw:!1};function mO({model:e,tools:t,toolChoice:n,instructions:r,system:i,prompt:a,messages:o,allowSystemInMessages:s,maxRetries:c,abortSignal:l,timeout:u,headers:d,stopWhen:f=pD(1),experimental_sandbox:p,output:m,toolApproval:h,experimental_toolApprovalSecret:g,experimental_telemetry:_,telemetry:v=_,prepareStep:y,providerOptions:b,activeTools:x,toolOrder:S,experimental_repairToolCall:ee,experimental_refineToolInput:te,experimental_transform:ne,experimental_download:re,includeRawChunks:ie,onChunk:ae,onError:oe=({error:e})=>{console.error(e)},onFinish:se,onEnd:C=se,onAbort:ce,onStepEnd:le,onStepFinish:ue,onStart:de,experimental_onStart:fe,onStepStart:pe,experimental_onStepStart:me,onLanguageModelCallStart:he,experimental_onLanguageModelCallStart:ge,onLanguageModelCallEnd:_e,experimental_onLanguageModelCallEnd:ve,onToolExecutionStart:ye,onToolExecutionEnd:be,experimental_onToolCallStart:xe,experimental_onToolCallFinish:Se,runtimeContext:Ce={},toolsContext:we={},experimental_include:Te,include:Ee=Te,_internal:{now:De=bE,generateId:Oe=dO,generateCallId:ke=fO}={},...Ae}){let je=WT(u),Me=GT(u),Ne=KT(u),Pe=Me==null?void 0:new AbortController,Fe=Ne==null?void 0:new AbortController,Ie=de??fe,Le=pe??me,Re=he??ge,ze=_e??ve,Be=ye??xe,Ve=be??Se,He=le??ue;return new _O({model:hT(e),telemetry:v,headers:d,settings:Ae,maxRetries:c,abortSignal:vE(l,je,Pe?.signal,Fe?.signal),stepTimeoutMs:Me,stepAbortController:Pe,chunkTimeoutMs:Ne,chunkAbortController:Fe,instructions:r,system:i,prompt:a,messages:o,allowSystemInMessages:s,experimental_sandbox:p,tools:t,toolsContext:we,runtimeContext:Ce,toolChoice:n,transforms:mu(ne),activeTools:x,toolOrder:S,repairToolCall:ee,refineToolInput:te,stopConditions:mu(f),output:m,toolApproval:h,experimental_toolApprovalSecret:g,providerOptions:b,prepareStep:y,timeout:u,onChunk:ae,onError:oe,onEnd:C,onAbort:ce,onStepFinish:He,onStart:Ie,onStepStart:Le,onLanguageModelCallStart:Re,onLanguageModelCallEnd:ze,onToolExecutionStart:Be,onToolExecutionEnd:Ve,now:De,generateId:Oe,generateCallId:ke,download:re,include:{requestBody:Ee?.requestBody??!1,requestMessages:Ee?.requestMessages??!1,rawChunks:Ee?.rawChunks??ie??!1}})}async function hO(e){try{await e}catch{}}function gO(e){let t,n=``,r=``,i,a=``;function o({controller:e,partialOutput:n=void 0}){e.enqueue({part:{type:`text-delta`,id:t,text:r,providerMetadata:i},partialOutput:n}),r=``}return new TransformStream({async transform(s,c){if(s.type===`finish-step`&&r.length>0&&o({controller:c}),s.type!==`text-delta`&&s.type!==`text-start`&&s.type!==`text-end`){c.enqueue({part:s,partialOutput:void 0});return}if(t==null)t=s.id;else if(s.id!==t){c.enqueue({part:s,partialOutput:void 0});return}if(s.type===`text-start`){c.enqueue({part:s,partialOutput:void 0});return}if(s.type===`text-end`){r.length>0&&o({controller:c}),c.enqueue({part:s,partialOutput:void 0});return}n+=s.text,r+=s.text,i=s.providerMetadata??i;let l=await e.parsePartialOutput({text:n});if(l!==void 0){let e=typeof l.partial==`string`?l.partial:JSON.stringify(l.partial);e!==a&&(o({controller:c,partialOutput:l.partial}),a=e)}}})}var _O=class{constructor({model:e,telemetry:t,headers:n,settings:r,maxRetries:i,abortSignal:a,stepTimeoutMs:o,stepAbortController:s,chunkTimeoutMs:c,chunkAbortController:l,instructions:u,system:d,prompt:f,messages:p,allowSystemInMessages:m,experimental_sandbox:h,tools:g,toolChoice:_,transforms:v,activeTools:y,toolOrder:b,repairToolCall:x,refineToolInput:S,stopConditions:ee,output:te,toolApproval:ne,experimental_toolApprovalSecret:re,providerOptions:ie,prepareStep:oe,now:se,generateId:C,generateCallId:ce,timeout:le,onChunk:ue,onError:de,onEnd:fe,onAbort:pe,onStepFinish:me,onStart:he,onStepStart:ge,onLanguageModelCallStart:_e,onLanguageModelCallEnd:ve,onToolExecutionStart:ye,onToolExecutionEnd:be,runtimeContext:xe,toolsContext:Se,download:Ce,include:we}){this._totalUsage=new Tu,this._finishReason=new Tu,this._rawFinishReason=new Tu,this._steps=new Tu,this._initialResponseMessages=new Tu,this.outputSpecification=te,this.tools=g;let Te=fD({telemetry:t,includeRuntimeContext:t?.includeRuntimeContext,includeToolsContext:t?.includeToolsContext}),Ee,De=[],Oe,ke,Ae,je={},Me=[],Ne=[],Pe=[],Fe=[],Ie,Le=[],Re=new Map,ze=BD(),Be=BD(),Ve,He=new TransformStream({async transform(t,n){n.enqueue(t);let{part:r}=t;if(await ue?.({chunk:r}),r.type===`error`){let e=pE(r.error);gw.isInstance(e)&&(Ve=e),await de({error:e})}if((r.type===`custom`||r.type===`source`||r.type===`tool-call`||r.type===`tool-approval-request`||r.type===`tool-approval-response`||r.type===`tool-error`)&&De.push(r),r.type===`text-start`&&(ze[r.id]={type:`text`,text:``,providerMetadata:r.providerMetadata},De.push(ze[r.id])),r.type===`text-delta`){let e=ze[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`text part ${r.id} not found`},partialOutput:void 0});return}e.text+=r.text,e.providerMetadata=r.providerMetadata??e.providerMetadata}if(r.type===`text-end`){let e=ze[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`text part ${r.id} not found`},partialOutput:void 0});return}e.providerMetadata=r.providerMetadata??e.providerMetadata,delete ze[r.id]}if(r.type===`reasoning-start`&&(Be[r.id]={type:`reasoning`,text:``,providerMetadata:r.providerMetadata},De.push(Be[r.id])),r.type===`reasoning-delta`){let e=Be[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`reasoning part ${r.id} not found`},partialOutput:void 0});return}e.text+=r.text,e.providerMetadata=r.providerMetadata??e.providerMetadata}if(r.type===`reasoning-end`){let e=Be[r.id];if(e==null){n.enqueue({part:{type:`error`,error:`reasoning part ${r.id} not found`},partialOutput:void 0});return}e.providerMetadata=r.providerMetadata??e.providerMetadata,delete Be[r.id]}if((r.type===`file`||r.type===`reasoning-file`)&&De.push({type:r.type,file:r.file,...r.providerMetadata==null?{}:{providerMetadata:r.providerMetadata}}),r.type===`tool-result`&&!r.preliminary&&De.push(r),r.type===`start-step`&&(De=[],Be=BD(),ze=BD(),je=r.request,Ne=r.warnings),r.type===`finish-step`){let t=await gD({content:De,tools:g}),n=new sD({callId:Xe,stepNumber:Pe.length,provider:e.provider,modelId:e.modelId,runtimeContext:xe,toolsContext:Se,content:De,finishReason:r.finishReason,rawFinishReason:r.rawFinishReason,usage:r.usage,performance:r.performance,warnings:Ne,request:{...je,messages:we.requestMessages?_T(Me):void 0},response:{...r.response,messages:_T(t)},providerMetadata:r.providerMetadata});await xE({event:n,callbacks:[me,Te.onStepEnd]}),Zw({warnings:Ne,provider:e.provider,model:e.modelId}),Pe.push(n),Ie=[...Le,...t],Ee.resolve()}r.type===`finish`&&(Ae=r.totalUsage,Oe=r.finishReason,ke=r.rawFinishReason)},async flush(e){try{if(Pe.length===0||Ve!=null){let e=a?.aborted?a.reason:Ve??new gw({message:`No output generated. Check the stream for errors.`});Ye.rejectResultPromises(e);return}let e=Oe??`other`,t=Ae??hE();Ye._finishReason.resolve(e),Ye._rawFinishReason.resolve(ke),Ye._totalUsage.resolve(t),Ye._steps.resolve(Pe);let n=Pe[Pe.length-1],r=Pe.flatMap(e=>e.content),i=Pe.flatMap(e=>e.files),o=Pe.flatMap(e=>e.sources),s=Pe.flatMap(e=>e.toolCalls),c=Pe.flatMap(e=>e.staticToolCalls),l=Pe.flatMap(e=>e.dynamicToolCalls),u=Pe.flatMap(e=>e.toolResults),d=Pe.flatMap(e=>e.staticToolResults),f=Pe.flatMap(e=>e.dynamicToolResults),p=Pe.flatMap(e=>e.warnings??[]);await xE({event:{callId:Xe,toolsContext:n.toolsContext,stepNumber:n.stepNumber,model:n.model,runtimeContext:n.runtimeContext,finishReason:n.finishReason,rawFinishReason:n.rawFinishReason,usage:t,totalUsage:t,content:r,text:n.text,reasoning:n.reasoning,reasoningText:n.reasoningText,files:i,sources:o,toolCalls:s,staticToolCalls:c,dynamicToolCalls:l,toolResults:u,staticToolResults:d,dynamicToolResults:f,responseMessages:[...Fe,...Pe.flatMap(e=>e.response.messages)],warnings:p,request:n.request,response:n.response,providerMetadata:n.providerMetadata,steps:Pe,finalStep:n},callbacks:[fe,Te.onEnd]})}catch(t){e.error(t)}}}),Ue=eO();this.addStream=Ue.addStream,this.closeStream=Ue.close;let We=Ue.stream.getReader(),Ge=new ReadableStream({async start(e){e.enqueue({type:`start`})},async pull(e){async function t(){await xE({event:{callId:Xe,steps:Pe,...a?.reason===void 0?{}:{reason:a.reason}},callbacks:[pe,Te.onAbort]}),e.enqueue({type:`abort`,...a?.reason===void 0?{}:{reason:ae(a.reason)}}),e.close()}try{let{done:n,value:r}=await We.read();if(n){e.close();return}if(a?.aborted){await t();return}e.enqueue(r)}catch(n){ad(n)&&a?.aborted?await t():e.error(n)}},cancel(e){return Ue.stream.cancel(e)}}),Ke=!0;Ge=Ge.pipeThrough(new TransformStream({async transform(e,t){Ke&&t.enqueue(e)}}));for(let e of v)Ge=Ge.pipeThrough(e({tools:g,stopStream(){Ue.terminate(),Ke=!1}}));this.baseStream=Ge.pipeThrough(gO(te??FE())).pipeThrough(He);let{maxRetries:qe}=wE({maxRetries:i,abortSignal:a}),Je=RT(r),Ye=this,Xe=ce();(async()=>{let t=await fE({instructions:u,system:d,prompt:f,messages:p,allowSystemInMessages:m}),r={callId:Xe,operationId:`ai.streamText`,provider:e.provider,modelId:e.modelId,instructions:t.instructions,messages:t.messages,tools:g,toolChoice:_,activeTools:y,toolOrder:b,maxOutputTokens:Je.maxOutputTokens,temperature:Je.temperature,topP:Je.topP,topK:Je.topK,presencePenalty:Je.presencePenalty,frequencyPenalty:Je.frequencyPenalty,stopSequences:Je.stopSequences,seed:Je.seed,reasoning:Je.reasoning,maxRetries:qe,timeout:le,headers:n,providerOptions:ie,output:te,runtimeContext:xe,toolsContext:Se},i=Te.startTracingChannelContext?.call(Te,{type:`streamText`,event:r,completion:Ye._totalUsage.promise.then(()=>void 0)}),v=e=>i?.run(e)??e();await xE({event:r,callbacks:[he,Te.onStart]});let ae=t.messages,ce=t.instructions,{approvedToolApprovals:ue,deniedToolApprovals:de}=DE({messages:ae});if(de.length>0||ue.length>0){let{approvedToolApprovals:e,deniedToolApprovals:t}=await OD({approvedToolApprovals:ue.filter(e=>!e.toolCall.providerExecuted),tools:g,toolApproval:ne,messages:ae,toolsContext:Se,runtimeContext:xe,toolApprovalSecret:re}),n=[...de.filter(e=>!e.toolCall.providerExecuted),...t],r=de.filter(e=>e.toolCall.providerExecuted),i,o=new ReadableStream({start(e){i=e}});Ye.addStream(o);try{for(let e of[...n,...r])i?.enqueue({type:`tool-output-denied`,toolCallId:e.toolCall.toolCallId,toolName:e.toolCall.toolName});let t=[];if(await Promise.all(e.map(async e=>{let n=await kE({toolCall:e.toolCall,tools:g,callId:Xe,messages:ae,abortSignal:a,timeout:le,experimental_sandbox:h,toolsContext:Se,onToolExecutionStart:nd(ye,Te.onToolExecutionStart),onToolExecutionEnd:nd(be,Te.onToolExecutionEnd),executeToolInTelemetryContext:Te.executeTool,runInTracingChannelSpan:Te.runInTracingChannelSpan,onPreliminaryToolResult:e=>{i?.enqueue(e)}});n!=null&&(i?.enqueue(n.output),t.push(n.output))})),t.length>0||n.length>0){let e=[];for(let n of t)e.push({type:`tool-result`,toolCallId:n.toolCallId,toolName:n.toolName,output:await IT({toolCallId:n.toolCallId,input:n.input,tool:g?.[n.toolName],output:n.type===`tool-result`?n.output:n.error,errorMode:n.type===`tool-error`?`text`:`none`})});for(let t of n)e.push({type:`tool-result`,toolCallId:t.toolCall.toolCallId,toolName:t.toolCall.toolName,output:{type:`execution-denied`,reason:t.approvalResponse.reason}});Fe.push({role:`tool`,content:e})}}finally{i?.close()}}Ye._initialResponseMessages.resolve(Fe);async function fe({currentStep:r,usage:i}){let u=TE({abortController:s,label:`Step`,timeoutMs:o}),d;function f(){d!=null&&clearTimeout(d),d=TE({abortController:l,label:`Chunk`,timeoutMs:c})}function p(){d!=null&&(clearTimeout(d),d=void 0)}function ue(){u!=null&&clearTimeout(u)}a?.addEventListener(`abort`,ue),a?.addEventListener(`abort`,p);try{Ee=new Tu;let o=Te.startTracingChannelContext?.call(Te,{type:`step`,event:{callId:Xe,stepNumber:r},completion:Ee.promise}),s=e=>o?.run(e)??e(),c=Pe.flatMap(e=>e.response.messages),l=[...Fe,...c],u=Ie??[...ae,...Fe],d=await oe?.({model:e,steps:Pe,stepNumber:Pe.length,instructions:ce,initialInstructions:t.instructions,messages:u,initialMessages:ae,responseMessages:l,toolsContext:Se,runtimeContext:xe,experimental_sandbox:h}),de=d?.experimental_sandbox??h;xe=d?.runtimeContext??xe,Se=d?.toolsContext??Se;let pe=hT(d?.model??e),me=AE({tools:g,activeTools:d?.activeTools??y}),he=d?.toolOrder??b,De=await VT({tools:me,toolOrder:he,toolsContext:Se,experimental_sandbox:de}),Oe=zT({toolChoice:d?.toolChoice??_}),ke=d?.messages??u;Le=ke;let Ae=d?.instructions??d?.system??ce;ce=Ae;let je=yE(ie,d?.providerOptions),Ne=se(),{retry:ze}=wE({maxRetries:qe,abortSignal:a}),{stream:Be,request:Ve,response:He}=await s(()=>ze(async()=>aO({model:d?.model??e,tools:me,toolOrder:he,toolChoice:d?.toolChoice??_,instructions:Ae,messages:ke,allowSystemInMessages:m,repairToolCall:x,refineToolInput:S,abortSignal:a,headers:n,includeRawChunks:we.rawChunks,providerOptions:je,download:Ce,output:te,callId:Xe,executeLanguageModelCallInTelemetryContext:Te.executeLanguageModelCall,toolsContext:Se,experimental_sandbox:de,onLanguageModelCallStart:nd(_e,Te.onLanguageModelCallStart),onLanguageModelCallEnd:nd(ve,Te.onLanguageModelCallEnd),onStart:async({promptMessages:e})=>{await xE({event:{callId:Xe,provider:pe.provider,modelId:pe.modelId,stepNumber:Pe.length,instructions:Ae,messages:ke,tools:g,toolChoice:d?.toolChoice??_,activeTools:d?.activeTools??y,toolOrder:he,steps:[...Pe],providerOptions:je,runtimeContext:xe,toolsContext:Se,output:te,promptMessages:e,stepTools:De,stepToolChoice:Oe},callbacks:[ge,Te.onStepStart]})},_internal:{now:se},...Je}))),Ue=nO({stream:Be,tools:g,stepInputMessages:ke,abortSignal:a,runtimeContext:xe}),We=Te.runInTracingChannelSpan==null?void 0:e=>s(()=>Te.runInTracingChannelSpan(e)),Ge=tO({stream:Ue,tools:g,callId:Xe,messages:ke,abortSignal:a,timeout:le,experimental_sandbox:de,toolsContext:Se,toolApproval:ne,runtimeContext:xe,toolApprovalSecret:re,generateId:C,onToolExecutionStart:nd(ye,Te.onToolExecutionStart),onToolExecutionEnd:nd(be,Te.onToolExecutionEnd),executeToolInTelemetryContext:Te.executeTool,runInTracingChannelSpan:We}),Ke={...Ve,body:we.requestBody?Ve?.body:void 0,messages:we.requestMessages?_T(ke):void 0};Me=Ke.messages??[];let Ze=[],Qe=[],$e=[],et,tt=`other`,nt,rt=!1,it=!1,at=hE(),ot,st=!0,ct={responseTimeMs:0,effectiveOutputTokensPerSecond:0,outputTokensPerSecond:void 0,inputTokensPerSecond:void 0,effectiveTotalTokensPerSecond:0,timeToFirstOutputMs:void 0,timeBetweenOutputChunksMs:void 0},lt={},w={id:C(),timestamp:new Date,modelId:e.modelId};Ye.addStream(Ge.pipeThrough(new TransformStream({async transform(e,t){if(f(),e.type===`model-call-start`){et=e.warnings;return}st&&(st=!1,t.enqueue({type:`start-step`,request:Ke,warnings:et??[]}));let n=e.type;switch(pO[n]&&(it=!0),n){case`file`:case`custom`:case`source`:case`text-start`:case`text-end`:case`reasoning-start`:case`reasoning-end`:case`reasoning-delta`:case`reasoning-file`:case`tool-input-start`:case`tool-input-end`:case`tool-input-delta`:case`tool-approval-request`:t.enqueue(e);break;case`text-delta`:e.text.length>0&&t.enqueue(e);break;case`tool-call`:t.enqueue(e),Ze.push(e);break;case`tool-approval-response`:t.enqueue(e),$e.push(e);break;case`tool-result`:t.enqueue(e),e.preliminary||Qe.push(e);break;case`tool-error`:t.enqueue(e),Qe.push(e);break;case`tool-execution-end`:lt[e.toolCallId]=e.toolExecutionMs;break;case`model-call-response-metadata`:w={id:e.id??w.id,timestamp:e.timestamp??w.timestamp,modelId:e.modelId??w.modelId};break;case`model-call-end`:rt=!0,at=e.usage,tt=e.finishReason,nt=e.rawFinishReason,ot=e.providerMetadata,ct=e.performance;break;case`error`:rt=!0,t.enqueue(e),tt=`error`;break;case`raw`:we.rawChunks&&t.enqueue(e);break;default:throw Error(`Unknown chunk type: ${n}`)}},async flush(e){if(!rt&&!it){e.enqueue({type:`error`,error:new gw({message:`No output generated. The model stream ended without a finish chunk.`})}),ue(),p(),Ye.closeStream();return}let t=se()-Ne,n={type:`finish-step`,finishReason:tt,rawFinishReason:nt,usage:at,performance:{stepTimeMs:t,toolExecutionMs:lt,...ct},providerMetadata:ot,response:{...w,headers:He?.headers}};e.enqueue(n);let a=gE(i,at);await Ee.promise;let o=Ze.filter(e=>e.providerExecuted!==!0),s=Qe.filter(e=>e.providerExecuted!==!0),c=$e.filter(e=>e.approved===!1);for(let e of Ze){if(e.providerExecuted!==!0)continue;let t=g?.[e.toolName];t?.type===`provider`&&t.supportsDeferredResults&&(Qe.some(t=>(t.type===`tool-result`||t.type===`tool-error`)&&t.toolCallId===e.toolCallId)||Re.set(e.toolCallId,{toolName:e.toolName}))}for(let e of Qe)(e.type===`tool-result`||e.type===`tool-error`)&&Re.delete(e.toolCallId);if(ue(),p(),(o.length>0&&o.length===s.length+c.length||Re.size>0)&&!await mD({stopConditions:ee,steps:Pe}))try{await v(()=>fe({currentStep:r+1,usage:a}))}catch(t){e.enqueue({type:`error`,error:t}),Ye.closeStream()}else e.enqueue({type:`finish`,finishReason:tt,rawFinishReason:nt,totalUsage:a}),Ye.closeStream()}})))}catch(e){throw ue(),p(),e}}await v(()=>fe({currentStep:0,usage:hE()}))})().catch(async e=>{await Te.onError?.call(Te,{callId:Xe,error:e}),Ye._initialResponseMessages.reject(e),hO(Ye._initialResponseMessages.promise),Ye.addStream(new ReadableStream({start(t){t.enqueue({type:`error`,error:e}),t.close()}})),Ye.closeStream()})}get steps(){return this.consumeStream(),this._steps.promise}get finalStep(){return this.steps.then(e=>e.at(-1))}get content(){return this.steps.then(e=>e.flatMap(e=>e.content))}get warnings(){return this.steps.then(e=>e.flatMap(e=>e.warnings??[]))}get providerMetadata(){return this.finalStep.then(e=>e.providerMetadata)}get text(){return this.finalStep.then(e=>e.text)}get reasoningText(){return this.finalStep.then(e=>e.reasoningText)}get reasoning(){return this.finalStep.then(e=>KE(e.reasoning))}get sources(){return this.steps.then(e=>e.flatMap(e=>e.sources))}get files(){return this.steps.then(e=>e.flatMap(e=>e.files))}get toolCalls(){return this.steps.then(e=>e.flatMap(e=>e.toolCalls))}get staticToolCalls(){return this.steps.then(e=>e.flatMap(e=>e.staticToolCalls))}get dynamicToolCalls(){return this.steps.then(e=>e.flatMap(e=>e.dynamicToolCalls))}get toolResults(){return this.steps.then(e=>e.flatMap(e=>e.toolResults))}get staticToolResults(){return this.steps.then(e=>e.flatMap(e=>e.staticToolResults))}get dynamicToolResults(){return this.steps.then(e=>e.flatMap(e=>e.dynamicToolResults))}get usage(){return this.totalUsage}get request(){return this.finalStep.then(e=>e.request)}get response(){return this.finalStep.then(e=>e.response)}get responseMessages(){return Promise.all([this._initialResponseMessages.promise,this.steps]).then(([e,t])=>[...e,...t.flatMap(e=>e.response.messages)])}get totalUsage(){return this.consumeStream(),this._totalUsage.promise}get finishReason(){return this.consumeStream(),this._finishReason.promise}get rawFinishReason(){return this.consumeStream(),this._rawFinishReason.promise}teeStream(){let[e,t]=this.baseStream.tee();return this.baseStream=t,e}get textStream(){return XD(ND({stream:this.stream}))}get stream(){return XD(this.teeStream().pipeThrough(new TransformStream({transform({part:e},t){t.enqueue(e)}})))}get fullStream(){return this.stream}rejectResultPromises(e){this.rejectResultPromise({delayedPromise:this._finishReason,error:e}),this.rejectResultPromise({delayedPromise:this._rawFinishReason,error:e}),this.rejectResultPromise({delayedPromise:this._totalUsage,error:e}),this.rejectResultPromise({delayedPromise:this._steps,error:e}),this.rejectResultPromise({delayedPromise:this._initialResponseMessages,error:e})}rejectResultPromise({delayedPromise:e,error:t}){e.isPending()&&(e.reject(t),hO(e.promise))}async consumeStream(e){var t;try{await QD({stream:this.stream,onError:t=>{var n;this.rejectResultPromises(t),(n=e?.onError)==null||n.call(e,t)}})}catch(n){this.rejectResultPromises(n),(t=e?.onError)==null||t.call(e,n)}}get experimental_partialOutputStream(){return this.partialOutputStream}get partialOutputStream(){return XD(this.teeStream().pipeThrough(new TransformStream({transform({partialOutput:e},t){e!=null&&t.enqueue(e)}})))}get elementStream(){let e=this.outputSpecification?.createElementStreamTransform();if(e==null)throw new w({functionality:`element streams in ${this.outputSpecification?.name??`text`} mode`});return XD(this.teeStream().pipeThrough(e))}get output(){return this.finalStep.then(e=>(this.outputSpecification??FE()).parseCompleteOutput({text:e.text},{response:e.response,usage:e.usage,finishReason:e.finishReason}))}toUIMessageStream({originalMessages:e,generateMessageId:t,onEnd:n,onFinish:r,messageMetadata:i,sendReasoning:a,sendSources:o,sendStart:s,sendFinish:c,onError:l}={}){return XD(YD({stream:this.stream,tools:this.tools,originalMessages:e,generateMessageId:t,onEnd:n??r,messageMetadata:i,sendReasoning:a,sendSources:o,sendStart:s,sendFinish:c,onError:l}))}pipeUIMessageStreamToResponse(e,{originalMessages:t,generateMessageId:n,onEnd:r,onFinish:i,messageMetadata:a,sendReasoning:o,sendSources:s,sendFinish:c,sendStart:l,onError:u,...d}={}){LD({response:e,stream:this.toUIMessageStream({originalMessages:t,generateMessageId:n,onEnd:r??i,messageMetadata:a,sendReasoning:o,sendSources:s,sendFinish:c,sendStart:l,onError:u}),...d})}pipeTextStreamToResponse(e,t){MD({response:e,stream:this.textStream,...t})}toUIMessageStreamResponse({originalMessages:e,generateMessageId:t,onEnd:n,onFinish:r,messageMetadata:i,sendReasoning:a,sendSources:o,sendFinish:s,sendStart:c,onError:l,...u}={}){return ID({stream:this.toUIMessageStream({originalMessages:e,generateMessageId:t,onEnd:n??r,messageMetadata:i,sendReasoning:a,sendSources:o,sendFinish:s,sendStart:c,onError:l}),...u})}toTextStreamResponse(e){return AD({stream:this.textStream,...e})}};F(D(),JT.optional()),F(D(),D()),rd({prefix:`call`,size:24}),rd({prefix:`call`,size:24}),rd({prefix:`aiobj`,size:24}),rd({prefix:`aiobj`,size:24}),rd({prefix:`call`,size:24});var vO=()=>typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}`;async function yO(e,t,n,r){let i=a.getState(),o=vO();if(i.addTool(e,{id:o,name:t.name,label:t.label,mutates:t.mutates,status:t.mutates?`awaiting`:`running`,args:n}),t.mutates){if(!await i.requestConfirm({name:t.name,label:t.label,args:n}))return i.updateTool(e,o,{status:`declined`}),{ok:!1,declined:!0,message:`The user declined this action.`};i.updateTool(e,o,{status:`running`})}try{let t=await r();return i.updateTool(e,o,{status:`done`,result:t}),t}catch(t){let n=t.message||`request failed`;return i.updateTool(e,o,{status:`error`,error:n}),{ok:!1,error:n}}}function bO(e){return{list_queues:Qf({description:`List all queues with their job counts (waiting, active, completed, failed, delayed, dlq).`,inputSchema:M({}),execute:()=>yO(e,{name:`list_queues`,label:`List queues`,mutates:!1},{},()=>o.queuesSummary())}),queue_counts:Qf({description:`Get the exact job counts for one queue by state.`,inputSchema:M({queue:D().describe(`Queue name`)}),execute:({queue:t})=>yO(e,{name:`queue_counts`,label:`Counts: ${t}`,mutates:!1},{queue:t},()=>o.counts(t))}),list_jobs:Qf({description:`List jobs in a queue, optionally filtered by state (waiting, active, completed, failed, delayed).`,inputSchema:M({queue:D(),states:j(D()).optional().describe(`Job states to include`),limit:O().int().min(1).max(100).optional()}),execute:({queue:t,states:n,limit:r})=>yO(e,{name:`list_jobs`,label:`Jobs: ${t}`,mutates:!1},{queue:t,states:n,limit:r},()=>o.jobsList(t,n,r??20))}),get_job:Qf({description:`Fetch one job by id, including its state, data, attempts, timeline, parent/children.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`get_job`,label:`Job ${t.slice(0,8)}`,mutates:!1},{id:t},()=>o.job(t))}),dlq_stats:Qf({description:`Get dead-letter-queue statistics for a queue (count, reasons).`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`dlq_stats`,label:`DLQ stats: ${t}`,mutates:!1},{queue:t},()=>o.dlqStats(t))}),list_dlq:Qf({description:`List dead-letter-queue entries for a queue (failed jobs that exhausted retries).`,inputSchema:M({queue:D(),limit:O().int().min(1).max(100).optional()}),execute:({queue:t,limit:n})=>yO(e,{name:`list_dlq`,label:`DLQ: ${t}`,mutates:!1},{queue:t,limit:n},()=>o.dlq(t,n??25))}),server_health:Qf({description:`Get overall server health and status.`,inputSchema:M({}),execute:()=>yO(e,{name:`server_health`,label:`Health`,mutates:!1},{},()=>o.health())}),server_stats:Qf({description:`Get aggregate server stats (totals across queues, throughput).`,inputSchema:M({}),execute:()=>yO(e,{name:`server_stats`,label:`Stats`,mutates:!1},{},()=>o.stats())}),list_workers:Qf({description:`List connected workers and their status.`,inputSchema:M({}),execute:()=>yO(e,{name:`list_workers`,label:`Workers`,mutates:!1},{},()=>o.workers())}),list_crons:Qf({description:`List scheduled cron jobs.`,inputSchema:M({}),execute:()=>yO(e,{name:`list_crons`,label:`Crons`,mutates:!1},{},()=>o.crons())}),retry_job:Qf({description:`Move a failed/completed job back to waiting so it runs again. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`retry_job`,label:`Retry job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>o.retryJob(t))}),remove_job:Qf({description:`Permanently remove a job by id. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`remove_job`,label:`Remove job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>o.cancelJob(t))}),promote_job:Qf({description:`Promote a delayed job so it runs now. Mutating: needs user confirmation.`,inputSchema:M({id:D()}),execute:({id:t})=>yO(e,{name:`promote_job`,label:`Promote job ${t.slice(0,8)}`,mutates:!0},{id:t},()=>o.promoteJob(t))}),pause_queue:Qf({description:`Pause a queue (stops processing new jobs). Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`pause_queue`,label:`Pause ${t}`,mutates:!0},{queue:t},()=>o.pause(t))}),resume_queue:Qf({description:`Resume a paused queue. Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`resume_queue`,label:`Resume ${t}`,mutates:!0},{queue:t},()=>o.resume(t))}),retry_dlq:Qf({description:`Retry dead-letter-queue jobs for a queue: one by jobId, or all if jobId is omitted. Mutating: needs user confirmation.`,inputSchema:M({queue:D(),jobId:D().optional()}),execute:({queue:t,jobId:n})=>yO(e,{name:`retry_dlq`,label:n?`Retry DLQ job in ${t}`:`Retry ALL DLQ in ${t}`,mutates:!0},{queue:t,jobId:n},()=>o.retryDlq(t,n))}),purge_dlq:Qf({description:`Permanently delete all dead-letter-queue entries for a queue. Mutating: needs user confirmation.`,inputSchema:M({queue:D()}),execute:({queue:t})=>yO(e,{name:`purge_dlq`,label:`Purge DLQ: ${t}`,mutates:!0},{queue:t},()=>o.purgeDlq(t))})}}var xO=`You are the bunqueue Copilot, an AI assistant embedded in a dashboard that operates a bunqueue job-queue server.
|
|
147
147
|
|
|
148
148
|
You help the operator understand and control their queues, jobs, dead-letter queue (DLQ), workers, and crons. Use the provided tools to read LIVE state instead of guessing — never invent queue names, job ids, counts, or states; look them up. Prefer the smallest set of tool calls that answers the question.
|
|
149
149
|
|
|
150
150
|
Mutating tools (retry, promote, remove, pause/resume, retry/purge DLQ) are gated: when you call one, the user is shown a confirmation and must approve it before it runs, so it is safe to propose a concrete action. If the user's request is ambiguous about which queue or job, ask a brief clarifying question or look it up first.
|
|
151
151
|
|
|
152
|
-
Be concise and practical. When you report data, summarize the important numbers rather than dumping raw JSON. Format with short markdown (bold, lists) when helpful.`;function SO(e,t){let n=e.toLowerCase();if(n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`load failed`)){let e=sx(t);return`Could not reach the model. This is usually the provider blocking browser (CORS) requests, a wrong base URL, or no network.${e&&!e.browserDirect?` ${e.note??``}`:``}`.trim()}return n.includes(`401`)||n.includes(`403`)||n.includes(`unauthorized`)||n.includes(`api key`)||n.includes(`x-api-key`)||n.includes(`invalid_api_key`)||n.includes(`authentication`)?`The provider rejected the API key. Check the key is valid and matches the selected provider.`:n.includes(`404`)||n.includes(`model`)?`Model request failed: ${e}. Check the model id is valid for this provider.`:e}var CO=null;function wO(){let e=CO;CO=null;let t=o.getState();t.cancelPending(),t.setBusy(!1),e?.abort()}async function TO(e){let t=o.getState(),{config:n}=t;if(!n.apiKey.trim()){t.addUser(e);let n=t.startAssistant();t.finishAssistant(n,{error:`Add your API key in the Copilot settings (the gear) first.`});return}let r=t.messages.filter(e=>e.content.trim().length>0).map(e=>({role:e.role,content:e.content}));t.addUser(e);let i=t.startAssistant();t.setBusy(!0);let a=new AbortController;CO=a;let s=null;try{let o=mO({model:cx(n),system:xO,messages:[...r,{role:`user`,content:e}],tools:bO(i),stopWhen:pD(8),abortSignal:a.signal,onError:({error:e})=>{s=e instanceof Error?e.message:String(e)}});for await(let e of o.textStream)t.appendAssistant(i,e)}catch(e){if(e.name===`AbortError`){t.cancelPending(),t.finishAssistant(i),t.setBusy(!1),CO===a&&(CO=null);return}s||=e.message}t.finishAssistant(i,s?{error:SO(s,n.provider)}:void 0),t.setBusy(!1),CO===a&&(CO=null)}var $=i(),EO=[`Which queues are backing up right now?`,`Show DLQ stats for every queue and what is failing.`,`Summarize server health and worker status.`],DO={awaiting:`border-warning/40 text-warning`,running:`border-accent/40 text-accent`,done:`border-success/40 text-success`,error:`border-danger/40 text-danger`,declined:`border-line text-faint`};function OO(){let{config:e,setConfig:t,messages:n,pending:r,busy:i,clear:a,setOpen:d,resolveConfirm:f}=o(),p=sx(e.provider),m=e.apiKey.trim().length>0&&e.model.trim().length>0,[h,g]=(0,u.useState)(``),[_,v]=(0,u.useState)(!m),y=(0,u.useRef)(null);(0,u.useEffect)(()=>{y.current?.scrollTo({top:y.current.scrollHeight})},[n,r]);let b=e=>{let t=e.trim();!t||i||!m||(g(``),TO(t))},x=e=>{let n=sx(e);t({provider:e,baseURL:n?.baseURL??``,model:n?.models[0]??``})};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":`Close Copilot`,onClick:()=>d(!1),className:`fixed inset-0 z-[55] cursor-default bg-black/30`}),(0,$.jsxs)(`aside`,{className:`fixed inset-y-0 right-0 z-[60] flex w-full max-w-md flex-col border-l border-line bg-surface shadow-xl`,children:[(0,$.jsxs)(`header`,{className:`flex items-center gap-2 border-b border-line px-4 py-3`,children:[(0,$.jsx)(`span`,{className:`font-semibold text-fg`,children:`Copilot`}),(0,$.jsx)(`span`,{className:`rounded bg-accent/15 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-accent`,children:`experimental`}),(0,$.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,$.jsxs)(kO,{label:`Settings`,active:_,onClick:()=>v(e=>!e),children:[(0,$.jsx)(`path`,{d:`M10 4a2 2 0 014 0 6 6 0 012.6 1.5 2 2 0 002.7 2.7 6 6 0 010 3.6 2 2 0 00-2.7 2.7A6 6 0 0114 18a2 2 0 01-4 0 6 6 0 01-2.6-1.5 2 2 0 00-2.7-2.7 6 6 0 010-3.6 2 2 0 002.7-2.7A6 6 0 0110 4z`}),(0,$.jsx)(`circle`,{cx:`12`,cy:`12`,r:`2.5`})]}),(0,$.jsx)(kO,{label:`Clear chat`,onClick:a,children:(0,$.jsx)(`path`,{d:`M6 7h12M9 7V5h6v2m-7 0v11a1 1 0 001 1h6a1 1 0 001-1V7`})}),(0,$.jsx)(kO,{label:`Close`,onClick:()=>d(!1),children:(0,$.jsx)(`path`,{d:`M6 6l12 12M18 6L6 18`})})]})]}),_&&(0,$.jsxs)(`div`,{className:`space-y-3 border-b border-line bg-surface-2/50 px-4 py-3`,children:[(0,$.jsx)(l,{label:`Provider`,children:(0,$.jsx)(s,{value:e.provider,onChange:e=>x(e.target.value),children:ox.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.label},e.id))})}),p?.kind===`compatible`&&(0,$.jsx)(l,{label:`Base URL`,children:(0,$.jsx)(c,{value:e.baseURL,onChange:e=>t({baseURL:e.target.value}),placeholder:`https://api.example.com/v1`,spellCheck:!1})}),(0,$.jsxs)(l,{label:`Model`,children:[(0,$.jsx)(c,{list:`copilot-models`,value:e.model,onChange:e=>t({model:e.target.value}),placeholder:`model id`,spellCheck:!1}),(0,$.jsx)(`datalist`,{id:`copilot-models`,children:(p?.models??[]).map(e=>(0,$.jsx)(`option`,{value:e},e))})]}),(0,$.jsx)(l,{label:`API key`,children:(0,$.jsx)(c,{type:`password`,value:e.apiKey,onChange:e=>t({apiKey:e.target.value}),placeholder:`your provider API key`,autoComplete:`off`,spellCheck:!1})}),(0,$.jsxs)(`p`,{className:`text-xs text-faint`,children:[`Key stays in memory for this session only, never saved to disk.`,` `,p?.keyUrl&&(0,$.jsx)(`a`,{href:p.keyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-accent hover:underline`,children:`Get a key`})]}),p&&!p.browserDirect&&(0,$.jsx)(`p`,{className:`rounded-lg border border-warning/40 bg-warning/10 px-3 py-2 text-xs text-warning`,children:p.note??`This provider may block direct browser calls (CORS).`})]}),(0,$.jsxs)(`div`,{ref:y,className:`flex-1 space-y-4 overflow-y-auto px-4 py-4`,children:[n.length===0&&(0,$.jsxs)(`div`,{className:`space-y-3 pt-6`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted`,children:`Ask about your queues, jobs, DLQ, workers, or crons. I read live data and can propose actions (retry, pause, purge) that you confirm before they run.`}),(0,$.jsx)(`div`,{className:`space-y-2`,children:EO.map(e=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>b(e),disabled:!m,className:`block w-full rounded-lg border border-line px-3 py-2 text-left text-sm text-muted transition-colors hover:border-accent/50 hover:text-fg disabled:opacity-50`,children:e},e))}),!m&&(0,$.jsx)(`p`,{className:`text-xs text-warning`,children:`Set a provider, model, and API key above to start.`})]}),n.map(e=>(0,$.jsx)(AO,{message:e},e.id))]}),r.length>0&&(0,$.jsx)(`div`,{className:`space-y-2 border-t border-line px-4 py-3`,children:r.map(e=>(0,$.jsx)(jO,{confirm:e,onConfirm:()=>f(e.id,!0),onDecline:()=>f(e.id,!1)},e.id))}),(0,$.jsx)(`div`,{className:`border-t border-line px-4 py-3`,children:(0,$.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,$.jsx)(`textarea`,{value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),b(h))},rows:2,placeholder:m?`Ask the Copilot…`:`Add an API key in settings first`,disabled:!m,className:`min-h-0 flex-1 resize-none rounded-lg border border-line bg-surface-2 px-3 py-2 text-sm text-fg outline-none placeholder:text-faint focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-50`}),i?(0,$.jsx)(`button`,{type:`button`,onClick:()=>wO(),className:`rounded-lg border border-line px-3 py-2 text-sm text-muted hover:bg-surface-2 hover:text-fg`,children:`Stop`}):(0,$.jsx)(`button`,{type:`button`,onClick:()=>b(h),disabled:!h.trim()||!m,className:`rounded-lg bg-accent px-4 py-2 text-sm font-medium text-accent-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-50`,children:`Send`})]})})]})]})}function kO({label:e,active:t,onClick:r,children:i}){return(0,$.jsx)(`button`,{type:`button`,"aria-label":e,onClick:r,className:n(`rounded-md p-1.5 text-muted transition-colors hover:bg-surface-2 hover:text-fg`,t&&`bg-surface-2 text-fg`),children:(0,$.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`size-4`,"aria-hidden":`true`,children:i})})}function AO({message:e}){let t=e.role===`user`;return(0,$.jsx)(`div`,{className:n(`flex`,t?`justify-end`:`justify-start`),children:(0,$.jsxs)(`div`,{className:n(`max-w-[85%] space-y-2`,t?`rounded-2xl rounded-br-sm bg-accent/15 px-3 py-2`:`w-full`),children:[(e.tools?.length??0)>0&&(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.tools?.map(e=>(0,$.jsxs)(`span`,{className:n(`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px]`,DO[e.status]),title:e.error||(e.mutates?`mutating action`:`read`),children:[e.mutates&&(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`●`}),e.label,e.status===`declined`&&` (declined)`,e.status===`error`&&` (failed)`]},e.id))}),e.content&&(0,$.jsx)(`div`,{className:n(`whitespace-pre-wrap break-words text-sm`,e.error?`text-danger`:`text-fg`),children:e.content}),!e.content&&!t&&(e.tools?.length??0)===0&&(0,$.jsx)(`div`,{className:`text-sm text-faint`,children:`Thinking…`})]})})}function jO({confirm:e,onConfirm:t,onDecline:n}){let r=e.args;return(0,$.jsxs)(`div`,{className:`rounded-lg border border-warning/50 bg-warning/10 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`text-sm font-medium text-fg`,children:[`Confirm: `,e.label]}),r&&Object.keys(r).length>0&&(0,$.jsx)(`div`,{className:`mt-1 font-mono text-xs text-muted`,children:Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}: ${String(t)}`).join(` · `)}),(0,$.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:t,className:`rounded-lg bg-accent px-3 py-1.5 text-xs font-medium text-accent-fg hover:opacity-90`,children:`Confirm`}),(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-lg border border-line px-3 py-1.5 text-xs text-muted hover:bg-surface-2 hover:text-fg`,children:`Decline`})]})]})}export{OO as CopilotPanel};
|
|
152
|
+
Be concise and practical. When you report data, summarize the important numbers rather than dumping raw JSON. Format with short markdown (bold, lists) when helpful.`;function SO(e,t){let n=e.toLowerCase();if(n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`load failed`)){let e=sx(t);return`Could not reach the model. This is usually the provider blocking browser (CORS) requests, a wrong base URL, or no network.${e&&!e.browserDirect?` ${e.note??``}`:``}`.trim()}return n.includes(`401`)||n.includes(`403`)||n.includes(`unauthorized`)||n.includes(`api key`)||n.includes(`x-api-key`)||n.includes(`invalid_api_key`)||n.includes(`authentication`)?`The provider rejected the API key. Check the key is valid and matches the selected provider.`:n.includes(`rate limit`)||n.includes(`rate_limit`)||n.includes(`429`)||n.includes(`overloaded`)||n.includes(`quota`)||n.includes(`too many requests`)?`The provider is rate-limiting or overloaded: ${e}. Wait a moment and retry.`:n.includes(`404`)||n.includes(`not found`)||n.includes(`model_not_found`)||n.includes(`no such model`)||n.includes(`does not exist`)||n.includes(`unknown model`)||n.includes(`invalid model`)?`Model request failed: ${e}. Check the model id is valid for this provider.`:e}var CO=null;function wO(){let e=CO;CO=null;let t=a.getState();t.cancelPending(),t.setBusy(!1),e?.abort()}async function TO(e){let t=a.getState(),{config:n}=t;if(!n.apiKey.trim()){t.addUser(e);let n=t.startAssistant();t.finishAssistant(n,{error:`Add your API key in the Copilot settings (the gear) first.`});return}let r=t.messages.filter(e=>e.content.trim().length>0).map(e=>({role:e.role,content:e.content}));t.addUser(e);let i=t.startAssistant();t.setBusy(!0);let o=new AbortController;CO=o;let s=null;try{let a=mO({model:cx(n),system:xO,messages:[...r,{role:`user`,content:e}],tools:bO(i),stopWhen:pD(8),abortSignal:o.signal,onError:({error:e})=>{s=e instanceof Error?e.message:String(e)}});for await(let e of a.textStream)t.appendAssistant(i,e)}catch(e){if(e.name===`AbortError`){t.cancelPending(),t.finishAssistant(i),t.setBusy(!1),CO===o&&(CO=null);return}s||=e.message}t.finishAssistant(i,s?{error:SO(s,n.provider)}:void 0),t.setBusy(!1),CO===o&&(CO=null)}var $=i(),EO=[`Which queues are backing up right now?`,`Show DLQ stats for every queue and what is failing.`,`Summarize server health and worker status.`],DO={awaiting:`border-warning/40 text-warning`,running:`border-accent/40 text-accent`,done:`border-success/40 text-success`,error:`border-danger/40 text-danger`,declined:`border-line text-faint`};function OO(){let{config:e,setConfig:t,messages:n,pending:r,busy:i,clear:o,setOpen:d,resolveConfirm:f}=a(),p=sx(e.provider),m=e.apiKey.trim().length>0&&e.model.trim().length>0,[h,g]=(0,u.useState)(``),[_,v]=(0,u.useState)(!m),y=(0,u.useRef)(null);(0,u.useEffect)(()=>{y.current?.scrollTo({top:y.current.scrollHeight})},[n,r]);let b=e=>{let t=e.trim();!t||i||!m||(g(``),TO(t))},x=e=>{let n=sx(e);t({provider:e,baseURL:n?.baseURL??``,model:n?.models[0]??``})};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":`Close Copilot`,onClick:()=>d(!1),className:`fixed inset-0 z-[55] cursor-default bg-black/30`}),(0,$.jsxs)(`aside`,{className:`fixed inset-y-0 right-0 z-[60] flex w-full max-w-md flex-col border-l border-line bg-surface shadow-xl`,children:[(0,$.jsxs)(`header`,{className:`flex items-center gap-2 border-b border-line px-4 py-3`,children:[(0,$.jsx)(`span`,{className:`font-semibold text-fg`,children:`Copilot`}),(0,$.jsx)(`span`,{className:`rounded bg-accent/15 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-accent`,children:`experimental`}),(0,$.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,$.jsxs)(kO,{label:`Settings`,active:_,onClick:()=>v(e=>!e),children:[(0,$.jsx)(`path`,{d:`M10 4a2 2 0 014 0 6 6 0 012.6 1.5 2 2 0 002.7 2.7 6 6 0 010 3.6 2 2 0 00-2.7 2.7A6 6 0 0114 18a2 2 0 01-4 0 6 6 0 01-2.6-1.5 2 2 0 00-2.7-2.7 6 6 0 010-3.6 2 2 0 002.7-2.7A6 6 0 0110 4z`}),(0,$.jsx)(`circle`,{cx:`12`,cy:`12`,r:`2.5`})]}),(0,$.jsx)(kO,{label:`Clear chat`,onClick:o,children:(0,$.jsx)(`path`,{d:`M6 7h12M9 7V5h6v2m-7 0v11a1 1 0 001 1h6a1 1 0 001-1V7`})}),(0,$.jsx)(kO,{label:`Close`,onClick:()=>d(!1),children:(0,$.jsx)(`path`,{d:`M6 6l12 12M18 6L6 18`})})]})]}),_&&(0,$.jsxs)(`div`,{className:`space-y-3 border-b border-line bg-surface-2/50 px-4 py-3`,children:[(0,$.jsx)(l,{label:`Provider`,children:(0,$.jsx)(s,{value:e.provider,onChange:e=>x(e.target.value),children:ox.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.label},e.id))})}),p?.kind===`compatible`&&(0,$.jsx)(l,{label:`Base URL`,children:(0,$.jsx)(c,{value:e.baseURL,onChange:e=>t({baseURL:e.target.value}),placeholder:`https://api.example.com/v1`,spellCheck:!1})}),(0,$.jsxs)(l,{label:`Model`,children:[(0,$.jsx)(c,{list:`copilot-models`,value:e.model,onChange:e=>t({model:e.target.value}),placeholder:`model id`,spellCheck:!1}),(0,$.jsx)(`datalist`,{id:`copilot-models`,children:(p?.models??[]).map(e=>(0,$.jsx)(`option`,{value:e},e))})]}),(0,$.jsx)(l,{label:`API key`,children:(0,$.jsx)(c,{type:`password`,value:e.apiKey,onChange:e=>t({apiKey:e.target.value}),placeholder:`your provider API key`,autoComplete:`off`,spellCheck:!1})}),(0,$.jsxs)(`p`,{className:`text-xs text-faint`,children:[`Key stays in memory for this session only, never saved to disk.`,` `,p?.keyUrl&&(0,$.jsx)(`a`,{href:p.keyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-accent hover:underline`,children:`Get a key`})]}),p&&!p.browserDirect&&(0,$.jsx)(`p`,{className:`rounded-lg border border-warning/40 bg-warning/10 px-3 py-2 text-xs text-warning`,children:p.note??`This provider may block direct browser calls (CORS).`})]}),(0,$.jsxs)(`div`,{ref:y,className:`flex-1 space-y-4 overflow-y-auto px-4 py-4`,children:[n.length===0&&(0,$.jsxs)(`div`,{className:`space-y-3 pt-6`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted`,children:`Ask about your queues, jobs, DLQ, workers, or crons. I read live data and can propose actions (retry, pause, purge) that you confirm before they run.`}),(0,$.jsx)(`div`,{className:`space-y-2`,children:EO.map(e=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>b(e),disabled:!m,className:`block w-full rounded-lg border border-line px-3 py-2 text-left text-sm text-muted transition-colors hover:border-accent/50 hover:text-fg disabled:opacity-50`,children:e},e))}),!m&&(0,$.jsx)(`p`,{className:`text-xs text-warning`,children:`Set a provider, model, and API key above to start.`})]}),n.map(e=>(0,$.jsx)(AO,{message:e},e.id))]}),r.length>0&&(0,$.jsx)(`div`,{className:`space-y-2 border-t border-line px-4 py-3`,children:r.map(e=>(0,$.jsx)(jO,{confirm:e,onConfirm:()=>f(e.id,!0),onDecline:()=>f(e.id,!1)},e.id))}),(0,$.jsx)(`div`,{className:`border-t border-line px-4 py-3`,children:(0,$.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,$.jsx)(`textarea`,{value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),b(h))},rows:2,placeholder:m?`Ask the Copilot…`:`Add an API key in settings first`,disabled:!m,className:`min-h-0 flex-1 resize-none rounded-lg border border-line bg-surface-2 px-3 py-2 text-sm text-fg outline-none placeholder:text-faint focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-50`}),i?(0,$.jsx)(`button`,{type:`button`,onClick:()=>wO(),className:`rounded-lg border border-line px-3 py-2 text-sm text-muted hover:bg-surface-2 hover:text-fg`,children:`Stop`}):(0,$.jsx)(`button`,{type:`button`,onClick:()=>b(h),disabled:!h.trim()||!m,className:`rounded-lg bg-accent px-4 py-2 text-sm font-medium text-accent-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-50`,children:`Send`})]})})]})]})}function kO({label:e,active:t,onClick:r,children:i}){return(0,$.jsx)(`button`,{type:`button`,"aria-label":e,onClick:r,className:n(`rounded-md p-1.5 text-muted transition-colors hover:bg-surface-2 hover:text-fg`,t&&`bg-surface-2 text-fg`),children:(0,$.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`size-4`,"aria-hidden":`true`,children:i})})}function AO({message:e}){let t=e.role===`user`;return(0,$.jsx)(`div`,{className:n(`flex`,t?`justify-end`:`justify-start`),children:(0,$.jsxs)(`div`,{className:n(`max-w-[85%] space-y-2`,t?`rounded-2xl rounded-br-sm bg-accent/15 px-3 py-2`:`w-full`),children:[(e.tools?.length??0)>0&&(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.tools?.map(e=>(0,$.jsxs)(`span`,{className:n(`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px]`,DO[e.status]),title:e.error||(e.mutates?`mutating action`:`read`),children:[e.mutates&&(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`●`}),e.label,e.status===`declined`&&` (declined)`,e.status===`error`&&` (failed)`]},e.id))}),e.content&&(0,$.jsx)(`div`,{className:n(`whitespace-pre-wrap break-words text-sm`,e.error?`text-danger`:`text-fg`),children:e.content}),!e.content&&!t&&(e.tools?.length??0)===0&&(0,$.jsx)(`div`,{className:`text-sm text-faint`,children:`Thinking…`})]})})}function jO({confirm:e,onConfirm:t,onDecline:n}){let r=e.args;return(0,$.jsxs)(`div`,{className:`rounded-lg border border-warning/50 bg-warning/10 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`text-sm font-medium text-fg`,children:[`Confirm: `,e.label]}),r&&Object.keys(r).length>0&&(0,$.jsx)(`div`,{className:`mt-1 font-mono text-xs text-muted`,children:Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}: ${String(t)}`).join(` · `)}),(0,$.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:t,className:`rounded-lg bg-accent px-3 py-1.5 text-xs font-medium text-accent-fg hover:opacity-90`,children:`Confirm`}),(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`rounded-lg border border-line px-3 py-1.5 text-xs text-muted hover:bg-surface-2 hover:text-fg`,children:`Decline`})]})]})}export{OO as CopilotPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,t}from"./cn-CMFYpumL.js";import{m as n,t as r}from"./react-vendor-CHIHtdAC.js";import{
|
|
1
|
+
import{r as e,t}from"./cn-CMFYpumL.js";import{m as n,t as r}from"./react-vendor-CHIHtdAC.js";import{N as i,P as a,j as o}from"./index-BFjeS9FG.js";var s=e(n(),1),c=r();function l(e){try{let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return t.remove(),n}catch{return!1}}function u({value:e,className:n}){let[r,u]=(0,s.useState)(`idle`),d=(0,s.useRef)(null);return(0,s.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]),(0,c.jsx)(`button`,{type:`button`,onClick:async()=>{let t=!1;if(navigator.clipboard)try{await navigator.clipboard.writeText(e),t=!0}catch{}t||=l(e),u(t?`copied`:`failed`),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>u(`idle`),1500)},"aria-label":`Copy to clipboard`,title:r===`failed`?`Copy failed`:`Copy to clipboard`,className:t(`inline-flex size-6 shrink-0 items-center justify-center rounded-md text-faint transition-colors hover:bg-surface-2 hover:text-fg`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,n),children:r===`copied`?(0,c.jsx)(o,{className:`size-3.5 text-success`}):r===`failed`?(0,c.jsx)(i,{className:`size-3.5 text-danger`}):(0,c.jsx)(a,{className:`size-3.5`})})}export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{
|
|
1
|
+
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{F as r,K as i,O as a,T as o,a as s,b as c,c as l,h as u,k as d,x as f,y as p}from"./index-BFjeS9FG.js";import{t as m}from"./Pagination-Bj1z6OlD.js";var h=e(t(),1),g=n();function _(){let{data:e,error:t,loading:n,refetch:_}=a(()=>d.crons(),[]),v=(e?.crons??[]).slice(),[y,b]=(0,h.useState)(0),x=Math.max(1,Math.ceil(v.length/15)),S=Math.min(y,x-1),C=async e=>{if(window.confirm(`Delete cron "${e}"?`))try{await d.deleteCron(e),_()}catch{}};return(0,g.jsxs)(`div`,{children:[t&&(0,g.jsx)(f,{onRetry:_}),(0,g.jsx)(u,{title:`Cron Jobs`,description:`${v.length} scheduled`,live:!0}),n&&!e&&!t?(0,g.jsx)(c,{label:`Loading cron jobs…`}):v.length===0?(0,g.jsx)(p,{icon:(0,g.jsx)(r,{}),title:`No scheduled jobs`,hint:`Repeatable jobs created with upsertJobScheduler appear here.`}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,g.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,g.jsx)(`thead`,{children:(0,g.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,g.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Name`}),(0,g.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,g.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Schedule`}),(0,g.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Next Run`}),(0,g.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Runs`}),(0,g.jsx)(`th`,{className:`w-12 px-5 py-3`})]})}),(0,g.jsx)(`tbody`,{children:v.slice(S*15,S*15+15).map(e=>(0,g.jsxs)(`tr`,{className:`border-b border-line last:border-0 hover:bg-surface-2/40`,children:[(0,g.jsx)(`td`,{className:`px-5 py-3 font-medium text-fg`,children:e.name}),(0,g.jsx)(`td`,{className:`px-5 py-3 font-mono text-xs text-muted`,children:e.queue??`—`}),(0,g.jsx)(`td`,{className:`px-5 py-3 font-mono text-xs text-muted`,children:e.schedule??(e.repeatEvery?`every ${e.repeatEvery}ms`:`—`)}),(0,g.jsx)(`td`,{className:`px-5 py-3 text-faint`,children:s(e.nextRun)}),(0,g.jsx)(`td`,{className:`px-5 py-3 text-right tnum text-muted`,children:l(e.executions??0)}),(0,g.jsx)(`td`,{className:`px-5 py-3 text-right`,children:(0,g.jsx)(o,{"aria-label":`Delete cron`,onClick:()=>C(e.name),children:(0,g.jsx)(i,{className:`size-3.5`})})})]},e.name))})]})}),(0,g.jsx)(m,{page:S,pageSize:15,total:v.length,onPageChange:b,label:`crons`})]})]})}export{_ as Cron};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{C as r,
|
|
1
|
+
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{C as r,F as i,K as a,O as o,S as s,T as c,Z as l,a as u,b as d,c as f,h as p,w as m,x as h,y as g}from"./index-BFjeS9FG.js";import{i as _,n as v,t as y}from"./form-PtDLk33Z.js";import{t as b}from"./Pagination-Bj1z6OlD.js";var x=e(t(),1),S=n();function C(){let{data:e,error:t,loading:n,refetch:m}=o(()=>l.crons(),[]),_=e?.crons??[],[v,y]=(0,x.useState)(0),C=Math.max(1,Math.ceil(_.length/15)),T=Math.min(v,C-1),[E,D]=(0,x.useState)(null),O=async e=>{if(window.confirm(`Delete cron "${e}"?`)){D(null);try{await l.deleteCron(e),m()}catch(e){D(e.message)}}};return(0,S.jsxs)(`div`,{children:[t&&(0,S.jsx)(h,{onRetry:m}),(0,S.jsx)(p,{title:`Cron Manager`,description:`Schedule and manage repeatable jobs.`,live:!0}),E&&(0,S.jsx)(`div`,{className:`mb-4 rounded-lg border border-red-500/20 bg-red-500/5 px-4 py-2 text-sm text-danger`,children:E}),(0,S.jsxs)(s,{className:`mb-6`,children:[(0,S.jsx)(r,{title:`Create schedule`}),(0,S.jsx)(w,{onCreate:async e=>{await l.createCron(e),m()}})]}),n&&!e&&!t?(0,S.jsx)(d,{label:`Loading crons…`}):_.length===0?(0,S.jsx)(g,{icon:(0,S.jsx)(i,{}),title:`No scheduled jobs`,hint:`Create one above.`}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,S.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,S.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Name`}),(0,S.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Queue`}),(0,S.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Schedule`}),(0,S.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Next Run`}),(0,S.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Runs`}),(0,S.jsx)(`th`,{className:`w-12 px-5 py-3`})]})}),(0,S.jsx)(`tbody`,{children:_.slice(T*15,T*15+15).map(e=>(0,S.jsxs)(`tr`,{className:`border-b border-line last:border-0 hover:bg-surface-2/40`,children:[(0,S.jsx)(`td`,{className:`px-5 py-3 font-medium text-fg`,children:e.name}),(0,S.jsx)(`td`,{className:`px-5 py-3 font-mono text-xs text-muted`,children:e.queue}),(0,S.jsx)(`td`,{className:`px-5 py-3 font-mono text-xs text-muted`,children:e.schedule??(e.repeatEvery?`every ${e.repeatEvery}ms`:`—`)}),(0,S.jsx)(`td`,{className:`px-5 py-3 text-faint`,children:u(e.nextRun)}),(0,S.jsx)(`td`,{className:`px-5 py-3 text-right tnum text-muted`,children:f(e.executions)}),(0,S.jsx)(`td`,{className:`px-5 py-3 text-right`,children:(0,S.jsx)(c,{"aria-label":`Delete cron`,onClick:()=>O(e.name),children:(0,S.jsx)(a,{className:`size-3.5`})})})]},e.name))})]})}),(0,S.jsx)(b,{page:T,pageSize:15,total:_.length,onPageChange:y,label:`crons`})]})]})}function w({onCreate:e}){let[t,n]=(0,x.useState)(``),[r,i]=(0,x.useState)(``),[a,o]=(0,x.useState)(`cron`),[s,c]=(0,x.useState)(``),[l,u]=(0,x.useState)(``),[d,f]=(0,x.useState)(`{}`),[p,h]=(0,x.useState)(null),[g,b]=(0,x.useState)(!1),[C,w]=(0,x.useState)(!1),T=async()=>{if(g)return;if(h(null),w(!1),!t.trim()||!r.trim()){h(`Name and queue are required`);return}let i={};try{i=d.trim()?JSON.parse(d):{}}catch{h(`Data is not valid JSON`);return}let o={name:t,queue:r,data:i};if(a===`cron`){if(!s.trim()){h(`Cron expression required`);return}o.schedule=s.trim()}else{let e=Number(l);if(!Number.isInteger(e)||e<=0){h(`Interval must be a whole number of milliseconds greater than 0`);return}o.repeatEvery=e}b(!0);try{await e(o),n(``),c(``),u(``),w(!0),setTimeout(()=>w(!1),3e3)}catch(e){h(e.message)}finally{b(!1)}};return(0,S.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),T()},children:[(0,S.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,S.jsx)(y,{label:`Name`,children:(0,S.jsx)(v,{value:t,onChange:e=>n(e.target.value),placeholder:`daily-report`})}),(0,S.jsx)(y,{label:`Queue`,children:(0,S.jsx)(v,{value:r,onChange:e=>i(e.target.value),placeholder:`reports`})})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[(0,S.jsx)(_,{options:[`cron`,`every`],value:a,onChange:o}),a===`cron`?(0,S.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,S.jsx)(y,{label:`Cron expression`,children:(0,S.jsx)(v,{value:s,onChange:e=>c(e.target.value),placeholder:`0 9 * * *`})})}):(0,S.jsx)(`div`,{className:`w-40`,children:(0,S.jsx)(y,{label:`Every (ms)`,children:(0,S.jsx)(v,{type:`number`,value:l,onChange:e=>u(e.target.value),placeholder:`30000`})})})]}),(0,S.jsx)(y,{label:`Data (JSON)`,children:(0,S.jsx)(v,{value:d,onChange:e=>f(e.target.value),className:`font-mono`})}),(0,S.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,S.jsx)(m,{type:`submit`,variant:`accent`,size:`sm`,disabled:g,children:g?`Creating…`:`Create`}),p&&(0,S.jsx)(`span`,{className:`text-xs text-danger`,children:p}),C&&(0,S.jsx)(`span`,{className:`text-xs text-success`,children:`Cron created ✓`})]})]})}export{C as CronManager};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as e,t}from"./cn-CMFYpumL.js";import{m as n,t as r}from"./react-vendor-CHIHtdAC.js";import{C as i,G as a,N as o,O as s,S as c,Y as l,Z as u,b as d,c as f,h as p,m,r as h,w as g,x as _,y as v}from"./index-BFjeS9FG.js";import{a as y}from"./form-PtDLk33Z.js";import{t as ee}from"./Pagination-Bj1z6OlD.js";import{t as b}from"./CopyButton-BC6QECSJ.js";var x=e(n(),1),S=r(),C=50,w=500,te=2e5,T=`bq-dash-db-history`,E=10;function D(e){let t=e==null?``:String(e);return/[",\n]/.test(t)?`"${t.replaceAll(`"`,`""`)}"`:t}function O(e,t){return[e.map(D).join(`,`),...t.map(e=>e.map(D).join(`,`))].join(`
|
|
2
|
+
`)}function k(e,t,n){let r=URL.createObjectURL(new Blob([n],{type:t})),i=document.createElement(`a`);i.href=r,i.download=e,i.click(),URL.revokeObjectURL(r)}function A(){try{let e=JSON.parse(localStorage.getItem(T)??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function j(e){try{localStorage.setItem(T,JSON.stringify(e))}catch{}return e}function M(e){return j([e,...A().filter(t=>t!==e)].slice(0,E))}function N(e){if(e==null)return`NULL`;let t=typeof e==`string`?e:String(e);try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}function P({value:e,align:n}){if(e==null)return(0,S.jsx)(`span`,{className:`italic text-faint`,children:`NULL`});let r=typeof e==`string`?e:String(e);return(0,S.jsx)(`span`,{className:t(`block max-w-[24rem] truncate`,n===`right`&&`text-right tabular-nums`),title:r,children:r})}function F({columns:e,rows:n,truncatedCells:r,colMeta:i,sort:a,onSort:o,onRowClick:s,dimmed:c}){let l=(0,x.useMemo)(()=>e.map((e,t)=>{let r=i?.[e]?.type?.toUpperCase()??``;if(/INT|REAL|NUM|DEC|DOUB|FLOA/.test(r))return!0;let a=!1;for(let e of n){let n=e[t];if(n!=null&&(a=!0,typeof n!=`number`))return!1}return a}),[e,n,i]);return(0,S.jsx)(`div`,{className:t(`max-h-[70vh] overflow-auto rounded-xl border border-line bg-surface transition-opacity`,c&&`pointer-events-none opacity-50`),children:(0,S.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsx)(`tr`,{className:`text-left text-[11px] uppercase tracking-wider text-faint`,children:e.map((e,n)=>{let r=i?.[e];return(0,S.jsx)(`th`,{className:t(`sticky top-0 z-10 whitespace-nowrap border-b border-line bg-surface px-4 py-3 font-medium`,l[n]&&`text-right`),"aria-sort":a?.col===e?a.dir===`asc`?`ascending`:`descending`:void 0,children:o?(0,S.jsxs)(`button`,{type:`button`,onClick:()=>o(e),"aria-label":`Sort by ${e}`,className:`inline-flex items-center gap-1 uppercase tracking-wider hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:[e,r?.primaryKey&&(0,S.jsx)(`span`,{className:`rounded bg-accent/15 px-1 py-0.5 text-[9px] font-semibold text-accent`,children:`PK`}),r?.type&&(0,S.jsx)(`span`,{className:`text-faint/70`,children:r.type.toLowerCase()}),(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`text-accent`,children:a?.col===e?a.dir===`asc`?`▲`:`▼`:``})]}):e},e)})})}),(0,S.jsx)(`tbody`,{children:n.map((e,n)=>(0,S.jsx)(`tr`,{onClick:s?()=>s(n):void 0,className:t(`border-b border-line font-mono text-xs last:border-0 hover:bg-surface-2/40`,s&&`cursor-pointer`),children:e.map((e,t)=>(0,S.jsx)(`td`,{className:`whitespace-nowrap px-4 py-2 text-muted`,children:(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsx)(P,{value:e,align:l[t]?`right`:`left`}),r?.[n]?.[t]&&(0,S.jsx)(`span`,{title:`Value truncated — click the row to view it in full`,className:`shrink-0 rounded bg-warning/15 px-1 text-[9px] font-semibold text-warning`,children:`…`})]})},t))},n))})]})})}function I(){let[e,n]=(0,x.useState)(``),[r,i]=(0,x.useState)(0),[a,o]=(0,x.useState)(null),[y,b]=(0,x.useState)(`data`),[T,E]=(0,x.useState)(null),[D,A]=(0,x.useState)(null),[j,M]=(0,x.useState)(`SELECT name FROM sqlite_master WHERE type = 'table'`),N=(0,x.useRef)(null),{data:P,error:I,loading:re,refetch:ie}=s(()=>u.db.tables(),[],{intervalMs:1e4}),B=(0,x.useMemo)(()=>P?.tables??[],[P]),V=I instanceof l&&I.status===404,{data:H}=s(()=>V?Promise.resolve(null):u.db.info(),[V],{intervalMs:15e3}),U=e||B[0]?.name||``;(0,x.useEffect)(()=>{!e&&B[0]&&n(B[0].name)},[e,B]);let{data:W}=s(()=>U?u.db.schema(U):Promise.resolve(null),[U],{intervalMs:3e4}),ae=(0,x.useMemo)(()=>{let e={};if(W?.table===U)for(let t of W.columns)e[t.name]={type:t.type,primaryKey:t.primaryKey};return e},[W,U]),G=T?`${T.column}|${T.op}|${T.value}`:``,{data:K,error:q,loading:J}=s((0,x.useCallback)(async()=>U?{...await u.db.rows(U,C,r*C,a?.col,a?.dir,T??void 0),page:r,filterKey:G}:null,[U,r,a,T,G]),[U,r,a,G],{intervalMs:6e3}),Y=K&&K.table===U&&K.page===r&&K.orderBy===(a?.col??null)&&(!a||K.dir===a.dir)&&K.filterKey===G?K:null;(0,x.useEffect)(()=>{Y&&Y.total>0&&Y.rows.length===0&&r>0&&i(Math.max(0,Math.ceil(Y.total/C)-1))},[Y,r]);let[X,Z]=(0,x.useState)(!1),[Q,$]=(0,x.useState)(null),oe=()=>{i(0),o(null),E(null),A(null)},se=e=>{n(e),b(`data`),oe()},ce=e=>{i(0),A(null),o(t=>t?.col===e?t.dir===`asc`?{col:e,dir:`desc`}:null:{col:e,dir:`asc`})},le=()=>{Y&&k(`${Y.table}-page${r+1}.csv`,`text/csv`,O(Y.columns,Y.rows))},ue=async()=>{if(!(!U||X)){Z(!0),$(null);try{let e=[],t=[],n=0,r=!1;for(;;){let i=await u.db.rows(U,w,n,a?.col,a?.dir,T??void 0);if(t=i.columns,e.push(...i.rows),n+=w,e.length>=te){r=!0;break}if(i.rows.length<w||n>=i.total)break}k(`${U}.csv`,`text/csv`,O(t,e)),$(r?`Exported the first ${f(e.length)} rows (export cap reached)`:`Exported ${f(e.length)} rows`)}catch(e){$(`Export failed: ${e.message}`)}finally{Z(!1)}}},de=()=>{M(`SELECT * FROM "${U.replaceAll(`"`,`""`)}" LIMIT 100`),requestAnimationFrame(()=>{N.current?.focus(),N.current?.scrollIntoView({behavior:`smooth`,block:`center`})})},fe=!!Y?.truncatedCells.some(e=>e.some(Boolean));return(0,S.jsxs)(`div`,{children:[(0,S.jsx)(p,{title:`Database`,description:`SQLite inspector — schema, data and queries over a read-only connection.`,actions:(0,S.jsx)(`span`,{className:`rounded-full bg-emerald-500/10 px-2.5 py-1 text-[11px] font-medium text-success`,children:`read-only`})}),I&&!V&&(0,S.jsx)(_,{message:`Could not read the database — ${I.message}`,onRetry:ie}),H&&(0,S.jsxs)(`div`,{className:`mb-6 grid grid-cols-2 gap-4 md:grid-cols-3 xl:grid-cols-5`,children:[(0,S.jsx)(m,{label:`SQLite`,value:H.sqliteVersion,compact:!0}),(0,S.jsx)(m,{label:`On disk`,value:h(H.fileSize+H.walSize),compact:!0}),(0,S.jsx)(m,{label:`Journal`,value:H.journalMode.toUpperCase(),compact:!0}),(0,S.jsx)(m,{label:`Tables`,value:f(H.tables),compact:!0}),(0,S.jsx)(m,{label:`Indexes`,value:f(H.indexes),compact:!0})]}),V?(0,S.jsx)(v,{title:`No database yet`,hint:I.message}):re&&B.length===0?(0,S.jsx)(d,{label:`Reading database…`}):(0,S.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-4`,children:[(0,S.jsxs)(c,{padded:!1,className:`self-start overflow-hidden`,children:[(0,S.jsxs)(`div`,{className:`border-b border-line px-4 py-3 text-[11px] font-medium uppercase tracking-wider text-faint`,children:[`Tables (`,B.length,`)`]}),(0,S.jsxs)(`ul`,{className:`max-h-[28rem] overflow-y-auto`,children:[B.map(e=>(0,S.jsx)(`li`,{children:(0,S.jsxs)(`button`,{type:`button`,onClick:()=>se(e.name),className:t(`flex w-full items-center justify-between gap-2 px-4 py-2 text-left text-sm transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,U===e.name?`bg-surface-2 text-fg`:`text-muted hover:bg-surface-2/60 hover:text-fg`),children:[(0,S.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs`,children:e.name}),(0,S.jsx)(`span`,{className:`shrink-0 text-[11px] text-faint tabular-nums`,children:f(e.rows)})]})},e.name)),B.length===0&&(0,S.jsx)(`li`,{className:`px-4 py-6 text-center text-xs text-faint`,children:`No tables.`})]})]}),(0,S.jsx)(`div`,{className:`min-w-0 lg:col-span-3`,children:B.length===0?(0,S.jsx)(v,{title:`No tables`,hint:`This database has no user tables yet.`}):(0,S.jsxs)(S.Fragment,{children:[U&&(0,S.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(`span`,{className:`mr-auto min-w-0 truncate font-mono text-sm text-fg`,title:U,children:U}),(0,S.jsx)(g,{size:`sm`,variant:`ghost`,onClick:de,children:`Query`}),(0,S.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-line bg-surface p-1`,children:[`data`,`schema`].map(e=>(0,S.jsx)(`button`,{type:`button`,onClick:()=>b(e),"aria-pressed":y===e,className:t(`rounded-md px-3 py-1 text-xs font-medium capitalize transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,y===e?`bg-surface-2 text-fg`:`text-muted hover:text-fg`),children:e},e))}),y===`data`&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(g,{size:`sm`,disabled:!Y||Y.rows.length===0,title:Y?`Exports the ${Y.rows.length} rows on this page only`:void 0,onClick:le,children:[`Export page`,Y?` (${Y.rows.length})`:``]}),(0,S.jsx)(g,{size:`sm`,variant:`accent`,disabled:X||!Y||Y.total===0,onClick:ue,children:X?`Exporting…`:`Export table${Y?` (${f(Y.total)})`:``}`})]})]}),y===`data`&&U&&(0,S.jsx)(L,{columns:Y?.columns??W?.columns.map(e=>e.name)??[],filter:T,onChange:e=>{E(e),i(0),A(null)}}),Q&&(0,S.jsx)(`p`,{className:`mb-3 text-xs text-muted`,children:Q}),y===`schema`?W?.table===U?(0,S.jsx)(z,{schema:W}):(0,S.jsx)(d,{label:`Reading schema of ${U}…`}):q&&!Y?(0,S.jsx)(v,{title:`Could not read table`,hint:q.message}):J&&!Y&&K?.table!==U?(0,S.jsx)(d,{label:`Reading ${U}…`}):!Y&&!K?(0,S.jsx)(v,{title:`Select a table`,hint:`Pick a table on the left to browse its rows.`}):(Y??K)&&(Y??K)?.total===0?(0,S.jsx)(v,{title:T?`No matching rows`:`Empty table`,hint:T?`No rows match the current filter.`:`"${(Y??K)?.table}" has no rows.`}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(F,{columns:(Y??K)?.columns??[],rows:(Y??K)?.rows??[],truncatedCells:(Y??K)?.truncatedCells,colMeta:ae,sort:a,onSort:ce,onRowClick:e=>A(e),dimmed:J&&!Y}),fe&&(0,S.jsx)(`p`,{className:`mt-2 text-[11px] text-faint`,children:`Cells over 2000 chars and BLOBs are abbreviated in the grid and CSV — click a row to view the full value.`}),(0,S.jsx)(ee,{page:r,pageSize:C,total:(Y??K)?.total??0,onPageChange:e=>{i(e),A(null)},label:`rows`})]}),(0,S.jsx)(ne,{sql:j,setSql:M,editorRef:N})]})})]}),Y&&D!=null&&Y.rows[D]&&(0,S.jsx)(R,{table:Y.table,columns:Y.columns,row:Y.rows[D],rowid:Y.rowids[D],truncated:Y.truncatedCells[D],onClose:()=>A(null)})]})}function L({columns:e,filter:t,onChange:n}){let[r,i]=(0,x.useState)(t?.column??``),[o,s]=(0,x.useState)(t?.op??`contains`),[c,l]=(0,x.useState)(t?.value??``),u=r||e[0]||``,d=()=>n(c.trim()?{column:u,op:o,value:c.trim()}:null);return e.length===0?null:(0,S.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(`div`,{className:`w-40`,children:(0,S.jsx)(y,{value:u,"aria-label":`Filter column`,onChange:e=>i(e.target.value),children:e.map(e=>(0,S.jsx)(`option`,{value:e,children:e},e))})}),(0,S.jsx)(`div`,{className:`w-32`,children:(0,S.jsxs)(y,{value:o,"aria-label":`Filter operator`,onChange:e=>s(e.target.value),children:[(0,S.jsx)(`option`,{value:`contains`,children:`contains`}),(0,S.jsx)(`option`,{value:`eq`,children:`=`}),(0,S.jsx)(`option`,{value:`ne`,children:`≠`})]})}),(0,S.jsxs)(`div`,{className:`relative min-w-40 flex-1`,children:[(0,S.jsx)(a,{className:`pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-faint`}),(0,S.jsx)(`input`,{value:c,onChange:e=>l(e.target.value),onKeyDown:e=>e.key===`Enter`&&d(),"aria-label":`Filter value`,placeholder:`value — Enter to filter`,className:`h-9 w-full rounded-lg border border-line bg-surface pl-8 pr-3 text-sm text-fg placeholder:text-faint focus:border-accent/60 focus:outline-none focus:ring-2 focus:ring-accent/30`})]}),(0,S.jsx)(g,{size:`sm`,onClick:d,disabled:!c.trim(),children:`Filter`}),t&&(0,S.jsx)(g,{size:`sm`,variant:`ghost`,onClick:()=>{l(``),n(null)},children:`Clear`})]})}function R({table:e,columns:t,row:n,rowid:r,truncated:i,onClose:a}){let[s,c]=(0,x.useState)({});return(0,x.useEffect)(()=>{let e=e=>e.key===`Escape`&&a();return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]),(0,x.useEffect)(()=>{if(r==null)return;let n=!1;return(async()=>{for(let a=0;a<t.length;a++)if(i[a])try{let i=await u.db.cell(e,r,t[a]);n||c(e=>({...e,[t[a]]:i.value}))}catch{}})(),()=>{n=!0}},[e,r,t,i]),(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`button`,{type:`button`,"aria-label":`Close row detail`,onClick:a,className:`fixed inset-0 z-40 bg-black/50`}),(0,S.jsxs)(`aside`,{className:`fixed inset-y-0 right-0 z-50 flex w-full max-w-xl flex-col border-l border-line bg-surface shadow-xl`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-5 py-4`,children:[(0,S.jsxs)(`h2`,{className:`font-mono text-sm text-fg`,children:[e,` · row detail`]}),(0,S.jsx)(`button`,{type:`button`,"aria-label":`Close`,onClick:a,className:`flex size-8 items-center justify-center rounded-lg text-muted hover:bg-surface-2 hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:(0,S.jsx)(o,{className:`size-4`})})]}),(0,S.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,S.jsx)(`dl`,{className:`flex flex-col gap-4`,children:t.map((e,t)=>{let r=e in s?s[e]:n[t],a=N(r),o=a.includes(`
|
|
3
|
+
`)||a.length>80;return(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`dt`,{className:`mb-1 flex items-center gap-1.5 text-[11px] uppercase tracking-wider text-faint`,children:[e,r!=null&&(0,S.jsx)(b,{value:String(r)}),i[t]&&!(e in s)&&(0,S.jsx)(`span`,{className:`text-warning`,children:`(loading full value…)`})]}),(0,S.jsx)(`dd`,{children:r==null?(0,S.jsx)(`span`,{className:`italic text-faint`,children:`NULL`}):o?(0,S.jsx)(`pre`,{className:`max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-2 p-3 font-mono text-xs text-muted`,children:a}):(0,S.jsx)(`span`,{className:`break-words font-mono text-sm text-fg`,children:a})})]},e)})})})]})]})}function z({schema:e}){return(0,S.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,S.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,S.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,S.jsx)(`th`,{className:`px-4 py-3 font-medium`,children:`Column`}),(0,S.jsx)(`th`,{className:`px-4 py-3 font-medium`,children:`Type`}),(0,S.jsx)(`th`,{className:`px-4 py-3 font-medium`,children:`Constraints`}),(0,S.jsx)(`th`,{className:`px-4 py-3 font-medium`,children:`Default`})]})}),(0,S.jsx)(`tbody`,{children:e.columns.map(e=>(0,S.jsxs)(`tr`,{className:`border-b border-line last:border-0`,children:[(0,S.jsx)(`td`,{className:`px-4 py-2 font-mono text-xs text-fg`,children:e.name}),(0,S.jsx)(`td`,{className:`px-4 py-2 font-mono text-xs text-muted`,children:e.type}),(0,S.jsxs)(`td`,{className:`px-4 py-2 text-xs`,children:[e.primaryKey&&(0,S.jsx)(`span`,{className:`mr-1 rounded-md bg-accent/15 px-1.5 py-0.5 text-[10px] font-semibold text-accent`,children:`PK`}),e.notNull&&(0,S.jsx)(`span`,{className:`rounded-md bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-muted`,children:`NOT NULL`})]}),(0,S.jsx)(`td`,{className:`px-4 py-2 font-mono text-xs text-faint`,children:e.defaultValue??`—`})]},e.name))})]})}),(0,S.jsxs)(c,{children:[(0,S.jsx)(i,{title:`Indexes (${e.indexes.length})`}),e.indexes.length===0?(0,S.jsx)(`p`,{className:`text-xs text-faint`,children:`No indexes on this table.`}):(0,S.jsx)(`ul`,{className:`flex flex-col gap-1.5`,children:e.indexes.map(e=>(0,S.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2 font-mono text-xs`,children:[(0,S.jsx)(`span`,{className:`text-fg`,children:e.name}),e.unique&&(0,S.jsx)(`span`,{className:`rounded-md bg-accent/15 px-1.5 py-0.5 text-[10px] font-semibold text-accent`,children:`UNIQUE`}),(0,S.jsxs)(`span`,{className:`text-faint`,children:[`(`,e.columns.join(`, `),`)`]})]},e.name))})]}),e.sql&&(0,S.jsxs)(c,{children:[(0,S.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,S.jsx)(`h3`,{className:`text-base font-semibold text-fg`,children:`DDL`}),(0,S.jsx)(b,{value:e.sql})]}),(0,S.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-surface-2 p-3 font-mono text-xs text-muted`,children:e.sql})]})]})}function ne({sql:e,setSql:t,editorRef:n}){let[r,a]=(0,x.useState)(!1),[o,s]=(0,x.useState)(null),[l,d]=(0,x.useState)(A),[p,m]=(0,x.useState)(null),h=(0,x.useRef)(0);(0,x.useEffect)(()=>()=>{h.current++},[]);let _=async(t=e,n=!0)=>{if(!t.trim()||r)return;let i=++h.current;a(!0),s(null);try{let r=await u.db.query(t);if(i!==h.current)return;m(r),n&&d(M(e.trim()))}catch(e){if(i!==h.current)return;m(null),s(e.message)}finally{i===h.current&&a(!1)}};return(0,S.jsxs)(c,{className:`mt-6`,children:[(0,S.jsx)(i,{title:`Query`,action:(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsx)(g,{size:`sm`,disabled:r||!e.trim(),onClick:()=>{let t=e.trim();t&&_(`EXPLAIN QUERY PLAN ${t}`,!1)},children:`Explain`}),(0,S.jsx)(g,{size:`sm`,variant:`accent`,disabled:r||!e.trim(),onClick:()=>_(),children:r?`Running…`:`Run`})]})}),(0,S.jsx)(`textarea`,{ref:n,value:e,onChange:e=>t(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&_()},rows:3,spellCheck:!1,"aria-label":`SQL query`,placeholder:`SELECT … — read-only: writes are rejected by the engine`,className:`w-full resize-y rounded-lg border border-line bg-surface-2 p-3 font-mono text-xs text-fg placeholder:text-faint focus:border-accent/60 focus:outline-none focus:ring-2 focus:ring-accent/30`}),(0,S.jsx)(`p`,{className:`mt-1 text-[11px] text-faint`,children:`⌘/Ctrl+Enter runs. Connection is read-only.`}),l.length>0&&(0,S.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-1.5`,children:[(0,S.jsx)(`span`,{className:`text-[11px] uppercase tracking-wider text-faint`,children:`History`}),l.map(e=>(0,S.jsx)(`button`,{type:`button`,onClick:()=>t(e),title:e,className:`max-w-56 truncate rounded-md border border-line bg-surface-2 px-2 py-1 font-mono text-[11px] text-muted transition-colors hover:border-line-strong hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:e},e)),(0,S.jsx)(`button`,{type:`button`,onClick:()=>{j([]),d([])},className:`rounded-md px-2 py-1 text-[11px] text-faint transition-colors hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:`Clear`})]}),(0,S.jsxs)(`div`,{"aria-live":`polite`,children:[o&&(0,S.jsx)(`p`,{role:`alert`,className:`mt-3 text-xs text-danger`,children:o}),p&&!o&&(0,S.jsxs)(`div`,{className:`mt-4`,children:[(0,S.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-3`,children:[(0,S.jsxs)(`p`,{className:`text-xs text-faint`,children:[p.truncated?`≥ `:``,f(p.rowCount),` row`,p.rowCount===1?``:`s`,` ·`,` `,f(p.ms),` ms`,p.truncated&&(0,S.jsxs)(`span`,{className:`text-warning`,children:[` — showing first `,p.rows.length]})]}),p.rows.length>0&&(0,S.jsxs)(`div`,{className:`ml-auto flex gap-2`,children:[(0,S.jsx)(g,{size:`sm`,onClick:()=>k(`query-results.csv`,`text/csv`,O(p.columns,p.rows)),children:`CSV`}),(0,S.jsx)(g,{size:`sm`,onClick:()=>k(`query-results.json`,`application/json`,JSON.stringify(p.rows.map(e=>Object.fromEntries(p.columns.map((t,n)=>[t,e[n]]))),null,2)),children:`JSON`})]})]}),p.rows.length>0?(0,S.jsx)(F,{columns:p.columns,rows:p.rows}):(0,S.jsx)(`p`,{className:`text-xs text-faint`,children:`Query returned no rows.`})]})]})]})}export{I as Database};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{C as r,
|
|
1
|
+
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{C as r,O as i,S as a,Z as o,b as s,c,d as l,h as u,m as d,r as f,w as p,x as m}from"./index-BFjeS9FG.js";var h=e(t(),1),g=n(),_={health:{},storage:null,stats:null};function v(){let{data:e,error:t,loading:n,refetch:v}=i(async()=>{let[e,t,n]=await Promise.all([o.health(),o.storage().catch(()=>null),o.stats().catch(()=>null)]);return{health:e,storage:t,stats:n}},[]),[x,S]=(0,h.useState)(null),C=async()=>{S(`…`);let e=performance.now();try{await o.ping(),S(`${Math.round(performance.now()-e)} ms`)}catch{S(`unreachable`)}};if(n&&!e&&!t)return(0,g.jsx)(s,{label:`Loading diagnostics…`});let w=e??_,T=w.health,E=w.storage?.data,D=w.stats?.stats;return(0,g.jsxs)(`div`,{children:[(0,g.jsx)(u,{title:`Diagnostics`,description:`Server health, storage, memory and connections.`,live:!t}),t&&(0,g.jsx)(m,{onRetry:v}),(0,g.jsxs)(`div`,{className:`mb-6 grid grid-cols-2 gap-4 md:grid-cols-4`,children:[(0,g.jsx)(d,{label:`Status`,value:T.status??(T.ok?`healthy`:`degraded`),tone:T.ok?`green`:`red`,compact:!0}),(0,g.jsx)(d,{label:`Version`,value:T.version?`v${T.version}`:`—`,compact:!0}),(0,g.jsx)(d,{label:`Uptime`,value:l(T.uptime),compact:!0}),(0,g.jsx)(d,{label:`Disk`,value:E?.diskFull?`Full`:`Healthy`,tone:E?.diskFull?`red`:`green`,compact:!0})]}),(0,g.jsxs)(`div`,{className:`grid grid-cols-1 gap-6 lg:grid-cols-2`,children:[(0,g.jsxs)(a,{children:[(0,g.jsx)(r,{title:`Connectivity`,action:(0,g.jsxs)(p,{size:`sm`,onClick:C,children:[`Ping`,x?` · ${x}`:``]})}),(0,g.jsxs)(`dl`,{className:`divide-y divide-line text-sm`,children:[(0,g.jsx)(y,{k:`WebSocket clients`,v:String(T.connections?.ws??0)}),(0,g.jsx)(y,{k:`SSE clients`,v:String(T.connections?.sse??0)}),(0,g.jsx)(y,{k:`Storage error`,v:E?.error?String(E.error):`none`})]})]}),(0,g.jsxs)(a,{children:[(0,g.jsx)(r,{title:`Memory`}),(0,g.jsxs)(`div`,{className:`grid grid-cols-3 gap-4`,children:[(0,g.jsx)(b,{k:`Heap used`,v:f((T.memory?.heapUsed??0)*1024*1024)}),(0,g.jsx)(b,{k:`Heap total`,v:f((T.memory?.heapTotal??0)*1024*1024)}),(0,g.jsx)(b,{k:`RSS`,v:f((T.memory?.rss??0)*1024*1024)})]})]})]}),D&&(0,g.jsxs)(a,{className:`mt-6`,children:[(0,g.jsx)(r,{title:`Totals since restart`}),(0,g.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 md:grid-cols-4`,children:[(0,g.jsx)(b,{k:`Pushed`,v:c(D.totalPushed)}),(0,g.jsx)(b,{k:`Pulled`,v:c(D.totalPulled)}),(0,g.jsx)(b,{k:`Completed`,v:c(D.totalCompleted)}),(0,g.jsx)(b,{k:`Failed`,v:c(D.totalFailed)})]})]})]})}function y({k:e,v:t}){return(0,g.jsxs)(`div`,{className:`flex items-center justify-between py-2.5`,children:[(0,g.jsx)(`dt`,{className:`text-muted`,children:e}),(0,g.jsx)(`dd`,{className:`font-medium text-fg`,children:t})]})}function b({k:e,v:t}){return(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-faint`,children:e}),(0,g.jsx)(`div`,{className:`mt-1 text-lg font-semibold tnum text-fg`,children:t})]})}export{v as Diagnostics};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./cn-CMFYpumL.js";import{m as t,t as n}from"./react-vendor-CHIHtdAC.js";import{I as r,O as i,b as a,c as o,h as s,k as c,m as l,u,w as d,x as f,y as p}from"./index-BFjeS9FG.js";import{a as m}from"./form-PtDLk33Z.js";import{t as h}from"./Pagination-Bj1z6OlD.js";var g=e(t(),1),_=n(),v=25;function y(){let[e,t]=(0,g.useState)(``),[n,y]=(0,g.useState)(0),[b,x]=(0,g.useState)(!1),[S,C]=(0,g.useState)(null),{data:w}=i(()=>c.queues(500),[],{intervalMs:3e4});(0,g.useEffect)(()=>{e||!w?.queues?.length||t((w.queues.find(e=>e.dlq>0)??w.queues[0]).name)},[w,e]);let{data:T,error:E,loading:D,refetch:O}=i((0,g.useCallback)(async()=>{if(!e)return{entries:[],total:0};let t=await c.dlq(e,v,n*v);return{entries:t.entries??[],total:t.total??t.entries?.length??0}},[e,n]),[e,n]),k=async(t,n)=>{if(window.confirm(`${t} the dead letter queue for "${e}"?`)){x(!0),C(null);try{await n(),C(`${t} done`),O()}catch(e){C(e.message)}finally{x(!1)}}},A=T?.entries??[];return(0,_.jsxs)(`div`,{children:[E&&(0,_.jsx)(f,{onRetry:O}),(0,_.jsx)(s,{title:`Dead Letter Queue`,description:`Jobs that exhausted their retries.`,live:!0,actions:(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d,{size:`sm`,disabled:!e||b,onClick:()=>k(`Retry`,()=>c.retryDlq(e)),children:`Retry all`}),(0,_.jsx)(d,{variant:`danger`,size:`sm`,disabled:!e||b,onClick:()=>k(`Purge`,()=>c.purgeDlq(e)),children:`Purge`})]})}),(0,_.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-center gap-3`,children:[(0,_.jsx)(`div`,{className:`w-56`,children:(0,_.jsx)(m,{value:e,onChange:e=>{t(e.target.value),y(0)},children:(w?.queues??[]).map(e=>(0,_.jsxs)(`option`,{value:e.name,children:[e.name,` `,e.dlq?`(${e.dlq})`:``]},e.name))})}),(0,_.jsx)(`div`,{className:`w-40`,children:(0,_.jsx)(l,{label:`DLQ Entries`,value:o(T?.total),tone:T?.total?`red`:`default`,compact:!0})}),S&&(0,_.jsx)(`span`,{className:`text-xs text-muted`,children:S})]}),D&&!T&&!E?(0,_.jsx)(a,{label:`Loading DLQ…`}):A.length===0?(0,_.jsx)(p,{icon:(0,_.jsx)(r,{}),title:`Dead letter queue is empty`,hint:`Jobs land here after exhausting their retry attempts.`}):(0,_.jsx)(`div`,{className:`overflow-x-auto rounded-xl border border-line bg-surface`,children:(0,_.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,_.jsx)(`thead`,{children:(0,_.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,_.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Job ID`}),(0,_.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Name`}),(0,_.jsx)(`th`,{className:`px-5 py-3 font-medium`,children:`Reason`}),(0,_.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Attempts`}),(0,_.jsx)(`th`,{className:`px-5 py-3 text-right font-medium`,children:`Failed`})]})}),(0,_.jsx)(`tbody`,{children:A.map((e,t)=>(0,_.jsxs)(`tr`,{className:`border-b border-line last:border-0 align-top hover:bg-surface-2/40`,children:[(0,_.jsx)(`td`,{className:`px-5 py-3 font-mono text-xs text-muted`,children:e.jobId??e.id}),(0,_.jsx)(`td`,{className:`px-5 py-3 text-fg`,children:e.name||`unknown`}),(0,_.jsx)(`td`,{className:`max-w-md px-5 py-3 text-xs text-red-400/90`,children:String(e.reason||e.error||`—`)}),(0,_.jsx)(`td`,{className:`px-5 py-3 text-right tnum text-muted`,children:Array.isArray(e.attempts)?e.attempts.length:e.attempts??`—`}),(0,_.jsx)(`td`,{className:`px-5 py-3 text-right text-faint`,children:u(e.failedAt??e.enteredAt)})]},e.jobId??e.id??t))})]})}),T&&(0,_.jsx)(h,{page:n,pageSize:v,total:T.total,onPageChange:y,label:`entries`})]})}export{y as Dlq};
|