@xenosystem/agent-sdk 0.9.34 → 0.9.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifacts/index.cjs +1 -1
- package/dist/artifacts/index.js +1 -1
- package/dist/automation/index.cjs +1 -1
- package/dist/automation/index.js +1 -1
- package/dist/control-plane/index.cjs +1 -1
- package/dist/control-plane/index.js +1 -1
- package/dist/electron/index.cjs +1 -1
- package/dist/electron/index.js +1 -1
- package/dist/electron/metafile-cjs.json +1 -1
- package/dist/electron/metafile-esm.json +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/providers/index.cjs +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/metafile-cjs.json +1 -1
- package/dist/providers/metafile-esm.json +1 -1
- package/dist/session/index.cjs +1 -1
- package/dist/session/index.js +1 -1
- package/package.json +1 -1
package/dist/providers/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
`).trim();o.length>0&&t.push({role:n.role,content:o})}return t}var In="http://localhost:3338",Ln=ht,On=2e3,Xe=12e4,Mn=3e4,ye=class{localUrl;cloudUrl;cloudApiKey;mode;defaultLocalModel;defaultCloudModel;localAvailable=null;localModelName=null;lastHealthCheck=0;constructor(t){this.localUrl=t?.localUrl??In,this.cloudUrl=t?.cloudUrl??Ln,this.cloudApiKey=t?.cloudApiKey??process.env.XENO_API_KEY??"",this.mode=t?.mode??"auto",this.defaultLocalModel=t?.localModel??"default",this.defaultCloudModel=t?.cloudModel??"claude-sonnet-4-6"}async chat(t){let n=await this.shouldUseLocal();if(this.mode==="local"&&!n)return{success:!1,content:"",endpoint:"local",model:"",usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:"Local xeno-rt is not available and mode is set to local-only"};if(n)try{return await this.chatLocal(t)}catch(r){return this.mode==="local"?{success:!1,content:"",endpoint:"local",model:t.model??this.defaultLocalModel,usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:r instanceof Error?r.message:String(r)}:this.chatCloud(t)}return this.chatCloud(t)}async*chatStream(t){let n=await this.shouldUseLocal();if(this.mode==="local"&&!n)throw new Error("Local xeno-rt is not available and mode is set to local-only");let r=n?this.localUrl:this.cloudUrl,o=t.model??(n?this.defaultLocalModel:this.defaultCloudModel),i=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,s={model:o,messages:i,stream:!0,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(s.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(s.stop=t.stop);let a={"Content-Type":"application/json"};n||(a.Authorization=`Bearer ${this.cloudApiKey}`,a["User-Agent"]="XenoAgentSDK/0.4.0");let l=new AbortController,c=setTimeout(()=>l.abort(),Xe);try{let d=await fetch(`${r}/v1/chat/completions`,{method:"POST",headers:a,body:JSON.stringify(s),signal:l.signal});if(!d.ok){let g=await d.text().catch(()=>"");throw new Error(`LLM stream failed (HTTP ${d.status}): ${g}`)}if(!d.body)throw new Error("Response body is null \u2014 streaming not supported");let u=d.body.getReader(),m=new TextDecoder,p="";for(;;){let{done:g,value:y}=await u.read();if(g)break;p+=m.decode(y,{stream:!0});let f=p.split(`
|
|
3
3
|
`);p=f.pop()??"";for(let x of f){let C=x.trim();if(!C||!C.startsWith("data: "))continue;let v=C.slice(6);if(v==="[DONE]")return;try{let j=JSON.parse(v).choices[0]?.delta.content;j&&(yield j)}catch{}}}}finally{clearTimeout(c)}}async isLocalAvailable(t=!1){let n=Date.now();if(!t&&this.localAvailable!==null&&n-this.lastHealthCheck<Mn)return this.localAvailable;try{let r=new AbortController,o=setTimeout(()=>r.abort(),On);try{let i=await fetch(`${this.localUrl}/v1/models`,{signal:r.signal});if(!i.ok)return this.localAvailable=!1,this.localModelName=null,this.lastHealthCheck=n,!1;let s=await i.json();return this.localModelName=s.data?.[0]?.id??null,this.localAvailable=!0,this.lastHealthCheck=n,!0}finally{clearTimeout(o)}}catch{return this.localAvailable=!1,this.localModelName=null,this.lastHealthCheck=n,!1}}setMode(t){this.mode=t}getMode(){return this.mode}setLocalUrl(t){this.localUrl=t,this.localAvailable=null,this.lastHealthCheck=0}setCloudApiKey(t){this.cloudApiKey=t}async getStatus(){let t=await this.isLocalAvailable(),n;return this.mode==="local"?n="local":this.mode==="cloud"?n="cloud":n=t?"local":"cloud",{mode:this.mode,localAvailable:t,activeEndpoint:n,localModel:this.localModelName??void 0,localUrl:this.localUrl,cloudUrl:this.cloudUrl}}asLLMProvider(t){return bt(this,t)}async shouldUseLocal(){return this.mode==="cloud"?!1:this.mode==="local"?this.isLocalAvailable():this.isLocalAvailable()}async chatLocal(t){let n=t.model??this.defaultLocalModel,r=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,o={model:n,messages:r,stream:!1,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(o.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(o.stop=t.stop);let i=new AbortController,s=setTimeout(()=>i.abort(),Xe);try{let a=await fetch(`${this.localUrl}/v1/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),signal:i.signal});if(!a.ok){let p=await a.text().catch(()=>"");throw new Error(`Local LLM request failed (HTTP ${a.status}): ${p}`)}let l=await a.json(),u=(l.choices?.[0]??{}).message??{},m=l.usage??{};return{success:!0,content:String(u.content??""),endpoint:"local",model:String(l.model??n),usage:{promptTokens:m.prompt_tokens??0,completionTokens:m.completion_tokens??0,totalTokens:m.total_tokens??0}}}finally{clearTimeout(s)}}async chatCloud(t){let n=t.model??this.defaultCloudModel,r=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,o={model:n,messages:r,stream:!1,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(o.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(o.stop=t.stop);let i={"Content-Type":"application/json",Authorization:`Bearer ${this.cloudApiKey}`,"User-Agent":"XenoAgentSDK/0.4.0"},s=new AbortController,a=setTimeout(()=>s.abort(),Xe);try{let l=await fetch(`${this.cloudUrl}/v1/chat/completions`,{method:"POST",headers:i,body:JSON.stringify(o),signal:s.signal});if(!l.ok){let g=`Cloud LLM request failed (HTTP ${l.status})`;try{let f=(await l.json()).error;g=typeof f=="string"?f:f?.message??g}catch{}return{success:!1,content:"",endpoint:"cloud",model:n,usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:g}}let c=await l.json(),m=(c.choices?.[0]??{}).message??{},p=c.usage??{};return{success:!0,content:String(m.content??""),endpoint:"cloud",model:String(c.model??n),usage:{promptTokens:p.prompt_tokens??0,completionTokens:p.completion_tokens??0,totalTokens:p.total_tokens??0}}}finally{clearTimeout(a)}}};var Ee=require("node:crypto");function $n(e){return/^data:([^;,]+)[;,]/i.exec(e.trim())?.[1]}function Nn(e){let t=[];for(let n of e){if(n.type==="text"){t.push(n.text);continue}if(n.type==="image_url"){t.push(`[image ${$n(n.image_url.url)??"unknown"}]`);continue}let r=n.text??n.data;if(r&&r.trim().length>0){t.push(r);continue}let o=n.uri??n.mimeType??"resource";t.push(`[resource ${o}]`)}return t.join(`
|
|
4
4
|
|
|
5
|
-
`).trim()}function ie(e){return typeof e=="string"?e:Nn(e)}var Pe=require("node:perf_hooks");var Dn=1;var jn=12,qn=128,Un=/^xeno\.[a-z0-9]+(?:[._][a-z0-9]+)*$/u,Jn=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u,Xn=/(?:[\\/]|@|https?:|bearer|token|secret|password|credential|api[_-]?key|[0-9a-f]{8}-[0-9a-f-]{27,})/iu,Vn=new Set(["arch","cached","capability","category","component","contained","error_code","frame_kind","gate","method","mode","operation","outcome","platform","previous_state","protocol_version","provider","queue","reason","recovery","retry_kind","state","status","tool","transport","trigger"]),wt=new Set,vt=new Map;function Bn(e){let t=e.trim().toLowerCase();return!t||t.length>64||Xn.test(t)||!Jn.test(t)?null:t}function Hn(e,t){if(typeof t=="boolean")return t;if(typeof t=="number")return e!=="protocol_version"||!Number.isInteger(t)||t<0||t>100?null:t;if(typeof t!="string")return null;let n=Bn(t);if(!n)return null;let r=vt.get(e);return r||(r=new Set,vt.set(e,r)),!r.has(n)&&r.size>=qn?"other":(r.add(n),n)}function zn(e={}){let t={};for(let[n,r]of Object.entries(e)){if(Object.keys(t).length>=jn)break;if(!Vn.has(n))continue;let o=Hn(n,r);o!==null&&(t[n]=o)}return Object.freeze(t)}function Pt(e){if(wt.size===0||!Un.test(e.name)||e.name.length>128)return;let t=e.kind==="event"?1:e.value??1;if(!Number.isFinite(t)||t<0)return;let n=Object.freeze({schemaVersion:Dn,kind:e.kind,name:e.name,value:Math.min(t,Number.MAX_SAFE_INTEGER),timestamp:(e.timestamp??new Date).toISOString(),attributes:zn(e.attributes)});for(let r of wt)try{r(n)}catch{}}function Y(e,t=1,n){Pt({kind:"counter",name:e,value:t,attributes:n})}function Ve(e,t,n){Pt({kind:"histogram",name:e,value:t,attributes:n})}var Tt=require("node:dns/promises"),se=require("node:net");var Kn=["context length","context window","maximum context","too many tokens","request too large"];function xt(e){let t=e.toLowerCase();return Kn.some(n=>t.includes(n))}var P=class extends Error{category;code;retryable;providerId;statusCode;retryAfterMs;requestId;constructor(t,n){super(t,n.cause!==void 0?{cause:n.cause}:void 0),this.name="ProviderError",this.category=n.category,this.code=n.code,this.retryable=n.retryable??!1,this.providerId=n.providerId,this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId}};function he(e,t=Date.now()){if(!e)return;let n=Number(e.trim());if(Number.isFinite(n)&&n>=0)return Math.ceil(n*1e3);let r=Date.parse(e);if(Number.isFinite(r))return Math.max(0,r-t)}function Fn(e){if(typeof e=="string")return e;if(!e||typeof e!="object")return"";let t=e,n=t.error;if(typeof n=="string")return n;if(n&&typeof n=="object"){let r=n;if(typeof r.message=="string")return r.message;if(typeof r.type=="string")return r.type}return typeof t.message=="string"?t.message:""}function Be(e,t){return t.some(n=>e.includes(n))}function be(e){let t=Fn(e.body).trim(),n=t.toLowerCase(),r=t?`: ${t.slice(0,1e3)}`:"",o={providerId:e.providerId,statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId};return e.statusCode===401?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===403?new P(`Provider authorization failed${r}`,{...o,category:"authorization",code:"PROVIDER_AUTHORIZATION_FAILED"}):Be(n,["api key not valid","invalid api key","api key expired","api_key_invalid","invalid authentication credentials","missing api key"])?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===429?new P(`Provider rate limit reached${r}`,{...o,category:"rate_limit",code:"PROVIDER_RATE_LIMITED",retryable:!0}):xt(n)?new P(`Provider context window exceeded${r}`,{...o,category:"context_overflow",code:"PROVIDER_CONTEXT_OVERFLOW"}):Be(n,["safety","content policy","blocked_reason","responsible_ai_policy_violation"])?new P(`Provider safety policy refused the request${r}`,{...o,category:"safety_refusal",code:"PROVIDER_SAFETY_REFUSAL"}):e.statusCode===404||Be(n,["model not found","model does not exist","unsupported model"])?new P(`Provider model is unavailable${r}`,{...o,category:"unsupported_model",code:"PROVIDER_MODEL_UNSUPPORTED"}):e.statusCode===408||e.statusCode===504?new P(`Provider request timed out${r}`,{...o,category:"timeout",code:"PROVIDER_TIMEOUT",retryable:!0}):e.statusCode>=500||e.statusCode===409||e.statusCode===425?new P(`Provider server error${r}`,{...o,category:"server",code:"PROVIDER_SERVER_ERROR",retryable:!0}):new P(`Provider rejected the request with HTTP ${e.statusCode}${r}`,{...o,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}function w(e,t,n){return new P(`Malformed ${e} response: ${t}`,{providerId:e,category:"malformed_response",code:"PROVIDER_MALFORMED_RESPONSE",...n!==void 0?{cause:n}:{}})}function H(e,t){return Y("xeno.provider.capability_mismatches",1,{component:"provider_contract",provider:e,capability:t,error_code:"provider_capability_unsupported"}),new P(`${e} does not advertise the required ${t} capability`,{providerId:e,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}var kt=new Set(["metadata.google.internal","metadata.azure.internal","instance-data.ec2.internal"]);function S(e){return new P(`Provider endpoint rejected: ${e}`,{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"})}function Qn(e){let t=e.split(".");if(t.length!==4)return null;let n=t.map(r=>Number(r));return n.every(r=>Number.isInteger(r)&&r>=0&&r<=255)?n:null}function Rt(e){let t=Qn(e);if(!t)return"public";let[n,r]=t;return n===0?"unspecified":n===127?"loopback":n===169&&r===254?"link-local":n===10||n===172&&r>=16&&r<=31||n===192&&r===168?"private":"public"}function we(e){let t=e.toLowerCase().replace(/^\[|\]$/g,"").split("%")[0];(0,se.isIP)(t)===6&&(t=new URL(`http://[${t}]`).hostname.slice(1,-1));let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(t);if(n){let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8}.${r&255}.${o>>8}.${o&255}`}return t}function _t(e){let t=we(e);return(0,se.isIP)(t)===4?Rt(t):t==="::"||t==="::0"?"unspecified":t==="::1"?"loopback":t.startsWith("::ffff:")?Rt(t.slice(7)):/^f[cd]/.test(t)?"private":/^fe[89ab]/.test(t)?"link-local":"public"}function Ct(e){return e==="example"||e.endsWith(".example")||e==="test"||e.endsWith(".test")||e==="invalid"||e.endsWith(".invalid")}function Wn(e){return e==="localhost"||e.endsWith(".localhost")}function z(e,t={}){let n;try{n=new URL(e)}catch{throw S("the URL is invalid")}if(n.username||n.password)throw S("embedded credentials are forbidden");if(n.hash||n.search)throw S("base URLs cannot contain a query or fragment");if(!n.hostname||n.hostname.includes("%"))throw S("the hostname is empty or ambiguous");if(kt.has(n.hostname.toLowerCase()))throw S("cloud metadata destinations are forbidden");if(n.protocol!=="https:"&&n.protocol!=="http:")throw S(`scheme ${n.protocol} is unsupported`);let r=t.profile??"public-https";if(n.protocol==="http:"&&r!=="local-network")throw S("plain HTTP requires the explicit local-network profile");let o=n.hostname.replace(/^\[|\]$/g,""),i=(0,se.isIP)(o)?_t(o):null;if(i==="link-local"||i==="unspecified")throw S(`${i} destinations are forbidden`);if(r==="public-https"&&(i==="private"||i==="loopback"||Wn(n.hostname)))throw S("private and loopback destinations require the local-network profile");if(r==="local-network"&&n.protocol==="http:"&&i==="public"&&!t.allowedHosts?.includes(n.hostname))throw S("local-network HTTP must resolve to loopback or a private address");return n}async function ve(e,t={}){await He(e,t)}async function He(e,t={}){let n=e.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(kt.has(n))throw S("cloud metadata destinations are forbidden");let r=new Set((t.allowedHosts??[]).map(s=>s.toLowerCase())),o=(0,se.isIP)(n)?[n]:Ct(n)?[]:t.resolveHostname?await t.resolveHostname(n):(await(0,Tt.lookup)(n,{all:!0,verbatim:!0})).map(s=>s.address);if(!o.length&&!Ct(n))throw S("DNS resolution returned no addresses");let i=t.profile??"public-https";for(let s of o){let a=_t(s);if(a==="link-local"||a==="unspecified")throw S(`DNS resolved to a forbidden ${a} address`);if(i==="public-https"&&a!=="public"&&!r.has(n))throw S(`DNS resolved public endpoint to ${a} address ${s}`);if(i==="local-network"&&e.protocol==="http:"&&a==="public"&&!r.has(n))throw S(`local-network HTTP resolved to public address ${s}`)}return o}var St=require("node:http"),Et=require("node:https"),ze=require("node:net"),At=require("node:events");function It(e,t){return{dispatch(n,r){let o,i=!1,s=d=>{i||(i=!0,o?.destroy(),r.onError(d))},a=t[0];if(!a||!(0,ze.isIP)(a)||new URL(n.origin).origin!==e.origin)return queueMicrotask(()=>s(new Error("Provider connection has no authorized pinned address"))),!0;let l=n.headers??{},c=(e.protocol==="https:"?Et.request:St.request)(new URL(n.path,e.origin),{method:n.method,headers:l,agent:!1,rejectUnauthorized:!0,lookup:(d,u,m)=>{let p={address:a,family:(0,ze.isIP)(a)};typeof u=="object"&&u.all?m(null,[p]):m(null,a,p.family)}},d=>{o=d;let u=d.rawHeaders.map(p=>Buffer.from(p)),m=()=>d.resume();r.onHeaders(d.statusCode??500,u,m,d.statusMessage??"")===!1&&d.pause(),d.on("data",p=>{r.onData(p)||d.pause()}),d.on("end",()=>{i||(i=!0,r.onComplete(d.rawTrailers.map(p=>Buffer.from(p))))}),d.on("error",s),d.on("aborted",()=>s(new Error("Provider response was interrupted")))});return c.on("socket",d=>{d.once("connect",()=>{(!d.remoteAddress||we(d.remoteAddress)!==we(a))&&c.destroy(new Error("Provider socket did not connect to its authorized address"))})}),c.on("error",s),r.onConnect(d=>c.destroy(d??new Error("Provider request aborted"))),(async()=>{try{let d=n.body;if(typeof d=="string"||d instanceof Uint8Array)c.end(d);else{if(d)for await(let u of d){if(c.destroyed)return;c.write(u)||await(0,At.once)(c,"drain")}c.end()}}catch(d){c.destroy(d instanceof Error?d:new Error("Provider request body failed"))}})(),!0}}}var G={connectTimeoutMs:15e3,totalTimeoutMs:12e4,idleTimeoutMs:3e4,maxResponseBytes:8*1024*1024,maxHeaderBytes:64*1024,maxEventBytes:1024*1024};function Yn(e={}){for(let[t,n]of Object.entries(e))if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))throw w("provider-transport",`${t} must be a positive safe integer`);return{connectTimeoutMs:Math.max(100,e.connectTimeoutMs??G.connectTimeoutMs),totalTimeoutMs:Math.max(100,e.totalTimeoutMs??G.totalTimeoutMs),idleTimeoutMs:Math.max(100,e.idleTimeoutMs??G.idleTimeoutMs),maxResponseBytes:Math.max(1024,e.maxResponseBytes??G.maxResponseBytes),maxHeaderBytes:Math.max(1024,e.maxHeaderBytes??G.maxHeaderBytes),maxEventBytes:Math.max(1024,e.maxEventBytes??G.maxEventBytes)}}async function ae(e,t){let n,r=new Promise((o,i)=>{n=()=>i(new Error("Provider operation aborted")),t.addEventListener("abort",n,{once:!0}),t.aborted&&n()});try{return await Promise.race([e,r])}finally{t.removeEventListener("abort",n)}}function xe(e,t,n,r){try{return e.decode(t,{stream:n})}catch{throw w(r,"response is not valid UTF-8")}}function Ke(e,t,n){let r=new P(t==="cancelled"?"Provider request was cancelled":"Provider request timed out",{providerId:e,category:t,code:t==="cancelled"?"PROVIDER_CANCELLED":"PROVIDER_TIMEOUT",retryable:t==="timeout",...n!==void 0?{cause:n}:{}});return t==="cancelled"&&(r.name="AbortError"),r}function Gn(e){let t=0;return e.forEach((n,r)=>{t+=Buffer.byteLength(r)+Buffer.byteLength(n)+4}),t}async function Lt(e,t,n,r){if(!e.body)return"";let o=e.body.getReader(),i=new TextDecoder("utf-8",{fatal:!0}),s=0,a="",l,c=()=>{l&&clearTimeout(l),l=setTimeout(()=>r.abort("idle-timeout"),n.idleTimeoutMs)};c();try{for(;;){let{value:d,done:u}=await ae(o.read(),r.signal);if(u)break;if(c(),s+=d.byteLength,s>n.maxResponseBytes)throw w(t,`response exceeded ${n.maxResponseBytes} bytes`);a+=xe(i,d,!0,t)}return a+=xe(i,void 0,!1,t),a}finally{l&&clearTimeout(l),o.cancel().catch(()=>{}),o.releaseLock()}}async function Ot(e,t,n,r){let o=Pe.performance.now(),i=Yn(n.limits);Y("xeno.provider.requests",1,{component:"provider_transport",provider:n.providerId,transport:"http"});let s=new AbortController,a=null,l=t.signal,c=()=>s.abort("caller");if(l?.aborted)throw Ke(n.providerId,"cancelled");l?.addEventListener("abort",c,{once:!0});let d=setTimeout(()=>{a="total",s.abort("total-timeout")},i.totalTimeoutMs),u=setTimeout(()=>{a="connect",s.abort("connect-timeout")},i.connectTimeoutMs),m;try{let p=await ae(He(e,n.endpointPolicy),s.signal);if(s.signal.aborted)throw new Error("Provider request aborted before dispatch");let g={...t,signal:s.signal,redirect:"manual",dispatcher:It(e,p)},y=fetch(e,g);y.then(v=>{s.signal.aborted&&v.body?.cancel().catch(()=>{})},()=>{});let f=await ae(y,s.signal);if(m=f,clearTimeout(u),Gn(f.headers)>i.maxHeaderBytes)throw w(n.providerId,`response headers exceeded ${i.maxHeaderBytes} bytes`);if(f.redirected||f.status>=300&&f.status<400)throw new P("Provider redirects are disabled",{providerId:n.providerId,category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED",statusCode:f.status});let x=f.headers.get("content-length");if(x&&/^\d+$/.test(x)&&Number(x)>i.maxResponseBytes)throw w(n.providerId,`response exceeded ${i.maxResponseBytes} bytes`);if(!f.ok){let v=await Lt(f,n.providerId,i,s),O=v;try{O=v?JSON.parse(v):{}}catch{}throw be({providerId:n.providerId,statusCode:f.status,body:O,retryAfterMs:he(f.headers.get("retry-after")),requestId:f.headers.get("request-id")??f.headers.get("x-request-id")??void 0})}let C=await ae(r(f,s,i),s.signal);return Y("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),Ve("xeno.provider.request_duration_ms",Pe.performance.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),C}catch(p){let g;throw p instanceof P?g=p:l?.aborted||s.signal.reason==="caller"?g=Ke(n.providerId,"cancelled",p):a||s.signal.reason==="idle-timeout"?g=Ke(n.providerId,"timeout",p):g=new P("Provider transport failed",{providerId:n.providerId,category:"transport",code:"PROVIDER_TRANSPORT_ERROR",retryable:!0,cause:p}),s.abort("request-failed"),m?.body&&!m.body.locked&&m.body.cancel().catch(()=>{}),Y("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category,error_code:g.code}),Ve("xeno.provider.request_duration_ms",Pe.performance.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category}),g}finally{clearTimeout(u),clearTimeout(d),l?.removeEventListener("abort",c)}}async function Fe(e,t,n){return Ot(e,t,n,async(r,o,i)=>{let s=await Lt(r,n.providerId,i,o),a;try{a=s?JSON.parse(s):{}}catch(l){throw w(n.providerId,"body is not valid JSON",l)}if(!a||typeof a!="object"||Array.isArray(a))throw w(n.providerId,"JSON body must be an object");return a})}async function le(e,t,n,r){return Ot(e,t,n,async(o,i,s)=>{if(!o.body)throw w(n.providerId,"stream response has no body");let a=o.body.getReader(),l=new TextDecoder("utf-8",{fatal:!0}),c="",d=0,u="message",m=[],p,g=()=>{p&&clearTimeout(p),p=setTimeout(()=>i.abort("idle-timeout"),s.idleTimeoutMs)},y=async()=>{if(m.length===0){u="message";return}let f=m.join(`
|
|
5
|
+
`).trim()}function ie(e){return typeof e=="string"?e:Nn(e)}var Pe=require("node:perf_hooks");var Dn=1;var jn=12,qn=128,Un=/^xeno\.[a-z0-9]+(?:[._][a-z0-9]+)*$/u,Jn=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u,Xn=/(?:[\\/]|@|https?:|bearer|token|secret|password|credential|api[_-]?key|[0-9a-f]{8}-[0-9a-f-]{27,})/iu,Vn=new Set(["arch","cached","capability","category","component","contained","error_code","frame_kind","gate","method","mode","operation","outcome","platform","previous_state","protocol_version","provider","queue","reason","recovery","retry_kind","state","status","tool","transport","trigger"]),wt=new Set,vt=new Map;function Bn(e){let t=e.trim().toLowerCase();return!t||t.length>64||Xn.test(t)||!Jn.test(t)?null:t}function Hn(e,t){if(typeof t=="boolean")return t;if(typeof t=="number")return e!=="protocol_version"||!Number.isInteger(t)||t<0||t>100?null:t;if(typeof t!="string")return null;let n=Bn(t);if(!n)return null;let r=vt.get(e);return r||(r=new Set,vt.set(e,r)),!r.has(n)&&r.size>=qn?"other":(r.add(n),n)}function zn(e={}){let t={};for(let[n,r]of Object.entries(e)){if(Object.keys(t).length>=jn)break;if(!Vn.has(n))continue;let o=Hn(n,r);o!==null&&(t[n]=o)}return Object.freeze(t)}function Pt(e){if(wt.size===0||!Un.test(e.name)||e.name.length>128)return;let t=e.kind==="event"?1:e.value??1;if(!Number.isFinite(t)||t<0)return;let n=Object.freeze({schemaVersion:Dn,kind:e.kind,name:e.name,value:Math.min(t,Number.MAX_SAFE_INTEGER),timestamp:(e.timestamp??new Date).toISOString(),attributes:zn(e.attributes)});for(let r of wt)try{r(n)}catch{}}function Y(e,t=1,n){Pt({kind:"counter",name:e,value:t,attributes:n})}function Ve(e,t,n){Pt({kind:"histogram",name:e,value:t,attributes:n})}var Tt=require("node:dns/promises"),se=require("node:net");var Kn=["context length","context window","maximum context","too many tokens","request too large"];function xt(e){let t=e.toLowerCase();return Kn.some(n=>t.includes(n))}var P=class extends Error{category;code;retryable;providerId;statusCode;retryAfterMs;requestId;constructor(t,n){super(t,n.cause!==void 0?{cause:n.cause}:void 0),this.name="ProviderError",this.category=n.category,this.code=n.code,this.retryable=n.retryable??!1,this.providerId=n.providerId,this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId}};function he(e,t=Date.now()){if(!e)return;let n=Number(e.trim());if(Number.isFinite(n)&&n>=0)return Math.ceil(n*1e3);let r=Date.parse(e);if(Number.isFinite(r))return Math.max(0,r-t)}function Fn(e){if(typeof e=="string")return e;if(!e||typeof e!="object")return"";let t=e,n=t.error;if(typeof n=="string")return n;if(n&&typeof n=="object"){let r=n;if(typeof r.message=="string")return r.message;if(typeof r.type=="string")return r.type}return typeof t.message=="string"?t.message:""}function Be(e,t){return t.some(n=>e.includes(n))}function be(e){let t=Fn(e.body).trim(),n=t.toLowerCase(),r=t?`: ${t.slice(0,1e3)}`:"",o={providerId:e.providerId,statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId};return e.statusCode===401?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===403?new P(`Provider authorization failed${r}`,{...o,category:"authorization",code:"PROVIDER_AUTHORIZATION_FAILED"}):Be(n,["api key not valid","invalid api key","api key expired","api_key_invalid","invalid authentication credentials","missing api key"])?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===429?new P(`Provider rate limit reached${r}`,{...o,category:"rate_limit",code:"PROVIDER_RATE_LIMITED",retryable:!0}):xt(n)?new P(`Provider context window exceeded${r}`,{...o,category:"context_overflow",code:"PROVIDER_CONTEXT_OVERFLOW"}):Be(n,["safety","content policy","blocked_reason","responsible_ai_policy_violation"])?new P(`Provider safety policy refused the request${r}`,{...o,category:"safety_refusal",code:"PROVIDER_SAFETY_REFUSAL"}):e.statusCode===404||Be(n,["model not found","model does not exist","unsupported model","unknown provider for model"])?new P(`Provider model is unavailable${r}`,{...o,category:"unsupported_model",code:"PROVIDER_MODEL_UNSUPPORTED"}):e.statusCode===408||e.statusCode===504?new P(`Provider request timed out${r}`,{...o,category:"timeout",code:"PROVIDER_TIMEOUT",retryable:!0}):e.statusCode>=500||e.statusCode===409||e.statusCode===425?new P(`Provider server error${r}`,{...o,category:"server",code:"PROVIDER_SERVER_ERROR",retryable:!0}):new P(`Provider rejected the request with HTTP ${e.statusCode}${r}`,{...o,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}function w(e,t,n){return new P(`Malformed ${e} response: ${t}`,{providerId:e,category:"malformed_response",code:"PROVIDER_MALFORMED_RESPONSE",...n!==void 0?{cause:n}:{}})}function H(e,t){return Y("xeno.provider.capability_mismatches",1,{component:"provider_contract",provider:e,capability:t,error_code:"provider_capability_unsupported"}),new P(`${e} does not advertise the required ${t} capability`,{providerId:e,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}var kt=new Set(["metadata.google.internal","metadata.azure.internal","instance-data.ec2.internal"]);function S(e){return new P(`Provider endpoint rejected: ${e}`,{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"})}function Qn(e){let t=e.split(".");if(t.length!==4)return null;let n=t.map(r=>Number(r));return n.every(r=>Number.isInteger(r)&&r>=0&&r<=255)?n:null}function Rt(e){let t=Qn(e);if(!t)return"public";let[n,r]=t;return n===0?"unspecified":n===127?"loopback":n===169&&r===254?"link-local":n===10||n===172&&r>=16&&r<=31||n===192&&r===168?"private":"public"}function we(e){let t=e.toLowerCase().replace(/^\[|\]$/g,"").split("%")[0];(0,se.isIP)(t)===6&&(t=new URL(`http://[${t}]`).hostname.slice(1,-1));let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(t);if(n){let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8}.${r&255}.${o>>8}.${o&255}`}return t}function _t(e){let t=we(e);return(0,se.isIP)(t)===4?Rt(t):t==="::"||t==="::0"?"unspecified":t==="::1"?"loopback":t.startsWith("::ffff:")?Rt(t.slice(7)):/^f[cd]/.test(t)?"private":/^fe[89ab]/.test(t)?"link-local":"public"}function Ct(e){return e==="example"||e.endsWith(".example")||e==="test"||e.endsWith(".test")||e==="invalid"||e.endsWith(".invalid")}function Wn(e){return e==="localhost"||e.endsWith(".localhost")}function z(e,t={}){let n;try{n=new URL(e)}catch{throw S("the URL is invalid")}if(n.username||n.password)throw S("embedded credentials are forbidden");if(n.hash||n.search)throw S("base URLs cannot contain a query or fragment");if(!n.hostname||n.hostname.includes("%"))throw S("the hostname is empty or ambiguous");if(kt.has(n.hostname.toLowerCase()))throw S("cloud metadata destinations are forbidden");if(n.protocol!=="https:"&&n.protocol!=="http:")throw S(`scheme ${n.protocol} is unsupported`);let r=t.profile??"public-https";if(n.protocol==="http:"&&r!=="local-network")throw S("plain HTTP requires the explicit local-network profile");let o=n.hostname.replace(/^\[|\]$/g,""),i=(0,se.isIP)(o)?_t(o):null;if(i==="link-local"||i==="unspecified")throw S(`${i} destinations are forbidden`);if(r==="public-https"&&(i==="private"||i==="loopback"||Wn(n.hostname)))throw S("private and loopback destinations require the local-network profile");if(r==="local-network"&&n.protocol==="http:"&&i==="public"&&!t.allowedHosts?.includes(n.hostname))throw S("local-network HTTP must resolve to loopback or a private address");return n}async function ve(e,t={}){await He(e,t)}async function He(e,t={}){let n=e.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(kt.has(n))throw S("cloud metadata destinations are forbidden");let r=new Set((t.allowedHosts??[]).map(s=>s.toLowerCase())),o=(0,se.isIP)(n)?[n]:Ct(n)?[]:t.resolveHostname?await t.resolveHostname(n):(await(0,Tt.lookup)(n,{all:!0,verbatim:!0})).map(s=>s.address);if(!o.length&&!Ct(n))throw S("DNS resolution returned no addresses");let i=t.profile??"public-https";for(let s of o){let a=_t(s);if(a==="link-local"||a==="unspecified")throw S(`DNS resolved to a forbidden ${a} address`);if(i==="public-https"&&a!=="public"&&!r.has(n))throw S(`DNS resolved public endpoint to ${a} address ${s}`);if(i==="local-network"&&e.protocol==="http:"&&a==="public"&&!r.has(n))throw S(`local-network HTTP resolved to public address ${s}`)}return o}var St=require("node:http"),Et=require("node:https"),ze=require("node:net"),At=require("node:events");function It(e,t){return{dispatch(n,r){let o,i=!1,s=d=>{i||(i=!0,o?.destroy(),r.onError(d))},a=t[0];if(!a||!(0,ze.isIP)(a)||new URL(n.origin).origin!==e.origin)return queueMicrotask(()=>s(new Error("Provider connection has no authorized pinned address"))),!0;let l=n.headers??{},c=(e.protocol==="https:"?Et.request:St.request)(new URL(n.path,e.origin),{method:n.method,headers:l,agent:!1,rejectUnauthorized:!0,lookup:(d,u,m)=>{let p={address:a,family:(0,ze.isIP)(a)};typeof u=="object"&&u.all?m(null,[p]):m(null,a,p.family)}},d=>{o=d;let u=d.rawHeaders.map(p=>Buffer.from(p)),m=()=>d.resume();r.onHeaders(d.statusCode??500,u,m,d.statusMessage??"")===!1&&d.pause(),d.on("data",p=>{r.onData(p)||d.pause()}),d.on("end",()=>{i||(i=!0,r.onComplete(d.rawTrailers.map(p=>Buffer.from(p))))}),d.on("error",s),d.on("aborted",()=>s(new Error("Provider response was interrupted")))});return c.on("socket",d=>{d.once("connect",()=>{(!d.remoteAddress||we(d.remoteAddress)!==we(a))&&c.destroy(new Error("Provider socket did not connect to its authorized address"))})}),c.on("error",s),r.onConnect(d=>c.destroy(d??new Error("Provider request aborted"))),(async()=>{try{let d=n.body;if(typeof d=="string"||d instanceof Uint8Array)c.end(d);else{if(d)for await(let u of d){if(c.destroyed)return;c.write(u)||await(0,At.once)(c,"drain")}c.end()}}catch(d){c.destroy(d instanceof Error?d:new Error("Provider request body failed"))}})(),!0}}}var G={connectTimeoutMs:15e3,totalTimeoutMs:12e4,idleTimeoutMs:3e4,maxResponseBytes:8*1024*1024,maxHeaderBytes:64*1024,maxEventBytes:1024*1024};function Yn(e={}){for(let[t,n]of Object.entries(e))if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))throw w("provider-transport",`${t} must be a positive safe integer`);return{connectTimeoutMs:Math.max(100,e.connectTimeoutMs??G.connectTimeoutMs),totalTimeoutMs:Math.max(100,e.totalTimeoutMs??G.totalTimeoutMs),idleTimeoutMs:Math.max(100,e.idleTimeoutMs??G.idleTimeoutMs),maxResponseBytes:Math.max(1024,e.maxResponseBytes??G.maxResponseBytes),maxHeaderBytes:Math.max(1024,e.maxHeaderBytes??G.maxHeaderBytes),maxEventBytes:Math.max(1024,e.maxEventBytes??G.maxEventBytes)}}async function ae(e,t){let n,r=new Promise((o,i)=>{n=()=>i(new Error("Provider operation aborted")),t.addEventListener("abort",n,{once:!0}),t.aborted&&n()});try{return await Promise.race([e,r])}finally{t.removeEventListener("abort",n)}}function xe(e,t,n,r){try{return e.decode(t,{stream:n})}catch{throw w(r,"response is not valid UTF-8")}}function Ke(e,t,n){let r=new P(t==="cancelled"?"Provider request was cancelled":"Provider request timed out",{providerId:e,category:t,code:t==="cancelled"?"PROVIDER_CANCELLED":"PROVIDER_TIMEOUT",retryable:t==="timeout",...n!==void 0?{cause:n}:{}});return t==="cancelled"&&(r.name="AbortError"),r}function Gn(e){let t=0;return e.forEach((n,r)=>{t+=Buffer.byteLength(r)+Buffer.byteLength(n)+4}),t}async function Lt(e,t,n,r){if(!e.body)return"";let o=e.body.getReader(),i=new TextDecoder("utf-8",{fatal:!0}),s=0,a="",l,c=()=>{l&&clearTimeout(l),l=setTimeout(()=>r.abort("idle-timeout"),n.idleTimeoutMs)};c();try{for(;;){let{value:d,done:u}=await ae(o.read(),r.signal);if(u)break;if(c(),s+=d.byteLength,s>n.maxResponseBytes)throw w(t,`response exceeded ${n.maxResponseBytes} bytes`);a+=xe(i,d,!0,t)}return a+=xe(i,void 0,!1,t),a}finally{l&&clearTimeout(l),o.cancel().catch(()=>{}),o.releaseLock()}}async function Ot(e,t,n,r){let o=Pe.performance.now(),i=Yn(n.limits);Y("xeno.provider.requests",1,{component:"provider_transport",provider:n.providerId,transport:"http"});let s=new AbortController,a=null,l=t.signal,c=()=>s.abort("caller");if(l?.aborted)throw Ke(n.providerId,"cancelled");l?.addEventListener("abort",c,{once:!0});let d=setTimeout(()=>{a="total",s.abort("total-timeout")},i.totalTimeoutMs),u=setTimeout(()=>{a="connect",s.abort("connect-timeout")},i.connectTimeoutMs),m;try{let p=await ae(He(e,n.endpointPolicy),s.signal);if(s.signal.aborted)throw new Error("Provider request aborted before dispatch");let g={...t,signal:s.signal,redirect:"manual",dispatcher:It(e,p)},y=fetch(e,g);y.then(v=>{s.signal.aborted&&v.body?.cancel().catch(()=>{})},()=>{});let f=await ae(y,s.signal);if(m=f,clearTimeout(u),Gn(f.headers)>i.maxHeaderBytes)throw w(n.providerId,`response headers exceeded ${i.maxHeaderBytes} bytes`);if(f.redirected||f.status>=300&&f.status<400)throw new P("Provider redirects are disabled",{providerId:n.providerId,category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED",statusCode:f.status});let x=f.headers.get("content-length");if(x&&/^\d+$/.test(x)&&Number(x)>i.maxResponseBytes)throw w(n.providerId,`response exceeded ${i.maxResponseBytes} bytes`);if(!f.ok){let v=await Lt(f,n.providerId,i,s),O=v;try{O=v?JSON.parse(v):{}}catch{}throw be({providerId:n.providerId,statusCode:f.status,body:O,retryAfterMs:he(f.headers.get("retry-after")),requestId:f.headers.get("request-id")??f.headers.get("x-request-id")??void 0})}let C=await ae(r(f,s,i),s.signal);return Y("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),Ve("xeno.provider.request_duration_ms",Pe.performance.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),C}catch(p){let g;throw p instanceof P?g=p:l?.aborted||s.signal.reason==="caller"?g=Ke(n.providerId,"cancelled",p):a||s.signal.reason==="idle-timeout"?g=Ke(n.providerId,"timeout",p):g=new P("Provider transport failed",{providerId:n.providerId,category:"transport",code:"PROVIDER_TRANSPORT_ERROR",retryable:!0,cause:p}),s.abort("request-failed"),m?.body&&!m.body.locked&&m.body.cancel().catch(()=>{}),Y("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category,error_code:g.code}),Ve("xeno.provider.request_duration_ms",Pe.performance.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category}),g}finally{clearTimeout(u),clearTimeout(d),l?.removeEventListener("abort",c)}}async function Fe(e,t,n){return Ot(e,t,n,async(r,o,i)=>{let s=await Lt(r,n.providerId,i,o),a;try{a=s?JSON.parse(s):{}}catch(l){throw w(n.providerId,"body is not valid JSON",l)}if(!a||typeof a!="object"||Array.isArray(a))throw w(n.providerId,"JSON body must be an object");return a})}async function le(e,t,n,r){return Ot(e,t,n,async(o,i,s)=>{if(!o.body)throw w(n.providerId,"stream response has no body");let a=o.body.getReader(),l=new TextDecoder("utf-8",{fatal:!0}),c="",d=0,u="message",m=[],p,g=()=>{p&&clearTimeout(p),p=setTimeout(()=>i.abort("idle-timeout"),s.idleTimeoutMs)},y=async()=>{if(m.length===0){u="message";return}let f=m.join(`
|
|
6
6
|
`);if(Buffer.byteLength(f)>s.maxEventBytes)throw w(n.providerId,`stream event exceeded ${s.maxEventBytes} bytes`);await r({event:u,data:f}),u="message",m=[]};g();try{for(;;){let{value:f,done:x}=await ae(a.read(),i.signal);if(x)break;if(g(),d+=f.byteLength,d>s.maxResponseBytes)throw w(n.providerId,`stream exceeded ${s.maxResponseBytes} bytes`);for(c+=xe(l,f,!0,n.providerId);;){let C=c.indexOf(`
|
|
7
7
|
`);if(C<0)break;let v=c.slice(0,C).replace(/\r$/,"");if(c=c.slice(C+1),!v)await y();else if(!v.startsWith(":")){let O=v.indexOf(":"),j=O<0?v:v.slice(0,O),yt=O<0?"":v.slice(O+1).replace(/^ /,"");j==="event"?u=yt:j==="data"&&m.push(yt)}}}if(c+=xe(l,void 0,!1,n.providerId),c.trim())for(let f of c.split(/\r?\n/))f.startsWith("data:")?m.push(f.slice(5).replace(/^ /,"")):f.startsWith("event:")&&(u=f.slice(6).trim());await y()}finally{p&&clearTimeout(p),a.cancel().catch(()=>{}),a.releaseLock()}})}var Kt=require("node:crypto");var We=require("node:net"),_e=class extends Error{issues;constructor(t){super(`Invalid JSON Schema: ${t.map(n=>`${n.path||"#"} ${n.message}`).join("; ")}`),this.name="JsonSchemaCompilationError",this.issues=t}},Ye="https://json-schema.org/draft/2020-12/schema",Zn=new Set(["string","number","integer","boolean","array","object","null"]),er=new Set(["$schema","$id","$anchor","$ref","$defs","$comment","title","description","default","examples","deprecated","readOnly","writeOnly","type","enum","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","format","prefixItems","items","contains","minContains","maxContains","minItems","maxItems","uniqueItems","properties","patternProperties","additionalProperties","required","dependentRequired","minProperties","maxProperties","allOf","anyOf","oneOf","not"]),Dt=new Map([["date",e=>Jt(e)],["date-time",e=>wr(e)],["time",e=>Xt(e)],["duration",e=>/^P(?!$)(?:\d+(?:[.,]\d+)?Y)?(?:\d+(?:[.,]\d+)?M)?(?:\d+(?:[.,]\d+)?W)?(?:\d+(?:[.,]\d+)?D)?(?:T(?=\d)(?:\d+(?:[.,]\d+)?H)?(?:\d+(?:[.,]\d+)?M)?(?:\d+(?:[.,]\d+)?S)?)?$/u.test(e)],["email",e=>Mt(e)],["idn-email",e=>Mt(e)],["hostname",e=>Ze(e)],["idn-hostname",e=>Ze(e)],["ipv4",e=>(0,We.isIP)(e)===4],["ipv6",e=>(0,We.isIP)(e)===6],["uuid",e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(e)],["uri",e=>$t(e)],["iri",e=>$t(e)],["uri-reference",e=>Nt(e)],["iri-reference",e=>Nt(e)],["uri-template",e=>vr(e)],["json-pointer",e=>/^(?:\/(?:[^~/]|~[01])*)*$/u.test(e)],["relative-json-pointer",e=>/^(?:0|[1-9]\d*)(?:#|(?:\/(?:[^~/]|~[01])*)*)$/u.test(e)],["regex",(e,t)=>tt(e,t.maxPatternLength)!==void 0]]);function tr(e={}){return{strictKeywords:e.strictKeywords??!0,assertFormats:e.assertFormats??!1,maxSchemaDepth:V(e.maxSchemaDepth,64,1,256,"maxSchemaDepth"),maxSchemaNodes:V(e.maxSchemaNodes,4096,1,1e5,"maxSchemaNodes"),maxReferences:V(e.maxReferences,512,0,1e4,"maxReferences"),maxPatternLength:V(e.maxPatternLength,256,1,4096,"maxPatternLength"),maxValidationDepth:V(e.maxValidationDepth,128,1,1024,"maxValidationDepth"),maxValidationSteps:V(e.maxValidationSteps,1e5,100,1e7,"maxValidationSteps"),maxValidationErrors:V(e.maxValidationErrors,64,1,1024,"maxValidationErrors"),maxInputBytes:V(e.maxInputBytes,16*1024*1024,1024,256*1024*1024,"maxInputBytes")}}function V(e,t,n,r,o){let i=e??t;if(!Number.isInteger(i)||i<n||i>r)throw new TypeError(`${o} must be an integer from ${n} to ${r}.`);return i}function nr(e,t={}){let n={root:e,options:tr(t),issues:[],rawByPointer:new Map,anchors:new Map,compiledByPointer:new Map,schemaNodes:0,references:0,nextNodeId:1};Te(e,"",0,n);let r=K(e,"",0,n);if(n.issues.length>0||!r)throw new _e(n.issues);return Object.freeze({dialect:Ye,formatAssertion:n.options.assertFormats,validate(o){let i=[],s=Ge(o);if(s)return i.push({path:s.path,keyword:"type",schemaPath:"#",message:s.message}),{valid:!1,errors:i,steps:0,truncated:!1};let a=JSON.stringify(o),l=Buffer.byteLength(a??"null","utf8");if(l>n.options.maxInputBytes)return i.push({path:"",keyword:"maxInputBytes",schemaPath:"#",message:`input is ${l} bytes; limit is ${n.options.maxInputBytes}`}),{valid:!1,errors:i,steps:0,truncated:!1};let c={options:n.options,errors:i,budget:{steps:0,exhausted:!1},activePairs:new Set,objectIds:new WeakMap,nextObjectId:{value:1}};return q(o,r,"",0,c),{valid:i.length===0,errors:i,steps:c.budget.steps,truncated:c.budget.exhausted||i.length>=n.options.maxValidationErrors}}})}function jt(e,t={}){if(!A(e)||e.type!=="object"||!A(e.properties))throw new _e([{path:"#",keyword:"type",message:"tool input schema root must declare type object and a properties object"}]);return nr(e,t)}function Te(e,t,n,r){if(n>r.options.maxSchemaDepth){h(r,t,void 0,`schema depth exceeds ${r.options.maxSchemaDepth}`);return}if(typeof e!="boolean"&&!A(e)){h(r,t,void 0,"schema must be an object or boolean");return}if(!r.rawByPointer.has(t)){if(r.schemaNodes+=1,r.schemaNodes>r.options.maxSchemaNodes){h(r,t,void 0,`schema node count exceeds ${r.options.maxSchemaNodes}`);return}if(r.rawByPointer.set(t,e),typeof e!="boolean"){e.$anchor!==void 0&&(typeof e.$anchor!="string"||!/^[A-Za-z][A-Za-z0-9._:-]*$/u.test(e.$anchor)?h(r,t,"$anchor","$anchor must be a valid plain-name anchor"):r.anchors.has(e.$anchor)?h(r,t,"$anchor",`duplicate anchor ${e.$anchor}`):r.anchors.set(e.$anchor,t));for(let o of["$defs","properties","patternProperties"]){let i=e[o];if(i!==void 0){if(!A(i)){h(r,t,o,`${o} must be an object`);continue}for(let[s,a]of Object.entries(i))Te(a,U(t,o,s),n+1,r)}}for(let o of["items","contains","additionalProperties","not"])e[o]!==void 0&&Te(e[o],U(t,o),n+1,r);for(let o of["prefixItems","allOf","anyOf","oneOf"]){let i=e[o];if(i!==void 0){if(!Array.isArray(i)){h(r,t,o,`${o} must be an array of schemas`);continue}i.forEach((s,a)=>Te(s,U(t,o,String(a)),n+1,r))}}}}}function K(e,t,n,r){let o=r.compiledByPointer.get(t);if(o)return o;if(typeof e!="boolean"&&!A(e))return;let i={id:r.nextNodeId++,schemaPath:Bt(t)};if(r.compiledByPointer.set(t,i),typeof e=="boolean")return i.boolean=e,i;if(rr(e,t,r),or(e,t,r),e.$schema!==void 0&&(t!==""||e.$schema!==Ye&&e.$schema!==`${Ye}#`)&&h(r,t,"$schema",t===""?`unsupported dialect ${String(e.$schema)}`:"$schema is only supported at the root"),e.$id!==void 0&&typeof e.$id!="string"&&h(r,t,"$id","$id must be a string"),e.$ref!==void 0)if(typeof e.$ref!="string")h(r,t,"$ref","$ref must be a string");else{r.references+=1,r.references>r.options.maxReferences&&h(r,t,"$ref",`reference count exceeds ${r.options.maxReferences}`);let s=ur(e.$ref,t,r);if(s!==void 0){let a=r.rawByPointer.get(s);a===void 0?h(r,t,"$ref",`unresolved local reference ${e.$ref}`):i.ref=K(a,s,n+1,r)}}if(i.types=ir(e.type,t,r),e.enum!==void 0){let s=e.enum;!Array.isArray(s)||s.length===0?h(r,t,"enum","enum must be a non-empty array"):s.some((a,l)=>s.some((c,d)=>d<l&&Z(a,c)))?h(r,t,"enum","enum values must be unique"):s.some(a=>Ge(a))?h(r,t,"enum","enum values must be JSON values"):i.enumValues=s}if(Object.prototype.hasOwnProperty.call(e,"const")&&(Ge(e.const)?h(r,t,"const","const must be a JSON value"):(i.hasConst=!0,i.constValue=e.const)),i.multipleOf=cr(e.multipleOf,t,"multipleOf",r),i.maximum=ce(e.maximum,t,"maximum",r),i.exclusiveMaximum=ce(e.exclusiveMaximum,t,"exclusiveMaximum",r),i.minimum=ce(e.minimum,t,"minimum",r),i.exclusiveMinimum=ce(e.exclusiveMinimum,t,"exclusiveMinimum",r),i.maxLength=B(e.maxLength,t,"maxLength",r),i.minLength=B(e.minLength,t,"minLength",r),i.minItems=B(e.minItems,t,"minItems",r),i.maxItems=B(e.maxItems,t,"maxItems",r),i.minContains=B(e.minContains,t,"minContains",r),i.maxContains=B(e.maxContains,t,"maxContains",r),i.minProperties=B(e.minProperties,t,"minProperties",r),i.maxProperties=B(e.maxProperties,t,"maxProperties",r),dr(i,t,r),e.pattern!==void 0)if(typeof e.pattern!="string")h(r,t,"pattern","pattern must be a string");else{let s=tt(e.pattern,r.options.maxPatternLength);s?i.pattern={source:e.pattern,regex:s}:h(r,t,"pattern","pattern is invalid or outside the safe regex subset")}if(e.format!==void 0&&(typeof e.format!="string"?h(r,t,"format","format must be a string"):r.options.assertFormats&&!Dt.has(e.format)?h(r,t,"format",`unsupported asserted format ${e.format}`):i.format=e.format),i.prefixItems=Ce(e.prefixItems,t,"prefixItems",n,r,!0),i.items=Re(e.items,t,"items",n,r),i.contains=Re(e.contains,t,"contains",n,r),(e.minContains!==void 0||e.maxContains!==void 0)&&e.contains===void 0&&h(r,t,"contains","minContains/maxContains require contains"),e.uniqueItems!==void 0&&(typeof e.uniqueItems!="boolean"?h(r,t,"uniqueItems","uniqueItems must be boolean"):i.uniqueItems=e.uniqueItems),i.properties=sr(e.properties,t,"properties",n,r),i.patternProperties=ar(e.patternProperties,t,n,r),i.additionalProperties=Re(e.additionalProperties,t,"additionalProperties",n,r),i.required=qt(e.required,t,"required",r,!0),i.dependentRequired=lr(e.dependentRequired,t,r),i.allOf=Ce(e.allOf,t,"allOf",n,r,!1),i.anyOf=Ce(e.anyOf,t,"anyOf",n,r,!1),i.oneOf=Ce(e.oneOf,t,"oneOf",n,r,!1),i.not=Re(e.not,t,"not",n,r),A(e.$defs))for(let[s,a]of Object.entries(e.$defs))K(a,U(t,"$defs",s),n+1,r);return i}function rr(e,t,n){if(n.options.strictKeywords)for(let r of Object.keys(e))!er.has(r)&&!r.startsWith("x-")&&h(n,t,r,`unsupported keyword ${r}`)}function or(e,t,n){for(let r of["$comment","title","description"])e[r]!==void 0&&typeof e[r]!="string"&&h(n,t,r,`${r} must be a string`);for(let r of["deprecated","readOnly","writeOnly"])e[r]!==void 0&&typeof e[r]!="boolean"&&h(n,t,r,`${r} must be boolean`);e.examples!==void 0&&!Array.isArray(e.examples)&&h(n,t,"examples","examples must be an array")}function ir(e,t,n){if(e===void 0)return;let r=Array.isArray(e)?e:[e];if(r.length===0||r.some(o=>typeof o!="string"||!Zn.has(o))){h(n,t,"type","type must be a recognized type or non-empty unique type array");return}return new Set(r).size!==r.length&&h(n,t,"type","type array must not contain duplicates"),r}function Re(e,t,n,r,o){if(e!==void 0)return K(e,U(t,n),r+1,o)}function Ce(e,t,n,r,o,i){if(e!==void 0){if(!Array.isArray(e)||!i&&e.length===0){h(o,t,n,`${n} must be ${i?"an array":"a non-empty array"} of schemas`);return}return e.map((s,a)=>K(s,U(t,n,String(a)),r+1,o)).filter(s=>!!s)}}function sr(e,t,n,r,o){if(e===void 0)return;if(!A(e)){h(o,t,n,`${n} must be an object of schemas`);return}let i=new Map;for(let[s,a]of Object.entries(e)){let l=K(a,U(t,n,s),r+1,o);l&&i.set(s,l)}return i}function ar(e,t,n,r){if(e===void 0)return;if(!A(e)){h(r,t,"patternProperties","patternProperties must be an object of schemas");return}let o=[];for(let[i,s]of Object.entries(e)){let a=tt(i,r.options.maxPatternLength);if(!a){h(r,t,"patternProperties",`pattern ${JSON.stringify(i)} is invalid or outside the safe regex subset`);continue}let l=K(s,U(t,"patternProperties",i),n+1,r);l&&o.push({pattern:{source:i,regex:a},schema:l})}return o}function lr(e,t,n){if(e===void 0)return;if(!A(e)){h(n,t,"dependentRequired","dependentRequired must be an object");return}let r=new Map;for(let[o,i]of Object.entries(e)){let s=qt(i,U(t,"dependentRequired",o),"dependentRequired",n,!0);s&&r.set(o,s)}return r}function qt(e,t,n,r,o){if(e!==void 0){if(!Array.isArray(e)||e.some(i=>typeof i!="string")){h(r,t,n,`${n} must be an array of strings`);return}return o&&new Set(e).size!==e.length&&h(r,t,n,`${n} values must be unique`),e}}function cr(e,t,n,r){let o=ce(e,t,n,r);return o!==void 0&&o<=0&&h(r,t,n,`${n} must be greater than zero`),o!==void 0&&o>0?o:void 0}function ce(e,t,n,r){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)){h(r,t,n,`${n} must be a finite number`);return}return e}}function B(e,t,n,r){if(e!==void 0){if(!Number.isSafeInteger(e)||e<0){h(r,t,n,`${n} must be a non-negative safe integer`);return}return e}}function dr(e,t,n){for(let[r,o,i]of[[e.minLength,e.maxLength,"length"],[e.minItems,e.maxItems,"items"],[e.minContains,e.maxContains,"contains"],[e.minProperties,e.maxProperties,"properties"]])r!==void 0&&o!==void 0&&r>o&&h(n,t,i,`minimum ${i} exceeds maximum`)}function ur(e,t,n){if(!e.startsWith("#")){h(n,t,"$ref","remote and file references are not supported");return}if(e==="#")return"";if(e.startsWith("#/")){let s=`/${e.slice(2).split("/").map(a=>a.replace(/~1/g,"/").replace(/~0/g,"~")).map(Vt).join("/")}`;return n.rawByPointer.has(s)||h(n,t,"$ref",`unresolved JSON Pointer ${e}`),s}let r=e.slice(1),o=n.anchors.get(r);return o===void 0&&h(n,t,"$ref",`unresolved anchor ${e}`),o}function q(e,t,n,r,o){if(!Ut(o)||o.errors.length>=o.options.maxValidationErrors)return;if(r>o.options.maxValidationDepth){T(o,n,"maxDepth",t,`validation depth exceeds ${o.options.maxValidationDepth}`);return}if(t.boolean!==void 0){t.boolean||T(o,n,"falseSchema",t,"is rejected by the false schema");return}let i=hr(t,e,o);if(!o.activePairs.has(i)){o.activePairs.add(i);try{if(t.ref&&q(e,t.ref,n,r+1,o),t.enumValues&&!t.enumValues.some(s=>Z(s,e))&&T(o,n,"enum",t,`expected one of ${t.enumValues.map(et).join(", ")} but got ${Qe(e)}`),t.hasConst&&!Z(t.constValue,e)&&T(o,n,"const",t,`expected ${et(t.constValue)} but got ${Qe(e)}`),t.types&&!t.types.some(s=>br(e,s))){let s=t.types.length===1?t.types[0]:`one of [${t.types.join(", ")}]`;T(o,n,"type",t,`expected type ${s} but got ${Qe(e)}`);return}mr(e,t,n,r,o),typeof e=="number"&&pr(e,t,n,o),typeof e=="string"&&fr(e,t,n,o),Array.isArray(e)&&gr(e,t,n,r,o),A(e)&&yr(e,t,n,r,o)}finally{o.activePairs.delete(i)}}}function mr(e,t,n,r,o){for(let i of t.allOf??[])q(e,i,n,r+1,o);if(t.anyOf&&t.anyOf.filter(s=>ke(e,s,n,r+1,o)).length===0&&T(o,n,"anyOf",t,"must match at least one anyOf branch"),t.oneOf){let i=t.oneOf.filter(s=>ke(e,s,n,r+1,o)).length;i!==1&&T(o,n,"oneOf",t,`must match exactly one oneOf branch; matched ${i}`)}t.not&&ke(e,t.not,n,r+1,o)&&T(o,n,"not",t,"must not match the disallowed schema")}function pr(e,t,n,r){t.multipleOf!==void 0&&!Pr(e,t.multipleOf)&&T(r,n,"multipleOf",t,`must be a multiple of ${t.multipleOf}`),t.maximum!==void 0&&e>t.maximum&&T(r,n,"maximum",t,`must be <= ${t.maximum}`),t.exclusiveMaximum!==void 0&&e>=t.exclusiveMaximum&&T(r,n,"exclusiveMaximum",t,`must be < ${t.exclusiveMaximum}`),t.minimum!==void 0&&e<t.minimum&&T(r,n,"minimum",t,`must be >= ${t.minimum}`),t.exclusiveMinimum!==void 0&&e<=t.exclusiveMinimum&&T(r,n,"exclusiveMinimum",t,`must be > ${t.exclusiveMinimum}`)}function fr(e,t,n,r){let o=[...e].length;if(t.minLength!==void 0&&o<t.minLength&&T(r,n,"minLength",t,`must contain at least ${t.minLength} Unicode code points`),t.maxLength!==void 0&&o>t.maxLength&&T(r,n,"maxLength",t,`must contain at most ${t.maxLength} Unicode code points`),t.pattern&&!t.pattern.regex.test(e)&&T(r,n,"pattern",t,`must match pattern ${JSON.stringify(t.pattern.source)}`),t.format&&r.options.assertFormats){let i=Dt.get(t.format);i&&!i(e,r.options)&&T(r,n,"format",t,`must match format ${t.format}`)}}function gr(e,t,n,r,o){if(t.minItems!==void 0&&e.length<t.minItems&&T(o,n,"minItems",t,`must contain at least ${t.minItems} items`),t.maxItems!==void 0&&e.length>t.maxItems&&T(o,n,"maxItems",t,`must contain at most ${t.maxItems} items`),t.uniqueItems)e:for(let s=0;s<e.length;s+=1)for(let a=0;a<s;a+=1){if(!Ut(o))break e;if(Z(e[s],e[a])){T(o,M(n,String(s)),"uniqueItems",t,`duplicates item ${a}`);break e}}let i=t.prefixItems?.length??0;if(t.prefixItems?.forEach((s,a)=>{a<e.length&&q(e[a],s,M(n,String(a)),r+1,o)}),t.items)for(let s=i;s<e.length;s+=1)q(e[s],t.items,M(n,String(s)),r+1,o);if(t.contains){let s=0;for(let l=0;l<e.length;l+=1)ke(e[l],t.contains,M(n,String(l)),r+1,o)&&(s+=1);let a=t.minContains??1;s<a&&T(o,n,"minContains",t,`contains matched ${s} items; minimum is ${a}`),t.maxContains!==void 0&&s>t.maxContains&&T(o,n,"maxContains",t,`contains matched ${s} items; maximum is ${t.maxContains}`)}}function yr(e,t,n,r,o){let i=Object.keys(e);t.minProperties!==void 0&&i.length<t.minProperties&&T(o,n,"minProperties",t,`must contain at least ${t.minProperties} properties`),t.maxProperties!==void 0&&i.length>t.maxProperties&&T(o,n,"maxProperties",t,`must contain at most ${t.maxProperties} properties`);for(let s of t.required??[])Object.prototype.hasOwnProperty.call(e,s)||T(o,M(n,s),"required",t,"is required");for(let[s,a]of t.dependentRequired??[])if(Object.prototype.hasOwnProperty.call(e,s))for(let l of a)Object.prototype.hasOwnProperty.call(e,l)||T(o,M(n,l),"dependentRequired",t,`is required when ${s} is present`);for(let s of i){let a=!1,l=t.properties?.get(s);l&&(a=!0,q(e[s],l,M(n,s),r+1,o));for(let c of t.patternProperties??[])c.pattern.regex.test(s)&&(a=!0,q(e[s],c.schema,M(n,s),r+1,o));!a&&t.additionalProperties&&q(e[s],t.additionalProperties,M(n,s),r+1,o)}}function ke(e,t,n,r,o){let i={...o,errors:[],activePairs:new Set(o.activePairs)};return q(e,t,n,r,i),i.errors.length===0&&!i.budget.exhausted}function Ut(e){return e.budget.steps+=1,e.budget.steps<=e.options.maxValidationSteps?!0:(e.budget.exhausted||(e.budget.exhausted=!0,T(e,"","maxValidationSteps",{schemaPath:"#"},`validation steps exceed ${e.options.maxValidationSteps}`)),!1)}function T(e,t,n,r,o){e.errors.length>=e.options.maxValidationErrors||e.errors.push({path:t,keyword:n,schemaPath:r.schemaPath,message:o})}function hr(e,t,n){if(t!==null&&typeof t=="object"){let r=n.objectIds.get(t);return r===void 0&&(r=n.nextObjectId.value++,n.objectIds.set(t,r)),`${e.id}:object:${r}`}return`${e.id}:${typeof t}:${et(t)}`}function br(e,t){switch(t){case"string":return typeof e=="string";case"number":return typeof e=="number"&&Number.isFinite(e);case"integer":return typeof e=="number"&&Number.isSafeInteger(e);case"boolean":return typeof e=="boolean";case"array":return Array.isArray(e);case"object":return A(e);case"null":return e===null}}function Ge(e){let t=new WeakSet,n=(r,o)=>{if(r===null||typeof r=="string"||typeof r=="boolean")return;if(typeof r=="number")return Number.isFinite(r)?void 0:{path:o,message:"must be a finite JSON number"};if(typeof r!="object")return{path:o,message:`must be a JSON value, not ${typeof r}`};if(t.has(r))return{path:o,message:"must not contain cyclic references"};t.add(r);let i=Array.isArray(r)?r.entries():Object.entries(r);for(let[s,a]of i){let l=n(a,M(o,String(s)));if(l)return l}t.delete(r)};return n(e,"")}function tt(e,t){if(!([...e].length>t)&&!/\\(?:[1-9]|k<)/u.test(e)&&!/\(\?<(?:[=!]|[A-Za-z])/u.test(e)&&!/\((?:[^()\\]|\\.)*[+*{](?:[^()\\]|\\.)*\)[+*{?]/u.test(e))try{return new RegExp(e,"u")}catch{return}}function Jt(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/u.exec(e);if(!t)return!1;let n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])));return n.getUTCFullYear()===Number(t[1])&&n.getUTCMonth()===Number(t[2])-1&&n.getUTCDate()===Number(t[3])}function Xt(e){let t=/^(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/u.exec(e);return t?Number(t[1])<=23&&Number(t[2])<=59&&Number(t[3])<=60:!1}function wr(e){let t=/^([^Tt ]+)[Tt ](.+)$/u.exec(e);return!!(t&&Jt(t[1])&&Xt(t[2]))}function Mt(e){if([...e].length>254||/[\s<>(),;:\\"\[\]]/u.test(e))return!1;let t=e.lastIndexOf("@");return t>0&&t<e.length-1&&[...e.slice(0,t)].length<=64&&Ze(e.slice(t+1))}function Ze(e){if([...e].length>253)return!1;let t=e.endsWith(".")?e.slice(0,-1):e;return t.length>0&&t.split(".").every(n=>n.length>0&&n.length<=63&&!n.startsWith("-")&&!n.endsWith("-")&&/^[\p{L}\p{N}-]+$/u.test(n))}function $t(e){try{return!!(new URL(e).protocol&&!/\s/u.test(e))}catch{return!1}}function Nt(e){try{return new URL(e,"https://xeno.invalid/"),!/\s/u.test(e)}catch{return!1}}function vr(e){let t=0;for(let n of e)if(n==="{"&&(t+=1),n==="}"&&(t-=1),t<0||t>1)return!1;return t===0&&![...e].some(n=>{let r=n.codePointAt(0);return r<=31||r===127})}function Pr(e,t){let n=e/t;return Math.abs(n-Math.round(n))<=Number.EPSILON*Math.max(1,Math.abs(n))*8}function A(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Z(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t||e===null||t===null)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((n,r)=>Z(n,t[r]));if(A(e)&&A(t)){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(o=>Object.prototype.hasOwnProperty.call(t,o)&&Z(e[o],t[o]))}return!1}function M(e,t){let n=/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(t)?t:`[${JSON.stringify(t)}]`;return e.length===0?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function U(e,...t){return`${e}/${t.map(Vt).join("/")}`}function Vt(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Bt(e){return e.length===0?"#":`#${e}`}function h(e,t,n,r){e.issues.length>=64||e.issues.push({path:Bt(t),...n?{keyword:n}:{},message:r})}function Qe(e){return e===null?"null":Array.isArray(e)?"array":typeof e=="number"?Number.isSafeInteger(e)?"integer":"number":typeof e}function et(e){try{let t=JSON.stringify(e);return t===void 0?String(e):t}catch{return String(e)}}var _=class extends Error{dialect;path;constructor(t,n,r){super(`Tool schema cannot be projected to ${t} at ${n}: ${r}`),this.name="ToolSchemaProjectionError",this.dialect=t,this.path=n}},Ht=new Set(["$schema","$id","$anchor","$defs","$comment","title","default","examples","deprecated","readOnly","writeOnly"]),xr=new Set(["type","description","enum","format","properties","required","items","minItems","maxItems","minLength","maxLength","minimum","maximum","anyOf"]);function ot(e,t){jt(e);let n=rt(e),r=n,o=zt(n);if(t==="xeno")return{schema:n,dialect:t,canonicalSha256:o,projectedSha256:o,changes:[]};let i={dialect:t,root:r,pointers:new Map,anchors:new Map,changes:[],activeReferences:new Set};Se(r,"",i);let s=F(r,"#",i);if(!ee(s))throw new _(t,"#","provider tool root must remain an object schema");return Rr(n,s,t),{schema:s,dialect:t,canonicalSha256:o,projectedSha256:zt(s),changes:i.changes}}function de(e,t){return e.map(n=>{let r=ot(n.input_schema,t);return{definition:{...n,input_schema:r.schema},projection:r}})}function F(e,t,n){if(typeof e=="boolean"){if(n.dialect!=="google")return e;if(e)return{};throw new _(n.dialect,t,"false schemas are not representable by this provider")}if(typeof e.$ref=="string"){let o=Cr(e.$ref,t,n);if(n.activeReferences.has(e.$ref))throw new _(n.dialect,t,`recursive reference ${e.$ref} cannot be serialized safely`);let i=Object.fromEntries(Object.entries(e).filter(([a])=>a!=="$ref"&&!Ht.has(a)));if(Object.keys(i).length>0){if(n.dialect==="google")throw new _(n.dialect,t,"$ref siblings require an unsupported intersection");n.activeReferences.add(e.$ref);let a=F(o,`${t}/$ref`,n);n.activeReferences.delete(e.$ref);let l=F(i,t,n);return n.changes.push({path:t,keyword:"$ref",action:"transformed",reason:"inlined local reference with sibling intersection"}),{allOf:[a,l]}}n.activeReferences.add(e.$ref);let s=F(o,`${t}/$ref`,n);return n.activeReferences.delete(e.$ref),n.changes.push({path:t,keyword:"$ref",action:"transformed",reason:"inlined local reference"}),s}let r={};for(let[o,i]of Object.entries(e))if(o!=="$ref"){if(Ht.has(o)||o.startsWith("x-")){o==="description"?r.description=i:n.changes.push({path:t,keyword:o,action:"omitted",reason:"provider wire metadata is not required for canonical validation"});continue}if(n.dialect==="google"&&!xr.has(o)){if(o==="const"){r.enum=[rt(i)],n.changes.push({path:t,keyword:o,action:"transformed",reason:"Google wire schema represents const as a single-value enum"});continue}if(o==="prefixItems")throw new _(n.dialect,t,"tuple prefixItems cannot preserve the provider structural contract");n.changes.push({path:t,keyword:o,action:"omitted",reason:"constraint remains enforced by canonical local validation"});continue}if(o==="type"&&n.dialect==="google"&&Array.isArray(i)){let s=i.filter(a=>a!=="null");if(s.length!==1||i.length!==2)throw new _(n.dialect,t,"type union cannot be represented without weakening structure");r.type=s[0],r.nullable=!0,n.changes.push({path:t,keyword:o,action:"transformed",reason:"nullable two-type union mapped to Google nullable"});continue}if(o==="properties"||o==="patternProperties"||o==="$defs"){if(!ee(i))throw new _(n.dialect,t,`${o} must be an object`);let s={};for(let[a,l]of Object.entries(i))s[a]=F(l,`${t}/${o}/${it(a)}`,n);r[o]=s;continue}if(["items","contains","additionalProperties","not"].includes(o)){r[o]=F(i,`${t}/${o}`,n);continue}if(["prefixItems","allOf","anyOf","oneOf"].includes(o)){if(!Array.isArray(i))throw new _(n.dialect,t,`${o} must be an array`);r[o]=i.map((s,a)=>F(s,`${t}/${o}/${a}`,n));continue}r[o]=rt(i)}if(n.dialect==="google"){let o=e.type!==void 0||e.properties!==void 0||e.items!==void 0,i=r.type!==void 0||r.properties!==void 0||r.items!==void 0;if(!o&&(e.oneOf!==void 0||e.allOf!==void 0||e.not!==void 0)||o&&!i)throw new _(n.dialect,t,"minimum structural contract cannot be represented")}return r}function Rr(e,t,n){if(t.type!=="object"||!ee(t.properties))throw new _(n,"#","root object/properties contract changed");let r=Object.keys(e.properties).sort(),o=Object.keys(t.properties).sort();if(JSON.stringify(r)!==JSON.stringify(o))throw new _(n,"#","root property identity changed");let i=[...e.required??[]].sort(),s=Array.isArray(t.required)?[...t.required].sort():[];if(JSON.stringify(i)!==JSON.stringify(s))throw new _(n,"#","root required-property contract changed")}function Se(e,t,n){if(n.pointers.set(t,e),typeof e!="boolean"){typeof e.$anchor=="string"&&n.anchors.set(e.$anchor,e);for(let r of["$defs","properties","patternProperties"]){let o=e[r];if(ee(o))for(let[i,s]of Object.entries(o))Se(s,`${t}/${r}/${it(i)}`,n)}for(let r of["items","contains","additionalProperties","not"]){let o=e[r];(typeof o=="boolean"||ee(o))&&Se(o,`${t}/${r}`,n)}for(let r of["prefixItems","allOf","anyOf","oneOf"]){let o=e[r];Array.isArray(o)&&o.forEach((i,s)=>Se(i,`${t}/${r}/${s}`,n))}}}function Cr(e,t,n){if(!e.startsWith("#"))throw new _(n.dialect,t,"remote references are forbidden");if(e==="#")return n.root;if(e.startsWith("#/")){let r=e.slice(1).split("/").map(i=>i.replace(/~1/g,"/").replace(/~0/g,"~")).map(it).join("/"),o=n.pointers.get(r);if(o!==void 0)return o}else{let r=n.anchors.get(e.slice(1));if(r!==void 0)return r}throw new _(n.dialect,t,`unresolved reference ${e}`)}function zt(e){return(0,Kt.createHash)("sha256").update(nt(e)).digest("hex")}function nt(e){return Array.isArray(e)?`[${e.map(nt).join(",")}]`:ee(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${nt(e[t])}`).join(",")}}`:JSON.stringify(e)}function rt(e){return JSON.parse(JSON.stringify(e))}function it(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ee(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tr={anthropic:{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1},"openai-responses":{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1},google:{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1}};function Wt(e){let t=e.kind==="anthropic"?"https://api.anthropic.com":e.kind==="google"?"https://generativelanguage.googleapis.com":e.kind==="openai-responses"?"https://api.openai.com":null;if(!e.baseURL&&!t)throw new P("Generic OpenAI-compatible providers require baseURL",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});let n=z(e.baseURL??t,{profile:e.endpointProfile,allowedHosts:e.allowedHosts,resolveHostname:e.resolveHostname});return n.pathname=n.pathname.replace(/\/$/,""),n}function ue(e,t){let n=new URL(e.toString());return n.pathname=`${n.pathname.replace(/\/$/,"")}/${t.replace(/^\//,"")}`,n}function Yt(e){let t=e.authentication??{type:"bearer"};if(t.type==="none"||!e.apiKey)return{};if(t.type==="bearer")return{authorization:`Bearer ${e.apiKey}`};let n=t.header.trim().toLowerCase(),r=new Set(["host","content-length","connection","transfer-encoding","cookie","set-cookie","proxy-authorization"]);if(!/^[a-z0-9-]{1,80}$/.test(n)||r.has(n))throw new P("Generic provider authentication header is invalid",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});let o=t.prefix??"";if(/[\r\n]/.test(o))throw new P("Generic provider authentication prefix is invalid",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});return{[n]:`${o}${e.apiKey}`}}function kr(e){let t;if(e.kind==="openai-compatible"){if(!e.capabilityProfile)throw new P("Generic OpenAI-compatible providers require an explicit capabilityProfile",{category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"});t={...e.capabilityProfile};for(let n of["structuredOutput","promptCaching"])if(t[n])throw H("direct-openai-compatible",n);if(!!e.streaming!=!!t.streaming)throw new P("Generic endpoint streaming config must match capabilityProfile.streaming",{category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}else t={...Tr[e.kind],streaming:!!e.streaming,reasoningMetadata:e.kind==="anthropic"&&!!e.streaming};return{...t,vision:t.imageInput}}function me(e,t){return{providerId:t,endpointPolicy:{profile:e.endpointProfile,allowedHosts:e.allowedHosts,resolveHostname:e.resolveHostname},limits:e.transportLimits}}function Gt(e){let t=/^data:([^;,]+);base64,([a-z0-9+/=\r\n]+)$/i.exec(e);return t?{mediaType:t[1],data:t[2].replace(/\s/g,"")}:null}function pe(e){let t=Array.isArray(e.assistant_content)?e.assistant_content:[],n=Array.isArray(e.assistant_only_content)?e.assistant_only_content:[];return[...t,...n].filter(r=>r?.type==="image_url")}function Zt(e){return e.filter(t=>t?.type==="image_url")}function en(e){return e.some(t=>Array.isArray(t.content)&&t.content.some(n=>n.type==="image_url"||n.type==="tool_result"&&pe(n).length>0))}function Ft(e){let t=Gt(e.image_url.url);return t?{type:"image",source:{type:"base64",media_type:t.mediaType,data:t.data}}:{type:"image",source:{type:"url",url:e.image_url.url}}}function _r(e){return e.map(t=>({role:t.role,content:typeof t.content=="string"?t.content:t.content.flatMap(n=>{if(n.type==="image_url")return[Ft(n)];if(n.type==="text")return[n];if(n.type==="tool_use")return[{type:"tool_use",id:n.id,name:n.name,input:n.input}];let r=pe(n),o=[{type:"text",text:ie(n.content)}];return o.push(...r.map(Ft)),[{type:"tool_result",tool_use_id:n.tool_use_id,content:o,is_error:n.is_error}]})}))}function Sr(e){return{type:"input_image",image_url:e.image_url.url,detail:e.image_url.detail??"auto"}}function Er(e){let t=[];for(let n of e){if(typeof n.content=="string"){t.push({role:n.role,content:n.content});continue}let r=n.content.filter(i=>i.type==="text").map(i=>i.text).join(`
|
|
8
8
|
`),o=[...Zt(n.content),...n.content.flatMap(i=>i.type==="tool_result"?pe(i):[])];(r||o.length)&&t.push({role:n.role,content:[...r?[{type:"input_text",text:r}]:[],...o.map(Sr)]});for(let i of n.content)i.type==="tool_use"?t.push({type:"function_call",call_id:i.id,name:i.name,arguments:JSON.stringify(i.input)}):i.type==="tool_result"&&t.push({type:"function_call_output",call_id:i.tool_use_id,output:ie(i.content)})}return t}function Qt(e){let t=Gt(e.image_url.url);return t?{inlineData:{mimeType:t.mediaType,data:t.data}}:{fileData:{fileUri:e.image_url.url}}}function Ar(e){let t=new Map;for(let n of e)if(Array.isArray(n.content))for(let r of n.content)r.type==="tool_use"&&t.set(r.id,r.name);return e.map(n=>typeof n.content=="string"?{role:n.role==="assistant"?"model":"user",parts:[{text:n.content}]}:{role:n.role==="assistant"?"model":"user",parts:n.content.flatMap(r=>{if(r.type==="image_url")return[Qt(r)];if(r.type==="text")return[{text:r.text}];if(r.type==="tool_use")return[{functionCall:{id:r.id,name:r.name,args:r.input},...r.provider_metadata?.thoughtSignature?{thoughtSignature:r.provider_metadata.thoughtSignature}:{}}];let o=ie(r.content);return[{functionResponse:{id:r.tool_use_id,name:t.get(r.tool_use_id)??"unknown_tool",response:r.is_error?{error:o}:{result:o}}},...pe(r).map(Qt)]})})}function tn(e,t){let n=t?[{role:"system",content:t}]:[];for(let r of e){if(typeof r.content=="string"){n.push({role:r.role,content:r.content});continue}let o=r.content.filter(a=>a.type==="text").map(a=>a.text).join(`
|
package/dist/providers/index.js
CHANGED
|
@@ -2,7 +2,7 @@ var rt="https://api.xenostudio.ai";var po=300*1e3;function ot(e,t){return{id:t?.
|
|
|
2
2
|
`).trim();o.length>0&&t.push({role:n.role,content:o})}return t}var fn="http://localhost:3338",gn=rt,yn=2e3,_e=12e4,hn=3e4,Se=class{localUrl;cloudUrl;cloudApiKey;mode;defaultLocalModel;defaultCloudModel;localAvailable=null;localModelName=null;lastHealthCheck=0;constructor(t){this.localUrl=t?.localUrl??fn,this.cloudUrl=t?.cloudUrl??gn,this.cloudApiKey=t?.cloudApiKey??process.env.XENO_API_KEY??"",this.mode=t?.mode??"auto",this.defaultLocalModel=t?.localModel??"default",this.defaultCloudModel=t?.cloudModel??"claude-sonnet-4-6"}async chat(t){let n=await this.shouldUseLocal();if(this.mode==="local"&&!n)return{success:!1,content:"",endpoint:"local",model:"",usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:"Local xeno-rt is not available and mode is set to local-only"};if(n)try{return await this.chatLocal(t)}catch(r){return this.mode==="local"?{success:!1,content:"",endpoint:"local",model:t.model??this.defaultLocalModel,usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:r instanceof Error?r.message:String(r)}:this.chatCloud(t)}return this.chatCloud(t)}async*chatStream(t){let n=await this.shouldUseLocal();if(this.mode==="local"&&!n)throw new Error("Local xeno-rt is not available and mode is set to local-only");let r=n?this.localUrl:this.cloudUrl,o=t.model??(n?this.defaultLocalModel:this.defaultCloudModel),i=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,s={model:o,messages:i,stream:!0,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(s.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(s.stop=t.stop);let a={"Content-Type":"application/json"};n||(a.Authorization=`Bearer ${this.cloudApiKey}`,a["User-Agent"]="XenoAgentSDK/0.4.0");let l=new AbortController,c=setTimeout(()=>l.abort(),_e);try{let d=await fetch(`${r}/v1/chat/completions`,{method:"POST",headers:a,body:JSON.stringify(s),signal:l.signal});if(!d.ok){let g=await d.text().catch(()=>"");throw new Error(`LLM stream failed (HTTP ${d.status}): ${g}`)}if(!d.body)throw new Error("Response body is null \u2014 streaming not supported");let u=d.body.getReader(),m=new TextDecoder,p="";for(;;){let{done:g,value:y}=await u.read();if(g)break;p+=m.decode(y,{stream:!0});let f=p.split(`
|
|
3
3
|
`);p=f.pop()??"";for(let x of f){let C=x.trim();if(!C||!C.startsWith("data: "))continue;let w=C.slice(6);if(w==="[DONE]")return;try{let M=JSON.parse(w).choices[0]?.delta.content;M&&(yield M)}catch{}}}}finally{clearTimeout(c)}}async isLocalAvailable(t=!1){let n=Date.now();if(!t&&this.localAvailable!==null&&n-this.lastHealthCheck<hn)return this.localAvailable;try{let r=new AbortController,o=setTimeout(()=>r.abort(),yn);try{let i=await fetch(`${this.localUrl}/v1/models`,{signal:r.signal});if(!i.ok)return this.localAvailable=!1,this.localModelName=null,this.lastHealthCheck=n,!1;let s=await i.json();return this.localModelName=s.data?.[0]?.id??null,this.localAvailable=!0,this.lastHealthCheck=n,!0}finally{clearTimeout(o)}}catch{return this.localAvailable=!1,this.localModelName=null,this.lastHealthCheck=n,!1}}setMode(t){this.mode=t}getMode(){return this.mode}setLocalUrl(t){this.localUrl=t,this.localAvailable=null,this.lastHealthCheck=0}setCloudApiKey(t){this.cloudApiKey=t}async getStatus(){let t=await this.isLocalAvailable(),n;return this.mode==="local"?n="local":this.mode==="cloud"?n="cloud":n=t?"local":"cloud",{mode:this.mode,localAvailable:t,activeEndpoint:n,localModel:this.localModelName??void 0,localUrl:this.localUrl,cloudUrl:this.cloudUrl}}asLLMProvider(t){return ot(this,t)}async shouldUseLocal(){return this.mode==="cloud"?!1:this.mode==="local"?this.isLocalAvailable():this.isLocalAvailable()}async chatLocal(t){let n=t.model??this.defaultLocalModel,r=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,o={model:n,messages:r,stream:!1,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(o.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(o.stop=t.stop);let i=new AbortController,s=setTimeout(()=>i.abort(),_e);try{let a=await fetch(`${this.localUrl}/v1/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),signal:i.signal});if(!a.ok){let p=await a.text().catch(()=>"");throw new Error(`Local LLM request failed (HTTP ${a.status}): ${p}`)}let l=await a.json(),u=(l.choices?.[0]??{}).message??{},m=l.usage??{};return{success:!0,content:String(u.content??""),endpoint:"local",model:String(l.model??n),usage:{promptTokens:m.prompt_tokens??0,completionTokens:m.completion_tokens??0,totalTokens:m.total_tokens??0}}}finally{clearTimeout(s)}}async chatCloud(t){let n=t.model??this.defaultCloudModel,r=t.systemPrompt?[{role:"system",content:t.systemPrompt},...t.messages]:t.messages,o={model:n,messages:r,stream:!1,max_tokens:t.maxTokens??4096,temperature:t.temperature??.7};t.jsonMode&&(o.response_format={type:"json_object"}),t.stop&&t.stop.length>0&&(o.stop=t.stop);let i={"Content-Type":"application/json",Authorization:`Bearer ${this.cloudApiKey}`,"User-Agent":"XenoAgentSDK/0.4.0"},s=new AbortController,a=setTimeout(()=>s.abort(),_e);try{let l=await fetch(`${this.cloudUrl}/v1/chat/completions`,{method:"POST",headers:i,body:JSON.stringify(o),signal:s.signal});if(!l.ok){let g=`Cloud LLM request failed (HTTP ${l.status})`;try{let f=(await l.json()).error;g=typeof f=="string"?f:f?.message??g}catch{}return{success:!1,content:"",endpoint:"cloud",model:n,usage:{promptTokens:0,completionTokens:0,totalTokens:0},error:g}}let c=await l.json(),m=(c.choices?.[0]??{}).message??{},p=c.usage??{};return{success:!0,content:String(m.content??""),endpoint:"cloud",model:String(c.model??n),usage:{promptTokens:p.prompt_tokens??0,completionTokens:p.completion_tokens??0,totalTokens:p.total_tokens??0}}}finally{clearTimeout(a)}}};import{randomUUID as Ke}from"node:crypto";function bn(e){return/^data:([^;,]+)[;,]/i.exec(e.trim())?.[1]}function wn(e){let t=[];for(let n of e){if(n.type==="text"){t.push(n.text);continue}if(n.type==="image_url"){t.push(`[image ${bn(n.image_url.url)??"unknown"}]`);continue}let r=n.text??n.data;if(r&&r.trim().length>0){t.push(r);continue}let o=n.uri??n.mimeType??"resource";t.push(`[resource ${o}]`)}return t.join(`
|
|
4
4
|
|
|
5
|
-
`).trim()}function Z(e){return typeof e=="string"?e:wn(e)}import{performance as $e}from"node:perf_hooks";var vn=1;var Pn=12,xn=128,Rn=/^xeno\.[a-z0-9]+(?:[._][a-z0-9]+)*$/u,Cn=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u,Tn=/(?:[\\/]|@|https?:|bearer|token|secret|password|credential|api[_-]?key|[0-9a-f]{8}-[0-9a-f-]{27,})/iu,kn=new Set(["arch","cached","capability","category","component","contained","error_code","frame_kind","gate","method","mode","operation","outcome","platform","previous_state","protocol_version","provider","queue","reason","recovery","retry_kind","state","status","tool","transport","trigger"]),it=new Set,st=new Map;function _n(e){let t=e.trim().toLowerCase();return!t||t.length>64||Tn.test(t)||!Cn.test(t)?null:t}function Sn(e,t){if(typeof t=="boolean")return t;if(typeof t=="number")return e!=="protocol_version"||!Number.isInteger(t)||t<0||t>100?null:t;if(typeof t!="string")return null;let n=_n(t);if(!n)return null;let r=st.get(e);return r||(r=new Set,st.set(e,r)),!r.has(n)&&r.size>=xn?"other":(r.add(n),n)}function En(e={}){let t={};for(let[n,r]of Object.entries(e)){if(Object.keys(t).length>=Pn)break;if(!kn.has(n))continue;let o=Sn(n,r);o!==null&&(t[n]=o)}return Object.freeze(t)}function at(e){if(it.size===0||!Rn.test(e.name)||e.name.length>128)return;let t=e.kind==="event"?1:e.value??1;if(!Number.isFinite(t)||t<0)return;let n=Object.freeze({schemaVersion:vn,kind:e.kind,name:e.name,value:Math.min(t,Number.MAX_SAFE_INTEGER),timestamp:(e.timestamp??new Date).toISOString(),attributes:En(e.attributes)});for(let r of it)try{r(n)}catch{}}function H(e,t=1,n){at({kind:"counter",name:e,value:t,attributes:n})}function Ee(e,t,n){at({kind:"histogram",name:e,value:t,attributes:n})}import{lookup as Ln}from"node:dns/promises";import{isIP as le}from"node:net";var An=["context length","context window","maximum context","too many tokens","request too large"];function lt(e){let t=e.toLowerCase();return An.some(n=>t.includes(n))}var P=class extends Error{category;code;retryable;providerId;statusCode;retryAfterMs;requestId;constructor(t,n){super(t,n.cause!==void 0?{cause:n.cause}:void 0),this.name="ProviderError",this.category=n.category,this.code=n.code,this.retryable=n.retryable??!1,this.providerId=n.providerId,this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId}};function Ie(e,t=Date.now()){if(!e)return;let n=Number(e.trim());if(Number.isFinite(n)&&n>=0)return Math.ceil(n*1e3);let r=Date.parse(e);if(Number.isFinite(r))return Math.max(0,r-t)}function In(e){if(typeof e=="string")return e;if(!e||typeof e!="object")return"";let t=e,n=t.error;if(typeof n=="string")return n;if(n&&typeof n=="object"){let r=n;if(typeof r.message=="string")return r.message;if(typeof r.type=="string")return r.type}return typeof t.message=="string"?t.message:""}function Ae(e,t){return t.some(n=>e.includes(n))}function Le(e){let t=In(e.body).trim(),n=t.toLowerCase(),r=t?`: ${t.slice(0,1e3)}`:"",o={providerId:e.providerId,statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId};return e.statusCode===401?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===403?new P(`Provider authorization failed${r}`,{...o,category:"authorization",code:"PROVIDER_AUTHORIZATION_FAILED"}):Ae(n,["api key not valid","invalid api key","api key expired","api_key_invalid","invalid authentication credentials","missing api key"])?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===429?new P(`Provider rate limit reached${r}`,{...o,category:"rate_limit",code:"PROVIDER_RATE_LIMITED",retryable:!0}):lt(n)?new P(`Provider context window exceeded${r}`,{...o,category:"context_overflow",code:"PROVIDER_CONTEXT_OVERFLOW"}):Ae(n,["safety","content policy","blocked_reason","responsible_ai_policy_violation"])?new P(`Provider safety policy refused the request${r}`,{...o,category:"safety_refusal",code:"PROVIDER_SAFETY_REFUSAL"}):e.statusCode===404||Ae(n,["model not found","model does not exist","unsupported model"])?new P(`Provider model is unavailable${r}`,{...o,category:"unsupported_model",code:"PROVIDER_MODEL_UNSUPPORTED"}):e.statusCode===408||e.statusCode===504?new P(`Provider request timed out${r}`,{...o,category:"timeout",code:"PROVIDER_TIMEOUT",retryable:!0}):e.statusCode>=500||e.statusCode===409||e.statusCode===425?new P(`Provider server error${r}`,{...o,category:"server",code:"PROVIDER_SERVER_ERROR",retryable:!0}):new P(`Provider rejected the request with HTTP ${e.statusCode}${r}`,{...o,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}function v(e,t,n){return new P(`Malformed ${e} response: ${t}`,{providerId:e,category:"malformed_response",code:"PROVIDER_MALFORMED_RESPONSE",...n!==void 0?{cause:n}:{}})}function z(e,t){return H("xeno.provider.capability_mismatches",1,{component:"provider_contract",provider:e,capability:t,error_code:"provider_capability_unsupported"}),new P(`${e} does not advertise the required ${t} capability`,{providerId:e,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}var ut=new Set(["metadata.google.internal","metadata.azure.internal","instance-data.ec2.internal"]);function S(e){return new P(`Provider endpoint rejected: ${e}`,{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"})}function On(e){let t=e.split(".");if(t.length!==4)return null;let n=t.map(r=>Number(r));return n.every(r=>Number.isInteger(r)&&r>=0&&r<=255)?n:null}function ct(e){let t=On(e);if(!t)return"public";let[n,r]=t;return n===0?"unspecified":n===127?"loopback":n===169&&r===254?"link-local":n===10||n===172&&r>=16&&r<=31||n===192&&r===168?"private":"public"}function ce(e){let t=e.toLowerCase().replace(/^\[|\]$/g,"").split("%")[0];le(t)===6&&(t=new URL(`http://[${t}]`).hostname.slice(1,-1));let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(t);if(n){let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8}.${r&255}.${o>>8}.${o&255}`}return t}function mt(e){let t=ce(e);return le(t)===4?ct(t):t==="::"||t==="::0"?"unspecified":t==="::1"?"loopback":t.startsWith("::ffff:")?ct(t.slice(7)):/^f[cd]/.test(t)?"private":/^fe[89ab]/.test(t)?"link-local":"public"}function dt(e){return e==="example"||e.endsWith(".example")||e==="test"||e.endsWith(".test")||e==="invalid"||e.endsWith(".invalid")}function Mn(e){return e==="localhost"||e.endsWith(".localhost")}function K(e,t={}){let n;try{n=new URL(e)}catch{throw S("the URL is invalid")}if(n.username||n.password)throw S("embedded credentials are forbidden");if(n.hash||n.search)throw S("base URLs cannot contain a query or fragment");if(!n.hostname||n.hostname.includes("%"))throw S("the hostname is empty or ambiguous");if(ut.has(n.hostname.toLowerCase()))throw S("cloud metadata destinations are forbidden");if(n.protocol!=="https:"&&n.protocol!=="http:")throw S(`scheme ${n.protocol} is unsupported`);let r=t.profile??"public-https";if(n.protocol==="http:"&&r!=="local-network")throw S("plain HTTP requires the explicit local-network profile");let o=n.hostname.replace(/^\[|\]$/g,""),i=le(o)?mt(o):null;if(i==="link-local"||i==="unspecified")throw S(`${i} destinations are forbidden`);if(r==="public-https"&&(i==="private"||i==="loopback"||Mn(n.hostname)))throw S("private and loopback destinations require the local-network profile");if(r==="local-network"&&n.protocol==="http:"&&i==="public"&&!t.allowedHosts?.includes(n.hostname))throw S("local-network HTTP must resolve to loopback or a private address");return n}async function Oe(e,t={}){await Me(e,t)}async function Me(e,t={}){let n=e.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(ut.has(n))throw S("cloud metadata destinations are forbidden");let r=new Set((t.allowedHosts??[]).map(s=>s.toLowerCase())),o=le(n)?[n]:dt(n)?[]:t.resolveHostname?await t.resolveHostname(n):(await Ln(n,{all:!0,verbatim:!0})).map(s=>s.address);if(!o.length&&!dt(n))throw S("DNS resolution returned no addresses");let i=t.profile??"public-https";for(let s of o){let a=mt(s);if(a==="link-local"||a==="unspecified")throw S(`DNS resolved to a forbidden ${a} address`);if(i==="public-https"&&a!=="public"&&!r.has(n))throw S(`DNS resolved public endpoint to ${a} address ${s}`);if(i==="local-network"&&e.protocol==="http:"&&a==="public"&&!r.has(n))throw S(`local-network HTTP resolved to public address ${s}`)}return o}import{request as $n}from"node:http";import{request as Nn}from"node:https";import{isIP as pt}from"node:net";import{once as Dn}from"node:events";function ft(e,t){return{dispatch(n,r){let o,i=!1,s=d=>{i||(i=!0,o?.destroy(),r.onError(d))},a=t[0];if(!a||!pt(a)||new URL(n.origin).origin!==e.origin)return queueMicrotask(()=>s(new Error("Provider connection has no authorized pinned address"))),!0;let l=n.headers??{},c=(e.protocol==="https:"?Nn:$n)(new URL(n.path,e.origin),{method:n.method,headers:l,agent:!1,rejectUnauthorized:!0,lookup:(d,u,m)=>{let p={address:a,family:pt(a)};typeof u=="object"&&u.all?m(null,[p]):m(null,a,p.family)}},d=>{o=d;let u=d.rawHeaders.map(p=>Buffer.from(p)),m=()=>d.resume();r.onHeaders(d.statusCode??500,u,m,d.statusMessage??"")===!1&&d.pause(),d.on("data",p=>{r.onData(p)||d.pause()}),d.on("end",()=>{i||(i=!0,r.onComplete(d.rawTrailers.map(p=>Buffer.from(p))))}),d.on("error",s),d.on("aborted",()=>s(new Error("Provider response was interrupted")))});return c.on("socket",d=>{d.once("connect",()=>{(!d.remoteAddress||ce(d.remoteAddress)!==ce(a))&&c.destroy(new Error("Provider socket did not connect to its authorized address"))})}),c.on("error",s),r.onConnect(d=>c.destroy(d??new Error("Provider request aborted"))),(async()=>{try{let d=n.body;if(typeof d=="string"||d instanceof Uint8Array)c.end(d);else{if(d)for await(let u of d){if(c.destroyed)return;c.write(u)||await Dn(c,"drain")}c.end()}}catch(d){c.destroy(d instanceof Error?d:new Error("Provider request body failed"))}})(),!0}}}var F={connectTimeoutMs:15e3,totalTimeoutMs:12e4,idleTimeoutMs:3e4,maxResponseBytes:8*1024*1024,maxHeaderBytes:64*1024,maxEventBytes:1024*1024};function jn(e={}){for(let[t,n]of Object.entries(e))if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))throw v("provider-transport",`${t} must be a positive safe integer`);return{connectTimeoutMs:Math.max(100,e.connectTimeoutMs??F.connectTimeoutMs),totalTimeoutMs:Math.max(100,e.totalTimeoutMs??F.totalTimeoutMs),idleTimeoutMs:Math.max(100,e.idleTimeoutMs??F.idleTimeoutMs),maxResponseBytes:Math.max(1024,e.maxResponseBytes??F.maxResponseBytes),maxHeaderBytes:Math.max(1024,e.maxHeaderBytes??F.maxHeaderBytes),maxEventBytes:Math.max(1024,e.maxEventBytes??F.maxEventBytes)}}async function ee(e,t){let n,r=new Promise((o,i)=>{n=()=>i(new Error("Provider operation aborted")),t.addEventListener("abort",n,{once:!0}),t.aborted&&n()});try{return await Promise.race([e,r])}finally{t.removeEventListener("abort",n)}}function de(e,t,n,r){try{return e.decode(t,{stream:n})}catch{throw v(r,"response is not valid UTF-8")}}function Ne(e,t,n){let r=new P(t==="cancelled"?"Provider request was cancelled":"Provider request timed out",{providerId:e,category:t,code:t==="cancelled"?"PROVIDER_CANCELLED":"PROVIDER_TIMEOUT",retryable:t==="timeout",...n!==void 0?{cause:n}:{}});return t==="cancelled"&&(r.name="AbortError"),r}function qn(e){let t=0;return e.forEach((n,r)=>{t+=Buffer.byteLength(r)+Buffer.byteLength(n)+4}),t}async function gt(e,t,n,r){if(!e.body)return"";let o=e.body.getReader(),i=new TextDecoder("utf-8",{fatal:!0}),s=0,a="",l,c=()=>{l&&clearTimeout(l),l=setTimeout(()=>r.abort("idle-timeout"),n.idleTimeoutMs)};c();try{for(;;){let{value:d,done:u}=await ee(o.read(),r.signal);if(u)break;if(c(),s+=d.byteLength,s>n.maxResponseBytes)throw v(t,`response exceeded ${n.maxResponseBytes} bytes`);a+=de(i,d,!0,t)}return a+=de(i,void 0,!1,t),a}finally{l&&clearTimeout(l),o.cancel().catch(()=>{}),o.releaseLock()}}async function yt(e,t,n,r){let o=$e.now(),i=jn(n.limits);H("xeno.provider.requests",1,{component:"provider_transport",provider:n.providerId,transport:"http"});let s=new AbortController,a=null,l=t.signal,c=()=>s.abort("caller");if(l?.aborted)throw Ne(n.providerId,"cancelled");l?.addEventListener("abort",c,{once:!0});let d=setTimeout(()=>{a="total",s.abort("total-timeout")},i.totalTimeoutMs),u=setTimeout(()=>{a="connect",s.abort("connect-timeout")},i.connectTimeoutMs),m;try{let p=await ee(Me(e,n.endpointPolicy),s.signal);if(s.signal.aborted)throw new Error("Provider request aborted before dispatch");let g={...t,signal:s.signal,redirect:"manual",dispatcher:ft(e,p)},y=fetch(e,g);y.then(w=>{s.signal.aborted&&w.body?.cancel().catch(()=>{})},()=>{});let f=await ee(y,s.signal);if(m=f,clearTimeout(u),qn(f.headers)>i.maxHeaderBytes)throw v(n.providerId,`response headers exceeded ${i.maxHeaderBytes} bytes`);if(f.redirected||f.status>=300&&f.status<400)throw new P("Provider redirects are disabled",{providerId:n.providerId,category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED",statusCode:f.status});let x=f.headers.get("content-length");if(x&&/^\d+$/.test(x)&&Number(x)>i.maxResponseBytes)throw v(n.providerId,`response exceeded ${i.maxResponseBytes} bytes`);if(!f.ok){let w=await gt(f,n.providerId,i,s),I=w;try{I=w?JSON.parse(w):{}}catch{}throw Le({providerId:n.providerId,statusCode:f.status,body:I,retryAfterMs:Ie(f.headers.get("retry-after")),requestId:f.headers.get("request-id")??f.headers.get("x-request-id")??void 0})}let C=await ee(r(f,s,i),s.signal);return H("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),Ee("xeno.provider.request_duration_ms",$e.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),C}catch(p){let g;throw p instanceof P?g=p:l?.aborted||s.signal.reason==="caller"?g=Ne(n.providerId,"cancelled",p):a||s.signal.reason==="idle-timeout"?g=Ne(n.providerId,"timeout",p):g=new P("Provider transport failed",{providerId:n.providerId,category:"transport",code:"PROVIDER_TRANSPORT_ERROR",retryable:!0,cause:p}),s.abort("request-failed"),m?.body&&!m.body.locked&&m.body.cancel().catch(()=>{}),H("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category,error_code:g.code}),Ee("xeno.provider.request_duration_ms",$e.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category}),g}finally{clearTimeout(u),clearTimeout(d),l?.removeEventListener("abort",c)}}async function De(e,t,n){return yt(e,t,n,async(r,o,i)=>{let s=await gt(r,n.providerId,i,o),a;try{a=s?JSON.parse(s):{}}catch(l){throw v(n.providerId,"body is not valid JSON",l)}if(!a||typeof a!="object"||Array.isArray(a))throw v(n.providerId,"JSON body must be an object");return a})}async function te(e,t,n,r){return yt(e,t,n,async(o,i,s)=>{if(!o.body)throw v(n.providerId,"stream response has no body");let a=o.body.getReader(),l=new TextDecoder("utf-8",{fatal:!0}),c="",d=0,u="message",m=[],p,g=()=>{p&&clearTimeout(p),p=setTimeout(()=>i.abort("idle-timeout"),s.idleTimeoutMs)},y=async()=>{if(m.length===0){u="message";return}let f=m.join(`
|
|
5
|
+
`).trim()}function Z(e){return typeof e=="string"?e:wn(e)}import{performance as $e}from"node:perf_hooks";var vn=1;var Pn=12,xn=128,Rn=/^xeno\.[a-z0-9]+(?:[._][a-z0-9]+)*$/u,Cn=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u,Tn=/(?:[\\/]|@|https?:|bearer|token|secret|password|credential|api[_-]?key|[0-9a-f]{8}-[0-9a-f-]{27,})/iu,kn=new Set(["arch","cached","capability","category","component","contained","error_code","frame_kind","gate","method","mode","operation","outcome","platform","previous_state","protocol_version","provider","queue","reason","recovery","retry_kind","state","status","tool","transport","trigger"]),it=new Set,st=new Map;function _n(e){let t=e.trim().toLowerCase();return!t||t.length>64||Tn.test(t)||!Cn.test(t)?null:t}function Sn(e,t){if(typeof t=="boolean")return t;if(typeof t=="number")return e!=="protocol_version"||!Number.isInteger(t)||t<0||t>100?null:t;if(typeof t!="string")return null;let n=_n(t);if(!n)return null;let r=st.get(e);return r||(r=new Set,st.set(e,r)),!r.has(n)&&r.size>=xn?"other":(r.add(n),n)}function En(e={}){let t={};for(let[n,r]of Object.entries(e)){if(Object.keys(t).length>=Pn)break;if(!kn.has(n))continue;let o=Sn(n,r);o!==null&&(t[n]=o)}return Object.freeze(t)}function at(e){if(it.size===0||!Rn.test(e.name)||e.name.length>128)return;let t=e.kind==="event"?1:e.value??1;if(!Number.isFinite(t)||t<0)return;let n=Object.freeze({schemaVersion:vn,kind:e.kind,name:e.name,value:Math.min(t,Number.MAX_SAFE_INTEGER),timestamp:(e.timestamp??new Date).toISOString(),attributes:En(e.attributes)});for(let r of it)try{r(n)}catch{}}function H(e,t=1,n){at({kind:"counter",name:e,value:t,attributes:n})}function Ee(e,t,n){at({kind:"histogram",name:e,value:t,attributes:n})}import{lookup as Ln}from"node:dns/promises";import{isIP as le}from"node:net";var An=["context length","context window","maximum context","too many tokens","request too large"];function lt(e){let t=e.toLowerCase();return An.some(n=>t.includes(n))}var P=class extends Error{category;code;retryable;providerId;statusCode;retryAfterMs;requestId;constructor(t,n){super(t,n.cause!==void 0?{cause:n.cause}:void 0),this.name="ProviderError",this.category=n.category,this.code=n.code,this.retryable=n.retryable??!1,this.providerId=n.providerId,this.statusCode=n.statusCode,this.retryAfterMs=n.retryAfterMs,this.requestId=n.requestId}};function Ie(e,t=Date.now()){if(!e)return;let n=Number(e.trim());if(Number.isFinite(n)&&n>=0)return Math.ceil(n*1e3);let r=Date.parse(e);if(Number.isFinite(r))return Math.max(0,r-t)}function In(e){if(typeof e=="string")return e;if(!e||typeof e!="object")return"";let t=e,n=t.error;if(typeof n=="string")return n;if(n&&typeof n=="object"){let r=n;if(typeof r.message=="string")return r.message;if(typeof r.type=="string")return r.type}return typeof t.message=="string"?t.message:""}function Ae(e,t){return t.some(n=>e.includes(n))}function Le(e){let t=In(e.body).trim(),n=t.toLowerCase(),r=t?`: ${t.slice(0,1e3)}`:"",o={providerId:e.providerId,statusCode:e.statusCode,retryAfterMs:e.retryAfterMs,requestId:e.requestId};return e.statusCode===401?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===403?new P(`Provider authorization failed${r}`,{...o,category:"authorization",code:"PROVIDER_AUTHORIZATION_FAILED"}):Ae(n,["api key not valid","invalid api key","api key expired","api_key_invalid","invalid authentication credentials","missing api key"])?new P(`Provider authentication failed${r}`,{...o,category:"authentication",code:"PROVIDER_AUTHENTICATION_FAILED"}):e.statusCode===429?new P(`Provider rate limit reached${r}`,{...o,category:"rate_limit",code:"PROVIDER_RATE_LIMITED",retryable:!0}):lt(n)?new P(`Provider context window exceeded${r}`,{...o,category:"context_overflow",code:"PROVIDER_CONTEXT_OVERFLOW"}):Ae(n,["safety","content policy","blocked_reason","responsible_ai_policy_violation"])?new P(`Provider safety policy refused the request${r}`,{...o,category:"safety_refusal",code:"PROVIDER_SAFETY_REFUSAL"}):e.statusCode===404||Ae(n,["model not found","model does not exist","unsupported model","unknown provider for model"])?new P(`Provider model is unavailable${r}`,{...o,category:"unsupported_model",code:"PROVIDER_MODEL_UNSUPPORTED"}):e.statusCode===408||e.statusCode===504?new P(`Provider request timed out${r}`,{...o,category:"timeout",code:"PROVIDER_TIMEOUT",retryable:!0}):e.statusCode>=500||e.statusCode===409||e.statusCode===425?new P(`Provider server error${r}`,{...o,category:"server",code:"PROVIDER_SERVER_ERROR",retryable:!0}):new P(`Provider rejected the request with HTTP ${e.statusCode}${r}`,{...o,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}function v(e,t,n){return new P(`Malformed ${e} response: ${t}`,{providerId:e,category:"malformed_response",code:"PROVIDER_MALFORMED_RESPONSE",...n!==void 0?{cause:n}:{}})}function z(e,t){return H("xeno.provider.capability_mismatches",1,{component:"provider_contract",provider:e,capability:t,error_code:"provider_capability_unsupported"}),new P(`${e} does not advertise the required ${t} capability`,{providerId:e,category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}var ut=new Set(["metadata.google.internal","metadata.azure.internal","instance-data.ec2.internal"]);function S(e){return new P(`Provider endpoint rejected: ${e}`,{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"})}function On(e){let t=e.split(".");if(t.length!==4)return null;let n=t.map(r=>Number(r));return n.every(r=>Number.isInteger(r)&&r>=0&&r<=255)?n:null}function ct(e){let t=On(e);if(!t)return"public";let[n,r]=t;return n===0?"unspecified":n===127?"loopback":n===169&&r===254?"link-local":n===10||n===172&&r>=16&&r<=31||n===192&&r===168?"private":"public"}function ce(e){let t=e.toLowerCase().replace(/^\[|\]$/g,"").split("%")[0];le(t)===6&&(t=new URL(`http://[${t}]`).hostname.slice(1,-1));let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(t);if(n){let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8}.${r&255}.${o>>8}.${o&255}`}return t}function mt(e){let t=ce(e);return le(t)===4?ct(t):t==="::"||t==="::0"?"unspecified":t==="::1"?"loopback":t.startsWith("::ffff:")?ct(t.slice(7)):/^f[cd]/.test(t)?"private":/^fe[89ab]/.test(t)?"link-local":"public"}function dt(e){return e==="example"||e.endsWith(".example")||e==="test"||e.endsWith(".test")||e==="invalid"||e.endsWith(".invalid")}function Mn(e){return e==="localhost"||e.endsWith(".localhost")}function K(e,t={}){let n;try{n=new URL(e)}catch{throw S("the URL is invalid")}if(n.username||n.password)throw S("embedded credentials are forbidden");if(n.hash||n.search)throw S("base URLs cannot contain a query or fragment");if(!n.hostname||n.hostname.includes("%"))throw S("the hostname is empty or ambiguous");if(ut.has(n.hostname.toLowerCase()))throw S("cloud metadata destinations are forbidden");if(n.protocol!=="https:"&&n.protocol!=="http:")throw S(`scheme ${n.protocol} is unsupported`);let r=t.profile??"public-https";if(n.protocol==="http:"&&r!=="local-network")throw S("plain HTTP requires the explicit local-network profile");let o=n.hostname.replace(/^\[|\]$/g,""),i=le(o)?mt(o):null;if(i==="link-local"||i==="unspecified")throw S(`${i} destinations are forbidden`);if(r==="public-https"&&(i==="private"||i==="loopback"||Mn(n.hostname)))throw S("private and loopback destinations require the local-network profile");if(r==="local-network"&&n.protocol==="http:"&&i==="public"&&!t.allowedHosts?.includes(n.hostname))throw S("local-network HTTP must resolve to loopback or a private address");return n}async function Oe(e,t={}){await Me(e,t)}async function Me(e,t={}){let n=e.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(ut.has(n))throw S("cloud metadata destinations are forbidden");let r=new Set((t.allowedHosts??[]).map(s=>s.toLowerCase())),o=le(n)?[n]:dt(n)?[]:t.resolveHostname?await t.resolveHostname(n):(await Ln(n,{all:!0,verbatim:!0})).map(s=>s.address);if(!o.length&&!dt(n))throw S("DNS resolution returned no addresses");let i=t.profile??"public-https";for(let s of o){let a=mt(s);if(a==="link-local"||a==="unspecified")throw S(`DNS resolved to a forbidden ${a} address`);if(i==="public-https"&&a!=="public"&&!r.has(n))throw S(`DNS resolved public endpoint to ${a} address ${s}`);if(i==="local-network"&&e.protocol==="http:"&&a==="public"&&!r.has(n))throw S(`local-network HTTP resolved to public address ${s}`)}return o}import{request as $n}from"node:http";import{request as Nn}from"node:https";import{isIP as pt}from"node:net";import{once as Dn}from"node:events";function ft(e,t){return{dispatch(n,r){let o,i=!1,s=d=>{i||(i=!0,o?.destroy(),r.onError(d))},a=t[0];if(!a||!pt(a)||new URL(n.origin).origin!==e.origin)return queueMicrotask(()=>s(new Error("Provider connection has no authorized pinned address"))),!0;let l=n.headers??{},c=(e.protocol==="https:"?Nn:$n)(new URL(n.path,e.origin),{method:n.method,headers:l,agent:!1,rejectUnauthorized:!0,lookup:(d,u,m)=>{let p={address:a,family:pt(a)};typeof u=="object"&&u.all?m(null,[p]):m(null,a,p.family)}},d=>{o=d;let u=d.rawHeaders.map(p=>Buffer.from(p)),m=()=>d.resume();r.onHeaders(d.statusCode??500,u,m,d.statusMessage??"")===!1&&d.pause(),d.on("data",p=>{r.onData(p)||d.pause()}),d.on("end",()=>{i||(i=!0,r.onComplete(d.rawTrailers.map(p=>Buffer.from(p))))}),d.on("error",s),d.on("aborted",()=>s(new Error("Provider response was interrupted")))});return c.on("socket",d=>{d.once("connect",()=>{(!d.remoteAddress||ce(d.remoteAddress)!==ce(a))&&c.destroy(new Error("Provider socket did not connect to its authorized address"))})}),c.on("error",s),r.onConnect(d=>c.destroy(d??new Error("Provider request aborted"))),(async()=>{try{let d=n.body;if(typeof d=="string"||d instanceof Uint8Array)c.end(d);else{if(d)for await(let u of d){if(c.destroyed)return;c.write(u)||await Dn(c,"drain")}c.end()}}catch(d){c.destroy(d instanceof Error?d:new Error("Provider request body failed"))}})(),!0}}}var F={connectTimeoutMs:15e3,totalTimeoutMs:12e4,idleTimeoutMs:3e4,maxResponseBytes:8*1024*1024,maxHeaderBytes:64*1024,maxEventBytes:1024*1024};function jn(e={}){for(let[t,n]of Object.entries(e))if(n!==void 0&&(!Number.isSafeInteger(n)||n<1))throw v("provider-transport",`${t} must be a positive safe integer`);return{connectTimeoutMs:Math.max(100,e.connectTimeoutMs??F.connectTimeoutMs),totalTimeoutMs:Math.max(100,e.totalTimeoutMs??F.totalTimeoutMs),idleTimeoutMs:Math.max(100,e.idleTimeoutMs??F.idleTimeoutMs),maxResponseBytes:Math.max(1024,e.maxResponseBytes??F.maxResponseBytes),maxHeaderBytes:Math.max(1024,e.maxHeaderBytes??F.maxHeaderBytes),maxEventBytes:Math.max(1024,e.maxEventBytes??F.maxEventBytes)}}async function ee(e,t){let n,r=new Promise((o,i)=>{n=()=>i(new Error("Provider operation aborted")),t.addEventListener("abort",n,{once:!0}),t.aborted&&n()});try{return await Promise.race([e,r])}finally{t.removeEventListener("abort",n)}}function de(e,t,n,r){try{return e.decode(t,{stream:n})}catch{throw v(r,"response is not valid UTF-8")}}function Ne(e,t,n){let r=new P(t==="cancelled"?"Provider request was cancelled":"Provider request timed out",{providerId:e,category:t,code:t==="cancelled"?"PROVIDER_CANCELLED":"PROVIDER_TIMEOUT",retryable:t==="timeout",...n!==void 0?{cause:n}:{}});return t==="cancelled"&&(r.name="AbortError"),r}function qn(e){let t=0;return e.forEach((n,r)=>{t+=Buffer.byteLength(r)+Buffer.byteLength(n)+4}),t}async function gt(e,t,n,r){if(!e.body)return"";let o=e.body.getReader(),i=new TextDecoder("utf-8",{fatal:!0}),s=0,a="",l,c=()=>{l&&clearTimeout(l),l=setTimeout(()=>r.abort("idle-timeout"),n.idleTimeoutMs)};c();try{for(;;){let{value:d,done:u}=await ee(o.read(),r.signal);if(u)break;if(c(),s+=d.byteLength,s>n.maxResponseBytes)throw v(t,`response exceeded ${n.maxResponseBytes} bytes`);a+=de(i,d,!0,t)}return a+=de(i,void 0,!1,t),a}finally{l&&clearTimeout(l),o.cancel().catch(()=>{}),o.releaseLock()}}async function yt(e,t,n,r){let o=$e.now(),i=jn(n.limits);H("xeno.provider.requests",1,{component:"provider_transport",provider:n.providerId,transport:"http"});let s=new AbortController,a=null,l=t.signal,c=()=>s.abort("caller");if(l?.aborted)throw Ne(n.providerId,"cancelled");l?.addEventListener("abort",c,{once:!0});let d=setTimeout(()=>{a="total",s.abort("total-timeout")},i.totalTimeoutMs),u=setTimeout(()=>{a="connect",s.abort("connect-timeout")},i.connectTimeoutMs),m;try{let p=await ee(Me(e,n.endpointPolicy),s.signal);if(s.signal.aborted)throw new Error("Provider request aborted before dispatch");let g={...t,signal:s.signal,redirect:"manual",dispatcher:ft(e,p)},y=fetch(e,g);y.then(w=>{s.signal.aborted&&w.body?.cancel().catch(()=>{})},()=>{});let f=await ee(y,s.signal);if(m=f,clearTimeout(u),qn(f.headers)>i.maxHeaderBytes)throw v(n.providerId,`response headers exceeded ${i.maxHeaderBytes} bytes`);if(f.redirected||f.status>=300&&f.status<400)throw new P("Provider redirects are disabled",{providerId:n.providerId,category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED",statusCode:f.status});let x=f.headers.get("content-length");if(x&&/^\d+$/.test(x)&&Number(x)>i.maxResponseBytes)throw v(n.providerId,`response exceeded ${i.maxResponseBytes} bytes`);if(!f.ok){let w=await gt(f,n.providerId,i,s),I=w;try{I=w?JSON.parse(w):{}}catch{}throw Le({providerId:n.providerId,statusCode:f.status,body:I,retryAfterMs:Ie(f.headers.get("retry-after")),requestId:f.headers.get("request-id")??f.headers.get("x-request-id")??void 0})}let C=await ee(r(f,s,i),s.signal);return H("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),Ee("xeno.provider.request_duration_ms",$e.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"success"}),C}catch(p){let g;throw p instanceof P?g=p:l?.aborted||s.signal.reason==="caller"?g=Ne(n.providerId,"cancelled",p):a||s.signal.reason==="idle-timeout"?g=Ne(n.providerId,"timeout",p):g=new P("Provider transport failed",{providerId:n.providerId,category:"transport",code:"PROVIDER_TRANSPORT_ERROR",retryable:!0,cause:p}),s.abort("request-failed"),m?.body&&!m.body.locked&&m.body.cancel().catch(()=>{}),H("xeno.provider.request_results",1,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category,error_code:g.code}),Ee("xeno.provider.request_duration_ms",$e.now()-o,{component:"provider_transport",provider:n.providerId,transport:"http",outcome:"error",category:g.category}),g}finally{clearTimeout(u),clearTimeout(d),l?.removeEventListener("abort",c)}}async function De(e,t,n){return yt(e,t,n,async(r,o,i)=>{let s=await gt(r,n.providerId,i,o),a;try{a=s?JSON.parse(s):{}}catch(l){throw v(n.providerId,"body is not valid JSON",l)}if(!a||typeof a!="object"||Array.isArray(a))throw v(n.providerId,"JSON body must be an object");return a})}async function te(e,t,n,r){return yt(e,t,n,async(o,i,s)=>{if(!o.body)throw v(n.providerId,"stream response has no body");let a=o.body.getReader(),l=new TextDecoder("utf-8",{fatal:!0}),c="",d=0,u="message",m=[],p,g=()=>{p&&clearTimeout(p),p=setTimeout(()=>i.abort("idle-timeout"),s.idleTimeoutMs)},y=async()=>{if(m.length===0){u="message";return}let f=m.join(`
|
|
6
6
|
`);if(Buffer.byteLength(f)>s.maxEventBytes)throw v(n.providerId,`stream event exceeded ${s.maxEventBytes} bytes`);await r({event:u,data:f}),u="message",m=[]};g();try{for(;;){let{value:f,done:x}=await ee(a.read(),i.signal);if(x)break;if(g(),d+=f.byteLength,d>s.maxResponseBytes)throw v(n.providerId,`stream exceeded ${s.maxResponseBytes} bytes`);for(c+=de(l,f,!0,n.providerId);;){let C=c.indexOf(`
|
|
7
7
|
`);if(C<0)break;let w=c.slice(0,C).replace(/\r$/,"");if(c=c.slice(C+1),!w)await y();else if(!w.startsWith(":")){let I=w.indexOf(":"),M=I<0?w:w.slice(0,I),nt=I<0?"":w.slice(I+1).replace(/^ /,"");M==="event"?u=nt:M==="data"&&m.push(nt)}}}if(c+=de(l,void 0,!1,n.providerId),c.trim())for(let f of c.split(/\r?\n/))f.startsWith("data:")?m.push(f.slice(5).replace(/^ /,"")):f.startsWith("event:")&&(u=f.slice(6).trim());await y()}finally{p&&clearTimeout(p),a.cancel().catch(()=>{}),a.releaseLock()}})}import{createHash as cr}from"node:crypto";import{isIP as ht}from"node:net";var ge=class extends Error{issues;constructor(t){super(`Invalid JSON Schema: ${t.map(n=>`${n.path||"#"} ${n.message}`).join("; ")}`),this.name="JsonSchemaCompilationError",this.issues=t}},qe="https://json-schema.org/draft/2020-12/schema",Un=new Set(["string","number","integer","boolean","array","object","null"]),Jn=new Set(["$schema","$id","$anchor","$ref","$defs","$comment","title","description","default","examples","deprecated","readOnly","writeOnly","type","enum","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","format","prefixItems","items","contains","minContains","maxContains","minItems","maxItems","uniqueItems","properties","patternProperties","additionalProperties","required","dependentRequired","minProperties","maxProperties","allOf","anyOf","oneOf","not"]),Pt=new Map([["date",e=>Tt(e)],["date-time",e=>sr(e)],["time",e=>kt(e)],["duration",e=>/^P(?!$)(?:\d+(?:[.,]\d+)?Y)?(?:\d+(?:[.,]\d+)?M)?(?:\d+(?:[.,]\d+)?W)?(?:\d+(?:[.,]\d+)?D)?(?:T(?=\d)(?:\d+(?:[.,]\d+)?H)?(?:\d+(?:[.,]\d+)?M)?(?:\d+(?:[.,]\d+)?S)?)?$/u.test(e)],["email",e=>bt(e)],["idn-email",e=>bt(e)],["hostname",e=>Je(e)],["idn-hostname",e=>Je(e)],["ipv4",e=>ht(e)===4],["ipv6",e=>ht(e)===6],["uuid",e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(e)],["uri",e=>wt(e)],["iri",e=>wt(e)],["uri-reference",e=>vt(e)],["iri-reference",e=>vt(e)],["uri-template",e=>ar(e)],["json-pointer",e=>/^(?:\/(?:[^~/]|~[01])*)*$/u.test(e)],["relative-json-pointer",e=>/^(?:0|[1-9]\d*)(?:#|(?:\/(?:[^~/]|~[01])*)*)$/u.test(e)],["regex",(e,t)=>Ve(e,t.maxPatternLength)!==void 0]]);function Xn(e={}){return{strictKeywords:e.strictKeywords??!0,assertFormats:e.assertFormats??!1,maxSchemaDepth:U(e.maxSchemaDepth,64,1,256,"maxSchemaDepth"),maxSchemaNodes:U(e.maxSchemaNodes,4096,1,1e5,"maxSchemaNodes"),maxReferences:U(e.maxReferences,512,0,1e4,"maxReferences"),maxPatternLength:U(e.maxPatternLength,256,1,4096,"maxPatternLength"),maxValidationDepth:U(e.maxValidationDepth,128,1,1024,"maxValidationDepth"),maxValidationSteps:U(e.maxValidationSteps,1e5,100,1e7,"maxValidationSteps"),maxValidationErrors:U(e.maxValidationErrors,64,1,1024,"maxValidationErrors"),maxInputBytes:U(e.maxInputBytes,16*1024*1024,1024,256*1024*1024,"maxInputBytes")}}function U(e,t,n,r,o){let i=e??t;if(!Number.isInteger(i)||i<n||i>r)throw new TypeError(`${o} must be an integer from ${n} to ${r}.`);return i}function Vn(e,t={}){let n={root:e,options:Xn(t),issues:[],rawByPointer:new Map,anchors:new Map,compiledByPointer:new Map,schemaNodes:0,references:0,nextNodeId:1};pe(e,"",0,n);let r=X(e,"",0,n);if(n.issues.length>0||!r)throw new ge(n.issues);return Object.freeze({dialect:qe,formatAssertion:n.options.assertFormats,validate(o){let i=[],s=Ue(o);if(s)return i.push({path:s.path,keyword:"type",schemaPath:"#",message:s.message}),{valid:!1,errors:i,steps:0,truncated:!1};let a=JSON.stringify(o),l=Buffer.byteLength(a??"null","utf8");if(l>n.options.maxInputBytes)return i.push({path:"",keyword:"maxInputBytes",schemaPath:"#",message:`input is ${l} bytes; limit is ${n.options.maxInputBytes}`}),{valid:!1,errors:i,steps:0,truncated:!1};let c={options:n.options,errors:i,budget:{steps:0,exhausted:!1},activePairs:new Set,objectIds:new WeakMap,nextObjectId:{value:1}};return $(o,r,"",0,c),{valid:i.length===0,errors:i,steps:c.budget.steps,truncated:c.budget.exhausted||i.length>=n.options.maxValidationErrors}}})}function xt(e,t={}){if(!E(e)||e.type!=="object"||!E(e.properties))throw new ge([{path:"#",keyword:"type",message:"tool input schema root must declare type object and a properties object"}]);return Vn(e,t)}function pe(e,t,n,r){if(n>r.options.maxSchemaDepth){h(r,t,void 0,`schema depth exceeds ${r.options.maxSchemaDepth}`);return}if(typeof e!="boolean"&&!E(e)){h(r,t,void 0,"schema must be an object or boolean");return}if(!r.rawByPointer.has(t)){if(r.schemaNodes+=1,r.schemaNodes>r.options.maxSchemaNodes){h(r,t,void 0,`schema node count exceeds ${r.options.maxSchemaNodes}`);return}if(r.rawByPointer.set(t,e),typeof e!="boolean"){e.$anchor!==void 0&&(typeof e.$anchor!="string"||!/^[A-Za-z][A-Za-z0-9._:-]*$/u.test(e.$anchor)?h(r,t,"$anchor","$anchor must be a valid plain-name anchor"):r.anchors.has(e.$anchor)?h(r,t,"$anchor",`duplicate anchor ${e.$anchor}`):r.anchors.set(e.$anchor,t));for(let o of["$defs","properties","patternProperties"]){let i=e[o];if(i!==void 0){if(!E(i)){h(r,t,o,`${o} must be an object`);continue}for(let[s,a]of Object.entries(i))pe(a,N(t,o,s),n+1,r)}}for(let o of["items","contains","additionalProperties","not"])e[o]!==void 0&&pe(e[o],N(t,o),n+1,r);for(let o of["prefixItems","allOf","anyOf","oneOf"]){let i=e[o];if(i!==void 0){if(!Array.isArray(i)){h(r,t,o,`${o} must be an array of schemas`);continue}i.forEach((s,a)=>pe(s,N(t,o,String(a)),n+1,r))}}}}}function X(e,t,n,r){let o=r.compiledByPointer.get(t);if(o)return o;if(typeof e!="boolean"&&!E(e))return;let i={id:r.nextNodeId++,schemaPath:St(t)};if(r.compiledByPointer.set(t,i),typeof e=="boolean")return i.boolean=e,i;if(Bn(e,t,r),Hn(e,t,r),e.$schema!==void 0&&(t!==""||e.$schema!==qe&&e.$schema!==`${qe}#`)&&h(r,t,"$schema",t===""?`unsupported dialect ${String(e.$schema)}`:"$schema is only supported at the root"),e.$id!==void 0&&typeof e.$id!="string"&&h(r,t,"$id","$id must be a string"),e.$ref!==void 0)if(typeof e.$ref!="string")h(r,t,"$ref","$ref must be a string");else{r.references+=1,r.references>r.options.maxReferences&&h(r,t,"$ref",`reference count exceeds ${r.options.maxReferences}`);let s=Gn(e.$ref,t,r);if(s!==void 0){let a=r.rawByPointer.get(s);a===void 0?h(r,t,"$ref",`unresolved local reference ${e.$ref}`):i.ref=X(a,s,n+1,r)}}if(i.types=zn(e.type,t,r),e.enum!==void 0){let s=e.enum;!Array.isArray(s)||s.length===0?h(r,t,"enum","enum must be a non-empty array"):s.some((a,l)=>s.some((c,d)=>d<l&&Q(a,c)))?h(r,t,"enum","enum values must be unique"):s.some(a=>Ue(a))?h(r,t,"enum","enum values must be JSON values"):i.enumValues=s}if(Object.prototype.hasOwnProperty.call(e,"const")&&(Ue(e.const)?h(r,t,"const","const must be a JSON value"):(i.hasConst=!0,i.constValue=e.const)),i.multipleOf=Wn(e.multipleOf,t,"multipleOf",r),i.maximum=ne(e.maximum,t,"maximum",r),i.exclusiveMaximum=ne(e.exclusiveMaximum,t,"exclusiveMaximum",r),i.minimum=ne(e.minimum,t,"minimum",r),i.exclusiveMinimum=ne(e.exclusiveMinimum,t,"exclusiveMinimum",r),i.maxLength=J(e.maxLength,t,"maxLength",r),i.minLength=J(e.minLength,t,"minLength",r),i.minItems=J(e.minItems,t,"minItems",r),i.maxItems=J(e.maxItems,t,"maxItems",r),i.minContains=J(e.minContains,t,"minContains",r),i.maxContains=J(e.maxContains,t,"maxContains",r),i.minProperties=J(e.minProperties,t,"minProperties",r),i.maxProperties=J(e.maxProperties,t,"maxProperties",r),Yn(i,t,r),e.pattern!==void 0)if(typeof e.pattern!="string")h(r,t,"pattern","pattern must be a string");else{let s=Ve(e.pattern,r.options.maxPatternLength);s?i.pattern={source:e.pattern,regex:s}:h(r,t,"pattern","pattern is invalid or outside the safe regex subset")}if(e.format!==void 0&&(typeof e.format!="string"?h(r,t,"format","format must be a string"):r.options.assertFormats&&!Pt.has(e.format)?h(r,t,"format",`unsupported asserted format ${e.format}`):i.format=e.format),i.prefixItems=me(e.prefixItems,t,"prefixItems",n,r,!0),i.items=ue(e.items,t,"items",n,r),i.contains=ue(e.contains,t,"contains",n,r),(e.minContains!==void 0||e.maxContains!==void 0)&&e.contains===void 0&&h(r,t,"contains","minContains/maxContains require contains"),e.uniqueItems!==void 0&&(typeof e.uniqueItems!="boolean"?h(r,t,"uniqueItems","uniqueItems must be boolean"):i.uniqueItems=e.uniqueItems),i.properties=Kn(e.properties,t,"properties",n,r),i.patternProperties=Fn(e.patternProperties,t,n,r),i.additionalProperties=ue(e.additionalProperties,t,"additionalProperties",n,r),i.required=Rt(e.required,t,"required",r,!0),i.dependentRequired=Qn(e.dependentRequired,t,r),i.allOf=me(e.allOf,t,"allOf",n,r,!1),i.anyOf=me(e.anyOf,t,"anyOf",n,r,!1),i.oneOf=me(e.oneOf,t,"oneOf",n,r,!1),i.not=ue(e.not,t,"not",n,r),E(e.$defs))for(let[s,a]of Object.entries(e.$defs))X(a,N(t,"$defs",s),n+1,r);return i}function Bn(e,t,n){if(n.options.strictKeywords)for(let r of Object.keys(e))!Jn.has(r)&&!r.startsWith("x-")&&h(n,t,r,`unsupported keyword ${r}`)}function Hn(e,t,n){for(let r of["$comment","title","description"])e[r]!==void 0&&typeof e[r]!="string"&&h(n,t,r,`${r} must be a string`);for(let r of["deprecated","readOnly","writeOnly"])e[r]!==void 0&&typeof e[r]!="boolean"&&h(n,t,r,`${r} must be boolean`);e.examples!==void 0&&!Array.isArray(e.examples)&&h(n,t,"examples","examples must be an array")}function zn(e,t,n){if(e===void 0)return;let r=Array.isArray(e)?e:[e];if(r.length===0||r.some(o=>typeof o!="string"||!Un.has(o))){h(n,t,"type","type must be a recognized type or non-empty unique type array");return}return new Set(r).size!==r.length&&h(n,t,"type","type array must not contain duplicates"),r}function ue(e,t,n,r,o){if(e!==void 0)return X(e,N(t,n),r+1,o)}function me(e,t,n,r,o,i){if(e!==void 0){if(!Array.isArray(e)||!i&&e.length===0){h(o,t,n,`${n} must be ${i?"an array":"a non-empty array"} of schemas`);return}return e.map((s,a)=>X(s,N(t,n,String(a)),r+1,o)).filter(s=>!!s)}}function Kn(e,t,n,r,o){if(e===void 0)return;if(!E(e)){h(o,t,n,`${n} must be an object of schemas`);return}let i=new Map;for(let[s,a]of Object.entries(e)){let l=X(a,N(t,n,s),r+1,o);l&&i.set(s,l)}return i}function Fn(e,t,n,r){if(e===void 0)return;if(!E(e)){h(r,t,"patternProperties","patternProperties must be an object of schemas");return}let o=[];for(let[i,s]of Object.entries(e)){let a=Ve(i,r.options.maxPatternLength);if(!a){h(r,t,"patternProperties",`pattern ${JSON.stringify(i)} is invalid or outside the safe regex subset`);continue}let l=X(s,N(t,"patternProperties",i),n+1,r);l&&o.push({pattern:{source:i,regex:a},schema:l})}return o}function Qn(e,t,n){if(e===void 0)return;if(!E(e)){h(n,t,"dependentRequired","dependentRequired must be an object");return}let r=new Map;for(let[o,i]of Object.entries(e)){let s=Rt(i,N(t,"dependentRequired",o),"dependentRequired",n,!0);s&&r.set(o,s)}return r}function Rt(e,t,n,r,o){if(e!==void 0){if(!Array.isArray(e)||e.some(i=>typeof i!="string")){h(r,t,n,`${n} must be an array of strings`);return}return o&&new Set(e).size!==e.length&&h(r,t,n,`${n} values must be unique`),e}}function Wn(e,t,n,r){let o=ne(e,t,n,r);return o!==void 0&&o<=0&&h(r,t,n,`${n} must be greater than zero`),o!==void 0&&o>0?o:void 0}function ne(e,t,n,r){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)){h(r,t,n,`${n} must be a finite number`);return}return e}}function J(e,t,n,r){if(e!==void 0){if(!Number.isSafeInteger(e)||e<0){h(r,t,n,`${n} must be a non-negative safe integer`);return}return e}}function Yn(e,t,n){for(let[r,o,i]of[[e.minLength,e.maxLength,"length"],[e.minItems,e.maxItems,"items"],[e.minContains,e.maxContains,"contains"],[e.minProperties,e.maxProperties,"properties"]])r!==void 0&&o!==void 0&&r>o&&h(n,t,i,`minimum ${i} exceeds maximum`)}function Gn(e,t,n){if(!e.startsWith("#")){h(n,t,"$ref","remote and file references are not supported");return}if(e==="#")return"";if(e.startsWith("#/")){let s=`/${e.slice(2).split("/").map(a=>a.replace(/~1/g,"/").replace(/~0/g,"~")).map(_t).join("/")}`;return n.rawByPointer.has(s)||h(n,t,"$ref",`unresolved JSON Pointer ${e}`),s}let r=e.slice(1),o=n.anchors.get(r);return o===void 0&&h(n,t,"$ref",`unresolved anchor ${e}`),o}function $(e,t,n,r,o){if(!Ct(o)||o.errors.length>=o.options.maxValidationErrors)return;if(r>o.options.maxValidationDepth){T(o,n,"maxDepth",t,`validation depth exceeds ${o.options.maxValidationDepth}`);return}if(t.boolean!==void 0){t.boolean||T(o,n,"falseSchema",t,"is rejected by the false schema");return}let i=or(t,e,o);if(!o.activePairs.has(i)){o.activePairs.add(i);try{if(t.ref&&$(e,t.ref,n,r+1,o),t.enumValues&&!t.enumValues.some(s=>Q(s,e))&&T(o,n,"enum",t,`expected one of ${t.enumValues.map(Xe).join(", ")} but got ${je(e)}`),t.hasConst&&!Q(t.constValue,e)&&T(o,n,"const",t,`expected ${Xe(t.constValue)} but got ${je(e)}`),t.types&&!t.types.some(s=>ir(e,s))){let s=t.types.length===1?t.types[0]:`one of [${t.types.join(", ")}]`;T(o,n,"type",t,`expected type ${s} but got ${je(e)}`);return}Zn(e,t,n,r,o),typeof e=="number"&&er(e,t,n,o),typeof e=="string"&&tr(e,t,n,o),Array.isArray(e)&&nr(e,t,n,r,o),E(e)&&rr(e,t,n,r,o)}finally{o.activePairs.delete(i)}}}function Zn(e,t,n,r,o){for(let i of t.allOf??[])$(e,i,n,r+1,o);if(t.anyOf&&t.anyOf.filter(s=>fe(e,s,n,r+1,o)).length===0&&T(o,n,"anyOf",t,"must match at least one anyOf branch"),t.oneOf){let i=t.oneOf.filter(s=>fe(e,s,n,r+1,o)).length;i!==1&&T(o,n,"oneOf",t,`must match exactly one oneOf branch; matched ${i}`)}t.not&&fe(e,t.not,n,r+1,o)&&T(o,n,"not",t,"must not match the disallowed schema")}function er(e,t,n,r){t.multipleOf!==void 0&&!lr(e,t.multipleOf)&&T(r,n,"multipleOf",t,`must be a multiple of ${t.multipleOf}`),t.maximum!==void 0&&e>t.maximum&&T(r,n,"maximum",t,`must be <= ${t.maximum}`),t.exclusiveMaximum!==void 0&&e>=t.exclusiveMaximum&&T(r,n,"exclusiveMaximum",t,`must be < ${t.exclusiveMaximum}`),t.minimum!==void 0&&e<t.minimum&&T(r,n,"minimum",t,`must be >= ${t.minimum}`),t.exclusiveMinimum!==void 0&&e<=t.exclusiveMinimum&&T(r,n,"exclusiveMinimum",t,`must be > ${t.exclusiveMinimum}`)}function tr(e,t,n,r){let o=[...e].length;if(t.minLength!==void 0&&o<t.minLength&&T(r,n,"minLength",t,`must contain at least ${t.minLength} Unicode code points`),t.maxLength!==void 0&&o>t.maxLength&&T(r,n,"maxLength",t,`must contain at most ${t.maxLength} Unicode code points`),t.pattern&&!t.pattern.regex.test(e)&&T(r,n,"pattern",t,`must match pattern ${JSON.stringify(t.pattern.source)}`),t.format&&r.options.assertFormats){let i=Pt.get(t.format);i&&!i(e,r.options)&&T(r,n,"format",t,`must match format ${t.format}`)}}function nr(e,t,n,r,o){if(t.minItems!==void 0&&e.length<t.minItems&&T(o,n,"minItems",t,`must contain at least ${t.minItems} items`),t.maxItems!==void 0&&e.length>t.maxItems&&T(o,n,"maxItems",t,`must contain at most ${t.maxItems} items`),t.uniqueItems)e:for(let s=0;s<e.length;s+=1)for(let a=0;a<s;a+=1){if(!Ct(o))break e;if(Q(e[s],e[a])){T(o,L(n,String(s)),"uniqueItems",t,`duplicates item ${a}`);break e}}let i=t.prefixItems?.length??0;if(t.prefixItems?.forEach((s,a)=>{a<e.length&&$(e[a],s,L(n,String(a)),r+1,o)}),t.items)for(let s=i;s<e.length;s+=1)$(e[s],t.items,L(n,String(s)),r+1,o);if(t.contains){let s=0;for(let l=0;l<e.length;l+=1)fe(e[l],t.contains,L(n,String(l)),r+1,o)&&(s+=1);let a=t.minContains??1;s<a&&T(o,n,"minContains",t,`contains matched ${s} items; minimum is ${a}`),t.maxContains!==void 0&&s>t.maxContains&&T(o,n,"maxContains",t,`contains matched ${s} items; maximum is ${t.maxContains}`)}}function rr(e,t,n,r,o){let i=Object.keys(e);t.minProperties!==void 0&&i.length<t.minProperties&&T(o,n,"minProperties",t,`must contain at least ${t.minProperties} properties`),t.maxProperties!==void 0&&i.length>t.maxProperties&&T(o,n,"maxProperties",t,`must contain at most ${t.maxProperties} properties`);for(let s of t.required??[])Object.prototype.hasOwnProperty.call(e,s)||T(o,L(n,s),"required",t,"is required");for(let[s,a]of t.dependentRequired??[])if(Object.prototype.hasOwnProperty.call(e,s))for(let l of a)Object.prototype.hasOwnProperty.call(e,l)||T(o,L(n,l),"dependentRequired",t,`is required when ${s} is present`);for(let s of i){let a=!1,l=t.properties?.get(s);l&&(a=!0,$(e[s],l,L(n,s),r+1,o));for(let c of t.patternProperties??[])c.pattern.regex.test(s)&&(a=!0,$(e[s],c.schema,L(n,s),r+1,o));!a&&t.additionalProperties&&$(e[s],t.additionalProperties,L(n,s),r+1,o)}}function fe(e,t,n,r,o){let i={...o,errors:[],activePairs:new Set(o.activePairs)};return $(e,t,n,r,i),i.errors.length===0&&!i.budget.exhausted}function Ct(e){return e.budget.steps+=1,e.budget.steps<=e.options.maxValidationSteps?!0:(e.budget.exhausted||(e.budget.exhausted=!0,T(e,"","maxValidationSteps",{schemaPath:"#"},`validation steps exceed ${e.options.maxValidationSteps}`)),!1)}function T(e,t,n,r,o){e.errors.length>=e.options.maxValidationErrors||e.errors.push({path:t,keyword:n,schemaPath:r.schemaPath,message:o})}function or(e,t,n){if(t!==null&&typeof t=="object"){let r=n.objectIds.get(t);return r===void 0&&(r=n.nextObjectId.value++,n.objectIds.set(t,r)),`${e.id}:object:${r}`}return`${e.id}:${typeof t}:${Xe(t)}`}function ir(e,t){switch(t){case"string":return typeof e=="string";case"number":return typeof e=="number"&&Number.isFinite(e);case"integer":return typeof e=="number"&&Number.isSafeInteger(e);case"boolean":return typeof e=="boolean";case"array":return Array.isArray(e);case"object":return E(e);case"null":return e===null}}function Ue(e){let t=new WeakSet,n=(r,o)=>{if(r===null||typeof r=="string"||typeof r=="boolean")return;if(typeof r=="number")return Number.isFinite(r)?void 0:{path:o,message:"must be a finite JSON number"};if(typeof r!="object")return{path:o,message:`must be a JSON value, not ${typeof r}`};if(t.has(r))return{path:o,message:"must not contain cyclic references"};t.add(r);let i=Array.isArray(r)?r.entries():Object.entries(r);for(let[s,a]of i){let l=n(a,L(o,String(s)));if(l)return l}t.delete(r)};return n(e,"")}function Ve(e,t){if(!([...e].length>t)&&!/\\(?:[1-9]|k<)/u.test(e)&&!/\(\?<(?:[=!]|[A-Za-z])/u.test(e)&&!/\((?:[^()\\]|\\.)*[+*{](?:[^()\\]|\\.)*\)[+*{?]/u.test(e))try{return new RegExp(e,"u")}catch{return}}function Tt(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/u.exec(e);if(!t)return!1;let n=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])));return n.getUTCFullYear()===Number(t[1])&&n.getUTCMonth()===Number(t[2])-1&&n.getUTCDate()===Number(t[3])}function kt(e){let t=/^(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/u.exec(e);return t?Number(t[1])<=23&&Number(t[2])<=59&&Number(t[3])<=60:!1}function sr(e){let t=/^([^Tt ]+)[Tt ](.+)$/u.exec(e);return!!(t&&Tt(t[1])&&kt(t[2]))}function bt(e){if([...e].length>254||/[\s<>(),;:\\"\[\]]/u.test(e))return!1;let t=e.lastIndexOf("@");return t>0&&t<e.length-1&&[...e.slice(0,t)].length<=64&&Je(e.slice(t+1))}function Je(e){if([...e].length>253)return!1;let t=e.endsWith(".")?e.slice(0,-1):e;return t.length>0&&t.split(".").every(n=>n.length>0&&n.length<=63&&!n.startsWith("-")&&!n.endsWith("-")&&/^[\p{L}\p{N}-]+$/u.test(n))}function wt(e){try{return!!(new URL(e).protocol&&!/\s/u.test(e))}catch{return!1}}function vt(e){try{return new URL(e,"https://xeno.invalid/"),!/\s/u.test(e)}catch{return!1}}function ar(e){let t=0;for(let n of e)if(n==="{"&&(t+=1),n==="}"&&(t-=1),t<0||t>1)return!1;return t===0&&![...e].some(n=>{let r=n.codePointAt(0);return r<=31||r===127})}function lr(e,t){let n=e/t;return Math.abs(n-Math.round(n))<=Number.EPSILON*Math.max(1,Math.abs(n))*8}function E(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Q(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t||e===null||t===null)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((n,r)=>Q(n,t[r]));if(E(e)&&E(t)){let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(o=>Object.prototype.hasOwnProperty.call(t,o)&&Q(e[o],t[o]))}return!1}function L(e,t){let n=/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(t)?t:`[${JSON.stringify(t)}]`;return e.length===0?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function N(e,...t){return`${e}/${t.map(_t).join("/")}`}function _t(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function St(e){return e.length===0?"#":`#${e}`}function h(e,t,n,r){e.issues.length>=64||e.issues.push({path:St(t),...n?{keyword:n}:{},message:r})}function je(e){return e===null?"null":Array.isArray(e)?"array":typeof e=="number"?Number.isSafeInteger(e)?"integer":"number":typeof e}function Xe(e){try{let t=JSON.stringify(e);return t===void 0?String(e):t}catch{return String(e)}}var _=class extends Error{dialect;path;constructor(t,n,r){super(`Tool schema cannot be projected to ${t} at ${n}: ${r}`),this.name="ToolSchemaProjectionError",this.dialect=t,this.path=n}},Et=new Set(["$schema","$id","$anchor","$defs","$comment","title","default","examples","deprecated","readOnly","writeOnly"]),dr=new Set(["type","description","enum","format","properties","required","items","minItems","maxItems","minLength","maxLength","minimum","maximum","anyOf"]);function It(e,t){xt(e);let n=He(e),r=n,o=At(n);if(t==="xeno")return{schema:n,dialect:t,canonicalSha256:o,projectedSha256:o,changes:[]};let i={dialect:t,root:r,pointers:new Map,anchors:new Map,changes:[],activeReferences:new Set};ye(r,"",i);let s=V(r,"#",i);if(!W(s))throw new _(t,"#","provider tool root must remain an object schema");return ur(n,s,t),{schema:s,dialect:t,canonicalSha256:o,projectedSha256:At(s),changes:i.changes}}function he(e,t){return e.map(n=>{let r=It(n.input_schema,t);return{definition:{...n,input_schema:r.schema},projection:r}})}function V(e,t,n){if(typeof e=="boolean"){if(n.dialect!=="google")return e;if(e)return{};throw new _(n.dialect,t,"false schemas are not representable by this provider")}if(typeof e.$ref=="string"){let o=mr(e.$ref,t,n);if(n.activeReferences.has(e.$ref))throw new _(n.dialect,t,`recursive reference ${e.$ref} cannot be serialized safely`);let i=Object.fromEntries(Object.entries(e).filter(([a])=>a!=="$ref"&&!Et.has(a)));if(Object.keys(i).length>0){if(n.dialect==="google")throw new _(n.dialect,t,"$ref siblings require an unsupported intersection");n.activeReferences.add(e.$ref);let a=V(o,`${t}/$ref`,n);n.activeReferences.delete(e.$ref);let l=V(i,t,n);return n.changes.push({path:t,keyword:"$ref",action:"transformed",reason:"inlined local reference with sibling intersection"}),{allOf:[a,l]}}n.activeReferences.add(e.$ref);let s=V(o,`${t}/$ref`,n);return n.activeReferences.delete(e.$ref),n.changes.push({path:t,keyword:"$ref",action:"transformed",reason:"inlined local reference"}),s}let r={};for(let[o,i]of Object.entries(e))if(o!=="$ref"){if(Et.has(o)||o.startsWith("x-")){o==="description"?r.description=i:n.changes.push({path:t,keyword:o,action:"omitted",reason:"provider wire metadata is not required for canonical validation"});continue}if(n.dialect==="google"&&!dr.has(o)){if(o==="const"){r.enum=[He(i)],n.changes.push({path:t,keyword:o,action:"transformed",reason:"Google wire schema represents const as a single-value enum"});continue}if(o==="prefixItems")throw new _(n.dialect,t,"tuple prefixItems cannot preserve the provider structural contract");n.changes.push({path:t,keyword:o,action:"omitted",reason:"constraint remains enforced by canonical local validation"});continue}if(o==="type"&&n.dialect==="google"&&Array.isArray(i)){let s=i.filter(a=>a!=="null");if(s.length!==1||i.length!==2)throw new _(n.dialect,t,"type union cannot be represented without weakening structure");r.type=s[0],r.nullable=!0,n.changes.push({path:t,keyword:o,action:"transformed",reason:"nullable two-type union mapped to Google nullable"});continue}if(o==="properties"||o==="patternProperties"||o==="$defs"){if(!W(i))throw new _(n.dialect,t,`${o} must be an object`);let s={};for(let[a,l]of Object.entries(i))s[a]=V(l,`${t}/${o}/${ze(a)}`,n);r[o]=s;continue}if(["items","contains","additionalProperties","not"].includes(o)){r[o]=V(i,`${t}/${o}`,n);continue}if(["prefixItems","allOf","anyOf","oneOf"].includes(o)){if(!Array.isArray(i))throw new _(n.dialect,t,`${o} must be an array`);r[o]=i.map((s,a)=>V(s,`${t}/${o}/${a}`,n));continue}r[o]=He(i)}if(n.dialect==="google"){let o=e.type!==void 0||e.properties!==void 0||e.items!==void 0,i=r.type!==void 0||r.properties!==void 0||r.items!==void 0;if(!o&&(e.oneOf!==void 0||e.allOf!==void 0||e.not!==void 0)||o&&!i)throw new _(n.dialect,t,"minimum structural contract cannot be represented")}return r}function ur(e,t,n){if(t.type!=="object"||!W(t.properties))throw new _(n,"#","root object/properties contract changed");let r=Object.keys(e.properties).sort(),o=Object.keys(t.properties).sort();if(JSON.stringify(r)!==JSON.stringify(o))throw new _(n,"#","root property identity changed");let i=[...e.required??[]].sort(),s=Array.isArray(t.required)?[...t.required].sort():[];if(JSON.stringify(i)!==JSON.stringify(s))throw new _(n,"#","root required-property contract changed")}function ye(e,t,n){if(n.pointers.set(t,e),typeof e!="boolean"){typeof e.$anchor=="string"&&n.anchors.set(e.$anchor,e);for(let r of["$defs","properties","patternProperties"]){let o=e[r];if(W(o))for(let[i,s]of Object.entries(o))ye(s,`${t}/${r}/${ze(i)}`,n)}for(let r of["items","contains","additionalProperties","not"]){let o=e[r];(typeof o=="boolean"||W(o))&&ye(o,`${t}/${r}`,n)}for(let r of["prefixItems","allOf","anyOf","oneOf"]){let o=e[r];Array.isArray(o)&&o.forEach((i,s)=>ye(i,`${t}/${r}/${s}`,n))}}}function mr(e,t,n){if(!e.startsWith("#"))throw new _(n.dialect,t,"remote references are forbidden");if(e==="#")return n.root;if(e.startsWith("#/")){let r=e.slice(1).split("/").map(i=>i.replace(/~1/g,"/").replace(/~0/g,"~")).map(ze).join("/"),o=n.pointers.get(r);if(o!==void 0)return o}else{let r=n.anchors.get(e.slice(1));if(r!==void 0)return r}throw new _(n.dialect,t,`unresolved reference ${e}`)}function At(e){return cr("sha256").update(Be(e)).digest("hex")}function Be(e){return Array.isArray(e)?`[${e.map(Be).join(",")}]`:W(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Be(e[t])}`).join(",")}}`:JSON.stringify(e)}function He(e){return JSON.parse(JSON.stringify(e))}function ze(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function W(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pr={anthropic:{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1},"openai-responses":{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1},google:{streaming:!1,textInput:!0,imageInput:!0,tools:!0,parallelToolCalls:!0,structuredOutput:!1,reasoningMetadata:!1,usageAccounting:!0,cancellation:!0,retryAfter:!0,promptCaching:!1}};function Mt(e){let t=e.kind==="anthropic"?"https://api.anthropic.com":e.kind==="google"?"https://generativelanguage.googleapis.com":e.kind==="openai-responses"?"https://api.openai.com":null;if(!e.baseURL&&!t)throw new P("Generic OpenAI-compatible providers require baseURL",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});let n=K(e.baseURL??t,{profile:e.endpointProfile,allowedHosts:e.allowedHosts,resolveHostname:e.resolveHostname});return n.pathname=n.pathname.replace(/\/$/,""),n}function re(e,t){let n=new URL(e.toString());return n.pathname=`${n.pathname.replace(/\/$/,"")}/${t.replace(/^\//,"")}`,n}function $t(e){let t=e.authentication??{type:"bearer"};if(t.type==="none"||!e.apiKey)return{};if(t.type==="bearer")return{authorization:`Bearer ${e.apiKey}`};let n=t.header.trim().toLowerCase(),r=new Set(["host","content-length","connection","transfer-encoding","cookie","set-cookie","proxy-authorization"]);if(!/^[a-z0-9-]{1,80}$/.test(n)||r.has(n))throw new P("Generic provider authentication header is invalid",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});let o=t.prefix??"";if(/[\r\n]/.test(o))throw new P("Generic provider authentication prefix is invalid",{category:"endpoint_policy",code:"PROVIDER_ENDPOINT_REJECTED"});return{[n]:`${o}${e.apiKey}`}}function fr(e){let t;if(e.kind==="openai-compatible"){if(!e.capabilityProfile)throw new P("Generic OpenAI-compatible providers require an explicit capabilityProfile",{category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"});t={...e.capabilityProfile};for(let n of["structuredOutput","promptCaching"])if(t[n])throw z("direct-openai-compatible",n);if(!!e.streaming!=!!t.streaming)throw new P("Generic endpoint streaming config must match capabilityProfile.streaming",{category:"unsupported_capability",code:"PROVIDER_CAPABILITY_UNSUPPORTED"})}else t={...pr[e.kind],streaming:!!e.streaming,reasoningMetadata:e.kind==="anthropic"&&!!e.streaming};return{...t,vision:t.imageInput}}function oe(e,t){return{providerId:t,endpointPolicy:{profile:e.endpointProfile,allowedHosts:e.allowedHosts,resolveHostname:e.resolveHostname},limits:e.transportLimits}}function Nt(e){let t=/^data:([^;,]+);base64,([a-z0-9+/=\r\n]+)$/i.exec(e);return t?{mediaType:t[1],data:t[2].replace(/\s/g,"")}:null}function ie(e){let t=Array.isArray(e.assistant_content)?e.assistant_content:[],n=Array.isArray(e.assistant_only_content)?e.assistant_only_content:[];return[...t,...n].filter(r=>r?.type==="image_url")}function Dt(e){return e.filter(t=>t?.type==="image_url")}function jt(e){return e.some(t=>Array.isArray(t.content)&&t.content.some(n=>n.type==="image_url"||n.type==="tool_result"&&ie(n).length>0))}function Lt(e){let t=Nt(e.image_url.url);return t?{type:"image",source:{type:"base64",media_type:t.mediaType,data:t.data}}:{type:"image",source:{type:"url",url:e.image_url.url}}}function gr(e){return e.map(t=>({role:t.role,content:typeof t.content=="string"?t.content:t.content.flatMap(n=>{if(n.type==="image_url")return[Lt(n)];if(n.type==="text")return[n];if(n.type==="tool_use")return[{type:"tool_use",id:n.id,name:n.name,input:n.input}];let r=ie(n),o=[{type:"text",text:Z(n.content)}];return o.push(...r.map(Lt)),[{type:"tool_result",tool_use_id:n.tool_use_id,content:o,is_error:n.is_error}]})}))}function yr(e){return{type:"input_image",image_url:e.image_url.url,detail:e.image_url.detail??"auto"}}function hr(e){let t=[];for(let n of e){if(typeof n.content=="string"){t.push({role:n.role,content:n.content});continue}let r=n.content.filter(i=>i.type==="text").map(i=>i.text).join(`
|
|
8
8
|
`),o=[...Dt(n.content),...n.content.flatMap(i=>i.type==="tool_result"?ie(i):[])];(r||o.length)&&t.push({role:n.role,content:[...r?[{type:"input_text",text:r}]:[],...o.map(yr)]});for(let i of n.content)i.type==="tool_use"?t.push({type:"function_call",call_id:i.id,name:i.name,arguments:JSON.stringify(i.input)}):i.type==="tool_result"&&t.push({type:"function_call_output",call_id:i.tool_use_id,output:Z(i.content)})}return t}function Ot(e){let t=Nt(e.image_url.url);return t?{inlineData:{mimeType:t.mediaType,data:t.data}}:{fileData:{fileUri:e.image_url.url}}}function br(e){let t=new Map;for(let n of e)if(Array.isArray(n.content))for(let r of n.content)r.type==="tool_use"&&t.set(r.id,r.name);return e.map(n=>typeof n.content=="string"?{role:n.role==="assistant"?"model":"user",parts:[{text:n.content}]}:{role:n.role==="assistant"?"model":"user",parts:n.content.flatMap(r=>{if(r.type==="image_url")return[Ot(r)];if(r.type==="text")return[{text:r.text}];if(r.type==="tool_use")return[{functionCall:{id:r.id,name:r.name,args:r.input},...r.provider_metadata?.thoughtSignature?{thoughtSignature:r.provider_metadata.thoughtSignature}:{}}];let o=Z(r.content);return[{functionResponse:{id:r.tool_use_id,name:t.get(r.tool_use_id)??"unknown_tool",response:r.is_error?{error:o}:{result:o}}},...ie(r).map(Ot)]})})}function qt(e,t){let n=t?[{role:"system",content:t}]:[];for(let r of e){if(typeof r.content=="string"){n.push({role:r.role,content:r.content});continue}let o=r.content.filter(a=>a.type==="text").map(a=>a.text).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13405,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13405,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":50971,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8269,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1172,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":7837,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":13526,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.cjs":{"imports":[{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:perf_hooks","kind":"require-call","external":true},{"path":"node:dns/promises","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:http","kind":"require-call","external":true},{"path":"node:https","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:events","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:net","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:fs","kind":"require-call","external":true},{"path":"node:os","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/providers/index.ts","inputs":{"src/providers/index.ts":{"bytesInOutput":976},"src/config/models.ts":{"bytesInOutput":50},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5733},"src/providers/direct-provider.ts":{"bytesInOutput":23649},"src/utils/tool-result-content.ts":{"bytesInOutput":436},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6193},"src/observability/telemetry.ts":{"bytesInOutput":1599},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3343},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3247},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5711},"src/utils/json-schema.ts":{"bytesInOutput":19783},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11924},"src/providers/file-connection-store.ts":{"bytesInOutput":3788},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1067},"src/providers/quota.ts":{"bytesInOutput":2849},"src/utils/acknowledgement.ts":{"bytesInOutput":466},"src/providers/quota-store.ts":{"bytesInOutput":7152}},"bytes":102730}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13405,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":7962,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":50971,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8269,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1172,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":7837,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":13526,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"exports":["BUILT_IN_XENO_PROVIDER_PRESETS","DualLLMProvider","FileQuotaAuthority","FileXenoProviderConnectionStore","ProviderError","QuotaAcknowledgementError","QuotaError","ToolSchemaProjectionError","XENO_PROVIDER_CATALOG_SCHEMA_VERSION","XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION","XenoProviderCatalog","assertDirectEndpointResolution","classifyProviderHttpError","createDirectProvider","createOllamaNativeProvider","createQuotaGovernedProvider","directProviderConfigFromConnection","isQuotaControlError","normalizeQuotaScope","parseRetryAfter","probeXenoProvider","projectToolDefinitionsForProvider","projectToolSchemaForProvider","providerCapabilityError","providerProtocolError","quotaAncestors","quotaInteger","quotaScopeKey","quotaText","selectXenoProviderRoute","validateDirectEndpoint"],"entryPoint":"src/providers/index.ts","inputs":{"src/config/models.ts":{"bytesInOutput":50},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5733},"src/providers/index.ts":{"bytesInOutput":0},"src/providers/direct-provider.ts":{"bytesInOutput":23612},"src/utils/tool-result-content.ts":{"bytesInOutput":435},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6170},"src/observability/telemetry.ts":{"bytesInOutput":1599},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3316},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3218},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5702},"src/utils/json-schema.ts":{"bytesInOutput":19775},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11917},"src/providers/file-connection-store.ts":{"bytesInOutput":3787},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1054},"src/providers/quota.ts":{"bytesInOutput":2831},"src/utils/acknowledgement.ts":{"bytesInOutput":466},"src/providers/quota-store.ts":{"bytesInOutput":7130}},"bytes":101282}}}
|
|
1
|
+
{"inputs":{"src/config/models.ts":{"bytes":16323,"imports":[],"format":"esm"},"src/core/llm-provider.ts":{"bytes":13405,"imports":[],"format":"esm"},"src/providers/DualLLMProvider.ts":{"bytes":19125,"imports":[{"path":"src/config/models.ts","kind":"import-statement","original":"../config/models.js"},{"path":"src/core/llm-provider.ts","kind":"import-statement","original":"../core/llm-provider.js"}],"format":"esm"},"src/utils/tool-result-content.ts":{"bytes":4820,"imports":[],"format":"esm"},"src/observability/telemetry.ts":{"bytes":7271,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true}],"format":"esm"},"src/observability/index.ts":{"bytes":32,"imports":[{"path":"src/observability/telemetry.ts","kind":"import-statement","original":"./telemetry.js"}],"format":"esm"},"src/utils/context-overflow-phrases.ts":{"bytes":2266,"imports":[],"format":"esm"},"src/providers/provider-errors.ts":{"bytes":8749,"imports":[{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/utils/context-overflow-phrases.ts","kind":"import-statement","original":"../utils/context-overflow-phrases.js"}],"format":"esm"},"src/providers/endpoint-policy.ts":{"bytes":6439,"imports":[{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/providers/pinned-provider-dispatcher.ts":{"bytes":3986,"imports":[{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"}],"format":"esm"},"src/providers/bounded-provider-transport.ts":{"bytes":13579,"imports":[{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"src/observability/index.ts","kind":"import-statement","original":"../observability/index.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/pinned-provider-dispatcher.ts","kind":"import-statement","original":"./pinned-provider-dispatcher.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"}],"format":"esm"},"src/utils/json-schema.ts":{"bytes":43478,"imports":[{"path":"node:net","kind":"import-statement","external":true}],"format":"esm"},"src/providers/tool-schema-projection.ts":{"bytes":12249,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/json-schema.ts","kind":"import-statement","original":"../utils/json-schema.js"}],"format":"esm"},"src/providers/direct-provider.ts":{"bytes":50971,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/tool-result-content.ts","kind":"import-statement","original":"../utils/tool-result-content.js"},{"path":"src/providers/bounded-provider-transport.ts","kind":"import-statement","original":"./bounded-provider-transport.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"}],"format":"esm"},"src/utils/text-security.ts":{"bytes":809,"imports":[],"format":"esm"},"src/providers/catalog.ts":{"bytes":24437,"imports":[{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/utils/text-security.ts","kind":"import-statement","original":"../utils/text-security.js"}],"format":"esm"},"src/artifacts/hash.ts":{"bytes":1489,"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"format":"esm"},"src/control-plane/lock.ts":{"bytes":2496,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/providers/file-connection-store.ts":{"bytes":8269,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/control-plane/lock.ts","kind":"import-statement","original":"../control-plane/lock.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"}],"format":"esm"},"src/utils/acknowledgement.ts":{"bytes":1172,"imports":[],"format":"esm"},"src/providers/quota.ts":{"bytes":7837,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/utils/acknowledgement.ts","kind":"import-statement","original":"../utils/acknowledgement.js"}],"format":"esm"},"src/providers/quota-store.ts":{"bytes":13526,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/artifacts/hash.ts","kind":"import-statement","original":"../artifacts/hash.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"}],"format":"esm"},"src/providers/index.ts":{"bytes":1627,"imports":[{"path":"src/providers/DualLLMProvider.ts","kind":"import-statement","original":"./DualLLMProvider.js"},{"path":"src/providers/direct-provider.ts","kind":"import-statement","original":"./direct-provider.js"},{"path":"src/providers/provider-errors.ts","kind":"import-statement","original":"./provider-errors.js"},{"path":"src/providers/endpoint-policy.ts","kind":"import-statement","original":"./endpoint-policy.js"},{"path":"src/providers/tool-schema-projection.ts","kind":"import-statement","original":"./tool-schema-projection.js"},{"path":"src/providers/catalog.ts","kind":"import-statement","original":"./catalog.js"},{"path":"src/providers/file-connection-store.ts","kind":"import-statement","original":"./file-connection-store.js"},{"path":"src/providers/quota.ts","kind":"import-statement","original":"./quota.js"},{"path":"src/providers/quota-store.ts","kind":"import-statement","original":"./quota-store.js"}],"format":"esm"}},"outputs":{"dist/providers/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:perf_hooks","kind":"import-statement","external":true},{"path":"node:dns/promises","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:http","kind":"import-statement","external":true},{"path":"node:https","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:events","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:net","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"exports":["BUILT_IN_XENO_PROVIDER_PRESETS","DualLLMProvider","FileQuotaAuthority","FileXenoProviderConnectionStore","ProviderError","QuotaAcknowledgementError","QuotaError","ToolSchemaProjectionError","XENO_PROVIDER_CATALOG_SCHEMA_VERSION","XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION","XenoProviderCatalog","assertDirectEndpointResolution","classifyProviderHttpError","createDirectProvider","createOllamaNativeProvider","createQuotaGovernedProvider","directProviderConfigFromConnection","isQuotaControlError","normalizeQuotaScope","parseRetryAfter","probeXenoProvider","projectToolDefinitionsForProvider","projectToolSchemaForProvider","providerCapabilityError","providerProtocolError","quotaAncestors","quotaInteger","quotaScopeKey","quotaText","selectXenoProviderRoute","validateDirectEndpoint"],"entryPoint":"src/providers/index.ts","inputs":{"src/config/models.ts":{"bytesInOutput":50},"src/core/llm-provider.ts":{"bytesInOutput":1142},"src/providers/DualLLMProvider.ts":{"bytesInOutput":5733},"src/providers/index.ts":{"bytesInOutput":0},"src/providers/direct-provider.ts":{"bytesInOutput":23612},"src/utils/tool-result-content.ts":{"bytesInOutput":435},"src/providers/bounded-provider-transport.ts":{"bytesInOutput":6170},"src/observability/telemetry.ts":{"bytesInOutput":1599},"src/observability/index.ts":{"bytesInOutput":0},"src/providers/endpoint-policy.ts":{"bytesInOutput":3316},"src/utils/context-overflow-phrases.ts":{"bytesInOutput":169},"src/providers/provider-errors.ts":{"bytesInOutput":3247},"src/providers/pinned-provider-dispatcher.ts":{"bytesInOutput":1519},"src/providers/tool-schema-projection.ts":{"bytesInOutput":5702},"src/utils/json-schema.ts":{"bytesInOutput":19775},"src/utils/text-security.ts":{"bytesInOutput":180},"src/providers/catalog.ts":{"bytesInOutput":11917},"src/providers/file-connection-store.ts":{"bytesInOutput":3787},"src/artifacts/hash.ts":{"bytesInOutput":564},"src/control-plane/lock.ts":{"bytesInOutput":1054},"src/providers/quota.ts":{"bytesInOutput":2831},"src/utils/acknowledgement.ts":{"bytesInOutput":466},"src/providers/quota-store.ts":{"bytesInOutput":7130}},"bytes":101311}}}
|