@zibby/core 2.0.14 → 2.0.16

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/constants.js CHANGED
@@ -1 +1 @@
1
- var o=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5"},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function a(n){let l={};for(let e of o)e.vendor===n&&(l[e.alias]=e.canonicalId);return l}var d={ASSISTANT:"gpt-5.4-nano-2026-03-17",CLAUDE:"claude-sonnet-4-6",CURSOR:"auto",CODEX:"o4-mini",GEMINI:"gemini-3-pro",OPENAI_POSTPROCESSING:"gpt-4o-mini"},s={ASSISTANT:"assistant",CLAUDE:"claude",CURSOR:"cursor",CODEX:"codex",GEMINI:"gemini"},u={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error",SILENT:"silent"},t=a("claude"),r=a("codex"),p=a("gemini"),f={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};export{s as AGENT_TYPES,t as CLAUDE_MODEL_MAP,r as CODEX_MODEL_MAP,d as DEFAULT_MODELS,p as GEMINI_MODEL_MAP,u as LOG_LEVELS,f as TIMEOUTS};
1
+ var i=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.4-mini",canonicalId:"gpt-5.4-mini",vendor:"codex",label:"Codex \xB7 GPT-5.4 mini",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function a(n){let l={};for(let e of i)e.vendor===n&&(l[e.alias]=e.canonicalId);return l}var d={ASSISTANT:"gpt-5.4-nano-2026-03-17",CLAUDE:"claude-sonnet-4-6",CURSOR:"auto",CODEX:"o4-mini",GEMINI:"gemini-3-pro",OPENAI_POSTPROCESSING:"gpt-4o-mini"},s={ASSISTANT:"assistant",CLAUDE:"claude",CURSOR:"cursor",CODEX:"codex",GEMINI:"gemini"},u={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error",SILENT:"silent"},t=a("claude"),r=a("codex"),p=a("gemini"),f={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};export{s as AGENT_TYPES,t as CLAUDE_MODEL_MAP,r as CODEX_MODEL_MAP,d as DEFAULT_MODELS,p as GEMINI_MODEL_MAP,u as LOG_LEVELS,f as TIMEOUTS};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var _o=Object.defineProperty;var xo=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Cr=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(r){throw t=[r],r}};var kr=(n,e)=>{for(var t in e)_o(n,t,{get:e[t],enumerable:!0})};var Rr={};kr(Rr,{zodToJson:()=>ge});import{z as Nr}from"zod";import{zodToJsonSchema as Ao}from"zod-to-json-schema";function $o(n){if(!n||typeof n!="object")return n;if(Array.isArray(n.type))return n.type.includes("null")||(n.type=[...n.type,"null"]),n;if(typeof n.type=="string")return n.type=[n.type,"null"],n;for(let e of["anyOf","oneOf"])if(Array.isArray(n[e]))return n[e].some(t=>t&&t.type==="null")||(n[e]=[...n[e],{type:"null"}]),n;return{anyOf:[n,{type:"null"}]}}function Ie(n){if(!n||typeof n!="object")return n;for(let e of["$defs","definitions"])if(n[e]&&typeof n[e]=="object")for(let t of Object.keys(n[e]))n[e][t]=Ie(n[e][t]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(n[e])&&(n[e]=n[e].map(Ie));if(n.properties&&typeof n.properties=="object"){n.additionalProperties=!1;let e=Object.keys(n.properties),t=new Set(Array.isArray(n.required)?n.required:[]);for(let r of e){let o=Ie(n.properties[r]);t.has(r)||(o=$o(o)),n.properties[r]=o}n.required=e}return n.items&&(Array.isArray(n.items)?n.items=n.items.map(Ie):n.items=Ie(n.items)),n}function ge(n,e={target:"openApi3"}){if(!n)return null;let t=e?.target==="openAi",r=null;if(typeof Nr?.toJSONSchema=="function")try{r=Nr.toJSONSchema(n)}catch{}if(!r)try{r=Ao(n,e)}catch{return null}if(t&&r)try{return Ie(r)}catch{return r}return r}var Ze=Cr(()=>{});var kn={};kr(kn,{INTEGRATION_API_TIMEOUT_MS:()=>$n,clearConnectedCache:()=>Ii,clearTokenCache:()=>Cn,getConnectedIntegrations:()=>Oi,resolveIntegrationToken:()=>Mt});import{existsSync as Ei,readFileSync as vi}from"node:fs";import{homedir as Ti}from"node:os";import{join as Ai}from"node:path";function vn(){let n=process.env.ZIBBY_SELF_HOST;return n!=null&&n!==""&&n!=="0"&&n.toLowerCase()!=="false"}function Tn(){if(process.env.PROJECT_API_TOKEN)return process.env.PROJECT_API_TOKEN;if(process.env.ZIBBY_USER_TOKEN)return process.env.ZIBBY_USER_TOKEN;try{let n=Ai(Ti(),".zibby","config.json");return Ei(n)&&JSON.parse(vi(n,"utf-8")).sessionToken||null}catch{return null}}function An(){return process.env.ZIBBY_ACCOUNT_API_URL?process.env.ZIBBY_ACCOUNT_API_URL.replace(/\/$/,""):(process.env.ZIBBY_ENV||"prod")==="local"?"http://localhost:3001":process.env.ZIBBY_PROD_ACCOUNT_API_URL||"https://api-prod.zibby.app"}function $i(n=process.env){let e=Number(n.INTEGRATION_API_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.min(12e4,Math.max(1e3,Math.floor(e))):$n}function On(){let n=$i();return{signal:AbortSignal.timeout(n),label:`after ${n}ms (INTEGRATION_API_TIMEOUT_MS)`}}function In(n){return n?.name==="TimeoutError"||n?.name==="AbortError"}function xn(n,e,t){if(!In(n))return n;let r=new Error(`${t} TIMED OUT ${e.label}`);return r.timedOut=!0,r.cause=n,r}async function Mt(n){if(vn()){let c=En[n];if(c&&process.env[c])return{token:process.env[c]}}let e=Date.now(),t=Lt.get(n);if(t&&t.expiresAt>e)return t.data;let r=Tn();if(!r)throw new Error("Missing session credential: neither PROJECT_API_TOKEN nor ZIBBY_USER_TOKEN is set in this process env (and no ~/.zibby/config.json session). If this is an MCP skill child, the spawning skill must forward them \u2014 check the skill's envKeys / resolve() env (see @zibby/skills backend-session-env-contract). Interactive CLI: run `zibby login`.");let o=`${An()}/integrations/token/${n}`,s=On(),i;try{i=await fetch(o,{method:"GET",headers:{Authorization:`Bearer ${r}`},signal:s.signal})}catch(c){throw xn(c,s,`${n} token lookup`)}if(!i.ok){let c=await i.text().catch(()=>"");if(i.status===404){let u="";try{u=String(JSON.parse(c)?.error||"").trim()}catch{}throw new Error(u||`${n} is not connected. Connect it at https://studio.zibby.dev/integrations`)}throw i.status===401||i.status===403?new Error("Session expired. Run `zibby login` to re-authenticate."):new Error(`Failed to resolve ${n} token (${i.status}): ${c}`)}let l;try{l=await i.json()}catch(c){throw xn(c,s,`${n} token body read`)}if(!l||typeof l!="object")throw new Error(`Invalid response from ${n} token endpoint: expected object, got ${typeof l}`);if(n==="jira"){if(!l.token||typeof l.token!="string")throw new Error(`Invalid jira token response: token is ${typeof l.token}, expected string`);if(!l.cloudId&&!l.instanceUrl&&!l.baseUrl)throw new Error("Invalid jira token response: carries neither cloudId (OAuth connection) nor instanceUrl (API-token connection) \u2014 reconnect Jira.")}else if(n==="github"&&(!l.token||typeof l.token!="string"))throw new Error(`Invalid github token response: token is ${typeof l.token}, expected string`);let a=((l.expiresInSec||3e3)-120)*1e3;return Lt.set(n,{data:l,expiresAt:e+a}),l}function Cn(n){n?Lt.delete(n):Lt.clear()}function wn(n){let e=process.env.WORKFLOW_ENABLED_INTEGRATIONS;if(typeof e!="string"||e.trim()==="")return n;let t=new Set(e.split(",").map(o=>o.trim()).filter(Boolean));if(t.size===0)return n;let r={};for(let[o,s]of Object.entries(n))t.has(o)&&(r[o]=s);return r}async function Oi(){let n=Date.now();if(je&&je.expiresAt>n)return je.data;if(vn()){let r={};for(let[s,i]of Object.entries(En))r[s]=!!process.env[i];let o=wn(r);return je={data:o,expiresAt:n+6e4},o}let e=Tn();if(!e)return{};let t=On();try{let r=await fetch(`${An()}/integrations/status`,{method:"GET",headers:{Authorization:`Bearer ${e}`},signal:t.signal});if(!r.ok)return{};let o=await r.json(),s={};if(o&&typeof o=="object")for(let[l,a]of Object.entries(o))a&&typeof a=="object"&&"connected"in a&&(s[l]=!!a.connected);let i=wn(s);return je={data:i,expiresAt:n+6e4},i}catch(r){return In(r)&&console.warn(`[backend-client] /integrations/status TIMED OUT ${t.label} \u2014 proceeding with no connection map`),{}}}function Ii(){je=null}var Lt,En,$n,je,Ut=Cr(()=>{Lt=new Map,En={github:"GITHUB_TOKEN",gitlab:"GITLAB_TOKEN",sentry:"SENTRY_AUTH_TOKEN",slack:"SLACK_BOT_TOKEN"};$n=2e4;je=null});import{readFileSync as mo,existsSync as go}from"node:fs";import{join as We,resolve as ho,isAbsolute as Ga}from"node:path";import{DEFAULT_OUTPUT_BASE as Ka,SESSIONS_DIR as yo,RESULT_FILE as za,resolveWorkflowSession as Ja,clearInheritedSessionEnvForFreshRun as Ha,readPinnedSessionPathFromEnv as Ya}from"@zibby/agent-workflow";import{registerStrategy as Nt}from"@zibby/agent-workflow";import{AgentStrategy as Ro,getSkill as Dr,NO_INTEGRATION_TOGGLEABLE_SKILL_IDS as Lo,formatProviderError as Mo}from"@zibby/agent-workflow";import{query as Uo}from"@anthropic-ai/claude-agent-sdk";import wo from"node:process";var Pr=Object.freeze(["PROJECT_API_TOKEN","ZIBBY_USER_TOKEN","GITHUB_TOKEN","GITLAB_TOKEN","GITLAB_OAUTH_TOKEN","GITLAB_INSTANCES","ATLASSIAN_ACCESS_TOKEN","JIRA_API_TOKEN","JIRA_EMAIL","SENTRY_AUTH_TOKEN","SLACK_BOT_TOKEN","DISCORD_BOT_TOKEN","ZIBBY_CHAT_SLACK_TOKEN","ZIBBY_CHAT_LARK_APP_SECRET","ZIBBY_CHAT_DISCORD_INTERACTION_TOKEN","LINEAR_API_KEY","LINEAR_OAUTH_TOKEN","PLANE_API_KEY","PLANE_OAUTH_TOKEN","ZIBBY_INJECTED_GOOGLE_TOKEN","ZIBBY_INJECTED_LINKEDIN_TOKEN","ZIBBY_MEMORY_AWS_ACCESS_KEY_ID","ZIBBY_MEMORY_AWS_SECRET_ACCESS_KEY","ZIBBY_MEMORY_AWS_SESSION_TOKEN"]);function Oe(n=wo.env){let e={},t=new Set(Pr);for(let[r,o]of Object.entries(n))t.has(r)||o!==void 0&&(e[r]=o);return e}function mt(n){return!!n&&(n.transport==="http"||typeof n.url=="string"&&!n.command)}var Kt=Object.freeze({claude:"native",codex:"broker",gemini:"broker",cursor:"eager"});function zt(n){return Kt[n]||"eager"}var Eo=new Set(Object.entries(Kt).filter(([,n])=>n==="native").map(([n])=>n)),Jt=Symbol("zibby.mcp.alwaysLoad");function vo(){let n=String(process.env.MCP_ALWAYS_LOAD??"").trim().toLowerCase();return!(n==="0"||n==="false"||n==="off")}function To(n,e){return Eo.has(n)?vo()?typeof e.alwaysLoad=="boolean"?{alwaysLoad:e.alwaysLoad}:{}:{}:{}}function oe(n,e,{processEnv:t}={}){if(!e)return null;let r=To(n,e),o=i=>(e.alwaysLoad===!0&&Object.defineProperty(i,Jt,{value:!0,enumerable:!1}),i);if(mt(e)){let i=String(e.url||"").trim();if(!i)return null;let l=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(n){case"claude":return o({type:"http",url:i,...l&&{headers:l},...r});case"codex":return o({url:i,...l&&{http_headers:l}});case"gemini":return o({url:i,type:"http",...l&&{headers:l}});case"cursor":return o({url:i,...l&&{headers:l}});default:return o({type:"http",url:i,...l&&{headers:l},...r})}}let s={command:e.command};return e.args?.length&&(s.args=e.args),e.cwd&&(s.cwd=e.cwd),t?s.env={...t,...e.env||{}}:e.env&&Object.keys(e.env).length&&(s.env=e.env),o({...s,...r})}function gt(n){return mt(n)?`http \u2192 ${String(n.url||"").replace(/\?.*$/,"")}`:`${n?.command||"?"} ${(n?.args||[]).join(" ")}`.trim()}Ze();import{writeFileSync as Wt,mkdirSync as Zt,existsSync as ke,readFileSync as Fr}from"fs";import{homedir as Br}from"os";import{join as ne}from"path";import Ve from"chalk";var se={debug:0,info:1,warn:2,error:3,silent:4},ht=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return se.debug;if(process.env.ZIBBY_VERBOSE==="true")return se.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in se?se[e]:se.info}_shouldLog(e){return se[e]>=this._level}_formatMessage(e,t,r={}){let o=new Date().toISOString(),i=`${this._getPrefix(e)} ${t}`;return Object.keys(r).length>0&&(i+=Ve.dim(` ${JSON.stringify(r)}`)),i}_getPrefix(e){return{debug:Ve.gray("[DEBUG]"),info:Ve.cyan("[INFO]"),warn:Ve.yellow("[WARN]"),error:Ve.red("\u274C [ERROR]")}[e]||""}debug(e,t){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,t))}info(e,t){this._shouldLog("info")&&console.log(this._formatMessage("info",e,t))}warn(e,t){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,t))}error(e,t){this._shouldLog("error")&&console.error(this._formatMessage("error",e,t))}setLevel(e){e in se&&(this._level=se[e])}getLevel(){return Object.keys(se).find(e=>se[e]===this._level)}},f=new ht;import{timeline as ae,Timeline as ll,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as cl}from"@zibby/agent-workflow";var he=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5"},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function qe(n){let e={};for(let t of he)t.vendor===n&&(e[t.alias]=t.canonicalId);return e}function Oo(){let n={};for(let e of he)e.unavailable&&(n[e.alias]=e.unavailable,n[`${e.vendor}:${e.alias}`]=e.unavailable,n[e.retiredCanonicalId||e.canonicalId]=e.unavailable);return n}function Ur(){let n={};for(let e of he)!e.retiredCanonicalId||e.retiredCanonicalId===e.canonicalId||(n[e.alias]={alias:e.alias,vendor:e.vendor,requested:e.retiredCanonicalId,actual:e.canonicalId,evidence:e.unavailable||"retired by the vendor"});return n}function Ht(n,e){let t=Ur()[e];return!t||t.vendor!==n?null:`MODEL REPOINTED: this run pinned "${t.alias}" (${t.requested}), but that model is RETIRED at the vendor (${t.evidence}) \u2014 running on "${t.actual}" instead. Output did NOT come from ${t.requested}. Redeploy the agent with a current model to make the pin match reality.`}function Io(n){if(!n||typeof n!="string")return null;let e=n.toLowerCase();for(let t of he)if(t.alias.toLowerCase()===e)return t.family??null;for(let t of he)if(t.canonicalId.toLowerCase()===e)return t.family??null;return null}function Lr(n){let e=String(n||"").match(/(\d+(?:\.\d+)?)/);return e?parseFloat(e[1]):0}function Mr(n){let e=String(n||"").toLowerCase();return/\b(base|mini)\b/.test(e)?0:/\b(opus|pro)\b/.test(e)?2:1}function Co(n,e){let t=Lr(e.label)-Lr(n.label);if(t!==0)return t;let r=Mr(e.label)-Mr(n.label);return r!==0?r:n.label.localeCompare(e.label)}function ko(){let n=[],e=new Map;for(let r of he)r.pickerVisible&&(r.unavailable||(e.has(r.vendor)||(e.set(r.vendor,[]),n.push(r.vendor)),e.get(r.vendor).push({value:`${r.vendor}:${r.alias}`,label:r.label||`${r.vendor}:${r.alias}`,vendor:r.vendor,alias:r.alias})));let t=[];for(let r of n)t.push(...e.get(r).sort(Co));return t}function Ce(n,e){let t=typeof e=="string"?e.trim():"";if(t)return t;throw new Error(`[${n}] No model reached this LLM call: the node passed none, no config sets one, and the run carries none (MODEL env unset). Refusing to silently substitute a vendor default \u2014 pick a model on the agent (deploy modal / MODEL cell) or pass options.model explicitly.`)}var pe={ASSISTANT:"gpt-5.4-nano-2026-03-17",CLAUDE:"claude-sonnet-4-6",CURSOR:"auto",CODEX:"o4-mini",GEMINI:"gemini-3-pro",OPENAI_POSTPROCESSING:"gpt-4o-mini"},Po={ASSISTANT:"assistant",CLAUDE:"claude",CURSOR:"cursor",CODEX:"codex",GEMINI:"gemini"},No={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error",SILENT:"silent"},yt=qe("claude"),bt=qe("codex"),Yt=qe("gemini"),St={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function Q(n){let e=`${n}_POOL`,t=process.env[e];if(!t||typeof t!="string")return{picked:null,count:0,dispose:()=>{}};let r=t.split(/[,\n]+/).map(i=>i.trim()).filter(Boolean);if(r.length===0)return{picked:null,count:0,dispose:()=>{}};let o=r[Math.floor(Math.random()*r.length)],s=process.env[n];return process.env[n]=o,f.debug(`[auth-pool] ${n}: picked 1 of ${r.length} from pool (***${o.slice(-4)})`),{picked:o,count:r.length,dispose(){s===void 0?delete process.env[n]:process.env[n]=s}}}function _t(n){if(!n||typeof n!="object")return null;let e=(...o)=>{for(let s of o){if(s==null||s==="")continue;let i=Number(s);if(Number.isFinite(i))return i}return null},t=e(n.input_tokens,n.inputTokens,n.prompt_tokens,n.promptTokens),r=e(n.output_tokens,n.outputTokens,n.completion_tokens,n.completionTokens);return t==null&&r==null?null:{input:t||0,output:r||0}}import{createRequire as Do}from"module";import W from"process";var jr=Do(import.meta.url);function jo(n){let e=2166136261;for(let t=0;t<n.length;t++)e^=n.charCodeAt(t),e=Math.imul(e,16777619)>>>0;return e.toString(16).padStart(8,"0")}function Gr(n){if(!n||typeof n!="object")return null;let e=n.message?.content??n.content;return Array.isArray(e)&&e.length||typeof e=="string"&&e.length?e:typeof n.text=="string"&&n.text.length?n.text:null}function Fo(n){let e=Gr(n);if(e===null)return null;let t;try{t=JSON.stringify(e)}catch{return null}return typeof t!="string"||!t?null:`${`${n.type||n.constructor?.name||"?"}`}:${t.length}:${jo(t)}`}function Kr(n){if(!n||typeof n!="object")return"a message with no type";let e=n.type||n.constructor?.name||"unknown-type",t=n.subtype?`/${n.subtype}`:"",r=Gr(n);if(typeof r=="string")return`${e}${t} text "${r.slice(0,80)}"`;if(!Array.isArray(r))return`${e}${t} (no readable content)`;let o=r.slice(0,4).map(s=>!s||typeof s!="object"?String(s).slice(0,30):s.type==="tool_use"?`tool_use ${s.name||"(unnamed)"}`:s.type==="tool_result"?`tool_result${s.is_error?" (error)":""}`:s.type==="text"&&typeof s.text=="string"?`text "${s.text.slice(0,60)}"`:s.type==="thinking"?"thinking":String(s.type||"block").slice(0,30));return r.length>o.length&&o.push(`+${r.length-o.length} more`),`${e}${t} [${o.join(", ")}]`}function Bo(n){if(!n||typeof n!="object")return"";let e=n.message?.content??n.content;if(Array.isArray(e)){let t=e.filter(r=>r&&r.type==="text"&&typeof r.text=="string"&&r.text.trim()).map(r=>r.text.trim());if(t.length)return Xe(t.join(" "))}else if(typeof e=="string"&&e.trim())return Xe(e);return n.error&&typeof n.error=="object"&&typeof n.error.message=="string"?Xe(n.error.message):typeof n.message=="string"&&n.message.trim()?Xe(n.message):typeof n.result=="string"&&n.result.trim()?Xe(n.result):Kr(n)}function Xe(n){let e=String(n).replace(/\s+/g," ").trim();return e.length>400?`${e.slice(0,400)}\u2026`:e}function Vt(n){let e=String(n??"").trim().slice(0,400);return!e||e.startsWith("```")||e.startsWith("{")||e.startsWith("[")?!0:/"reply"\s*:/.test(e)}var wt=(n,e)=>{let t=String(n??"");return t.length>e?`${t.slice(0,e)}\u2026`:t},Go=/secret|token|password|passwd|credential|authorization|bearer|api[-_]?key|private[-_]?key|access[-_]?key/i,zr=(n,e=0)=>{if(n==null||e>6||typeof n!="object")return n;let t=Array.isArray(n)?[]:{};for(let[r,o]of Object.entries(n)){let s=Go.test(r)||r==="value"&&typeof n.key=="string";t[r]=s&&typeof o=="string"&&o?"[redacted]":zr(o,e+1)}return t},be=n=>{try{if(n==null)return"";let e=zr(n),t=typeof e=="string"?e:JSON.stringify(e);return wt(String(t).slice(0,4e3).replace(/(bearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi,"$1[redacted]").replace(/(https?:\/\/[^/\s:@"']+):[^@/\s"']+@/gi,"$1:[redacted]@").replace(/([?&](?:token|api[-_]?key|apikey|secret|access[-_]?token|auth|key)=)[^&"'\s]+/gi,"$1[redacted]").replace(/sk-[A-Za-z0-9_-]{8,}/g,"sk-[redacted]").replace(/xox[bpoas]-[A-Za-z0-9-]{6,}/g,"xoxb-[redacted]").replace(/zby_[A-Za-z0-9_-]{12,}/g,"zby_[redacted]").replace(/gh[pousr]_[A-Za-z0-9]{20,}/g,"gh_[redacted]").replace(/glpat-[A-Za-z0-9_-]{16,}/g,"glpat-[redacted]").replace(/\bmcp_(?!_)[A-Za-z0-9-]{12,}/g,"mcp_[redacted]").replace(/ntn_[A-Za-z0-9]{10,}/g,"ntn_[redacted]").replace(/figd_[A-Za-z0-9_-]{10,}/g,"figd_[redacted]").replace(/sntrys_[A-Za-z0-9+/=._-]{10,}/g,"sntrys_[redacted]").replace(/ya29\.[A-Za-z0-9_-]{10,}/g,"ya29.[redacted]").replace(/AKIA[0-9A-Z]{16}/g,"AKIA[redacted]").replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*/g,"[redacted-private-key]").replace(/eyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}/g,"eyJ[redacted-jwt]"),300)}catch{return""}},Ko=500;function qt(n){let e=n&&typeof n=="object"?n.content:void 0,t=new Set,r=0;if(typeof e=="string")r=e.length,e&&t.add("text");else if(Array.isArray(e))for(let a of e){if(typeof a=="string"){t.add("text"),r+=a.length;continue}!a||typeof a!="object"||(t.add(typeof a.type=="string"&&a.type?a.type:"unknown"),typeof a.text=="string"&&(r+=a.text.length))}else if(e!=null){t.add("json");try{r=JSON.stringify(e).length}catch{r=0}}let o=!(n&&n.is_error===!0),s={ok:o,chars:r};if(t.size&&(s.kind=[...t].join("+")),o)return s;let i=e;Array.isArray(e)&&(i=e.map(a=>typeof a=="string"?a:a&&typeof a.text=="string"?a.text:"").filter(Boolean).join(`
1
+ var _o=Object.defineProperty;var xo=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var Cr=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(r){throw t=[r],r}};var kr=(n,e)=>{for(var t in e)_o(n,t,{get:e[t],enumerable:!0})};var Rr={};kr(Rr,{zodToJson:()=>ge});import{z as Nr}from"zod";import{zodToJsonSchema as Ao}from"zod-to-json-schema";function $o(n){if(!n||typeof n!="object")return n;if(Array.isArray(n.type))return n.type.includes("null")||(n.type=[...n.type,"null"]),n;if(typeof n.type=="string")return n.type=[n.type,"null"],n;for(let e of["anyOf","oneOf"])if(Array.isArray(n[e]))return n[e].some(t=>t&&t.type==="null")||(n[e]=[...n[e],{type:"null"}]),n;return{anyOf:[n,{type:"null"}]}}function Ie(n){if(!n||typeof n!="object")return n;for(let e of["$defs","definitions"])if(n[e]&&typeof n[e]=="object")for(let t of Object.keys(n[e]))n[e][t]=Ie(n[e][t]);for(let e of["anyOf","oneOf","allOf"])Array.isArray(n[e])&&(n[e]=n[e].map(Ie));if(n.properties&&typeof n.properties=="object"){n.additionalProperties=!1;let e=Object.keys(n.properties),t=new Set(Array.isArray(n.required)?n.required:[]);for(let r of e){let o=Ie(n.properties[r]);t.has(r)||(o=$o(o)),n.properties[r]=o}n.required=e}return n.items&&(Array.isArray(n.items)?n.items=n.items.map(Ie):n.items=Ie(n.items)),n}function ge(n,e={target:"openApi3"}){if(!n)return null;let t=e?.target==="openAi",r=null;if(typeof Nr?.toJSONSchema=="function")try{r=Nr.toJSONSchema(n)}catch{}if(!r)try{r=Ao(n,e)}catch{return null}if(t&&r)try{return Ie(r)}catch{return r}return r}var Ze=Cr(()=>{});var kn={};kr(kn,{INTEGRATION_API_TIMEOUT_MS:()=>$n,clearConnectedCache:()=>Ii,clearTokenCache:()=>Cn,getConnectedIntegrations:()=>Oi,resolveIntegrationToken:()=>Mt});import{existsSync as Ei,readFileSync as vi}from"node:fs";import{homedir as Ti}from"node:os";import{join as Ai}from"node:path";function vn(){let n=process.env.ZIBBY_SELF_HOST;return n!=null&&n!==""&&n!=="0"&&n.toLowerCase()!=="false"}function Tn(){if(process.env.PROJECT_API_TOKEN)return process.env.PROJECT_API_TOKEN;if(process.env.ZIBBY_USER_TOKEN)return process.env.ZIBBY_USER_TOKEN;try{let n=Ai(Ti(),".zibby","config.json");return Ei(n)&&JSON.parse(vi(n,"utf-8")).sessionToken||null}catch{return null}}function An(){return process.env.ZIBBY_ACCOUNT_API_URL?process.env.ZIBBY_ACCOUNT_API_URL.replace(/\/$/,""):(process.env.ZIBBY_ENV||"prod")==="local"?"http://localhost:3001":process.env.ZIBBY_PROD_ACCOUNT_API_URL||"https://api-prod.zibby.app"}function $i(n=process.env){let e=Number(n.INTEGRATION_API_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.min(12e4,Math.max(1e3,Math.floor(e))):$n}function On(){let n=$i();return{signal:AbortSignal.timeout(n),label:`after ${n}ms (INTEGRATION_API_TIMEOUT_MS)`}}function In(n){return n?.name==="TimeoutError"||n?.name==="AbortError"}function xn(n,e,t){if(!In(n))return n;let r=new Error(`${t} TIMED OUT ${e.label}`);return r.timedOut=!0,r.cause=n,r}async function Mt(n){if(vn()){let c=En[n];if(c&&process.env[c])return{token:process.env[c]}}let e=Date.now(),t=Lt.get(n);if(t&&t.expiresAt>e)return t.data;let r=Tn();if(!r)throw new Error("Missing session credential: neither PROJECT_API_TOKEN nor ZIBBY_USER_TOKEN is set in this process env (and no ~/.zibby/config.json session). If this is an MCP skill child, the spawning skill must forward them \u2014 check the skill's envKeys / resolve() env (see @zibby/skills backend-session-env-contract). Interactive CLI: run `zibby login`.");let o=`${An()}/integrations/token/${n}`,s=On(),i;try{i=await fetch(o,{method:"GET",headers:{Authorization:`Bearer ${r}`},signal:s.signal})}catch(c){throw xn(c,s,`${n} token lookup`)}if(!i.ok){let c=await i.text().catch(()=>"");if(i.status===404){let u="";try{u=String(JSON.parse(c)?.error||"").trim()}catch{}throw new Error(u||`${n} is not connected. Connect it at https://studio.zibby.dev/integrations`)}throw i.status===401||i.status===403?new Error("Session expired. Run `zibby login` to re-authenticate."):new Error(`Failed to resolve ${n} token (${i.status}): ${c}`)}let l;try{l=await i.json()}catch(c){throw xn(c,s,`${n} token body read`)}if(!l||typeof l!="object")throw new Error(`Invalid response from ${n} token endpoint: expected object, got ${typeof l}`);if(n==="jira"){if(!l.token||typeof l.token!="string")throw new Error(`Invalid jira token response: token is ${typeof l.token}, expected string`);if(!l.cloudId&&!l.instanceUrl&&!l.baseUrl)throw new Error("Invalid jira token response: carries neither cloudId (OAuth connection) nor instanceUrl (API-token connection) \u2014 reconnect Jira.")}else if(n==="github"&&(!l.token||typeof l.token!="string"))throw new Error(`Invalid github token response: token is ${typeof l.token}, expected string`);let a=((l.expiresInSec||3e3)-120)*1e3;return Lt.set(n,{data:l,expiresAt:e+a}),l}function Cn(n){n?Lt.delete(n):Lt.clear()}function wn(n){let e=process.env.WORKFLOW_ENABLED_INTEGRATIONS;if(typeof e!="string"||e.trim()==="")return n;let t=new Set(e.split(",").map(o=>o.trim()).filter(Boolean));if(t.size===0)return n;let r={};for(let[o,s]of Object.entries(n))t.has(o)&&(r[o]=s);return r}async function Oi(){let n=Date.now();if(je&&je.expiresAt>n)return je.data;if(vn()){let r={};for(let[s,i]of Object.entries(En))r[s]=!!process.env[i];let o=wn(r);return je={data:o,expiresAt:n+6e4},o}let e=Tn();if(!e)return{};let t=On();try{let r=await fetch(`${An()}/integrations/status`,{method:"GET",headers:{Authorization:`Bearer ${e}`},signal:t.signal});if(!r.ok)return{};let o=await r.json(),s={};if(o&&typeof o=="object")for(let[l,a]of Object.entries(o))a&&typeof a=="object"&&"connected"in a&&(s[l]=!!a.connected);let i=wn(s);return je={data:i,expiresAt:n+6e4},i}catch(r){return In(r)&&console.warn(`[backend-client] /integrations/status TIMED OUT ${t.label} \u2014 proceeding with no connection map`),{}}}function Ii(){je=null}var Lt,En,$n,je,Ut=Cr(()=>{Lt=new Map,En={github:"GITHUB_TOKEN",gitlab:"GITLAB_TOKEN",sentry:"SENTRY_AUTH_TOKEN",slack:"SLACK_BOT_TOKEN"};$n=2e4;je=null});import{readFileSync as mo,existsSync as go}from"node:fs";import{join as We,resolve as ho,isAbsolute as Ga}from"node:path";import{DEFAULT_OUTPUT_BASE as Ka,SESSIONS_DIR as yo,RESULT_FILE as za,resolveWorkflowSession as Ja,clearInheritedSessionEnvForFreshRun as Ha,readPinnedSessionPathFromEnv as Ya}from"@zibby/agent-workflow";import{registerStrategy as Nt}from"@zibby/agent-workflow";import{AgentStrategy as Ro,getSkill as Dr,NO_INTEGRATION_TOGGLEABLE_SKILL_IDS as Lo,formatProviderError as Mo}from"@zibby/agent-workflow";import{query as Uo}from"@anthropic-ai/claude-agent-sdk";import wo from"node:process";var Pr=Object.freeze(["PROJECT_API_TOKEN","ZIBBY_USER_TOKEN","GITHUB_TOKEN","GITLAB_TOKEN","GITLAB_OAUTH_TOKEN","GITLAB_INSTANCES","ATLASSIAN_ACCESS_TOKEN","JIRA_API_TOKEN","JIRA_EMAIL","SENTRY_AUTH_TOKEN","SLACK_BOT_TOKEN","DISCORD_BOT_TOKEN","ZIBBY_CHAT_SLACK_TOKEN","ZIBBY_CHAT_LARK_APP_SECRET","ZIBBY_CHAT_DISCORD_INTERACTION_TOKEN","LINEAR_API_KEY","LINEAR_OAUTH_TOKEN","PLANE_API_KEY","PLANE_OAUTH_TOKEN","ZIBBY_INJECTED_GOOGLE_TOKEN","ZIBBY_INJECTED_LINKEDIN_TOKEN","ZIBBY_MEMORY_AWS_ACCESS_KEY_ID","ZIBBY_MEMORY_AWS_SECRET_ACCESS_KEY","ZIBBY_MEMORY_AWS_SESSION_TOKEN"]);function Oe(n=wo.env){let e={},t=new Set(Pr);for(let[r,o]of Object.entries(n))t.has(r)||o!==void 0&&(e[r]=o);return e}function mt(n){return!!n&&(n.transport==="http"||typeof n.url=="string"&&!n.command)}var Kt=Object.freeze({claude:"native",codex:"broker",gemini:"broker",cursor:"eager"});function zt(n){return Kt[n]||"eager"}var Eo=new Set(Object.entries(Kt).filter(([,n])=>n==="native").map(([n])=>n)),Jt=Symbol("zibby.mcp.alwaysLoad");function vo(){let n=String(process.env.MCP_ALWAYS_LOAD??"").trim().toLowerCase();return!(n==="0"||n==="false"||n==="off")}function To(n,e){return Eo.has(n)?vo()?typeof e.alwaysLoad=="boolean"?{alwaysLoad:e.alwaysLoad}:{}:{}:{}}function oe(n,e,{processEnv:t}={}){if(!e)return null;let r=To(n,e),o=i=>(e.alwaysLoad===!0&&Object.defineProperty(i,Jt,{value:!0,enumerable:!1}),i);if(mt(e)){let i=String(e.url||"").trim();if(!i)return null;let l=e.headers&&typeof e.headers=="object"?e.headers:void 0;switch(n){case"claude":return o({type:"http",url:i,...l&&{headers:l},...r});case"codex":return o({url:i,...l&&{http_headers:l}});case"gemini":return o({url:i,type:"http",...l&&{headers:l}});case"cursor":return o({url:i,...l&&{headers:l}});default:return o({type:"http",url:i,...l&&{headers:l},...r})}}let s={command:e.command};return e.args?.length&&(s.args=e.args),e.cwd&&(s.cwd=e.cwd),t?s.env={...t,...e.env||{}}:e.env&&Object.keys(e.env).length&&(s.env=e.env),o({...s,...r})}function gt(n){return mt(n)?`http \u2192 ${String(n.url||"").replace(/\?.*$/,"")}`:`${n?.command||"?"} ${(n?.args||[]).join(" ")}`.trim()}Ze();import{writeFileSync as Wt,mkdirSync as Zt,existsSync as ke,readFileSync as Fr}from"fs";import{homedir as Br}from"os";import{join as ne}from"path";import Ve from"chalk";var se={debug:0,info:1,warn:2,error:3,silent:4},ht=class{constructor(){this._level=this._getLogLevel()}_getLogLevel(){if(process.env.ZIBBY_DEBUG==="true")return se.debug;if(process.env.ZIBBY_VERBOSE==="true")return se.info;let e=process.env.LOG_LEVEL?.toLowerCase();return e&&e in se?se[e]:se.info}_shouldLog(e){return se[e]>=this._level}_formatMessage(e,t,r={}){let o=new Date().toISOString(),i=`${this._getPrefix(e)} ${t}`;return Object.keys(r).length>0&&(i+=Ve.dim(` ${JSON.stringify(r)}`)),i}_getPrefix(e){return{debug:Ve.gray("[DEBUG]"),info:Ve.cyan("[INFO]"),warn:Ve.yellow("[WARN]"),error:Ve.red("\u274C [ERROR]")}[e]||""}debug(e,t){this._shouldLog("debug")&&console.log(this._formatMessage("debug",e,t))}info(e,t){this._shouldLog("info")&&console.log(this._formatMessage("info",e,t))}warn(e,t){this._shouldLog("warn")&&console.warn(this._formatMessage("warn",e,t))}error(e,t){this._shouldLog("error")&&console.error(this._formatMessage("error",e,t))}setLevel(e){e in se&&(this._level=se[e])}getLevel(){return Object.keys(se).find(e=>se[e]===this._level)}},f=new ht;import{timeline as ae,Timeline as ll,WORKFLOW_GRAPH_LOG_MARKER_PREFIX as cl}from"@zibby/agent-workflow";var he=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.4-mini",canonicalId:"gpt-5.4-mini",vendor:"codex",label:"Codex \xB7 GPT-5.4 mini",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function qe(n){let e={};for(let t of he)t.vendor===n&&(e[t.alias]=t.canonicalId);return e}function Oo(){let n={};for(let e of he)e.unavailable&&(n[e.alias]=e.unavailable,n[`${e.vendor}:${e.alias}`]=e.unavailable,n[e.retiredCanonicalId||e.canonicalId]=e.unavailable);return n}function Ur(){let n={};for(let e of he)!e.retiredCanonicalId||e.retiredCanonicalId===e.canonicalId||(n[e.alias]={alias:e.alias,vendor:e.vendor,requested:e.retiredCanonicalId,actual:e.canonicalId,evidence:e.unavailable||"retired by the vendor"});return n}function Ht(n,e){let t=Ur()[e];return!t||t.vendor!==n?null:`MODEL REPOINTED: this run pinned "${t.alias}" (${t.requested}), but that model is RETIRED at the vendor (${t.evidence}) \u2014 running on "${t.actual}" instead. Output did NOT come from ${t.requested}. Redeploy the agent with a current model to make the pin match reality.`}function Io(n){if(!n||typeof n!="string")return null;let e=n.toLowerCase();for(let t of he)if(t.alias.toLowerCase()===e)return t.family??null;for(let t of he)if(t.canonicalId.toLowerCase()===e)return t.family??null;return null}function Lr(n){let e=String(n||"").match(/(\d+(?:\.\d+)?)/);return e?parseFloat(e[1]):0}function Mr(n){let e=String(n||"").toLowerCase();return/\b(base|mini)\b/.test(e)?0:/\b(opus|pro)\b/.test(e)?2:1}function Co(n,e){let t=Lr(e.label)-Lr(n.label);if(t!==0)return t;let r=Mr(e.label)-Mr(n.label);return r!==0?r:n.label.localeCompare(e.label)}function ko(){let n=[],e=new Map;for(let r of he)r.pickerVisible&&(r.unavailable||(e.has(r.vendor)||(e.set(r.vendor,[]),n.push(r.vendor)),e.get(r.vendor).push({value:`${r.vendor}:${r.alias}`,label:r.label||`${r.vendor}:${r.alias}`,vendor:r.vendor,alias:r.alias})));let t=[];for(let r of n)t.push(...e.get(r).sort(Co));return t}function Ce(n,e){let t=typeof e=="string"?e.trim():"";if(t)return t;throw new Error(`[${n}] No model reached this LLM call: the node passed none, no config sets one, and the run carries none (MODEL env unset). Refusing to silently substitute a vendor default \u2014 pick a model on the agent (deploy modal / MODEL cell) or pass options.model explicitly.`)}var pe={ASSISTANT:"gpt-5.4-nano-2026-03-17",CLAUDE:"claude-sonnet-4-6",CURSOR:"auto",CODEX:"o4-mini",GEMINI:"gemini-3-pro",OPENAI_POSTPROCESSING:"gpt-4o-mini"},Po={ASSISTANT:"assistant",CLAUDE:"claude",CURSOR:"cursor",CODEX:"codex",GEMINI:"gemini"},No={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error",SILENT:"silent"},yt=qe("claude"),bt=qe("codex"),Yt=qe("gemini"),St={CURSOR_AGENT_DEFAULT:1200*1e3,OPENAI_REQUEST:18e4};function Q(n){let e=`${n}_POOL`,t=process.env[e];if(!t||typeof t!="string")return{picked:null,count:0,dispose:()=>{}};let r=t.split(/[,\n]+/).map(i=>i.trim()).filter(Boolean);if(r.length===0)return{picked:null,count:0,dispose:()=>{}};let o=r[Math.floor(Math.random()*r.length)],s=process.env[n];return process.env[n]=o,f.debug(`[auth-pool] ${n}: picked 1 of ${r.length} from pool (***${o.slice(-4)})`),{picked:o,count:r.length,dispose(){s===void 0?delete process.env[n]:process.env[n]=s}}}function _t(n){if(!n||typeof n!="object")return null;let e=(...o)=>{for(let s of o){if(s==null||s==="")continue;let i=Number(s);if(Number.isFinite(i))return i}return null},t=e(n.input_tokens,n.inputTokens,n.prompt_tokens,n.promptTokens),r=e(n.output_tokens,n.outputTokens,n.completion_tokens,n.completionTokens);return t==null&&r==null?null:{input:t||0,output:r||0}}import{createRequire as Do}from"module";import W from"process";var jr=Do(import.meta.url);function jo(n){let e=2166136261;for(let t=0;t<n.length;t++)e^=n.charCodeAt(t),e=Math.imul(e,16777619)>>>0;return e.toString(16).padStart(8,"0")}function Gr(n){if(!n||typeof n!="object")return null;let e=n.message?.content??n.content;return Array.isArray(e)&&e.length||typeof e=="string"&&e.length?e:typeof n.text=="string"&&n.text.length?n.text:null}function Fo(n){let e=Gr(n);if(e===null)return null;let t;try{t=JSON.stringify(e)}catch{return null}return typeof t!="string"||!t?null:`${`${n.type||n.constructor?.name||"?"}`}:${t.length}:${jo(t)}`}function Kr(n){if(!n||typeof n!="object")return"a message with no type";let e=n.type||n.constructor?.name||"unknown-type",t=n.subtype?`/${n.subtype}`:"",r=Gr(n);if(typeof r=="string")return`${e}${t} text "${r.slice(0,80)}"`;if(!Array.isArray(r))return`${e}${t} (no readable content)`;let o=r.slice(0,4).map(s=>!s||typeof s!="object"?String(s).slice(0,30):s.type==="tool_use"?`tool_use ${s.name||"(unnamed)"}`:s.type==="tool_result"?`tool_result${s.is_error?" (error)":""}`:s.type==="text"&&typeof s.text=="string"?`text "${s.text.slice(0,60)}"`:s.type==="thinking"?"thinking":String(s.type||"block").slice(0,30));return r.length>o.length&&o.push(`+${r.length-o.length} more`),`${e}${t} [${o.join(", ")}]`}function Bo(n){if(!n||typeof n!="object")return"";let e=n.message?.content??n.content;if(Array.isArray(e)){let t=e.filter(r=>r&&r.type==="text"&&typeof r.text=="string"&&r.text.trim()).map(r=>r.text.trim());if(t.length)return Xe(t.join(" "))}else if(typeof e=="string"&&e.trim())return Xe(e);return n.error&&typeof n.error=="object"&&typeof n.error.message=="string"?Xe(n.error.message):typeof n.message=="string"&&n.message.trim()?Xe(n.message):typeof n.result=="string"&&n.result.trim()?Xe(n.result):Kr(n)}function Xe(n){let e=String(n).replace(/\s+/g," ").trim();return e.length>400?`${e.slice(0,400)}\u2026`:e}function Vt(n){let e=String(n??"").trim().slice(0,400);return!e||e.startsWith("```")||e.startsWith("{")||e.startsWith("[")?!0:/"reply"\s*:/.test(e)}var wt=(n,e)=>{let t=String(n??"");return t.length>e?`${t.slice(0,e)}\u2026`:t},Go=/secret|token|password|passwd|credential|authorization|bearer|api[-_]?key|private[-_]?key|access[-_]?key/i,zr=(n,e=0)=>{if(n==null||e>6||typeof n!="object")return n;let t=Array.isArray(n)?[]:{};for(let[r,o]of Object.entries(n)){let s=Go.test(r)||r==="value"&&typeof n.key=="string";t[r]=s&&typeof o=="string"&&o?"[redacted]":zr(o,e+1)}return t},be=n=>{try{if(n==null)return"";let e=zr(n),t=typeof e=="string"?e:JSON.stringify(e);return wt(String(t).slice(0,4e3).replace(/(bearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi,"$1[redacted]").replace(/(https?:\/\/[^/\s:@"']+):[^@/\s"']+@/gi,"$1:[redacted]@").replace(/([?&](?:token|api[-_]?key|apikey|secret|access[-_]?token|auth|key)=)[^&"'\s]+/gi,"$1[redacted]").replace(/sk-[A-Za-z0-9_-]{8,}/g,"sk-[redacted]").replace(/xox[bpoas]-[A-Za-z0-9-]{6,}/g,"xoxb-[redacted]").replace(/zby_[A-Za-z0-9_-]{12,}/g,"zby_[redacted]").replace(/gh[pousr]_[A-Za-z0-9]{20,}/g,"gh_[redacted]").replace(/glpat-[A-Za-z0-9_-]{16,}/g,"glpat-[redacted]").replace(/\bmcp_(?!_)[A-Za-z0-9-]{12,}/g,"mcp_[redacted]").replace(/ntn_[A-Za-z0-9]{10,}/g,"ntn_[redacted]").replace(/figd_[A-Za-z0-9_-]{10,}/g,"figd_[redacted]").replace(/sntrys_[A-Za-z0-9+/=._-]{10,}/g,"sntrys_[redacted]").replace(/ya29\.[A-Za-z0-9_-]{10,}/g,"ya29.[redacted]").replace(/AKIA[0-9A-Z]{16}/g,"AKIA[redacted]").replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*/g,"[redacted-private-key]").replace(/eyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}/g,"eyJ[redacted-jwt]"),300)}catch{return""}},Ko=500;function qt(n){let e=n&&typeof n=="object"?n.content:void 0,t=new Set,r=0;if(typeof e=="string")r=e.length,e&&t.add("text");else if(Array.isArray(e))for(let a of e){if(typeof a=="string"){t.add("text"),r+=a.length;continue}!a||typeof a!="object"||(t.add(typeof a.type=="string"&&a.type?a.type:"unknown"),typeof a.text=="string"&&(r+=a.text.length))}else if(e!=null){t.add("json");try{r=JSON.stringify(e).length}catch{r=0}}let o=!(n&&n.is_error===!0),s={ok:o,chars:r};if(t.size&&(s.kind=[...t].join("+")),o)return s;let i=e;Array.isArray(e)&&(i=e.map(a=>typeof a=="string"?a:a&&typeof a.text=="string"?a.text:"").filter(Boolean).join(`
2
2
  `));let l=be(i);return l&&(s.error=l),s}function zo(){try{if(W.env.CLAUDE_CODE_EXECUTABLE&&ke(W.env.CLAUDE_CODE_EXECUTABLE))return W.env.CLAUDE_CODE_EXECUTABLE;let n=W.platform,e=W.arch,t=`@anthropic-ai/claude-agent-sdk-${n}-${e}`,r=n==="win32"?"claude.exe":"claude";try{let o=jr.resolve(`${t}/package.json`),s=ne(o,"..",r);if(ke(s))return s}catch{}try{let o=jr.resolve("@anthropic-ai/claude-agent-sdk/package.json"),s=ne(o,"..");for(let l of[r,ne("vendor",r),ne("bin",r)]){let a=ne(s,l);if(ke(a))return a}let i=ne(s,"..",`claude-agent-sdk-${n}-${e}`,r);if(ke(i))return i}catch{}}catch{}return null}var xt=zo();xt&&f.debug(`Claude native CLI resolved to baked binary: ${xt}`);var ye=class extends Ro{constructor(){super("claude","Claude (Anthropic API)",50)}canHandle(e){let t=!!W.env.ANTHROPIC_API_KEY||!!W.env.ANTHROPIC_API_KEY_POOL,r=!!W.env.CLAUDE_CODE_OAUTH_TOKEN||!!W.env.CLAUDE_CODE_OAUTH_TOKEN_POOL,o=!!W.env.ANTHROPIC_AUTH_TOKEN||!!W.env.ANTHROPIC_AUTH_TOKEN_POOL,s=t||r||o;return s||f.debug("ClaudeAgentStrategy: no credentials. Set one of ANTHROPIC_API_KEY / CLAUDE_CODE_OAUTH_TOKEN / ANTHROPIC_AUTH_TOKEN (or a *_POOL variant for multi-token rotation)."),s}async invoke(e,t={}){let{model:r,workspace:o=W.cwd(),schema:s=null,images:i=[],skills:l=null,sessionPath:a=null,nodeName:c=null,timeout:u,config:p={},activityLog:m=!1,signal:d=null,sessionId:g,resume:y,forkSession:h,sessionStore:S}=t,v=Ce("claude",r),$=yt[v]||v;yt[v]&&v!==$&&f.debug(`Mapped model: ${v} \u2192 ${$}`);let b=[Q("ANTHROPIC_API_KEY"),Q("CLAUDE_CODE_OAUTH_TOKEN"),Q("ANTHROPIC_AUTH_TOKEN")];try{f.debug(`Invoking Claude Agent SDK with model: ${$}, skills: ${JSON.stringify(l)}`);let O=wt,I=(k,R)=>{try{console.log(JSON.stringify({mode:k,...R}))}catch{}},N=W.env.CLAUDE_CODE_OAUTH_TOKEN,A=W.env.ANTHROPIC_API_KEY,D=W.env.ANTHROPIC_AUTH_TOKEN;W.env.CLAUDE_CODE_CREDENTIALS_JSON?Yo(W.env.CLAUDE_CODE_CREDENTIALS_JSON):N&&Ho(N,W.env.__ZIBBY_CLAUDE_PLAN);let F=W.env.__ZIBBY_CLAUDE_PLAN,P=F?F.charAt(0).toUpperCase()+F.slice(1):null,K;if(N?K=P?`Claude ${P} plan \xB7 ***${N.slice(-4)}`:`Subscription \xB7 ***${N.slice(-4)}`:A?K=`API key \xB7 ***${A.slice(-4)}`:D?K=`Bearer \xB7 ***${D.slice(-4)}`:K="NONE \u2014 request will fail",!m){let k=(await import("chalk")).default;console.log(""),console.log(` ${k.cyan("\u25C6")} ${k.bold($)}`),console.log(` ${k.dim("Auth: ")}${K}`),console.log(` ${k.dim("Workdir: ")}${o}`),console.log(""),console.log(k.bold("Prompt sent to LLM:")),console.log(k.dim("\u2500".repeat(60))),console.log(k.dim(e)),console.log(k.dim("\u2500".repeat(60)))}let{allowedTools:j,mcpServers:G}=this._resolveSkills(l,{sessionPath:a,workspace:o,nodeName:c});for(let k of t.extraMcpServers||[])if(k&&k.serverName&&k.def){if(Object.prototype.hasOwnProperty.call(G,k.serverName)){console.warn(`[custom-mcp] skip "${k.serverName}" \u2014 a built-in skill already owns that MCP name (no shadowing)`);continue}let R=oe("claude",k.def);R&&(G[k.serverName]=R,j.push(`mcp__${k.serverName}__*`))}try{let k={cwd:o,allowedTools:j,...t.effort?{effort:t.effort}:{},...Array.isArray(t.disallowedTools)&&t.disallowedTools.length?{disallowedTools:t.disallowedTools}:{},settings:{permissions:{allow:["Bash(*)","Read(*)","Write(*)","Edit(*)","MultiEdit(*)","NotebookEdit(*)","Grep(*)","Glob(*)","WebFetch(*)","WebSearch(*)","Task(*)","TodoWrite(*)","Skill(*)"]}},model:$,env:Oe(W.env),...xt&&{pathToClaudeCodeExecutable:xt},...Object.keys(G).length>0&&{mcpServers:G},...g&&{sessionId:g},...y&&{resume:y},...h&&{forkSession:!0},...S&&{sessionStore:S}};if(s){let Z=typeof s.parse=="function"?ge(s):s;k.outputFormat={type:"json_schema",schema:Z},f.debug("Structured output enforced via SDK outputFormat")}f.debug(`Agent SDK options: ${JSON.stringify({cwd:k.cwd,toolCount:j.length,permissionMode:k.permissionMode,model:k.model,hasOutputFormat:!!k.outputFormat})}`);let R="",T=0,w=new Map,M=[];f.debug("Starting Claude Agent SDK query stream");let C=e,z=Array.isArray(i)?i.filter(E=>E&&typeof E.path=="string"&&E.path.startsWith("/")):[];if(z.length){let E=z.map((Z,x)=>` ${x+1}. ${Z.path}${Z.name?` (${Z.name})`:""}`).join(`
3
3
  `);C=`${e}
4
4
 
package/dist/models.js CHANGED
@@ -1 +1 @@
1
- var i=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5"},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function s(e){let a={};for(let l of i)l.vendor===e&&(a[l.alias]=l.canonicalId);return a}function t(){let e={};for(let a of i)a.unavailable&&(e[a.alias]=a.unavailable,e[`${a.vendor}:${a.alias}`]=a.unavailable,e[a.retiredCanonicalId||a.canonicalId]=a.unavailable);return e}function c(){let e={};for(let a of i)!a.retiredCanonicalId||a.retiredCanonicalId===a.canonicalId||(e[a.alias]={alias:a.alias,vendor:a.vendor,requested:a.retiredCanonicalId,actual:a.canonicalId,evidence:a.unavailable||"retired by the vendor"});return e}function r(e,a){let l=c()[a];return!l||l.vendor!==e?null:`MODEL REPOINTED: this run pinned "${l.alias}" (${l.requested}), but that model is RETIRED at the vendor (${l.evidence}) \u2014 running on "${l.actual}" instead. Output did NOT come from ${l.requested}. Redeploy the agent with a current model to make the pin match reality.`}function p(e){if(!e||typeof e!="string")return null;let a=e.toLowerCase();for(let l of i)if(l.alias.toLowerCase()===a)return l.family??null;for(let l of i)if(l.canonicalId.toLowerCase()===a)return l.family??null;return null}function o(e){let a=String(e||"").match(/(\d+(?:\.\d+)?)/);return a?parseFloat(a[1]):0}function d(e){let a=String(e||"").toLowerCase();return/\b(base|mini)\b/.test(a)?0:/\b(opus|pro)\b/.test(a)?2:1}function u(e,a){let l=o(a.label)-o(e.label);if(l!==0)return l;let n=d(a.label)-d(e.label);return n!==0?n:e.label.localeCompare(a.label)}function f(){let e=[],a=new Map;for(let n of i)n.pickerVisible&&(n.unavailable||(a.has(n.vendor)||(a.set(n.vendor,[]),e.push(n.vendor)),a.get(n.vendor).push({value:`${n.vendor}:${n.alias}`,label:n.label||`${n.vendor}:${n.alias}`,vendor:n.vendor,alias:n.alias})));let l=[];for(let n of e)l.push(...a.get(n).sort(u));return l}function m(e,a){let l=typeof a=="string"?a.trim():"";if(l)return l;throw new Error(`[${e}] No model reached this LLM call: the node passed none, no config sets one, and the run carries none (MODEL env unset). Refusing to silently substitute a vendor default \u2014 pick a model on the agent (deploy modal / MODEL cell) or pass options.model explicitly.`)}export{i as MODEL_REGISTRY,s as buildVendorModelMap,f as getPickerModels,c as getRepointedModels,t as getUnavailableModels,r as repointWarning,m as requireModelAlias,p as resolveModelFamily};
1
+ var i=[{alias:"opus-4.8",canonicalId:"claude-opus-4-8",vendor:"claude",label:"Claude \xB7 Opus 4.8",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"opus-5",canonicalId:"claude-opus-5",vendor:"claude",label:"Claude \xB7 Opus 5",family:"claude-opus-5",pickerVisible:!0},{alias:"claude-opus-5",canonicalId:"claude-opus-5",vendor:"claude",family:"claude-opus-5",aliasOf:"opus-5"},{alias:"sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",label:"Claude \xB7 Sonnet 5",family:"claude-sonnet-5",pickerVisible:!0},{alias:"claude-sonnet-5",canonicalId:"claude-sonnet-5",vendor:"claude",family:"claude-sonnet-5",aliasOf:"sonnet-5"},{alias:"fable-5",canonicalId:"claude-fable-5",vendor:"claude",label:"Claude \xB7 Fable 5",family:"claude-fable-5",pickerVisible:!0},{alias:"claude-fable-5",canonicalId:"claude-fable-5",vendor:"claude",family:"claude-fable-5",aliasOf:"fable-5"},{alias:"sonnet-4.8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"opus-4.7",canonicalId:"claude-opus-4-7",vendor:"claude",label:"Claude \xB7 Opus 4.7",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"sonnet-4.7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4"},{alias:"sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"sonnet-4.6",canonicalId:"claude-sonnet-4-6",vendor:"claude",label:"Claude \xB7 Sonnet 4.6",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"opus-4.6",canonicalId:"claude-opus-4-6",vendor:"claude",label:"Claude \xB7 Opus 4.6",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"sonnet-4.5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",label:"Claude \xB7 Sonnet 4.5",family:"claude-sonnet-4",pickerVisible:!0},{alias:"sonnet-4-5",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"opus-4.5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",label:"Claude \xB7 Opus 4.5",family:"claude-opus-4",pickerVisible:!0},{alias:"opus-4-5",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"haiku-4.5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",label:"Claude \xB7 Haiku 4.5",family:"claude-haiku-4",pickerVisible:!0},{alias:"haiku-4-5",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-8",canonicalId:"claude-opus-4-8",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.8"},{alias:"claude-sonnet-4-8",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.8"},{alias:"claude-opus-4-7",canonicalId:"claude-opus-4-7",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.7"},{alias:"claude-sonnet-4-7",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.7"},{alias:"claude-sonnet-4-6",canonicalId:"claude-sonnet-4-6",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.6"},{alias:"claude-opus-4-6",canonicalId:"claude-opus-4-6",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.6"},{alias:"claude-sonnet-4-5-20250929",canonicalId:"claude-sonnet-4-5-20250929",vendor:"claude",family:"claude-sonnet-4",aliasOf:"sonnet-4.5"},{alias:"claude-opus-4-5-20251101",canonicalId:"claude-opus-4-5-20251101",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"claude-haiku-4-5-20251001",canonicalId:"claude-haiku-4-5-20251001",vendor:"claude",family:"claude-haiku-4",aliasOf:"haiku-4.5"},{alias:"claude-opus-4-20250514",canonicalId:"claude-opus-4-20250514",vendor:"claude",family:"claude-opus-4",aliasOf:"opus-4.5"},{alias:"o4-mini",canonicalId:"o4-mini",vendor:"codex",label:"Codex \xB7 o4-mini",family:"o4-mini",pickerVisible:!0},{alias:"o3",canonicalId:"o3",vendor:"codex",family:"o3"},{alias:"o3-mini",canonicalId:"o3-mini",vendor:"codex",family:"o3-mini"},{alias:"codex-mini",canonicalId:"codex-mini-latest",vendor:"codex",family:"codex-mini"},{alias:"gpt-4o",canonicalId:"gpt-4o",vendor:"codex",label:"Codex \xB7 GPT-4o",family:"gpt-4o",pickerVisible:!0},{alias:"gpt-4o-mini",canonicalId:"gpt-4o-mini",vendor:"codex",label:"Codex \xB7 GPT-4o mini",family:"gpt-4o-mini",pickerVisible:!0},{alias:"gpt-5.2-codex",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.2",family:"gpt-5",retiredCanonicalId:"gpt-5.2-codex",unavailable:"2026-08-26 API-key probe: 404 Model not found"},{alias:"gpt-5.2",canonicalId:"gpt-5.2",vendor:"codex",label:"Codex \xB7 GPT-5.2 base",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.3",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.3",family:"gpt-5",retiredCanonicalId:"gpt-5.3",unavailable:"2026-08-26 API-key probe: model_not_found"},{alias:"gpt-5.3-codex",canonicalId:"gpt-5.3-codex",vendor:"codex",family:"gpt-5"},{alias:"gpt-5.4",canonicalId:"gpt-5.4",vendor:"codex",label:"Codex \xB7 GPT-5.4",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.4-mini",canonicalId:"gpt-5.4-mini",vendor:"codex",label:"Codex \xB7 GPT-5.4 mini",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.5",canonicalId:"gpt-5.5",vendor:"codex",label:"Codex \xB7 GPT-5.5",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-luna",canonicalId:"gpt-5.6-luna",vendor:"codex",label:"Codex \xB7 GPT-5.6 Luna",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-terra",canonicalId:"gpt-5.6-terra",vendor:"codex",label:"Codex \xB7 GPT-5.6 Terra",family:"gpt-5",pickerVisible:!0},{alias:"gpt-5.6-sol",canonicalId:"gpt-5.6-sol",vendor:"codex",label:"Codex \xB7 GPT-5.6 Sol",family:"gpt-5",pickerVisible:!0},{alias:"gemini-3-pro",canonicalId:"gemini-3-pro",vendor:"gemini",label:"Gemini \xB7 3 Pro",family:"gemini-3",pickerVisible:!0},{alias:"gemini-3-flash",canonicalId:"gemini-3-flash",vendor:"gemini",label:"Gemini \xB7 3 Flash",family:"gemini-3",pickerVisible:!0},{alias:"gemini-2.5-pro",canonicalId:"gemini-2.5-pro",vendor:"gemini",label:"Gemini \xB7 2.5 Pro",family:"gemini-2.5",pickerVisible:!0},{alias:"gemini-2.5-flash",canonicalId:"gemini-2.5-flash",vendor:"gemini",label:"Gemini \xB7 2.5 Flash",family:"gemini-2.5",pickerVisible:!0}];function s(e){let a={};for(let l of i)l.vendor===e&&(a[l.alias]=l.canonicalId);return a}function t(){let e={};for(let a of i)a.unavailable&&(e[a.alias]=a.unavailable,e[`${a.vendor}:${a.alias}`]=a.unavailable,e[a.retiredCanonicalId||a.canonicalId]=a.unavailable);return e}function d(){let e={};for(let a of i)!a.retiredCanonicalId||a.retiredCanonicalId===a.canonicalId||(e[a.alias]={alias:a.alias,vendor:a.vendor,requested:a.retiredCanonicalId,actual:a.canonicalId,evidence:a.unavailable||"retired by the vendor"});return e}function r(e,a){let l=d()[a];return!l||l.vendor!==e?null:`MODEL REPOINTED: this run pinned "${l.alias}" (${l.requested}), but that model is RETIRED at the vendor (${l.evidence}) \u2014 running on "${l.actual}" instead. Output did NOT come from ${l.requested}. Redeploy the agent with a current model to make the pin match reality.`}function p(e){if(!e||typeof e!="string")return null;let a=e.toLowerCase();for(let l of i)if(l.alias.toLowerCase()===a)return l.family??null;for(let l of i)if(l.canonicalId.toLowerCase()===a)return l.family??null;return null}function o(e){let a=String(e||"").match(/(\d+(?:\.\d+)?)/);return a?parseFloat(a[1]):0}function c(e){let a=String(e||"").toLowerCase();return/\b(base|mini)\b/.test(a)?0:/\b(opus|pro)\b/.test(a)?2:1}function u(e,a){let l=o(a.label)-o(e.label);if(l!==0)return l;let n=c(a.label)-c(e.label);return n!==0?n:e.label.localeCompare(a.label)}function f(){let e=[],a=new Map;for(let n of i)n.pickerVisible&&(n.unavailable||(a.has(n.vendor)||(a.set(n.vendor,[]),e.push(n.vendor)),a.get(n.vendor).push({value:`${n.vendor}:${n.alias}`,label:n.label||`${n.vendor}:${n.alias}`,vendor:n.vendor,alias:n.alias})));let l=[];for(let n of e)l.push(...a.get(n).sort(u));return l}function m(e,a){let l=typeof a=="string"?a.trim():"";if(l)return l;throw new Error(`[${e}] No model reached this LLM call: the node passed none, no config sets one, and the run carries none (MODEL env unset). Refusing to silently substitute a vendor default \u2014 pick a model on the agent (deploy modal / MODEL cell) or pass options.model explicitly.`)}export{i as MODEL_REGISTRY,s as buildVendorModelMap,f as getPickerModels,d as getRepointedModels,t as getUnavailableModels,r as repointWarning,m as requireModelAlias,p as resolveModelFamily};
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zibby/core",
3
- "version": "2.0.14",
3
+ "version": "2.0.16",
4
4
  "description": "Core test automation engine with multi-agent and multi-MCP support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -70,9 +70,9 @@
70
70
  "@modelcontextprotocol/sdk": "^1.29.0",
71
71
  "@openai/codex-sdk": "^0.144.6",
72
72
  "@playwright/mcp": "^0.0.70",
73
- "@zibby/agent-workflow": "2.0.14",
74
- "@zibby/mcp-browser": "2.0.14",
75
- "@zibby/skill-ids": "2.0.14",
73
+ "@zibby/agent-workflow": "2.0.16",
74
+ "@zibby/mcp-browser": "2.0.16",
75
+ "@zibby/skill-ids": "2.0.16",
76
76
  "acorn": "^8.15.0",
77
77
  "acorn-walk": "^8.3.5",
78
78
  "axios": "^1.15.0",